]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
c99a384c2985d3b8a0243c5e55f9702ee46d0ec2
[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 commpression/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 deteced as noise are spaced less than this value then any
609 sample inbetween 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 @end table
687
688 @subsection Examples
689
690 @itemize
691 @item
692 Delay first channel by 1.5 seconds, the third channel by 0.5 seconds and leave
693 the second channel (and any other channels that may be present) unchanged.
694 @example
695 adelay=1500|0|500
696 @end example
697
698 @item
699 Delay second channel by 500 samples, the third channel by 700 samples and leave
700 the first channel (and any other channels that may be present) unchanged.
701 @example
702 adelay=0|500S|700S
703 @end example
704 @end itemize
705
706 @section aderivative, aintegral
707
708 Compute derivative/integral of audio stream.
709
710 Applying both filters one after another produces original audio.
711
712 @section aecho
713
714 Apply echoing to the input audio.
715
716 Echoes are reflected sound and can occur naturally amongst mountains
717 (and sometimes large buildings) when talking or shouting; digital echo
718 effects emulate this behaviour and are often used to help fill out the
719 sound of a single instrument or vocal. The time difference between the
720 original signal and the reflection is the @code{delay}, and the
721 loudness of the reflected signal is the @code{decay}.
722 Multiple echoes can have different delays and decays.
723
724 A description of the accepted parameters follows.
725
726 @table @option
727 @item in_gain
728 Set input gain of reflected signal. Default is @code{0.6}.
729
730 @item out_gain
731 Set output gain of reflected signal. Default is @code{0.3}.
732
733 @item delays
734 Set list of time intervals in milliseconds between original signal and reflections
735 separated by '|'. Allowed range for each @code{delay} is @code{(0 - 90000.0]}.
736 Default is @code{1000}.
737
738 @item decays
739 Set list of loudness of reflected signals separated by '|'.
740 Allowed range for each @code{decay} is @code{(0 - 1.0]}.
741 Default is @code{0.5}.
742 @end table
743
744 @subsection Examples
745
746 @itemize
747 @item
748 Make it sound as if there are twice as many instruments as are actually playing:
749 @example
750 aecho=0.8:0.88:60:0.4
751 @end example
752
753 @item
754 If delay is very short, then it sound like a (metallic) robot playing music:
755 @example
756 aecho=0.8:0.88:6:0.4
757 @end example
758
759 @item
760 A longer delay will sound like an open air concert in the mountains:
761 @example
762 aecho=0.8:0.9:1000:0.3
763 @end example
764
765 @item
766 Same as above but with one more mountain:
767 @example
768 aecho=0.8:0.9:1000|1800:0.3|0.25
769 @end example
770 @end itemize
771
772 @section aemphasis
773 Audio emphasis filter creates or restores material directly taken from LPs or
774 emphased CDs with different filter curves. E.g. to store music on vinyl the
775 signal has to be altered by a filter first to even out the disadvantages of
776 this recording medium.
777 Once the material is played back the inverse filter has to be applied to
778 restore the distortion of the frequency response.
779
780 The filter accepts the following options:
781
782 @table @option
783 @item level_in
784 Set input gain.
785
786 @item level_out
787 Set output gain.
788
789 @item mode
790 Set filter mode. For restoring material use @code{reproduction} mode, otherwise
791 use @code{production} mode. Default is @code{reproduction} mode.
792
793 @item type
794 Set filter type. Selects medium. Can be one of the following:
795
796 @table @option
797 @item col
798 select Columbia.
799 @item emi
800 select EMI.
801 @item bsi
802 select BSI (78RPM).
803 @item riaa
804 select RIAA.
805 @item cd
806 select Compact Disc (CD).
807 @item 50fm
808 select 50µs (FM).
809 @item 75fm
810 select 75µs (FM).
811 @item 50kf
812 select 50µs (FM-KF).
813 @item 75kf
814 select 75µs (FM-KF).
815 @end table
816 @end table
817
818 @section aeval
819
820 Modify an audio signal according to the specified expressions.
821
822 This filter accepts one or more expressions (one for each channel),
823 which are evaluated and used to modify a corresponding audio signal.
824
825 It accepts the following parameters:
826
827 @table @option
828 @item exprs
829 Set the '|'-separated expressions list for each separate channel. If
830 the number of input channels is greater than the number of
831 expressions, the last specified expression is used for the remaining
832 output channels.
833
834 @item channel_layout, c
835 Set output channel layout. If not specified, the channel layout is
836 specified by the number of expressions. If set to @samp{same}, it will
837 use by default the same input channel layout.
838 @end table
839
840 Each expression in @var{exprs} can contain the following constants and functions:
841
842 @table @option
843 @item ch
844 channel number of the current expression
845
846 @item n
847 number of the evaluated sample, starting from 0
848
849 @item s
850 sample rate
851
852 @item t
853 time of the evaluated sample expressed in seconds
854
855 @item nb_in_channels
856 @item nb_out_channels
857 input and output number of channels
858
859 @item val(CH)
860 the value of input channel with number @var{CH}
861 @end table
862
863 Note: this filter is slow. For faster processing you should use a
864 dedicated filter.
865
866 @subsection Examples
867
868 @itemize
869 @item
870 Half volume:
871 @example
872 aeval=val(ch)/2:c=same
873 @end example
874
875 @item
876 Invert phase of the second channel:
877 @example
878 aeval=val(0)|-val(1)
879 @end example
880 @end itemize
881
882 @anchor{afade}
883 @section afade
884
885 Apply fade-in/out effect to input audio.
886
887 A description of the accepted parameters follows.
888
889 @table @option
890 @item type, t
891 Specify the effect type, can be either @code{in} for fade-in, or
892 @code{out} for a fade-out effect. Default is @code{in}.
893
894 @item start_sample, ss
895 Specify the number of the start sample for starting to apply the fade
896 effect. Default is 0.
897
898 @item nb_samples, ns
899 Specify the number of samples for which the fade effect has to last. At
900 the end of the fade-in effect the output audio will have the same
901 volume as the input audio, at the end of the fade-out transition
902 the output audio will be silence. Default is 44100.
903
904 @item start_time, st
905 Specify the start time of the fade effect. Default is 0.
906 The value must be specified as a time duration; see
907 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
908 for the accepted syntax.
909 If set this option is used instead of @var{start_sample}.
910
911 @item duration, d
912 Specify the duration of the fade effect. See
913 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
914 for the accepted syntax.
915 At the end of the fade-in effect the output audio will have the same
916 volume as the input audio, at the end of the fade-out transition
917 the output audio will be silence.
918 By default the duration is determined by @var{nb_samples}.
919 If set this option is used instead of @var{nb_samples}.
920
921 @item curve
922 Set curve for fade transition.
923
924 It accepts the following values:
925 @table @option
926 @item tri
927 select triangular, linear slope (default)
928 @item qsin
929 select quarter of sine wave
930 @item hsin
931 select half of sine wave
932 @item esin
933 select exponential sine wave
934 @item log
935 select logarithmic
936 @item ipar
937 select inverted parabola
938 @item qua
939 select quadratic
940 @item cub
941 select cubic
942 @item squ
943 select square root
944 @item cbr
945 select cubic root
946 @item par
947 select parabola
948 @item exp
949 select exponential
950 @item iqsin
951 select inverted quarter of sine wave
952 @item ihsin
953 select inverted half of sine wave
954 @item dese
955 select double-exponential seat
956 @item desi
957 select double-exponential sigmoid
958 @item losi
959 select logistic sigmoid
960 @end table
961 @end table
962
963 @subsection Examples
964
965 @itemize
966 @item
967 Fade in first 15 seconds of audio:
968 @example
969 afade=t=in:ss=0:d=15
970 @end example
971
972 @item
973 Fade out last 25 seconds of a 900 seconds audio:
974 @example
975 afade=t=out:st=875:d=25
976 @end example
977 @end itemize
978
979 @section afftdn
980 Denoise audio samples with FFT.
981
982 A description of the accepted parameters follows.
983
984 @table @option
985 @item nr
986 Set the noise reduction in dB, allowed range is 0.01 to 97.
987 Default value is 12 dB.
988
989 @item nf
990 Set the noise floor in dB, allowed range is -80 to -20.
991 Default value is -50 dB.
992
993 @item nt
994 Set the noise type.
995
996 It accepts the following values:
997 @table @option
998 @item w
999 Select white noise.
1000
1001 @item v
1002 Select vinyl noise.
1003
1004 @item s
1005 Select shellac noise.
1006
1007 @item c
1008 Select custom noise, defined in @code{bn} option.
1009
1010 Default value is white noise.
1011 @end table
1012
1013 @item bn
1014 Set custom band noise for every one of 15 bands.
1015 Bands are separated by ' ' or '|'.
1016
1017 @item rf
1018 Set the residual floor in dB, allowed range is -80 to -20.
1019 Default value is -38 dB.
1020
1021 @item tn
1022 Enable noise tracking. By default is disabled.
1023 With this enabled, noise floor is automatically adjusted.
1024
1025 @item tr
1026 Enable residual tracking. By default is disabled.
1027
1028 @item om
1029 Set the output mode.
1030
1031 It accepts the following values:
1032 @table @option
1033 @item i
1034 Pass input unchanged.
1035
1036 @item o
1037 Pass noise filtered out.
1038
1039 @item n
1040 Pass only noise.
1041
1042 Default value is @var{o}.
1043 @end table
1044 @end table
1045
1046 @subsection Commands
1047
1048 This filter supports the following commands:
1049 @table @option
1050 @item sample_noise, sn
1051 Start or stop measuring noise profile.
1052 Syntax for the command is : "start" or "stop" string.
1053 After measuring noise profile is stopped it will be
1054 automatically applied in filtering.
1055
1056 @item noise_reduction, nr
1057 Change noise reduction. Argument is single float number.
1058 Syntax for the command is : "@var{noise_reduction}"
1059
1060 @item noise_floor, nf
1061 Change noise floor. Argument is single float number.
1062 Syntax for the command is : "@var{noise_floor}"
1063
1064 @item output_mode, om
1065 Change output mode operation.
1066 Syntax for the command is : "i", "o" or "n" string.
1067 @end table
1068
1069 @section afftfilt
1070 Apply arbitrary expressions to samples in frequency domain.
1071
1072 @table @option
1073 @item real
1074 Set frequency domain real expression for each separate channel separated
1075 by '|'. Default is "1".
1076 If the number of input channels is greater than the number of
1077 expressions, the last specified expression is used for the remaining
1078 output channels.
1079
1080 @item imag
1081 Set frequency domain imaginary expression for each separate channel
1082 separated by '|'. If not set, @var{real} option is used.
1083
1084 Each expression in @var{real} and @var{imag} can contain the following
1085 constants:
1086
1087 @table @option
1088 @item sr
1089 sample rate
1090
1091 @item b
1092 current frequency bin number
1093
1094 @item nb
1095 number of available bins
1096
1097 @item ch
1098 channel number of the current expression
1099
1100 @item chs
1101 number of channels
1102
1103 @item pts
1104 current frame pts
1105 @end table
1106
1107 @item win_size
1108 Set window size.
1109
1110 It accepts the following values:
1111 @table @samp
1112 @item w16
1113 @item w32
1114 @item w64
1115 @item w128
1116 @item w256
1117 @item w512
1118 @item w1024
1119 @item w2048
1120 @item w4096
1121 @item w8192
1122 @item w16384
1123 @item w32768
1124 @item w65536
1125 @end table
1126 Default is @code{w4096}
1127
1128 @item win_func
1129 Set window function. Default is @code{hann}.
1130
1131 @item overlap
1132 Set window overlap. If set to 1, the recommended overlap for selected
1133 window function will be picked. Default is @code{0.75}.
1134 @end table
1135
1136 @subsection Examples
1137
1138 @itemize
1139 @item
1140 Leave almost only low frequencies in audio:
1141 @example
1142 afftfilt="1-clip((b/nb)*b,0,1)"
1143 @end example
1144 @end itemize
1145
1146 @anchor{afir}
1147 @section afir
1148
1149 Apply an arbitrary Frequency Impulse Response filter.
1150
1151 This filter is designed for applying long FIR filters,
1152 up to 60 seconds long.
1153
1154 It can be used as component for digital crossover filters,
1155 room equalization, cross talk cancellation, wavefield synthesis,
1156 auralization, ambiophonics and ambisonics.
1157
1158 This filter uses second stream as FIR coefficients.
1159 If second stream holds single channel, it will be used
1160 for all input channels in first stream, otherwise
1161 number of channels in second stream must be same as
1162 number of channels in first stream.
1163
1164 It accepts the following parameters:
1165
1166 @table @option
1167 @item dry
1168 Set dry gain. This sets input gain.
1169
1170 @item wet
1171 Set wet gain. This sets final output gain.
1172
1173 @item length
1174 Set Impulse Response filter length. Default is 1, which means whole IR is processed.
1175
1176 @item gtype
1177 Enable applying gain measured from power of IR.
1178
1179 Set which approach to use for auto gain measurement.
1180
1181 @table @option
1182 @item none
1183 Do not apply any gain.
1184
1185 @item peak
1186 select peak gain, very conservative approach. This is default value.
1187
1188 @item dc
1189 select DC gain, limited application.
1190
1191 @item gn
1192 select gain to noise approach, this is most popular one.
1193 @end table
1194
1195 @item irgain
1196 Set gain to be applied to IR coefficients before filtering.
1197 Allowed range is 0 to 1. This gain is applied after any gain applied with @var{gtype} option.
1198
1199 @item irfmt
1200 Set format of IR stream. Can be @code{mono} or @code{input}.
1201 Default is @code{input}.
1202
1203 @item maxir
1204 Set max allowed Impulse Response filter duration in seconds. Default is 30 seconds.
1205 Allowed range is 0.1 to 60 seconds.
1206
1207 @item response
1208 Show IR frequency reponse, magnitude(magenta) and phase(green) and group delay(yellow) in additional video stream.
1209 By default it is disabled.
1210
1211 @item channel
1212 Set for which IR channel to display frequency response. By default is first channel
1213 displayed. This option is used only when @var{response} is enabled.
1214
1215 @item size
1216 Set video stream size. This option is used only when @var{response} is enabled.
1217
1218 @item rate
1219 Set video stream frame rate. This option is used only when @var{response} is enabled.
1220 @end table
1221
1222 @subsection Examples
1223
1224 @itemize
1225 @item
1226 Apply reverb to stream using mono IR file as second input, complete command using ffmpeg:
1227 @example
1228 ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav
1229 @end example
1230 @end itemize
1231
1232 @anchor{aformat}
1233 @section aformat
1234
1235 Set output format constraints for the input audio. The framework will
1236 negotiate the most appropriate format to minimize conversions.
1237
1238 It accepts the following parameters:
1239 @table @option
1240
1241 @item sample_fmts
1242 A '|'-separated list of requested sample formats.
1243
1244 @item sample_rates
1245 A '|'-separated list of requested sample rates.
1246
1247 @item channel_layouts
1248 A '|'-separated list of requested channel layouts.
1249
1250 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1251 for the required syntax.
1252 @end table
1253
1254 If a parameter is omitted, all values are allowed.
1255
1256 Force the output to either unsigned 8-bit or signed 16-bit stereo
1257 @example
1258 aformat=sample_fmts=u8|s16:channel_layouts=stereo
1259 @end example
1260
1261 @section agate
1262
1263 A gate is mainly used to reduce lower parts of a signal. This kind of signal
1264 processing reduces disturbing noise between useful signals.
1265
1266 Gating is done by detecting the volume below a chosen level @var{threshold}
1267 and dividing it by the factor set with @var{ratio}. The bottom of the noise
1268 floor is set via @var{range}. Because an exact manipulation of the signal
1269 would cause distortion of the waveform the reduction can be levelled over
1270 time. This is done by setting @var{attack} and @var{release}.
1271
1272 @var{attack} determines how long the signal has to fall below the threshold
1273 before any reduction will occur and @var{release} sets the time the signal
1274 has to rise above the threshold to reduce the reduction again.
1275 Shorter signals than the chosen attack time will be left untouched.
1276
1277 @table @option
1278 @item level_in
1279 Set input level before filtering.
1280 Default is 1. Allowed range is from 0.015625 to 64.
1281
1282 @item range
1283 Set the level of gain reduction when the signal is below the threshold.
1284 Default is 0.06125. Allowed range is from 0 to 1.
1285
1286 @item threshold
1287 If a signal rises above this level the gain reduction is released.
1288 Default is 0.125. Allowed range is from 0 to 1.
1289
1290 @item ratio
1291 Set a ratio by which the signal is reduced.
1292 Default is 2. Allowed range is from 1 to 9000.
1293
1294 @item attack
1295 Amount of milliseconds the signal has to rise above the threshold before gain
1296 reduction stops.
1297 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
1298
1299 @item release
1300 Amount of milliseconds the signal has to fall below the threshold before the
1301 reduction is increased again. Default is 250 milliseconds.
1302 Allowed range is from 0.01 to 9000.
1303
1304 @item makeup
1305 Set amount of amplification of signal after processing.
1306 Default is 1. Allowed range is from 1 to 64.
1307
1308 @item knee
1309 Curve the sharp knee around the threshold to enter gain reduction more softly.
1310 Default is 2.828427125. Allowed range is from 1 to 8.
1311
1312 @item detection
1313 Choose if exact signal should be taken for detection or an RMS like one.
1314 Default is @code{rms}. Can be @code{peak} or @code{rms}.
1315
1316 @item link
1317 Choose if the average level between all channels or the louder channel affects
1318 the reduction.
1319 Default is @code{average}. Can be @code{average} or @code{maximum}.
1320 @end table
1321
1322 @section aiir
1323
1324 Apply an arbitrary Infinite Impulse Response filter.
1325
1326 It accepts the following parameters:
1327
1328 @table @option
1329 @item z
1330 Set numerator/zeros coefficients.
1331
1332 @item p
1333 Set denominator/poles coefficients.
1334
1335 @item k
1336 Set channels gains.
1337
1338 @item dry_gain
1339 Set input gain.
1340
1341 @item wet_gain
1342 Set output gain.
1343
1344 @item f
1345 Set coefficients format.
1346
1347 @table @samp
1348 @item tf
1349 transfer function
1350 @item zp
1351 Z-plane zeros/poles, cartesian (default)
1352 @item pr
1353 Z-plane zeros/poles, polar radians
1354 @item pd
1355 Z-plane zeros/poles, polar degrees
1356 @end table
1357
1358 @item r
1359 Set kind of processing.
1360 Can be @code{d} - direct or @code{s} - serial cascading. Defauls is @code{s}.
1361
1362 @item e
1363 Set filtering precision.
1364
1365 @table @samp
1366 @item dbl
1367 double-precision floating-point (default)
1368 @item flt
1369 single-precision floating-point
1370 @item i32
1371 32-bit integers
1372 @item i16
1373 16-bit integers
1374 @end table
1375
1376 @item response
1377 Show IR frequency reponse, magnitude and phase in additional video stream.
1378 By default it is disabled.
1379
1380 @item channel
1381 Set for which IR channel to display frequency response. By default is first channel
1382 displayed. This option is used only when @var{response} is enabled.
1383
1384 @item size
1385 Set video stream size. This option is used only when @var{response} is enabled.
1386 @end table
1387
1388 Coefficients in @code{tf} format are separated by spaces and are in ascending
1389 order.
1390
1391 Coefficients in @code{zp} format are separated by spaces and order of coefficients
1392 doesn't matter. Coefficients in @code{zp} format are complex numbers with @var{i}
1393 imaginary unit.
1394
1395 Different coefficients and gains can be provided for every channel, in such case
1396 use '|' to separate coefficients or gains. Last provided coefficients will be
1397 used for all remaining channels.
1398
1399 @subsection Examples
1400
1401 @itemize
1402 @item
1403 Apply 2 pole elliptic notch at arround 5000Hz for 48000 Hz sample rate:
1404 @example
1405 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
1406 @end example
1407
1408 @item
1409 Same as above but in @code{zp} format:
1410 @example
1411 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
1412 @end example
1413 @end itemize
1414
1415 @section alimiter
1416
1417 The limiter prevents an input signal from rising over a desired threshold.
1418 This limiter uses lookahead technology to prevent your signal from distorting.
1419 It means that there is a small delay after the signal is processed. Keep in mind
1420 that the delay it produces is the attack time you set.
1421
1422 The filter accepts the following options:
1423
1424 @table @option
1425 @item level_in
1426 Set input gain. Default is 1.
1427
1428 @item level_out
1429 Set output gain. Default is 1.
1430
1431 @item limit
1432 Don't let signals above this level pass the limiter. Default is 1.
1433
1434 @item attack
1435 The limiter will reach its attenuation level in this amount of time in
1436 milliseconds. Default is 5 milliseconds.
1437
1438 @item release
1439 Come back from limiting to attenuation 1.0 in this amount of milliseconds.
1440 Default is 50 milliseconds.
1441
1442 @item asc
1443 When gain reduction is always needed ASC takes care of releasing to an
1444 average reduction level rather than reaching a reduction of 0 in the release
1445 time.
1446
1447 @item asc_level
1448 Select how much the release time is affected by ASC, 0 means nearly no changes
1449 in release time while 1 produces higher release times.
1450
1451 @item level
1452 Auto level output signal. Default is enabled.
1453 This normalizes audio back to 0dB if enabled.
1454 @end table
1455
1456 Depending on picked setting it is recommended to upsample input 2x or 4x times
1457 with @ref{aresample} before applying this filter.
1458
1459 @section allpass
1460
1461 Apply a two-pole all-pass filter with central frequency (in Hz)
1462 @var{frequency}, and filter-width @var{width}.
1463 An all-pass filter changes the audio's frequency to phase relationship
1464 without changing its frequency to amplitude relationship.
1465
1466 The filter accepts the following options:
1467
1468 @table @option
1469 @item frequency, f
1470 Set frequency in Hz.
1471
1472 @item width_type, t
1473 Set method to specify band-width of filter.
1474 @table @option
1475 @item h
1476 Hz
1477 @item q
1478 Q-Factor
1479 @item o
1480 octave
1481 @item s
1482 slope
1483 @item k
1484 kHz
1485 @end table
1486
1487 @item width, w
1488 Specify the band-width of a filter in width_type units.
1489
1490 @item channels, c
1491 Specify which channels to filter, by default all available are filtered.
1492 @end table
1493
1494 @subsection Commands
1495
1496 This filter supports the following commands:
1497 @table @option
1498 @item frequency, f
1499 Change allpass frequency.
1500 Syntax for the command is : "@var{frequency}"
1501
1502 @item width_type, t
1503 Change allpass width_type.
1504 Syntax for the command is : "@var{width_type}"
1505
1506 @item width, w
1507 Change allpass width.
1508 Syntax for the command is : "@var{width}"
1509 @end table
1510
1511 @section aloop
1512
1513 Loop audio samples.
1514
1515 The filter accepts the following options:
1516
1517 @table @option
1518 @item loop
1519 Set the number of loops. Setting this value to -1 will result in infinite loops.
1520 Default is 0.
1521
1522 @item size
1523 Set maximal number of samples. Default is 0.
1524
1525 @item start
1526 Set first sample of loop. Default is 0.
1527 @end table
1528
1529 @anchor{amerge}
1530 @section amerge
1531
1532 Merge two or more audio streams into a single multi-channel stream.
1533
1534 The filter accepts the following options:
1535
1536 @table @option
1537
1538 @item inputs
1539 Set the number of inputs. Default is 2.
1540
1541 @end table
1542
1543 If the channel layouts of the inputs are disjoint, and therefore compatible,
1544 the channel layout of the output will be set accordingly and the channels
1545 will be reordered as necessary. If the channel layouts of the inputs are not
1546 disjoint, the output will have all the channels of the first input then all
1547 the channels of the second input, in that order, and the channel layout of
1548 the output will be the default value corresponding to the total number of
1549 channels.
1550
1551 For example, if the first input is in 2.1 (FL+FR+LF) and the second input
1552 is FC+BL+BR, then the output will be in 5.1, with the channels in the
1553 following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
1554 first input, b1 is the first channel of the second input).
1555
1556 On the other hand, if both input are in stereo, the output channels will be
1557 in the default order: a1, a2, b1, b2, and the channel layout will be
1558 arbitrarily set to 4.0, which may or may not be the expected value.
1559
1560 All inputs must have the same sample rate, and format.
1561
1562 If inputs do not have the same duration, the output will stop with the
1563 shortest.
1564
1565 @subsection Examples
1566
1567 @itemize
1568 @item
1569 Merge two mono files into a stereo stream:
1570 @example
1571 amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
1572 @end example
1573
1574 @item
1575 Multiple merges assuming 1 video stream and 6 audio streams in @file{input.mkv}:
1576 @example
1577 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
1578 @end example
1579 @end itemize
1580
1581 @section amix
1582
1583 Mixes multiple audio inputs into a single output.
1584
1585 Note that this filter only supports float samples (the @var{amerge}
1586 and @var{pan} audio filters support many formats). If the @var{amix}
1587 input has integer samples then @ref{aresample} will be automatically
1588 inserted to perform the conversion to float samples.
1589
1590 For example
1591 @example
1592 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
1593 @end example
1594 will mix 3 input audio streams to a single output with the same duration as the
1595 first input and a dropout transition time of 3 seconds.
1596
1597 It accepts the following parameters:
1598 @table @option
1599
1600 @item inputs
1601 The number of inputs. If unspecified, it defaults to 2.
1602
1603 @item duration
1604 How to determine the end-of-stream.
1605 @table @option
1606
1607 @item longest
1608 The duration of the longest input. (default)
1609
1610 @item shortest
1611 The duration of the shortest input.
1612
1613 @item first
1614 The duration of the first input.
1615
1616 @end table
1617
1618 @item dropout_transition
1619 The transition time, in seconds, for volume renormalization when an input
1620 stream ends. The default value is 2 seconds.
1621
1622 @item weights
1623 Specify weight of each input audio stream as sequence.
1624 Each weight is separated by space. By default all inputs have same weight.
1625 @end table
1626
1627 @section amultiply
1628
1629 Multiply first audio stream with second audio stream and store result
1630 in output audio stream. Multiplication is done by multiplying each
1631 sample from first stream with sample at same position from second stream.
1632
1633 With this element-wise multiplication one can create amplitude fades and
1634 amplitude modulations.
1635
1636 @section anequalizer
1637
1638 High-order parametric multiband equalizer for each channel.
1639
1640 It accepts the following parameters:
1641 @table @option
1642 @item params
1643
1644 This option string is in format:
1645 "c@var{chn} f=@var{cf} w=@var{w} g=@var{g} t=@var{f} | ..."
1646 Each equalizer band is separated by '|'.
1647
1648 @table @option
1649 @item chn
1650 Set channel number to which equalization will be applied.
1651 If input doesn't have that channel the entry is ignored.
1652
1653 @item f
1654 Set central frequency for band.
1655 If input doesn't have that frequency the entry is ignored.
1656
1657 @item w
1658 Set band width in hertz.
1659
1660 @item g
1661 Set band gain in dB.
1662
1663 @item t
1664 Set filter type for band, optional, can be:
1665
1666 @table @samp
1667 @item 0
1668 Butterworth, this is default.
1669
1670 @item 1
1671 Chebyshev type 1.
1672
1673 @item 2
1674 Chebyshev type 2.
1675 @end table
1676 @end table
1677
1678 @item curves
1679 With this option activated frequency response of anequalizer is displayed
1680 in video stream.
1681
1682 @item size
1683 Set video stream size. Only useful if curves option is activated.
1684
1685 @item mgain
1686 Set max gain that will be displayed. Only useful if curves option is activated.
1687 Setting this to a reasonable value makes it possible to display gain which is derived from
1688 neighbour bands which are too close to each other and thus produce higher gain
1689 when both are activated.
1690
1691 @item fscale
1692 Set frequency scale used to draw frequency response in video output.
1693 Can be linear or logarithmic. Default is logarithmic.
1694
1695 @item colors
1696 Set color for each channel curve which is going to be displayed in video stream.
1697 This is list of color names separated by space or by '|'.
1698 Unrecognised or missing colors will be replaced by white color.
1699 @end table
1700
1701 @subsection Examples
1702
1703 @itemize
1704 @item
1705 Lower gain by 10 of central frequency 200Hz and width 100 Hz
1706 for first 2 channels using Chebyshev type 1 filter:
1707 @example
1708 anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
1709 @end example
1710 @end itemize
1711
1712 @subsection Commands
1713
1714 This filter supports the following commands:
1715 @table @option
1716 @item change
1717 Alter existing filter parameters.
1718 Syntax for the commands is : "@var{fN}|f=@var{freq}|w=@var{width}|g=@var{gain}"
1719
1720 @var{fN} is existing filter number, starting from 0, if no such filter is available
1721 error is returned.
1722 @var{freq} set new frequency parameter.
1723 @var{width} set new width parameter in herz.
1724 @var{gain} set new gain parameter in dB.
1725
1726 Full filter invocation with asendcmd may look like this:
1727 asendcmd=c='4.0 anequalizer change 0|f=200|w=50|g=1',anequalizer=...
1728 @end table
1729
1730 @section anull
1731
1732 Pass the audio source unchanged to the output.
1733
1734 @section apad
1735
1736 Pad the end of an audio stream with silence.
1737
1738 This can be used together with @command{ffmpeg} @option{-shortest} to
1739 extend audio streams to the same length as the video stream.
1740
1741 A description of the accepted options follows.
1742
1743 @table @option
1744 @item packet_size
1745 Set silence packet size. Default value is 4096.
1746
1747 @item pad_len
1748 Set the number of samples of silence to add to the end. After the
1749 value is reached, the stream is terminated. This option is mutually
1750 exclusive with @option{whole_len}.
1751
1752 @item whole_len
1753 Set the minimum total number of samples in the output audio stream. If
1754 the value is longer than the input audio length, silence is added to
1755 the end, until the value is reached. This option is mutually exclusive
1756 with @option{pad_len}.
1757 @end table
1758
1759 If neither the @option{pad_len} nor the @option{whole_len} option is
1760 set, the filter will add silence to the end of the input stream
1761 indefinitely.
1762
1763 @subsection Examples
1764
1765 @itemize
1766 @item
1767 Add 1024 samples of silence to the end of the input:
1768 @example
1769 apad=pad_len=1024
1770 @end example
1771
1772 @item
1773 Make sure the audio output will contain at least 10000 samples, pad
1774 the input with silence if required:
1775 @example
1776 apad=whole_len=10000
1777 @end example
1778
1779 @item
1780 Use @command{ffmpeg} to pad the audio input with silence, so that the
1781 video stream will always result the shortest and will be converted
1782 until the end in the output file when using the @option{shortest}
1783 option:
1784 @example
1785 ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
1786 @end example
1787 @end itemize
1788
1789 @section aphaser
1790 Add a phasing effect to the input audio.
1791
1792 A phaser filter creates series of peaks and troughs in the frequency spectrum.
1793 The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
1794
1795 A description of the accepted parameters follows.
1796
1797 @table @option
1798 @item in_gain
1799 Set input gain. Default is 0.4.
1800
1801 @item out_gain
1802 Set output gain. Default is 0.74
1803
1804 @item delay
1805 Set delay in milliseconds. Default is 3.0.
1806
1807 @item decay
1808 Set decay. Default is 0.4.
1809
1810 @item speed
1811 Set modulation speed in Hz. Default is 0.5.
1812
1813 @item type
1814 Set modulation type. Default is triangular.
1815
1816 It accepts the following values:
1817 @table @samp
1818 @item triangular, t
1819 @item sinusoidal, s
1820 @end table
1821 @end table
1822
1823 @section apulsator
1824
1825 Audio pulsator is something between an autopanner and a tremolo.
1826 But it can produce funny stereo effects as well. Pulsator changes the volume
1827 of the left and right channel based on a LFO (low frequency oscillator) with
1828 different waveforms and shifted phases.
1829 This filter have the ability to define an offset between left and right
1830 channel. An offset of 0 means that both LFO shapes match each other.
1831 The left and right channel are altered equally - a conventional tremolo.
1832 An offset of 50% means that the shape of the right channel is exactly shifted
1833 in phase (or moved backwards about half of the frequency) - pulsator acts as
1834 an autopanner. At 1 both curves match again. Every setting in between moves the
1835 phase shift gapless between all stages and produces some "bypassing" sounds with
1836 sine and triangle waveforms. The more you set the offset near 1 (starting from
1837 the 0.5) the faster the signal passes from the left to the right speaker.
1838
1839 The filter accepts the following options:
1840
1841 @table @option
1842 @item level_in
1843 Set input gain. By default it is 1. Range is [0.015625 - 64].
1844
1845 @item level_out
1846 Set output gain. By default it is 1. Range is [0.015625 - 64].
1847
1848 @item mode
1849 Set waveform shape the LFO will use. Can be one of: sine, triangle, square,
1850 sawup or sawdown. Default is sine.
1851
1852 @item amount
1853 Set modulation. Define how much of original signal is affected by the LFO.
1854
1855 @item offset_l
1856 Set left channel offset. Default is 0. Allowed range is [0 - 1].
1857
1858 @item offset_r
1859 Set right channel offset. Default is 0.5. Allowed range is [0 - 1].
1860
1861 @item width
1862 Set pulse width. Default is 1. Allowed range is [0 - 2].
1863
1864 @item timing
1865 Set possible timing mode. Can be one of: bpm, ms or hz. Default is hz.
1866
1867 @item bpm
1868 Set bpm. Default is 120. Allowed range is [30 - 300]. Only used if timing
1869 is set to bpm.
1870
1871 @item ms
1872 Set ms. Default is 500. Allowed range is [10 - 2000]. Only used if timing
1873 is set to ms.
1874
1875 @item hz
1876 Set frequency in Hz. Default is 2. Allowed range is [0.01 - 100]. Only used
1877 if timing is set to hz.
1878 @end table
1879
1880 @anchor{aresample}
1881 @section aresample
1882
1883 Resample the input audio to the specified parameters, using the
1884 libswresample library. If none are specified then the filter will
1885 automatically convert between its input and output.
1886
1887 This filter is also able to stretch/squeeze the audio data to make it match
1888 the timestamps or to inject silence / cut out audio to make it match the
1889 timestamps, do a combination of both or do neither.
1890
1891 The filter accepts the syntax
1892 [@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
1893 expresses a sample rate and @var{resampler_options} is a list of
1894 @var{key}=@var{value} pairs, separated by ":". See the
1895 @ref{Resampler Options,,"Resampler Options" section in the
1896 ffmpeg-resampler(1) manual,ffmpeg-resampler}
1897 for the complete list of supported options.
1898
1899 @subsection Examples
1900
1901 @itemize
1902 @item
1903 Resample the input audio to 44100Hz:
1904 @example
1905 aresample=44100
1906 @end example
1907
1908 @item
1909 Stretch/squeeze samples to the given timestamps, with a maximum of 1000
1910 samples per second compensation:
1911 @example
1912 aresample=async=1000
1913 @end example
1914 @end itemize
1915
1916 @section areverse
1917
1918 Reverse an audio clip.
1919
1920 Warning: This filter requires memory to buffer the entire clip, so trimming
1921 is suggested.
1922
1923 @subsection Examples
1924
1925 @itemize
1926 @item
1927 Take the first 5 seconds of a clip, and reverse it.
1928 @example
1929 atrim=end=5,areverse
1930 @end example
1931 @end itemize
1932
1933 @section asetnsamples
1934
1935 Set the number of samples per each output audio frame.
1936
1937 The last output packet may contain a different number of samples, as
1938 the filter will flush all the remaining samples when the input audio
1939 signals its end.
1940
1941 The filter accepts the following options:
1942
1943 @table @option
1944
1945 @item nb_out_samples, n
1946 Set the number of frames per each output audio frame. The number is
1947 intended as the number of samples @emph{per each channel}.
1948 Default value is 1024.
1949
1950 @item pad, p
1951 If set to 1, the filter will pad the last audio frame with zeroes, so
1952 that the last frame will contain the same number of samples as the
1953 previous ones. Default value is 1.
1954 @end table
1955
1956 For example, to set the number of per-frame samples to 1234 and
1957 disable padding for the last frame, use:
1958 @example
1959 asetnsamples=n=1234:p=0
1960 @end example
1961
1962 @section asetrate
1963
1964 Set the sample rate without altering the PCM data.
1965 This will result in a change of speed and pitch.
1966
1967 The filter accepts the following options:
1968
1969 @table @option
1970 @item sample_rate, r
1971 Set the output sample rate. Default is 44100 Hz.
1972 @end table
1973
1974 @section ashowinfo
1975
1976 Show a line containing various information for each input audio frame.
1977 The input audio is not modified.
1978
1979 The shown line contains a sequence of key/value pairs of the form
1980 @var{key}:@var{value}.
1981
1982 The following values are shown in the output:
1983
1984 @table @option
1985 @item n
1986 The (sequential) number of the input frame, starting from 0.
1987
1988 @item pts
1989 The presentation timestamp of the input frame, in time base units; the time base
1990 depends on the filter input pad, and is usually 1/@var{sample_rate}.
1991
1992 @item pts_time
1993 The presentation timestamp of the input frame in seconds.
1994
1995 @item pos
1996 position of the frame in the input stream, -1 if this information in
1997 unavailable and/or meaningless (for example in case of synthetic audio)
1998
1999 @item fmt
2000 The sample format.
2001
2002 @item chlayout
2003 The channel layout.
2004
2005 @item rate
2006 The sample rate for the audio frame.
2007
2008 @item nb_samples
2009 The number of samples (per channel) in the frame.
2010
2011 @item checksum
2012 The Adler-32 checksum (printed in hexadecimal) of the audio data. For planar
2013 audio, the data is treated as if all the planes were concatenated.
2014
2015 @item plane_checksums
2016 A list of Adler-32 checksums for each data plane.
2017 @end table
2018
2019 @anchor{astats}
2020 @section astats
2021
2022 Display time domain statistical information about the audio channels.
2023 Statistics are calculated and displayed for each audio channel and,
2024 where applicable, an overall figure is also given.
2025
2026 It accepts the following option:
2027 @table @option
2028 @item length
2029 Short window length in seconds, used for peak and trough RMS measurement.
2030 Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.01 - 10]}.
2031
2032 @item metadata
2033
2034 Set metadata injection. All the metadata keys are prefixed with @code{lavfi.astats.X},
2035 where @code{X} is channel number starting from 1 or string @code{Overall}. Default is
2036 disabled.
2037
2038 Available keys for each channel are:
2039 DC_offset
2040 Min_level
2041 Max_level
2042 Min_difference
2043 Max_difference
2044 Mean_difference
2045 RMS_difference
2046 Peak_level
2047 RMS_peak
2048 RMS_trough
2049 Crest_factor
2050 Flat_factor
2051 Peak_count
2052 Bit_depth
2053 Dynamic_range
2054 Zero_crossings
2055 Zero_crossings_rate
2056
2057 and for Overall:
2058 DC_offset
2059 Min_level
2060 Max_level
2061 Min_difference
2062 Max_difference
2063 Mean_difference
2064 RMS_difference
2065 Peak_level
2066 RMS_level
2067 RMS_peak
2068 RMS_trough
2069 Flat_factor
2070 Peak_count
2071 Bit_depth
2072 Number_of_samples
2073
2074 For example full key look like this @code{lavfi.astats.1.DC_offset} or
2075 this @code{lavfi.astats.Overall.Peak_count}.
2076
2077 For description what each key means read below.
2078
2079 @item reset
2080 Set number of frame after which stats are going to be recalculated.
2081 Default is disabled.
2082 @end table
2083
2084 A description of each shown parameter follows:
2085
2086 @table @option
2087 @item DC offset
2088 Mean amplitude displacement from zero.
2089
2090 @item Min level
2091 Minimal sample level.
2092
2093 @item Max level
2094 Maximal sample level.
2095
2096 @item Min difference
2097 Minimal difference between two consecutive samples.
2098
2099 @item Max difference
2100 Maximal difference between two consecutive samples.
2101
2102 @item Mean difference
2103 Mean difference between two consecutive samples.
2104 The average of each difference between two consecutive samples.
2105
2106 @item RMS difference
2107 Root Mean Square difference between two consecutive samples.
2108
2109 @item Peak level dB
2110 @item RMS level dB
2111 Standard peak and RMS level measured in dBFS.
2112
2113 @item RMS peak dB
2114 @item RMS trough dB
2115 Peak and trough values for RMS level measured over a short window.
2116
2117 @item Crest factor
2118 Standard ratio of peak to RMS level (note: not in dB).
2119
2120 @item Flat factor
2121 Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
2122 (i.e. either @var{Min level} or @var{Max level}).
2123
2124 @item Peak count
2125 Number of occasions (not the number of samples) that the signal attained either
2126 @var{Min level} or @var{Max level}.
2127
2128 @item Bit depth
2129 Overall bit depth of audio. Number of bits used for each sample.
2130
2131 @item Dynamic range
2132 Measured dynamic range of audio in dB.
2133
2134 @item Zero crossings
2135 Number of points where the waveform crosses the zero level axis.
2136
2137 @item Zero crossings rate
2138 Rate of Zero crossings and number of audio samples.
2139 @end table
2140
2141 @section atempo
2142
2143 Adjust audio tempo.
2144
2145 The filter accepts exactly one parameter, the audio tempo. If not
2146 specified then the filter will assume nominal 1.0 tempo. Tempo must
2147 be in the [0.5, 100.0] range.
2148
2149 Note that tempo greater than 2 will skip some samples rather than
2150 blend them in.  If for any reason this is a concern it is always
2151 possible to daisy-chain several instances of atempo to achieve the
2152 desired product tempo.
2153
2154 @subsection Examples
2155
2156 @itemize
2157 @item
2158 Slow down audio to 80% tempo:
2159 @example
2160 atempo=0.8
2161 @end example
2162
2163 @item
2164 To speed up audio to 300% tempo:
2165 @example
2166 atempo=3
2167 @end example
2168
2169 @item
2170 To speed up audio to 300% tempo by daisy-chaining two atempo instances:
2171 @example
2172 atempo=sqrt(3),atempo=sqrt(3)
2173 @end example
2174 @end itemize
2175
2176 @section atrim
2177
2178 Trim the input so that the output contains one continuous subpart of the input.
2179
2180 It accepts the following parameters:
2181 @table @option
2182 @item start
2183 Timestamp (in seconds) of the start of the section to keep. I.e. the audio
2184 sample with the timestamp @var{start} will be the first sample in the output.
2185
2186 @item end
2187 Specify time of the first audio sample that will be dropped, i.e. the
2188 audio sample immediately preceding the one with the timestamp @var{end} will be
2189 the last sample in the output.
2190
2191 @item start_pts
2192 Same as @var{start}, except this option sets the start timestamp in samples
2193 instead of seconds.
2194
2195 @item end_pts
2196 Same as @var{end}, except this option sets the end timestamp in samples instead
2197 of seconds.
2198
2199 @item duration
2200 The maximum duration of the output in seconds.
2201
2202 @item start_sample
2203 The number of the first sample that should be output.
2204
2205 @item end_sample
2206 The number of the first sample that should be dropped.
2207 @end table
2208
2209 @option{start}, @option{end}, and @option{duration} are expressed as time
2210 duration specifications; see
2211 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
2212
2213 Note that the first two sets of the start/end options and the @option{duration}
2214 option look at the frame timestamp, while the _sample options simply count the
2215 samples that pass through the filter. So start/end_pts and start/end_sample will
2216 give different results when the timestamps are wrong, inexact or do not start at
2217 zero. Also note that this filter does not modify the timestamps. If you wish
2218 to have the output timestamps start at zero, insert the asetpts filter after the
2219 atrim filter.
2220
2221 If multiple start or end options are set, this filter tries to be greedy and
2222 keep all samples that match at least one of the specified constraints. To keep
2223 only the part that matches all the constraints at once, chain multiple atrim
2224 filters.
2225
2226 The defaults are such that all the input is kept. So it is possible to set e.g.
2227 just the end values to keep everything before the specified time.
2228
2229 Examples:
2230 @itemize
2231 @item
2232 Drop everything except the second minute of input:
2233 @example
2234 ffmpeg -i INPUT -af atrim=60:120
2235 @end example
2236
2237 @item
2238 Keep only the first 1000 samples:
2239 @example
2240 ffmpeg -i INPUT -af atrim=end_sample=1000
2241 @end example
2242
2243 @end itemize
2244
2245 @section bandpass
2246
2247 Apply a two-pole Butterworth band-pass filter with central
2248 frequency @var{frequency}, and (3dB-point) band-width width.
2249 The @var{csg} option selects a constant skirt gain (peak gain = Q)
2250 instead of the default: constant 0dB peak gain.
2251 The filter roll off at 6dB per octave (20dB per decade).
2252
2253 The filter accepts the following options:
2254
2255 @table @option
2256 @item frequency, f
2257 Set the filter's central frequency. Default is @code{3000}.
2258
2259 @item csg
2260 Constant skirt gain if set to 1. Defaults to 0.
2261
2262 @item width_type, t
2263 Set method to specify band-width of filter.
2264 @table @option
2265 @item h
2266 Hz
2267 @item q
2268 Q-Factor
2269 @item o
2270 octave
2271 @item s
2272 slope
2273 @item k
2274 kHz
2275 @end table
2276
2277 @item width, w
2278 Specify the band-width of a filter in width_type units.
2279
2280 @item channels, c
2281 Specify which channels to filter, by default all available are filtered.
2282 @end table
2283
2284 @subsection Commands
2285
2286 This filter supports the following commands:
2287 @table @option
2288 @item frequency, f
2289 Change bandpass frequency.
2290 Syntax for the command is : "@var{frequency}"
2291
2292 @item width_type, t
2293 Change bandpass width_type.
2294 Syntax for the command is : "@var{width_type}"
2295
2296 @item width, w
2297 Change bandpass width.
2298 Syntax for the command is : "@var{width}"
2299 @end table
2300
2301 @section bandreject
2302
2303 Apply a two-pole Butterworth band-reject filter with central
2304 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
2305 The filter roll off at 6dB per octave (20dB per decade).
2306
2307 The filter accepts the following options:
2308
2309 @table @option
2310 @item frequency, f
2311 Set the filter's central frequency. Default is @code{3000}.
2312
2313 @item width_type, t
2314 Set method to specify band-width of filter.
2315 @table @option
2316 @item h
2317 Hz
2318 @item q
2319 Q-Factor
2320 @item o
2321 octave
2322 @item s
2323 slope
2324 @item k
2325 kHz
2326 @end table
2327
2328 @item width, w
2329 Specify the band-width of a filter in width_type units.
2330
2331 @item channels, c
2332 Specify which channels to filter, by default all available are filtered.
2333 @end table
2334
2335 @subsection Commands
2336
2337 This filter supports the following commands:
2338 @table @option
2339 @item frequency, f
2340 Change bandreject frequency.
2341 Syntax for the command is : "@var{frequency}"
2342
2343 @item width_type, t
2344 Change bandreject width_type.
2345 Syntax for the command is : "@var{width_type}"
2346
2347 @item width, w
2348 Change bandreject width.
2349 Syntax for the command is : "@var{width}"
2350 @end table
2351
2352 @section bass, lowshelf
2353
2354 Boost or cut the bass (lower) frequencies of the audio using a two-pole
2355 shelving filter with a response similar to that of a standard
2356 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
2357
2358 The filter accepts the following options:
2359
2360 @table @option
2361 @item gain, g
2362 Give the gain at 0 Hz. Its useful range is about -20
2363 (for a large cut) to +20 (for a large boost).
2364 Beware of clipping when using a positive gain.
2365
2366 @item frequency, f
2367 Set the filter's central frequency and so can be used
2368 to extend or reduce the frequency range to be boosted or cut.
2369 The default value is @code{100} Hz.
2370
2371 @item width_type, t
2372 Set method to specify band-width of filter.
2373 @table @option
2374 @item h
2375 Hz
2376 @item q
2377 Q-Factor
2378 @item o
2379 octave
2380 @item s
2381 slope
2382 @item k
2383 kHz
2384 @end table
2385
2386 @item width, w
2387 Determine how steep is the filter's shelf transition.
2388
2389 @item channels, c
2390 Specify which channels to filter, by default all available are filtered.
2391 @end table
2392
2393 @subsection Commands
2394
2395 This filter supports the following commands:
2396 @table @option
2397 @item frequency, f
2398 Change bass frequency.
2399 Syntax for the command is : "@var{frequency}"
2400
2401 @item width_type, t
2402 Change bass width_type.
2403 Syntax for the command is : "@var{width_type}"
2404
2405 @item width, w
2406 Change bass width.
2407 Syntax for the command is : "@var{width}"
2408
2409 @item gain, g
2410 Change bass gain.
2411 Syntax for the command is : "@var{gain}"
2412 @end table
2413
2414 @section biquad
2415
2416 Apply a biquad IIR filter with the given coefficients.
2417 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
2418 are the numerator and denominator coefficients respectively.
2419 and @var{channels}, @var{c} specify which channels to filter, by default all
2420 available are filtered.
2421
2422 @subsection Commands
2423
2424 This filter supports the following commands:
2425 @table @option
2426 @item a0
2427 @item a1
2428 @item a2
2429 @item b0
2430 @item b1
2431 @item b2
2432 Change biquad parameter.
2433 Syntax for the command is : "@var{value}"
2434 @end table
2435
2436 @section bs2b
2437 Bauer stereo to binaural transformation, which improves headphone listening of
2438 stereo audio records.
2439
2440 To enable compilation of this filter you need to configure FFmpeg with
2441 @code{--enable-libbs2b}.
2442
2443 It accepts the following parameters:
2444 @table @option
2445
2446 @item profile
2447 Pre-defined crossfeed level.
2448 @table @option
2449
2450 @item default
2451 Default level (fcut=700, feed=50).
2452
2453 @item cmoy
2454 Chu Moy circuit (fcut=700, feed=60).
2455
2456 @item jmeier
2457 Jan Meier circuit (fcut=650, feed=95).
2458
2459 @end table
2460
2461 @item fcut
2462 Cut frequency (in Hz).
2463
2464 @item feed
2465 Feed level (in Hz).
2466
2467 @end table
2468
2469 @section channelmap
2470
2471 Remap input channels to new locations.
2472
2473 It accepts the following parameters:
2474 @table @option
2475 @item map
2476 Map channels from input to output. The argument is a '|'-separated list of
2477 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
2478 @var{in_channel} form. @var{in_channel} can be either the name of the input
2479 channel (e.g. FL for front left) or its index in the input channel layout.
2480 @var{out_channel} is the name of the output channel or its index in the output
2481 channel layout. If @var{out_channel} is not given then it is implicitly an
2482 index, starting with zero and increasing by one for each mapping.
2483
2484 @item channel_layout
2485 The channel layout of the output stream.
2486 @end table
2487
2488 If no mapping is present, the filter will implicitly map input channels to
2489 output channels, preserving indices.
2490
2491 @subsection Examples
2492
2493 @itemize
2494 @item
2495 For example, assuming a 5.1+downmix input MOV file,
2496 @example
2497 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
2498 @end example
2499 will create an output WAV file tagged as stereo from the downmix channels of
2500 the input.
2501
2502 @item
2503 To fix a 5.1 WAV improperly encoded in AAC's native channel order
2504 @example
2505 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
2506 @end example
2507 @end itemize
2508
2509 @section channelsplit
2510
2511 Split each channel from an input audio stream into a separate output stream.
2512
2513 It accepts the following parameters:
2514 @table @option
2515 @item channel_layout
2516 The channel layout of the input stream. The default is "stereo".
2517 @item channels
2518 A channel layout describing the channels to be extracted as separate output streams
2519 or "all" to extract each input channel as a separate stream. The default is "all".
2520
2521 Choosing channels not present in channel layout in the input will result in an error.
2522 @end table
2523
2524 @subsection Examples
2525
2526 @itemize
2527 @item
2528 For example, assuming a stereo input MP3 file,
2529 @example
2530 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
2531 @end example
2532 will create an output Matroska file with two audio streams, one containing only
2533 the left channel and the other the right channel.
2534
2535 @item
2536 Split a 5.1 WAV file into per-channel files:
2537 @example
2538 ffmpeg -i in.wav -filter_complex
2539 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
2540 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
2541 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
2542 side_right.wav
2543 @end example
2544
2545 @item
2546 Extract only LFE from a 5.1 WAV file:
2547 @example
2548 ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]'
2549 -map '[LFE]' lfe.wav
2550 @end example
2551 @end itemize
2552
2553 @section chorus
2554 Add a chorus effect to the audio.
2555
2556 Can make a single vocal sound like a chorus, but can also be applied to instrumentation.
2557
2558 Chorus resembles an echo effect with a short delay, but whereas with echo the delay is
2559 constant, with chorus, it is varied using using sinusoidal or triangular modulation.
2560 The modulation depth defines the range the modulated delay is played before or after
2561 the delay. Hence the delayed sound will sound slower or faster, that is the delayed
2562 sound tuned around the original one, like in a chorus where some vocals are slightly
2563 off key.
2564
2565 It accepts the following parameters:
2566 @table @option
2567 @item in_gain
2568 Set input gain. Default is 0.4.
2569
2570 @item out_gain
2571 Set output gain. Default is 0.4.
2572
2573 @item delays
2574 Set delays. A typical delay is around 40ms to 60ms.
2575
2576 @item decays
2577 Set decays.
2578
2579 @item speeds
2580 Set speeds.
2581
2582 @item depths
2583 Set depths.
2584 @end table
2585
2586 @subsection Examples
2587
2588 @itemize
2589 @item
2590 A single delay:
2591 @example
2592 chorus=0.7:0.9:55:0.4:0.25:2
2593 @end example
2594
2595 @item
2596 Two delays:
2597 @example
2598 chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
2599 @end example
2600
2601 @item
2602 Fuller sounding chorus with three delays:
2603 @example
2604 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
2605 @end example
2606 @end itemize
2607
2608 @section compand
2609 Compress or expand the audio's dynamic range.
2610
2611 It accepts the following parameters:
2612
2613 @table @option
2614
2615 @item attacks
2616 @item decays
2617 A list of times in seconds for each channel over which the instantaneous level
2618 of the input signal is averaged to determine its volume. @var{attacks} refers to
2619 increase of volume and @var{decays} refers to decrease of volume. For most
2620 situations, the attack time (response to the audio getting louder) should be
2621 shorter than the decay time, because the human ear is more sensitive to sudden
2622 loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
2623 a typical value for decay is 0.8 seconds.
2624 If specified number of attacks & decays is lower than number of channels, the last
2625 set attack/decay will be used for all remaining channels.
2626
2627 @item points
2628 A list of points for the transfer function, specified in dB relative to the
2629 maximum possible signal amplitude. Each key points list must be defined using
2630 the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
2631 @code{x0/y0 x1/y1 x2/y2 ....}
2632
2633 The input values must be in strictly increasing order but the transfer function
2634 does not have to be monotonically rising. The point @code{0/0} is assumed but
2635 may be overridden (by @code{0/out-dBn}). Typical values for the transfer
2636 function are @code{-70/-70|-60/-20|1/0}.
2637
2638 @item soft-knee
2639 Set the curve radius in dB for all joints. It defaults to 0.01.
2640
2641 @item gain
2642 Set the additional gain in dB to be applied at all points on the transfer
2643 function. This allows for easy adjustment of the overall gain.
2644 It defaults to 0.
2645
2646 @item volume
2647 Set an initial volume, in dB, to be assumed for each channel when filtering
2648 starts. This permits the user to supply a nominal level initially, so that, for
2649 example, a very large gain is not applied to initial signal levels before the
2650 companding has begun to operate. A typical value for audio which is initially
2651 quiet is -90 dB. It defaults to 0.
2652
2653 @item delay
2654 Set a delay, in seconds. The input audio is analyzed immediately, but audio is
2655 delayed before being fed to the volume adjuster. Specifying a delay
2656 approximately equal to the attack/decay times allows the filter to effectively
2657 operate in predictive rather than reactive mode. It defaults to 0.
2658
2659 @end table
2660
2661 @subsection Examples
2662
2663 @itemize
2664 @item
2665 Make music with both quiet and loud passages suitable for listening to in a
2666 noisy environment:
2667 @example
2668 compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
2669 @end example
2670
2671 Another example for audio with whisper and explosion parts:
2672 @example
2673 compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
2674 @end example
2675
2676 @item
2677 A noise gate for when the noise is at a lower level than the signal:
2678 @example
2679 compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
2680 @end example
2681
2682 @item
2683 Here is another noise gate, this time for when the noise is at a higher level
2684 than the signal (making it, in some ways, similar to squelch):
2685 @example
2686 compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
2687 @end example
2688
2689 @item
2690 2:1 compression starting at -6dB:
2691 @example
2692 compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
2693 @end example
2694
2695 @item
2696 2:1 compression starting at -9dB:
2697 @example
2698 compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
2699 @end example
2700
2701 @item
2702 2:1 compression starting at -12dB:
2703 @example
2704 compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
2705 @end example
2706
2707 @item
2708 2:1 compression starting at -18dB:
2709 @example
2710 compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
2711 @end example
2712
2713 @item
2714 3:1 compression starting at -15dB:
2715 @example
2716 compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
2717 @end example
2718
2719 @item
2720 Compressor/Gate:
2721 @example
2722 compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
2723 @end example
2724
2725 @item
2726 Expander:
2727 @example
2728 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
2729 @end example
2730
2731 @item
2732 Hard limiter at -6dB:
2733 @example
2734 compand=attacks=0:points=-80/-80|-6/-6|20/-6
2735 @end example
2736
2737 @item
2738 Hard limiter at -12dB:
2739 @example
2740 compand=attacks=0:points=-80/-80|-12/-12|20/-12
2741 @end example
2742
2743 @item
2744 Hard noise gate at -35 dB:
2745 @example
2746 compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
2747 @end example
2748
2749 @item
2750 Soft limiter:
2751 @example
2752 compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
2753 @end example
2754 @end itemize
2755
2756 @section compensationdelay
2757
2758 Compensation Delay Line is a metric based delay to compensate differing
2759 positions of microphones or speakers.
2760
2761 For example, you have recorded guitar with two microphones placed in
2762 different location. Because the front of sound wave has fixed speed in
2763 normal conditions, the phasing of microphones can vary and depends on
2764 their location and interposition. The best sound mix can be achieved when
2765 these microphones are in phase (synchronized). Note that distance of
2766 ~30 cm between microphones makes one microphone to capture signal in
2767 antiphase to another microphone. That makes the final mix sounding moody.
2768 This filter helps to solve phasing problems by adding different delays
2769 to each microphone track and make them synchronized.
2770
2771 The best result can be reached when you take one track as base and
2772 synchronize other tracks one by one with it.
2773 Remember that synchronization/delay tolerance depends on sample rate, too.
2774 Higher sample rates will give more tolerance.
2775
2776 It accepts the following parameters:
2777
2778 @table @option
2779 @item mm
2780 Set millimeters distance. This is compensation distance for fine tuning.
2781 Default is 0.
2782
2783 @item cm
2784 Set cm distance. This is compensation distance for tightening distance setup.
2785 Default is 0.
2786
2787 @item m
2788 Set meters distance. This is compensation distance for hard distance setup.
2789 Default is 0.
2790
2791 @item dry
2792 Set dry amount. Amount of unprocessed (dry) signal.
2793 Default is 0.
2794
2795 @item wet
2796 Set wet amount. Amount of processed (wet) signal.
2797 Default is 1.
2798
2799 @item temp
2800 Set temperature degree in Celsius. This is the temperature of the environment.
2801 Default is 20.
2802 @end table
2803
2804 @section crossfeed
2805 Apply headphone crossfeed filter.
2806
2807 Crossfeed is the process of blending the left and right channels of stereo
2808 audio recording.
2809 It is mainly used to reduce extreme stereo separation of low frequencies.
2810
2811 The intent is to produce more speaker like sound to the listener.
2812
2813 The filter accepts the following options:
2814
2815 @table @option
2816 @item strength
2817 Set strength of crossfeed. Default is 0.2. Allowed range is from 0 to 1.
2818 This sets gain of low shelf filter for side part of stereo image.
2819 Default is -6dB. Max allowed is -30db when strength is set to 1.
2820
2821 @item range
2822 Set soundstage wideness. Default is 0.5. Allowed range is from 0 to 1.
2823 This sets cut off frequency of low shelf filter. Default is cut off near
2824 1550 Hz. With range set to 1 cut off frequency is set to 2100 Hz.
2825
2826 @item level_in
2827 Set input gain. Default is 0.9.
2828
2829 @item level_out
2830 Set output gain. Default is 1.
2831 @end table
2832
2833 @section crystalizer
2834 Simple algorithm to expand audio dynamic range.
2835
2836 The filter accepts the following options:
2837
2838 @table @option
2839 @item i
2840 Sets the intensity of effect (default: 2.0). Must be in range between 0.0
2841 (unchanged sound) to 10.0 (maximum effect).
2842
2843 @item c
2844 Enable clipping. By default is enabled.
2845 @end table
2846
2847 @section dcshift
2848 Apply a DC shift to the audio.
2849
2850 This can be useful to remove a DC offset (caused perhaps by a hardware problem
2851 in the recording chain) from the audio. The effect of a DC offset is reduced
2852 headroom and hence volume. The @ref{astats} filter can be used to determine if
2853 a signal has a DC offset.
2854
2855 @table @option
2856 @item shift
2857 Set the DC shift, allowed range is [-1, 1]. It indicates the amount to shift
2858 the audio.
2859
2860 @item limitergain
2861 Optional. It should have a value much less than 1 (e.g. 0.05 or 0.02) and is
2862 used to prevent clipping.
2863 @end table
2864
2865 @section drmeter
2866 Measure audio dynamic range.
2867
2868 DR values of 14 and higher is found in very dynamic material. DR of 8 to 13
2869 is found in transition material. And anything less that 8 have very poor dynamics
2870 and is very compressed.
2871
2872 The filter accepts the following options:
2873
2874 @table @option
2875 @item length
2876 Set window length in seconds used to split audio into segments of equal length.
2877 Default is 3 seconds.
2878 @end table
2879
2880 @section dynaudnorm
2881 Dynamic Audio Normalizer.
2882
2883 This filter applies a certain amount of gain to the input audio in order
2884 to bring its peak magnitude to a target level (e.g. 0 dBFS). However, in
2885 contrast to more "simple" normalization algorithms, the Dynamic Audio
2886 Normalizer *dynamically* re-adjusts the gain factor to the input audio.
2887 This allows for applying extra gain to the "quiet" sections of the audio
2888 while avoiding distortions or clipping the "loud" sections. In other words:
2889 The Dynamic Audio Normalizer will "even out" the volume of quiet and loud
2890 sections, in the sense that the volume of each section is brought to the
2891 same target level. Note, however, that the Dynamic Audio Normalizer achieves
2892 this goal *without* applying "dynamic range compressing". It will retain 100%
2893 of the dynamic range *within* each section of the audio file.
2894
2895 @table @option
2896 @item f
2897 Set the frame length in milliseconds. In range from 10 to 8000 milliseconds.
2898 Default is 500 milliseconds.
2899 The Dynamic Audio Normalizer processes the input audio in small chunks,
2900 referred to as frames. This is required, because a peak magnitude has no
2901 meaning for just a single sample value. Instead, we need to determine the
2902 peak magnitude for a contiguous sequence of sample values. While a "standard"
2903 normalizer would simply use the peak magnitude of the complete file, the
2904 Dynamic Audio Normalizer determines the peak magnitude individually for each
2905 frame. The length of a frame is specified in milliseconds. By default, the
2906 Dynamic Audio Normalizer uses a frame length of 500 milliseconds, which has
2907 been found to give good results with most files.
2908 Note that the exact frame length, in number of samples, will be determined
2909 automatically, based on the sampling rate of the individual input audio file.
2910
2911 @item g
2912 Set the Gaussian filter window size. In range from 3 to 301, must be odd
2913 number. Default is 31.
2914 Probably the most important parameter of the Dynamic Audio Normalizer is the
2915 @code{window size} of the Gaussian smoothing filter. The filter's window size
2916 is specified in frames, centered around the current frame. For the sake of
2917 simplicity, this must be an odd number. Consequently, the default value of 31
2918 takes into account the current frame, as well as the 15 preceding frames and
2919 the 15 subsequent frames. Using a larger window results in a stronger
2920 smoothing effect and thus in less gain variation, i.e. slower gain
2921 adaptation. Conversely, using a smaller window results in a weaker smoothing
2922 effect and thus in more gain variation, i.e. faster gain adaptation.
2923 In other words, the more you increase this value, the more the Dynamic Audio
2924 Normalizer will behave like a "traditional" normalization filter. On the
2925 contrary, the more you decrease this value, the more the Dynamic Audio
2926 Normalizer will behave like a dynamic range compressor.
2927
2928 @item p
2929 Set the target peak value. This specifies the highest permissible magnitude
2930 level for the normalized audio input. This filter will try to approach the
2931 target peak magnitude as closely as possible, but at the same time it also
2932 makes sure that the normalized signal will never exceed the peak magnitude.
2933 A frame's maximum local gain factor is imposed directly by the target peak
2934 magnitude. The default value is 0.95 and thus leaves a headroom of 5%*.
2935 It is not recommended to go above this value.
2936
2937 @item m
2938 Set the maximum gain factor. In range from 1.0 to 100.0. Default is 10.0.
2939 The Dynamic Audio Normalizer determines the maximum possible (local) gain
2940 factor for each input frame, i.e. the maximum gain factor that does not
2941 result in clipping or distortion. The maximum gain factor is determined by
2942 the frame's highest magnitude sample. However, the Dynamic Audio Normalizer
2943 additionally bounds the frame's maximum gain factor by a predetermined
2944 (global) maximum gain factor. This is done in order to avoid excessive gain
2945 factors in "silent" or almost silent frames. By default, the maximum gain
2946 factor is 10.0, For most inputs the default value should be sufficient and
2947 it usually is not recommended to increase this value. Though, for input
2948 with an extremely low overall volume level, it may be necessary to allow even
2949 higher gain factors. Note, however, that the Dynamic Audio Normalizer does
2950 not simply apply a "hard" threshold (i.e. cut off values above the threshold).
2951 Instead, a "sigmoid" threshold function will be applied. This way, the
2952 gain factors will smoothly approach the threshold value, but never exceed that
2953 value.
2954
2955 @item r
2956 Set the target RMS. In range from 0.0 to 1.0. Default is 0.0 - disabled.
2957 By default, the Dynamic Audio Normalizer performs "peak" normalization.
2958 This means that the maximum local gain factor for each frame is defined
2959 (only) by the frame's highest magnitude sample. This way, the samples can
2960 be amplified as much as possible without exceeding the maximum signal
2961 level, i.e. without clipping. Optionally, however, the Dynamic Audio
2962 Normalizer can also take into account the frame's root mean square,
2963 abbreviated RMS. In electrical engineering, the RMS is commonly used to
2964 determine the power of a time-varying signal. It is therefore considered
2965 that the RMS is a better approximation of the "perceived loudness" than
2966 just looking at the signal's peak magnitude. Consequently, by adjusting all
2967 frames to a constant RMS value, a uniform "perceived loudness" can be
2968 established. If a target RMS value has been specified, a frame's local gain
2969 factor is defined as the factor that would result in exactly that RMS value.
2970 Note, however, that the maximum local gain factor is still restricted by the
2971 frame's highest magnitude sample, in order to prevent clipping.
2972
2973 @item n
2974 Enable channels coupling. By default is enabled.
2975 By default, the Dynamic Audio Normalizer will amplify all channels by the same
2976 amount. This means the same gain factor will be applied to all channels, i.e.
2977 the maximum possible gain factor is determined by the "loudest" channel.
2978 However, in some recordings, it may happen that the volume of the different
2979 channels is uneven, e.g. one channel may be "quieter" than the other one(s).
2980 In this case, this option can be used to disable the channel coupling. This way,
2981 the gain factor will be determined independently for each channel, depending
2982 only on the individual channel's highest magnitude sample. This allows for
2983 harmonizing the volume of the different channels.
2984
2985 @item c
2986 Enable DC bias correction. By default is disabled.
2987 An audio signal (in the time domain) is a sequence of sample values.
2988 In the Dynamic Audio Normalizer these sample values are represented in the
2989 -1.0 to 1.0 range, regardless of the original input format. Normally, the
2990 audio signal, or "waveform", should be centered around the zero point.
2991 That means if we calculate the mean value of all samples in a file, or in a
2992 single frame, then the result should be 0.0 or at least very close to that
2993 value. If, however, there is a significant deviation of the mean value from
2994 0.0, in either positive or negative direction, this is referred to as a
2995 DC bias or DC offset. Since a DC bias is clearly undesirable, the Dynamic
2996 Audio Normalizer provides optional DC bias correction.
2997 With DC bias correction enabled, the Dynamic Audio Normalizer will determine
2998 the mean value, or "DC correction" offset, of each input frame and subtract
2999 that value from all of the frame's sample values which ensures those samples
3000 are centered around 0.0 again. Also, in order to avoid "gaps" at the frame
3001 boundaries, the DC correction offset values will be interpolated smoothly
3002 between neighbouring frames.
3003
3004 @item b
3005 Enable alternative boundary mode. By default is disabled.
3006 The Dynamic Audio Normalizer takes into account a certain neighbourhood
3007 around each frame. This includes the preceding frames as well as the
3008 subsequent frames. However, for the "boundary" frames, located at the very
3009 beginning and at the very end of the audio file, not all neighbouring
3010 frames are available. In particular, for the first few frames in the audio
3011 file, the preceding frames are not known. And, similarly, for the last few
3012 frames in the audio file, the subsequent frames are not known. Thus, the
3013 question arises which gain factors should be assumed for the missing frames
3014 in the "boundary" region. The Dynamic Audio Normalizer implements two modes
3015 to deal with this situation. The default boundary mode assumes a gain factor
3016 of exactly 1.0 for the missing frames, resulting in a smooth "fade in" and
3017 "fade out" at the beginning and at the end of the input, respectively.
3018
3019 @item s
3020 Set the compress factor. In range from 0.0 to 30.0. Default is 0.0.
3021 By default, the Dynamic Audio Normalizer does not apply "traditional"
3022 compression. This means that signal peaks will not be pruned and thus the
3023 full dynamic range will be retained within each local neighbourhood. However,
3024 in some cases it may be desirable to combine the Dynamic Audio Normalizer's
3025 normalization algorithm with a more "traditional" compression.
3026 For this purpose, the Dynamic Audio Normalizer provides an optional compression
3027 (thresholding) function. If (and only if) the compression feature is enabled,
3028 all input frames will be processed by a soft knee thresholding function prior
3029 to the actual normalization process. Put simply, the thresholding function is
3030 going to prune all samples whose magnitude exceeds a certain threshold value.
3031 However, the Dynamic Audio Normalizer does not simply apply a fixed threshold
3032 value. Instead, the threshold value will be adjusted for each individual
3033 frame.
3034 In general, smaller parameters result in stronger compression, and vice versa.
3035 Values below 3.0 are not recommended, because audible distortion may appear.
3036 @end table
3037
3038 @section earwax
3039
3040 Make audio easier to listen to on headphones.
3041
3042 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
3043 so that when listened to on headphones the stereo image is moved from
3044 inside your head (standard for headphones) to outside and in front of
3045 the listener (standard for speakers).
3046
3047 Ported from SoX.
3048
3049 @section equalizer
3050
3051 Apply a two-pole peaking equalisation (EQ) filter. With this
3052 filter, the signal-level at and around a selected frequency can
3053 be increased or decreased, whilst (unlike bandpass and bandreject
3054 filters) that at all other frequencies is unchanged.
3055
3056 In order to produce complex equalisation curves, this filter can
3057 be given several times, each with a different central frequency.
3058
3059 The filter accepts the following options:
3060
3061 @table @option
3062 @item frequency, f
3063 Set the filter's central frequency in Hz.
3064
3065 @item width_type, t
3066 Set method to specify band-width of filter.
3067 @table @option
3068 @item h
3069 Hz
3070 @item q
3071 Q-Factor
3072 @item o
3073 octave
3074 @item s
3075 slope
3076 @item k
3077 kHz
3078 @end table
3079
3080 @item width, w
3081 Specify the band-width of a filter in width_type units.
3082
3083 @item gain, g
3084 Set the required gain or attenuation in dB.
3085 Beware of clipping when using a positive gain.
3086
3087 @item channels, c
3088 Specify which channels to filter, by default all available are filtered.
3089 @end table
3090
3091 @subsection Examples
3092 @itemize
3093 @item
3094 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
3095 @example
3096 equalizer=f=1000:t=h:width=200:g=-10
3097 @end example
3098
3099 @item
3100 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
3101 @example
3102 equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
3103 @end example
3104 @end itemize
3105
3106 @subsection Commands
3107
3108 This filter supports the following commands:
3109 @table @option
3110 @item frequency, f
3111 Change equalizer frequency.
3112 Syntax for the command is : "@var{frequency}"
3113
3114 @item width_type, t
3115 Change equalizer width_type.
3116 Syntax for the command is : "@var{width_type}"
3117
3118 @item width, w
3119 Change equalizer width.
3120 Syntax for the command is : "@var{width}"
3121
3122 @item gain, g
3123 Change equalizer gain.
3124 Syntax for the command is : "@var{gain}"
3125 @end table
3126
3127 @section extrastereo
3128
3129 Linearly increases the difference between left and right channels which
3130 adds some sort of "live" effect to playback.
3131
3132 The filter accepts the following options:
3133
3134 @table @option
3135 @item m
3136 Sets the difference coefficient (default: 2.5). 0.0 means mono sound
3137 (average of both channels), with 1.0 sound will be unchanged, with
3138 -1.0 left and right channels will be swapped.
3139
3140 @item c
3141 Enable clipping. By default is enabled.
3142 @end table
3143
3144 @section firequalizer
3145 Apply FIR Equalization using arbitrary frequency response.
3146
3147 The filter accepts the following option:
3148
3149 @table @option
3150 @item gain
3151 Set gain curve equation (in dB). The expression can contain variables:
3152 @table @option
3153 @item f
3154 the evaluated frequency
3155 @item sr
3156 sample rate
3157 @item ch
3158 channel number, set to 0 when multichannels evaluation is disabled
3159 @item chid
3160 channel id, see libavutil/channel_layout.h, set to the first channel id when
3161 multichannels evaluation is disabled
3162 @item chs
3163 number of channels
3164 @item chlayout
3165 channel_layout, see libavutil/channel_layout.h
3166
3167 @end table
3168 and functions:
3169 @table @option
3170 @item gain_interpolate(f)
3171 interpolate gain on frequency f based on gain_entry
3172 @item cubic_interpolate(f)
3173 same as gain_interpolate, but smoother
3174 @end table
3175 This option is also available as command. Default is @code{gain_interpolate(f)}.
3176
3177 @item gain_entry
3178 Set gain entry for gain_interpolate function. The expression can
3179 contain functions:
3180 @table @option
3181 @item entry(f, g)
3182 store gain entry at frequency f with value g
3183 @end table
3184 This option is also available as command.
3185
3186 @item delay
3187 Set filter delay in seconds. Higher value means more accurate.
3188 Default is @code{0.01}.
3189
3190 @item accuracy
3191 Set filter accuracy in Hz. Lower value means more accurate.
3192 Default is @code{5}.
3193
3194 @item wfunc
3195 Set window function. Acceptable values are:
3196 @table @option
3197 @item rectangular
3198 rectangular window, useful when gain curve is already smooth
3199 @item hann
3200 hann window (default)
3201 @item hamming
3202 hamming window
3203 @item blackman
3204 blackman window
3205 @item nuttall3
3206 3-terms continuous 1st derivative nuttall window
3207 @item mnuttall3
3208 minimum 3-terms discontinuous nuttall window
3209 @item nuttall
3210 4-terms continuous 1st derivative nuttall window
3211 @item bnuttall
3212 minimum 4-terms discontinuous nuttall (blackman-nuttall) window
3213 @item bharris
3214 blackman-harris window
3215 @item tukey
3216 tukey window
3217 @end table
3218
3219 @item fixed
3220 If enabled, use fixed number of audio samples. This improves speed when
3221 filtering with large delay. Default is disabled.
3222
3223 @item multi
3224 Enable multichannels evaluation on gain. Default is disabled.
3225
3226 @item zero_phase
3227 Enable zero phase mode by subtracting timestamp to compensate delay.
3228 Default is disabled.
3229
3230 @item scale
3231 Set scale used by gain. Acceptable values are:
3232 @table @option
3233 @item linlin
3234 linear frequency, linear gain
3235 @item linlog
3236 linear frequency, logarithmic (in dB) gain (default)
3237 @item loglin
3238 logarithmic (in octave scale where 20 Hz is 0) frequency, linear gain
3239 @item loglog
3240 logarithmic frequency, logarithmic gain
3241 @end table
3242
3243 @item dumpfile
3244 Set file for dumping, suitable for gnuplot.
3245
3246 @item dumpscale
3247 Set scale for dumpfile. Acceptable values are same with scale option.
3248 Default is linlog.
3249
3250 @item fft2
3251 Enable 2-channel convolution using complex FFT. This improves speed significantly.
3252 Default is disabled.
3253
3254 @item min_phase
3255 Enable minimum phase impulse response. Default is disabled.
3256 @end table
3257
3258 @subsection Examples
3259 @itemize
3260 @item
3261 lowpass at 1000 Hz:
3262 @example
3263 firequalizer=gain='if(lt(f,1000), 0, -INF)'
3264 @end example
3265 @item
3266 lowpass at 1000 Hz with gain_entry:
3267 @example
3268 firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
3269 @end example
3270 @item
3271 custom equalization:
3272 @example
3273 firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
3274 @end example
3275 @item
3276 higher delay with zero phase to compensate delay:
3277 @example
3278 firequalizer=delay=0.1:fixed=on:zero_phase=on
3279 @end example
3280 @item
3281 lowpass on left channel, highpass on right channel:
3282 @example
3283 firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
3284 :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
3285 @end example
3286 @end itemize
3287
3288 @section flanger
3289 Apply a flanging effect to the audio.
3290
3291 The filter accepts the following options:
3292
3293 @table @option
3294 @item delay
3295 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
3296
3297 @item depth
3298 Set added sweep delay in milliseconds. Range from 0 to 10. Default value is 2.
3299
3300 @item regen
3301 Set percentage regeneration (delayed signal feedback). Range from -95 to 95.
3302 Default value is 0.
3303
3304 @item width
3305 Set percentage of delayed signal mixed with original. Range from 0 to 100.
3306 Default value is 71.
3307
3308 @item speed
3309 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
3310
3311 @item shape
3312 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
3313 Default value is @var{sinusoidal}.
3314
3315 @item phase
3316 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
3317 Default value is 25.
3318
3319 @item interp
3320 Set delay-line interpolation, @var{linear} or @var{quadratic}.
3321 Default is @var{linear}.
3322 @end table
3323
3324 @section haas
3325 Apply Haas effect to audio.
3326
3327 Note that this makes most sense to apply on mono signals.
3328 With this filter applied to mono signals it give some directionality and
3329 stretches its stereo image.
3330
3331 The filter accepts the following options:
3332
3333 @table @option
3334 @item level_in
3335 Set input level. By default is @var{1}, or 0dB
3336
3337 @item level_out
3338 Set output level. By default is @var{1}, or 0dB.
3339
3340 @item side_gain
3341 Set gain applied to side part of signal. By default is @var{1}.
3342
3343 @item middle_source
3344 Set kind of middle source. Can be one of the following:
3345
3346 @table @samp
3347 @item left
3348 Pick left channel.
3349
3350 @item right
3351 Pick right channel.
3352
3353 @item mid
3354 Pick middle part signal of stereo image.
3355
3356 @item side
3357 Pick side part signal of stereo image.
3358 @end table
3359
3360 @item middle_phase
3361 Change middle phase. By default is disabled.
3362
3363 @item left_delay
3364 Set left channel delay. By default is @var{2.05} milliseconds.
3365
3366 @item left_balance
3367 Set left channel balance. By default is @var{-1}.
3368
3369 @item left_gain
3370 Set left channel gain. By default is @var{1}.
3371
3372 @item left_phase
3373 Change left phase. By default is disabled.
3374
3375 @item right_delay
3376 Set right channel delay. By defaults is @var{2.12} milliseconds.
3377
3378 @item right_balance
3379 Set right channel balance. By default is @var{1}.
3380
3381 @item right_gain
3382 Set right channel gain. By default is @var{1}.
3383
3384 @item right_phase
3385 Change right phase. By default is enabled.
3386 @end table
3387
3388 @section hdcd
3389
3390 Decodes High Definition Compatible Digital (HDCD) data. A 16-bit PCM stream with
3391 embedded HDCD codes is expanded into a 20-bit PCM stream.
3392
3393 The filter supports the Peak Extend and Low-level Gain Adjustment features
3394 of HDCD, and detects the Transient Filter flag.
3395
3396 @example
3397 ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
3398 @end example
3399
3400 When using the filter with wav, note the default encoding for wav is 16-bit,
3401 so the resulting 20-bit stream will be truncated back to 16-bit. Use something
3402 like @command{-acodec pcm_s24le} after the filter to get 24-bit PCM output.
3403 @example
3404 ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
3405 ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav
3406 @end example
3407
3408 The filter accepts the following options:
3409
3410 @table @option
3411 @item disable_autoconvert
3412 Disable any automatic format conversion or resampling in the filter graph.
3413
3414 @item process_stereo
3415 Process the stereo channels together. If target_gain does not match between
3416 channels, consider it invalid and use the last valid target_gain.
3417
3418 @item cdt_ms
3419 Set the code detect timer period in ms.
3420
3421 @item force_pe
3422 Always extend peaks above -3dBFS even if PE isn't signaled.
3423
3424 @item analyze_mode
3425 Replace audio with a solid tone and adjust the amplitude to signal some
3426 specific aspect of the decoding process. The output file can be loaded in
3427 an audio editor alongside the original to aid analysis.
3428
3429 @code{analyze_mode=pe:force_pe=true} can be used to see all samples above the PE level.
3430
3431 Modes are:
3432 @table @samp
3433 @item 0, off
3434 Disabled
3435 @item 1, lle
3436 Gain adjustment level at each sample
3437 @item 2, pe
3438 Samples where peak extend occurs
3439 @item 3, cdt
3440 Samples where the code detect timer is active
3441 @item 4, tgm
3442 Samples where the target gain does not match between channels
3443 @end table
3444 @end table
3445
3446 @section headphone
3447
3448 Apply head-related transfer functions (HRTFs) to create virtual
3449 loudspeakers around the user for binaural listening via headphones.
3450 The HRIRs are provided via additional streams, for each channel
3451 one stereo input stream is needed.
3452
3453 The filter accepts the following options:
3454
3455 @table @option
3456 @item map
3457 Set mapping of input streams for convolution.
3458 The argument is a '|'-separated list of channel names in order as they
3459 are given as additional stream inputs for filter.
3460 This also specify number of input streams. Number of input streams
3461 must be not less than number of channels in first stream plus one.
3462
3463 @item gain
3464 Set gain applied to audio. Value is in dB. Default is 0.
3465
3466 @item type
3467 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
3468 processing audio in time domain which is slow.
3469 @var{freq} is processing audio in frequency domain which is fast.
3470 Default is @var{freq}.
3471
3472 @item lfe
3473 Set custom gain for LFE channels. Value is in dB. Default is 0.
3474
3475 @item size
3476 Set size of frame in number of samples which will be processed at once.
3477 Default value is @var{1024}. Allowed range is from 1024 to 96000.
3478
3479 @item hrir
3480 Set format of hrir stream.
3481 Default value is @var{stereo}. Alternative value is @var{multich}.
3482 If value is set to @var{stereo}, number of additional streams should
3483 be greater or equal to number of input channels in first input stream.
3484 Also each additional stream should have stereo number of channels.
3485 If value is set to @var{multich}, number of additional streams should
3486 be exactly one. Also number of input channels of additional stream
3487 should be equal or greater than twice number of channels of first input
3488 stream.
3489 @end table
3490
3491 @subsection Examples
3492
3493 @itemize
3494 @item
3495 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
3496 each amovie filter use stereo file with IR coefficients as input.
3497 The files give coefficients for each position of virtual loudspeaker:
3498 @example
3499 ffmpeg -i input.wav -lavfi-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],[a:0][fl][fr][fc][lfe][bl][br][sl][sr]headphone=FL|FR|FC|LFE|BL|BR|SL|SR"
3500 output.wav
3501 @end example
3502
3503 @item
3504 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
3505 but now in @var{multich} @var{hrir} format.
3506 @example
3507 ffmpeg -i input.wav -lavfi-complex "amovie=minp.wav[hrirs],[a:0][hrirs]headphone=map=FL|FR|FC|LFE|BL|BR|SL|SR:hrir=multich"
3508 output.wav
3509 @end example
3510 @end itemize
3511
3512 @section highpass
3513
3514 Apply a high-pass filter with 3dB point frequency.
3515 The filter can be either single-pole, or double-pole (the default).
3516 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
3517
3518 The filter accepts the following options:
3519
3520 @table @option
3521 @item frequency, f
3522 Set frequency in Hz. Default is 3000.
3523
3524 @item poles, p
3525 Set number of poles. Default is 2.
3526
3527 @item width_type, t
3528 Set method to specify band-width of filter.
3529 @table @option
3530 @item h
3531 Hz
3532 @item q
3533 Q-Factor
3534 @item o
3535 octave
3536 @item s
3537 slope
3538 @item k
3539 kHz
3540 @end table
3541
3542 @item width, w
3543 Specify the band-width of a filter in width_type units.
3544 Applies only to double-pole filter.
3545 The default is 0.707q and gives a Butterworth response.
3546
3547 @item channels, c
3548 Specify which channels to filter, by default all available are filtered.
3549 @end table
3550
3551 @subsection Commands
3552
3553 This filter supports the following commands:
3554 @table @option
3555 @item frequency, f
3556 Change highpass frequency.
3557 Syntax for the command is : "@var{frequency}"
3558
3559 @item width_type, t
3560 Change highpass width_type.
3561 Syntax for the command is : "@var{width_type}"
3562
3563 @item width, w
3564 Change highpass width.
3565 Syntax for the command is : "@var{width}"
3566 @end table
3567
3568 @section join
3569
3570 Join multiple input streams into one multi-channel stream.
3571
3572 It accepts the following parameters:
3573 @table @option
3574
3575 @item inputs
3576 The number of input streams. It defaults to 2.
3577
3578 @item channel_layout
3579 The desired output channel layout. It defaults to stereo.
3580
3581 @item map
3582 Map channels from inputs to output. The argument is a '|'-separated list of
3583 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
3584 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
3585 can be either the name of the input channel (e.g. FL for front left) or its
3586 index in the specified input stream. @var{out_channel} is the name of the output
3587 channel.
3588 @end table
3589
3590 The filter will attempt to guess the mappings when they are not specified
3591 explicitly. It does so by first trying to find an unused matching input channel
3592 and if that fails it picks the first unused input channel.
3593
3594 Join 3 inputs (with properly set channel layouts):
3595 @example
3596 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
3597 @end example
3598
3599 Build a 5.1 output from 6 single-channel streams:
3600 @example
3601 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
3602 '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'
3603 out
3604 @end example
3605
3606 @section ladspa
3607
3608 Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
3609
3610 To enable compilation of this filter you need to configure FFmpeg with
3611 @code{--enable-ladspa}.
3612
3613 @table @option
3614 @item file, f
3615 Specifies the name of LADSPA plugin library to load. If the environment
3616 variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
3617 each one of the directories specified by the colon separated list in
3618 @env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
3619 this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
3620 @file{/usr/lib/ladspa/}.
3621
3622 @item plugin, p
3623 Specifies the plugin within the library. Some libraries contain only
3624 one plugin, but others contain many of them. If this is not set filter
3625 will list all available plugins within the specified library.
3626
3627 @item controls, c
3628 Set the '|' separated list of controls which are zero or more floating point
3629 values that determine the behavior of the loaded plugin (for example delay,
3630 threshold or gain).
3631 Controls need to be defined using the following syntax:
3632 c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
3633 @var{valuei} is the value set on the @var{i}-th control.
3634 Alternatively they can be also defined using the following syntax:
3635 @var{value0}|@var{value1}|@var{value2}|..., where
3636 @var{valuei} is the value set on the @var{i}-th control.
3637 If @option{controls} is set to @code{help}, all available controls and
3638 their valid ranges are printed.
3639
3640 @item sample_rate, s
3641 Specify the sample rate, default to 44100. Only used if plugin have
3642 zero inputs.
3643
3644 @item nb_samples, n
3645 Set the number of samples per channel per each output frame, default
3646 is 1024. Only used if plugin have zero inputs.
3647
3648 @item duration, d
3649 Set the minimum duration of the sourced audio. See
3650 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
3651 for the accepted syntax.
3652 Note that the resulting duration may be greater than the specified duration,
3653 as the generated audio is always cut at the end of a complete frame.
3654 If not specified, or the expressed duration is negative, the audio is
3655 supposed to be generated forever.
3656 Only used if plugin have zero inputs.
3657
3658 @end table
3659
3660 @subsection Examples
3661
3662 @itemize
3663 @item
3664 List all available plugins within amp (LADSPA example plugin) library:
3665 @example
3666 ladspa=file=amp
3667 @end example
3668
3669 @item
3670 List all available controls and their valid ranges for @code{vcf_notch}
3671 plugin from @code{VCF} library:
3672 @example
3673 ladspa=f=vcf:p=vcf_notch:c=help
3674 @end example
3675
3676 @item
3677 Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
3678 plugin library:
3679 @example
3680 ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
3681 @end example
3682
3683 @item
3684 Add reverberation to the audio using TAP-plugins
3685 (Tom's Audio Processing plugins):
3686 @example
3687 ladspa=file=tap_reverb:tap_reverb
3688 @end example
3689
3690 @item
3691 Generate white noise, with 0.2 amplitude:
3692 @example
3693 ladspa=file=cmt:noise_source_white:c=c0=.2
3694 @end example
3695
3696 @item
3697 Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
3698 @code{C* Audio Plugin Suite} (CAPS) library:
3699 @example
3700 ladspa=file=caps:Click:c=c1=20'
3701 @end example
3702
3703 @item
3704 Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
3705 @example
3706 ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
3707 @end example
3708
3709 @item
3710 Increase volume by 20dB using fast lookahead limiter from Steve Harris
3711 @code{SWH Plugins} collection:
3712 @example
3713 ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
3714 @end example
3715
3716 @item
3717 Attenuate low frequencies using Multiband EQ from Steve Harris
3718 @code{SWH Plugins} collection:
3719 @example
3720 ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
3721 @end example
3722
3723 @item
3724 Reduce stereo image using @code{Narrower} from the @code{C* Audio Plugin Suite}
3725 (CAPS) library:
3726 @example
3727 ladspa=caps:Narrower
3728 @end example
3729
3730 @item
3731 Another white noise, now using @code{C* Audio Plugin Suite} (CAPS) library:
3732 @example
3733 ladspa=caps:White:.2
3734 @end example
3735
3736 @item
3737 Some fractal noise, using @code{C* Audio Plugin Suite} (CAPS) library:
3738 @example
3739 ladspa=caps:Fractal:c=c1=1
3740 @end example
3741
3742 @item
3743 Dynamic volume normalization using @code{VLevel} plugin:
3744 @example
3745 ladspa=vlevel-ladspa:vlevel_mono
3746 @end example
3747 @end itemize
3748
3749 @subsection Commands
3750
3751 This filter supports the following commands:
3752 @table @option
3753 @item cN
3754 Modify the @var{N}-th control value.
3755
3756 If the specified value is not valid, it is ignored and prior one is kept.
3757 @end table
3758
3759 @section loudnorm
3760
3761 EBU R128 loudness normalization. Includes both dynamic and linear normalization modes.
3762 Support for both single pass (livestreams, files) and double pass (files) modes.
3763 This algorithm can target IL, LRA, and maximum true peak. To accurately detect true peaks,
3764 the audio stream will be upsampled to 192 kHz unless the normalization mode is linear.
3765 Use the @code{-ar} option or @code{aresample} filter to explicitly set an output sample rate.
3766
3767 The filter accepts the following options:
3768
3769 @table @option
3770 @item I, i
3771 Set integrated loudness target.
3772 Range is -70.0 - -5.0. Default value is -24.0.
3773
3774 @item LRA, lra
3775 Set loudness range target.
3776 Range is 1.0 - 20.0. Default value is 7.0.
3777
3778 @item TP, tp
3779 Set maximum true peak.
3780 Range is -9.0 - +0.0. Default value is -2.0.
3781
3782 @item measured_I, measured_i
3783 Measured IL of input file.
3784 Range is -99.0 - +0.0.
3785
3786 @item measured_LRA, measured_lra
3787 Measured LRA of input file.
3788 Range is  0.0 - 99.0.
3789
3790 @item measured_TP, measured_tp
3791 Measured true peak of input file.
3792 Range is  -99.0 - +99.0.
3793
3794 @item measured_thresh
3795 Measured threshold of input file.
3796 Range is -99.0 - +0.0.
3797
3798 @item offset
3799 Set offset gain. Gain is applied before the true-peak limiter.
3800 Range is  -99.0 - +99.0. Default is +0.0.
3801
3802 @item linear
3803 Normalize linearly if possible.
3804 measured_I, measured_LRA, measured_TP, and measured_thresh must also
3805 to be specified in order to use this mode.
3806 Options are true or false. Default is true.
3807
3808 @item dual_mono
3809 Treat mono input files as "dual-mono". If a mono file is intended for playback
3810 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
3811 If set to @code{true}, this option will compensate for this effect.
3812 Multi-channel input files are not affected by this option.
3813 Options are true or false. Default is false.
3814
3815 @item print_format
3816 Set print format for stats. Options are summary, json, or none.
3817 Default value is none.
3818 @end table
3819
3820 @section lowpass
3821
3822 Apply a low-pass filter with 3dB point frequency.
3823 The filter can be either single-pole or double-pole (the default).
3824 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
3825
3826 The filter accepts the following options:
3827
3828 @table @option
3829 @item frequency, f
3830 Set frequency in Hz. Default is 500.
3831
3832 @item poles, p
3833 Set number of poles. Default is 2.
3834
3835 @item width_type, t
3836 Set method to specify band-width of filter.
3837 @table @option
3838 @item h
3839 Hz
3840 @item q
3841 Q-Factor
3842 @item o
3843 octave
3844 @item s
3845 slope
3846 @item k
3847 kHz
3848 @end table
3849
3850 @item width, w
3851 Specify the band-width of a filter in width_type units.
3852 Applies only to double-pole filter.
3853 The default is 0.707q and gives a Butterworth response.
3854
3855 @item channels, c
3856 Specify which channels to filter, by default all available are filtered.
3857 @end table
3858
3859 @subsection Examples
3860 @itemize
3861 @item
3862 Lowpass only LFE channel, it LFE is not present it does nothing:
3863 @example
3864 lowpass=c=LFE
3865 @end example
3866 @end itemize
3867
3868 @subsection Commands
3869
3870 This filter supports the following commands:
3871 @table @option
3872 @item frequency, f
3873 Change lowpass frequency.
3874 Syntax for the command is : "@var{frequency}"
3875
3876 @item width_type, t
3877 Change lowpass width_type.
3878 Syntax for the command is : "@var{width_type}"
3879
3880 @item width, w
3881 Change lowpass width.
3882 Syntax for the command is : "@var{width}"
3883 @end table
3884
3885 @section lv2
3886
3887 Load a LV2 (LADSPA Version 2) plugin.
3888
3889 To enable compilation of this filter you need to configure FFmpeg with
3890 @code{--enable-lv2}.
3891
3892 @table @option
3893 @item plugin, p
3894 Specifies the plugin URI. You may need to escape ':'.
3895
3896 @item controls, c
3897 Set the '|' separated list of controls which are zero or more floating point
3898 values that determine the behavior of the loaded plugin (for example delay,
3899 threshold or gain).
3900 If @option{controls} is set to @code{help}, all available controls and
3901 their valid ranges are printed.
3902
3903 @item sample_rate, s
3904 Specify the sample rate, default to 44100. Only used if plugin have
3905 zero inputs.
3906
3907 @item nb_samples, n
3908 Set the number of samples per channel per each output frame, default
3909 is 1024. Only used if plugin have zero inputs.
3910
3911 @item duration, d
3912 Set the minimum duration of the sourced audio. See
3913 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
3914 for the accepted syntax.
3915 Note that the resulting duration may be greater than the specified duration,
3916 as the generated audio is always cut at the end of a complete frame.
3917 If not specified, or the expressed duration is negative, the audio is
3918 supposed to be generated forever.
3919 Only used if plugin have zero inputs.
3920 @end table
3921
3922 @subsection Examples
3923
3924 @itemize
3925 @item
3926 Apply bass enhancer plugin from Calf:
3927 @example
3928 lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
3929 @end example
3930
3931 @item
3932 Apply vinyl plugin from Calf:
3933 @example
3934 lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
3935 @end example
3936
3937 @item
3938 Apply bit crusher plugin from ArtyFX:
3939 @example
3940 lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
3941 @end example
3942 @end itemize
3943
3944 @section mcompand
3945 Multiband Compress or expand the audio's dynamic range.
3946
3947 The input audio is divided into bands using 4th order Linkwitz-Riley IIRs.
3948 This is akin to the crossover of a loudspeaker, and results in flat frequency
3949 response when absent compander action.
3950
3951 It accepts the following parameters:
3952
3953 @table @option
3954 @item args
3955 This option syntax is:
3956 attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ...
3957 For explanation of each item refer to compand filter documentation.
3958 @end table
3959
3960 @anchor{pan}
3961 @section pan
3962
3963 Mix channels with specific gain levels. The filter accepts the output
3964 channel layout followed by a set of channels definitions.
3965
3966 This filter is also designed to efficiently remap the channels of an audio
3967 stream.
3968
3969 The filter accepts parameters of the form:
3970 "@var{l}|@var{outdef}|@var{outdef}|..."
3971
3972 @table @option
3973 @item l
3974 output channel layout or number of channels
3975
3976 @item outdef
3977 output channel specification, of the form:
3978 "@var{out_name}=[@var{gain}*]@var{in_name}[(+-)[@var{gain}*]@var{in_name}...]"
3979
3980 @item out_name
3981 output channel to define, either a channel name (FL, FR, etc.) or a channel
3982 number (c0, c1, etc.)
3983
3984 @item gain
3985 multiplicative coefficient for the channel, 1 leaving the volume unchanged
3986
3987 @item in_name
3988 input channel to use, see out_name for details; it is not possible to mix
3989 named and numbered input channels
3990 @end table
3991
3992 If the `=' in a channel specification is replaced by `<', then the gains for
3993 that specification will be renormalized so that the total is 1, thus
3994 avoiding clipping noise.
3995
3996 @subsection Mixing examples
3997
3998 For example, if you want to down-mix from stereo to mono, but with a bigger
3999 factor for the left channel:
4000 @example
4001 pan=1c|c0=0.9*c0+0.1*c1
4002 @end example
4003
4004 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
4005 7-channels surround:
4006 @example
4007 pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
4008 @end example
4009
4010 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
4011 that should be preferred (see "-ac" option) unless you have very specific
4012 needs.
4013
4014 @subsection Remapping examples
4015
4016 The channel remapping will be effective if, and only if:
4017
4018 @itemize
4019 @item gain coefficients are zeroes or ones,
4020 @item only one input per channel output,
4021 @end itemize
4022
4023 If all these conditions are satisfied, the filter will notify the user ("Pure
4024 channel mapping detected"), and use an optimized and lossless method to do the
4025 remapping.
4026
4027 For example, if you have a 5.1 source and want a stereo audio stream by
4028 dropping the extra channels:
4029 @example
4030 pan="stereo| c0=FL | c1=FR"
4031 @end example
4032
4033 Given the same source, you can also switch front left and front right channels
4034 and keep the input channel layout:
4035 @example
4036 pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
4037 @end example
4038
4039 If the input is a stereo audio stream, you can mute the front left channel (and
4040 still keep the stereo channel layout) with:
4041 @example
4042 pan="stereo|c1=c1"
4043 @end example
4044
4045 Still with a stereo audio stream input, you can copy the right channel in both
4046 front left and right:
4047 @example
4048 pan="stereo| c0=FR | c1=FR"
4049 @end example
4050
4051 @section replaygain
4052
4053 ReplayGain scanner filter. This filter takes an audio stream as an input and
4054 outputs it unchanged.
4055 At end of filtering it displays @code{track_gain} and @code{track_peak}.
4056
4057 @section resample
4058
4059 Convert the audio sample format, sample rate and channel layout. It is
4060 not meant to be used directly.
4061
4062 @section rubberband
4063 Apply time-stretching and pitch-shifting with librubberband.
4064
4065 To enable compilation of this filter, you need to configure FFmpeg with
4066 @code{--enable-librubberband}.
4067
4068 The filter accepts the following options:
4069
4070 @table @option
4071 @item tempo
4072 Set tempo scale factor.
4073
4074 @item pitch
4075 Set pitch scale factor.
4076
4077 @item transients
4078 Set transients detector.
4079 Possible values are:
4080 @table @var
4081 @item crisp
4082 @item mixed
4083 @item smooth
4084 @end table
4085
4086 @item detector
4087 Set detector.
4088 Possible values are:
4089 @table @var
4090 @item compound
4091 @item percussive
4092 @item soft
4093 @end table
4094
4095 @item phase
4096 Set phase.
4097 Possible values are:
4098 @table @var
4099 @item laminar
4100 @item independent
4101 @end table
4102
4103 @item window
4104 Set processing window size.
4105 Possible values are:
4106 @table @var
4107 @item standard
4108 @item short
4109 @item long
4110 @end table
4111
4112 @item smoothing
4113 Set smoothing.
4114 Possible values are:
4115 @table @var
4116 @item off
4117 @item on
4118 @end table
4119
4120 @item formant
4121 Enable formant preservation when shift pitching.
4122 Possible values are:
4123 @table @var
4124 @item shifted
4125 @item preserved
4126 @end table
4127
4128 @item pitchq
4129 Set pitch quality.
4130 Possible values are:
4131 @table @var
4132 @item quality
4133 @item speed
4134 @item consistency
4135 @end table
4136
4137 @item channels
4138 Set channels.
4139 Possible values are:
4140 @table @var
4141 @item apart
4142 @item together
4143 @end table
4144 @end table
4145
4146 @section sidechaincompress
4147
4148 This filter acts like normal compressor but has the ability to compress
4149 detected signal using second input signal.
4150 It needs two input streams and returns one output stream.
4151 First input stream will be processed depending on second stream signal.
4152 The filtered signal then can be filtered with other filters in later stages of
4153 processing. See @ref{pan} and @ref{amerge} filter.
4154
4155 The filter accepts the following options:
4156
4157 @table @option
4158 @item level_in
4159 Set input gain. Default is 1. Range is between 0.015625 and 64.
4160
4161 @item threshold
4162 If a signal of second stream raises above this level it will affect the gain
4163 reduction of first stream.
4164 By default is 0.125. Range is between 0.00097563 and 1.
4165
4166 @item ratio
4167 Set a ratio about which the signal is reduced. 1:2 means that if the level
4168 raised 4dB above the threshold, it will be only 2dB above after the reduction.
4169 Default is 2. Range is between 1 and 20.
4170
4171 @item attack
4172 Amount of milliseconds the signal has to rise above the threshold before gain
4173 reduction starts. Default is 20. Range is between 0.01 and 2000.
4174
4175 @item release
4176 Amount of milliseconds the signal has to fall below the threshold before
4177 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
4178
4179 @item makeup
4180 Set the amount by how much signal will be amplified after processing.
4181 Default is 1. Range is from 1 to 64.
4182
4183 @item knee
4184 Curve the sharp knee around the threshold to enter gain reduction more softly.
4185 Default is 2.82843. Range is between 1 and 8.
4186
4187 @item link
4188 Choose if the @code{average} level between all channels of side-chain stream
4189 or the louder(@code{maximum}) channel of side-chain stream affects the
4190 reduction. Default is @code{average}.
4191
4192 @item detection
4193 Should the exact signal be taken in case of @code{peak} or an RMS one in case
4194 of @code{rms}. Default is @code{rms} which is mainly smoother.
4195
4196 @item level_sc
4197 Set sidechain gain. Default is 1. Range is between 0.015625 and 64.
4198
4199 @item mix
4200 How much to use compressed signal in output. Default is 1.
4201 Range is between 0 and 1.
4202 @end table
4203
4204 @subsection Examples
4205
4206 @itemize
4207 @item
4208 Full ffmpeg example taking 2 audio inputs, 1st input to be compressed
4209 depending on the signal of 2nd input and later compressed signal to be
4210 merged with 2nd input:
4211 @example
4212 ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
4213 @end example
4214 @end itemize
4215
4216 @section sidechaingate
4217
4218 A sidechain gate acts like a normal (wideband) gate but has the ability to
4219 filter the detected signal before sending it to the gain reduction stage.
4220 Normally a gate uses the full range signal to detect a level above the
4221 threshold.
4222 For example: If you cut all lower frequencies from your sidechain signal
4223 the gate will decrease the volume of your track only if not enough highs
4224 appear. With this technique you are able to reduce the resonation of a
4225 natural drum or remove "rumbling" of muted strokes from a heavily distorted
4226 guitar.
4227 It needs two input streams and returns one output stream.
4228 First input stream will be processed depending on second stream signal.
4229
4230 The filter accepts the following options:
4231
4232 @table @option
4233 @item level_in
4234 Set input level before filtering.
4235 Default is 1. Allowed range is from 0.015625 to 64.
4236
4237 @item range
4238 Set the level of gain reduction when the signal is below the threshold.
4239 Default is 0.06125. Allowed range is from 0 to 1.
4240
4241 @item threshold
4242 If a signal rises above this level the gain reduction is released.
4243 Default is 0.125. Allowed range is from 0 to 1.
4244
4245 @item ratio
4246 Set a ratio about which the signal is reduced.
4247 Default is 2. Allowed range is from 1 to 9000.
4248
4249 @item attack
4250 Amount of milliseconds the signal has to rise above the threshold before gain
4251 reduction stops.
4252 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
4253
4254 @item release
4255 Amount of milliseconds the signal has to fall below the threshold before the
4256 reduction is increased again. Default is 250 milliseconds.
4257 Allowed range is from 0.01 to 9000.
4258
4259 @item makeup
4260 Set amount of amplification of signal after processing.
4261 Default is 1. Allowed range is from 1 to 64.
4262
4263 @item knee
4264 Curve the sharp knee around the threshold to enter gain reduction more softly.
4265 Default is 2.828427125. Allowed range is from 1 to 8.
4266
4267 @item detection
4268 Choose if exact signal should be taken for detection or an RMS like one.
4269 Default is rms. Can be peak or rms.
4270
4271 @item link
4272 Choose if the average level between all channels or the louder channel affects
4273 the reduction.
4274 Default is average. Can be average or maximum.
4275
4276 @item level_sc
4277 Set sidechain gain. Default is 1. Range is from 0.015625 to 64.
4278 @end table
4279
4280 @section silencedetect
4281
4282 Detect silence in an audio stream.
4283
4284 This filter logs a message when it detects that the input audio volume is less
4285 or equal to a noise tolerance value for a duration greater or equal to the
4286 minimum detected noise duration.
4287
4288 The printed times and duration are expressed in seconds.
4289
4290 The filter accepts the following options:
4291
4292 @table @option
4293 @item noise, n
4294 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
4295 specified value) or amplitude ratio. Default is -60dB, or 0.001.
4296
4297 @item duration, d
4298 Set silence duration until notification (default is 2 seconds).
4299
4300 @item mono, m
4301 Process each channel separately, instead of combined. By default is disabled.
4302 @end table
4303
4304 @subsection Examples
4305
4306 @itemize
4307 @item
4308 Detect 5 seconds of silence with -50dB noise tolerance:
4309 @example
4310 silencedetect=n=-50dB:d=5
4311 @end example
4312
4313 @item
4314 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
4315 tolerance in @file{silence.mp3}:
4316 @example
4317 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
4318 @end example
4319 @end itemize
4320
4321 @section silenceremove
4322
4323 Remove silence from the beginning, middle or end of the audio.
4324
4325 The filter accepts the following options:
4326
4327 @table @option
4328 @item start_periods
4329 This value is used to indicate if audio should be trimmed at beginning of
4330 the audio. A value of zero indicates no silence should be trimmed from the
4331 beginning. When specifying a non-zero value, it trims audio up until it
4332 finds non-silence. Normally, when trimming silence from beginning of audio
4333 the @var{start_periods} will be @code{1} but it can be increased to higher
4334 values to trim all audio up to specific count of non-silence periods.
4335 Default value is @code{0}.
4336
4337 @item start_duration
4338 Specify the amount of time that non-silence must be detected before it stops
4339 trimming audio. By increasing the duration, bursts of noises can be treated
4340 as silence and trimmed off. Default value is @code{0}.
4341
4342 @item start_threshold
4343 This indicates what sample value should be treated as silence. For digital
4344 audio, a value of @code{0} may be fine but for audio recorded from analog,
4345 you may wish to increase the value to account for background noise.
4346 Can be specified in dB (in case "dB" is appended to the specified value)
4347 or amplitude ratio. Default value is @code{0}.
4348
4349 @item start_silence
4350 Specify max duration of silence at beginning that will be kept after
4351 trimming. Default is 0, which is equal to trimming all samples detected
4352 as silence.
4353
4354 @item start_mode
4355 Specify mode of detection of silence end in start of multi-channel audio.
4356 Can be @var{any} or @var{all}. Default is @var{any}.
4357 With @var{any}, any sample that is detected as non-silence will cause
4358 stopped trimming of silence.
4359 With @var{all}, only if all channels are detected as non-silence will cause
4360 stopped trimming of silence.
4361
4362 @item stop_periods
4363 Set the count for trimming silence from the end of audio.
4364 To remove silence from the middle of a file, specify a @var{stop_periods}
4365 that is negative. This value is then treated as a positive value and is
4366 used to indicate the effect should restart processing as specified by
4367 @var{start_periods}, making it suitable for removing periods of silence
4368 in the middle of the audio.
4369 Default value is @code{0}.
4370
4371 @item stop_duration
4372 Specify a duration of silence that must exist before audio is not copied any
4373 more. By specifying a higher duration, silence that is wanted can be left in
4374 the audio.
4375 Default value is @code{0}.
4376
4377 @item stop_threshold
4378 This is the same as @option{start_threshold} but for trimming silence from
4379 the end of audio.
4380 Can be specified in dB (in case "dB" is appended to the specified value)
4381 or amplitude ratio. Default value is @code{0}.
4382
4383 @item stop_silence
4384 Specify max duration of silence at end that will be kept after
4385 trimming. Default is 0, which is equal to trimming all samples detected
4386 as silence.
4387
4388 @item stop_mode
4389 Specify mode of detection of silence start in end of multi-channel audio.
4390 Can be @var{any} or @var{all}. Default is @var{any}.
4391 With @var{any}, any sample that is detected as non-silence will cause
4392 stopped trimming of silence.
4393 With @var{all}, only if all channels are detected as non-silence will cause
4394 stopped trimming of silence.
4395
4396 @item detection
4397 Set how is silence detected. Can be @code{rms} or @code{peak}. Second is faster
4398 and works better with digital silence which is exactly 0.
4399 Default value is @code{rms}.
4400
4401 @item window
4402 Set duration in number of seconds used to calculate size of window in number
4403 of samples for detecting silence.
4404 Default value is @code{0.02}. Allowed range is from @code{0} to @code{10}.
4405 @end table
4406
4407 @subsection Examples
4408
4409 @itemize
4410 @item
4411 The following example shows how this filter can be used to start a recording
4412 that does not contain the delay at the start which usually occurs between
4413 pressing the record button and the start of the performance:
4414 @example
4415 silenceremove=start_periods=1:start_duration=5:start_threshold=0.02
4416 @end example
4417
4418 @item
4419 Trim all silence encountered from beginning to end where there is more than 1
4420 second of silence in audio:
4421 @example
4422 silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB
4423 @end example
4424 @end itemize
4425
4426 @section sofalizer
4427
4428 SOFAlizer uses head-related transfer functions (HRTFs) to create virtual
4429 loudspeakers around the user for binaural listening via headphones (audio
4430 formats up to 9 channels supported).
4431 The HRTFs are stored in SOFA files (see @url{http://www.sofacoustics.org/} for a database).
4432 SOFAlizer is developed at the Acoustics Research Institute (ARI) of the
4433 Austrian Academy of Sciences.
4434
4435 To enable compilation of this filter you need to configure FFmpeg with
4436 @code{--enable-libmysofa}.
4437
4438 The filter accepts the following options:
4439
4440 @table @option
4441 @item sofa
4442 Set the SOFA file used for rendering.
4443
4444 @item gain
4445 Set gain applied to audio. Value is in dB. Default is 0.
4446
4447 @item rotation
4448 Set rotation of virtual loudspeakers in deg. Default is 0.
4449
4450 @item elevation
4451 Set elevation of virtual speakers in deg. Default is 0.
4452
4453 @item radius
4454 Set distance in meters between loudspeakers and the listener with near-field
4455 HRTFs. Default is 1.
4456
4457 @item type
4458 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
4459 processing audio in time domain which is slow.
4460 @var{freq} is processing audio in frequency domain which is fast.
4461 Default is @var{freq}.
4462
4463 @item speakers
4464 Set custom positions of virtual loudspeakers. Syntax for this option is:
4465 <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...].
4466 Each virtual loudspeaker is described with short channel name following with
4467 azimuth and elevation in degrees.
4468 Each virtual loudspeaker description is separated by '|'.
4469 For example to override front left and front right channel positions use:
4470 'speakers=FL 45 15|FR 345 15'.
4471 Descriptions with unrecognised channel names are ignored.
4472
4473 @item lfegain
4474 Set custom gain for LFE channels. Value is in dB. Default is 0.
4475 @end table
4476
4477 @subsection Examples
4478
4479 @itemize
4480 @item
4481 Using ClubFritz6 sofa file:
4482 @example
4483 sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
4484 @end example
4485
4486 @item
4487 Using ClubFritz12 sofa file and bigger radius with small rotation:
4488 @example
4489 sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
4490 @end example
4491
4492 @item
4493 Similar as above but with custom speaker positions for front left, front right, back left and back right
4494 and also with custom gain:
4495 @example
4496 "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
4497 @end example
4498 @end itemize
4499
4500 @section stereotools
4501
4502 This filter has some handy utilities to manage stereo signals, for converting
4503 M/S stereo recordings to L/R signal while having control over the parameters
4504 or spreading the stereo image of master track.
4505
4506 The filter accepts the following options:
4507
4508 @table @option
4509 @item level_in
4510 Set input level before filtering for both channels. Defaults is 1.
4511 Allowed range is from 0.015625 to 64.
4512
4513 @item level_out
4514 Set output level after filtering for both channels. Defaults is 1.
4515 Allowed range is from 0.015625 to 64.
4516
4517 @item balance_in
4518 Set input balance between both channels. Default is 0.
4519 Allowed range is from -1 to 1.
4520
4521 @item balance_out
4522 Set output balance between both channels. Default is 0.
4523 Allowed range is from -1 to 1.
4524
4525 @item softclip
4526 Enable softclipping. Results in analog distortion instead of harsh digital 0dB
4527 clipping. Disabled by default.
4528
4529 @item mutel
4530 Mute the left channel. Disabled by default.
4531
4532 @item muter
4533 Mute the right channel. Disabled by default.
4534
4535 @item phasel
4536 Change the phase of the left channel. Disabled by default.
4537
4538 @item phaser
4539 Change the phase of the right channel. Disabled by default.
4540
4541 @item mode
4542 Set stereo mode. Available values are:
4543
4544 @table @samp
4545 @item lr>lr
4546 Left/Right to Left/Right, this is default.
4547
4548 @item lr>ms
4549 Left/Right to Mid/Side.
4550
4551 @item ms>lr
4552 Mid/Side to Left/Right.
4553
4554 @item lr>ll
4555 Left/Right to Left/Left.
4556
4557 @item lr>rr
4558 Left/Right to Right/Right.
4559
4560 @item lr>l+r
4561 Left/Right to Left + Right.
4562
4563 @item lr>rl
4564 Left/Right to Right/Left.
4565
4566 @item ms>ll
4567 Mid/Side to Left/Left.
4568
4569 @item ms>rr
4570 Mid/Side to Right/Right.
4571 @end table
4572
4573 @item slev
4574 Set level of side signal. Default is 1.
4575 Allowed range is from 0.015625 to 64.
4576
4577 @item sbal
4578 Set balance of side signal. Default is 0.
4579 Allowed range is from -1 to 1.
4580
4581 @item mlev
4582 Set level of the middle signal. Default is 1.
4583 Allowed range is from 0.015625 to 64.
4584
4585 @item mpan
4586 Set middle signal pan. Default is 0. Allowed range is from -1 to 1.
4587
4588 @item base
4589 Set stereo base between mono and inversed channels. Default is 0.
4590 Allowed range is from -1 to 1.
4591
4592 @item delay
4593 Set delay in milliseconds how much to delay left from right channel and
4594 vice versa. Default is 0. Allowed range is from -20 to 20.
4595
4596 @item sclevel
4597 Set S/C level. Default is 1. Allowed range is from 1 to 100.
4598
4599 @item phase
4600 Set the stereo phase in degrees. Default is 0. Allowed range is from 0 to 360.
4601
4602 @item bmode_in, bmode_out
4603 Set balance mode for balance_in/balance_out option.
4604
4605 Can be one of the following:
4606
4607 @table @samp
4608 @item balance
4609 Classic balance mode. Attenuate one channel at time.
4610 Gain is raised up to 1.
4611
4612 @item amplitude
4613 Similar as classic mode above but gain is raised up to 2.
4614
4615 @item power
4616 Equal power distribution, from -6dB to +6dB range.
4617 @end table
4618 @end table
4619
4620 @subsection Examples
4621
4622 @itemize
4623 @item
4624 Apply karaoke like effect:
4625 @example
4626 stereotools=mlev=0.015625
4627 @end example
4628
4629 @item
4630 Convert M/S signal to L/R:
4631 @example
4632 "stereotools=mode=ms>lr"
4633 @end example
4634 @end itemize
4635
4636 @section stereowiden
4637
4638 This filter enhance the stereo effect by suppressing signal common to both
4639 channels and by delaying the signal of left into right and vice versa,
4640 thereby widening the stereo effect.
4641
4642 The filter accepts the following options:
4643
4644 @table @option
4645 @item delay
4646 Time in milliseconds of the delay of left signal into right and vice versa.
4647 Default is 20 milliseconds.
4648
4649 @item feedback
4650 Amount of gain in delayed signal into right and vice versa. Gives a delay
4651 effect of left signal in right output and vice versa which gives widening
4652 effect. Default is 0.3.
4653
4654 @item crossfeed
4655 Cross feed of left into right with inverted phase. This helps in suppressing
4656 the mono. If the value is 1 it will cancel all the signal common to both
4657 channels. Default is 0.3.
4658
4659 @item drymix
4660 Set level of input signal of original channel. Default is 0.8.
4661 @end table
4662
4663 @section superequalizer
4664 Apply 18 band equalizer.
4665
4666 The filter accepts the following options:
4667 @table @option
4668 @item 1b
4669 Set 65Hz band gain.
4670 @item 2b
4671 Set 92Hz band gain.
4672 @item 3b
4673 Set 131Hz band gain.
4674 @item 4b
4675 Set 185Hz band gain.
4676 @item 5b
4677 Set 262Hz band gain.
4678 @item 6b
4679 Set 370Hz band gain.
4680 @item 7b
4681 Set 523Hz band gain.
4682 @item 8b
4683 Set 740Hz band gain.
4684 @item 9b
4685 Set 1047Hz band gain.
4686 @item 10b
4687 Set 1480Hz band gain.
4688 @item 11b
4689 Set 2093Hz band gain.
4690 @item 12b
4691 Set 2960Hz band gain.
4692 @item 13b
4693 Set 4186Hz band gain.
4694 @item 14b
4695 Set 5920Hz band gain.
4696 @item 15b
4697 Set 8372Hz band gain.
4698 @item 16b
4699 Set 11840Hz band gain.
4700 @item 17b
4701 Set 16744Hz band gain.
4702 @item 18b
4703 Set 20000Hz band gain.
4704 @end table
4705
4706 @section surround
4707 Apply audio surround upmix filter.
4708
4709 This filter allows to produce multichannel output from audio stream.
4710
4711 The filter accepts the following options:
4712
4713 @table @option
4714 @item chl_out
4715 Set output channel layout. By default, this is @var{5.1}.
4716
4717 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4718 for the required syntax.
4719
4720 @item chl_in
4721 Set input channel layout. By default, this is @var{stereo}.
4722
4723 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4724 for the required syntax.
4725
4726 @item level_in
4727 Set input volume level. By default, this is @var{1}.
4728
4729 @item level_out
4730 Set output volume level. By default, this is @var{1}.
4731
4732 @item lfe
4733 Enable LFE channel output if output channel layout has it. By default, this is enabled.
4734
4735 @item lfe_low
4736 Set LFE low cut off frequency. By default, this is @var{128} Hz.
4737
4738 @item lfe_high
4739 Set LFE high cut off frequency. By default, this is @var{256} Hz.
4740
4741 @item fc_in
4742 Set front center input volume. By default, this is @var{1}.
4743
4744 @item fc_out
4745 Set front center output volume. By default, this is @var{1}.
4746
4747 @item lfe_in
4748 Set LFE input volume. By default, this is @var{1}.
4749
4750 @item lfe_out
4751 Set LFE output volume. By default, this is @var{1}.
4752 @end table
4753
4754 @section treble, highshelf
4755
4756 Boost or cut treble (upper) frequencies of the audio using a two-pole
4757 shelving filter with a response similar to that of a standard
4758 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
4759
4760 The filter accepts the following options:
4761
4762 @table @option
4763 @item gain, g
4764 Give the gain at whichever is the lower of ~22 kHz and the
4765 Nyquist frequency. Its useful range is about -20 (for a large cut)
4766 to +20 (for a large boost). Beware of clipping when using a positive gain.
4767
4768 @item frequency, f
4769 Set the filter's central frequency and so can be used
4770 to extend or reduce the frequency range to be boosted or cut.
4771 The default value is @code{3000} Hz.
4772
4773 @item width_type, t
4774 Set method to specify band-width of filter.
4775 @table @option
4776 @item h
4777 Hz
4778 @item q
4779 Q-Factor
4780 @item o
4781 octave
4782 @item s
4783 slope
4784 @item k
4785 kHz
4786 @end table
4787
4788 @item width, w
4789 Determine how steep is the filter's shelf transition.
4790
4791 @item channels, c
4792 Specify which channels to filter, by default all available are filtered.
4793 @end table
4794
4795 @subsection Commands
4796
4797 This filter supports the following commands:
4798 @table @option
4799 @item frequency, f
4800 Change treble frequency.
4801 Syntax for the command is : "@var{frequency}"
4802
4803 @item width_type, t
4804 Change treble width_type.
4805 Syntax for the command is : "@var{width_type}"
4806
4807 @item width, w
4808 Change treble width.
4809 Syntax for the command is : "@var{width}"
4810
4811 @item gain, g
4812 Change treble gain.
4813 Syntax for the command is : "@var{gain}"
4814 @end table
4815
4816 @section tremolo
4817
4818 Sinusoidal amplitude modulation.
4819
4820 The filter accepts the following options:
4821
4822 @table @option
4823 @item f
4824 Modulation frequency in Hertz. Modulation frequencies in the subharmonic range
4825 (20 Hz or lower) will result in a tremolo effect.
4826 This filter may also be used as a ring modulator by specifying
4827 a modulation frequency higher than 20 Hz.
4828 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
4829
4830 @item d
4831 Depth of modulation as a percentage. Range is 0.0 - 1.0.
4832 Default value is 0.5.
4833 @end table
4834
4835 @section vibrato
4836
4837 Sinusoidal phase modulation.
4838
4839 The filter accepts the following options:
4840
4841 @table @option
4842 @item f
4843 Modulation frequency in Hertz.
4844 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
4845
4846 @item d
4847 Depth of modulation as a percentage. Range is 0.0 - 1.0.
4848 Default value is 0.5.
4849 @end table
4850
4851 @section volume
4852
4853 Adjust the input audio volume.
4854
4855 It accepts the following parameters:
4856 @table @option
4857
4858 @item volume
4859 Set audio volume expression.
4860
4861 Output values are clipped to the maximum value.
4862
4863 The output audio volume is given by the relation:
4864 @example
4865 @var{output_volume} = @var{volume} * @var{input_volume}
4866 @end example
4867
4868 The default value for @var{volume} is "1.0".
4869
4870 @item precision
4871 This parameter represents the mathematical precision.
4872
4873 It determines which input sample formats will be allowed, which affects the
4874 precision of the volume scaling.
4875
4876 @table @option
4877 @item fixed
4878 8-bit fixed-point; this limits input sample format to U8, S16, and S32.
4879 @item float
4880 32-bit floating-point; this limits input sample format to FLT. (default)
4881 @item double
4882 64-bit floating-point; this limits input sample format to DBL.
4883 @end table
4884
4885 @item replaygain
4886 Choose the behaviour on encountering ReplayGain side data in input frames.
4887
4888 @table @option
4889 @item drop
4890 Remove ReplayGain side data, ignoring its contents (the default).
4891
4892 @item ignore
4893 Ignore ReplayGain side data, but leave it in the frame.
4894
4895 @item track
4896 Prefer the track gain, if present.
4897
4898 @item album
4899 Prefer the album gain, if present.
4900 @end table
4901
4902 @item replaygain_preamp
4903 Pre-amplification gain in dB to apply to the selected replaygain gain.
4904
4905 Default value for @var{replaygain_preamp} is 0.0.
4906
4907 @item eval
4908 Set when the volume expression is evaluated.
4909
4910 It accepts the following values:
4911 @table @samp
4912 @item once
4913 only evaluate expression once during the filter initialization, or
4914 when the @samp{volume} command is sent
4915
4916 @item frame
4917 evaluate expression for each incoming frame
4918 @end table
4919
4920 Default value is @samp{once}.
4921 @end table
4922
4923 The volume expression can contain the following parameters.
4924
4925 @table @option
4926 @item n
4927 frame number (starting at zero)
4928 @item nb_channels
4929 number of channels
4930 @item nb_consumed_samples
4931 number of samples consumed by the filter
4932 @item nb_samples
4933 number of samples in the current frame
4934 @item pos
4935 original frame position in the file
4936 @item pts
4937 frame PTS
4938 @item sample_rate
4939 sample rate
4940 @item startpts
4941 PTS at start of stream
4942 @item startt
4943 time at start of stream
4944 @item t
4945 frame time
4946 @item tb
4947 timestamp timebase
4948 @item volume
4949 last set volume value
4950 @end table
4951
4952 Note that when @option{eval} is set to @samp{once} only the
4953 @var{sample_rate} and @var{tb} variables are available, all other
4954 variables will evaluate to NAN.
4955
4956 @subsection Commands
4957
4958 This filter supports the following commands:
4959 @table @option
4960 @item volume
4961 Modify the volume expression.
4962 The command accepts the same syntax of the corresponding option.
4963
4964 If the specified expression is not valid, it is kept at its current
4965 value.
4966 @item replaygain_noclip
4967 Prevent clipping by limiting the gain applied.
4968
4969 Default value for @var{replaygain_noclip} is 1.
4970
4971 @end table
4972
4973 @subsection Examples
4974
4975 @itemize
4976 @item
4977 Halve the input audio volume:
4978 @example
4979 volume=volume=0.5
4980 volume=volume=1/2
4981 volume=volume=-6.0206dB
4982 @end example
4983
4984 In all the above example the named key for @option{volume} can be
4985 omitted, for example like in:
4986 @example
4987 volume=0.5
4988 @end example
4989
4990 @item
4991 Increase input audio power by 6 decibels using fixed-point precision:
4992 @example
4993 volume=volume=6dB:precision=fixed
4994 @end example
4995
4996 @item
4997 Fade volume after time 10 with an annihilation period of 5 seconds:
4998 @example
4999 volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
5000 @end example
5001 @end itemize
5002
5003 @section volumedetect
5004
5005 Detect the volume of the input video.
5006
5007 The filter has no parameters. The input is not modified. Statistics about
5008 the volume will be printed in the log when the input stream end is reached.
5009
5010 In particular it will show the mean volume (root mean square), maximum
5011 volume (on a per-sample basis), and the beginning of a histogram of the
5012 registered volume values (from the maximum value to a cumulated 1/1000 of
5013 the samples).
5014
5015 All volumes are in decibels relative to the maximum PCM value.
5016
5017 @subsection Examples
5018
5019 Here is an excerpt of the output:
5020 @example
5021 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
5022 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
5023 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
5024 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
5025 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
5026 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
5027 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
5028 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
5029 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
5030 @end example
5031
5032 It means that:
5033 @itemize
5034 @item
5035 The mean square energy is approximately -27 dB, or 10^-2.7.
5036 @item
5037 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
5038 @item
5039 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
5040 @end itemize
5041
5042 In other words, raising the volume by +4 dB does not cause any clipping,
5043 raising it by +5 dB causes clipping for 6 samples, etc.
5044
5045 @c man end AUDIO FILTERS
5046
5047 @chapter Audio Sources
5048 @c man begin AUDIO SOURCES
5049
5050 Below is a description of the currently available audio sources.
5051
5052 @section abuffer
5053
5054 Buffer audio frames, and make them available to the filter chain.
5055
5056 This source is mainly intended for a programmatic use, in particular
5057 through the interface defined in @file{libavfilter/asrc_abuffer.h}.
5058
5059 It accepts the following parameters:
5060 @table @option
5061
5062 @item time_base
5063 The timebase which will be used for timestamps of submitted frames. It must be
5064 either a floating-point number or in @var{numerator}/@var{denominator} form.
5065
5066 @item sample_rate
5067 The sample rate of the incoming audio buffers.
5068
5069 @item sample_fmt
5070 The sample format of the incoming audio buffers.
5071 Either a sample format name or its corresponding integer representation from
5072 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
5073
5074 @item channel_layout
5075 The channel layout of the incoming audio buffers.
5076 Either a channel layout name from channel_layout_map in
5077 @file{libavutil/channel_layout.c} or its corresponding integer representation
5078 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
5079
5080 @item channels
5081 The number of channels of the incoming audio buffers.
5082 If both @var{channels} and @var{channel_layout} are specified, then they
5083 must be consistent.
5084
5085 @end table
5086
5087 @subsection Examples
5088
5089 @example
5090 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
5091 @end example
5092
5093 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
5094 Since the sample format with name "s16p" corresponds to the number
5095 6 and the "stereo" channel layout corresponds to the value 0x3, this is
5096 equivalent to:
5097 @example
5098 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
5099 @end example
5100
5101 @section aevalsrc
5102
5103 Generate an audio signal specified by an expression.
5104
5105 This source accepts in input one or more expressions (one for each
5106 channel), which are evaluated and used to generate a corresponding
5107 audio signal.
5108
5109 This source accepts the following options:
5110
5111 @table @option
5112 @item exprs
5113 Set the '|'-separated expressions list for each separate channel. In case the
5114 @option{channel_layout} option is not specified, the selected channel layout
5115 depends on the number of provided expressions. Otherwise the last
5116 specified expression is applied to the remaining output channels.
5117
5118 @item channel_layout, c
5119 Set the channel layout. The number of channels in the specified layout
5120 must be equal to the number of specified expressions.
5121
5122 @item duration, d
5123 Set the minimum duration of the sourced audio. See
5124 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5125 for the accepted syntax.
5126 Note that the resulting duration may be greater than the specified
5127 duration, as the generated audio is always cut at the end of a
5128 complete frame.
5129
5130 If not specified, or the expressed duration is negative, the audio is
5131 supposed to be generated forever.
5132
5133 @item nb_samples, n
5134 Set the number of samples per channel per each output frame,
5135 default to 1024.
5136
5137 @item sample_rate, s
5138 Specify the sample rate, default to 44100.
5139 @end table
5140
5141 Each expression in @var{exprs} can contain the following constants:
5142
5143 @table @option
5144 @item n
5145 number of the evaluated sample, starting from 0
5146
5147 @item t
5148 time of the evaluated sample expressed in seconds, starting from 0
5149
5150 @item s
5151 sample rate
5152
5153 @end table
5154
5155 @subsection Examples
5156
5157 @itemize
5158 @item
5159 Generate silence:
5160 @example
5161 aevalsrc=0
5162 @end example
5163
5164 @item
5165 Generate a sin signal with frequency of 440 Hz, set sample rate to
5166 8000 Hz:
5167 @example
5168 aevalsrc="sin(440*2*PI*t):s=8000"
5169 @end example
5170
5171 @item
5172 Generate a two channels signal, specify the channel layout (Front
5173 Center + Back Center) explicitly:
5174 @example
5175 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
5176 @end example
5177
5178 @item
5179 Generate white noise:
5180 @example
5181 aevalsrc="-2+random(0)"
5182 @end example
5183
5184 @item
5185 Generate an amplitude modulated signal:
5186 @example
5187 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
5188 @end example
5189
5190 @item
5191 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
5192 @example
5193 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
5194 @end example
5195
5196 @end itemize
5197
5198 @section anullsrc
5199
5200 The null audio source, return unprocessed audio frames. It is mainly useful
5201 as a template and to be employed in analysis / debugging tools, or as
5202 the source for filters which ignore the input data (for example the sox
5203 synth filter).
5204
5205 This source accepts the following options:
5206
5207 @table @option
5208
5209 @item channel_layout, cl
5210
5211 Specifies the channel layout, and can be either an integer or a string
5212 representing a channel layout. The default value of @var{channel_layout}
5213 is "stereo".
5214
5215 Check the channel_layout_map definition in
5216 @file{libavutil/channel_layout.c} for the mapping between strings and
5217 channel layout values.
5218
5219 @item sample_rate, r
5220 Specifies the sample rate, and defaults to 44100.
5221
5222 @item nb_samples, n
5223 Set the number of samples per requested frames.
5224
5225 @end table
5226
5227 @subsection Examples
5228
5229 @itemize
5230 @item
5231 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
5232 @example
5233 anullsrc=r=48000:cl=4
5234 @end example
5235
5236 @item
5237 Do the same operation with a more obvious syntax:
5238 @example
5239 anullsrc=r=48000:cl=mono
5240 @end example
5241 @end itemize
5242
5243 All the parameters need to be explicitly defined.
5244
5245 @section flite
5246
5247 Synthesize a voice utterance using the libflite library.
5248
5249 To enable compilation of this filter you need to configure FFmpeg with
5250 @code{--enable-libflite}.
5251
5252 Note that versions of the flite library prior to 2.0 are not thread-safe.
5253
5254 The filter accepts the following options:
5255
5256 @table @option
5257
5258 @item list_voices
5259 If set to 1, list the names of the available voices and exit
5260 immediately. Default value is 0.
5261
5262 @item nb_samples, n
5263 Set the maximum number of samples per frame. Default value is 512.
5264
5265 @item textfile
5266 Set the filename containing the text to speak.
5267
5268 @item text
5269 Set the text to speak.
5270
5271 @item voice, v
5272 Set the voice to use for the speech synthesis. Default value is
5273 @code{kal}. See also the @var{list_voices} option.
5274 @end table
5275
5276 @subsection Examples
5277
5278 @itemize
5279 @item
5280 Read from file @file{speech.txt}, and synthesize the text using the
5281 standard flite voice:
5282 @example
5283 flite=textfile=speech.txt
5284 @end example
5285
5286 @item
5287 Read the specified text selecting the @code{slt} voice:
5288 @example
5289 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
5290 @end example
5291
5292 @item
5293 Input text to ffmpeg:
5294 @example
5295 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
5296 @end example
5297
5298 @item
5299 Make @file{ffplay} speak the specified text, using @code{flite} and
5300 the @code{lavfi} device:
5301 @example
5302 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
5303 @end example
5304 @end itemize
5305
5306 For more information about libflite, check:
5307 @url{http://www.festvox.org/flite/}
5308
5309 @section anoisesrc
5310
5311 Generate a noise audio signal.
5312
5313 The filter accepts the following options:
5314
5315 @table @option
5316 @item sample_rate, r
5317 Specify the sample rate. Default value is 48000 Hz.
5318
5319 @item amplitude, a
5320 Specify the amplitude (0.0 - 1.0) of the generated audio stream. Default value
5321 is 1.0.
5322
5323 @item duration, d
5324 Specify the duration of the generated audio stream. Not specifying this option
5325 results in noise with an infinite length.
5326
5327 @item color, colour, c
5328 Specify the color of noise. Available noise colors are white, pink, brown,
5329 blue and violet. Default color is white.
5330
5331 @item seed, s
5332 Specify a value used to seed the PRNG.
5333
5334 @item nb_samples, n
5335 Set the number of samples per each output frame, default is 1024.
5336 @end table
5337
5338 @subsection Examples
5339
5340 @itemize
5341
5342 @item
5343 Generate 60 seconds of pink noise, with a 44.1 kHz sampling rate and an amplitude of 0.5:
5344 @example
5345 anoisesrc=d=60:c=pink:r=44100:a=0.5
5346 @end example
5347 @end itemize
5348
5349 @section hilbert
5350
5351 Generate odd-tap Hilbert transform FIR coefficients.
5352
5353 The resulting stream can be used with @ref{afir} filter for phase-shifting
5354 the signal by 90 degrees.
5355
5356 This is used in many matrix coding schemes and for analytic signal generation.
5357 The process is often written as a multiplication by i (or j), the imaginary unit.
5358
5359 The filter accepts the following options:
5360
5361 @table @option
5362
5363 @item sample_rate, s
5364 Set sample rate, default is 44100.
5365
5366 @item taps, t
5367 Set length of FIR filter, default is 22051.
5368
5369 @item nb_samples, n
5370 Set number of samples per each frame.
5371
5372 @item win_func, w
5373 Set window function to be used when generating FIR coefficients.
5374 @end table
5375
5376 @section sinc
5377
5378 Generate a sinc kaiser-windowed low-pass, high-pass, band-pass, or band-reject FIR coefficients.
5379
5380 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
5381
5382 The filter accepts the following options:
5383
5384 @table @option
5385 @item sample_rate, r
5386 Set sample rate, default is 44100.
5387
5388 @item nb_samples, n
5389 Set number of samples per each frame. Default is 1024.
5390
5391 @item hp
5392 Set high-pass frequency. Default is 0.
5393
5394 @item lp
5395 Set low-pass frequency. Default is 0.
5396 If high-pass frequency is lower than low-pass frequency and low-pass frequency
5397 is higher than 0 then filter will create band-pass filter coefficients,
5398 otherwise band-reject filter coefficients.
5399
5400 @item phase
5401 Set filter phase response. Default is 50. Allowed range is from 0 to 100.
5402
5403 @item beta
5404 Set Kaiser window beta.
5405
5406 @item att
5407 Set stop-band attenuation. Default is 120dB, allowed range is from 40 to 180 dB.
5408
5409 @item round
5410 Enable rounding, by default is disabled.
5411
5412 @item hptaps
5413 Set number of taps for high-pass filter.
5414
5415 @item lptaps
5416 Set number of taps for low-pass filter.
5417 @end table
5418
5419 @section sine
5420
5421 Generate an audio signal made of a sine wave with amplitude 1/8.
5422
5423 The audio signal is bit-exact.
5424
5425 The filter accepts the following options:
5426
5427 @table @option
5428
5429 @item frequency, f
5430 Set the carrier frequency. Default is 440 Hz.
5431
5432 @item beep_factor, b
5433 Enable a periodic beep every second with frequency @var{beep_factor} times
5434 the carrier frequency. Default is 0, meaning the beep is disabled.
5435
5436 @item sample_rate, r
5437 Specify the sample rate, default is 44100.
5438
5439 @item duration, d
5440 Specify the duration of the generated audio stream.
5441
5442 @item samples_per_frame
5443 Set the number of samples per output frame.
5444
5445 The expression can contain the following constants:
5446
5447 @table @option
5448 @item n
5449 The (sequential) number of the output audio frame, starting from 0.
5450
5451 @item pts
5452 The PTS (Presentation TimeStamp) of the output audio frame,
5453 expressed in @var{TB} units.
5454
5455 @item t
5456 The PTS of the output audio frame, expressed in seconds.
5457
5458 @item TB
5459 The timebase of the output audio frames.
5460 @end table
5461
5462 Default is @code{1024}.
5463 @end table
5464
5465 @subsection Examples
5466
5467 @itemize
5468
5469 @item
5470 Generate a simple 440 Hz sine wave:
5471 @example
5472 sine
5473 @end example
5474
5475 @item
5476 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
5477 @example
5478 sine=220:4:d=5
5479 sine=f=220:b=4:d=5
5480 sine=frequency=220:beep_factor=4:duration=5
5481 @end example
5482
5483 @item
5484 Generate a 1 kHz sine wave following @code{1602,1601,1602,1601,1602} NTSC
5485 pattern:
5486 @example
5487 sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
5488 @end example
5489 @end itemize
5490
5491 @c man end AUDIO SOURCES
5492
5493 @chapter Audio Sinks
5494 @c man begin AUDIO SINKS
5495
5496 Below is a description of the currently available audio sinks.
5497
5498 @section abuffersink
5499
5500 Buffer audio frames, and make them available to the end of filter chain.
5501
5502 This sink is mainly intended for programmatic use, in particular
5503 through the interface defined in @file{libavfilter/buffersink.h}
5504 or the options system.
5505
5506 It accepts a pointer to an AVABufferSinkContext structure, which
5507 defines the incoming buffers' formats, to be passed as the opaque
5508 parameter to @code{avfilter_init_filter} for initialization.
5509 @section anullsink
5510
5511 Null audio sink; do absolutely nothing with the input audio. It is
5512 mainly useful as a template and for use in analysis / debugging
5513 tools.
5514
5515 @c man end AUDIO SINKS
5516
5517 @chapter Video Filters
5518 @c man begin VIDEO FILTERS
5519
5520 When you configure your FFmpeg build, you can disable any of the
5521 existing filters using @code{--disable-filters}.
5522 The configure output will show the video filters included in your
5523 build.
5524
5525 Below is a description of the currently available video filters.
5526
5527 @section alphaextract
5528
5529 Extract the alpha component from the input as a grayscale video. This
5530 is especially useful with the @var{alphamerge} filter.
5531
5532 @section alphamerge
5533
5534 Add or replace the alpha component of the primary input with the
5535 grayscale value of a second input. This is intended for use with
5536 @var{alphaextract} to allow the transmission or storage of frame
5537 sequences that have alpha in a format that doesn't support an alpha
5538 channel.
5539
5540 For example, to reconstruct full frames from a normal YUV-encoded video
5541 and a separate video created with @var{alphaextract}, you might use:
5542 @example
5543 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
5544 @end example
5545
5546 Since this filter is designed for reconstruction, it operates on frame
5547 sequences without considering timestamps, and terminates when either
5548 input reaches end of stream. This will cause problems if your encoding
5549 pipeline drops frames. If you're trying to apply an image as an
5550 overlay to a video stream, consider the @var{overlay} filter instead.
5551
5552 @section amplify
5553
5554 Amplify differences between current pixel and pixels of adjacent frames in
5555 same pixel location.
5556
5557 This filter accepts the following options:
5558
5559 @table @option
5560 @item radius
5561 Set frame radius. Default is 2. Allowed range is from 1 to 63.
5562 For example radius of 3 will instruct filter to calculate average of 7 frames.
5563
5564 @item factor
5565 Set factor to amplify difference. Default is 2. Allowed range is from 0 to 65535.
5566
5567 @item threshold
5568 Set threshold for difference amplification. Any differrence greater or equal to
5569 this value will not alter source pixel. Default is 10.
5570 Allowed range is from 0 to 65535.
5571
5572 @item low
5573 Set lower limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
5574 This option controls maximum possible value that will decrease source pixel value.
5575
5576 @item high
5577 Set high limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
5578 This option controls maximum possible value that will increase source pixel value.
5579
5580 @item planes
5581 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
5582 @end table
5583
5584 @section ass
5585
5586 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
5587 and libavformat to work. On the other hand, it is limited to ASS (Advanced
5588 Substation Alpha) subtitles files.
5589
5590 This filter accepts the following option in addition to the common options from
5591 the @ref{subtitles} filter:
5592
5593 @table @option
5594 @item shaping
5595 Set the shaping engine
5596
5597 Available values are:
5598 @table @samp
5599 @item auto
5600 The default libass shaping engine, which is the best available.
5601 @item simple
5602 Fast, font-agnostic shaper that can do only substitutions
5603 @item complex
5604 Slower shaper using OpenType for substitutions and positioning
5605 @end table
5606
5607 The default is @code{auto}.
5608 @end table
5609
5610 @section atadenoise
5611 Apply an Adaptive Temporal Averaging Denoiser to the video input.
5612
5613 The filter accepts the following options:
5614
5615 @table @option
5616 @item 0a
5617 Set threshold A for 1st plane. Default is 0.02.
5618 Valid range is 0 to 0.3.
5619
5620 @item 0b
5621 Set threshold B for 1st plane. Default is 0.04.
5622 Valid range is 0 to 5.
5623
5624 @item 1a
5625 Set threshold A for 2nd plane. Default is 0.02.
5626 Valid range is 0 to 0.3.
5627
5628 @item 1b
5629 Set threshold B for 2nd plane. Default is 0.04.
5630 Valid range is 0 to 5.
5631
5632 @item 2a
5633 Set threshold A for 3rd plane. Default is 0.02.
5634 Valid range is 0 to 0.3.
5635
5636 @item 2b
5637 Set threshold B for 3rd plane. Default is 0.04.
5638 Valid range is 0 to 5.
5639
5640 Threshold A is designed to react on abrupt changes in the input signal and
5641 threshold B is designed to react on continuous changes in the input signal.
5642
5643 @item s
5644 Set number of frames filter will use for averaging. Default is 9. Must be odd
5645 number in range [5, 129].
5646
5647 @item p
5648 Set what planes of frame filter will use for averaging. Default is all.
5649 @end table
5650
5651 @section avgblur
5652
5653 Apply average blur filter.
5654
5655 The filter accepts the following options:
5656
5657 @table @option
5658 @item sizeX
5659 Set horizontal radius size.
5660
5661 @item planes
5662 Set which planes to filter. By default all planes are filtered.
5663
5664 @item sizeY
5665 Set vertical radius size, if zero it will be same as @code{sizeX}.
5666 Default is @code{0}.
5667 @end table
5668
5669 @section bbox
5670
5671 Compute the bounding box for the non-black pixels in the input frame
5672 luminance plane.
5673
5674 This filter computes the bounding box containing all the pixels with a
5675 luminance value greater than the minimum allowed value.
5676 The parameters describing the bounding box are printed on the filter
5677 log.
5678
5679 The filter accepts the following option:
5680
5681 @table @option
5682 @item min_val
5683 Set the minimal luminance value. Default is @code{16}.
5684 @end table
5685
5686 @section bitplanenoise
5687
5688 Show and measure bit plane noise.
5689
5690 The filter accepts the following options:
5691
5692 @table @option
5693 @item bitplane
5694 Set which plane to analyze. Default is @code{1}.
5695
5696 @item filter
5697 Filter out noisy pixels from @code{bitplane} set above.
5698 Default is disabled.
5699 @end table
5700
5701 @section blackdetect
5702
5703 Detect video intervals that are (almost) completely black. Can be
5704 useful to detect chapter transitions, commercials, or invalid
5705 recordings. Output lines contains the time for the start, end and
5706 duration of the detected black interval expressed in seconds.
5707
5708 In order to display the output lines, you need to set the loglevel at
5709 least to the AV_LOG_INFO value.
5710
5711 The filter accepts the following options:
5712
5713 @table @option
5714 @item black_min_duration, d
5715 Set the minimum detected black duration expressed in seconds. It must
5716 be a non-negative floating point number.
5717
5718 Default value is 2.0.
5719
5720 @item picture_black_ratio_th, pic_th
5721 Set the threshold for considering a picture "black".
5722 Express the minimum value for the ratio:
5723 @example
5724 @var{nb_black_pixels} / @var{nb_pixels}
5725 @end example
5726
5727 for which a picture is considered black.
5728 Default value is 0.98.
5729
5730 @item pixel_black_th, pix_th
5731 Set the threshold for considering a pixel "black".
5732
5733 The threshold expresses the maximum pixel luminance value for which a
5734 pixel is considered "black". The provided value is scaled according to
5735 the following equation:
5736 @example
5737 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
5738 @end example
5739
5740 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
5741 the input video format, the range is [0-255] for YUV full-range
5742 formats and [16-235] for YUV non full-range formats.
5743
5744 Default value is 0.10.
5745 @end table
5746
5747 The following example sets the maximum pixel threshold to the minimum
5748 value, and detects only black intervals of 2 or more seconds:
5749 @example
5750 blackdetect=d=2:pix_th=0.00
5751 @end example
5752
5753 @section blackframe
5754
5755 Detect frames that are (almost) completely black. Can be useful to
5756 detect chapter transitions or commercials. Output lines consist of
5757 the frame number of the detected frame, the percentage of blackness,
5758 the position in the file if known or -1 and the timestamp in seconds.
5759
5760 In order to display the output lines, you need to set the loglevel at
5761 least to the AV_LOG_INFO value.
5762
5763 This filter exports frame metadata @code{lavfi.blackframe.pblack}.
5764 The value represents the percentage of pixels in the picture that
5765 are below the threshold value.
5766
5767 It accepts the following parameters:
5768
5769 @table @option
5770
5771 @item amount
5772 The percentage of the pixels that have to be below the threshold; it defaults to
5773 @code{98}.
5774
5775 @item threshold, thresh
5776 The threshold below which a pixel value is considered black; it defaults to
5777 @code{32}.
5778
5779 @end table
5780
5781 @section blend, tblend
5782
5783 Blend two video frames into each other.
5784
5785 The @code{blend} filter takes two input streams and outputs one
5786 stream, the first input is the "top" layer and second input is
5787 "bottom" layer.  By default, the output terminates when the longest input terminates.
5788
5789 The @code{tblend} (time blend) filter takes two consecutive frames
5790 from one single stream, and outputs the result obtained by blending
5791 the new frame on top of the old frame.
5792
5793 A description of the accepted options follows.
5794
5795 @table @option
5796 @item c0_mode
5797 @item c1_mode
5798 @item c2_mode
5799 @item c3_mode
5800 @item all_mode
5801 Set blend mode for specific pixel component or all pixel components in case
5802 of @var{all_mode}. Default value is @code{normal}.
5803
5804 Available values for component modes are:
5805 @table @samp
5806 @item addition
5807 @item grainmerge
5808 @item and
5809 @item average
5810 @item burn
5811 @item darken
5812 @item difference
5813 @item grainextract
5814 @item divide
5815 @item dodge
5816 @item freeze
5817 @item exclusion
5818 @item extremity
5819 @item glow
5820 @item hardlight
5821 @item hardmix
5822 @item heat
5823 @item lighten
5824 @item linearlight
5825 @item multiply
5826 @item multiply128
5827 @item negation
5828 @item normal
5829 @item or
5830 @item overlay
5831 @item phoenix
5832 @item pinlight
5833 @item reflect
5834 @item screen
5835 @item softlight
5836 @item subtract
5837 @item vividlight
5838 @item xor
5839 @end table
5840
5841 @item c0_opacity
5842 @item c1_opacity
5843 @item c2_opacity
5844 @item c3_opacity
5845 @item all_opacity
5846 Set blend opacity for specific pixel component or all pixel components in case
5847 of @var{all_opacity}. Only used in combination with pixel component blend modes.
5848
5849 @item c0_expr
5850 @item c1_expr
5851 @item c2_expr
5852 @item c3_expr
5853 @item all_expr
5854 Set blend expression for specific pixel component or all pixel components in case
5855 of @var{all_expr}. Note that related mode options will be ignored if those are set.
5856
5857 The expressions can use the following variables:
5858
5859 @table @option
5860 @item N
5861 The sequential number of the filtered frame, starting from @code{0}.
5862
5863 @item X
5864 @item Y
5865 the coordinates of the current sample
5866
5867 @item W
5868 @item H
5869 the width and height of currently filtered plane
5870
5871 @item SW
5872 @item SH
5873 Width and height scale for the plane being filtered. It is the
5874 ratio between the dimensions of the current plane to the luma plane,
5875 e.g. for a @code{yuv420p} frame, the values are @code{1,1} for
5876 the luma plane and @code{0.5,0.5} for the chroma planes.
5877
5878 @item T
5879 Time of the current frame, expressed in seconds.
5880
5881 @item TOP, A
5882 Value of pixel component at current location for first video frame (top layer).
5883
5884 @item BOTTOM, B
5885 Value of pixel component at current location for second video frame (bottom layer).
5886 @end table
5887 @end table
5888
5889 The @code{blend} filter also supports the @ref{framesync} options.
5890
5891 @subsection Examples
5892
5893 @itemize
5894 @item
5895 Apply transition from bottom layer to top layer in first 10 seconds:
5896 @example
5897 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
5898 @end example
5899
5900 @item
5901 Apply linear horizontal transition from top layer to bottom layer:
5902 @example
5903 blend=all_expr='A*(X/W)+B*(1-X/W)'
5904 @end example
5905
5906 @item
5907 Apply 1x1 checkerboard effect:
5908 @example
5909 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
5910 @end example
5911
5912 @item
5913 Apply uncover left effect:
5914 @example
5915 blend=all_expr='if(gte(N*SW+X,W),A,B)'
5916 @end example
5917
5918 @item
5919 Apply uncover down effect:
5920 @example
5921 blend=all_expr='if(gte(Y-N*SH,0),A,B)'
5922 @end example
5923
5924 @item
5925 Apply uncover up-left effect:
5926 @example
5927 blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
5928 @end example
5929
5930 @item
5931 Split diagonally video and shows top and bottom layer on each side:
5932 @example
5933 blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
5934 @end example
5935
5936 @item
5937 Display differences between the current and the previous frame:
5938 @example
5939 tblend=all_mode=grainextract
5940 @end example
5941 @end itemize
5942
5943 @section bm3d
5944
5945 Denoise frames using Block-Matching 3D algorithm.
5946
5947 The filter accepts the following options.
5948
5949 @table @option
5950 @item sigma
5951 Set denoising strength. Default value is 1.
5952 Allowed range is from 0 to 999.9.
5953 The denoising algorith is very sensitive to sigma, so adjust it
5954 according to the source.
5955
5956 @item block
5957 Set local patch size. This sets dimensions in 2D.
5958
5959 @item bstep
5960 Set sliding step for processing blocks. Default value is 4.
5961 Allowed range is from 1 to 64.
5962 Smaller values allows processing more reference blocks and is slower.
5963
5964 @item group
5965 Set maximal number of similar blocks for 3rd dimension. Default value is 1.
5966 When set to 1, no block matching is done. Larger values allows more blocks
5967 in single group.
5968 Allowed range is from 1 to 256.
5969
5970 @item range
5971 Set radius for search block matching. Default is 9.
5972 Allowed range is from 1 to INT32_MAX.
5973
5974 @item mstep
5975 Set step between two search locations for block matching. Default is 1.
5976 Allowed range is from 1 to 64. Smaller is slower.
5977
5978 @item thmse
5979 Set threshold of mean square error for block matching. Valid range is 0 to
5980 INT32_MAX.
5981
5982 @item hdthr
5983 Set thresholding parameter for hard thresholding in 3D transformed domain.
5984 Larger values results in stronger hard-thresholding filtering in frequency
5985 domain.
5986
5987 @item estim
5988 Set filtering estimation mode. Can be @code{basic} or @code{final}.
5989 Default is @code{basic}.
5990
5991 @item ref
5992 If enabled, filter will use 2nd stream for block matching.
5993 Default is disabled for @code{basic} value of @var{estim} option,
5994 and always enabled if value of @var{estim} is @code{final}.
5995
5996 @item planes
5997 Set planes to filter. Default is all available except alpha.
5998 @end table
5999
6000 @subsection Examples
6001
6002 @itemize
6003 @item
6004 Basic filtering with bm3d:
6005 @example
6006 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic
6007 @end example
6008
6009 @item
6010 Same as above, but filtering only luma:
6011 @example
6012 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1
6013 @end example
6014
6015 @item
6016 Same as above, but with both estimation modes:
6017 @example
6018 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
6019 @end example
6020
6021 @item
6022 Same as above, but prefilter with @ref{nlmeans} filter instead:
6023 @example
6024 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
6025 @end example
6026 @end itemize
6027
6028 @section boxblur
6029
6030 Apply a boxblur algorithm to the input video.
6031
6032 It accepts the following parameters:
6033
6034 @table @option
6035
6036 @item luma_radius, lr
6037 @item luma_power, lp
6038 @item chroma_radius, cr
6039 @item chroma_power, cp
6040 @item alpha_radius, ar
6041 @item alpha_power, ap
6042
6043 @end table
6044
6045 A description of the accepted options follows.
6046
6047 @table @option
6048 @item luma_radius, lr
6049 @item chroma_radius, cr
6050 @item alpha_radius, ar
6051 Set an expression for the box radius in pixels used for blurring the
6052 corresponding input plane.
6053
6054 The radius value must be a non-negative number, and must not be
6055 greater than the value of the expression @code{min(w,h)/2} for the
6056 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
6057 planes.
6058
6059 Default value for @option{luma_radius} is "2". If not specified,
6060 @option{chroma_radius} and @option{alpha_radius} default to the
6061 corresponding value set for @option{luma_radius}.
6062
6063 The expressions can contain the following constants:
6064 @table @option
6065 @item w
6066 @item h
6067 The input width and height in pixels.
6068
6069 @item cw
6070 @item ch
6071 The input chroma image width and height in pixels.
6072
6073 @item hsub
6074 @item vsub
6075 The horizontal and vertical chroma subsample values. For example, for the
6076 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
6077 @end table
6078
6079 @item luma_power, lp
6080 @item chroma_power, cp
6081 @item alpha_power, ap
6082 Specify how many times the boxblur filter is applied to the
6083 corresponding plane.
6084
6085 Default value for @option{luma_power} is 2. If not specified,
6086 @option{chroma_power} and @option{alpha_power} default to the
6087 corresponding value set for @option{luma_power}.
6088
6089 A value of 0 will disable the effect.
6090 @end table
6091
6092 @subsection Examples
6093
6094 @itemize
6095 @item
6096 Apply a boxblur filter with the luma, chroma, and alpha radii
6097 set to 2:
6098 @example
6099 boxblur=luma_radius=2:luma_power=1
6100 boxblur=2:1
6101 @end example
6102
6103 @item
6104 Set the luma radius to 2, and alpha and chroma radius to 0:
6105 @example
6106 boxblur=2:1:cr=0:ar=0
6107 @end example
6108
6109 @item
6110 Set the luma and chroma radii to a fraction of the video dimension:
6111 @example
6112 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
6113 @end example
6114 @end itemize
6115
6116 @section bwdif
6117
6118 Deinterlace the input video ("bwdif" stands for "Bob Weaver
6119 Deinterlacing Filter").
6120
6121 Motion adaptive deinterlacing based on yadif with the use of w3fdif and cubic
6122 interpolation algorithms.
6123 It accepts the following parameters:
6124
6125 @table @option
6126 @item mode
6127 The interlacing mode to adopt. It accepts one of the following values:
6128
6129 @table @option
6130 @item 0, send_frame
6131 Output one frame for each frame.
6132 @item 1, send_field
6133 Output one frame for each field.
6134 @end table
6135
6136 The default value is @code{send_field}.
6137
6138 @item parity
6139 The picture field parity assumed for the input interlaced video. It accepts one
6140 of the following values:
6141
6142 @table @option
6143 @item 0, tff
6144 Assume the top field is first.
6145 @item 1, bff
6146 Assume the bottom field is first.
6147 @item -1, auto
6148 Enable automatic detection of field parity.
6149 @end table
6150
6151 The default value is @code{auto}.
6152 If the interlacing is unknown or the decoder does not export this information,
6153 top field first will be assumed.
6154
6155 @item deint
6156 Specify which frames to deinterlace. Accept one of the following
6157 values:
6158
6159 @table @option
6160 @item 0, all
6161 Deinterlace all frames.
6162 @item 1, interlaced
6163 Only deinterlace frames marked as interlaced.
6164 @end table
6165
6166 The default value is @code{all}.
6167 @end table
6168
6169 @section chromahold
6170 Remove all color information for all colors except for certain one.
6171
6172 The filter accepts the following options:
6173
6174 @table @option
6175 @item color
6176 The color which will not be replaced with neutral chroma.
6177
6178 @item similarity
6179 Similarity percentage with the above color.
6180 0.01 matches only the exact key color, while 1.0 matches everything.
6181
6182 @item yuv
6183 Signals that the color passed is already in YUV instead of RGB.
6184
6185 Literal colors like "green" or "red" don't make sense with this enabled anymore.
6186 This can be used to pass exact YUV values as hexadecimal numbers.
6187 @end table
6188
6189 @section chromakey
6190 YUV colorspace color/chroma keying.
6191
6192 The filter accepts the following options:
6193
6194 @table @option
6195 @item color
6196 The color which will be replaced with transparency.
6197
6198 @item similarity
6199 Similarity percentage with the key color.
6200
6201 0.01 matches only the exact key color, while 1.0 matches everything.
6202
6203 @item blend
6204 Blend percentage.
6205
6206 0.0 makes pixels either fully transparent, or not transparent at all.
6207
6208 Higher values result in semi-transparent pixels, with a higher transparency
6209 the more similar the pixels color is to the key color.
6210
6211 @item yuv
6212 Signals that the color passed is already in YUV instead of RGB.
6213
6214 Literal colors like "green" or "red" don't make sense with this enabled anymore.
6215 This can be used to pass exact YUV values as hexadecimal numbers.
6216 @end table
6217
6218 @subsection Examples
6219
6220 @itemize
6221 @item
6222 Make every green pixel in the input image transparent:
6223 @example
6224 ffmpeg -i input.png -vf chromakey=green out.png
6225 @end example
6226
6227 @item
6228 Overlay a greenscreen-video on top of a static black background.
6229 @example
6230 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
6231 @end example
6232 @end itemize
6233
6234 @section ciescope
6235
6236 Display CIE color diagram with pixels overlaid onto it.
6237
6238 The filter accepts the following options:
6239
6240 @table @option
6241 @item system
6242 Set color system.
6243
6244 @table @samp
6245 @item ntsc, 470m
6246 @item ebu, 470bg
6247 @item smpte
6248 @item 240m
6249 @item apple
6250 @item widergb
6251 @item cie1931
6252 @item rec709, hdtv
6253 @item uhdtv, rec2020
6254 @end table
6255
6256 @item cie
6257 Set CIE system.
6258
6259 @table @samp
6260 @item xyy
6261 @item ucs
6262 @item luv
6263 @end table
6264
6265 @item gamuts
6266 Set what gamuts to draw.
6267
6268 See @code{system} option for available values.
6269
6270 @item size, s
6271 Set ciescope size, by default set to 512.
6272
6273 @item intensity, i
6274 Set intensity used to map input pixel values to CIE diagram.
6275
6276 @item contrast
6277 Set contrast used to draw tongue colors that are out of active color system gamut.
6278
6279 @item corrgamma
6280 Correct gamma displayed on scope, by default enabled.
6281
6282 @item showwhite
6283 Show white point on CIE diagram, by default disabled.
6284
6285 @item gamma
6286 Set input gamma. Used only with XYZ input color space.
6287 @end table
6288
6289 @section codecview
6290
6291 Visualize information exported by some codecs.
6292
6293 Some codecs can export information through frames using side-data or other
6294 means. For example, some MPEG based codecs export motion vectors through the
6295 @var{export_mvs} flag in the codec @option{flags2} option.
6296
6297 The filter accepts the following option:
6298
6299 @table @option
6300 @item mv
6301 Set motion vectors to visualize.
6302
6303 Available flags for @var{mv} are:
6304
6305 @table @samp
6306 @item pf
6307 forward predicted MVs of P-frames
6308 @item bf
6309 forward predicted MVs of B-frames
6310 @item bb
6311 backward predicted MVs of B-frames
6312 @end table
6313
6314 @item qp
6315 Display quantization parameters using the chroma planes.
6316
6317 @item mv_type, mvt
6318 Set motion vectors type to visualize. Includes MVs from all frames unless specified by @var{frame_type} option.
6319
6320 Available flags for @var{mv_type} are:
6321
6322 @table @samp
6323 @item fp
6324 forward predicted MVs
6325 @item bp
6326 backward predicted MVs
6327 @end table
6328
6329 @item frame_type, ft
6330 Set frame type to visualize motion vectors of.
6331
6332 Available flags for @var{frame_type} are:
6333
6334 @table @samp
6335 @item if
6336 intra-coded frames (I-frames)
6337 @item pf
6338 predicted frames (P-frames)
6339 @item bf
6340 bi-directionally predicted frames (B-frames)
6341 @end table
6342 @end table
6343
6344 @subsection Examples
6345
6346 @itemize
6347 @item
6348 Visualize forward predicted MVs of all frames using @command{ffplay}:
6349 @example
6350 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
6351 @end example
6352
6353 @item
6354 Visualize multi-directionals MVs of P and B-Frames using @command{ffplay}:
6355 @example
6356 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
6357 @end example
6358 @end itemize
6359
6360 @section colorbalance
6361 Modify intensity of primary colors (red, green and blue) of input frames.
6362
6363 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
6364 regions for the red-cyan, green-magenta or blue-yellow balance.
6365
6366 A positive adjustment value shifts the balance towards the primary color, a negative
6367 value towards the complementary color.
6368
6369 The filter accepts the following options:
6370
6371 @table @option
6372 @item rs
6373 @item gs
6374 @item bs
6375 Adjust red, green and blue shadows (darkest pixels).
6376
6377 @item rm
6378 @item gm
6379 @item bm
6380 Adjust red, green and blue midtones (medium pixels).
6381
6382 @item rh
6383 @item gh
6384 @item bh
6385 Adjust red, green and blue highlights (brightest pixels).
6386
6387 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
6388 @end table
6389
6390 @subsection Examples
6391
6392 @itemize
6393 @item
6394 Add red color cast to shadows:
6395 @example
6396 colorbalance=rs=.3
6397 @end example
6398 @end itemize
6399
6400 @section colorkey
6401 RGB colorspace color keying.
6402
6403 The filter accepts the following options:
6404
6405 @table @option
6406 @item color
6407 The color which will be replaced with transparency.
6408
6409 @item similarity
6410 Similarity percentage with the key color.
6411
6412 0.01 matches only the exact key color, while 1.0 matches everything.
6413
6414 @item blend
6415 Blend percentage.
6416
6417 0.0 makes pixels either fully transparent, or not transparent at all.
6418
6419 Higher values result in semi-transparent pixels, with a higher transparency
6420 the more similar the pixels color is to the key color.
6421 @end table
6422
6423 @subsection Examples
6424
6425 @itemize
6426 @item
6427 Make every green pixel in the input image transparent:
6428 @example
6429 ffmpeg -i input.png -vf colorkey=green out.png
6430 @end example
6431
6432 @item
6433 Overlay a greenscreen-video on top of a static background image.
6434 @example
6435 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
6436 @end example
6437 @end itemize
6438
6439 @section colorlevels
6440
6441 Adjust video input frames using levels.
6442
6443 The filter accepts the following options:
6444
6445 @table @option
6446 @item rimin
6447 @item gimin
6448 @item bimin
6449 @item aimin
6450 Adjust red, green, blue and alpha input black point.
6451 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
6452
6453 @item rimax
6454 @item gimax
6455 @item bimax
6456 @item aimax
6457 Adjust red, green, blue and alpha input white point.
6458 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{1}.
6459
6460 Input levels are used to lighten highlights (bright tones), darken shadows
6461 (dark tones), change the balance of bright and dark tones.
6462
6463 @item romin
6464 @item gomin
6465 @item bomin
6466 @item aomin
6467 Adjust red, green, blue and alpha output black point.
6468 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{0}.
6469
6470 @item romax
6471 @item gomax
6472 @item bomax
6473 @item aomax
6474 Adjust red, green, blue and alpha output white point.
6475 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{1}.
6476
6477 Output levels allows manual selection of a constrained output level range.
6478 @end table
6479
6480 @subsection Examples
6481
6482 @itemize
6483 @item
6484 Make video output darker:
6485 @example
6486 colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
6487 @end example
6488
6489 @item
6490 Increase contrast:
6491 @example
6492 colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
6493 @end example
6494
6495 @item
6496 Make video output lighter:
6497 @example
6498 colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
6499 @end example
6500
6501 @item
6502 Increase brightness:
6503 @example
6504 colorlevels=romin=0.5:gomin=0.5:bomin=0.5
6505 @end example
6506 @end itemize
6507
6508 @section colorchannelmixer
6509
6510 Adjust video input frames by re-mixing color channels.
6511
6512 This filter modifies a color channel by adding the values associated to
6513 the other channels of the same pixels. For example if the value to
6514 modify is red, the output value will be:
6515 @example
6516 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
6517 @end example
6518
6519 The filter accepts the following options:
6520
6521 @table @option
6522 @item rr
6523 @item rg
6524 @item rb
6525 @item ra
6526 Adjust contribution of input red, green, blue and alpha channels for output red channel.
6527 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
6528
6529 @item gr
6530 @item gg
6531 @item gb
6532 @item ga
6533 Adjust contribution of input red, green, blue and alpha channels for output green channel.
6534 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
6535
6536 @item br
6537 @item bg
6538 @item bb
6539 @item ba
6540 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
6541 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
6542
6543 @item ar
6544 @item ag
6545 @item ab
6546 @item aa
6547 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
6548 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
6549
6550 Allowed ranges for options are @code{[-2.0, 2.0]}.
6551 @end table
6552
6553 @subsection Examples
6554
6555 @itemize
6556 @item
6557 Convert source to grayscale:
6558 @example
6559 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
6560 @end example
6561 @item
6562 Simulate sepia tones:
6563 @example
6564 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
6565 @end example
6566 @end itemize
6567
6568 @section colormatrix
6569
6570 Convert color matrix.
6571
6572 The filter accepts the following options:
6573
6574 @table @option
6575 @item src
6576 @item dst
6577 Specify the source and destination color matrix. Both values must be
6578 specified.
6579
6580 The accepted values are:
6581 @table @samp
6582 @item bt709
6583 BT.709
6584
6585 @item fcc
6586 FCC
6587
6588 @item bt601
6589 BT.601
6590
6591 @item bt470
6592 BT.470
6593
6594 @item bt470bg
6595 BT.470BG
6596
6597 @item smpte170m
6598 SMPTE-170M
6599
6600 @item smpte240m
6601 SMPTE-240M
6602
6603 @item bt2020
6604 BT.2020
6605 @end table
6606 @end table
6607
6608 For example to convert from BT.601 to SMPTE-240M, use the command:
6609 @example
6610 colormatrix=bt601:smpte240m
6611 @end example
6612
6613 @section colorspace
6614
6615 Convert colorspace, transfer characteristics or color primaries.
6616 Input video needs to have an even size.
6617
6618 The filter accepts the following options:
6619
6620 @table @option
6621 @anchor{all}
6622 @item all
6623 Specify all color properties at once.
6624
6625 The accepted values are:
6626 @table @samp
6627 @item bt470m
6628 BT.470M
6629
6630 @item bt470bg
6631 BT.470BG
6632
6633 @item bt601-6-525
6634 BT.601-6 525
6635
6636 @item bt601-6-625
6637 BT.601-6 625
6638
6639 @item bt709
6640 BT.709
6641
6642 @item smpte170m
6643 SMPTE-170M
6644
6645 @item smpte240m
6646 SMPTE-240M
6647
6648 @item bt2020
6649 BT.2020
6650
6651 @end table
6652
6653 @anchor{space}
6654 @item space
6655 Specify output colorspace.
6656
6657 The accepted values are:
6658 @table @samp
6659 @item bt709
6660 BT.709
6661
6662 @item fcc
6663 FCC
6664
6665 @item bt470bg
6666 BT.470BG or BT.601-6 625
6667
6668 @item smpte170m
6669 SMPTE-170M or BT.601-6 525
6670
6671 @item smpte240m
6672 SMPTE-240M
6673
6674 @item ycgco
6675 YCgCo
6676
6677 @item bt2020ncl
6678 BT.2020 with non-constant luminance
6679
6680 @end table
6681
6682 @anchor{trc}
6683 @item trc
6684 Specify output transfer characteristics.
6685
6686 The accepted values are:
6687 @table @samp
6688 @item bt709
6689 BT.709
6690
6691 @item bt470m
6692 BT.470M
6693
6694 @item bt470bg
6695 BT.470BG
6696
6697 @item gamma22
6698 Constant gamma of 2.2
6699
6700 @item gamma28
6701 Constant gamma of 2.8
6702
6703 @item smpte170m
6704 SMPTE-170M, BT.601-6 625 or BT.601-6 525
6705
6706 @item smpte240m
6707 SMPTE-240M
6708
6709 @item srgb
6710 SRGB
6711
6712 @item iec61966-2-1
6713 iec61966-2-1
6714
6715 @item iec61966-2-4
6716 iec61966-2-4
6717
6718 @item xvycc
6719 xvycc
6720
6721 @item bt2020-10
6722 BT.2020 for 10-bits content
6723
6724 @item bt2020-12
6725 BT.2020 for 12-bits content
6726
6727 @end table
6728
6729 @anchor{primaries}
6730 @item primaries
6731 Specify output color primaries.
6732
6733 The accepted values are:
6734 @table @samp
6735 @item bt709
6736 BT.709
6737
6738 @item bt470m
6739 BT.470M
6740
6741 @item bt470bg
6742 BT.470BG or BT.601-6 625
6743
6744 @item smpte170m
6745 SMPTE-170M or BT.601-6 525
6746
6747 @item smpte240m
6748 SMPTE-240M
6749
6750 @item film
6751 film
6752
6753 @item smpte431
6754 SMPTE-431
6755
6756 @item smpte432
6757 SMPTE-432
6758
6759 @item bt2020
6760 BT.2020
6761
6762 @item jedec-p22
6763 JEDEC P22 phosphors
6764
6765 @end table
6766
6767 @anchor{range}
6768 @item range
6769 Specify output color range.
6770
6771 The accepted values are:
6772 @table @samp
6773 @item tv
6774 TV (restricted) range
6775
6776 @item mpeg
6777 MPEG (restricted) range
6778
6779 @item pc
6780 PC (full) range
6781
6782 @item jpeg
6783 JPEG (full) range
6784
6785 @end table
6786
6787 @item format
6788 Specify output color format.
6789
6790 The accepted values are:
6791 @table @samp
6792 @item yuv420p
6793 YUV 4:2:0 planar 8-bits
6794
6795 @item yuv420p10
6796 YUV 4:2:0 planar 10-bits
6797
6798 @item yuv420p12
6799 YUV 4:2:0 planar 12-bits
6800
6801 @item yuv422p
6802 YUV 4:2:2 planar 8-bits
6803
6804 @item yuv422p10
6805 YUV 4:2:2 planar 10-bits
6806
6807 @item yuv422p12
6808 YUV 4:2:2 planar 12-bits
6809
6810 @item yuv444p
6811 YUV 4:4:4 planar 8-bits
6812
6813 @item yuv444p10
6814 YUV 4:4:4 planar 10-bits
6815
6816 @item yuv444p12
6817 YUV 4:4:4 planar 12-bits
6818
6819 @end table
6820
6821 @item fast
6822 Do a fast conversion, which skips gamma/primary correction. This will take
6823 significantly less CPU, but will be mathematically incorrect. To get output
6824 compatible with that produced by the colormatrix filter, use fast=1.
6825
6826 @item dither
6827 Specify dithering mode.
6828
6829 The accepted values are:
6830 @table @samp
6831 @item none
6832 No dithering
6833
6834 @item fsb
6835 Floyd-Steinberg dithering
6836 @end table
6837
6838 @item wpadapt
6839 Whitepoint adaptation mode.
6840
6841 The accepted values are:
6842 @table @samp
6843 @item bradford
6844 Bradford whitepoint adaptation
6845
6846 @item vonkries
6847 von Kries whitepoint adaptation
6848
6849 @item identity
6850 identity whitepoint adaptation (i.e. no whitepoint adaptation)
6851 @end table
6852
6853 @item iall
6854 Override all input properties at once. Same accepted values as @ref{all}.
6855
6856 @item ispace
6857 Override input colorspace. Same accepted values as @ref{space}.
6858
6859 @item iprimaries
6860 Override input color primaries. Same accepted values as @ref{primaries}.
6861
6862 @item itrc
6863 Override input transfer characteristics. Same accepted values as @ref{trc}.
6864
6865 @item irange
6866 Override input color range. Same accepted values as @ref{range}.
6867
6868 @end table
6869
6870 The filter converts the transfer characteristics, color space and color
6871 primaries to the specified user values. The output value, if not specified,
6872 is set to a default value based on the "all" property. If that property is
6873 also not specified, the filter will log an error. The output color range and
6874 format default to the same value as the input color range and format. The
6875 input transfer characteristics, color space, color primaries and color range
6876 should be set on the input data. If any of these are missing, the filter will
6877 log an error and no conversion will take place.
6878
6879 For example to convert the input to SMPTE-240M, use the command:
6880 @example
6881 colorspace=smpte240m
6882 @end example
6883
6884 @section convolution
6885
6886 Apply convolution of 3x3, 5x5, 7x7 or horizontal/vertical up to 49 elements.
6887
6888 The filter accepts the following options:
6889
6890 @table @option
6891 @item 0m
6892 @item 1m
6893 @item 2m
6894 @item 3m
6895 Set matrix for each plane.
6896 Matrix is sequence of 9, 25 or 49 signed integers in @var{square} mode,
6897 and from 1 to 49 odd number of signed integers in @var{row} mode.
6898
6899 @item 0rdiv
6900 @item 1rdiv
6901 @item 2rdiv
6902 @item 3rdiv
6903 Set multiplier for calculated value for each plane.
6904 If unset or 0, it will be sum of all matrix elements.
6905
6906 @item 0bias
6907 @item 1bias
6908 @item 2bias
6909 @item 3bias
6910 Set bias for each plane. This value is added to the result of the multiplication.
6911 Useful for making the overall image brighter or darker. Default is 0.0.
6912
6913 @item 0mode
6914 @item 1mode
6915 @item 2mode
6916 @item 3mode
6917 Set matrix mode for each plane. Can be @var{square}, @var{row} or @var{column}.
6918 Default is @var{square}.
6919 @end table
6920
6921 @subsection Examples
6922
6923 @itemize
6924 @item
6925 Apply sharpen:
6926 @example
6927 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"
6928 @end example
6929
6930 @item
6931 Apply blur:
6932 @example
6933 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"
6934 @end example
6935
6936 @item
6937 Apply edge enhance:
6938 @example
6939 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"
6940 @end example
6941
6942 @item
6943 Apply edge detect:
6944 @example
6945 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"
6946 @end example
6947
6948 @item
6949 Apply laplacian edge detector which includes diagonals:
6950 @example
6951 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"
6952 @end example
6953
6954 @item
6955 Apply emboss:
6956 @example
6957 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"
6958 @end example
6959 @end itemize
6960
6961 @section convolve
6962
6963 Apply 2D convolution of video stream in frequency domain using second stream
6964 as impulse.
6965
6966 The filter accepts the following options:
6967
6968 @table @option
6969 @item planes
6970 Set which planes to process.
6971
6972 @item impulse
6973 Set which impulse video frames will be processed, can be @var{first}
6974 or @var{all}. Default is @var{all}.
6975 @end table
6976
6977 The @code{convolve} filter also supports the @ref{framesync} options.
6978
6979 @section copy
6980
6981 Copy the input video source unchanged to the output. This is mainly useful for
6982 testing purposes.
6983
6984 @anchor{coreimage}
6985 @section coreimage
6986 Video filtering on GPU using Apple's CoreImage API on OSX.
6987
6988 Hardware acceleration is based on an OpenGL context. Usually, this means it is
6989 processed by video hardware. However, software-based OpenGL implementations
6990 exist which means there is no guarantee for hardware processing. It depends on
6991 the respective OSX.
6992
6993 There are many filters and image generators provided by Apple that come with a
6994 large variety of options. The filter has to be referenced by its name along
6995 with its options.
6996
6997 The coreimage filter accepts the following options:
6998 @table @option
6999 @item list_filters
7000 List all available filters and generators along with all their respective
7001 options as well as possible minimum and maximum values along with the default
7002 values.
7003 @example
7004 list_filters=true
7005 @end example
7006
7007 @item filter
7008 Specify all filters by their respective name and options.
7009 Use @var{list_filters} to determine all valid filter names and options.
7010 Numerical options are specified by a float value and are automatically clamped
7011 to their respective value range.  Vector and color options have to be specified
7012 by a list of space separated float values. Character escaping has to be done.
7013 A special option name @code{default} is available to use default options for a
7014 filter.
7015
7016 It is required to specify either @code{default} or at least one of the filter options.
7017 All omitted options are used with their default values.
7018 The syntax of the filter string is as follows:
7019 @example
7020 filter=<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...][#<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...]][#...]
7021 @end example
7022
7023 @item output_rect
7024 Specify a rectangle where the output of the filter chain is copied into the
7025 input image. It is given by a list of space separated float values:
7026 @example
7027 output_rect=x\ y\ width\ height
7028 @end example
7029 If not given, the output rectangle equals the dimensions of the input image.
7030 The output rectangle is automatically cropped at the borders of the input
7031 image. Negative values are valid for each component.
7032 @example
7033 output_rect=25\ 25\ 100\ 100
7034 @end example
7035 @end table
7036
7037 Several filters can be chained for successive processing without GPU-HOST
7038 transfers allowing for fast processing of complex filter chains.
7039 Currently, only filters with zero (generators) or exactly one (filters) input
7040 image and one output image are supported. Also, transition filters are not yet
7041 usable as intended.
7042
7043 Some filters generate output images with additional padding depending on the
7044 respective filter kernel. The padding is automatically removed to ensure the
7045 filter output has the same size as the input image.
7046
7047 For image generators, the size of the output image is determined by the
7048 previous output image of the filter chain or the input image of the whole
7049 filterchain, respectively. The generators do not use the pixel information of
7050 this image to generate their output. However, the generated output is
7051 blended onto this image, resulting in partial or complete coverage of the
7052 output image.
7053
7054 The @ref{coreimagesrc} video source can be used for generating input images
7055 which are directly fed into the filter chain. By using it, providing input
7056 images by another video source or an input video is not required.
7057
7058 @subsection Examples
7059
7060 @itemize
7061
7062 @item
7063 List all filters available:
7064 @example
7065 coreimage=list_filters=true
7066 @end example
7067
7068 @item
7069 Use the CIBoxBlur filter with default options to blur an image:
7070 @example
7071 coreimage=filter=CIBoxBlur@@default
7072 @end example
7073
7074 @item
7075 Use a filter chain with CISepiaTone at default values and CIVignetteEffect with
7076 its center at 100x100 and a radius of 50 pixels:
7077 @example
7078 coreimage=filter=CIBoxBlur@@default#CIVignetteEffect@@inputCenter=100\ 100@@inputRadius=50
7079 @end example
7080
7081 @item
7082 Use nullsrc and CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
7083 given as complete and escaped command-line for Apple's standard bash shell:
7084 @example
7085 ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
7086 @end example
7087 @end itemize
7088
7089 @section crop
7090
7091 Crop the input video to given dimensions.
7092
7093 It accepts the following parameters:
7094
7095 @table @option
7096 @item w, out_w
7097 The width of the output video. It defaults to @code{iw}.
7098 This expression is evaluated only once during the filter
7099 configuration, or when the @samp{w} or @samp{out_w} command is sent.
7100
7101 @item h, out_h
7102 The height of the output video. It defaults to @code{ih}.
7103 This expression is evaluated only once during the filter
7104 configuration, or when the @samp{h} or @samp{out_h} command is sent.
7105
7106 @item x
7107 The horizontal position, in the input video, of the left edge of the output
7108 video. It defaults to @code{(in_w-out_w)/2}.
7109 This expression is evaluated per-frame.
7110
7111 @item y
7112 The vertical position, in the input video, of the top edge of the output video.
7113 It defaults to @code{(in_h-out_h)/2}.
7114 This expression is evaluated per-frame.
7115
7116 @item keep_aspect
7117 If set to 1 will force the output display aspect ratio
7118 to be the same of the input, by changing the output sample aspect
7119 ratio. It defaults to 0.
7120
7121 @item exact
7122 Enable exact cropping. If enabled, subsampled videos will be cropped at exact
7123 width/height/x/y as specified and will not be rounded to nearest smaller value.
7124 It defaults to 0.
7125 @end table
7126
7127 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
7128 expressions containing the following constants:
7129
7130 @table @option
7131 @item x
7132 @item y
7133 The computed values for @var{x} and @var{y}. They are evaluated for
7134 each new frame.
7135
7136 @item in_w
7137 @item in_h
7138 The input width and height.
7139
7140 @item iw
7141 @item ih
7142 These are the same as @var{in_w} and @var{in_h}.
7143
7144 @item out_w
7145 @item out_h
7146 The output (cropped) width and height.
7147
7148 @item ow
7149 @item oh
7150 These are the same as @var{out_w} and @var{out_h}.
7151
7152 @item a
7153 same as @var{iw} / @var{ih}
7154
7155 @item sar
7156 input sample aspect ratio
7157
7158 @item dar
7159 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
7160
7161 @item hsub
7162 @item vsub
7163 horizontal and vertical chroma subsample values. For example for the
7164 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
7165
7166 @item n
7167 The number of the input frame, starting from 0.
7168
7169 @item pos
7170 the position in the file of the input frame, NAN if unknown
7171
7172 @item t
7173 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
7174
7175 @end table
7176
7177 The expression for @var{out_w} may depend on the value of @var{out_h},
7178 and the expression for @var{out_h} may depend on @var{out_w}, but they
7179 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
7180 evaluated after @var{out_w} and @var{out_h}.
7181
7182 The @var{x} and @var{y} parameters specify the expressions for the
7183 position of the top-left corner of the output (non-cropped) area. They
7184 are evaluated for each frame. If the evaluated value is not valid, it
7185 is approximated to the nearest valid value.
7186
7187 The expression for @var{x} may depend on @var{y}, and the expression
7188 for @var{y} may depend on @var{x}.
7189
7190 @subsection Examples
7191
7192 @itemize
7193 @item
7194 Crop area with size 100x100 at position (12,34).
7195 @example
7196 crop=100:100:12:34
7197 @end example
7198
7199 Using named options, the example above becomes:
7200 @example
7201 crop=w=100:h=100:x=12:y=34
7202 @end example
7203
7204 @item
7205 Crop the central input area with size 100x100:
7206 @example
7207 crop=100:100
7208 @end example
7209
7210 @item
7211 Crop the central input area with size 2/3 of the input video:
7212 @example
7213 crop=2/3*in_w:2/3*in_h
7214 @end example
7215
7216 @item
7217 Crop the input video central square:
7218 @example
7219 crop=out_w=in_h
7220 crop=in_h
7221 @end example
7222
7223 @item
7224 Delimit the rectangle with the top-left corner placed at position
7225 100:100 and the right-bottom corner corresponding to the right-bottom
7226 corner of the input image.
7227 @example
7228 crop=in_w-100:in_h-100:100:100
7229 @end example
7230
7231 @item
7232 Crop 10 pixels from the left and right borders, and 20 pixels from
7233 the top and bottom borders
7234 @example
7235 crop=in_w-2*10:in_h-2*20
7236 @end example
7237
7238 @item
7239 Keep only the bottom right quarter of the input image:
7240 @example
7241 crop=in_w/2:in_h/2:in_w/2:in_h/2
7242 @end example
7243
7244 @item
7245 Crop height for getting Greek harmony:
7246 @example
7247 crop=in_w:1/PHI*in_w
7248 @end example
7249
7250 @item
7251 Apply trembling effect:
7252 @example
7253 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)
7254 @end example
7255
7256 @item
7257 Apply erratic camera effect depending on timestamp:
7258 @example
7259 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)"
7260 @end example
7261
7262 @item
7263 Set x depending on the value of y:
7264 @example
7265 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
7266 @end example
7267 @end itemize
7268
7269 @subsection Commands
7270
7271 This filter supports the following commands:
7272 @table @option
7273 @item w, out_w
7274 @item h, out_h
7275 @item x
7276 @item y
7277 Set width/height of the output video and the horizontal/vertical position
7278 in the input video.
7279 The command accepts the same syntax of the corresponding option.
7280
7281 If the specified expression is not valid, it is kept at its current
7282 value.
7283 @end table
7284
7285 @section cropdetect
7286
7287 Auto-detect the crop size.
7288
7289 It calculates the necessary cropping parameters and prints the
7290 recommended parameters via the logging system. The detected dimensions
7291 correspond to the non-black area of the input video.
7292
7293 It accepts the following parameters:
7294
7295 @table @option
7296
7297 @item limit
7298 Set higher black value threshold, which can be optionally specified
7299 from nothing (0) to everything (255 for 8-bit based formats). An intensity
7300 value greater to the set value is considered non-black. It defaults to 24.
7301 You can also specify a value between 0.0 and 1.0 which will be scaled depending
7302 on the bitdepth of the pixel format.
7303
7304 @item round
7305 The value which the width/height should be divisible by. It defaults to
7306 16. The offset is automatically adjusted to center the video. Use 2 to
7307 get only even dimensions (needed for 4:2:2 video). 16 is best when
7308 encoding to most video codecs.
7309
7310 @item reset_count, reset
7311 Set the counter that determines after how many frames cropdetect will
7312 reset the previously detected largest video area and start over to
7313 detect the current optimal crop area. Default value is 0.
7314
7315 This can be useful when channel logos distort the video area. 0
7316 indicates 'never reset', and returns the largest area encountered during
7317 playback.
7318 @end table
7319
7320 @anchor{cue}
7321 @section cue
7322
7323 Delay video filtering until a given wallclock timestamp. The filter first
7324 passes on @option{preroll} amount of frames, then it buffers at most
7325 @option{buffer} amount of frames and waits for the cue. After reaching the cue
7326 it forwards the buffered frames and also any subsequent frames coming in its
7327 input.
7328
7329 The filter can be used synchronize the output of multiple ffmpeg processes for
7330 realtime output devices like decklink. By putting the delay in the filtering
7331 chain and pre-buffering frames the process can pass on data to output almost
7332 immediately after the target wallclock timestamp is reached.
7333
7334 Perfect frame accuracy cannot be guaranteed, but the result is good enough for
7335 some use cases.
7336
7337 @table @option
7338
7339 @item cue
7340 The cue timestamp expressed in a UNIX timestamp in microseconds. Default is 0.
7341
7342 @item preroll
7343 The duration of content to pass on as preroll expressed in seconds. Default is 0.
7344
7345 @item buffer
7346 The maximum duration of content to buffer before waiting for the cue expressed
7347 in seconds. Default is 0.
7348
7349 @end table
7350
7351 @anchor{curves}
7352 @section curves
7353
7354 Apply color adjustments using curves.
7355
7356 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
7357 component (red, green and blue) has its values defined by @var{N} key points
7358 tied from each other using a smooth curve. The x-axis represents the pixel
7359 values from the input frame, and the y-axis the new pixel values to be set for
7360 the output frame.
7361
7362 By default, a component curve is defined by the two points @var{(0;0)} and
7363 @var{(1;1)}. This creates a straight line where each original pixel value is
7364 "adjusted" to its own value, which means no change to the image.
7365
7366 The filter allows you to redefine these two points and add some more. A new
7367 curve (using a natural cubic spline interpolation) will be define to pass
7368 smoothly through all these new coordinates. The new defined points needs to be
7369 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
7370 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
7371 the vector spaces, the values will be clipped accordingly.
7372
7373 The filter accepts the following options:
7374
7375 @table @option
7376 @item preset
7377 Select one of the available color presets. This option can be used in addition
7378 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
7379 options takes priority on the preset values.
7380 Available presets are:
7381 @table @samp
7382 @item none
7383 @item color_negative
7384 @item cross_process
7385 @item darker
7386 @item increase_contrast
7387 @item lighter
7388 @item linear_contrast
7389 @item medium_contrast
7390 @item negative
7391 @item strong_contrast
7392 @item vintage
7393 @end table
7394 Default is @code{none}.
7395 @item master, m
7396 Set the master key points. These points will define a second pass mapping. It
7397 is sometimes called a "luminance" or "value" mapping. It can be used with
7398 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
7399 post-processing LUT.
7400 @item red, r
7401 Set the key points for the red component.
7402 @item green, g
7403 Set the key points for the green component.
7404 @item blue, b
7405 Set the key points for the blue component.
7406 @item all
7407 Set the key points for all components (not including master).
7408 Can be used in addition to the other key points component
7409 options. In this case, the unset component(s) will fallback on this
7410 @option{all} setting.
7411 @item psfile
7412 Specify a Photoshop curves file (@code{.acv}) to import the settings from.
7413 @item plot
7414 Save Gnuplot script of the curves in specified file.
7415 @end table
7416
7417 To avoid some filtergraph syntax conflicts, each key points list need to be
7418 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
7419
7420 @subsection Examples
7421
7422 @itemize
7423 @item
7424 Increase slightly the middle level of blue:
7425 @example
7426 curves=blue='0/0 0.5/0.58 1/1'
7427 @end example
7428
7429 @item
7430 Vintage effect:
7431 @example
7432 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'
7433 @end example
7434 Here we obtain the following coordinates for each components:
7435 @table @var
7436 @item red
7437 @code{(0;0.11) (0.42;0.51) (1;0.95)}
7438 @item green
7439 @code{(0;0) (0.50;0.48) (1;1)}
7440 @item blue
7441 @code{(0;0.22) (0.49;0.44) (1;0.80)}
7442 @end table
7443
7444 @item
7445 The previous example can also be achieved with the associated built-in preset:
7446 @example
7447 curves=preset=vintage
7448 @end example
7449
7450 @item
7451 Or simply:
7452 @example
7453 curves=vintage
7454 @end example
7455
7456 @item
7457 Use a Photoshop preset and redefine the points of the green component:
7458 @example
7459 curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
7460 @end example
7461
7462 @item
7463 Check out the curves of the @code{cross_process} profile using @command{ffmpeg}
7464 and @command{gnuplot}:
7465 @example
7466 ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
7467 gnuplot -p /tmp/curves.plt
7468 @end example
7469 @end itemize
7470
7471 @section datascope
7472
7473 Video data analysis filter.
7474
7475 This filter shows hexadecimal pixel values of part of video.
7476
7477 The filter accepts the following options:
7478
7479 @table @option
7480 @item size, s
7481 Set output video size.
7482
7483 @item x
7484 Set x offset from where to pick pixels.
7485
7486 @item y
7487 Set y offset from where to pick pixels.
7488
7489 @item mode
7490 Set scope mode, can be one of the following:
7491 @table @samp
7492 @item mono
7493 Draw hexadecimal pixel values with white color on black background.
7494
7495 @item color
7496 Draw hexadecimal pixel values with input video pixel color on black
7497 background.
7498
7499 @item color2
7500 Draw hexadecimal pixel values on color background picked from input video,
7501 the text color is picked in such way so its always visible.
7502 @end table
7503
7504 @item axis
7505 Draw rows and columns numbers on left and top of video.
7506
7507 @item opacity
7508 Set background opacity.
7509 @end table
7510
7511 @section dctdnoiz
7512
7513 Denoise frames using 2D DCT (frequency domain filtering).
7514
7515 This filter is not designed for real time.
7516
7517 The filter accepts the following options:
7518
7519 @table @option
7520 @item sigma, s
7521 Set the noise sigma constant.
7522
7523 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
7524 coefficient (absolute value) below this threshold with be dropped.
7525
7526 If you need a more advanced filtering, see @option{expr}.
7527
7528 Default is @code{0}.
7529
7530 @item overlap
7531 Set number overlapping pixels for each block. Since the filter can be slow, you
7532 may want to reduce this value, at the cost of a less effective filter and the
7533 risk of various artefacts.
7534
7535 If the overlapping value doesn't permit processing the whole input width or
7536 height, a warning will be displayed and according borders won't be denoised.
7537
7538 Default value is @var{blocksize}-1, which is the best possible setting.
7539
7540 @item expr, e
7541 Set the coefficient factor expression.
7542
7543 For each coefficient of a DCT block, this expression will be evaluated as a
7544 multiplier value for the coefficient.
7545
7546 If this is option is set, the @option{sigma} option will be ignored.
7547
7548 The absolute value of the coefficient can be accessed through the @var{c}
7549 variable.
7550
7551 @item n
7552 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
7553 @var{blocksize}, which is the width and height of the processed blocks.
7554
7555 The default value is @var{3} (8x8) and can be raised to @var{4} for a
7556 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
7557 on the speed processing. Also, a larger block size does not necessarily means a
7558 better de-noising.
7559 @end table
7560
7561 @subsection Examples
7562
7563 Apply a denoise with a @option{sigma} of @code{4.5}:
7564 @example
7565 dctdnoiz=4.5
7566 @end example
7567
7568 The same operation can be achieved using the expression system:
7569 @example
7570 dctdnoiz=e='gte(c, 4.5*3)'
7571 @end example
7572
7573 Violent denoise using a block size of @code{16x16}:
7574 @example
7575 dctdnoiz=15:n=4
7576 @end example
7577
7578 @section deband
7579
7580 Remove banding artifacts from input video.
7581 It works by replacing banded pixels with average value of referenced pixels.
7582
7583 The filter accepts the following options:
7584
7585 @table @option
7586 @item 1thr
7587 @item 2thr
7588 @item 3thr
7589 @item 4thr
7590 Set banding detection threshold for each plane. Default is 0.02.
7591 Valid range is 0.00003 to 0.5.
7592 If difference between current pixel and reference pixel is less than threshold,
7593 it will be considered as banded.
7594
7595 @item range, r
7596 Banding detection range in pixels. Default is 16. If positive, random number
7597 in range 0 to set value will be used. If negative, exact absolute value
7598 will be used.
7599 The range defines square of four pixels around current pixel.
7600
7601 @item direction, d
7602 Set direction in radians from which four pixel will be compared. If positive,
7603 random direction from 0 to set direction will be picked. If negative, exact of
7604 absolute value will be picked. For example direction 0, -PI or -2*PI radians
7605 will pick only pixels on same row and -PI/2 will pick only pixels on same
7606 column.
7607
7608 @item blur, b
7609 If enabled, current pixel is compared with average value of all four
7610 surrounding pixels. The default is enabled. If disabled current pixel is
7611 compared with all four surrounding pixels. The pixel is considered banded
7612 if only all four differences with surrounding pixels are less than threshold.
7613
7614 @item coupling, c
7615 If enabled, current pixel is changed if and only if all pixel components are banded,
7616 e.g. banding detection threshold is triggered for all color components.
7617 The default is disabled.
7618 @end table
7619
7620 @section deblock
7621
7622 Remove blocking artifacts from input video.
7623
7624 The filter accepts the following options:
7625
7626 @table @option
7627 @item filter
7628 Set filter type, can be @var{weak} or @var{strong}. Default is @var{strong}.
7629 This controls what kind of deblocking is applied.
7630
7631 @item block
7632 Set size of block, allowed range is from 4 to 512. Default is @var{8}.
7633
7634 @item alpha
7635 @item beta
7636 @item gamma
7637 @item delta
7638 Set blocking detection thresholds. Allowed range is 0 to 1.
7639 Defaults are: @var{0.098} for @var{alpha} and @var{0.05} for the rest.
7640 Using higher threshold gives more deblocking strength.
7641 Setting @var{alpha} controls threshold detection at exact edge of block.
7642 Remaining options controls threshold detection near the edge. Each one for
7643 below/above or left/right. Setting any of those to @var{0} disables
7644 deblocking.
7645
7646 @item planes
7647 Set planes to filter. Default is to filter all available planes.
7648 @end table
7649
7650 @subsection Examples
7651
7652 @itemize
7653 @item
7654 Deblock using weak filter and block size of 4 pixels.
7655 @example
7656 deblock=filter=weak:block=4
7657 @end example
7658
7659 @item
7660 Deblock using strong filter, block size of 4 pixels and custom thresholds for
7661 deblocking more edges.
7662 @example
7663 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05
7664 @end example
7665
7666 @item
7667 Similar as above, but filter only first plane.
7668 @example
7669 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1
7670 @end example
7671
7672 @item
7673 Similar as above, but filter only second and third plane.
7674 @example
7675 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
7676 @end example
7677 @end itemize
7678
7679 @anchor{decimate}
7680 @section decimate
7681
7682 Drop duplicated frames at regular intervals.
7683
7684 The filter accepts the following options:
7685
7686 @table @option
7687 @item cycle
7688 Set the number of frames from which one will be dropped. Setting this to
7689 @var{N} means one frame in every batch of @var{N} frames will be dropped.
7690 Default is @code{5}.
7691
7692 @item dupthresh
7693 Set the threshold for duplicate detection. If the difference metric for a frame
7694 is less than or equal to this value, then it is declared as duplicate. Default
7695 is @code{1.1}
7696
7697 @item scthresh
7698 Set scene change threshold. Default is @code{15}.
7699
7700 @item blockx
7701 @item blocky
7702 Set the size of the x and y-axis blocks used during metric calculations.
7703 Larger blocks give better noise suppression, but also give worse detection of
7704 small movements. Must be a power of two. Default is @code{32}.
7705
7706 @item ppsrc
7707 Mark main input as a pre-processed input and activate clean source input
7708 stream. This allows the input to be pre-processed with various filters to help
7709 the metrics calculation while keeping the frame selection lossless. When set to
7710 @code{1}, the first stream is for the pre-processed input, and the second
7711 stream is the clean source from where the kept frames are chosen. Default is
7712 @code{0}.
7713
7714 @item chroma
7715 Set whether or not chroma is considered in the metric calculations. Default is
7716 @code{1}.
7717 @end table
7718
7719 @section deconvolve
7720
7721 Apply 2D deconvolution of video stream in frequency domain using second stream
7722 as impulse.
7723
7724 The filter accepts the following options:
7725
7726 @table @option
7727 @item planes
7728 Set which planes to process.
7729
7730 @item impulse
7731 Set which impulse video frames will be processed, can be @var{first}
7732 or @var{all}. Default is @var{all}.
7733
7734 @item noise
7735 Set noise when doing divisions. Default is @var{0.0000001}. Useful when width
7736 and height are not same and not power of 2 or if stream prior to convolving
7737 had noise.
7738 @end table
7739
7740 The @code{deconvolve} filter also supports the @ref{framesync} options.
7741
7742 @section deflate
7743
7744 Apply deflate effect to the video.
7745
7746 This filter replaces the pixel by the local(3x3) average by taking into account
7747 only values lower than the pixel.
7748
7749 It accepts the following options:
7750
7751 @table @option
7752 @item threshold0
7753 @item threshold1
7754 @item threshold2
7755 @item threshold3
7756 Limit the maximum change for each plane, default is 65535.
7757 If 0, plane will remain unchanged.
7758 @end table
7759
7760 @section deflicker
7761
7762 Remove temporal frame luminance variations.
7763
7764 It accepts the following options:
7765
7766 @table @option
7767 @item size, s
7768 Set moving-average filter size in frames. Default is 5. Allowed range is 2 - 129.
7769
7770 @item mode, m
7771 Set averaging mode to smooth temporal luminance variations.
7772
7773 Available values are:
7774 @table @samp
7775 @item am
7776 Arithmetic mean
7777
7778 @item gm
7779 Geometric mean
7780
7781 @item hm
7782 Harmonic mean
7783
7784 @item qm
7785 Quadratic mean
7786
7787 @item cm
7788 Cubic mean
7789
7790 @item pm
7791 Power mean
7792
7793 @item median
7794 Median
7795 @end table
7796
7797 @item bypass
7798 Do not actually modify frame. Useful when one only wants metadata.
7799 @end table
7800
7801 @section dejudder
7802
7803 Remove judder produced by partially interlaced telecined content.
7804
7805 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
7806 source was partially telecined content then the output of @code{pullup,dejudder}
7807 will have a variable frame rate. May change the recorded frame rate of the
7808 container. Aside from that change, this filter will not affect constant frame
7809 rate video.
7810
7811 The option available in this filter is:
7812 @table @option
7813
7814 @item cycle
7815 Specify the length of the window over which the judder repeats.
7816
7817 Accepts any integer greater than 1. Useful values are:
7818 @table @samp
7819
7820 @item 4
7821 If the original was telecined from 24 to 30 fps (Film to NTSC).
7822
7823 @item 5
7824 If the original was telecined from 25 to 30 fps (PAL to NTSC).
7825
7826 @item 20
7827 If a mixture of the two.
7828 @end table
7829
7830 The default is @samp{4}.
7831 @end table
7832
7833 @section delogo
7834
7835 Suppress a TV station logo by a simple interpolation of the surrounding
7836 pixels. Just set a rectangle covering the logo and watch it disappear
7837 (and sometimes something even uglier appear - your mileage may vary).
7838
7839 It accepts the following parameters:
7840 @table @option
7841
7842 @item x
7843 @item y
7844 Specify the top left corner coordinates of the logo. They must be
7845 specified.
7846
7847 @item w
7848 @item h
7849 Specify the width and height of the logo to clear. They must be
7850 specified.
7851
7852 @item band, t
7853 Specify the thickness of the fuzzy edge of the rectangle (added to
7854 @var{w} and @var{h}). The default value is 1. This option is
7855 deprecated, setting higher values should no longer be necessary and
7856 is not recommended.
7857
7858 @item show
7859 When set to 1, a green rectangle is drawn on the screen to simplify
7860 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
7861 The default value is 0.
7862
7863 The rectangle is drawn on the outermost pixels which will be (partly)
7864 replaced with interpolated values. The values of the next pixels
7865 immediately outside this rectangle in each direction will be used to
7866 compute the interpolated pixel values inside the rectangle.
7867
7868 @end table
7869
7870 @subsection Examples
7871
7872 @itemize
7873 @item
7874 Set a rectangle covering the area with top left corner coordinates 0,0
7875 and size 100x77, and a band of size 10:
7876 @example
7877 delogo=x=0:y=0:w=100:h=77:band=10
7878 @end example
7879
7880 @end itemize
7881
7882 @section deshake
7883
7884 Attempt to fix small changes in horizontal and/or vertical shift. This
7885 filter helps remove camera shake from hand-holding a camera, bumping a
7886 tripod, moving on a vehicle, etc.
7887
7888 The filter accepts the following options:
7889
7890 @table @option
7891
7892 @item x
7893 @item y
7894 @item w
7895 @item h
7896 Specify a rectangular area where to limit the search for motion
7897 vectors.
7898 If desired the search for motion vectors can be limited to a
7899 rectangular area of the frame defined by its top left corner, width
7900 and height. These parameters have the same meaning as the drawbox
7901 filter which can be used to visualise the position of the bounding
7902 box.
7903
7904 This is useful when simultaneous movement of subjects within the frame
7905 might be confused for camera motion by the motion vector search.
7906
7907 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
7908 then the full frame is used. This allows later options to be set
7909 without specifying the bounding box for the motion vector search.
7910
7911 Default - search the whole frame.
7912
7913 @item rx
7914 @item ry
7915 Specify the maximum extent of movement in x and y directions in the
7916 range 0-64 pixels. Default 16.
7917
7918 @item edge
7919 Specify how to generate pixels to fill blanks at the edge of the
7920 frame. Available values are:
7921 @table @samp
7922 @item blank, 0
7923 Fill zeroes at blank locations
7924 @item original, 1
7925 Original image at blank locations
7926 @item clamp, 2
7927 Extruded edge value at blank locations
7928 @item mirror, 3
7929 Mirrored edge at blank locations
7930 @end table
7931 Default value is @samp{mirror}.
7932
7933 @item blocksize
7934 Specify the blocksize to use for motion search. Range 4-128 pixels,
7935 default 8.
7936
7937 @item contrast
7938 Specify the contrast threshold for blocks. Only blocks with more than
7939 the specified contrast (difference between darkest and lightest
7940 pixels) will be considered. Range 1-255, default 125.
7941
7942 @item search
7943 Specify the search strategy. Available values are:
7944 @table @samp
7945 @item exhaustive, 0
7946 Set exhaustive search
7947 @item less, 1
7948 Set less exhaustive search.
7949 @end table
7950 Default value is @samp{exhaustive}.
7951
7952 @item filename
7953 If set then a detailed log of the motion search is written to the
7954 specified file.
7955
7956 @end table
7957
7958 @section despill
7959
7960 Remove unwanted contamination of foreground colors, caused by reflected color of
7961 greenscreen or bluescreen.
7962
7963 This filter accepts the following options:
7964
7965 @table @option
7966 @item type
7967 Set what type of despill to use.
7968
7969 @item mix
7970 Set how spillmap will be generated.
7971
7972 @item expand
7973 Set how much to get rid of still remaining spill.
7974
7975 @item red
7976 Controls amount of red in spill area.
7977
7978 @item green
7979 Controls amount of green in spill area.
7980 Should be -1 for greenscreen.
7981
7982 @item blue
7983 Controls amount of blue in spill area.
7984 Should be -1 for bluescreen.
7985
7986 @item brightness
7987 Controls brightness of spill area, preserving colors.
7988
7989 @item alpha
7990 Modify alpha from generated spillmap.
7991 @end table
7992
7993 @section detelecine
7994
7995 Apply an exact inverse of the telecine operation. It requires a predefined
7996 pattern specified using the pattern option which must be the same as that passed
7997 to the telecine filter.
7998
7999 This filter accepts the following options:
8000
8001 @table @option
8002 @item first_field
8003 @table @samp
8004 @item top, t
8005 top field first
8006 @item bottom, b
8007 bottom field first
8008 The default value is @code{top}.
8009 @end table
8010
8011 @item pattern
8012 A string of numbers representing the pulldown pattern you wish to apply.
8013 The default value is @code{23}.
8014
8015 @item start_frame
8016 A number representing position of the first frame with respect to the telecine
8017 pattern. This is to be used if the stream is cut. The default value is @code{0}.
8018 @end table
8019
8020 @section dilation
8021
8022 Apply dilation effect to the video.
8023
8024 This filter replaces the pixel by the local(3x3) maximum.
8025
8026 It accepts the following options:
8027
8028 @table @option
8029 @item threshold0
8030 @item threshold1
8031 @item threshold2
8032 @item threshold3
8033 Limit the maximum change for each plane, default is 65535.
8034 If 0, plane will remain unchanged.
8035
8036 @item coordinates
8037 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
8038 pixels are used.
8039
8040 Flags to local 3x3 coordinates maps like this:
8041
8042     1 2 3
8043     4   5
8044     6 7 8
8045 @end table
8046
8047 @section displace
8048
8049 Displace pixels as indicated by second and third input stream.
8050
8051 It takes three input streams and outputs one stream, the first input is the
8052 source, and second and third input are displacement maps.
8053
8054 The second input specifies how much to displace pixels along the
8055 x-axis, while the third input specifies how much to displace pixels
8056 along the y-axis.
8057 If one of displacement map streams terminates, last frame from that
8058 displacement map will be used.
8059
8060 Note that once generated, displacements maps can be reused over and over again.
8061
8062 A description of the accepted options follows.
8063
8064 @table @option
8065 @item edge
8066 Set displace behavior for pixels that are out of range.
8067
8068 Available values are:
8069 @table @samp
8070 @item blank
8071 Missing pixels are replaced by black pixels.
8072
8073 @item smear
8074 Adjacent pixels will spread out to replace missing pixels.
8075
8076 @item wrap
8077 Out of range pixels are wrapped so they point to pixels of other side.
8078
8079 @item mirror
8080 Out of range pixels will be replaced with mirrored pixels.
8081 @end table
8082 Default is @samp{smear}.
8083
8084 @end table
8085
8086 @subsection Examples
8087
8088 @itemize
8089 @item
8090 Add ripple effect to rgb input of video size hd720:
8091 @example
8092 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
8093 @end example
8094
8095 @item
8096 Add wave effect to rgb input of video size hd720:
8097 @example
8098 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
8099 @end example
8100 @end itemize
8101
8102 @section drawbox
8103
8104 Draw a colored box on the input image.
8105
8106 It accepts the following parameters:
8107
8108 @table @option
8109 @item x
8110 @item y
8111 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
8112
8113 @item width, w
8114 @item height, h
8115 The expressions which specify the width and height of the box; if 0 they are interpreted as
8116 the input width and height. It defaults to 0.
8117
8118 @item color, c
8119 Specify the color of the box to write. For the general syntax of this option,
8120 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
8121 value @code{invert} is used, the box edge color is the same as the
8122 video with inverted luma.
8123
8124 @item thickness, t
8125 The expression which sets the thickness of the box edge.
8126 A value of @code{fill} will create a filled box. Default value is @code{3}.
8127
8128 See below for the list of accepted constants.
8129
8130 @item replace
8131 Applicable if the input has alpha. With value @code{1}, the pixels of the painted box
8132 will overwrite the video's color and alpha pixels.
8133 Default is @code{0}, which composites the box onto the input, leaving the video's alpha intact.
8134 @end table
8135
8136 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
8137 following constants:
8138
8139 @table @option
8140 @item dar
8141 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
8142
8143 @item hsub
8144 @item vsub
8145 horizontal and vertical chroma subsample values. For example for the
8146 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8147
8148 @item in_h, ih
8149 @item in_w, iw
8150 The input width and height.
8151
8152 @item sar
8153 The input sample aspect ratio.
8154
8155 @item x
8156 @item y
8157 The x and y offset coordinates where the box is drawn.
8158
8159 @item w
8160 @item h
8161 The width and height of the drawn box.
8162
8163 @item t
8164 The thickness of the drawn box.
8165
8166 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
8167 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
8168
8169 @end table
8170
8171 @subsection Examples
8172
8173 @itemize
8174 @item
8175 Draw a black box around the edge of the input image:
8176 @example
8177 drawbox
8178 @end example
8179
8180 @item
8181 Draw a box with color red and an opacity of 50%:
8182 @example
8183 drawbox=10:20:200:60:red@@0.5
8184 @end example
8185
8186 The previous example can be specified as:
8187 @example
8188 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
8189 @end example
8190
8191 @item
8192 Fill the box with pink color:
8193 @example
8194 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=fill
8195 @end example
8196
8197 @item
8198 Draw a 2-pixel red 2.40:1 mask:
8199 @example
8200 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
8201 @end example
8202 @end itemize
8203
8204 @section drawgrid
8205
8206 Draw a grid on the input image.
8207
8208 It accepts the following parameters:
8209
8210 @table @option
8211 @item x
8212 @item y
8213 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
8214
8215 @item width, w
8216 @item height, h
8217 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
8218 input width and height, respectively, minus @code{thickness}, so image gets
8219 framed. Default to 0.
8220
8221 @item color, c
8222 Specify the color of the grid. For the general syntax of this option,
8223 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
8224 value @code{invert} is used, the grid color is the same as the
8225 video with inverted luma.
8226
8227 @item thickness, t
8228 The expression which sets the thickness of the grid line. Default value is @code{1}.
8229
8230 See below for the list of accepted constants.
8231
8232 @item replace
8233 Applicable if the input has alpha. With @code{1} the pixels of the painted grid
8234 will overwrite the video's color and alpha pixels.
8235 Default is @code{0}, which composites the grid onto the input, leaving the video's alpha intact.
8236 @end table
8237
8238 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
8239 following constants:
8240
8241 @table @option
8242 @item dar
8243 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
8244
8245 @item hsub
8246 @item vsub
8247 horizontal and vertical chroma subsample values. For example for the
8248 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8249
8250 @item in_h, ih
8251 @item in_w, iw
8252 The input grid cell width and height.
8253
8254 @item sar
8255 The input sample aspect ratio.
8256
8257 @item x
8258 @item y
8259 The x and y coordinates of some point of grid intersection (meant to configure offset).
8260
8261 @item w
8262 @item h
8263 The width and height of the drawn cell.
8264
8265 @item t
8266 The thickness of the drawn cell.
8267
8268 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
8269 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
8270
8271 @end table
8272
8273 @subsection Examples
8274
8275 @itemize
8276 @item
8277 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
8278 @example
8279 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
8280 @end example
8281
8282 @item
8283 Draw a white 3x3 grid with an opacity of 50%:
8284 @example
8285 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
8286 @end example
8287 @end itemize
8288
8289 @anchor{drawtext}
8290 @section drawtext
8291
8292 Draw a text string or text from a specified file on top of a video, using the
8293 libfreetype library.
8294
8295 To enable compilation of this filter, you need to configure FFmpeg with
8296 @code{--enable-libfreetype}.
8297 To enable default font fallback and the @var{font} option you need to
8298 configure FFmpeg with @code{--enable-libfontconfig}.
8299 To enable the @var{text_shaping} option, you need to configure FFmpeg with
8300 @code{--enable-libfribidi}.
8301
8302 @subsection Syntax
8303
8304 It accepts the following parameters:
8305
8306 @table @option
8307
8308 @item box
8309 Used to draw a box around text using the background color.
8310 The value must be either 1 (enable) or 0 (disable).
8311 The default value of @var{box} is 0.
8312
8313 @item boxborderw
8314 Set the width of the border to be drawn around the box using @var{boxcolor}.
8315 The default value of @var{boxborderw} is 0.
8316
8317 @item boxcolor
8318 The color to be used for drawing box around text. For the syntax of this
8319 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
8320
8321 The default value of @var{boxcolor} is "white".
8322
8323 @item line_spacing
8324 Set the line spacing in pixels of the border to be drawn around the box using @var{box}.
8325 The default value of @var{line_spacing} is 0.
8326
8327 @item borderw
8328 Set the width of the border to be drawn around the text using @var{bordercolor}.
8329 The default value of @var{borderw} is 0.
8330
8331 @item bordercolor
8332 Set the color to be used for drawing border around text. For the syntax of this
8333 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
8334
8335 The default value of @var{bordercolor} is "black".
8336
8337 @item expansion
8338 Select how the @var{text} is expanded. Can be either @code{none},
8339 @code{strftime} (deprecated) or
8340 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
8341 below for details.
8342
8343 @item basetime
8344 Set a start time for the count. Value is in microseconds. Only applied
8345 in the deprecated strftime expansion mode. To emulate in normal expansion
8346 mode use the @code{pts} function, supplying the start time (in seconds)
8347 as the second argument.
8348
8349 @item fix_bounds
8350 If true, check and fix text coords to avoid clipping.
8351
8352 @item fontcolor
8353 The color to be used for drawing fonts. For the syntax of this option, check
8354 the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
8355
8356 The default value of @var{fontcolor} is "black".
8357
8358 @item fontcolor_expr
8359 String which is expanded the same way as @var{text} to obtain dynamic
8360 @var{fontcolor} value. By default this option has empty value and is not
8361 processed. When this option is set, it overrides @var{fontcolor} option.
8362
8363 @item font
8364 The font family to be used for drawing text. By default Sans.
8365
8366 @item fontfile
8367 The font file to be used for drawing text. The path must be included.
8368 This parameter is mandatory if the fontconfig support is disabled.
8369
8370 @item alpha
8371 Draw the text applying alpha blending. The value can
8372 be a number between 0.0 and 1.0.
8373 The expression accepts the same variables @var{x, y} as well.
8374 The default value is 1.
8375 Please see @var{fontcolor_expr}.
8376
8377 @item fontsize
8378 The font size to be used for drawing text.
8379 The default value of @var{fontsize} is 16.
8380
8381 @item text_shaping
8382 If set to 1, attempt to shape the text (for example, reverse the order of
8383 right-to-left text and join Arabic characters) before drawing it.
8384 Otherwise, just draw the text exactly as given.
8385 By default 1 (if supported).
8386
8387 @item ft_load_flags
8388 The flags to be used for loading the fonts.
8389
8390 The flags map the corresponding flags supported by libfreetype, and are
8391 a combination of the following values:
8392 @table @var
8393 @item default
8394 @item no_scale
8395 @item no_hinting
8396 @item render
8397 @item no_bitmap
8398 @item vertical_layout
8399 @item force_autohint
8400 @item crop_bitmap
8401 @item pedantic
8402 @item ignore_global_advance_width
8403 @item no_recurse
8404 @item ignore_transform
8405 @item monochrome
8406 @item linear_design
8407 @item no_autohint
8408 @end table
8409
8410 Default value is "default".
8411
8412 For more information consult the documentation for the FT_LOAD_*
8413 libfreetype flags.
8414
8415 @item shadowcolor
8416 The color to be used for drawing a shadow behind the drawn text. For the
8417 syntax of this option, check the @ref{color syntax,,"Color" section in the
8418 ffmpeg-utils manual,ffmpeg-utils}.
8419
8420 The default value of @var{shadowcolor} is "black".
8421
8422 @item shadowx
8423 @item shadowy
8424 The x and y offsets for the text shadow position with respect to the
8425 position of the text. They can be either positive or negative
8426 values. The default value for both is "0".
8427
8428 @item start_number
8429 The starting frame number for the n/frame_num variable. The default value
8430 is "0".
8431
8432 @item tabsize
8433 The size in number of spaces to use for rendering the tab.
8434 Default value is 4.
8435
8436 @item timecode
8437 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
8438 format. It can be used with or without text parameter. @var{timecode_rate}
8439 option must be specified.
8440
8441 @item timecode_rate, rate, r
8442 Set the timecode frame rate (timecode only). Value will be rounded to nearest
8443 integer. Minimum value is "1".
8444 Drop-frame timecode is supported for frame rates 30 & 60.
8445
8446 @item tc24hmax
8447 If set to 1, the output of the timecode option will wrap around at 24 hours.
8448 Default is 0 (disabled).
8449
8450 @item text
8451 The text string to be drawn. The text must be a sequence of UTF-8
8452 encoded characters.
8453 This parameter is mandatory if no file is specified with the parameter
8454 @var{textfile}.
8455
8456 @item textfile
8457 A text file containing text to be drawn. The text must be a sequence
8458 of UTF-8 encoded characters.
8459
8460 This parameter is mandatory if no text string is specified with the
8461 parameter @var{text}.
8462
8463 If both @var{text} and @var{textfile} are specified, an error is thrown.
8464
8465 @item reload
8466 If set to 1, the @var{textfile} will be reloaded before each frame.
8467 Be sure to update it atomically, or it may be read partially, or even fail.
8468
8469 @item x
8470 @item y
8471 The expressions which specify the offsets where text will be drawn
8472 within the video frame. They are relative to the top/left border of the
8473 output image.
8474
8475 The default value of @var{x} and @var{y} is "0".
8476
8477 See below for the list of accepted constants and functions.
8478 @end table
8479
8480 The parameters for @var{x} and @var{y} are expressions containing the
8481 following constants and functions:
8482
8483 @table @option
8484 @item dar
8485 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
8486
8487 @item hsub
8488 @item vsub
8489 horizontal and vertical chroma subsample values. For example for the
8490 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8491
8492 @item line_h, lh
8493 the height of each text line
8494
8495 @item main_h, h, H
8496 the input height
8497
8498 @item main_w, w, W
8499 the input width
8500
8501 @item max_glyph_a, ascent
8502 the maximum distance from the baseline to the highest/upper grid
8503 coordinate used to place a glyph outline point, for all the rendered
8504 glyphs.
8505 It is a positive value, due to the grid's orientation with the Y axis
8506 upwards.
8507
8508 @item max_glyph_d, descent
8509 the maximum distance from the baseline to the lowest grid coordinate
8510 used to place a glyph outline point, for all the rendered glyphs.
8511 This is a negative value, due to the grid's orientation, with the Y axis
8512 upwards.
8513
8514 @item max_glyph_h
8515 maximum glyph height, that is the maximum height for all the glyphs
8516 contained in the rendered text, it is equivalent to @var{ascent} -
8517 @var{descent}.
8518
8519 @item max_glyph_w
8520 maximum glyph width, that is the maximum width for all the glyphs
8521 contained in the rendered text
8522
8523 @item n
8524 the number of input frame, starting from 0
8525
8526 @item rand(min, max)
8527 return a random number included between @var{min} and @var{max}
8528
8529 @item sar
8530 The input sample aspect ratio.
8531
8532 @item t
8533 timestamp expressed in seconds, NAN if the input timestamp is unknown
8534
8535 @item text_h, th
8536 the height of the rendered text
8537
8538 @item text_w, tw
8539 the width of the rendered text
8540
8541 @item x
8542 @item y
8543 the x and y offset coordinates where the text is drawn.
8544
8545 These parameters allow the @var{x} and @var{y} expressions to refer
8546 each other, so you can for example specify @code{y=x/dar}.
8547 @end table
8548
8549 @anchor{drawtext_expansion}
8550 @subsection Text expansion
8551
8552 If @option{expansion} is set to @code{strftime},
8553 the filter recognizes strftime() sequences in the provided text and
8554 expands them accordingly. Check the documentation of strftime(). This
8555 feature is deprecated.
8556
8557 If @option{expansion} is set to @code{none}, the text is printed verbatim.
8558
8559 If @option{expansion} is set to @code{normal} (which is the default),
8560 the following expansion mechanism is used.
8561
8562 The backslash character @samp{\}, followed by any character, always expands to
8563 the second character.
8564
8565 Sequences of the form @code{%@{...@}} are expanded. The text between the
8566 braces is a function name, possibly followed by arguments separated by ':'.
8567 If the arguments contain special characters or delimiters (':' or '@}'),
8568 they should be escaped.
8569
8570 Note that they probably must also be escaped as the value for the
8571 @option{text} option in the filter argument string and as the filter
8572 argument in the filtergraph description, and possibly also for the shell,
8573 that makes up to four levels of escaping; using a text file avoids these
8574 problems.
8575
8576 The following functions are available:
8577
8578 @table @command
8579
8580 @item expr, e
8581 The expression evaluation result.
8582
8583 It must take one argument specifying the expression to be evaluated,
8584 which accepts the same constants and functions as the @var{x} and
8585 @var{y} values. Note that not all constants should be used, for
8586 example the text size is not known when evaluating the expression, so
8587 the constants @var{text_w} and @var{text_h} will have an undefined
8588 value.
8589
8590 @item expr_int_format, eif
8591 Evaluate the expression's value and output as formatted integer.
8592
8593 The first argument is the expression to be evaluated, just as for the @var{expr} function.
8594 The second argument specifies the output format. Allowed values are @samp{x},
8595 @samp{X}, @samp{d} and @samp{u}. They are treated exactly as in the
8596 @code{printf} function.
8597 The third parameter is optional and sets the number of positions taken by the output.
8598 It can be used to add padding with zeros from the left.
8599
8600 @item gmtime
8601 The time at which the filter is running, expressed in UTC.
8602 It can accept an argument: a strftime() format string.
8603
8604 @item localtime
8605 The time at which the filter is running, expressed in the local time zone.
8606 It can accept an argument: a strftime() format string.
8607
8608 @item metadata
8609 Frame metadata. Takes one or two arguments.
8610
8611 The first argument is mandatory and specifies the metadata key.
8612
8613 The second argument is optional and specifies a default value, used when the
8614 metadata key is not found or empty.
8615
8616 @item n, frame_num
8617 The frame number, starting from 0.
8618
8619 @item pict_type
8620 A 1 character description of the current picture type.
8621
8622 @item pts
8623 The timestamp of the current frame.
8624 It can take up to three arguments.
8625
8626 The first argument is the format of the timestamp; it defaults to @code{flt}
8627 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
8628 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
8629 @code{gmtime} stands for the timestamp of the frame formatted as UTC time;
8630 @code{localtime} stands for the timestamp of the frame formatted as
8631 local time zone time.
8632
8633 The second argument is an offset added to the timestamp.
8634
8635 If the format is set to @code{hms}, a third argument @code{24HH} may be
8636 supplied to present the hour part of the formatted timestamp in 24h format
8637 (00-23).
8638
8639 If the format is set to @code{localtime} or @code{gmtime},
8640 a third argument may be supplied: a strftime() format string.
8641 By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
8642 @end table
8643
8644 @subsection Examples
8645
8646 @itemize
8647 @item
8648 Draw "Test Text" with font FreeSerif, using the default values for the
8649 optional parameters.
8650
8651 @example
8652 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
8653 @end example
8654
8655 @item
8656 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
8657 and y=50 (counting from the top-left corner of the screen), text is
8658 yellow with a red box around it. Both the text and the box have an
8659 opacity of 20%.
8660
8661 @example
8662 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
8663           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
8664 @end example
8665
8666 Note that the double quotes are not necessary if spaces are not used
8667 within the parameter list.
8668
8669 @item
8670 Show the text at the center of the video frame:
8671 @example
8672 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
8673 @end example
8674
8675 @item
8676 Show the text at a random position, switching to a new position every 30 seconds:
8677 @example
8678 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)"
8679 @end example
8680
8681 @item
8682 Show a text line sliding from right to left in the last row of the video
8683 frame. The file @file{LONG_LINE} is assumed to contain a single line
8684 with no newlines.
8685 @example
8686 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
8687 @end example
8688
8689 @item
8690 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
8691 @example
8692 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
8693 @end example
8694
8695 @item
8696 Draw a single green letter "g", at the center of the input video.
8697 The glyph baseline is placed at half screen height.
8698 @example
8699 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
8700 @end example
8701
8702 @item
8703 Show text for 1 second every 3 seconds:
8704 @example
8705 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
8706 @end example
8707
8708 @item
8709 Use fontconfig to set the font. Note that the colons need to be escaped.
8710 @example
8711 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
8712 @end example
8713
8714 @item
8715 Print the date of a real-time encoding (see strftime(3)):
8716 @example
8717 drawtext='fontfile=FreeSans.ttf:text=%@{localtime\:%a %b %d %Y@}'
8718 @end example
8719
8720 @item
8721 Show text fading in and out (appearing/disappearing):
8722 @example
8723 #!/bin/sh
8724 DS=1.0 # display start
8725 DE=10.0 # display end
8726 FID=1.5 # fade in duration
8727 FOD=5 # fade out duration
8728 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 @}"
8729 @end example
8730
8731 @item
8732 Horizontally align multiple separate texts. Note that @option{max_glyph_a}
8733 and the @option{fontsize} value are included in the @option{y} offset.
8734 @example
8735 drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a,
8736 drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
8737 @end example
8738
8739 @end itemize
8740
8741 For more information about libfreetype, check:
8742 @url{http://www.freetype.org/}.
8743
8744 For more information about fontconfig, check:
8745 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
8746
8747 For more information about libfribidi, check:
8748 @url{http://fribidi.org/}.
8749
8750 @section edgedetect
8751
8752 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
8753
8754 The filter accepts the following options:
8755
8756 @table @option
8757 @item low
8758 @item high
8759 Set low and high threshold values used by the Canny thresholding
8760 algorithm.
8761
8762 The high threshold selects the "strong" edge pixels, which are then
8763 connected through 8-connectivity with the "weak" edge pixels selected
8764 by the low threshold.
8765
8766 @var{low} and @var{high} threshold values must be chosen in the range
8767 [0,1], and @var{low} should be lesser or equal to @var{high}.
8768
8769 Default value for @var{low} is @code{20/255}, and default value for @var{high}
8770 is @code{50/255}.
8771
8772 @item mode
8773 Define the drawing mode.
8774
8775 @table @samp
8776 @item wires
8777 Draw white/gray wires on black background.
8778
8779 @item colormix
8780 Mix the colors to create a paint/cartoon effect.
8781
8782 @item canny
8783 Apply Canny edge detector on all selected planes.
8784 @end table
8785 Default value is @var{wires}.
8786
8787 @item planes
8788 Select planes for filtering. By default all available planes are filtered.
8789 @end table
8790
8791 @subsection Examples
8792
8793 @itemize
8794 @item
8795 Standard edge detection with custom values for the hysteresis thresholding:
8796 @example
8797 edgedetect=low=0.1:high=0.4
8798 @end example
8799
8800 @item
8801 Painting effect without thresholding:
8802 @example
8803 edgedetect=mode=colormix:high=0
8804 @end example
8805 @end itemize
8806
8807 @section eq
8808 Set brightness, contrast, saturation and approximate gamma adjustment.
8809
8810 The filter accepts the following options:
8811
8812 @table @option
8813 @item contrast
8814 Set the contrast expression. The value must be a float value in range
8815 @code{-2.0} to @code{2.0}. The default value is "1".
8816
8817 @item brightness
8818 Set the brightness expression. The value must be a float value in
8819 range @code{-1.0} to @code{1.0}. The default value is "0".
8820
8821 @item saturation
8822 Set the saturation expression. The value must be a float in
8823 range @code{0.0} to @code{3.0}. The default value is "1".
8824
8825 @item gamma
8826 Set the gamma expression. The value must be a float in range
8827 @code{0.1} to @code{10.0}.  The default value is "1".
8828
8829 @item gamma_r
8830 Set the gamma expression for red. The value must be a float in
8831 range @code{0.1} to @code{10.0}. The default value is "1".
8832
8833 @item gamma_g
8834 Set the gamma expression for green. The value must be a float in range
8835 @code{0.1} to @code{10.0}. The default value is "1".
8836
8837 @item gamma_b
8838 Set the gamma expression for blue. The value must be a float in range
8839 @code{0.1} to @code{10.0}. The default value is "1".
8840
8841 @item gamma_weight
8842 Set the gamma weight expression. It can be used to reduce the effect
8843 of a high gamma value on bright image areas, e.g. keep them from
8844 getting overamplified and just plain white. The value must be a float
8845 in range @code{0.0} to @code{1.0}. A value of @code{0.0} turns the
8846 gamma correction all the way down while @code{1.0} leaves it at its
8847 full strength. Default is "1".
8848
8849 @item eval
8850 Set when the expressions for brightness, contrast, saturation and
8851 gamma expressions are evaluated.
8852
8853 It accepts the following values:
8854 @table @samp
8855 @item init
8856 only evaluate expressions once during the filter initialization or
8857 when a command is processed
8858
8859 @item frame
8860 evaluate expressions for each incoming frame
8861 @end table
8862
8863 Default value is @samp{init}.
8864 @end table
8865
8866 The expressions accept the following parameters:
8867 @table @option
8868 @item n
8869 frame count of the input frame starting from 0
8870
8871 @item pos
8872 byte position of the corresponding packet in the input file, NAN if
8873 unspecified
8874
8875 @item r
8876 frame rate of the input video, NAN if the input frame rate is unknown
8877
8878 @item t
8879 timestamp expressed in seconds, NAN if the input timestamp is unknown
8880 @end table
8881
8882 @subsection Commands
8883 The filter supports the following commands:
8884
8885 @table @option
8886 @item contrast
8887 Set the contrast expression.
8888
8889 @item brightness
8890 Set the brightness expression.
8891
8892 @item saturation
8893 Set the saturation expression.
8894
8895 @item gamma
8896 Set the gamma expression.
8897
8898 @item gamma_r
8899 Set the gamma_r expression.
8900
8901 @item gamma_g
8902 Set gamma_g expression.
8903
8904 @item gamma_b
8905 Set gamma_b expression.
8906
8907 @item gamma_weight
8908 Set gamma_weight expression.
8909
8910 The command accepts the same syntax of the corresponding option.
8911
8912 If the specified expression is not valid, it is kept at its current
8913 value.
8914
8915 @end table
8916
8917 @section erosion
8918
8919 Apply erosion effect to the video.
8920
8921 This filter replaces the pixel by the local(3x3) minimum.
8922
8923 It accepts the following options:
8924
8925 @table @option
8926 @item threshold0
8927 @item threshold1
8928 @item threshold2
8929 @item threshold3
8930 Limit the maximum change for each plane, default is 65535.
8931 If 0, plane will remain unchanged.
8932
8933 @item coordinates
8934 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
8935 pixels are used.
8936
8937 Flags to local 3x3 coordinates maps like this:
8938
8939     1 2 3
8940     4   5
8941     6 7 8
8942 @end table
8943
8944 @section extractplanes
8945
8946 Extract color channel components from input video stream into
8947 separate grayscale video streams.
8948
8949 The filter accepts the following option:
8950
8951 @table @option
8952 @item planes
8953 Set plane(s) to extract.
8954
8955 Available values for planes are:
8956 @table @samp
8957 @item y
8958 @item u
8959 @item v
8960 @item a
8961 @item r
8962 @item g
8963 @item b
8964 @end table
8965
8966 Choosing planes not available in the input will result in an error.
8967 That means you cannot select @code{r}, @code{g}, @code{b} planes
8968 with @code{y}, @code{u}, @code{v} planes at same time.
8969 @end table
8970
8971 @subsection Examples
8972
8973 @itemize
8974 @item
8975 Extract luma, u and v color channel component from input video frame
8976 into 3 grayscale outputs:
8977 @example
8978 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
8979 @end example
8980 @end itemize
8981
8982 @section elbg
8983
8984 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
8985
8986 For each input image, the filter will compute the optimal mapping from
8987 the input to the output given the codebook length, that is the number
8988 of distinct output colors.
8989
8990 This filter accepts the following options.
8991
8992 @table @option
8993 @item codebook_length, l
8994 Set codebook length. The value must be a positive integer, and
8995 represents the number of distinct output colors. Default value is 256.
8996
8997 @item nb_steps, n
8998 Set the maximum number of iterations to apply for computing the optimal
8999 mapping. The higher the value the better the result and the higher the
9000 computation time. Default value is 1.
9001
9002 @item seed, s
9003 Set a random seed, must be an integer included between 0 and
9004 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
9005 will try to use a good random seed on a best effort basis.
9006
9007 @item pal8
9008 Set pal8 output pixel format. This option does not work with codebook
9009 length greater than 256.
9010 @end table
9011
9012 @section entropy
9013
9014 Measure graylevel entropy in histogram of color channels of video frames.
9015
9016 It accepts the following parameters:
9017
9018 @table @option
9019 @item mode
9020 Can be either @var{normal} or @var{diff}. Default is @var{normal}.
9021
9022 @var{diff} mode measures entropy of histogram delta values, absolute differences
9023 between neighbour histogram values.
9024 @end table
9025
9026 @section fade
9027
9028 Apply a fade-in/out effect to the input video.
9029
9030 It accepts the following parameters:
9031
9032 @table @option
9033 @item type, t
9034 The effect type can be either "in" for a fade-in, or "out" for a fade-out
9035 effect.
9036 Default is @code{in}.
9037
9038 @item start_frame, s
9039 Specify the number of the frame to start applying the fade
9040 effect at. Default is 0.
9041
9042 @item nb_frames, n
9043 The number of frames that the fade effect lasts. At the end of the
9044 fade-in effect, the output video will have the same intensity as the input video.
9045 At the end of the fade-out transition, the output video will be filled with the
9046 selected @option{color}.
9047 Default is 25.
9048
9049 @item alpha
9050 If set to 1, fade only alpha channel, if one exists on the input.
9051 Default value is 0.
9052
9053 @item start_time, st
9054 Specify the timestamp (in seconds) of the frame to start to apply the fade
9055 effect. If both start_frame and start_time are specified, the fade will start at
9056 whichever comes last.  Default is 0.
9057
9058 @item duration, d
9059 The number of seconds for which the fade effect has to last. At the end of the
9060 fade-in effect the output video will have the same intensity as the input video,
9061 at the end of the fade-out transition the output video will be filled with the
9062 selected @option{color}.
9063 If both duration and nb_frames are specified, duration is used. Default is 0
9064 (nb_frames is used by default).
9065
9066 @item color, c
9067 Specify the color of the fade. Default is "black".
9068 @end table
9069
9070 @subsection Examples
9071
9072 @itemize
9073 @item
9074 Fade in the first 30 frames of video:
9075 @example
9076 fade=in:0:30
9077 @end example
9078
9079 The command above is equivalent to:
9080 @example
9081 fade=t=in:s=0:n=30
9082 @end example
9083
9084 @item
9085 Fade out the last 45 frames of a 200-frame video:
9086 @example
9087 fade=out:155:45
9088 fade=type=out:start_frame=155:nb_frames=45
9089 @end example
9090
9091 @item
9092 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
9093 @example
9094 fade=in:0:25, fade=out:975:25
9095 @end example
9096
9097 @item
9098 Make the first 5 frames yellow, then fade in from frame 5-24:
9099 @example
9100 fade=in:5:20:color=yellow
9101 @end example
9102
9103 @item
9104 Fade in alpha over first 25 frames of video:
9105 @example
9106 fade=in:0:25:alpha=1
9107 @end example
9108
9109 @item
9110 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
9111 @example
9112 fade=t=in:st=5.5:d=0.5
9113 @end example
9114
9115 @end itemize
9116
9117 @section fftfilt
9118 Apply arbitrary expressions to samples in frequency domain
9119
9120 @table @option
9121 @item dc_Y
9122 Adjust the dc value (gain) of the luma plane of the image. The filter
9123 accepts an integer value in range @code{0} to @code{1000}. The default
9124 value is set to @code{0}.
9125
9126 @item dc_U
9127 Adjust the dc value (gain) of the 1st chroma plane of the image. The
9128 filter accepts an integer value in range @code{0} to @code{1000}. The
9129 default value is set to @code{0}.
9130
9131 @item dc_V
9132 Adjust the dc value (gain) of the 2nd chroma plane of the image. The
9133 filter accepts an integer value in range @code{0} to @code{1000}. The
9134 default value is set to @code{0}.
9135
9136 @item weight_Y
9137 Set the frequency domain weight expression for the luma plane.
9138
9139 @item weight_U
9140 Set the frequency domain weight expression for the 1st chroma plane.
9141
9142 @item weight_V
9143 Set the frequency domain weight expression for the 2nd chroma plane.
9144
9145 @item eval
9146 Set when the expressions are evaluated.
9147
9148 It accepts the following values:
9149 @table @samp
9150 @item init
9151 Only evaluate expressions once during the filter initialization.
9152
9153 @item frame
9154 Evaluate expressions for each incoming frame.
9155 @end table
9156
9157 Default value is @samp{init}.
9158
9159 The filter accepts the following variables:
9160 @item X
9161 @item Y
9162 The coordinates of the current sample.
9163
9164 @item W
9165 @item H
9166 The width and height of the image.
9167
9168 @item N
9169 The number of input frame, starting from 0.
9170 @end table
9171
9172 @subsection Examples
9173
9174 @itemize
9175 @item
9176 High-pass:
9177 @example
9178 fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
9179 @end example
9180
9181 @item
9182 Low-pass:
9183 @example
9184 fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
9185 @end example
9186
9187 @item
9188 Sharpen:
9189 @example
9190 fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
9191 @end example
9192
9193 @item
9194 Blur:
9195 @example
9196 fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
9197 @end example
9198
9199 @end itemize
9200
9201 @section fftdnoiz
9202 Denoise frames using 3D FFT (frequency domain filtering).
9203
9204 The filter accepts the following options:
9205
9206 @table @option
9207 @item sigma
9208 Set the noise sigma constant. This sets denoising strength.
9209 Default value is 1. Allowed range is from 0 to 30.
9210 Using very high sigma with low overlap may give blocking artifacts.
9211
9212 @item amount
9213 Set amount of denoising. By default all detected noise is reduced.
9214 Default value is 1. Allowed range is from 0 to 1.
9215
9216 @item block
9217 Set size of block, Default is 4, can be 3, 4, 5 or 6.
9218 Actual size of block in pixels is 2 to power of @var{block}, so by default
9219 block size in pixels is 2^4 which is 16.
9220
9221 @item overlap
9222 Set block overlap. Default is 0.5. Allowed range is from 0.2 to 0.8.
9223
9224 @item prev
9225 Set number of previous frames to use for denoising. By default is set to 0.
9226
9227 @item next
9228 Set number of next frames to to use for denoising. By default is set to 0.
9229
9230 @item planes
9231 Set planes which will be filtered, by default are all available filtered
9232 except alpha.
9233 @end table
9234
9235 @section field
9236
9237 Extract a single field from an interlaced image using stride
9238 arithmetic to avoid wasting CPU time. The output frames are marked as
9239 non-interlaced.
9240
9241 The filter accepts the following options:
9242
9243 @table @option
9244 @item type
9245 Specify whether to extract the top (if the value is @code{0} or
9246 @code{top}) or the bottom field (if the value is @code{1} or
9247 @code{bottom}).
9248 @end table
9249
9250 @section fieldhint
9251
9252 Create new frames by copying the top and bottom fields from surrounding frames
9253 supplied as numbers by the hint file.
9254
9255 @table @option
9256 @item hint
9257 Set file containing hints: absolute/relative frame numbers.
9258
9259 There must be one line for each frame in a clip. Each line must contain two
9260 numbers separated by the comma, optionally followed by @code{-} or @code{+}.
9261 Numbers supplied on each line of file can not be out of [N-1,N+1] where N
9262 is current frame number for @code{absolute} mode or out of [-1, 1] range
9263 for @code{relative} mode. First number tells from which frame to pick up top
9264 field and second number tells from which frame to pick up bottom field.
9265
9266 If optionally followed by @code{+} output frame will be marked as interlaced,
9267 else if followed by @code{-} output frame will be marked as progressive, else
9268 it will be marked same as input frame.
9269 If line starts with @code{#} or @code{;} that line is skipped.
9270
9271 @item mode
9272 Can be item @code{absolute} or @code{relative}. Default is @code{absolute}.
9273 @end table
9274
9275 Example of first several lines of @code{hint} file for @code{relative} mode:
9276 @example
9277 0,0 - # first frame
9278 1,0 - # second frame, use third's frame top field and second's frame bottom field
9279 1,0 - # third frame, use fourth's frame top field and third's frame bottom field
9280 1,0 -
9281 0,0 -
9282 0,0 -
9283 1,0 -
9284 1,0 -
9285 1,0 -
9286 0,0 -
9287 0,0 -
9288 1,0 -
9289 1,0 -
9290 1,0 -
9291 0,0 -
9292 @end example
9293
9294 @section fieldmatch
9295
9296 Field matching filter for inverse telecine. It is meant to reconstruct the
9297 progressive frames from a telecined stream. The filter does not drop duplicated
9298 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
9299 followed by a decimation filter such as @ref{decimate} in the filtergraph.
9300
9301 The separation of the field matching and the decimation is notably motivated by
9302 the possibility of inserting a de-interlacing filter fallback between the two.
9303 If the source has mixed telecined and real interlaced content,
9304 @code{fieldmatch} will not be able to match fields for the interlaced parts.
9305 But these remaining combed frames will be marked as interlaced, and thus can be
9306 de-interlaced by a later filter such as @ref{yadif} before decimation.
9307
9308 In addition to the various configuration options, @code{fieldmatch} can take an
9309 optional second stream, activated through the @option{ppsrc} option. If
9310 enabled, the frames reconstruction will be based on the fields and frames from
9311 this second stream. This allows the first input to be pre-processed in order to
9312 help the various algorithms of the filter, while keeping the output lossless
9313 (assuming the fields are matched properly). Typically, a field-aware denoiser,
9314 or brightness/contrast adjustments can help.
9315
9316 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
9317 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
9318 which @code{fieldmatch} is based on. While the semantic and usage are very
9319 close, some behaviour and options names can differ.
9320
9321 The @ref{decimate} filter currently only works for constant frame rate input.
9322 If your input has mixed telecined (30fps) and progressive content with a lower
9323 framerate like 24fps use the following filterchain to produce the necessary cfr
9324 stream: @code{dejudder,fps=30000/1001,fieldmatch,decimate}.
9325
9326 The filter accepts the following options:
9327
9328 @table @option
9329 @item order
9330 Specify the assumed field order of the input stream. Available values are:
9331
9332 @table @samp
9333 @item auto
9334 Auto detect parity (use FFmpeg's internal parity value).
9335 @item bff
9336 Assume bottom field first.
9337 @item tff
9338 Assume top field first.
9339 @end table
9340
9341 Note that it is sometimes recommended not to trust the parity announced by the
9342 stream.
9343
9344 Default value is @var{auto}.
9345
9346 @item mode
9347 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
9348 sense that it won't risk creating jerkiness due to duplicate frames when
9349 possible, but if there are bad edits or blended fields it will end up
9350 outputting combed frames when a good match might actually exist. On the other
9351 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
9352 but will almost always find a good frame if there is one. The other values are
9353 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
9354 jerkiness and creating duplicate frames versus finding good matches in sections
9355 with bad edits, orphaned fields, blended fields, etc.
9356
9357 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
9358
9359 Available values are:
9360
9361 @table @samp
9362 @item pc
9363 2-way matching (p/c)
9364 @item pc_n
9365 2-way matching, and trying 3rd match if still combed (p/c + n)
9366 @item pc_u
9367 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
9368 @item pc_n_ub
9369 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
9370 still combed (p/c + n + u/b)
9371 @item pcn
9372 3-way matching (p/c/n)
9373 @item pcn_ub
9374 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
9375 detected as combed (p/c/n + u/b)
9376 @end table
9377
9378 The parenthesis at the end indicate the matches that would be used for that
9379 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
9380 @var{top}).
9381
9382 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
9383 the slowest.
9384
9385 Default value is @var{pc_n}.
9386
9387 @item ppsrc
9388 Mark the main input stream as a pre-processed input, and enable the secondary
9389 input stream as the clean source to pick the fields from. See the filter
9390 introduction for more details. It is similar to the @option{clip2} feature from
9391 VFM/TFM.
9392
9393 Default value is @code{0} (disabled).
9394
9395 @item field
9396 Set the field to match from. It is recommended to set this to the same value as
9397 @option{order} unless you experience matching failures with that setting. In
9398 certain circumstances changing the field that is used to match from can have a
9399 large impact on matching performance. Available values are:
9400
9401 @table @samp
9402 @item auto
9403 Automatic (same value as @option{order}).
9404 @item bottom
9405 Match from the bottom field.
9406 @item top
9407 Match from the top field.
9408 @end table
9409
9410 Default value is @var{auto}.
9411
9412 @item mchroma
9413 Set whether or not chroma is included during the match comparisons. In most
9414 cases it is recommended to leave this enabled. You should set this to @code{0}
9415 only if your clip has bad chroma problems such as heavy rainbowing or other
9416 artifacts. Setting this to @code{0} could also be used to speed things up at
9417 the cost of some accuracy.
9418
9419 Default value is @code{1}.
9420
9421 @item y0
9422 @item y1
9423 These define an exclusion band which excludes the lines between @option{y0} and
9424 @option{y1} from being included in the field matching decision. An exclusion
9425 band can be used to ignore subtitles, a logo, or other things that may
9426 interfere with the matching. @option{y0} sets the starting scan line and
9427 @option{y1} sets the ending line; all lines in between @option{y0} and
9428 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
9429 @option{y0} and @option{y1} to the same value will disable the feature.
9430 @option{y0} and @option{y1} defaults to @code{0}.
9431
9432 @item scthresh
9433 Set the scene change detection threshold as a percentage of maximum change on
9434 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
9435 detection is only relevant in case @option{combmatch}=@var{sc}.  The range for
9436 @option{scthresh} is @code{[0.0, 100.0]}.
9437
9438 Default value is @code{12.0}.
9439
9440 @item combmatch
9441 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
9442 account the combed scores of matches when deciding what match to use as the
9443 final match. Available values are:
9444
9445 @table @samp
9446 @item none
9447 No final matching based on combed scores.
9448 @item sc
9449 Combed scores are only used when a scene change is detected.
9450 @item full
9451 Use combed scores all the time.
9452 @end table
9453
9454 Default is @var{sc}.
9455
9456 @item combdbg
9457 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
9458 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
9459 Available values are:
9460
9461 @table @samp
9462 @item none
9463 No forced calculation.
9464 @item pcn
9465 Force p/c/n calculations.
9466 @item pcnub
9467 Force p/c/n/u/b calculations.
9468 @end table
9469
9470 Default value is @var{none}.
9471
9472 @item cthresh
9473 This is the area combing threshold used for combed frame detection. This
9474 essentially controls how "strong" or "visible" combing must be to be detected.
9475 Larger values mean combing must be more visible and smaller values mean combing
9476 can be less visible or strong and still be detected. Valid settings are from
9477 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
9478 be detected as combed). This is basically a pixel difference value. A good
9479 range is @code{[8, 12]}.
9480
9481 Default value is @code{9}.
9482
9483 @item chroma
9484 Sets whether or not chroma is considered in the combed frame decision.  Only
9485 disable this if your source has chroma problems (rainbowing, etc.) that are
9486 causing problems for the combed frame detection with chroma enabled. Actually,
9487 using @option{chroma}=@var{0} is usually more reliable, except for the case
9488 where there is chroma only combing in the source.
9489
9490 Default value is @code{0}.
9491
9492 @item blockx
9493 @item blocky
9494 Respectively set the x-axis and y-axis size of the window used during combed
9495 frame detection. This has to do with the size of the area in which
9496 @option{combpel} pixels are required to be detected as combed for a frame to be
9497 declared combed. See the @option{combpel} parameter description for more info.
9498 Possible values are any number that is a power of 2 starting at 4 and going up
9499 to 512.
9500
9501 Default value is @code{16}.
9502
9503 @item combpel
9504 The number of combed pixels inside any of the @option{blocky} by
9505 @option{blockx} size blocks on the frame for the frame to be detected as
9506 combed. While @option{cthresh} controls how "visible" the combing must be, this
9507 setting controls "how much" combing there must be in any localized area (a
9508 window defined by the @option{blockx} and @option{blocky} settings) on the
9509 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
9510 which point no frames will ever be detected as combed). This setting is known
9511 as @option{MI} in TFM/VFM vocabulary.
9512
9513 Default value is @code{80}.
9514 @end table
9515
9516 @anchor{p/c/n/u/b meaning}
9517 @subsection p/c/n/u/b meaning
9518
9519 @subsubsection p/c/n
9520
9521 We assume the following telecined stream:
9522
9523 @example
9524 Top fields:     1 2 2 3 4
9525 Bottom fields:  1 2 3 4 4
9526 @end example
9527
9528 The numbers correspond to the progressive frame the fields relate to. Here, the
9529 first two frames are progressive, the 3rd and 4th are combed, and so on.
9530
9531 When @code{fieldmatch} is configured to run a matching from bottom
9532 (@option{field}=@var{bottom}) this is how this input stream get transformed:
9533
9534 @example
9535 Input stream:
9536                 T     1 2 2 3 4
9537                 B     1 2 3 4 4   <-- matching reference
9538
9539 Matches:              c c n n c
9540
9541 Output stream:
9542                 T     1 2 3 4 4
9543                 B     1 2 3 4 4
9544 @end example
9545
9546 As a result of the field matching, we can see that some frames get duplicated.
9547 To perform a complete inverse telecine, you need to rely on a decimation filter
9548 after this operation. See for instance the @ref{decimate} filter.
9549
9550 The same operation now matching from top fields (@option{field}=@var{top})
9551 looks like this:
9552
9553 @example
9554 Input stream:
9555                 T     1 2 2 3 4   <-- matching reference
9556                 B     1 2 3 4 4
9557
9558 Matches:              c c p p c
9559
9560 Output stream:
9561                 T     1 2 2 3 4
9562                 B     1 2 2 3 4
9563 @end example
9564
9565 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
9566 basically, they refer to the frame and field of the opposite parity:
9567
9568 @itemize
9569 @item @var{p} matches the field of the opposite parity in the previous frame
9570 @item @var{c} matches the field of the opposite parity in the current frame
9571 @item @var{n} matches the field of the opposite parity in the next frame
9572 @end itemize
9573
9574 @subsubsection u/b
9575
9576 The @var{u} and @var{b} matching are a bit special in the sense that they match
9577 from the opposite parity flag. In the following examples, we assume that we are
9578 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
9579 'x' is placed above and below each matched fields.
9580
9581 With bottom matching (@option{field}=@var{bottom}):
9582 @example
9583 Match:           c         p           n          b          u
9584
9585                  x       x               x        x          x
9586   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
9587   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
9588                  x         x           x        x              x
9589
9590 Output frames:
9591                  2          1          2          2          2
9592                  2          2          2          1          3
9593 @end example
9594
9595 With top matching (@option{field}=@var{top}):
9596 @example
9597 Match:           c         p           n          b          u
9598
9599                  x         x           x        x              x
9600   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
9601   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
9602                  x       x               x        x          x
9603
9604 Output frames:
9605                  2          2          2          1          2
9606                  2          1          3          2          2
9607 @end example
9608
9609 @subsection Examples
9610
9611 Simple IVTC of a top field first telecined stream:
9612 @example
9613 fieldmatch=order=tff:combmatch=none, decimate
9614 @end example
9615
9616 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
9617 @example
9618 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
9619 @end example
9620
9621 @section fieldorder
9622
9623 Transform the field order of the input video.
9624
9625 It accepts the following parameters:
9626
9627 @table @option
9628
9629 @item order
9630 The output field order. Valid values are @var{tff} for top field first or @var{bff}
9631 for bottom field first.
9632 @end table
9633
9634 The default value is @samp{tff}.
9635
9636 The transformation is done by shifting the picture content up or down
9637 by one line, and filling the remaining line with appropriate picture content.
9638 This method is consistent with most broadcast field order converters.
9639
9640 If the input video is not flagged as being interlaced, or it is already
9641 flagged as being of the required output field order, then this filter does
9642 not alter the incoming video.
9643
9644 It is very useful when converting to or from PAL DV material,
9645 which is bottom field first.
9646
9647 For example:
9648 @example
9649 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
9650 @end example
9651
9652 @section fifo, afifo
9653
9654 Buffer input images and send them when they are requested.
9655
9656 It is mainly useful when auto-inserted by the libavfilter
9657 framework.
9658
9659 It does not take parameters.
9660
9661 @section fillborders
9662
9663 Fill borders of the input video, without changing video stream dimensions.
9664 Sometimes video can have garbage at the four edges and you may not want to
9665 crop video input to keep size multiple of some number.
9666
9667 This filter accepts the following options:
9668
9669 @table @option
9670 @item left
9671 Number of pixels to fill from left border.
9672
9673 @item right
9674 Number of pixels to fill from right border.
9675
9676 @item top
9677 Number of pixels to fill from top border.
9678
9679 @item bottom
9680 Number of pixels to fill from bottom border.
9681
9682 @item mode
9683 Set fill mode.
9684
9685 It accepts the following values:
9686 @table @samp
9687 @item smear
9688 fill pixels using outermost pixels
9689
9690 @item mirror
9691 fill pixels using mirroring
9692
9693 @item fixed
9694 fill pixels with constant value
9695 @end table
9696
9697 Default is @var{smear}.
9698
9699 @item color
9700 Set color for pixels in fixed mode. Default is @var{black}.
9701 @end table
9702
9703 @section find_rect
9704
9705 Find a rectangular object
9706
9707 It accepts the following options:
9708
9709 @table @option
9710 @item object
9711 Filepath of the object image, needs to be in gray8.
9712
9713 @item threshold
9714 Detection threshold, default is 0.5.
9715
9716 @item mipmaps
9717 Number of mipmaps, default is 3.
9718
9719 @item xmin, ymin, xmax, ymax
9720 Specifies the rectangle in which to search.
9721 @end table
9722
9723 @subsection Examples
9724
9725 @itemize
9726 @item
9727 Generate a representative palette of a given video using @command{ffmpeg}:
9728 @example
9729 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
9730 @end example
9731 @end itemize
9732
9733 @section cover_rect
9734
9735 Cover a rectangular object
9736
9737 It accepts the following options:
9738
9739 @table @option
9740 @item cover
9741 Filepath of the optional cover image, needs to be in yuv420.
9742
9743 @item mode
9744 Set covering mode.
9745
9746 It accepts the following values:
9747 @table @samp
9748 @item cover
9749 cover it by the supplied image
9750 @item blur
9751 cover it by interpolating the surrounding pixels
9752 @end table
9753
9754 Default value is @var{blur}.
9755 @end table
9756
9757 @subsection Examples
9758
9759 @itemize
9760 @item
9761 Generate a representative palette of a given video using @command{ffmpeg}:
9762 @example
9763 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
9764 @end example
9765 @end itemize
9766
9767 @section floodfill
9768
9769 Flood area with values of same pixel components with another values.
9770
9771 It accepts the following options:
9772 @table @option
9773 @item x
9774 Set pixel x coordinate.
9775
9776 @item y
9777 Set pixel y coordinate.
9778
9779 @item s0
9780 Set source #0 component value.
9781
9782 @item s1
9783 Set source #1 component value.
9784
9785 @item s2
9786 Set source #2 component value.
9787
9788 @item s3
9789 Set source #3 component value.
9790
9791 @item d0
9792 Set destination #0 component value.
9793
9794 @item d1
9795 Set destination #1 component value.
9796
9797 @item d2
9798 Set destination #2 component value.
9799
9800 @item d3
9801 Set destination #3 component value.
9802 @end table
9803
9804 @anchor{format}
9805 @section format
9806
9807 Convert the input video to one of the specified pixel formats.
9808 Libavfilter will try to pick one that is suitable as input to
9809 the next filter.
9810
9811 It accepts the following parameters:
9812 @table @option
9813
9814 @item pix_fmts
9815 A '|'-separated list of pixel format names, such as
9816 "pix_fmts=yuv420p|monow|rgb24".
9817
9818 @end table
9819
9820 @subsection Examples
9821
9822 @itemize
9823 @item
9824 Convert the input video to the @var{yuv420p} format
9825 @example
9826 format=pix_fmts=yuv420p
9827 @end example
9828
9829 Convert the input video to any of the formats in the list
9830 @example
9831 format=pix_fmts=yuv420p|yuv444p|yuv410p
9832 @end example
9833 @end itemize
9834
9835 @anchor{fps}
9836 @section fps
9837
9838 Convert the video to specified constant frame rate by duplicating or dropping
9839 frames as necessary.
9840
9841 It accepts the following parameters:
9842 @table @option
9843
9844 @item fps
9845 The desired output frame rate. The default is @code{25}.
9846
9847 @item start_time
9848 Assume the first PTS should be the given value, in seconds. This allows for
9849 padding/trimming at the start of stream. By default, no assumption is made
9850 about the first frame's expected PTS, so no padding or trimming is done.
9851 For example, this could be set to 0 to pad the beginning with duplicates of
9852 the first frame if a video stream starts after the audio stream or to trim any
9853 frames with a negative PTS.
9854
9855 @item round
9856 Timestamp (PTS) rounding method.
9857
9858 Possible values are:
9859 @table @option
9860 @item zero
9861 round towards 0
9862 @item inf
9863 round away from 0
9864 @item down
9865 round towards -infinity
9866 @item up
9867 round towards +infinity
9868 @item near
9869 round to nearest
9870 @end table
9871 The default is @code{near}.
9872
9873 @item eof_action
9874 Action performed when reading the last frame.
9875
9876 Possible values are:
9877 @table @option
9878 @item round
9879 Use same timestamp rounding method as used for other frames.
9880 @item pass
9881 Pass through last frame if input duration has not been reached yet.
9882 @end table
9883 The default is @code{round}.
9884
9885 @end table
9886
9887 Alternatively, the options can be specified as a flat string:
9888 @var{fps}[:@var{start_time}[:@var{round}]].
9889
9890 See also the @ref{setpts} filter.
9891
9892 @subsection Examples
9893
9894 @itemize
9895 @item
9896 A typical usage in order to set the fps to 25:
9897 @example
9898 fps=fps=25
9899 @end example
9900
9901 @item
9902 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
9903 @example
9904 fps=fps=film:round=near
9905 @end example
9906 @end itemize
9907
9908 @section framepack
9909
9910 Pack two different video streams into a stereoscopic video, setting proper
9911 metadata on supported codecs. The two views should have the same size and
9912 framerate and processing will stop when the shorter video ends. Please note
9913 that you may conveniently adjust view properties with the @ref{scale} and
9914 @ref{fps} filters.
9915
9916 It accepts the following parameters:
9917 @table @option
9918
9919 @item format
9920 The desired packing format. Supported values are:
9921
9922 @table @option
9923
9924 @item sbs
9925 The views are next to each other (default).
9926
9927 @item tab
9928 The views are on top of each other.
9929
9930 @item lines
9931 The views are packed by line.
9932
9933 @item columns
9934 The views are packed by column.
9935
9936 @item frameseq
9937 The views are temporally interleaved.
9938
9939 @end table
9940
9941 @end table
9942
9943 Some examples:
9944
9945 @example
9946 # Convert left and right views into a frame-sequential video
9947 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
9948
9949 # Convert views into a side-by-side video with the same output resolution as the input
9950 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
9951 @end example
9952
9953 @section framerate
9954
9955 Change the frame rate by interpolating new video output frames from the source
9956 frames.
9957
9958 This filter is not designed to function correctly with interlaced media. If
9959 you wish to change the frame rate of interlaced media then you are required
9960 to deinterlace before this filter and re-interlace after this filter.
9961
9962 A description of the accepted options follows.
9963
9964 @table @option
9965 @item fps
9966 Specify the output frames per second. This option can also be specified
9967 as a value alone. The default is @code{50}.
9968
9969 @item interp_start
9970 Specify the start of a range where the output frame will be created as a
9971 linear interpolation of two frames. The range is [@code{0}-@code{255}],
9972 the default is @code{15}.
9973
9974 @item interp_end
9975 Specify the end of a range where the output frame will be created as a
9976 linear interpolation of two frames. The range is [@code{0}-@code{255}],
9977 the default is @code{240}.
9978
9979 @item scene
9980 Specify the level at which a scene change is detected as a value between
9981 0 and 100 to indicate a new scene; a low value reflects a low
9982 probability for the current frame to introduce a new scene, while a higher
9983 value means the current frame is more likely to be one.
9984 The default is @code{8.2}.
9985
9986 @item flags
9987 Specify flags influencing the filter process.
9988
9989 Available value for @var{flags} is:
9990
9991 @table @option
9992 @item scene_change_detect, scd
9993 Enable scene change detection using the value of the option @var{scene}.
9994 This flag is enabled by default.
9995 @end table
9996 @end table
9997
9998 @section framestep
9999
10000 Select one frame every N-th frame.
10001
10002 This filter accepts the following option:
10003 @table @option
10004 @item step
10005 Select frame after every @code{step} frames.
10006 Allowed values are positive integers higher than 0. Default value is @code{1}.
10007 @end table
10008
10009 @anchor{frei0r}
10010 @section frei0r
10011
10012 Apply a frei0r effect to the input video.
10013
10014 To enable the compilation of this filter, you need to install the frei0r
10015 header and configure FFmpeg with @code{--enable-frei0r}.
10016
10017 It accepts the following parameters:
10018
10019 @table @option
10020
10021 @item filter_name
10022 The name of the frei0r effect to load. If the environment variable
10023 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
10024 directories specified by the colon-separated list in @env{FREI0R_PATH}.
10025 Otherwise, the standard frei0r paths are searched, in this order:
10026 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
10027 @file{/usr/lib/frei0r-1/}.
10028
10029 @item filter_params
10030 A '|'-separated list of parameters to pass to the frei0r effect.
10031
10032 @end table
10033
10034 A frei0r effect parameter can be a boolean (its value is either
10035 "y" or "n"), a double, a color (specified as
10036 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
10037 numbers between 0.0 and 1.0, inclusive) or a color description as specified in the
10038 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils},
10039 a position (specified as @var{X}/@var{Y}, where
10040 @var{X} and @var{Y} are floating point numbers) and/or a string.
10041
10042 The number and types of parameters depend on the loaded effect. If an
10043 effect parameter is not specified, the default value is set.
10044
10045 @subsection Examples
10046
10047 @itemize
10048 @item
10049 Apply the distort0r effect, setting the first two double parameters:
10050 @example
10051 frei0r=filter_name=distort0r:filter_params=0.5|0.01
10052 @end example
10053
10054 @item
10055 Apply the colordistance effect, taking a color as the first parameter:
10056 @example
10057 frei0r=colordistance:0.2/0.3/0.4
10058 frei0r=colordistance:violet
10059 frei0r=colordistance:0x112233
10060 @end example
10061
10062 @item
10063 Apply the perspective effect, specifying the top left and top right image
10064 positions:
10065 @example
10066 frei0r=perspective:0.2/0.2|0.8/0.2
10067 @end example
10068 @end itemize
10069
10070 For more information, see
10071 @url{http://frei0r.dyne.org}
10072
10073 @section fspp
10074
10075 Apply fast and simple postprocessing. It is a faster version of @ref{spp}.
10076
10077 It splits (I)DCT into horizontal/vertical passes. Unlike the simple post-
10078 processing filter, one of them is performed once per block, not per pixel.
10079 This allows for much higher speed.
10080
10081 The filter accepts the following options:
10082
10083 @table @option
10084 @item quality
10085 Set quality. This option defines the number of levels for averaging. It accepts
10086 an integer in the range 4-5. Default value is @code{4}.
10087
10088 @item qp
10089 Force a constant quantization parameter. It accepts an integer in range 0-63.
10090 If not set, the filter will use the QP from the video stream (if available).
10091
10092 @item strength
10093 Set filter strength. It accepts an integer in range -15 to 32. Lower values mean
10094 more details but also more artifacts, while higher values make the image smoother
10095 but also blurrier. Default value is @code{0} âˆ’ PSNR optimal.
10096
10097 @item use_bframe_qp
10098 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
10099 option may cause flicker since the B-Frames have often larger QP. Default is
10100 @code{0} (not enabled).
10101
10102 @end table
10103
10104 @section gblur
10105
10106 Apply Gaussian blur filter.
10107
10108 The filter accepts the following options:
10109
10110 @table @option
10111 @item sigma
10112 Set horizontal sigma, standard deviation of Gaussian blur. Default is @code{0.5}.
10113
10114 @item steps
10115 Set number of steps for Gaussian approximation. Defauls is @code{1}.
10116
10117 @item planes
10118 Set which planes to filter. By default all planes are filtered.
10119
10120 @item sigmaV
10121 Set vertical sigma, if negative it will be same as @code{sigma}.
10122 Default is @code{-1}.
10123 @end table
10124
10125 @section geq
10126
10127 Apply generic equation to each pixel.
10128
10129 The filter accepts the following options:
10130
10131 @table @option
10132 @item lum_expr, lum
10133 Set the luminance expression.
10134 @item cb_expr, cb
10135 Set the chrominance blue expression.
10136 @item cr_expr, cr
10137 Set the chrominance red expression.
10138 @item alpha_expr, a
10139 Set the alpha expression.
10140 @item red_expr, r
10141 Set the red expression.
10142 @item green_expr, g
10143 Set the green expression.
10144 @item blue_expr, b
10145 Set the blue expression.
10146 @end table
10147
10148 The colorspace is selected according to the specified options. If one
10149 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
10150 options is specified, the filter will automatically select a YCbCr
10151 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
10152 @option{blue_expr} options is specified, it will select an RGB
10153 colorspace.
10154
10155 If one of the chrominance expression is not defined, it falls back on the other
10156 one. If no alpha expression is specified it will evaluate to opaque value.
10157 If none of chrominance expressions are specified, they will evaluate
10158 to the luminance expression.
10159
10160 The expressions can use the following variables and functions:
10161
10162 @table @option
10163 @item N
10164 The sequential number of the filtered frame, starting from @code{0}.
10165
10166 @item X
10167 @item Y
10168 The coordinates of the current sample.
10169
10170 @item W
10171 @item H
10172 The width and height of the image.
10173
10174 @item SW
10175 @item SH
10176 Width and height scale depending on the currently filtered plane. It is the
10177 ratio between the corresponding luma plane number of pixels and the current
10178 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
10179 @code{0.5,0.5} for chroma planes.
10180
10181 @item T
10182 Time of the current frame, expressed in seconds.
10183
10184 @item p(x, y)
10185 Return the value of the pixel at location (@var{x},@var{y}) of the current
10186 plane.
10187
10188 @item lum(x, y)
10189 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
10190 plane.
10191
10192 @item cb(x, y)
10193 Return the value of the pixel at location (@var{x},@var{y}) of the
10194 blue-difference chroma plane. Return 0 if there is no such plane.
10195
10196 @item cr(x, y)
10197 Return the value of the pixel at location (@var{x},@var{y}) of the
10198 red-difference chroma plane. Return 0 if there is no such plane.
10199
10200 @item r(x, y)
10201 @item g(x, y)
10202 @item b(x, y)
10203 Return the value of the pixel at location (@var{x},@var{y}) of the
10204 red/green/blue component. Return 0 if there is no such component.
10205
10206 @item alpha(x, y)
10207 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
10208 plane. Return 0 if there is no such plane.
10209 @end table
10210
10211 For functions, if @var{x} and @var{y} are outside the area, the value will be
10212 automatically clipped to the closer edge.
10213
10214 @subsection Examples
10215
10216 @itemize
10217 @item
10218 Flip the image horizontally:
10219 @example
10220 geq=p(W-X\,Y)
10221 @end example
10222
10223 @item
10224 Generate a bidimensional sine wave, with angle @code{PI/3} and a
10225 wavelength of 100 pixels:
10226 @example
10227 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
10228 @end example
10229
10230 @item
10231 Generate a fancy enigmatic moving light:
10232 @example
10233 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
10234 @end example
10235
10236 @item
10237 Generate a quick emboss effect:
10238 @example
10239 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
10240 @end example
10241
10242 @item
10243 Modify RGB components depending on pixel position:
10244 @example
10245 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
10246 @end example
10247
10248 @item
10249 Create a radial gradient that is the same size as the input (also see
10250 the @ref{vignette} filter):
10251 @example
10252 geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
10253 @end example
10254 @end itemize
10255
10256 @section gradfun
10257
10258 Fix the banding artifacts that are sometimes introduced into nearly flat
10259 regions by truncation to 8-bit color depth.
10260 Interpolate the gradients that should go where the bands are, and
10261 dither them.
10262
10263 It is designed for playback only.  Do not use it prior to
10264 lossy compression, because compression tends to lose the dither and
10265 bring back the bands.
10266
10267 It accepts the following parameters:
10268
10269 @table @option
10270
10271 @item strength
10272 The maximum amount by which the filter will change any one pixel. This is also
10273 the threshold for detecting nearly flat regions. Acceptable values range from
10274 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
10275 valid range.
10276
10277 @item radius
10278 The neighborhood to fit the gradient to. A larger radius makes for smoother
10279 gradients, but also prevents the filter from modifying the pixels near detailed
10280 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
10281 values will be clipped to the valid range.
10282
10283 @end table
10284
10285 Alternatively, the options can be specified as a flat string:
10286 @var{strength}[:@var{radius}]
10287
10288 @subsection Examples
10289
10290 @itemize
10291 @item
10292 Apply the filter with a @code{3.5} strength and radius of @code{8}:
10293 @example
10294 gradfun=3.5:8
10295 @end example
10296
10297 @item
10298 Specify radius, omitting the strength (which will fall-back to the default
10299 value):
10300 @example
10301 gradfun=radius=8
10302 @end example
10303
10304 @end itemize
10305
10306 @section graphmonitor, agraphmonitor
10307 Show various filtergraph stats.
10308
10309 With this filter one can debug complete filtergraph.
10310 Especially issues with links filling with queued frames.
10311
10312 The filter accepts the following options:
10313
10314 @table @option
10315 @item size, s
10316 Set video output size. Default is @var{hd720}.
10317
10318 @item opacity, o
10319 Set video opacity. Default is @var{0.9}. Allowed range is from @var{0} to @var{1}.
10320
10321 @item mode, m
10322 Set output mode, can be @var{fulll} or @var{compact}.
10323 In @var{compact} mode only filters with some queued frames have displayed stats.
10324
10325 @item flags, f
10326 Set flags which enable which stats are shown in video.
10327
10328 Available values for flags are:
10329 @table @samp
10330 @item queue
10331 Display number of queued frames in each link.
10332
10333 @item frame_count_in
10334 Display number of frames taken from filter.
10335
10336 @item frame_count_out
10337 Display number of frames given out from filter.
10338
10339 @item pts
10340 Display current filtered frame pts.
10341
10342 @item time
10343 Display current filtered frame time.
10344
10345 @item timebase
10346 Display time base for filter link.
10347
10348 @item format
10349 Display used format for filter link.
10350
10351 @item size
10352 Display video size or number of audio channels in case of audio used by filter link.
10353
10354 @item rate
10355 Display video frame rate or sample rate in case of audio used by filter link.
10356 @end table
10357
10358 @item rate, r
10359 Set upper limit for video rate of output stream, Default value is @var{25}.
10360 This guarantee that output video frame rate will not be higher than this value.
10361 @end table
10362
10363 @section greyedge
10364 A color constancy variation filter which estimates scene illumination via grey edge algorithm
10365 and corrects the scene colors accordingly.
10366
10367 See: @url{https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf}
10368
10369 The filter accepts the following options:
10370
10371 @table @option
10372 @item difford
10373 The order of differentiation to be applied on the scene. Must be chosen in the range
10374 [0,2] and default value is 1.
10375
10376 @item minknorm
10377 The Minkowski parameter to be used for calculating the Minkowski distance. Must
10378 be chosen in the range [0,20] and default value is 1. Set to 0 for getting
10379 max value instead of calculating Minkowski distance.
10380
10381 @item sigma
10382 The standard deviation of Gaussian blur to be applied on the scene. Must be
10383 chosen in the range [0,1024.0] and default value = 1. floor( @var{sigma} * break_off_sigma(3) )
10384 can't be euqal to 0 if @var{difford} is greater than 0.
10385 @end table
10386
10387 @subsection Examples
10388 @itemize
10389
10390 @item
10391 Grey Edge:
10392 @example
10393 greyedge=difford=1:minknorm=5:sigma=2
10394 @end example
10395
10396 @item
10397 Max Edge:
10398 @example
10399 greyedge=difford=1:minknorm=0:sigma=2
10400 @end example
10401
10402 @end itemize
10403
10404 @anchor{haldclut}
10405 @section haldclut
10406
10407 Apply a Hald CLUT to a video stream.
10408
10409 First input is the video stream to process, and second one is the Hald CLUT.
10410 The Hald CLUT input can be a simple picture or a complete video stream.
10411
10412 The filter accepts the following options:
10413
10414 @table @option
10415 @item shortest
10416 Force termination when the shortest input terminates. Default is @code{0}.
10417 @item repeatlast
10418 Continue applying the last CLUT after the end of the stream. A value of
10419 @code{0} disable the filter after the last frame of the CLUT is reached.
10420 Default is @code{1}.
10421 @end table
10422
10423 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
10424 filters share the same internals).
10425
10426 More information about the Hald CLUT can be found on Eskil Steenberg's website
10427 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
10428
10429 @subsection Workflow examples
10430
10431 @subsubsection Hald CLUT video stream
10432
10433 Generate an identity Hald CLUT stream altered with various effects:
10434 @example
10435 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
10436 @end example
10437
10438 Note: make sure you use a lossless codec.
10439
10440 Then use it with @code{haldclut} to apply it on some random stream:
10441 @example
10442 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
10443 @end example
10444
10445 The Hald CLUT will be applied to the 10 first seconds (duration of
10446 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
10447 to the remaining frames of the @code{mandelbrot} stream.
10448
10449 @subsubsection Hald CLUT with preview
10450
10451 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
10452 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
10453 biggest possible square starting at the top left of the picture. The remaining
10454 padding pixels (bottom or right) will be ignored. This area can be used to add
10455 a preview of the Hald CLUT.
10456
10457 Typically, the following generated Hald CLUT will be supported by the
10458 @code{haldclut} filter:
10459
10460 @example
10461 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
10462    pad=iw+320 [padded_clut];
10463    smptebars=s=320x256, split [a][b];
10464    [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
10465    [main][b] overlay=W-320" -frames:v 1 clut.png
10466 @end example
10467
10468 It contains the original and a preview of the effect of the CLUT: SMPTE color
10469 bars are displayed on the right-top, and below the same color bars processed by
10470 the color changes.
10471
10472 Then, the effect of this Hald CLUT can be visualized with:
10473 @example
10474 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
10475 @end example
10476
10477 @section hflip
10478
10479 Flip the input video horizontally.
10480
10481 For example, to horizontally flip the input video with @command{ffmpeg}:
10482 @example
10483 ffmpeg -i in.avi -vf "hflip" out.avi
10484 @end example
10485
10486 @section histeq
10487 This filter applies a global color histogram equalization on a
10488 per-frame basis.
10489
10490 It can be used to correct video that has a compressed range of pixel
10491 intensities.  The filter redistributes the pixel intensities to
10492 equalize their distribution across the intensity range. It may be
10493 viewed as an "automatically adjusting contrast filter". This filter is
10494 useful only for correcting degraded or poorly captured source
10495 video.
10496
10497 The filter accepts the following options:
10498
10499 @table @option
10500 @item strength
10501 Determine the amount of equalization to be applied.  As the strength
10502 is reduced, the distribution of pixel intensities more-and-more
10503 approaches that of the input frame. The value must be a float number
10504 in the range [0,1] and defaults to 0.200.
10505
10506 @item intensity
10507 Set the maximum intensity that can generated and scale the output
10508 values appropriately.  The strength should be set as desired and then
10509 the intensity can be limited if needed to avoid washing-out. The value
10510 must be a float number in the range [0,1] and defaults to 0.210.
10511
10512 @item antibanding
10513 Set the antibanding level. If enabled the filter will randomly vary
10514 the luminance of output pixels by a small amount to avoid banding of
10515 the histogram. Possible values are @code{none}, @code{weak} or
10516 @code{strong}. It defaults to @code{none}.
10517 @end table
10518
10519 @section histogram
10520
10521 Compute and draw a color distribution histogram for the input video.
10522
10523 The computed histogram is a representation of the color component
10524 distribution in an image.
10525
10526 Standard histogram displays the color components distribution in an image.
10527 Displays color graph for each color component. Shows distribution of
10528 the Y, U, V, A or R, G, B components, depending on input format, in the
10529 current frame. Below each graph a color component scale meter is shown.
10530
10531 The filter accepts the following options:
10532
10533 @table @option
10534 @item level_height
10535 Set height of level. Default value is @code{200}.
10536 Allowed range is [50, 2048].
10537
10538 @item scale_height
10539 Set height of color scale. Default value is @code{12}.
10540 Allowed range is [0, 40].
10541
10542 @item display_mode
10543 Set display mode.
10544 It accepts the following values:
10545 @table @samp
10546 @item stack
10547 Per color component graphs are placed below each other.
10548
10549 @item parade
10550 Per color component graphs are placed side by side.
10551
10552 @item overlay
10553 Presents information identical to that in the @code{parade}, except
10554 that the graphs representing color components are superimposed directly
10555 over one another.
10556 @end table
10557 Default is @code{stack}.
10558
10559 @item levels_mode
10560 Set mode. Can be either @code{linear}, or @code{logarithmic}.
10561 Default is @code{linear}.
10562
10563 @item components
10564 Set what color components to display.
10565 Default is @code{7}.
10566
10567 @item fgopacity
10568 Set foreground opacity. Default is @code{0.7}.
10569
10570 @item bgopacity
10571 Set background opacity. Default is @code{0.5}.
10572 @end table
10573
10574 @subsection Examples
10575
10576 @itemize
10577
10578 @item
10579 Calculate and draw histogram:
10580 @example
10581 ffplay -i input -vf histogram
10582 @end example
10583
10584 @end itemize
10585
10586 @anchor{hqdn3d}
10587 @section hqdn3d
10588
10589 This is a high precision/quality 3d denoise filter. It aims to reduce
10590 image noise, producing smooth images and making still images really
10591 still. It should enhance compressibility.
10592
10593 It accepts the following optional parameters:
10594
10595 @table @option
10596 @item luma_spatial
10597 A non-negative floating point number which specifies spatial luma strength.
10598 It defaults to 4.0.
10599
10600 @item chroma_spatial
10601 A non-negative floating point number which specifies spatial chroma strength.
10602 It defaults to 3.0*@var{luma_spatial}/4.0.
10603
10604 @item luma_tmp
10605 A floating point number which specifies luma temporal strength. It defaults to
10606 6.0*@var{luma_spatial}/4.0.
10607
10608 @item chroma_tmp
10609 A floating point number which specifies chroma temporal strength. It defaults to
10610 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
10611 @end table
10612
10613 @anchor{hwdownload}
10614 @section hwdownload
10615
10616 Download hardware frames to system memory.
10617
10618 The input must be in hardware frames, and the output a non-hardware format.
10619 Not all formats will be supported on the output - it may be necessary to insert
10620 an additional @option{format} filter immediately following in the graph to get
10621 the output in a supported format.
10622
10623 @section hwmap
10624
10625 Map hardware frames to system memory or to another device.
10626
10627 This filter has several different modes of operation; which one is used depends
10628 on the input and output formats:
10629 @itemize
10630 @item
10631 Hardware frame input, normal frame output
10632
10633 Map the input frames to system memory and pass them to the output.  If the
10634 original hardware frame is later required (for example, after overlaying
10635 something else on part of it), the @option{hwmap} filter can be used again
10636 in the next mode to retrieve it.
10637 @item
10638 Normal frame input, hardware frame output
10639
10640 If the input is actually a software-mapped hardware frame, then unmap it -
10641 that is, return the original hardware frame.
10642
10643 Otherwise, a device must be provided.  Create new hardware surfaces on that
10644 device for the output, then map them back to the software format at the input
10645 and give those frames to the preceding filter.  This will then act like the
10646 @option{hwupload} filter, but may be able to avoid an additional copy when
10647 the input is already in a compatible format.
10648 @item
10649 Hardware frame input and output
10650
10651 A device must be supplied for the output, either directly or with the
10652 @option{derive_device} option.  The input and output devices must be of
10653 different types and compatible - the exact meaning of this is
10654 system-dependent, but typically it means that they must refer to the same
10655 underlying hardware context (for example, refer to the same graphics card).
10656
10657 If the input frames were originally created on the output device, then unmap
10658 to retrieve the original frames.
10659
10660 Otherwise, map the frames to the output device - create new hardware frames
10661 on the output corresponding to the frames on the input.
10662 @end itemize
10663
10664 The following additional parameters are accepted:
10665
10666 @table @option
10667 @item mode
10668 Set the frame mapping mode.  Some combination of:
10669 @table @var
10670 @item read
10671 The mapped frame should be readable.
10672 @item write
10673 The mapped frame should be writeable.
10674 @item overwrite
10675 The mapping will always overwrite the entire frame.
10676
10677 This may improve performance in some cases, as the original contents of the
10678 frame need not be loaded.
10679 @item direct
10680 The mapping must not involve any copying.
10681
10682 Indirect mappings to copies of frames are created in some cases where either
10683 direct mapping is not possible or it would have unexpected properties.
10684 Setting this flag ensures that the mapping is direct and will fail if that is
10685 not possible.
10686 @end table
10687 Defaults to @var{read+write} if not specified.
10688
10689 @item derive_device @var{type}
10690 Rather than using the device supplied at initialisation, instead derive a new
10691 device of type @var{type} from the device the input frames exist on.
10692
10693 @item reverse
10694 In a hardware to hardware mapping, map in reverse - create frames in the sink
10695 and map them back to the source.  This may be necessary in some cases where
10696 a mapping in one direction is required but only the opposite direction is
10697 supported by the devices being used.
10698
10699 This option is dangerous - it may break the preceding filter in undefined
10700 ways if there are any additional constraints on that filter's output.
10701 Do not use it without fully understanding the implications of its use.
10702 @end table
10703
10704 @anchor{hwupload}
10705 @section hwupload
10706
10707 Upload system memory frames to hardware surfaces.
10708
10709 The device to upload to must be supplied when the filter is initialised.  If
10710 using ffmpeg, select the appropriate device with the @option{-filter_hw_device}
10711 option.
10712
10713 @anchor{hwupload_cuda}
10714 @section hwupload_cuda
10715
10716 Upload system memory frames to a CUDA device.
10717
10718 It accepts the following optional parameters:
10719
10720 @table @option
10721 @item device
10722 The number of the CUDA device to use
10723 @end table
10724
10725 @section hqx
10726
10727 Apply a high-quality magnification filter designed for pixel art. This filter
10728 was originally created by Maxim Stepin.
10729
10730 It accepts the following option:
10731
10732 @table @option
10733 @item n
10734 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
10735 @code{hq3x} and @code{4} for @code{hq4x}.
10736 Default is @code{3}.
10737 @end table
10738
10739 @section hstack
10740 Stack input videos horizontally.
10741
10742 All streams must be of same pixel format and of same height.
10743
10744 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
10745 to create same output.
10746
10747 The filter accept the following option:
10748
10749 @table @option
10750 @item inputs
10751 Set number of input streams. Default is 2.
10752
10753 @item shortest
10754 If set to 1, force the output to terminate when the shortest input
10755 terminates. Default value is 0.
10756 @end table
10757
10758 @section hue
10759
10760 Modify the hue and/or the saturation of the input.
10761
10762 It accepts the following parameters:
10763
10764 @table @option
10765 @item h
10766 Specify the hue angle as a number of degrees. It accepts an expression,
10767 and defaults to "0".
10768
10769 @item s
10770 Specify the saturation in the [-10,10] range. It accepts an expression and
10771 defaults to "1".
10772
10773 @item H
10774 Specify the hue angle as a number of radians. It accepts an
10775 expression, and defaults to "0".
10776
10777 @item b
10778 Specify the brightness in the [-10,10] range. It accepts an expression and
10779 defaults to "0".
10780 @end table
10781
10782 @option{h} and @option{H} are mutually exclusive, and can't be
10783 specified at the same time.
10784
10785 The @option{b}, @option{h}, @option{H} and @option{s} option values are
10786 expressions containing the following constants:
10787
10788 @table @option
10789 @item n
10790 frame count of the input frame starting from 0
10791
10792 @item pts
10793 presentation timestamp of the input frame expressed in time base units
10794
10795 @item r
10796 frame rate of the input video, NAN if the input frame rate is unknown
10797
10798 @item t
10799 timestamp expressed in seconds, NAN if the input timestamp is unknown
10800
10801 @item tb
10802 time base of the input video
10803 @end table
10804
10805 @subsection Examples
10806
10807 @itemize
10808 @item
10809 Set the hue to 90 degrees and the saturation to 1.0:
10810 @example
10811 hue=h=90:s=1
10812 @end example
10813
10814 @item
10815 Same command but expressing the hue in radians:
10816 @example
10817 hue=H=PI/2:s=1
10818 @end example
10819
10820 @item
10821 Rotate hue and make the saturation swing between 0
10822 and 2 over a period of 1 second:
10823 @example
10824 hue="H=2*PI*t: s=sin(2*PI*t)+1"
10825 @end example
10826
10827 @item
10828 Apply a 3 seconds saturation fade-in effect starting at 0:
10829 @example
10830 hue="s=min(t/3\,1)"
10831 @end example
10832
10833 The general fade-in expression can be written as:
10834 @example
10835 hue="s=min(0\, max((t-START)/DURATION\, 1))"
10836 @end example
10837
10838 @item
10839 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
10840 @example
10841 hue="s=max(0\, min(1\, (8-t)/3))"
10842 @end example
10843
10844 The general fade-out expression can be written as:
10845 @example
10846 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
10847 @end example
10848
10849 @end itemize
10850
10851 @subsection Commands
10852
10853 This filter supports the following commands:
10854 @table @option
10855 @item b
10856 @item s
10857 @item h
10858 @item H
10859 Modify the hue and/or the saturation and/or brightness of the input video.
10860 The command accepts the same syntax of the corresponding option.
10861
10862 If the specified expression is not valid, it is kept at its current
10863 value.
10864 @end table
10865
10866 @section hysteresis
10867
10868 Grow first stream into second stream by connecting components.
10869 This makes it possible to build more robust edge masks.
10870
10871 This filter accepts the following options:
10872
10873 @table @option
10874 @item planes
10875 Set which planes will be processed as bitmap, unprocessed planes will be
10876 copied from first stream.
10877 By default value 0xf, all planes will be processed.
10878
10879 @item threshold
10880 Set threshold which is used in filtering. If pixel component value is higher than
10881 this value filter algorithm for connecting components is activated.
10882 By default value is 0.
10883 @end table
10884
10885 @section idet
10886
10887 Detect video interlacing type.
10888
10889 This filter tries to detect if the input frames are interlaced, progressive,
10890 top or bottom field first. It will also try to detect fields that are
10891 repeated between adjacent frames (a sign of telecine).
10892
10893 Single frame detection considers only immediately adjacent frames when classifying each frame.
10894 Multiple frame detection incorporates the classification history of previous frames.
10895
10896 The filter will log these metadata values:
10897
10898 @table @option
10899 @item single.current_frame
10900 Detected type of current frame using single-frame detection. One of:
10901 ``tff'' (top field first), ``bff'' (bottom field first),
10902 ``progressive'', or ``undetermined''
10903
10904 @item single.tff
10905 Cumulative number of frames detected as top field first using single-frame detection.
10906
10907 @item multiple.tff
10908 Cumulative number of frames detected as top field first using multiple-frame detection.
10909
10910 @item single.bff
10911 Cumulative number of frames detected as bottom field first using single-frame detection.
10912
10913 @item multiple.current_frame
10914 Detected type of current frame using multiple-frame detection. One of:
10915 ``tff'' (top field first), ``bff'' (bottom field first),
10916 ``progressive'', or ``undetermined''
10917
10918 @item multiple.bff
10919 Cumulative number of frames detected as bottom field first using multiple-frame detection.
10920
10921 @item single.progressive
10922 Cumulative number of frames detected as progressive using single-frame detection.
10923
10924 @item multiple.progressive
10925 Cumulative number of frames detected as progressive using multiple-frame detection.
10926
10927 @item single.undetermined
10928 Cumulative number of frames that could not be classified using single-frame detection.
10929
10930 @item multiple.undetermined
10931 Cumulative number of frames that could not be classified using multiple-frame detection.
10932
10933 @item repeated.current_frame
10934 Which field in the current frame is repeated from the last. One of ``neither'', ``top'', or ``bottom''.
10935
10936 @item repeated.neither
10937 Cumulative number of frames with no repeated field.
10938
10939 @item repeated.top
10940 Cumulative number of frames with the top field repeated from the previous frame's top field.
10941
10942 @item repeated.bottom
10943 Cumulative number of frames with the bottom field repeated from the previous frame's bottom field.
10944 @end table
10945
10946 The filter accepts the following options:
10947
10948 @table @option
10949 @item intl_thres
10950 Set interlacing threshold.
10951 @item prog_thres
10952 Set progressive threshold.
10953 @item rep_thres
10954 Threshold for repeated field detection.
10955 @item half_life
10956 Number of frames after which a given frame's contribution to the
10957 statistics is halved (i.e., it contributes only 0.5 to its
10958 classification). The default of 0 means that all frames seen are given
10959 full weight of 1.0 forever.
10960 @item analyze_interlaced_flag
10961 When this is not 0 then idet will use the specified number of frames to determine
10962 if the interlaced flag is accurate, it will not count undetermined frames.
10963 If the flag is found to be accurate it will be used without any further
10964 computations, if it is found to be inaccurate it will be cleared without any
10965 further computations. This allows inserting the idet filter as a low computational
10966 method to clean up the interlaced flag
10967 @end table
10968
10969 @section il
10970
10971 Deinterleave or interleave fields.
10972
10973 This filter allows one to process interlaced images fields without
10974 deinterlacing them. Deinterleaving splits the input frame into 2
10975 fields (so called half pictures). Odd lines are moved to the top
10976 half of the output image, even lines to the bottom half.
10977 You can process (filter) them independently and then re-interleave them.
10978
10979 The filter accepts the following options:
10980
10981 @table @option
10982 @item luma_mode, l
10983 @item chroma_mode, c
10984 @item alpha_mode, a
10985 Available values for @var{luma_mode}, @var{chroma_mode} and
10986 @var{alpha_mode} are:
10987
10988 @table @samp
10989 @item none
10990 Do nothing.
10991
10992 @item deinterleave, d
10993 Deinterleave fields, placing one above the other.
10994
10995 @item interleave, i
10996 Interleave fields. Reverse the effect of deinterleaving.
10997 @end table
10998 Default value is @code{none}.
10999
11000 @item luma_swap, ls
11001 @item chroma_swap, cs
11002 @item alpha_swap, as
11003 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
11004 @end table
11005
11006 @section inflate
11007
11008 Apply inflate effect to the video.
11009
11010 This filter replaces the pixel by the local(3x3) average by taking into account
11011 only values higher than the pixel.
11012
11013 It accepts the following options:
11014
11015 @table @option
11016 @item threshold0
11017 @item threshold1
11018 @item threshold2
11019 @item threshold3
11020 Limit the maximum change for each plane, default is 65535.
11021 If 0, plane will remain unchanged.
11022 @end table
11023
11024 @section interlace
11025
11026 Simple interlacing filter from progressive contents. This interleaves upper (or
11027 lower) lines from odd frames with lower (or upper) lines from even frames,
11028 halving the frame rate and preserving image height.
11029
11030 @example
11031    Original        Original             New Frame
11032    Frame 'j'      Frame 'j+1'             (tff)
11033   ==========      ===========       ==================
11034     Line 0  -------------------->    Frame 'j' Line 0
11035     Line 1          Line 1  ---->   Frame 'j+1' Line 1
11036     Line 2 --------------------->    Frame 'j' Line 2
11037     Line 3          Line 3  ---->   Frame 'j+1' Line 3
11038      ...             ...                   ...
11039 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
11040 @end example
11041
11042 It accepts the following optional parameters:
11043
11044 @table @option
11045 @item scan
11046 This determines whether the interlaced frame is taken from the even
11047 (tff - default) or odd (bff) lines of the progressive frame.
11048
11049 @item lowpass
11050 Vertical lowpass filter to avoid twitter interlacing and
11051 reduce moire patterns.
11052
11053 @table @samp
11054 @item 0, off
11055 Disable vertical lowpass filter
11056
11057 @item 1, linear
11058 Enable linear filter (default)
11059
11060 @item 2, complex
11061 Enable complex filter. This will slightly less reduce twitter and moire
11062 but better retain detail and subjective sharpness impression.
11063
11064 @end table
11065 @end table
11066
11067 @section kerndeint
11068
11069 Deinterlace input video by applying Donald Graft's adaptive kernel
11070 deinterling. Work on interlaced parts of a video to produce
11071 progressive frames.
11072
11073 The description of the accepted parameters follows.
11074
11075 @table @option
11076 @item thresh
11077 Set the threshold which affects the filter's tolerance when
11078 determining if a pixel line must be processed. It must be an integer
11079 in the range [0,255] and defaults to 10. A value of 0 will result in
11080 applying the process on every pixels.
11081
11082 @item map
11083 Paint pixels exceeding the threshold value to white if set to 1.
11084 Default is 0.
11085
11086 @item order
11087 Set the fields order. Swap fields if set to 1, leave fields alone if
11088 0. Default is 0.
11089
11090 @item sharp
11091 Enable additional sharpening if set to 1. Default is 0.
11092
11093 @item twoway
11094 Enable twoway sharpening if set to 1. Default is 0.
11095 @end table
11096
11097 @subsection Examples
11098
11099 @itemize
11100 @item
11101 Apply default values:
11102 @example
11103 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
11104 @end example
11105
11106 @item
11107 Enable additional sharpening:
11108 @example
11109 kerndeint=sharp=1
11110 @end example
11111
11112 @item
11113 Paint processed pixels in white:
11114 @example
11115 kerndeint=map=1
11116 @end example
11117 @end itemize
11118
11119 @section lenscorrection
11120
11121 Correct radial lens distortion
11122
11123 This filter can be used to correct for radial distortion as can result from the use
11124 of wide angle lenses, and thereby re-rectify the image. To find the right parameters
11125 one can use tools available for example as part of opencv or simply trial-and-error.
11126 To use opencv use the calibration sample (under samples/cpp) from the opencv sources
11127 and extract the k1 and k2 coefficients from the resulting matrix.
11128
11129 Note that effectively the same filter is available in the open-source tools Krita and
11130 Digikam from the KDE project.
11131
11132 In contrast to the @ref{vignette} filter, which can also be used to compensate lens errors,
11133 this filter corrects the distortion of the image, whereas @ref{vignette} corrects the
11134 brightness distribution, so you may want to use both filters together in certain
11135 cases, though you will have to take care of ordering, i.e. whether vignetting should
11136 be applied before or after lens correction.
11137
11138 @subsection Options
11139
11140 The filter accepts the following options:
11141
11142 @table @option
11143 @item cx
11144 Relative x-coordinate of the focal point of the image, and thereby the center of the
11145 distortion. This value has a range [0,1] and is expressed as fractions of the image
11146 width. Default is 0.5.
11147 @item cy
11148 Relative y-coordinate of the focal point of the image, and thereby the center of the
11149 distortion. This value has a range [0,1] and is expressed as fractions of the image
11150 height. Default is 0.5.
11151 @item k1
11152 Coefficient of the quadratic correction term. This value has a range [-1,1]. 0 means
11153 no correction. Default is 0.
11154 @item k2
11155 Coefficient of the double quadratic correction term. This value has a range [-1,1].
11156 0 means no correction. Default is 0.
11157 @end table
11158
11159 The formula that generates the correction is:
11160
11161 @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)
11162
11163 where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the
11164 distances from the focal point in the source and target images, respectively.
11165
11166 @section lensfun
11167
11168 Apply lens correction via the lensfun library (@url{http://lensfun.sourceforge.net/}).
11169
11170 The @code{lensfun} filter requires the camera make, camera model, and lens model
11171 to apply the lens correction. The filter will load the lensfun database and
11172 query it to find the corresponding camera and lens entries in the database. As
11173 long as these entries can be found with the given options, the filter can
11174 perform corrections on frames. Note that incomplete strings will result in the
11175 filter choosing the best match with the given options, and the filter will
11176 output the chosen camera and lens models (logged with level "info"). You must
11177 provide the make, camera model, and lens model as they are required.
11178
11179 The filter accepts the following options:
11180
11181 @table @option
11182 @item make
11183 The make of the camera (for example, "Canon"). This option is required.
11184
11185 @item model
11186 The model of the camera (for example, "Canon EOS 100D"). This option is
11187 required.
11188
11189 @item lens_model
11190 The model of the lens (for example, "Canon EF-S 18-55mm f/3.5-5.6 IS STM"). This
11191 option is required.
11192
11193 @item mode
11194 The type of correction to apply. The following values are valid options:
11195
11196 @table @samp
11197 @item vignetting
11198 Enables fixing lens vignetting.
11199
11200 @item geometry
11201 Enables fixing lens geometry. This is the default.
11202
11203 @item subpixel
11204 Enables fixing chromatic aberrations.
11205
11206 @item vig_geo
11207 Enables fixing lens vignetting and lens geometry.
11208
11209 @item vig_subpixel
11210 Enables fixing lens vignetting and chromatic aberrations.
11211
11212 @item distortion
11213 Enables fixing both lens geometry and chromatic aberrations.
11214
11215 @item all
11216 Enables all possible corrections.
11217
11218 @end table
11219 @item focal_length
11220 The focal length of the image/video (zoom; expected constant for video). For
11221 example, a 18--55mm lens has focal length range of [18--55], so a value in that
11222 range should be chosen when using that lens. Default 18.
11223
11224 @item aperture
11225 The aperture of the image/video (expected constant for video). Note that
11226 aperture is only used for vignetting correction. Default 3.5.
11227
11228 @item focus_distance
11229 The focus distance of the image/video (expected constant for video). Note that
11230 focus distance is only used for vignetting and only slightly affects the
11231 vignetting correction process. If unknown, leave it at the default value (which
11232 is 1000).
11233
11234 @item target_geometry
11235 The target geometry of the output image/video. The following values are valid
11236 options:
11237
11238 @table @samp
11239 @item rectilinear (default)
11240 @item fisheye
11241 @item panoramic
11242 @item equirectangular
11243 @item fisheye_orthographic
11244 @item fisheye_stereographic
11245 @item fisheye_equisolid
11246 @item fisheye_thoby
11247 @end table
11248 @item reverse
11249 Apply the reverse of image correction (instead of correcting distortion, apply
11250 it).
11251
11252 @item interpolation
11253 The type of interpolation used when correcting distortion. The following values
11254 are valid options:
11255
11256 @table @samp
11257 @item nearest
11258 @item linear (default)
11259 @item lanczos
11260 @end table
11261 @end table
11262
11263 @subsection Examples
11264
11265 @itemize
11266 @item
11267 Apply lens correction with make "Canon", camera model "Canon EOS 100D", and lens
11268 model "Canon EF-S 18-55mm f/3.5-5.6 IS STM" with focal length of "18" and
11269 aperture of "8.0".
11270
11271 @example
11272 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
11273 @end example
11274
11275 @item
11276 Apply the same as before, but only for the first 5 seconds of video.
11277
11278 @example
11279 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
11280 @end example
11281
11282 @end itemize
11283
11284 @section libvmaf
11285
11286 Obtain the VMAF (Video Multi-Method Assessment Fusion)
11287 score between two input videos.
11288
11289 The obtained VMAF score is printed through the logging system.
11290
11291 It requires Netflix's vmaf library (libvmaf) as a pre-requisite.
11292 After installing the library it can be enabled using:
11293 @code{./configure --enable-libvmaf --enable-version3}.
11294 If no model path is specified it uses the default model: @code{vmaf_v0.6.1.pkl}.
11295
11296 The filter has following options:
11297
11298 @table @option
11299 @item model_path
11300 Set the model path which is to be used for SVM.
11301 Default value: @code{"vmaf_v0.6.1.pkl"}
11302
11303 @item log_path
11304 Set the file path to be used to store logs.
11305
11306 @item log_fmt
11307 Set the format of the log file (xml or json).
11308
11309 @item enable_transform
11310 Enables transform for computing vmaf.
11311
11312 @item phone_model
11313 Invokes the phone model which will generate VMAF scores higher than in the
11314 regular model, which is more suitable for laptop, TV, etc. viewing conditions.
11315
11316 @item psnr
11317 Enables computing psnr along with vmaf.
11318
11319 @item ssim
11320 Enables computing ssim along with vmaf.
11321
11322 @item ms_ssim
11323 Enables computing ms_ssim along with vmaf.
11324
11325 @item pool
11326 Set the pool method (mean, min or harmonic mean) to be used for computing vmaf.
11327
11328 @item n_threads
11329 Set number of threads to be used when computing vmaf.
11330
11331 @item n_subsample
11332 Set interval for frame subsampling used when computing vmaf.
11333
11334 @item enable_conf_interval
11335 Enables confidence interval.
11336 @end table
11337
11338 This filter also supports the @ref{framesync} options.
11339
11340 On the below examples the input file @file{main.mpg} being processed is
11341 compared with the reference file @file{ref.mpg}.
11342
11343 @example
11344 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf -f null -
11345 @end example
11346
11347 Example with options:
11348 @example
11349 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf="psnr=1:enable-transform=1" -f null -
11350 @end example
11351
11352 @section limiter
11353
11354 Limits the pixel components values to the specified range [min, max].
11355
11356 The filter accepts the following options:
11357
11358 @table @option
11359 @item min
11360 Lower bound. Defaults to the lowest allowed value for the input.
11361
11362 @item max
11363 Upper bound. Defaults to the highest allowed value for the input.
11364
11365 @item planes
11366 Specify which planes will be processed. Defaults to all available.
11367 @end table
11368
11369 @section loop
11370
11371 Loop video frames.
11372
11373 The filter accepts the following options:
11374
11375 @table @option
11376 @item loop
11377 Set the number of loops. Setting this value to -1 will result in infinite loops.
11378 Default is 0.
11379
11380 @item size
11381 Set maximal size in number of frames. Default is 0.
11382
11383 @item start
11384 Set first frame of loop. Default is 0.
11385 @end table
11386
11387 @subsection Examples
11388
11389 @itemize
11390 @item
11391 Loop single first frame infinitely:
11392 @example
11393 loop=loop=-1:size=1:start=0
11394 @end example
11395
11396 @item
11397 Loop single first frame 10 times:
11398 @example
11399 loop=loop=10:size=1:start=0
11400 @end example
11401
11402 @item
11403 Loop 10 first frames 5 times:
11404 @example
11405 loop=loop=5:size=10:start=0
11406 @end example
11407 @end itemize
11408
11409 @section lut1d
11410
11411 Apply a 1D LUT to an input video.
11412
11413 The filter accepts the following options:
11414
11415 @table @option
11416 @item file
11417 Set the 1D LUT file name.
11418
11419 Currently supported formats:
11420 @table @samp
11421 @item cube
11422 Iridas
11423 @end table
11424
11425 @item interp
11426 Select interpolation mode.
11427
11428 Available values are:
11429
11430 @table @samp
11431 @item nearest
11432 Use values from the nearest defined point.
11433 @item linear
11434 Interpolate values using the linear interpolation.
11435 @item cubic
11436 Interpolate values using the cubic interpolation.
11437 @end table
11438 @end table
11439
11440 @anchor{lut3d}
11441 @section lut3d
11442
11443 Apply a 3D LUT to an input video.
11444
11445 The filter accepts the following options:
11446
11447 @table @option
11448 @item file
11449 Set the 3D LUT file name.
11450
11451 Currently supported formats:
11452 @table @samp
11453 @item 3dl
11454 AfterEffects
11455 @item cube
11456 Iridas
11457 @item dat
11458 DaVinci
11459 @item m3d
11460 Pandora
11461 @end table
11462 @item interp
11463 Select interpolation mode.
11464
11465 Available values are:
11466
11467 @table @samp
11468 @item nearest
11469 Use values from the nearest defined point.
11470 @item trilinear
11471 Interpolate values using the 8 points defining a cube.
11472 @item tetrahedral
11473 Interpolate values using a tetrahedron.
11474 @end table
11475 @end table
11476
11477 This filter also supports the @ref{framesync} options.
11478
11479 @section lumakey
11480
11481 Turn certain luma values into transparency.
11482
11483 The filter accepts the following options:
11484
11485 @table @option
11486 @item threshold
11487 Set the luma which will be used as base for transparency.
11488 Default value is @code{0}.
11489
11490 @item tolerance
11491 Set the range of luma values to be keyed out.
11492 Default value is @code{0}.
11493
11494 @item softness
11495 Set the range of softness. Default value is @code{0}.
11496 Use this to control gradual transition from zero to full transparency.
11497 @end table
11498
11499 @section lut, lutrgb, lutyuv
11500
11501 Compute a look-up table for binding each pixel component input value
11502 to an output value, and apply it to the input video.
11503
11504 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
11505 to an RGB input video.
11506
11507 These filters accept the following parameters:
11508 @table @option
11509 @item c0
11510 set first pixel component expression
11511 @item c1
11512 set second pixel component expression
11513 @item c2
11514 set third pixel component expression
11515 @item c3
11516 set fourth pixel component expression, corresponds to the alpha component
11517
11518 @item r
11519 set red component expression
11520 @item g
11521 set green component expression
11522 @item b
11523 set blue component expression
11524 @item a
11525 alpha component expression
11526
11527 @item y
11528 set Y/luminance component expression
11529 @item u
11530 set U/Cb component expression
11531 @item v
11532 set V/Cr component expression
11533 @end table
11534
11535 Each of them specifies the expression to use for computing the lookup table for
11536 the corresponding pixel component values.
11537
11538 The exact component associated to each of the @var{c*} options depends on the
11539 format in input.
11540
11541 The @var{lut} filter requires either YUV or RGB pixel formats in input,
11542 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
11543
11544 The expressions can contain the following constants and functions:
11545
11546 @table @option
11547 @item w
11548 @item h
11549 The input width and height.
11550
11551 @item val
11552 The input value for the pixel component.
11553
11554 @item clipval
11555 The input value, clipped to the @var{minval}-@var{maxval} range.
11556
11557 @item maxval
11558 The maximum value for the pixel component.
11559
11560 @item minval
11561 The minimum value for the pixel component.
11562
11563 @item negval
11564 The negated value for the pixel component value, clipped to the
11565 @var{minval}-@var{maxval} range; it corresponds to the expression
11566 "maxval-clipval+minval".
11567
11568 @item clip(val)
11569 The computed value in @var{val}, clipped to the
11570 @var{minval}-@var{maxval} range.
11571
11572 @item gammaval(gamma)
11573 The computed gamma correction value of the pixel component value,
11574 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
11575 expression
11576 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
11577
11578 @end table
11579
11580 All expressions default to "val".
11581
11582 @subsection Examples
11583
11584 @itemize
11585 @item
11586 Negate input video:
11587 @example
11588 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
11589 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
11590 @end example
11591
11592 The above is the same as:
11593 @example
11594 lutrgb="r=negval:g=negval:b=negval"
11595 lutyuv="y=negval:u=negval:v=negval"
11596 @end example
11597
11598 @item
11599 Negate luminance:
11600 @example
11601 lutyuv=y=negval
11602 @end example
11603
11604 @item
11605 Remove chroma components, turning the video into a graytone image:
11606 @example
11607 lutyuv="u=128:v=128"
11608 @end example
11609
11610 @item
11611 Apply a luma burning effect:
11612 @example
11613 lutyuv="y=2*val"
11614 @end example
11615
11616 @item
11617 Remove green and blue components:
11618 @example
11619 lutrgb="g=0:b=0"
11620 @end example
11621
11622 @item
11623 Set a constant alpha channel value on input:
11624 @example
11625 format=rgba,lutrgb=a="maxval-minval/2"
11626 @end example
11627
11628 @item
11629 Correct luminance gamma by a factor of 0.5:
11630 @example
11631 lutyuv=y=gammaval(0.5)
11632 @end example
11633
11634 @item
11635 Discard least significant bits of luma:
11636 @example
11637 lutyuv=y='bitand(val, 128+64+32)'
11638 @end example
11639
11640 @item
11641 Technicolor like effect:
11642 @example
11643 lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
11644 @end example
11645 @end itemize
11646
11647 @section lut2, tlut2
11648
11649 The @code{lut2} filter takes two input streams and outputs one
11650 stream.
11651
11652 The @code{tlut2} (time lut2) filter takes two consecutive frames
11653 from one single stream.
11654
11655 This filter accepts the following parameters:
11656 @table @option
11657 @item c0
11658 set first pixel component expression
11659 @item c1
11660 set second pixel component expression
11661 @item c2
11662 set third pixel component expression
11663 @item c3
11664 set fourth pixel component expression, corresponds to the alpha component
11665 @end table
11666
11667 Each of them specifies the expression to use for computing the lookup table for
11668 the corresponding pixel component values.
11669
11670 The exact component associated to each of the @var{c*} options depends on the
11671 format in inputs.
11672
11673 The expressions can contain the following constants:
11674
11675 @table @option
11676 @item w
11677 @item h
11678 The input width and height.
11679
11680 @item x
11681 The first input value for the pixel component.
11682
11683 @item y
11684 The second input value for the pixel component.
11685
11686 @item bdx
11687 The first input video bit depth.
11688
11689 @item bdy
11690 The second input video bit depth.
11691 @end table
11692
11693 All expressions default to "x".
11694
11695 @subsection Examples
11696
11697 @itemize
11698 @item
11699 Highlight differences between two RGB video streams:
11700 @example
11701 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)'
11702 @end example
11703
11704 @item
11705 Highlight differences between two YUV video streams:
11706 @example
11707 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)'
11708 @end example
11709
11710 @item
11711 Show max difference between two video streams:
11712 @example
11713 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)))'
11714 @end example
11715 @end itemize
11716
11717 @section maskedclamp
11718
11719 Clamp the first input stream with the second input and third input stream.
11720
11721 Returns the value of first stream to be between second input
11722 stream - @code{undershoot} and third input stream + @code{overshoot}.
11723
11724 This filter accepts the following options:
11725 @table @option
11726 @item undershoot
11727 Default value is @code{0}.
11728
11729 @item overshoot
11730 Default value is @code{0}.
11731
11732 @item planes
11733 Set which planes will be processed as bitmap, unprocessed planes will be
11734 copied from first stream.
11735 By default value 0xf, all planes will be processed.
11736 @end table
11737
11738 @section maskedmerge
11739
11740 Merge the first input stream with the second input stream using per pixel
11741 weights in the third input stream.
11742
11743 A value of 0 in the third stream pixel component means that pixel component
11744 from first stream is returned unchanged, while maximum value (eg. 255 for
11745 8-bit videos) means that pixel component from second stream is returned
11746 unchanged. Intermediate values define the amount of merging between both
11747 input stream's pixel components.
11748
11749 This filter accepts the following options:
11750 @table @option
11751 @item planes
11752 Set which planes will be processed as bitmap, unprocessed planes will be
11753 copied from first stream.
11754 By default value 0xf, all planes will be processed.
11755 @end table
11756
11757 @section mcdeint
11758
11759 Apply motion-compensation deinterlacing.
11760
11761 It needs one field per frame as input and must thus be used together
11762 with yadif=1/3 or equivalent.
11763
11764 This filter accepts the following options:
11765 @table @option
11766 @item mode
11767 Set the deinterlacing mode.
11768
11769 It accepts one of the following values:
11770 @table @samp
11771 @item fast
11772 @item medium
11773 @item slow
11774 use iterative motion estimation
11775 @item extra_slow
11776 like @samp{slow}, but use multiple reference frames.
11777 @end table
11778 Default value is @samp{fast}.
11779
11780 @item parity
11781 Set the picture field parity assumed for the input video. It must be
11782 one of the following values:
11783
11784 @table @samp
11785 @item 0, tff
11786 assume top field first
11787 @item 1, bff
11788 assume bottom field first
11789 @end table
11790
11791 Default value is @samp{bff}.
11792
11793 @item qp
11794 Set per-block quantization parameter (QP) used by the internal
11795 encoder.
11796
11797 Higher values should result in a smoother motion vector field but less
11798 optimal individual vectors. Default value is 1.
11799 @end table
11800
11801 @section mergeplanes
11802
11803 Merge color channel components from several video streams.
11804
11805 The filter accepts up to 4 input streams, and merge selected input
11806 planes to the output video.
11807
11808 This filter accepts the following options:
11809 @table @option
11810 @item mapping
11811 Set input to output plane mapping. Default is @code{0}.
11812
11813 The mappings is specified as a bitmap. It should be specified as a
11814 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
11815 mapping for the first plane of the output stream. 'A' sets the number of
11816 the input stream to use (from 0 to 3), and 'a' the plane number of the
11817 corresponding input to use (from 0 to 3). The rest of the mappings is
11818 similar, 'Bb' describes the mapping for the output stream second
11819 plane, 'Cc' describes the mapping for the output stream third plane and
11820 'Dd' describes the mapping for the output stream fourth plane.
11821
11822 @item format
11823 Set output pixel format. Default is @code{yuva444p}.
11824 @end table
11825
11826 @subsection Examples
11827
11828 @itemize
11829 @item
11830 Merge three gray video streams of same width and height into single video stream:
11831 @example
11832 [a0][a1][a2]mergeplanes=0x001020:yuv444p
11833 @end example
11834
11835 @item
11836 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
11837 @example
11838 [a0][a1]mergeplanes=0x00010210:yuva444p
11839 @end example
11840
11841 @item
11842 Swap Y and A plane in yuva444p stream:
11843 @example
11844 format=yuva444p,mergeplanes=0x03010200:yuva444p
11845 @end example
11846
11847 @item
11848 Swap U and V plane in yuv420p stream:
11849 @example
11850 format=yuv420p,mergeplanes=0x000201:yuv420p
11851 @end example
11852
11853 @item
11854 Cast a rgb24 clip to yuv444p:
11855 @example
11856 format=rgb24,mergeplanes=0x000102:yuv444p
11857 @end example
11858 @end itemize
11859
11860 @section mestimate
11861
11862 Estimate and export motion vectors using block matching algorithms.
11863 Motion vectors are stored in frame side data to be used by other filters.
11864
11865 This filter accepts the following options:
11866 @table @option
11867 @item method
11868 Specify the motion estimation method. Accepts one of the following values:
11869
11870 @table @samp
11871 @item esa
11872 Exhaustive search algorithm.
11873 @item tss
11874 Three step search algorithm.
11875 @item tdls
11876 Two dimensional logarithmic search algorithm.
11877 @item ntss
11878 New three step search algorithm.
11879 @item fss
11880 Four step search algorithm.
11881 @item ds
11882 Diamond search algorithm.
11883 @item hexbs
11884 Hexagon-based search algorithm.
11885 @item epzs
11886 Enhanced predictive zonal search algorithm.
11887 @item umh
11888 Uneven multi-hexagon search algorithm.
11889 @end table
11890 Default value is @samp{esa}.
11891
11892 @item mb_size
11893 Macroblock size. Default @code{16}.
11894
11895 @item search_param
11896 Search parameter. Default @code{7}.
11897 @end table
11898
11899 @section midequalizer
11900
11901 Apply Midway Image Equalization effect using two video streams.
11902
11903 Midway Image Equalization adjusts a pair of images to have the same
11904 histogram, while maintaining their dynamics as much as possible. It's
11905 useful for e.g. matching exposures from a pair of stereo cameras.
11906
11907 This filter has two inputs and one output, which must be of same pixel format, but
11908 may be of different sizes. The output of filter is first input adjusted with
11909 midway histogram of both inputs.
11910
11911 This filter accepts the following option:
11912
11913 @table @option
11914 @item planes
11915 Set which planes to process. Default is @code{15}, which is all available planes.
11916 @end table
11917
11918 @section minterpolate
11919
11920 Convert the video to specified frame rate using motion interpolation.
11921
11922 This filter accepts the following options:
11923 @table @option
11924 @item fps
11925 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}.
11926
11927 @item mi_mode
11928 Motion interpolation mode. Following values are accepted:
11929 @table @samp
11930 @item dup
11931 Duplicate previous or next frame for interpolating new ones.
11932 @item blend
11933 Blend source frames. Interpolated frame is mean of previous and next frames.
11934 @item mci
11935 Motion compensated interpolation. Following options are effective when this mode is selected:
11936
11937 @table @samp
11938 @item mc_mode
11939 Motion compensation mode. Following values are accepted:
11940 @table @samp
11941 @item obmc
11942 Overlapped block motion compensation.
11943 @item aobmc
11944 Adaptive overlapped block motion compensation. Window weighting coefficients are controlled adaptively according to the reliabilities of the neighboring motion vectors to reduce oversmoothing.
11945 @end table
11946 Default mode is @samp{obmc}.
11947
11948 @item me_mode
11949 Motion estimation mode. Following values are accepted:
11950 @table @samp
11951 @item bidir
11952 Bidirectional motion estimation. Motion vectors are estimated for each source frame in both forward and backward directions.
11953 @item bilat
11954 Bilateral motion estimation. Motion vectors are estimated directly for interpolated frame.
11955 @end table
11956 Default mode is @samp{bilat}.
11957
11958 @item me
11959 The algorithm to be used for motion estimation. Following values are accepted:
11960 @table @samp
11961 @item esa
11962 Exhaustive search algorithm.
11963 @item tss
11964 Three step search algorithm.
11965 @item tdls
11966 Two dimensional logarithmic search algorithm.
11967 @item ntss
11968 New three step search algorithm.
11969 @item fss
11970 Four step search algorithm.
11971 @item ds
11972 Diamond search algorithm.
11973 @item hexbs
11974 Hexagon-based search algorithm.
11975 @item epzs
11976 Enhanced predictive zonal search algorithm.
11977 @item umh
11978 Uneven multi-hexagon search algorithm.
11979 @end table
11980 Default algorithm is @samp{epzs}.
11981
11982 @item mb_size
11983 Macroblock size. Default @code{16}.
11984
11985 @item search_param
11986 Motion estimation search parameter. Default @code{32}.
11987
11988 @item vsbmc
11989 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).
11990 @end table
11991 @end table
11992
11993 @item scd
11994 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:
11995 @table @samp
11996 @item none
11997 Disable scene change detection.
11998 @item fdiff
11999 Frame difference. Corresponding pixel values are compared and if it satisfies @var{scd_threshold} scene change is detected.
12000 @end table
12001 Default method is @samp{fdiff}.
12002
12003 @item scd_threshold
12004 Scene change detection threshold. Default is @code{5.0}.
12005 @end table
12006
12007 @section mix
12008
12009 Mix several video input streams into one video stream.
12010
12011 A description of the accepted options follows.
12012
12013 @table @option
12014 @item nb_inputs
12015 The number of inputs. If unspecified, it defaults to 2.
12016
12017 @item weights
12018 Specify weight of each input video stream as sequence.
12019 Each weight is separated by space. If number of weights
12020 is smaller than number of @var{frames} last specified
12021 weight will be used for all remaining unset weights.
12022
12023 @item scale
12024 Specify scale, if it is set it will be multiplied with sum
12025 of each weight multiplied with pixel values to give final destination
12026 pixel value. By default @var{scale} is auto scaled to sum of weights.
12027
12028 @item duration
12029 Specify how end of stream is determined.
12030 @table @samp
12031 @item longest
12032 The duration of the longest input. (default)
12033
12034 @item shortest
12035 The duration of the shortest input.
12036
12037 @item first
12038 The duration of the first input.
12039 @end table
12040 @end table
12041
12042 @section mpdecimate
12043
12044 Drop frames that do not differ greatly from the previous frame in
12045 order to reduce frame rate.
12046
12047 The main use of this filter is for very-low-bitrate encoding
12048 (e.g. streaming over dialup modem), but it could in theory be used for
12049 fixing movies that were inverse-telecined incorrectly.
12050
12051 A description of the accepted options follows.
12052
12053 @table @option
12054 @item max
12055 Set the maximum number of consecutive frames which can be dropped (if
12056 positive), or the minimum interval between dropped frames (if
12057 negative). If the value is 0, the frame is dropped disregarding the
12058 number of previous sequentially dropped frames.
12059
12060 Default value is 0.
12061
12062 @item hi
12063 @item lo
12064 @item frac
12065 Set the dropping threshold values.
12066
12067 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
12068 represent actual pixel value differences, so a threshold of 64
12069 corresponds to 1 unit of difference for each pixel, or the same spread
12070 out differently over the block.
12071
12072 A frame is a candidate for dropping if no 8x8 blocks differ by more
12073 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
12074 meaning the whole image) differ by more than a threshold of @option{lo}.
12075
12076 Default value for @option{hi} is 64*12, default value for @option{lo} is
12077 64*5, and default value for @option{frac} is 0.33.
12078 @end table
12079
12080
12081 @section negate
12082
12083 Negate (invert) the input video.
12084
12085 It accepts the following option:
12086
12087 @table @option
12088
12089 @item negate_alpha
12090 With value 1, it negates the alpha component, if present. Default value is 0.
12091 @end table
12092
12093 @anchor{nlmeans}
12094 @section nlmeans
12095
12096 Denoise frames using Non-Local Means algorithm.
12097
12098 Each pixel is adjusted by looking for other pixels with similar contexts. This
12099 context similarity is defined by comparing their surrounding patches of size
12100 @option{p}x@option{p}. Patches are searched in an area of @option{r}x@option{r}
12101 around the pixel.
12102
12103 Note that the research area defines centers for patches, which means some
12104 patches will be made of pixels outside that research area.
12105
12106 The filter accepts the following options.
12107
12108 @table @option
12109 @item s
12110 Set denoising strength.
12111
12112 @item p
12113 Set patch size.
12114
12115 @item pc
12116 Same as @option{p} but for chroma planes.
12117
12118 The default value is @var{0} and means automatic.
12119
12120 @item r
12121 Set research size.
12122
12123 @item rc
12124 Same as @option{r} but for chroma planes.
12125
12126 The default value is @var{0} and means automatic.
12127 @end table
12128
12129 @section nnedi
12130
12131 Deinterlace video using neural network edge directed interpolation.
12132
12133 This filter accepts the following options:
12134
12135 @table @option
12136 @item weights
12137 Mandatory option, without binary file filter can not work.
12138 Currently file can be found here:
12139 https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
12140
12141 @item deint
12142 Set which frames to deinterlace, by default it is @code{all}.
12143 Can be @code{all} or @code{interlaced}.
12144
12145 @item field
12146 Set mode of operation.
12147
12148 Can be one of the following:
12149
12150 @table @samp
12151 @item af
12152 Use frame flags, both fields.
12153 @item a
12154 Use frame flags, single field.
12155 @item t
12156 Use top field only.
12157 @item b
12158 Use bottom field only.
12159 @item tf
12160 Use both fields, top first.
12161 @item bf
12162 Use both fields, bottom first.
12163 @end table
12164
12165 @item planes
12166 Set which planes to process, by default filter process all frames.
12167
12168 @item nsize
12169 Set size of local neighborhood around each pixel, used by the predictor neural
12170 network.
12171
12172 Can be one of the following:
12173
12174 @table @samp
12175 @item s8x6
12176 @item s16x6
12177 @item s32x6
12178 @item s48x6
12179 @item s8x4
12180 @item s16x4
12181 @item s32x4
12182 @end table
12183
12184 @item nns
12185 Set the number of neurons in predictor neural network.
12186 Can be one of the following:
12187
12188 @table @samp
12189 @item n16
12190 @item n32
12191 @item n64
12192 @item n128
12193 @item n256
12194 @end table
12195
12196 @item qual
12197 Controls the number of different neural network predictions that are blended
12198 together to compute the final output value. Can be @code{fast}, default or
12199 @code{slow}.
12200
12201 @item etype
12202 Set which set of weights to use in the predictor.
12203 Can be one of the following:
12204
12205 @table @samp
12206 @item a
12207 weights trained to minimize absolute error
12208 @item s
12209 weights trained to minimize squared error
12210 @end table
12211
12212 @item pscrn
12213 Controls whether or not the prescreener neural network is used to decide
12214 which pixels should be processed by the predictor neural network and which
12215 can be handled by simple cubic interpolation.
12216 The prescreener is trained to know whether cubic interpolation will be
12217 sufficient for a pixel or whether it should be predicted by the predictor nn.
12218 The computational complexity of the prescreener nn is much less than that of
12219 the predictor nn. Since most pixels can be handled by cubic interpolation,
12220 using the prescreener generally results in much faster processing.
12221 The prescreener is pretty accurate, so the difference between using it and not
12222 using it is almost always unnoticeable.
12223
12224 Can be one of the following:
12225
12226 @table @samp
12227 @item none
12228 @item original
12229 @item new
12230 @end table
12231
12232 Default is @code{new}.
12233
12234 @item fapprox
12235 Set various debugging flags.
12236 @end table
12237
12238 @section noformat
12239
12240 Force libavfilter not to use any of the specified pixel formats for the
12241 input to the next filter.
12242
12243 It accepts the following parameters:
12244 @table @option
12245
12246 @item pix_fmts
12247 A '|'-separated list of pixel format names, such as
12248 pix_fmts=yuv420p|monow|rgb24".
12249
12250 @end table
12251
12252 @subsection Examples
12253
12254 @itemize
12255 @item
12256 Force libavfilter to use a format different from @var{yuv420p} for the
12257 input to the vflip filter:
12258 @example
12259 noformat=pix_fmts=yuv420p,vflip
12260 @end example
12261
12262 @item
12263 Convert the input video to any of the formats not contained in the list:
12264 @example
12265 noformat=yuv420p|yuv444p|yuv410p
12266 @end example
12267 @end itemize
12268
12269 @section noise
12270
12271 Add noise on video input frame.
12272
12273 The filter accepts the following options:
12274
12275 @table @option
12276 @item all_seed
12277 @item c0_seed
12278 @item c1_seed
12279 @item c2_seed
12280 @item c3_seed
12281 Set noise seed for specific pixel component or all pixel components in case
12282 of @var{all_seed}. Default value is @code{123457}.
12283
12284 @item all_strength, alls
12285 @item c0_strength, c0s
12286 @item c1_strength, c1s
12287 @item c2_strength, c2s
12288 @item c3_strength, c3s
12289 Set noise strength for specific pixel component or all pixel components in case
12290 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
12291
12292 @item all_flags, allf
12293 @item c0_flags, c0f
12294 @item c1_flags, c1f
12295 @item c2_flags, c2f
12296 @item c3_flags, c3f
12297 Set pixel component flags or set flags for all components if @var{all_flags}.
12298 Available values for component flags are:
12299 @table @samp
12300 @item a
12301 averaged temporal noise (smoother)
12302 @item p
12303 mix random noise with a (semi)regular pattern
12304 @item t
12305 temporal noise (noise pattern changes between frames)
12306 @item u
12307 uniform noise (gaussian otherwise)
12308 @end table
12309 @end table
12310
12311 @subsection Examples
12312
12313 Add temporal and uniform noise to input video:
12314 @example
12315 noise=alls=20:allf=t+u
12316 @end example
12317
12318 @section normalize
12319
12320 Normalize RGB video (aka histogram stretching, contrast stretching).
12321 See: https://en.wikipedia.org/wiki/Normalization_(image_processing)
12322
12323 For each channel of each frame, the filter computes the input range and maps
12324 it linearly to the user-specified output range. The output range defaults
12325 to the full dynamic range from pure black to pure white.
12326
12327 Temporal smoothing can be used on the input range to reduce flickering (rapid
12328 changes in brightness) caused when small dark or bright objects enter or leave
12329 the scene. This is similar to the auto-exposure (automatic gain control) on a
12330 video camera, and, like a video camera, it may cause a period of over- or
12331 under-exposure of the video.
12332
12333 The R,G,B channels can be normalized independently, which may cause some
12334 color shifting, or linked together as a single channel, which prevents
12335 color shifting. Linked normalization preserves hue. Independent normalization
12336 does not, so it can be used to remove some color casts. Independent and linked
12337 normalization can be combined in any ratio.
12338
12339 The normalize filter accepts the following options:
12340
12341 @table @option
12342 @item blackpt
12343 @item whitept
12344 Colors which define the output range. The minimum input value is mapped to
12345 the @var{blackpt}. The maximum input value is mapped to the @var{whitept}.
12346 The defaults are black and white respectively. Specifying white for
12347 @var{blackpt} and black for @var{whitept} will give color-inverted,
12348 normalized video. Shades of grey can be used to reduce the dynamic range
12349 (contrast). Specifying saturated colors here can create some interesting
12350 effects.
12351
12352 @item smoothing
12353 The number of previous frames to use for temporal smoothing. The input range
12354 of each channel is smoothed using a rolling average over the current frame
12355 and the @var{smoothing} previous frames. The default is 0 (no temporal
12356 smoothing).
12357
12358 @item independence
12359 Controls the ratio of independent (color shifting) channel normalization to
12360 linked (color preserving) normalization. 0.0 is fully linked, 1.0 is fully
12361 independent. Defaults to 1.0 (fully independent).
12362
12363 @item strength
12364 Overall strength of the filter. 1.0 is full strength. 0.0 is a rather
12365 expensive no-op. Defaults to 1.0 (full strength).
12366
12367 @end table
12368
12369 @subsection Examples
12370
12371 Stretch video contrast to use the full dynamic range, with no temporal
12372 smoothing; may flicker depending on the source content:
12373 @example
12374 normalize=blackpt=black:whitept=white:smoothing=0
12375 @end example
12376
12377 As above, but with 50 frames of temporal smoothing; flicker should be
12378 reduced, depending on the source content:
12379 @example
12380 normalize=blackpt=black:whitept=white:smoothing=50
12381 @end example
12382
12383 As above, but with hue-preserving linked channel normalization:
12384 @example
12385 normalize=blackpt=black:whitept=white:smoothing=50:independence=0
12386 @end example
12387
12388 As above, but with half strength:
12389 @example
12390 normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5
12391 @end example
12392
12393 Map the darkest input color to red, the brightest input color to cyan:
12394 @example
12395 normalize=blackpt=red:whitept=cyan
12396 @end example
12397
12398 @section null
12399
12400 Pass the video source unchanged to the output.
12401
12402 @section ocr
12403 Optical Character Recognition
12404
12405 This filter uses Tesseract for optical character recognition. To enable
12406 compilation of this filter, you need to configure FFmpeg with
12407 @code{--enable-libtesseract}.
12408
12409 It accepts the following options:
12410
12411 @table @option
12412 @item datapath
12413 Set datapath to tesseract data. Default is to use whatever was
12414 set at installation.
12415
12416 @item language
12417 Set language, default is "eng".
12418
12419 @item whitelist
12420 Set character whitelist.
12421
12422 @item blacklist
12423 Set character blacklist.
12424 @end table
12425
12426 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
12427
12428 @section ocv
12429
12430 Apply a video transform using libopencv.
12431
12432 To enable this filter, install the libopencv library and headers and
12433 configure FFmpeg with @code{--enable-libopencv}.
12434
12435 It accepts the following parameters:
12436
12437 @table @option
12438
12439 @item filter_name
12440 The name of the libopencv filter to apply.
12441
12442 @item filter_params
12443 The parameters to pass to the libopencv filter. If not specified, the default
12444 values are assumed.
12445
12446 @end table
12447
12448 Refer to the official libopencv documentation for more precise
12449 information:
12450 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
12451
12452 Several libopencv filters are supported; see the following subsections.
12453
12454 @anchor{dilate}
12455 @subsection dilate
12456
12457 Dilate an image by using a specific structuring element.
12458 It corresponds to the libopencv function @code{cvDilate}.
12459
12460 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
12461
12462 @var{struct_el} represents a structuring element, and has the syntax:
12463 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
12464
12465 @var{cols} and @var{rows} represent the number of columns and rows of
12466 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
12467 point, and @var{shape} the shape for the structuring element. @var{shape}
12468 must be "rect", "cross", "ellipse", or "custom".
12469
12470 If the value for @var{shape} is "custom", it must be followed by a
12471 string of the form "=@var{filename}". The file with name
12472 @var{filename} is assumed to represent a binary image, with each
12473 printable character corresponding to a bright pixel. When a custom
12474 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
12475 or columns and rows of the read file are assumed instead.
12476
12477 The default value for @var{struct_el} is "3x3+0x0/rect".
12478
12479 @var{nb_iterations} specifies the number of times the transform is
12480 applied to the image, and defaults to 1.
12481
12482 Some examples:
12483 @example
12484 # Use the default values
12485 ocv=dilate
12486
12487 # Dilate using a structuring element with a 5x5 cross, iterating two times
12488 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
12489
12490 # Read the shape from the file diamond.shape, iterating two times.
12491 # The file diamond.shape may contain a pattern of characters like this
12492 #   *
12493 #  ***
12494 # *****
12495 #  ***
12496 #   *
12497 # The specified columns and rows are ignored
12498 # but the anchor point coordinates are not
12499 ocv=dilate:0x0+2x2/custom=diamond.shape|2
12500 @end example
12501
12502 @subsection erode
12503
12504 Erode an image by using a specific structuring element.
12505 It corresponds to the libopencv function @code{cvErode}.
12506
12507 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
12508 with the same syntax and semantics as the @ref{dilate} filter.
12509
12510 @subsection smooth
12511
12512 Smooth the input video.
12513
12514 The filter takes the following parameters:
12515 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
12516
12517 @var{type} is the type of smooth filter to apply, and must be one of
12518 the following values: "blur", "blur_no_scale", "median", "gaussian",
12519 or "bilateral". The default value is "gaussian".
12520
12521 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
12522 depend on the smooth type. @var{param1} and
12523 @var{param2} accept integer positive values or 0. @var{param3} and
12524 @var{param4} accept floating point values.
12525
12526 The default value for @var{param1} is 3. The default value for the
12527 other parameters is 0.
12528
12529 These parameters correspond to the parameters assigned to the
12530 libopencv function @code{cvSmooth}.
12531
12532 @section oscilloscope
12533
12534 2D Video Oscilloscope.
12535
12536 Useful to measure spatial impulse, step responses, chroma delays, etc.
12537
12538 It accepts the following parameters:
12539
12540 @table @option
12541 @item x
12542 Set scope center x position.
12543
12544 @item y
12545 Set scope center y position.
12546
12547 @item s
12548 Set scope size, relative to frame diagonal.
12549
12550 @item t
12551 Set scope tilt/rotation.
12552
12553 @item o
12554 Set trace opacity.
12555
12556 @item tx
12557 Set trace center x position.
12558
12559 @item ty
12560 Set trace center y position.
12561
12562 @item tw
12563 Set trace width, relative to width of frame.
12564
12565 @item th
12566 Set trace height, relative to height of frame.
12567
12568 @item c
12569 Set which components to trace. By default it traces first three components.
12570
12571 @item g
12572 Draw trace grid. By default is enabled.
12573
12574 @item st
12575 Draw some statistics. By default is enabled.
12576
12577 @item sc
12578 Draw scope. By default is enabled.
12579 @end table
12580
12581 @subsection Examples
12582
12583 @itemize
12584 @item
12585 Inspect full first row of video frame.
12586 @example
12587 oscilloscope=x=0.5:y=0:s=1
12588 @end example
12589
12590 @item
12591 Inspect full last row of video frame.
12592 @example
12593 oscilloscope=x=0.5:y=1:s=1
12594 @end example
12595
12596 @item
12597 Inspect full 5th line of video frame of height 1080.
12598 @example
12599 oscilloscope=x=0.5:y=5/1080:s=1
12600 @end example
12601
12602 @item
12603 Inspect full last column of video frame.
12604 @example
12605 oscilloscope=x=1:y=0.5:s=1:t=1
12606 @end example
12607
12608 @end itemize
12609
12610 @anchor{overlay}
12611 @section overlay
12612
12613 Overlay one video on top of another.
12614
12615 It takes two inputs and has one output. The first input is the "main"
12616 video on which the second input is overlaid.
12617
12618 It accepts the following parameters:
12619
12620 A description of the accepted options follows.
12621
12622 @table @option
12623 @item x
12624 @item y
12625 Set the expression for the x and y coordinates of the overlaid video
12626 on the main video. Default value is "0" for both expressions. In case
12627 the expression is invalid, it is set to a huge value (meaning that the
12628 overlay will not be displayed within the output visible area).
12629
12630 @item eof_action
12631 See @ref{framesync}.
12632
12633 @item eval
12634 Set when the expressions for @option{x}, and @option{y} are evaluated.
12635
12636 It accepts the following values:
12637 @table @samp
12638 @item init
12639 only evaluate expressions once during the filter initialization or
12640 when a command is processed
12641
12642 @item frame
12643 evaluate expressions for each incoming frame
12644 @end table
12645
12646 Default value is @samp{frame}.
12647
12648 @item shortest
12649 See @ref{framesync}.
12650
12651 @item format
12652 Set the format for the output video.
12653
12654 It accepts the following values:
12655 @table @samp
12656 @item yuv420
12657 force YUV420 output
12658
12659 @item yuv422
12660 force YUV422 output
12661
12662 @item yuv444
12663 force YUV444 output
12664
12665 @item rgb
12666 force packed RGB output
12667
12668 @item gbrp
12669 force planar RGB output
12670
12671 @item auto
12672 automatically pick format
12673 @end table
12674
12675 Default value is @samp{yuv420}.
12676
12677 @item repeatlast
12678 See @ref{framesync}.
12679
12680 @item alpha
12681 Set format of alpha of the overlaid video, it can be @var{straight} or
12682 @var{premultiplied}. Default is @var{straight}.
12683 @end table
12684
12685 The @option{x}, and @option{y} expressions can contain the following
12686 parameters.
12687
12688 @table @option
12689 @item main_w, W
12690 @item main_h, H
12691 The main input width and height.
12692
12693 @item overlay_w, w
12694 @item overlay_h, h
12695 The overlay input width and height.
12696
12697 @item x
12698 @item y
12699 The computed values for @var{x} and @var{y}. They are evaluated for
12700 each new frame.
12701
12702 @item hsub
12703 @item vsub
12704 horizontal and vertical chroma subsample values of the output
12705 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
12706 @var{vsub} is 1.
12707
12708 @item n
12709 the number of input frame, starting from 0
12710
12711 @item pos
12712 the position in the file of the input frame, NAN if unknown
12713
12714 @item t
12715 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
12716
12717 @end table
12718
12719 This filter also supports the @ref{framesync} options.
12720
12721 Note that the @var{n}, @var{pos}, @var{t} variables are available only
12722 when evaluation is done @emph{per frame}, and will evaluate to NAN
12723 when @option{eval} is set to @samp{init}.
12724
12725 Be aware that frames are taken from each input video in timestamp
12726 order, hence, if their initial timestamps differ, it is a good idea
12727 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
12728 have them begin in the same zero timestamp, as the example for
12729 the @var{movie} filter does.
12730
12731 You can chain together more overlays but you should test the
12732 efficiency of such approach.
12733
12734 @subsection Commands
12735
12736 This filter supports the following commands:
12737 @table @option
12738 @item x
12739 @item y
12740 Modify the x and y of the overlay input.
12741 The command accepts the same syntax of the corresponding option.
12742
12743 If the specified expression is not valid, it is kept at its current
12744 value.
12745 @end table
12746
12747 @subsection Examples
12748
12749 @itemize
12750 @item
12751 Draw the overlay at 10 pixels from the bottom right corner of the main
12752 video:
12753 @example
12754 overlay=main_w-overlay_w-10:main_h-overlay_h-10
12755 @end example
12756
12757 Using named options the example above becomes:
12758 @example
12759 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
12760 @end example
12761
12762 @item
12763 Insert a transparent PNG logo in the bottom left corner of the input,
12764 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
12765 @example
12766 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
12767 @end example
12768
12769 @item
12770 Insert 2 different transparent PNG logos (second logo on bottom
12771 right corner) using the @command{ffmpeg} tool:
12772 @example
12773 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
12774 @end example
12775
12776 @item
12777 Add a transparent color layer on top of the main video; @code{WxH}
12778 must specify the size of the main input to the overlay filter:
12779 @example
12780 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
12781 @end example
12782
12783 @item
12784 Play an original video and a filtered version (here with the deshake
12785 filter) side by side using the @command{ffplay} tool:
12786 @example
12787 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
12788 @end example
12789
12790 The above command is the same as:
12791 @example
12792 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
12793 @end example
12794
12795 @item
12796 Make a sliding overlay appearing from the left to the right top part of the
12797 screen starting since time 2:
12798 @example
12799 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
12800 @end example
12801
12802 @item
12803 Compose output by putting two input videos side to side:
12804 @example
12805 ffmpeg -i left.avi -i right.avi -filter_complex "
12806 nullsrc=size=200x100 [background];
12807 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
12808 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
12809 [background][left]       overlay=shortest=1       [background+left];
12810 [background+left][right] overlay=shortest=1:x=100 [left+right]
12811 "
12812 @end example
12813
12814 @item
12815 Mask 10-20 seconds of a video by applying the delogo filter to a section
12816 @example
12817 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
12818 -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]'
12819 masked.avi
12820 @end example
12821
12822 @item
12823 Chain several overlays in cascade:
12824 @example
12825 nullsrc=s=200x200 [bg];
12826 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
12827 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
12828 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
12829 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
12830 [in3] null,       [mid2] overlay=100:100 [out0]
12831 @end example
12832
12833 @end itemize
12834
12835 @section owdenoise
12836
12837 Apply Overcomplete Wavelet denoiser.
12838
12839 The filter accepts the following options:
12840
12841 @table @option
12842 @item depth
12843 Set depth.
12844
12845 Larger depth values will denoise lower frequency components more, but
12846 slow down filtering.
12847
12848 Must be an int in the range 8-16, default is @code{8}.
12849
12850 @item luma_strength, ls
12851 Set luma strength.
12852
12853 Must be a double value in the range 0-1000, default is @code{1.0}.
12854
12855 @item chroma_strength, cs
12856 Set chroma strength.
12857
12858 Must be a double value in the range 0-1000, default is @code{1.0}.
12859 @end table
12860
12861 @anchor{pad}
12862 @section pad
12863
12864 Add paddings to the input image, and place the original input at the
12865 provided @var{x}, @var{y} coordinates.
12866
12867 It accepts the following parameters:
12868
12869 @table @option
12870 @item width, w
12871 @item height, h
12872 Specify an expression for the size of the output image with the
12873 paddings added. If the value for @var{width} or @var{height} is 0, the
12874 corresponding input size is used for the output.
12875
12876 The @var{width} expression can reference the value set by the
12877 @var{height} expression, and vice versa.
12878
12879 The default value of @var{width} and @var{height} is 0.
12880
12881 @item x
12882 @item y
12883 Specify the offsets to place the input image at within the padded area,
12884 with respect to the top/left border of the output image.
12885
12886 The @var{x} expression can reference the value set by the @var{y}
12887 expression, and vice versa.
12888
12889 The default value of @var{x} and @var{y} is 0.
12890
12891 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
12892 so the input image is centered on the padded area.
12893
12894 @item color
12895 Specify the color of the padded area. For the syntax of this option,
12896 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
12897 manual,ffmpeg-utils}.
12898
12899 The default value of @var{color} is "black".
12900
12901 @item eval
12902 Specify when to evaluate  @var{width}, @var{height}, @var{x} and @var{y} expression.
12903
12904 It accepts the following values:
12905
12906 @table @samp
12907 @item init
12908 Only evaluate expressions once during the filter initialization or when
12909 a command is processed.
12910
12911 @item frame
12912 Evaluate expressions for each incoming frame.
12913
12914 @end table
12915
12916 Default value is @samp{init}.
12917
12918 @item aspect
12919 Pad to aspect instead to a resolution.
12920
12921 @end table
12922
12923 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
12924 options are expressions containing the following constants:
12925
12926 @table @option
12927 @item in_w
12928 @item in_h
12929 The input video width and height.
12930
12931 @item iw
12932 @item ih
12933 These are the same as @var{in_w} and @var{in_h}.
12934
12935 @item out_w
12936 @item out_h
12937 The output width and height (the size of the padded area), as
12938 specified by the @var{width} and @var{height} expressions.
12939
12940 @item ow
12941 @item oh
12942 These are the same as @var{out_w} and @var{out_h}.
12943
12944 @item x
12945 @item y
12946 The x and y offsets as specified by the @var{x} and @var{y}
12947 expressions, or NAN if not yet specified.
12948
12949 @item a
12950 same as @var{iw} / @var{ih}
12951
12952 @item sar
12953 input sample aspect ratio
12954
12955 @item dar
12956 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
12957
12958 @item hsub
12959 @item vsub
12960 The horizontal and vertical chroma subsample values. For example for the
12961 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
12962 @end table
12963
12964 @subsection Examples
12965
12966 @itemize
12967 @item
12968 Add paddings with the color "violet" to the input video. The output video
12969 size is 640x480, and the top-left corner of the input video is placed at
12970 column 0, row 40
12971 @example
12972 pad=640:480:0:40:violet
12973 @end example
12974
12975 The example above is equivalent to the following command:
12976 @example
12977 pad=width=640:height=480:x=0:y=40:color=violet
12978 @end example
12979
12980 @item
12981 Pad the input to get an output with dimensions increased by 3/2,
12982 and put the input video at the center of the padded area:
12983 @example
12984 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
12985 @end example
12986
12987 @item
12988 Pad the input to get a squared output with size equal to the maximum
12989 value between the input width and height, and put the input video at
12990 the center of the padded area:
12991 @example
12992 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
12993 @end example
12994
12995 @item
12996 Pad the input to get a final w/h ratio of 16:9:
12997 @example
12998 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
12999 @end example
13000
13001 @item
13002 In case of anamorphic video, in order to set the output display aspect
13003 correctly, it is necessary to use @var{sar} in the expression,
13004 according to the relation:
13005 @example
13006 (ih * X / ih) * sar = output_dar
13007 X = output_dar / sar
13008 @end example
13009
13010 Thus the previous example needs to be modified to:
13011 @example
13012 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
13013 @end example
13014
13015 @item
13016 Double the output size and put the input video in the bottom-right
13017 corner of the output padded area:
13018 @example
13019 pad="2*iw:2*ih:ow-iw:oh-ih"
13020 @end example
13021 @end itemize
13022
13023 @anchor{palettegen}
13024 @section palettegen
13025
13026 Generate one palette for a whole video stream.
13027
13028 It accepts the following options:
13029
13030 @table @option
13031 @item max_colors
13032 Set the maximum number of colors to quantize in the palette.
13033 Note: the palette will still contain 256 colors; the unused palette entries
13034 will be black.
13035
13036 @item reserve_transparent
13037 Create a palette of 255 colors maximum and reserve the last one for
13038 transparency. Reserving the transparency color is useful for GIF optimization.
13039 If not set, the maximum of colors in the palette will be 256. You probably want
13040 to disable this option for a standalone image.
13041 Set by default.
13042
13043 @item transparency_color
13044 Set the color that will be used as background for transparency.
13045
13046 @item stats_mode
13047 Set statistics mode.
13048
13049 It accepts the following values:
13050 @table @samp
13051 @item full
13052 Compute full frame histograms.
13053 @item diff
13054 Compute histograms only for the part that differs from previous frame. This
13055 might be relevant to give more importance to the moving part of your input if
13056 the background is static.
13057 @item single
13058 Compute new histogram for each frame.
13059 @end table
13060
13061 Default value is @var{full}.
13062 @end table
13063
13064 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
13065 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
13066 color quantization of the palette. This information is also visible at
13067 @var{info} logging level.
13068
13069 @subsection Examples
13070
13071 @itemize
13072 @item
13073 Generate a representative palette of a given video using @command{ffmpeg}:
13074 @example
13075 ffmpeg -i input.mkv -vf palettegen palette.png
13076 @end example
13077 @end itemize
13078
13079 @section paletteuse
13080
13081 Use a palette to downsample an input video stream.
13082
13083 The filter takes two inputs: one video stream and a palette. The palette must
13084 be a 256 pixels image.
13085
13086 It accepts the following options:
13087
13088 @table @option
13089 @item dither
13090 Select dithering mode. Available algorithms are:
13091 @table @samp
13092 @item bayer
13093 Ordered 8x8 bayer dithering (deterministic)
13094 @item heckbert
13095 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
13096 Note: this dithering is sometimes considered "wrong" and is included as a
13097 reference.
13098 @item floyd_steinberg
13099 Floyd and Steingberg dithering (error diffusion)
13100 @item sierra2
13101 Frankie Sierra dithering v2 (error diffusion)
13102 @item sierra2_4a
13103 Frankie Sierra dithering v2 "Lite" (error diffusion)
13104 @end table
13105
13106 Default is @var{sierra2_4a}.
13107
13108 @item bayer_scale
13109 When @var{bayer} dithering is selected, this option defines the scale of the
13110 pattern (how much the crosshatch pattern is visible). A low value means more
13111 visible pattern for less banding, and higher value means less visible pattern
13112 at the cost of more banding.
13113
13114 The option must be an integer value in the range [0,5]. Default is @var{2}.
13115
13116 @item diff_mode
13117 If set, define the zone to process
13118
13119 @table @samp
13120 @item rectangle
13121 Only the changing rectangle will be reprocessed. This is similar to GIF
13122 cropping/offsetting compression mechanism. This option can be useful for speed
13123 if only a part of the image is changing, and has use cases such as limiting the
13124 scope of the error diffusal @option{dither} to the rectangle that bounds the
13125 moving scene (it leads to more deterministic output if the scene doesn't change
13126 much, and as a result less moving noise and better GIF compression).
13127 @end table
13128
13129 Default is @var{none}.
13130
13131 @item new
13132 Take new palette for each output frame.
13133
13134 @item alpha_threshold
13135 Sets the alpha threshold for transparency. Alpha values above this threshold
13136 will be treated as completely opaque, and values below this threshold will be
13137 treated as completely transparent.
13138
13139 The option must be an integer value in the range [0,255]. Default is @var{128}.
13140 @end table
13141
13142 @subsection Examples
13143
13144 @itemize
13145 @item
13146 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
13147 using @command{ffmpeg}:
13148 @example
13149 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
13150 @end example
13151 @end itemize
13152
13153 @section perspective
13154
13155 Correct perspective of video not recorded perpendicular to the screen.
13156
13157 A description of the accepted parameters follows.
13158
13159 @table @option
13160 @item x0
13161 @item y0
13162 @item x1
13163 @item y1
13164 @item x2
13165 @item y2
13166 @item x3
13167 @item y3
13168 Set coordinates expression for top left, top right, bottom left and bottom right corners.
13169 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
13170 If the @code{sense} option is set to @code{source}, then the specified points will be sent
13171 to the corners of the destination. If the @code{sense} option is set to @code{destination},
13172 then the corners of the source will be sent to the specified coordinates.
13173
13174 The expressions can use the following variables:
13175
13176 @table @option
13177 @item W
13178 @item H
13179 the width and height of video frame.
13180 @item in
13181 Input frame count.
13182 @item on
13183 Output frame count.
13184 @end table
13185
13186 @item interpolation
13187 Set interpolation for perspective correction.
13188
13189 It accepts the following values:
13190 @table @samp
13191 @item linear
13192 @item cubic
13193 @end table
13194
13195 Default value is @samp{linear}.
13196
13197 @item sense
13198 Set interpretation of coordinate options.
13199
13200 It accepts the following values:
13201 @table @samp
13202 @item 0, source
13203
13204 Send point in the source specified by the given coordinates to
13205 the corners of the destination.
13206
13207 @item 1, destination
13208
13209 Send the corners of the source to the point in the destination specified
13210 by the given coordinates.
13211
13212 Default value is @samp{source}.
13213 @end table
13214
13215 @item eval
13216 Set when the expressions for coordinates @option{x0,y0,...x3,y3} are evaluated.
13217
13218 It accepts the following values:
13219 @table @samp
13220 @item init
13221 only evaluate expressions once during the filter initialization or
13222 when a command is processed
13223
13224 @item frame
13225 evaluate expressions for each incoming frame
13226 @end table
13227
13228 Default value is @samp{init}.
13229 @end table
13230
13231 @section phase
13232
13233 Delay interlaced video by one field time so that the field order changes.
13234
13235 The intended use is to fix PAL movies that have been captured with the
13236 opposite field order to the film-to-video transfer.
13237
13238 A description of the accepted parameters follows.
13239
13240 @table @option
13241 @item mode
13242 Set phase mode.
13243
13244 It accepts the following values:
13245 @table @samp
13246 @item t
13247 Capture field order top-first, transfer bottom-first.
13248 Filter will delay the bottom field.
13249
13250 @item b
13251 Capture field order bottom-first, transfer top-first.
13252 Filter will delay the top field.
13253
13254 @item p
13255 Capture and transfer with the same field order. This mode only exists
13256 for the documentation of the other options to refer to, but if you
13257 actually select it, the filter will faithfully do nothing.
13258
13259 @item a
13260 Capture field order determined automatically by field flags, transfer
13261 opposite.
13262 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
13263 basis using field flags. If no field information is available,
13264 then this works just like @samp{u}.
13265
13266 @item u
13267 Capture unknown or varying, transfer opposite.
13268 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
13269 analyzing the images and selecting the alternative that produces best
13270 match between the fields.
13271
13272 @item T
13273 Capture top-first, transfer unknown or varying.
13274 Filter selects among @samp{t} and @samp{p} using image analysis.
13275
13276 @item B
13277 Capture bottom-first, transfer unknown or varying.
13278 Filter selects among @samp{b} and @samp{p} using image analysis.
13279
13280 @item A
13281 Capture determined by field flags, transfer unknown or varying.
13282 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
13283 image analysis. If no field information is available, then this works just
13284 like @samp{U}. This is the default mode.
13285
13286 @item U
13287 Both capture and transfer unknown or varying.
13288 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
13289 @end table
13290 @end table
13291
13292 @section pixdesctest
13293
13294 Pixel format descriptor test filter, mainly useful for internal
13295 testing. The output video should be equal to the input video.
13296
13297 For example:
13298 @example
13299 format=monow, pixdesctest
13300 @end example
13301
13302 can be used to test the monowhite pixel format descriptor definition.
13303
13304 @section pixscope
13305
13306 Display sample values of color channels. Mainly useful for checking color
13307 and levels. Minimum supported resolution is 640x480.
13308
13309 The filters accept the following options:
13310
13311 @table @option
13312 @item x
13313 Set scope X position, relative offset on X axis.
13314
13315 @item y
13316 Set scope Y position, relative offset on Y axis.
13317
13318 @item w
13319 Set scope width.
13320
13321 @item h
13322 Set scope height.
13323
13324 @item o
13325 Set window opacity. This window also holds statistics about pixel area.
13326
13327 @item wx
13328 Set window X position, relative offset on X axis.
13329
13330 @item wy
13331 Set window Y position, relative offset on Y axis.
13332 @end table
13333
13334 @section pp
13335
13336 Enable the specified chain of postprocessing subfilters using libpostproc. This
13337 library should be automatically selected with a GPL build (@code{--enable-gpl}).
13338 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
13339 Each subfilter and some options have a short and a long name that can be used
13340 interchangeably, i.e. dr/dering are the same.
13341
13342 The filters accept the following options:
13343
13344 @table @option
13345 @item subfilters
13346 Set postprocessing subfilters string.
13347 @end table
13348
13349 All subfilters share common options to determine their scope:
13350
13351 @table @option
13352 @item a/autoq
13353 Honor the quality commands for this subfilter.
13354
13355 @item c/chrom
13356 Do chrominance filtering, too (default).
13357
13358 @item y/nochrom
13359 Do luminance filtering only (no chrominance).
13360
13361 @item n/noluma
13362 Do chrominance filtering only (no luminance).
13363 @end table
13364
13365 These options can be appended after the subfilter name, separated by a '|'.
13366
13367 Available subfilters are:
13368
13369 @table @option
13370 @item hb/hdeblock[|difference[|flatness]]
13371 Horizontal deblocking filter
13372 @table @option
13373 @item difference
13374 Difference factor where higher values mean more deblocking (default: @code{32}).
13375 @item flatness
13376 Flatness threshold where lower values mean more deblocking (default: @code{39}).
13377 @end table
13378
13379 @item vb/vdeblock[|difference[|flatness]]
13380 Vertical deblocking filter
13381 @table @option
13382 @item difference
13383 Difference factor where higher values mean more deblocking (default: @code{32}).
13384 @item flatness
13385 Flatness threshold where lower values mean more deblocking (default: @code{39}).
13386 @end table
13387
13388 @item ha/hadeblock[|difference[|flatness]]
13389 Accurate horizontal deblocking filter
13390 @table @option
13391 @item difference
13392 Difference factor where higher values mean more deblocking (default: @code{32}).
13393 @item flatness
13394 Flatness threshold where lower values mean more deblocking (default: @code{39}).
13395 @end table
13396
13397 @item va/vadeblock[|difference[|flatness]]
13398 Accurate vertical deblocking filter
13399 @table @option
13400 @item difference
13401 Difference factor where higher values mean more deblocking (default: @code{32}).
13402 @item flatness
13403 Flatness threshold where lower values mean more deblocking (default: @code{39}).
13404 @end table
13405 @end table
13406
13407 The horizontal and vertical deblocking filters share the difference and
13408 flatness values so you cannot set different horizontal and vertical
13409 thresholds.
13410
13411 @table @option
13412 @item h1/x1hdeblock
13413 Experimental horizontal deblocking filter
13414
13415 @item v1/x1vdeblock
13416 Experimental vertical deblocking filter
13417
13418 @item dr/dering
13419 Deringing filter
13420
13421 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
13422 @table @option
13423 @item threshold1
13424 larger -> stronger filtering
13425 @item threshold2
13426 larger -> stronger filtering
13427 @item threshold3
13428 larger -> stronger filtering
13429 @end table
13430
13431 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
13432 @table @option
13433 @item f/fullyrange
13434 Stretch luminance to @code{0-255}.
13435 @end table
13436
13437 @item lb/linblenddeint
13438 Linear blend deinterlacing filter that deinterlaces the given block by
13439 filtering all lines with a @code{(1 2 1)} filter.
13440
13441 @item li/linipoldeint
13442 Linear interpolating deinterlacing filter that deinterlaces the given block by
13443 linearly interpolating every second line.
13444
13445 @item ci/cubicipoldeint
13446 Cubic interpolating deinterlacing filter deinterlaces the given block by
13447 cubically interpolating every second line.
13448
13449 @item md/mediandeint
13450 Median deinterlacing filter that deinterlaces the given block by applying a
13451 median filter to every second line.
13452
13453 @item fd/ffmpegdeint
13454 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
13455 second line with a @code{(-1 4 2 4 -1)} filter.
13456
13457 @item l5/lowpass5
13458 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
13459 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
13460
13461 @item fq/forceQuant[|quantizer]
13462 Overrides the quantizer table from the input with the constant quantizer you
13463 specify.
13464 @table @option
13465 @item quantizer
13466 Quantizer to use
13467 @end table
13468
13469 @item de/default
13470 Default pp filter combination (@code{hb|a,vb|a,dr|a})
13471
13472 @item fa/fast
13473 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
13474
13475 @item ac
13476 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
13477 @end table
13478
13479 @subsection Examples
13480
13481 @itemize
13482 @item
13483 Apply horizontal and vertical deblocking, deringing and automatic
13484 brightness/contrast:
13485 @example
13486 pp=hb/vb/dr/al
13487 @end example
13488
13489 @item
13490 Apply default filters without brightness/contrast correction:
13491 @example
13492 pp=de/-al
13493 @end example
13494
13495 @item
13496 Apply default filters and temporal denoiser:
13497 @example
13498 pp=default/tmpnoise|1|2|3
13499 @end example
13500
13501 @item
13502 Apply deblocking on luminance only, and switch vertical deblocking on or off
13503 automatically depending on available CPU time:
13504 @example
13505 pp=hb|y/vb|a
13506 @end example
13507 @end itemize
13508
13509 @section pp7
13510 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
13511 similar to spp = 6 with 7 point DCT, where only the center sample is
13512 used after IDCT.
13513
13514 The filter accepts the following options:
13515
13516 @table @option
13517 @item qp
13518 Force a constant quantization parameter. It accepts an integer in range
13519 0 to 63. If not set, the filter will use the QP from the video stream
13520 (if available).
13521
13522 @item mode
13523 Set thresholding mode. Available modes are:
13524
13525 @table @samp
13526 @item hard
13527 Set hard thresholding.
13528 @item soft
13529 Set soft thresholding (better de-ringing effect, but likely blurrier).
13530 @item medium
13531 Set medium thresholding (good results, default).
13532 @end table
13533 @end table
13534
13535 @section premultiply
13536 Apply alpha premultiply effect to input video stream using first plane
13537 of second stream as alpha.
13538
13539 Both streams must have same dimensions and same pixel format.
13540
13541 The filter accepts the following option:
13542
13543 @table @option
13544 @item planes
13545 Set which planes will be processed, unprocessed planes will be copied.
13546 By default value 0xf, all planes will be processed.
13547
13548 @item inplace
13549 Do not require 2nd input for processing, instead use alpha plane from input stream.
13550 @end table
13551
13552 @section prewitt
13553 Apply prewitt operator to input video stream.
13554
13555 The filter accepts the following option:
13556
13557 @table @option
13558 @item planes
13559 Set which planes will be processed, unprocessed planes will be copied.
13560 By default value 0xf, all planes will be processed.
13561
13562 @item scale
13563 Set value which will be multiplied with filtered result.
13564
13565 @item delta
13566 Set value which will be added to filtered result.
13567 @end table
13568
13569 @anchor{program_opencl}
13570 @section program_opencl
13571
13572 Filter video using an OpenCL program.
13573
13574 @table @option
13575
13576 @item source
13577 OpenCL program source file.
13578
13579 @item kernel
13580 Kernel name in program.
13581
13582 @item inputs
13583 Number of inputs to the filter.  Defaults to 1.
13584
13585 @item size, s
13586 Size of output frames.  Defaults to the same as the first input.
13587
13588 @end table
13589
13590 The program source file must contain a kernel function with the given name,
13591 which will be run once for each plane of the output.  Each run on a plane
13592 gets enqueued as a separate 2D global NDRange with one work-item for each
13593 pixel to be generated.  The global ID offset for each work-item is therefore
13594 the coordinates of a pixel in the destination image.
13595
13596 The kernel function needs to take the following arguments:
13597 @itemize
13598 @item
13599 Destination image, @var{__write_only image2d_t}.
13600
13601 This image will become the output; the kernel should write all of it.
13602 @item
13603 Frame index, @var{unsigned int}.
13604
13605 This is a counter starting from zero and increasing by one for each frame.
13606 @item
13607 Source images, @var{__read_only image2d_t}.
13608
13609 These are the most recent images on each input.  The kernel may read from
13610 them to generate the output, but they can't be written to.
13611 @end itemize
13612
13613 Example programs:
13614
13615 @itemize
13616 @item
13617 Copy the input to the output (output must be the same size as the input).
13618 @verbatim
13619 __kernel void copy(__write_only image2d_t destination,
13620                    unsigned int index,
13621                    __read_only  image2d_t source)
13622 {
13623     const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
13624
13625     int2 location = (int2)(get_global_id(0), get_global_id(1));
13626
13627     float4 value = read_imagef(source, sampler, location);
13628
13629     write_imagef(destination, location, value);
13630 }
13631 @end verbatim
13632
13633 @item
13634 Apply a simple transformation, rotating the input by an amount increasing
13635 with the index counter.  Pixel values are linearly interpolated by the
13636 sampler, and the output need not have the same dimensions as the input.
13637 @verbatim
13638 __kernel void rotate_image(__write_only image2d_t dst,
13639                            unsigned int index,
13640                            __read_only  image2d_t src)
13641 {
13642     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
13643                                CLK_FILTER_LINEAR);
13644
13645     float angle = (float)index / 100.0f;
13646
13647     float2 dst_dim = convert_float2(get_image_dim(dst));
13648     float2 src_dim = convert_float2(get_image_dim(src));
13649
13650     float2 dst_cen = dst_dim / 2.0f;
13651     float2 src_cen = src_dim / 2.0f;
13652
13653     int2   dst_loc = (int2)(get_global_id(0), get_global_id(1));
13654
13655     float2 dst_pos = convert_float2(dst_loc) - dst_cen;
13656     float2 src_pos = {
13657         cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
13658         sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
13659     };
13660     src_pos = src_pos * src_dim / dst_dim;
13661
13662     float2 src_loc = src_pos + src_cen;
13663
13664     if (src_loc.x < 0.0f      || src_loc.y < 0.0f ||
13665         src_loc.x > src_dim.x || src_loc.y > src_dim.y)
13666         write_imagef(dst, dst_loc, 0.5f);
13667     else
13668         write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
13669 }
13670 @end verbatim
13671
13672 @item
13673 Blend two inputs together, with the amount of each input used varying
13674 with the index counter.
13675 @verbatim
13676 __kernel void blend_images(__write_only image2d_t dst,
13677                            unsigned int index,
13678                            __read_only  image2d_t src1,
13679                            __read_only  image2d_t src2)
13680 {
13681     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
13682                                CLK_FILTER_LINEAR);
13683
13684     float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
13685
13686     int2  dst_loc = (int2)(get_global_id(0), get_global_id(1));
13687     int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
13688     int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
13689
13690     float4 val1 = read_imagef(src1, sampler, src1_loc);
13691     float4 val2 = read_imagef(src2, sampler, src2_loc);
13692
13693     write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
13694 }
13695 @end verbatim
13696
13697 @end itemize
13698
13699 @section pseudocolor
13700
13701 Alter frame colors in video with pseudocolors.
13702
13703 This filter accept the following options:
13704
13705 @table @option
13706 @item c0
13707 set pixel first component expression
13708
13709 @item c1
13710 set pixel second component expression
13711
13712 @item c2
13713 set pixel third component expression
13714
13715 @item c3
13716 set pixel fourth component expression, corresponds to the alpha component
13717
13718 @item i
13719 set component to use as base for altering colors
13720 @end table
13721
13722 Each of them specifies the expression to use for computing the lookup table for
13723 the corresponding pixel component values.
13724
13725 The expressions can contain the following constants and functions:
13726
13727 @table @option
13728 @item w
13729 @item h
13730 The input width and height.
13731
13732 @item val
13733 The input value for the pixel component.
13734
13735 @item ymin, umin, vmin, amin
13736 The minimum allowed component value.
13737
13738 @item ymax, umax, vmax, amax
13739 The maximum allowed component value.
13740 @end table
13741
13742 All expressions default to "val".
13743
13744 @subsection Examples
13745
13746 @itemize
13747 @item
13748 Change too high luma values to gradient:
13749 @example
13750 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'"
13751 @end example
13752 @end itemize
13753
13754 @section psnr
13755
13756 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
13757 Ratio) between two input videos.
13758
13759 This filter takes in input two input videos, the first input is
13760 considered the "main" source and is passed unchanged to the
13761 output. The second input is used as a "reference" video for computing
13762 the PSNR.
13763
13764 Both video inputs must have the same resolution and pixel format for
13765 this filter to work correctly. Also it assumes that both inputs
13766 have the same number of frames, which are compared one by one.
13767
13768 The obtained average PSNR is printed through the logging system.
13769
13770 The filter stores the accumulated MSE (mean squared error) of each
13771 frame, and at the end of the processing it is averaged across all frames
13772 equally, and the following formula is applied to obtain the PSNR:
13773
13774 @example
13775 PSNR = 10*log10(MAX^2/MSE)
13776 @end example
13777
13778 Where MAX is the average of the maximum values of each component of the
13779 image.
13780
13781 The description of the accepted parameters follows.
13782
13783 @table @option
13784 @item stats_file, f
13785 If specified the filter will use the named file to save the PSNR of
13786 each individual frame. When filename equals "-" the data is sent to
13787 standard output.
13788
13789 @item stats_version
13790 Specifies which version of the stats file format to use. Details of
13791 each format are written below.
13792 Default value is 1.
13793
13794 @item stats_add_max
13795 Determines whether the max value is output to the stats log.
13796 Default value is 0.
13797 Requires stats_version >= 2. If this is set and stats_version < 2,
13798 the filter will return an error.
13799 @end table
13800
13801 This filter also supports the @ref{framesync} options.
13802
13803 The file printed if @var{stats_file} is selected, contains a sequence of
13804 key/value pairs of the form @var{key}:@var{value} for each compared
13805 couple of frames.
13806
13807 If a @var{stats_version} greater than 1 is specified, a header line precedes
13808 the list of per-frame-pair stats, with key value pairs following the frame
13809 format with the following parameters:
13810
13811 @table @option
13812 @item psnr_log_version
13813 The version of the log file format. Will match @var{stats_version}.
13814
13815 @item fields
13816 A comma separated list of the per-frame-pair parameters included in
13817 the log.
13818 @end table
13819
13820 A description of each shown per-frame-pair parameter follows:
13821
13822 @table @option
13823 @item n
13824 sequential number of the input frame, starting from 1
13825
13826 @item mse_avg
13827 Mean Square Error pixel-by-pixel average difference of the compared
13828 frames, averaged over all the image components.
13829
13830 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
13831 Mean Square Error pixel-by-pixel average difference of the compared
13832 frames for the component specified by the suffix.
13833
13834 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
13835 Peak Signal to Noise ratio of the compared frames for the component
13836 specified by the suffix.
13837
13838 @item max_avg, max_y, max_u, max_v
13839 Maximum allowed value for each channel, and average over all
13840 channels.
13841 @end table
13842
13843 For example:
13844 @example
13845 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
13846 [main][ref] psnr="stats_file=stats.log" [out]
13847 @end example
13848
13849 On this example the input file being processed is compared with the
13850 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
13851 is stored in @file{stats.log}.
13852
13853 @anchor{pullup}
13854 @section pullup
13855
13856 Pulldown reversal (inverse telecine) filter, capable of handling mixed
13857 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
13858 content.
13859
13860 The pullup filter is designed to take advantage of future context in making
13861 its decisions. This filter is stateless in the sense that it does not lock
13862 onto a pattern to follow, but it instead looks forward to the following
13863 fields in order to identify matches and rebuild progressive frames.
13864
13865 To produce content with an even framerate, insert the fps filter after
13866 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
13867 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
13868
13869 The filter accepts the following options:
13870
13871 @table @option
13872 @item jl
13873 @item jr
13874 @item jt
13875 @item jb
13876 These options set the amount of "junk" to ignore at the left, right, top, and
13877 bottom of the image, respectively. Left and right are in units of 8 pixels,
13878 while top and bottom are in units of 2 lines.
13879 The default is 8 pixels on each side.
13880
13881 @item sb
13882 Set the strict breaks. Setting this option to 1 will reduce the chances of
13883 filter generating an occasional mismatched frame, but it may also cause an
13884 excessive number of frames to be dropped during high motion sequences.
13885 Conversely, setting it to -1 will make filter match fields more easily.
13886 This may help processing of video where there is slight blurring between
13887 the fields, but may also cause there to be interlaced frames in the output.
13888 Default value is @code{0}.
13889
13890 @item mp
13891 Set the metric plane to use. It accepts the following values:
13892 @table @samp
13893 @item l
13894 Use luma plane.
13895
13896 @item u
13897 Use chroma blue plane.
13898
13899 @item v
13900 Use chroma red plane.
13901 @end table
13902
13903 This option may be set to use chroma plane instead of the default luma plane
13904 for doing filter's computations. This may improve accuracy on very clean
13905 source material, but more likely will decrease accuracy, especially if there
13906 is chroma noise (rainbow effect) or any grayscale video.
13907 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
13908 load and make pullup usable in realtime on slow machines.
13909 @end table
13910
13911 For best results (without duplicated frames in the output file) it is
13912 necessary to change the output frame rate. For example, to inverse
13913 telecine NTSC input:
13914 @example
13915 ffmpeg -i input -vf pullup -r 24000/1001 ...
13916 @end example
13917
13918 @section qp
13919
13920 Change video quantization parameters (QP).
13921
13922 The filter accepts the following option:
13923
13924 @table @option
13925 @item qp
13926 Set expression for quantization parameter.
13927 @end table
13928
13929 The expression is evaluated through the eval API and can contain, among others,
13930 the following constants:
13931
13932 @table @var
13933 @item known
13934 1 if index is not 129, 0 otherwise.
13935
13936 @item qp
13937 Sequential index starting from -129 to 128.
13938 @end table
13939
13940 @subsection Examples
13941
13942 @itemize
13943 @item
13944 Some equation like:
13945 @example
13946 qp=2+2*sin(PI*qp)
13947 @end example
13948 @end itemize
13949
13950 @section random
13951
13952 Flush video frames from internal cache of frames into a random order.
13953 No frame is discarded.
13954 Inspired by @ref{frei0r} nervous filter.
13955
13956 @table @option
13957 @item frames
13958 Set size in number of frames of internal cache, in range from @code{2} to
13959 @code{512}. Default is @code{30}.
13960
13961 @item seed
13962 Set seed for random number generator, must be an integer included between
13963 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
13964 less than @code{0}, the filter will try to use a good random seed on a
13965 best effort basis.
13966 @end table
13967
13968 @section readeia608
13969
13970 Read closed captioning (EIA-608) information from the top lines of a video frame.
13971
13972 This filter adds frame metadata for @code{lavfi.readeia608.X.cc} and
13973 @code{lavfi.readeia608.X.line}, where @code{X} is the number of the identified line
13974 with EIA-608 data (starting from 0). A description of each metadata value follows:
13975
13976 @table @option
13977 @item lavfi.readeia608.X.cc
13978 The two bytes stored as EIA-608 data (printed in hexadecimal).
13979
13980 @item lavfi.readeia608.X.line
13981 The number of the line on which the EIA-608 data was identified and read.
13982 @end table
13983
13984 This filter accepts the following options:
13985
13986 @table @option
13987 @item scan_min
13988 Set the line to start scanning for EIA-608 data. Default is @code{0}.
13989
13990 @item scan_max
13991 Set the line to end scanning for EIA-608 data. Default is @code{29}.
13992
13993 @item mac
13994 Set minimal acceptable amplitude change for sync codes detection.
13995 Default is @code{0.2}. Allowed range is @code{[0.001 - 1]}.
13996
13997 @item spw
13998 Set the ratio of width reserved for sync code detection.
13999 Default is @code{0.27}. Allowed range is @code{[0.01 - 0.7]}.
14000
14001 @item mhd
14002 Set the max peaks height difference for sync code detection.
14003 Default is @code{0.1}. Allowed range is @code{[0.0 - 0.5]}.
14004
14005 @item mpd
14006 Set max peaks period difference for sync code detection.
14007 Default is @code{0.1}. Allowed range is @code{[0.0 - 0.5]}.
14008
14009 @item msd
14010 Set the first two max start code bits differences.
14011 Default is @code{0.02}. Allowed range is @code{[0.0 - 0.5]}.
14012
14013 @item bhd
14014 Set the minimum ratio of bits height compared to 3rd start code bit.
14015 Default is @code{0.75}. Allowed range is @code{[0.01 - 1]}.
14016
14017 @item th_w
14018 Set the white color threshold. Default is @code{0.35}. Allowed range is @code{[0.1 - 1]}.
14019
14020 @item th_b
14021 Set the black color threshold. Default is @code{0.15}. Allowed range is @code{[0.0 - 0.5]}.
14022
14023 @item chp
14024 Enable checking the parity bit. In the event of a parity error, the filter will output
14025 @code{0x00} for that character. Default is false.
14026 @end table
14027
14028 @subsection Examples
14029
14030 @itemize
14031 @item
14032 Output a csv with presentation time and the first two lines of identified EIA-608 captioning data.
14033 @example
14034 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
14035 @end example
14036 @end itemize
14037
14038 @section readvitc
14039
14040 Read vertical interval timecode (VITC) information from the top lines of a
14041 video frame.
14042
14043 The filter adds frame metadata key @code{lavfi.readvitc.tc_str} with the
14044 timecode value, if a valid timecode has been detected. Further metadata key
14045 @code{lavfi.readvitc.found} is set to 0/1 depending on whether
14046 timecode data has been found or not.
14047
14048 This filter accepts the following options:
14049
14050 @table @option
14051 @item scan_max
14052 Set the maximum number of lines to scan for VITC data. If the value is set to
14053 @code{-1} the full video frame is scanned. Default is @code{45}.
14054
14055 @item thr_b
14056 Set the luma threshold for black. Accepts float numbers in the range [0.0,1.0],
14057 default value is @code{0.2}. The value must be equal or less than @code{thr_w}.
14058
14059 @item thr_w
14060 Set the luma threshold for white. Accepts float numbers in the range [0.0,1.0],
14061 default value is @code{0.6}. The value must be equal or greater than @code{thr_b}.
14062 @end table
14063
14064 @subsection Examples
14065
14066 @itemize
14067 @item
14068 Detect and draw VITC data onto the video frame; if no valid VITC is detected,
14069 draw @code{--:--:--:--} as a placeholder:
14070 @example
14071 ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%@{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--@}:x=(w-tw)/2:y=400-ascent'
14072 @end example
14073 @end itemize
14074
14075 @section remap
14076
14077 Remap pixels using 2nd: Xmap and 3rd: Ymap input video stream.
14078
14079 Destination pixel at position (X, Y) will be picked from source (x, y) position
14080 where x = Xmap(X, Y) and y = Ymap(X, Y). If mapping values are out of range, zero
14081 value for pixel will be used for destination pixel.
14082
14083 Xmap and Ymap input video streams must be of same dimensions. Output video stream
14084 will have Xmap/Ymap video stream dimensions.
14085 Xmap and Ymap input video streams are 16bit depth, single channel.
14086
14087 @section removegrain
14088
14089 The removegrain filter is a spatial denoiser for progressive video.
14090
14091 @table @option
14092 @item m0
14093 Set mode for the first plane.
14094
14095 @item m1
14096 Set mode for the second plane.
14097
14098 @item m2
14099 Set mode for the third plane.
14100
14101 @item m3
14102 Set mode for the fourth plane.
14103 @end table
14104
14105 Range of mode is from 0 to 24. Description of each mode follows:
14106
14107 @table @var
14108 @item 0
14109 Leave input plane unchanged. Default.
14110
14111 @item 1
14112 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
14113
14114 @item 2
14115 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
14116
14117 @item 3
14118 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
14119
14120 @item 4
14121 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
14122 This is equivalent to a median filter.
14123
14124 @item 5
14125 Line-sensitive clipping giving the minimal change.
14126
14127 @item 6
14128 Line-sensitive clipping, intermediate.
14129
14130 @item 7
14131 Line-sensitive clipping, intermediate.
14132
14133 @item 8
14134 Line-sensitive clipping, intermediate.
14135
14136 @item 9
14137 Line-sensitive clipping on a line where the neighbours pixels are the closest.
14138
14139 @item 10
14140 Replaces the target pixel with the closest neighbour.
14141
14142 @item 11
14143 [1 2 1] horizontal and vertical kernel blur.
14144
14145 @item 12
14146 Same as mode 11.
14147
14148 @item 13
14149 Bob mode, interpolates top field from the line where the neighbours
14150 pixels are the closest.
14151
14152 @item 14
14153 Bob mode, interpolates bottom field from the line where the neighbours
14154 pixels are the closest.
14155
14156 @item 15
14157 Bob mode, interpolates top field. Same as 13 but with a more complicated
14158 interpolation formula.
14159
14160 @item 16
14161 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
14162 interpolation formula.
14163
14164 @item 17
14165 Clips the pixel with the minimum and maximum of respectively the maximum and
14166 minimum of each pair of opposite neighbour pixels.
14167
14168 @item 18
14169 Line-sensitive clipping using opposite neighbours whose greatest distance from
14170 the current pixel is minimal.
14171
14172 @item 19
14173 Replaces the pixel with the average of its 8 neighbours.
14174
14175 @item 20
14176 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
14177
14178 @item 21
14179 Clips pixels using the averages of opposite neighbour.
14180
14181 @item 22
14182 Same as mode 21 but simpler and faster.
14183
14184 @item 23
14185 Small edge and halo removal, but reputed useless.
14186
14187 @item 24
14188 Similar as 23.
14189 @end table
14190
14191 @section removelogo
14192
14193 Suppress a TV station logo, using an image file to determine which
14194 pixels comprise the logo. It works by filling in the pixels that
14195 comprise the logo with neighboring pixels.
14196
14197 The filter accepts the following options:
14198
14199 @table @option
14200 @item filename, f
14201 Set the filter bitmap file, which can be any image format supported by
14202 libavformat. The width and height of the image file must match those of the
14203 video stream being processed.
14204 @end table
14205
14206 Pixels in the provided bitmap image with a value of zero are not
14207 considered part of the logo, non-zero pixels are considered part of
14208 the logo. If you use white (255) for the logo and black (0) for the
14209 rest, you will be safe. For making the filter bitmap, it is
14210 recommended to take a screen capture of a black frame with the logo
14211 visible, and then using a threshold filter followed by the erode
14212 filter once or twice.
14213
14214 If needed, little splotches can be fixed manually. Remember that if
14215 logo pixels are not covered, the filter quality will be much
14216 reduced. Marking too many pixels as part of the logo does not hurt as
14217 much, but it will increase the amount of blurring needed to cover over
14218 the image and will destroy more information than necessary, and extra
14219 pixels will slow things down on a large logo.
14220
14221 @section repeatfields
14222
14223 This filter uses the repeat_field flag from the Video ES headers and hard repeats
14224 fields based on its value.
14225
14226 @section reverse
14227
14228 Reverse a video clip.
14229
14230 Warning: This filter requires memory to buffer the entire clip, so trimming
14231 is suggested.
14232
14233 @subsection Examples
14234
14235 @itemize
14236 @item
14237 Take the first 5 seconds of a clip, and reverse it.
14238 @example
14239 trim=end=5,reverse
14240 @end example
14241 @end itemize
14242
14243 @section roberts
14244 Apply roberts cross operator to input video stream.
14245
14246 The filter accepts the following option:
14247
14248 @table @option
14249 @item planes
14250 Set which planes will be processed, unprocessed planes will be copied.
14251 By default value 0xf, all planes will be processed.
14252
14253 @item scale
14254 Set value which will be multiplied with filtered result.
14255
14256 @item delta
14257 Set value which will be added to filtered result.
14258 @end table
14259
14260 @section rotate
14261
14262 Rotate video by an arbitrary angle expressed in radians.
14263
14264 The filter accepts the following options:
14265
14266 A description of the optional parameters follows.
14267 @table @option
14268 @item angle, a
14269 Set an expression for the angle by which to rotate the input video
14270 clockwise, expressed as a number of radians. A negative value will
14271 result in a counter-clockwise rotation. By default it is set to "0".
14272
14273 This expression is evaluated for each frame.
14274
14275 @item out_w, ow
14276 Set the output width expression, default value is "iw".
14277 This expression is evaluated just once during configuration.
14278
14279 @item out_h, oh
14280 Set the output height expression, default value is "ih".
14281 This expression is evaluated just once during configuration.
14282
14283 @item bilinear
14284 Enable bilinear interpolation if set to 1, a value of 0 disables
14285 it. Default value is 1.
14286
14287 @item fillcolor, c
14288 Set the color used to fill the output area not covered by the rotated
14289 image. For the general syntax of this option, check the
14290 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
14291 If the special value "none" is selected then no
14292 background is printed (useful for example if the background is never shown).
14293
14294 Default value is "black".
14295 @end table
14296
14297 The expressions for the angle and the output size can contain the
14298 following constants and functions:
14299
14300 @table @option
14301 @item n
14302 sequential number of the input frame, starting from 0. It is always NAN
14303 before the first frame is filtered.
14304
14305 @item t
14306 time in seconds of the input frame, it is set to 0 when the filter is
14307 configured. It is always NAN before the first frame is filtered.
14308
14309 @item hsub
14310 @item vsub
14311 horizontal and vertical chroma subsample values. For example for the
14312 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14313
14314 @item in_w, iw
14315 @item in_h, ih
14316 the input video width and height
14317
14318 @item out_w, ow
14319 @item out_h, oh
14320 the output width and height, that is the size of the padded area as
14321 specified by the @var{width} and @var{height} expressions
14322
14323 @item rotw(a)
14324 @item roth(a)
14325 the minimal width/height required for completely containing the input
14326 video rotated by @var{a} radians.
14327
14328 These are only available when computing the @option{out_w} and
14329 @option{out_h} expressions.
14330 @end table
14331
14332 @subsection Examples
14333
14334 @itemize
14335 @item
14336 Rotate the input by PI/6 radians clockwise:
14337 @example
14338 rotate=PI/6
14339 @end example
14340
14341 @item
14342 Rotate the input by PI/6 radians counter-clockwise:
14343 @example
14344 rotate=-PI/6
14345 @end example
14346
14347 @item
14348 Rotate the input by 45 degrees clockwise:
14349 @example
14350 rotate=45*PI/180
14351 @end example
14352
14353 @item
14354 Apply a constant rotation with period T, starting from an angle of PI/3:
14355 @example
14356 rotate=PI/3+2*PI*t/T
14357 @end example
14358
14359 @item
14360 Make the input video rotation oscillating with a period of T
14361 seconds and an amplitude of A radians:
14362 @example
14363 rotate=A*sin(2*PI/T*t)
14364 @end example
14365
14366 @item
14367 Rotate the video, output size is chosen so that the whole rotating
14368 input video is always completely contained in the output:
14369 @example
14370 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
14371 @end example
14372
14373 @item
14374 Rotate the video, reduce the output size so that no background is ever
14375 shown:
14376 @example
14377 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
14378 @end example
14379 @end itemize
14380
14381 @subsection Commands
14382
14383 The filter supports the following commands:
14384
14385 @table @option
14386 @item a, angle
14387 Set the angle expression.
14388 The command accepts the same syntax of the corresponding option.
14389
14390 If the specified expression is not valid, it is kept at its current
14391 value.
14392 @end table
14393
14394 @section sab
14395
14396 Apply Shape Adaptive Blur.
14397
14398 The filter accepts the following options:
14399
14400 @table @option
14401 @item luma_radius, lr
14402 Set luma blur filter strength, must be a value in range 0.1-4.0, default
14403 value is 1.0. A greater value will result in a more blurred image, and
14404 in slower processing.
14405
14406 @item luma_pre_filter_radius, lpfr
14407 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
14408 value is 1.0.
14409
14410 @item luma_strength, ls
14411 Set luma maximum difference between pixels to still be considered, must
14412 be a value in the 0.1-100.0 range, default value is 1.0.
14413
14414 @item chroma_radius, cr
14415 Set chroma blur filter strength, must be a value in range -0.9-4.0. A
14416 greater value will result in a more blurred image, and in slower
14417 processing.
14418
14419 @item chroma_pre_filter_radius, cpfr
14420 Set chroma pre-filter radius, must be a value in the -0.9-2.0 range.
14421
14422 @item chroma_strength, cs
14423 Set chroma maximum difference between pixels to still be considered,
14424 must be a value in the -0.9-100.0 range.
14425 @end table
14426
14427 Each chroma option value, if not explicitly specified, is set to the
14428 corresponding luma option value.
14429
14430 @anchor{scale}
14431 @section scale
14432
14433 Scale (resize) the input video, using the libswscale library.
14434
14435 The scale filter forces the output display aspect ratio to be the same
14436 of the input, by changing the output sample aspect ratio.
14437
14438 If the input image format is different from the format requested by
14439 the next filter, the scale filter will convert the input to the
14440 requested format.
14441
14442 @subsection Options
14443 The filter accepts the following options, or any of the options
14444 supported by the libswscale scaler.
14445
14446 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
14447 the complete list of scaler options.
14448
14449 @table @option
14450 @item width, w
14451 @item height, h
14452 Set the output video dimension expression. Default value is the input
14453 dimension.
14454
14455 If the @var{width} or @var{w} value is 0, the input width is used for
14456 the output. If the @var{height} or @var{h} value is 0, the input height
14457 is used for the output.
14458
14459 If one and only one of the values is -n with n >= 1, the scale filter
14460 will use a value that maintains the aspect ratio of the input image,
14461 calculated from the other specified dimension. After that it will,
14462 however, make sure that the calculated dimension is divisible by n and
14463 adjust the value if necessary.
14464
14465 If both values are -n with n >= 1, the behavior will be identical to
14466 both values being set to 0 as previously detailed.
14467
14468 See below for the list of accepted constants for use in the dimension
14469 expression.
14470
14471 @item eval
14472 Specify when to evaluate @var{width} and @var{height} expression. It accepts the following values:
14473
14474 @table @samp
14475 @item init
14476 Only evaluate expressions once during the filter initialization or when a command is processed.
14477
14478 @item frame
14479 Evaluate expressions for each incoming frame.
14480
14481 @end table
14482
14483 Default value is @samp{init}.
14484
14485
14486 @item interl
14487 Set the interlacing mode. It accepts the following values:
14488
14489 @table @samp
14490 @item 1
14491 Force interlaced aware scaling.
14492
14493 @item 0
14494 Do not apply interlaced scaling.
14495
14496 @item -1
14497 Select interlaced aware scaling depending on whether the source frames
14498 are flagged as interlaced or not.
14499 @end table
14500
14501 Default value is @samp{0}.
14502
14503 @item flags
14504 Set libswscale scaling flags. See
14505 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
14506 complete list of values. If not explicitly specified the filter applies
14507 the default flags.
14508
14509
14510 @item param0, param1
14511 Set libswscale input parameters for scaling algorithms that need them. See
14512 @ref{sws_params,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
14513 complete documentation. If not explicitly specified the filter applies
14514 empty parameters.
14515
14516
14517
14518 @item size, s
14519 Set the video size. For the syntax of this option, check the
14520 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
14521
14522 @item in_color_matrix
14523 @item out_color_matrix
14524 Set in/output YCbCr color space type.
14525
14526 This allows the autodetected value to be overridden as well as allows forcing
14527 a specific value used for the output and encoder.
14528
14529 If not specified, the color space type depends on the pixel format.
14530
14531 Possible values:
14532
14533 @table @samp
14534 @item auto
14535 Choose automatically.
14536
14537 @item bt709
14538 Format conforming to International Telecommunication Union (ITU)
14539 Recommendation BT.709.
14540
14541 @item fcc
14542 Set color space conforming to the United States Federal Communications
14543 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
14544
14545 @item bt601
14546 Set color space conforming to:
14547
14548 @itemize
14549 @item
14550 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
14551
14552 @item
14553 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
14554
14555 @item
14556 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
14557
14558 @end itemize
14559
14560 @item smpte240m
14561 Set color space conforming to SMPTE ST 240:1999.
14562 @end table
14563
14564 @item in_range
14565 @item out_range
14566 Set in/output YCbCr sample range.
14567
14568 This allows the autodetected value to be overridden as well as allows forcing
14569 a specific value used for the output and encoder. If not specified, the
14570 range depends on the pixel format. Possible values:
14571
14572 @table @samp
14573 @item auto/unknown
14574 Choose automatically.
14575
14576 @item jpeg/full/pc
14577 Set full range (0-255 in case of 8-bit luma).
14578
14579 @item mpeg/limited/tv
14580 Set "MPEG" range (16-235 in case of 8-bit luma).
14581 @end table
14582
14583 @item force_original_aspect_ratio
14584 Enable decreasing or increasing output video width or height if necessary to
14585 keep the original aspect ratio. Possible values:
14586
14587 @table @samp
14588 @item disable
14589 Scale the video as specified and disable this feature.
14590
14591 @item decrease
14592 The output video dimensions will automatically be decreased if needed.
14593
14594 @item increase
14595 The output video dimensions will automatically be increased if needed.
14596
14597 @end table
14598
14599 One useful instance of this option is that when you know a specific device's
14600 maximum allowed resolution, you can use this to limit the output video to
14601 that, while retaining the aspect ratio. For example, device A allows
14602 1280x720 playback, and your video is 1920x800. Using this option (set it to
14603 decrease) and specifying 1280x720 to the command line makes the output
14604 1280x533.
14605
14606 Please note that this is a different thing than specifying -1 for @option{w}
14607 or @option{h}, you still need to specify the output resolution for this option
14608 to work.
14609
14610 @end table
14611
14612 The values of the @option{w} and @option{h} options are expressions
14613 containing the following constants:
14614
14615 @table @var
14616 @item in_w
14617 @item in_h
14618 The input width and height
14619
14620 @item iw
14621 @item ih
14622 These are the same as @var{in_w} and @var{in_h}.
14623
14624 @item out_w
14625 @item out_h
14626 The output (scaled) width and height
14627
14628 @item ow
14629 @item oh
14630 These are the same as @var{out_w} and @var{out_h}
14631
14632 @item a
14633 The same as @var{iw} / @var{ih}
14634
14635 @item sar
14636 input sample aspect ratio
14637
14638 @item dar
14639 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
14640
14641 @item hsub
14642 @item vsub
14643 horizontal and vertical input chroma subsample values. For example for the
14644 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14645
14646 @item ohsub
14647 @item ovsub
14648 horizontal and vertical output chroma subsample values. For example for the
14649 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14650 @end table
14651
14652 @subsection Examples
14653
14654 @itemize
14655 @item
14656 Scale the input video to a size of 200x100
14657 @example
14658 scale=w=200:h=100
14659 @end example
14660
14661 This is equivalent to:
14662 @example
14663 scale=200:100
14664 @end example
14665
14666 or:
14667 @example
14668 scale=200x100
14669 @end example
14670
14671 @item
14672 Specify a size abbreviation for the output size:
14673 @example
14674 scale=qcif
14675 @end example
14676
14677 which can also be written as:
14678 @example
14679 scale=size=qcif
14680 @end example
14681
14682 @item
14683 Scale the input to 2x:
14684 @example
14685 scale=w=2*iw:h=2*ih
14686 @end example
14687
14688 @item
14689 The above is the same as:
14690 @example
14691 scale=2*in_w:2*in_h
14692 @end example
14693
14694 @item
14695 Scale the input to 2x with forced interlaced scaling:
14696 @example
14697 scale=2*iw:2*ih:interl=1
14698 @end example
14699
14700 @item
14701 Scale the input to half size:
14702 @example
14703 scale=w=iw/2:h=ih/2
14704 @end example
14705
14706 @item
14707 Increase the width, and set the height to the same size:
14708 @example
14709 scale=3/2*iw:ow
14710 @end example
14711
14712 @item
14713 Seek Greek harmony:
14714 @example
14715 scale=iw:1/PHI*iw
14716 scale=ih*PHI:ih
14717 @end example
14718
14719 @item
14720 Increase the height, and set the width to 3/2 of the height:
14721 @example
14722 scale=w=3/2*oh:h=3/5*ih
14723 @end example
14724
14725 @item
14726 Increase the size, making the size a multiple of the chroma
14727 subsample values:
14728 @example
14729 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
14730 @end example
14731
14732 @item
14733 Increase the width to a maximum of 500 pixels,
14734 keeping the same aspect ratio as the input:
14735 @example
14736 scale=w='min(500\, iw*3/2):h=-1'
14737 @end example
14738
14739 @item
14740 Make pixels square by combining scale and setsar:
14741 @example
14742 scale='trunc(ih*dar):ih',setsar=1/1
14743 @end example
14744
14745 @item
14746 Make pixels square by combining scale and setsar,
14747 making sure the resulting resolution is even (required by some codecs):
14748 @example
14749 scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
14750 @end example
14751 @end itemize
14752
14753 @subsection Commands
14754
14755 This filter supports the following commands:
14756 @table @option
14757 @item width, w
14758 @item height, h
14759 Set the output video dimension expression.
14760 The command accepts the same syntax of the corresponding option.
14761
14762 If the specified expression is not valid, it is kept at its current
14763 value.
14764 @end table
14765
14766 @section scale_npp
14767
14768 Use the NVIDIA Performance Primitives (libnpp) to perform scaling and/or pixel
14769 format conversion on CUDA video frames. Setting the output width and height
14770 works in the same way as for the @var{scale} filter.
14771
14772 The following additional options are accepted:
14773 @table @option
14774 @item format
14775 The pixel format of the output CUDA frames. If set to the string "same" (the
14776 default), the input format will be kept. Note that automatic format negotiation
14777 and conversion is not yet supported for hardware frames
14778
14779 @item interp_algo
14780 The interpolation algorithm used for resizing. One of the following:
14781 @table @option
14782 @item nn
14783 Nearest neighbour.
14784
14785 @item linear
14786 @item cubic
14787 @item cubic2p_bspline
14788 2-parameter cubic (B=1, C=0)
14789
14790 @item cubic2p_catmullrom
14791 2-parameter cubic (B=0, C=1/2)
14792
14793 @item cubic2p_b05c03
14794 2-parameter cubic (B=1/2, C=3/10)
14795
14796 @item super
14797 Supersampling
14798
14799 @item lanczos
14800 @end table
14801
14802 @end table
14803
14804 @section scale2ref
14805
14806 Scale (resize) the input video, based on a reference video.
14807
14808 See the scale filter for available options, scale2ref supports the same but
14809 uses the reference video instead of the main input as basis. scale2ref also
14810 supports the following additional constants for the @option{w} and
14811 @option{h} options:
14812
14813 @table @var
14814 @item main_w
14815 @item main_h
14816 The main input video's width and height
14817
14818 @item main_a
14819 The same as @var{main_w} / @var{main_h}
14820
14821 @item main_sar
14822 The main input video's sample aspect ratio
14823
14824 @item main_dar, mdar
14825 The main input video's display aspect ratio. Calculated from
14826 @code{(main_w / main_h) * main_sar}.
14827
14828 @item main_hsub
14829 @item main_vsub
14830 The main input video's horizontal and vertical chroma subsample values.
14831 For example for the pixel format "yuv422p" @var{hsub} is 2 and @var{vsub}
14832 is 1.
14833 @end table
14834
14835 @subsection Examples
14836
14837 @itemize
14838 @item
14839 Scale a subtitle stream (b) to match the main video (a) in size before overlaying
14840 @example
14841 'scale2ref[b][a];[a][b]overlay'
14842 @end example
14843 @end itemize
14844
14845 @anchor{selectivecolor}
14846 @section selectivecolor
14847
14848 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
14849 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
14850 by the "purity" of the color (that is, how saturated it already is).
14851
14852 This filter is similar to the Adobe Photoshop Selective Color tool.
14853
14854 The filter accepts the following options:
14855
14856 @table @option
14857 @item correction_method
14858 Select color correction method.
14859
14860 Available values are:
14861 @table @samp
14862 @item absolute
14863 Specified adjustments are applied "as-is" (added/subtracted to original pixel
14864 component value).
14865 @item relative
14866 Specified adjustments are relative to the original component value.
14867 @end table
14868 Default is @code{absolute}.
14869 @item reds
14870 Adjustments for red pixels (pixels where the red component is the maximum)
14871 @item yellows
14872 Adjustments for yellow pixels (pixels where the blue component is the minimum)
14873 @item greens
14874 Adjustments for green pixels (pixels where the green component is the maximum)
14875 @item cyans
14876 Adjustments for cyan pixels (pixels where the red component is the minimum)
14877 @item blues
14878 Adjustments for blue pixels (pixels where the blue component is the maximum)
14879 @item magentas
14880 Adjustments for magenta pixels (pixels where the green component is the minimum)
14881 @item whites
14882 Adjustments for white pixels (pixels where all components are greater than 128)
14883 @item neutrals
14884 Adjustments for all pixels except pure black and pure white
14885 @item blacks
14886 Adjustments for black pixels (pixels where all components are lesser than 128)
14887 @item psfile
14888 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
14889 @end table
14890
14891 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
14892 4 space separated floating point adjustment values in the [-1,1] range,
14893 respectively to adjust the amount of cyan, magenta, yellow and black for the
14894 pixels of its range.
14895
14896 @subsection Examples
14897
14898 @itemize
14899 @item
14900 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
14901 increase magenta by 27% in blue areas:
14902 @example
14903 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
14904 @end example
14905
14906 @item
14907 Use a Photoshop selective color preset:
14908 @example
14909 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
14910 @end example
14911 @end itemize
14912
14913 @anchor{separatefields}
14914 @section separatefields
14915
14916 The @code{separatefields} takes a frame-based video input and splits
14917 each frame into its components fields, producing a new half height clip
14918 with twice the frame rate and twice the frame count.
14919
14920 This filter use field-dominance information in frame to decide which
14921 of each pair of fields to place first in the output.
14922 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
14923
14924 @section setdar, setsar
14925
14926 The @code{setdar} filter sets the Display Aspect Ratio for the filter
14927 output video.
14928
14929 This is done by changing the specified Sample (aka Pixel) Aspect
14930 Ratio, according to the following equation:
14931 @example
14932 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
14933 @end example
14934
14935 Keep in mind that the @code{setdar} filter does not modify the pixel
14936 dimensions of the video frame. Also, the display aspect ratio set by
14937 this filter may be changed by later filters in the filterchain,
14938 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
14939 applied.
14940
14941 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
14942 the filter output video.
14943
14944 Note that as a consequence of the application of this filter, the
14945 output display aspect ratio will change according to the equation
14946 above.
14947
14948 Keep in mind that the sample aspect ratio set by the @code{setsar}
14949 filter may be changed by later filters in the filterchain, e.g. if
14950 another "setsar" or a "setdar" filter is applied.
14951
14952 It accepts the following parameters:
14953
14954 @table @option
14955 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
14956 Set the aspect ratio used by the filter.
14957
14958 The parameter can be a floating point number string, an expression, or
14959 a string of the form @var{num}:@var{den}, where @var{num} and
14960 @var{den} are the numerator and denominator of the aspect ratio. If
14961 the parameter is not specified, it is assumed the value "0".
14962 In case the form "@var{num}:@var{den}" is used, the @code{:} character
14963 should be escaped.
14964
14965 @item max
14966 Set the maximum integer value to use for expressing numerator and
14967 denominator when reducing the expressed aspect ratio to a rational.
14968 Default value is @code{100}.
14969
14970 @end table
14971
14972 The parameter @var{sar} is an expression containing
14973 the following constants:
14974
14975 @table @option
14976 @item E, PI, PHI
14977 These are approximated values for the mathematical constants e
14978 (Euler's number), pi (Greek pi), and phi (the golden ratio).
14979
14980 @item w, h
14981 The input width and height.
14982
14983 @item a
14984 These are the same as @var{w} / @var{h}.
14985
14986 @item sar
14987 The input sample aspect ratio.
14988
14989 @item dar
14990 The input display aspect ratio. It is the same as
14991 (@var{w} / @var{h}) * @var{sar}.
14992
14993 @item hsub, vsub
14994 Horizontal and vertical chroma subsample values. For example, for the
14995 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14996 @end table
14997
14998 @subsection Examples
14999
15000 @itemize
15001
15002 @item
15003 To change the display aspect ratio to 16:9, specify one of the following:
15004 @example
15005 setdar=dar=1.77777
15006 setdar=dar=16/9
15007 @end example
15008
15009 @item
15010 To change the sample aspect ratio to 10:11, specify:
15011 @example
15012 setsar=sar=10/11
15013 @end example
15014
15015 @item
15016 To set a display aspect ratio of 16:9, and specify a maximum integer value of
15017 1000 in the aspect ratio reduction, use the command:
15018 @example
15019 setdar=ratio=16/9:max=1000
15020 @end example
15021
15022 @end itemize
15023
15024 @anchor{setfield}
15025 @section setfield
15026
15027 Force field for the output video frame.
15028
15029 The @code{setfield} filter marks the interlace type field for the
15030 output frames. It does not change the input frame, but only sets the
15031 corresponding property, which affects how the frame is treated by
15032 following filters (e.g. @code{fieldorder} or @code{yadif}).
15033
15034 The filter accepts the following options:
15035
15036 @table @option
15037
15038 @item mode
15039 Available values are:
15040
15041 @table @samp
15042 @item auto
15043 Keep the same field property.
15044
15045 @item bff
15046 Mark the frame as bottom-field-first.
15047
15048 @item tff
15049 Mark the frame as top-field-first.
15050
15051 @item prog
15052 Mark the frame as progressive.
15053 @end table
15054 @end table
15055
15056 @anchor{setparams}
15057 @section setparams
15058
15059 Force frame parameter for the output video frame.
15060
15061 The @code{setparams} filter marks interlace and color range for the
15062 output frames. It does not change the input frame, but only sets the
15063 corresponding property, which affects how the frame is treated by
15064 filters/encoders.
15065
15066 @table @option
15067 @item field_mode
15068 Available values are:
15069
15070 @table @samp
15071 @item auto
15072 Keep the same field property (default).
15073
15074 @item bff
15075 Mark the frame as bottom-field-first.
15076
15077 @item tff
15078 Mark the frame as top-field-first.
15079
15080 @item prog
15081 Mark the frame as progressive.
15082 @end table
15083
15084 @item range
15085 Available values are:
15086
15087 @table @samp
15088 @item auto
15089 Keep the same color range property (default).
15090
15091 @item unspecified, unknown
15092 Mark the frame as unspecified color range.
15093
15094 @item limited, tv, mpeg
15095 Mark the frame as limited range.
15096
15097 @item full, pc, jpeg
15098 Mark the frame as full range.
15099 @end table
15100
15101 @item color_primaries
15102 Set the color primaries.
15103 Available values are:
15104
15105 @table @samp
15106 @item auto
15107 Keep the same color primaries property (default).
15108
15109 @item bt709
15110 @item unknown
15111 @item bt470m
15112 @item bt470bg
15113 @item smpte170m
15114 @item smpte240m
15115 @item film
15116 @item bt2020
15117 @item smpte428
15118 @item smpte431
15119 @item smpte432
15120 @item jedec-p22
15121 @end table
15122
15123 @item color_trc
15124 Set the color transfert.
15125 Available values are:
15126
15127 @table @samp
15128 @item auto
15129 Keep the same color trc property (default).
15130
15131 @item bt709
15132 @item unknown
15133 @item bt470m
15134 @item bt470bg
15135 @item smpte170m
15136 @item smpte240m
15137 @item linear
15138 @item log100
15139 @item log316
15140 @item iec61966-2-4
15141 @item bt1361e
15142 @item iec61966-2-1
15143 @item bt2020-10
15144 @item bt2020-12
15145 @item smpte2084
15146 @item smpte428
15147 @item arib-std-b67
15148 @end table
15149
15150 @item colorspace
15151 Set the colorspace.
15152 Available values are:
15153
15154 @table @samp
15155 @item auto
15156 Keep the same colorspace property (default).
15157
15158 @item gbr
15159 @item bt709
15160 @item unknown
15161 @item fcc
15162 @item bt470bg
15163 @item smpte170m
15164 @item smpte240m
15165 @item ycgco
15166 @item bt2020nc
15167 @item bt2020c
15168 @item smpte2085
15169 @item chroma-derived-nc
15170 @item chroma-derived-c
15171 @item ictcp
15172 @end table
15173 @end table
15174
15175 @section showinfo
15176
15177 Show a line containing various information for each input video frame.
15178 The input video is not modified.
15179
15180 The shown line contains a sequence of key/value pairs of the form
15181 @var{key}:@var{value}.
15182
15183 The following values are shown in the output:
15184
15185 @table @option
15186 @item n
15187 The (sequential) number of the input frame, starting from 0.
15188
15189 @item pts
15190 The Presentation TimeStamp of the input frame, expressed as a number of
15191 time base units. The time base unit depends on the filter input pad.
15192
15193 @item pts_time
15194 The Presentation TimeStamp of the input frame, expressed as a number of
15195 seconds.
15196
15197 @item pos
15198 The position of the frame in the input stream, or -1 if this information is
15199 unavailable and/or meaningless (for example in case of synthetic video).
15200
15201 @item fmt
15202 The pixel format name.
15203
15204 @item sar
15205 The sample aspect ratio of the input frame, expressed in the form
15206 @var{num}/@var{den}.
15207
15208 @item s
15209 The size of the input frame. For the syntax of this option, check the
15210 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15211
15212 @item i
15213 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
15214 for bottom field first).
15215
15216 @item iskey
15217 This is 1 if the frame is a key frame, 0 otherwise.
15218
15219 @item type
15220 The picture type of the input frame ("I" for an I-frame, "P" for a
15221 P-frame, "B" for a B-frame, or "?" for an unknown type).
15222 Also refer to the documentation of the @code{AVPictureType} enum and of
15223 the @code{av_get_picture_type_char} function defined in
15224 @file{libavutil/avutil.h}.
15225
15226 @item checksum
15227 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
15228
15229 @item plane_checksum
15230 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
15231 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
15232 @end table
15233
15234 @section showpalette
15235
15236 Displays the 256 colors palette of each frame. This filter is only relevant for
15237 @var{pal8} pixel format frames.
15238
15239 It accepts the following option:
15240
15241 @table @option
15242 @item s
15243 Set the size of the box used to represent one palette color entry. Default is
15244 @code{30} (for a @code{30x30} pixel box).
15245 @end table
15246
15247 @section shuffleframes
15248
15249 Reorder and/or duplicate and/or drop video frames.
15250
15251 It accepts the following parameters:
15252
15253 @table @option
15254 @item mapping
15255 Set the destination indexes of input frames.
15256 This is space or '|' separated list of indexes that maps input frames to output
15257 frames. Number of indexes also sets maximal value that each index may have.
15258 '-1' index have special meaning and that is to drop frame.
15259 @end table
15260
15261 The first frame has the index 0. The default is to keep the input unchanged.
15262
15263 @subsection Examples
15264
15265 @itemize
15266 @item
15267 Swap second and third frame of every three frames of the input:
15268 @example
15269 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
15270 @end example
15271
15272 @item
15273 Swap 10th and 1st frame of every ten frames of the input:
15274 @example
15275 ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
15276 @end example
15277 @end itemize
15278
15279 @section shuffleplanes
15280
15281 Reorder and/or duplicate video planes.
15282
15283 It accepts the following parameters:
15284
15285 @table @option
15286
15287 @item map0
15288 The index of the input plane to be used as the first output plane.
15289
15290 @item map1
15291 The index of the input plane to be used as the second output plane.
15292
15293 @item map2
15294 The index of the input plane to be used as the third output plane.
15295
15296 @item map3
15297 The index of the input plane to be used as the fourth output plane.
15298
15299 @end table
15300
15301 The first plane has the index 0. The default is to keep the input unchanged.
15302
15303 @subsection Examples
15304
15305 @itemize
15306 @item
15307 Swap the second and third planes of the input:
15308 @example
15309 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
15310 @end example
15311 @end itemize
15312
15313 @anchor{signalstats}
15314 @section signalstats
15315 Evaluate various visual metrics that assist in determining issues associated
15316 with the digitization of analog video media.
15317
15318 By default the filter will log these metadata values:
15319
15320 @table @option
15321 @item YMIN
15322 Display the minimal Y value contained within the input frame. Expressed in
15323 range of [0-255].
15324
15325 @item YLOW
15326 Display the Y value at the 10% percentile within the input frame. Expressed in
15327 range of [0-255].
15328
15329 @item YAVG
15330 Display the average Y value within the input frame. Expressed in range of
15331 [0-255].
15332
15333 @item YHIGH
15334 Display the Y value at the 90% percentile within the input frame. Expressed in
15335 range of [0-255].
15336
15337 @item YMAX
15338 Display the maximum Y value contained within the input frame. Expressed in
15339 range of [0-255].
15340
15341 @item UMIN
15342 Display the minimal U value contained within the input frame. Expressed in
15343 range of [0-255].
15344
15345 @item ULOW
15346 Display the U value at the 10% percentile within the input frame. Expressed in
15347 range of [0-255].
15348
15349 @item UAVG
15350 Display the average U value within the input frame. Expressed in range of
15351 [0-255].
15352
15353 @item UHIGH
15354 Display the U value at the 90% percentile within the input frame. Expressed in
15355 range of [0-255].
15356
15357 @item UMAX
15358 Display the maximum U value contained within the input frame. Expressed in
15359 range of [0-255].
15360
15361 @item VMIN
15362 Display the minimal V value contained within the input frame. Expressed in
15363 range of [0-255].
15364
15365 @item VLOW
15366 Display the V value at the 10% percentile within the input frame. Expressed in
15367 range of [0-255].
15368
15369 @item VAVG
15370 Display the average V value within the input frame. Expressed in range of
15371 [0-255].
15372
15373 @item VHIGH
15374 Display the V value at the 90% percentile within the input frame. Expressed in
15375 range of [0-255].
15376
15377 @item VMAX
15378 Display the maximum V value contained within the input frame. Expressed in
15379 range of [0-255].
15380
15381 @item SATMIN
15382 Display the minimal saturation value contained within the input frame.
15383 Expressed in range of [0-~181.02].
15384
15385 @item SATLOW
15386 Display the saturation value at the 10% percentile within the input frame.
15387 Expressed in range of [0-~181.02].
15388
15389 @item SATAVG
15390 Display the average saturation value within the input frame. Expressed in range
15391 of [0-~181.02].
15392
15393 @item SATHIGH
15394 Display the saturation value at the 90% percentile within the input frame.
15395 Expressed in range of [0-~181.02].
15396
15397 @item SATMAX
15398 Display the maximum saturation value contained within the input frame.
15399 Expressed in range of [0-~181.02].
15400
15401 @item HUEMED
15402 Display the median value for hue within the input frame. Expressed in range of
15403 [0-360].
15404
15405 @item HUEAVG
15406 Display the average value for hue within the input frame. Expressed in range of
15407 [0-360].
15408
15409 @item YDIF
15410 Display the average of sample value difference between all values of the Y
15411 plane in the current frame and corresponding values of the previous input frame.
15412 Expressed in range of [0-255].
15413
15414 @item UDIF
15415 Display the average of sample value difference between all values of the U
15416 plane in the current frame and corresponding values of the previous input frame.
15417 Expressed in range of [0-255].
15418
15419 @item VDIF
15420 Display the average of sample value difference between all values of the V
15421 plane in the current frame and corresponding values of the previous input frame.
15422 Expressed in range of [0-255].
15423
15424 @item YBITDEPTH
15425 Display bit depth of Y plane in current frame.
15426 Expressed in range of [0-16].
15427
15428 @item UBITDEPTH
15429 Display bit depth of U plane in current frame.
15430 Expressed in range of [0-16].
15431
15432 @item VBITDEPTH
15433 Display bit depth of V plane in current frame.
15434 Expressed in range of [0-16].
15435 @end table
15436
15437 The filter accepts the following options:
15438
15439 @table @option
15440 @item stat
15441 @item out
15442
15443 @option{stat} specify an additional form of image analysis.
15444 @option{out} output video with the specified type of pixel highlighted.
15445
15446 Both options accept the following values:
15447
15448 @table @samp
15449 @item tout
15450 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
15451 unlike the neighboring pixels of the same field. Examples of temporal outliers
15452 include the results of video dropouts, head clogs, or tape tracking issues.
15453
15454 @item vrep
15455 Identify @var{vertical line repetition}. Vertical line repetition includes
15456 similar rows of pixels within a frame. In born-digital video vertical line
15457 repetition is common, but this pattern is uncommon in video digitized from an
15458 analog source. When it occurs in video that results from the digitization of an
15459 analog source it can indicate concealment from a dropout compensator.
15460
15461 @item brng
15462 Identify pixels that fall outside of legal broadcast range.
15463 @end table
15464
15465 @item color, c
15466 Set the highlight color for the @option{out} option. The default color is
15467 yellow.
15468 @end table
15469
15470 @subsection Examples
15471
15472 @itemize
15473 @item
15474 Output data of various video metrics:
15475 @example
15476 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
15477 @end example
15478
15479 @item
15480 Output specific data about the minimum and maximum values of the Y plane per frame:
15481 @example
15482 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
15483 @end example
15484
15485 @item
15486 Playback video while highlighting pixels that are outside of broadcast range in red.
15487 @example
15488 ffplay example.mov -vf signalstats="out=brng:color=red"
15489 @end example
15490
15491 @item
15492 Playback video with signalstats metadata drawn over the frame.
15493 @example
15494 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
15495 @end example
15496
15497 The contents of signalstat_drawtext.txt used in the command are:
15498 @example
15499 time %@{pts:hms@}
15500 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
15501 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
15502 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
15503 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
15504
15505 @end example
15506 @end itemize
15507
15508 @anchor{signature}
15509 @section signature
15510
15511 Calculates the MPEG-7 Video Signature. The filter can handle more than one
15512 input. In this case the matching between the inputs can be calculated additionally.
15513 The filter always passes through the first input. The signature of each stream can
15514 be written into a file.
15515
15516 It accepts the following options:
15517
15518 @table @option
15519 @item detectmode
15520 Enable or disable the matching process.
15521
15522 Available values are:
15523
15524 @table @samp
15525 @item off
15526 Disable the calculation of a matching (default).
15527 @item full
15528 Calculate the matching for the whole video and output whether the whole video
15529 matches or only parts.
15530 @item fast
15531 Calculate only until a matching is found or the video ends. Should be faster in
15532 some cases.
15533 @end table
15534
15535 @item nb_inputs
15536 Set the number of inputs. The option value must be a non negative integer.
15537 Default value is 1.
15538
15539 @item filename
15540 Set the path to which the output is written. If there is more than one input,
15541 the path must be a prototype, i.e. must contain %d or %0nd (where n is a positive
15542 integer), that will be replaced with the input number. If no filename is
15543 specified, no output will be written. This is the default.
15544
15545 @item format
15546 Choose the output format.
15547
15548 Available values are:
15549
15550 @table @samp
15551 @item binary
15552 Use the specified binary representation (default).
15553 @item xml
15554 Use the specified xml representation.
15555 @end table
15556
15557 @item th_d
15558 Set threshold to detect one word as similar. The option value must be an integer
15559 greater than zero. The default value is 9000.
15560
15561 @item th_dc
15562 Set threshold to detect all words as similar. The option value must be an integer
15563 greater than zero. The default value is 60000.
15564
15565 @item th_xh
15566 Set threshold to detect frames as similar. The option value must be an integer
15567 greater than zero. The default value is 116.
15568
15569 @item th_di
15570 Set the minimum length of a sequence in frames to recognize it as matching
15571 sequence. The option value must be a non negative integer value.
15572 The default value is 0.
15573
15574 @item th_it
15575 Set the minimum relation, that matching frames to all frames must have.
15576 The option value must be a double value between 0 and 1. The default value is 0.5.
15577 @end table
15578
15579 @subsection Examples
15580
15581 @itemize
15582 @item
15583 To calculate the signature of an input video and store it in signature.bin:
15584 @example
15585 ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
15586 @end example
15587
15588 @item
15589 To detect whether two videos match and store the signatures in XML format in
15590 signature0.xml and signature1.xml:
15591 @example
15592 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 -
15593 @end example
15594
15595 @end itemize
15596
15597 @anchor{smartblur}
15598 @section smartblur
15599
15600 Blur the input video without impacting the outlines.
15601
15602 It accepts the following options:
15603
15604 @table @option
15605 @item luma_radius, lr
15606 Set the luma radius. The option value must be a float number in
15607 the range [0.1,5.0] that specifies the variance of the gaussian filter
15608 used to blur the image (slower if larger). Default value is 1.0.
15609
15610 @item luma_strength, ls
15611 Set the luma strength. The option value must be a float number
15612 in the range [-1.0,1.0] that configures the blurring. A value included
15613 in [0.0,1.0] will blur the image whereas a value included in
15614 [-1.0,0.0] will sharpen the image. Default value is 1.0.
15615
15616 @item luma_threshold, lt
15617 Set the luma threshold used as a coefficient to determine
15618 whether a pixel should be blurred or not. The option value must be an
15619 integer in the range [-30,30]. A value of 0 will filter all the image,
15620 a value included in [0,30] will filter flat areas and a value included
15621 in [-30,0] will filter edges. Default value is 0.
15622
15623 @item chroma_radius, cr
15624 Set the chroma radius. The option value must be a float number in
15625 the range [0.1,5.0] that specifies the variance of the gaussian filter
15626 used to blur the image (slower if larger). Default value is @option{luma_radius}.
15627
15628 @item chroma_strength, cs
15629 Set the chroma strength. The option value must be a float number
15630 in the range [-1.0,1.0] that configures the blurring. A value included
15631 in [0.0,1.0] will blur the image whereas a value included in
15632 [-1.0,0.0] will sharpen the image. Default value is @option{luma_strength}.
15633
15634 @item chroma_threshold, ct
15635 Set the chroma threshold used as a coefficient to determine
15636 whether a pixel should be blurred or not. The option value must be an
15637 integer in the range [-30,30]. A value of 0 will filter all the image,
15638 a value included in [0,30] will filter flat areas and a value included
15639 in [-30,0] will filter edges. Default value is @option{luma_threshold}.
15640 @end table
15641
15642 If a chroma option is not explicitly set, the corresponding luma value
15643 is set.
15644
15645 @section ssim
15646
15647 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
15648
15649 This filter takes in input two input videos, the first input is
15650 considered the "main" source and is passed unchanged to the
15651 output. The second input is used as a "reference" video for computing
15652 the SSIM.
15653
15654 Both video inputs must have the same resolution and pixel format for
15655 this filter to work correctly. Also it assumes that both inputs
15656 have the same number of frames, which are compared one by one.
15657
15658 The filter stores the calculated SSIM of each frame.
15659
15660 The description of the accepted parameters follows.
15661
15662 @table @option
15663 @item stats_file, f
15664 If specified the filter will use the named file to save the SSIM of
15665 each individual frame. When filename equals "-" the data is sent to
15666 standard output.
15667 @end table
15668
15669 The file printed if @var{stats_file} is selected, contains a sequence of
15670 key/value pairs of the form @var{key}:@var{value} for each compared
15671 couple of frames.
15672
15673 A description of each shown parameter follows:
15674
15675 @table @option
15676 @item n
15677 sequential number of the input frame, starting from 1
15678
15679 @item Y, U, V, R, G, B
15680 SSIM of the compared frames for the component specified by the suffix.
15681
15682 @item All
15683 SSIM of the compared frames for the whole frame.
15684
15685 @item dB
15686 Same as above but in dB representation.
15687 @end table
15688
15689 This filter also supports the @ref{framesync} options.
15690
15691 For example:
15692 @example
15693 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
15694 [main][ref] ssim="stats_file=stats.log" [out]
15695 @end example
15696
15697 On this example the input file being processed is compared with the
15698 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
15699 is stored in @file{stats.log}.
15700
15701 Another example with both psnr and ssim at same time:
15702 @example
15703 ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
15704 @end example
15705
15706 @section stereo3d
15707
15708 Convert between different stereoscopic image formats.
15709
15710 The filters accept the following options:
15711
15712 @table @option
15713 @item in
15714 Set stereoscopic image format of input.
15715
15716 Available values for input image formats are:
15717 @table @samp
15718 @item sbsl
15719 side by side parallel (left eye left, right eye right)
15720
15721 @item sbsr
15722 side by side crosseye (right eye left, left eye right)
15723
15724 @item sbs2l
15725 side by side parallel with half width resolution
15726 (left eye left, right eye right)
15727
15728 @item sbs2r
15729 side by side crosseye with half width resolution
15730 (right eye left, left eye right)
15731
15732 @item abl
15733 above-below (left eye above, right eye below)
15734
15735 @item abr
15736 above-below (right eye above, left eye below)
15737
15738 @item ab2l
15739 above-below with half height resolution
15740 (left eye above, right eye below)
15741
15742 @item ab2r
15743 above-below with half height resolution
15744 (right eye above, left eye below)
15745
15746 @item al
15747 alternating frames (left eye first, right eye second)
15748
15749 @item ar
15750 alternating frames (right eye first, left eye second)
15751
15752 @item irl
15753 interleaved rows (left eye has top row, right eye starts on next row)
15754
15755 @item irr
15756 interleaved rows (right eye has top row, left eye starts on next row)
15757
15758 @item icl
15759 interleaved columns, left eye first
15760
15761 @item icr
15762 interleaved columns, right eye first
15763
15764 Default value is @samp{sbsl}.
15765 @end table
15766
15767 @item out
15768 Set stereoscopic image format of output.
15769
15770 @table @samp
15771 @item sbsl
15772 side by side parallel (left eye left, right eye right)
15773
15774 @item sbsr
15775 side by side crosseye (right eye left, left eye right)
15776
15777 @item sbs2l
15778 side by side parallel with half width resolution
15779 (left eye left, right eye right)
15780
15781 @item sbs2r
15782 side by side crosseye with half width resolution
15783 (right eye left, left eye right)
15784
15785 @item abl
15786 above-below (left eye above, right eye below)
15787
15788 @item abr
15789 above-below (right eye above, left eye below)
15790
15791 @item ab2l
15792 above-below with half height resolution
15793 (left eye above, right eye below)
15794
15795 @item ab2r
15796 above-below with half height resolution
15797 (right eye above, left eye below)
15798
15799 @item al
15800 alternating frames (left eye first, right eye second)
15801
15802 @item ar
15803 alternating frames (right eye first, left eye second)
15804
15805 @item irl
15806 interleaved rows (left eye has top row, right eye starts on next row)
15807
15808 @item irr
15809 interleaved rows (right eye has top row, left eye starts on next row)
15810
15811 @item arbg
15812 anaglyph red/blue gray
15813 (red filter on left eye, blue filter on right eye)
15814
15815 @item argg
15816 anaglyph red/green gray
15817 (red filter on left eye, green filter on right eye)
15818
15819 @item arcg
15820 anaglyph red/cyan gray
15821 (red filter on left eye, cyan filter on right eye)
15822
15823 @item arch
15824 anaglyph red/cyan half colored
15825 (red filter on left eye, cyan filter on right eye)
15826
15827 @item arcc
15828 anaglyph red/cyan color
15829 (red filter on left eye, cyan filter on right eye)
15830
15831 @item arcd
15832 anaglyph red/cyan color optimized with the least squares projection of dubois
15833 (red filter on left eye, cyan filter on right eye)
15834
15835 @item agmg
15836 anaglyph green/magenta gray
15837 (green filter on left eye, magenta filter on right eye)
15838
15839 @item agmh
15840 anaglyph green/magenta half colored
15841 (green filter on left eye, magenta filter on right eye)
15842
15843 @item agmc
15844 anaglyph green/magenta colored
15845 (green filter on left eye, magenta filter on right eye)
15846
15847 @item agmd
15848 anaglyph green/magenta color optimized with the least squares projection of dubois
15849 (green filter on left eye, magenta filter on right eye)
15850
15851 @item aybg
15852 anaglyph yellow/blue gray
15853 (yellow filter on left eye, blue filter on right eye)
15854
15855 @item aybh
15856 anaglyph yellow/blue half colored
15857 (yellow filter on left eye, blue filter on right eye)
15858
15859 @item aybc
15860 anaglyph yellow/blue colored
15861 (yellow filter on left eye, blue filter on right eye)
15862
15863 @item aybd
15864 anaglyph yellow/blue color optimized with the least squares projection of dubois
15865 (yellow filter on left eye, blue filter on right eye)
15866
15867 @item ml
15868 mono output (left eye only)
15869
15870 @item mr
15871 mono output (right eye only)
15872
15873 @item chl
15874 checkerboard, left eye first
15875
15876 @item chr
15877 checkerboard, right eye first
15878
15879 @item icl
15880 interleaved columns, left eye first
15881
15882 @item icr
15883 interleaved columns, right eye first
15884
15885 @item hdmi
15886 HDMI frame pack
15887 @end table
15888
15889 Default value is @samp{arcd}.
15890 @end table
15891
15892 @subsection Examples
15893
15894 @itemize
15895 @item
15896 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
15897 @example
15898 stereo3d=sbsl:aybd
15899 @end example
15900
15901 @item
15902 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
15903 @example
15904 stereo3d=abl:sbsr
15905 @end example
15906 @end itemize
15907
15908 @section streamselect, astreamselect
15909 Select video or audio streams.
15910
15911 The filter accepts the following options:
15912
15913 @table @option
15914 @item inputs
15915 Set number of inputs. Default is 2.
15916
15917 @item map
15918 Set input indexes to remap to outputs.
15919 @end table
15920
15921 @subsection Commands
15922
15923 The @code{streamselect} and @code{astreamselect} filter supports the following
15924 commands:
15925
15926 @table @option
15927 @item map
15928 Set input indexes to remap to outputs.
15929 @end table
15930
15931 @subsection Examples
15932
15933 @itemize
15934 @item
15935 Select first 5 seconds 1st stream and rest of time 2nd stream:
15936 @example
15937 sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
15938 @end example
15939
15940 @item
15941 Same as above, but for audio:
15942 @example
15943 asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
15944 @end example
15945 @end itemize
15946
15947 @section sobel
15948 Apply sobel operator to input video stream.
15949
15950 The filter accepts the following option:
15951
15952 @table @option
15953 @item planes
15954 Set which planes will be processed, unprocessed planes will be copied.
15955 By default value 0xf, all planes will be processed.
15956
15957 @item scale
15958 Set value which will be multiplied with filtered result.
15959
15960 @item delta
15961 Set value which will be added to filtered result.
15962 @end table
15963
15964 @anchor{spp}
15965 @section spp
15966
15967 Apply a simple postprocessing filter that compresses and decompresses the image
15968 at several (or - in the case of @option{quality} level @code{6} - all) shifts
15969 and average the results.
15970
15971 The filter accepts the following options:
15972
15973 @table @option
15974 @item quality
15975 Set quality. This option defines the number of levels for averaging. It accepts
15976 an integer in the range 0-6. If set to @code{0}, the filter will have no
15977 effect. A value of @code{6} means the higher quality. For each increment of
15978 that value the speed drops by a factor of approximately 2.  Default value is
15979 @code{3}.
15980
15981 @item qp
15982 Force a constant quantization parameter. If not set, the filter will use the QP
15983 from the video stream (if available).
15984
15985 @item mode
15986 Set thresholding mode. Available modes are:
15987
15988 @table @samp
15989 @item hard
15990 Set hard thresholding (default).
15991 @item soft
15992 Set soft thresholding (better de-ringing effect, but likely blurrier).
15993 @end table
15994
15995 @item use_bframe_qp
15996 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
15997 option may cause flicker since the B-Frames have often larger QP. Default is
15998 @code{0} (not enabled).
15999 @end table
16000
16001 @section sr
16002
16003 Scale the input by applying one of the super-resolution methods based on
16004 convolutional neural networks. Supported models:
16005
16006 @itemize
16007 @item
16008 Super-Resolution Convolutional Neural Network model (SRCNN).
16009 See @url{https://arxiv.org/abs/1501.00092}.
16010
16011 @item
16012 Efficient Sub-Pixel Convolutional Neural Network model (ESPCN).
16013 See @url{https://arxiv.org/abs/1609.05158}.
16014 @end itemize
16015
16016 Training scripts as well as scripts for model generation are provided in
16017 the repository at @url{https://github.com/HighVoltageRocknRoll/sr.git}.
16018
16019 The filter accepts the following options:
16020
16021 @table @option
16022 @item dnn_backend
16023 Specify which DNN backend to use for model loading and execution. This option accepts
16024 the following values:
16025
16026 @table @samp
16027 @item native
16028 Native implementation of DNN loading and execution.
16029
16030 @item tensorflow
16031 TensorFlow backend. To enable this backend you
16032 need to install the TensorFlow for C library (see
16033 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
16034 @code{--enable-libtensorflow}
16035 @end table
16036
16037 Default value is @samp{native}.
16038
16039 @item model
16040 Set path to model file specifying network architecture and its parameters.
16041 Note that different backends use different file formats. TensorFlow backend
16042 can load files for both formats, while native backend can load files for only
16043 its format.
16044
16045 @item scale_factor
16046 Set scale factor for SRCNN model. Allowed values are @code{2}, @code{3} and @code{4}.
16047 Default value is @code{2}. Scale factor is necessary for SRCNN model, because it accepts
16048 input upscaled using bicubic upscaling with proper scale factor.
16049 @end table
16050
16051 @anchor{subtitles}
16052 @section subtitles
16053
16054 Draw subtitles on top of input video using the libass library.
16055
16056 To enable compilation of this filter you need to configure FFmpeg with
16057 @code{--enable-libass}. This filter also requires a build with libavcodec and
16058 libavformat to convert the passed subtitles file to ASS (Advanced Substation
16059 Alpha) subtitles format.
16060
16061 The filter accepts the following options:
16062
16063 @table @option
16064 @item filename, f
16065 Set the filename of the subtitle file to read. It must be specified.
16066
16067 @item original_size
16068 Specify the size of the original video, the video for which the ASS file
16069 was composed. For the syntax of this option, check the
16070 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16071 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
16072 correctly scale the fonts if the aspect ratio has been changed.
16073
16074 @item fontsdir
16075 Set a directory path containing fonts that can be used by the filter.
16076 These fonts will be used in addition to whatever the font provider uses.
16077
16078 @item alpha
16079 Process alpha channel, by default alpha channel is untouched.
16080
16081 @item charenc
16082 Set subtitles input character encoding. @code{subtitles} filter only. Only
16083 useful if not UTF-8.
16084
16085 @item stream_index, si
16086 Set subtitles stream index. @code{subtitles} filter only.
16087
16088 @item force_style
16089 Override default style or script info parameters of the subtitles. It accepts a
16090 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
16091 @end table
16092
16093 If the first key is not specified, it is assumed that the first value
16094 specifies the @option{filename}.
16095
16096 For example, to render the file @file{sub.srt} on top of the input
16097 video, use the command:
16098 @example
16099 subtitles=sub.srt
16100 @end example
16101
16102 which is equivalent to:
16103 @example
16104 subtitles=filename=sub.srt
16105 @end example
16106
16107 To render the default subtitles stream from file @file{video.mkv}, use:
16108 @example
16109 subtitles=video.mkv
16110 @end example
16111
16112 To render the second subtitles stream from that file, use:
16113 @example
16114 subtitles=video.mkv:si=1
16115 @end example
16116
16117 To make the subtitles stream from @file{sub.srt} appear in 80% transparent blue
16118 @code{DejaVu Serif}, use:
16119 @example
16120 subtitles=sub.srt:force_style='FontName=DejaVu Serif,PrimaryColour=&HCCFF0000'
16121 @end example
16122
16123 @section super2xsai
16124
16125 Scale the input by 2x and smooth using the Super2xSaI (Scale and
16126 Interpolate) pixel art scaling algorithm.
16127
16128 Useful for enlarging pixel art images without reducing sharpness.
16129
16130 @section swaprect
16131
16132 Swap two rectangular objects in video.
16133
16134 This filter accepts the following options:
16135
16136 @table @option
16137 @item w
16138 Set object width.
16139
16140 @item h
16141 Set object height.
16142
16143 @item x1
16144 Set 1st rect x coordinate.
16145
16146 @item y1
16147 Set 1st rect y coordinate.
16148
16149 @item x2
16150 Set 2nd rect x coordinate.
16151
16152 @item y2
16153 Set 2nd rect y coordinate.
16154
16155 All expressions are evaluated once for each frame.
16156 @end table
16157
16158 The all options are expressions containing the following constants:
16159
16160 @table @option
16161 @item w
16162 @item h
16163 The input width and height.
16164
16165 @item a
16166 same as @var{w} / @var{h}
16167
16168 @item sar
16169 input sample aspect ratio
16170
16171 @item dar
16172 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
16173
16174 @item n
16175 The number of the input frame, starting from 0.
16176
16177 @item t
16178 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
16179
16180 @item pos
16181 the position in the file of the input frame, NAN if unknown
16182 @end table
16183
16184 @section swapuv
16185 Swap U & V plane.
16186
16187 @section telecine
16188
16189 Apply telecine process to the video.
16190
16191 This filter accepts the following options:
16192
16193 @table @option
16194 @item first_field
16195 @table @samp
16196 @item top, t
16197 top field first
16198 @item bottom, b
16199 bottom field first
16200 The default value is @code{top}.
16201 @end table
16202
16203 @item pattern
16204 A string of numbers representing the pulldown pattern you wish to apply.
16205 The default value is @code{23}.
16206 @end table
16207
16208 @example
16209 Some typical patterns:
16210
16211 NTSC output (30i):
16212 27.5p: 32222
16213 24p: 23 (classic)
16214 24p: 2332 (preferred)
16215 20p: 33
16216 18p: 334
16217 16p: 3444
16218
16219 PAL output (25i):
16220 27.5p: 12222
16221 24p: 222222222223 ("Euro pulldown")
16222 16.67p: 33
16223 16p: 33333334
16224 @end example
16225
16226 @section threshold
16227
16228 Apply threshold effect to video stream.
16229
16230 This filter needs four video streams to perform thresholding.
16231 First stream is stream we are filtering.
16232 Second stream is holding threshold values, third stream is holding min values,
16233 and last, fourth stream is holding max values.
16234
16235 The filter accepts the following option:
16236
16237 @table @option
16238 @item planes
16239 Set which planes will be processed, unprocessed planes will be copied.
16240 By default value 0xf, all planes will be processed.
16241 @end table
16242
16243 For example if first stream pixel's component value is less then threshold value
16244 of pixel component from 2nd threshold stream, third stream value will picked,
16245 otherwise fourth stream pixel component value will be picked.
16246
16247 Using color source filter one can perform various types of thresholding:
16248
16249 @subsection Examples
16250
16251 @itemize
16252 @item
16253 Binary threshold, using gray color as threshold:
16254 @example
16255 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
16256 @end example
16257
16258 @item
16259 Inverted binary threshold, using gray color as threshold:
16260 @example
16261 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
16262 @end example
16263
16264 @item
16265 Truncate binary threshold, using gray color as threshold:
16266 @example
16267 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
16268 @end example
16269
16270 @item
16271 Threshold to zero, using gray color as threshold:
16272 @example
16273 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
16274 @end example
16275
16276 @item
16277 Inverted threshold to zero, using gray color as threshold:
16278 @example
16279 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
16280 @end example
16281 @end itemize
16282
16283 @section thumbnail
16284 Select the most representative frame in a given sequence of consecutive frames.
16285
16286 The filter accepts the following options:
16287
16288 @table @option
16289 @item n
16290 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
16291 will pick one of them, and then handle the next batch of @var{n} frames until
16292 the end. Default is @code{100}.
16293 @end table
16294
16295 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
16296 value will result in a higher memory usage, so a high value is not recommended.
16297
16298 @subsection Examples
16299
16300 @itemize
16301 @item
16302 Extract one picture each 50 frames:
16303 @example
16304 thumbnail=50
16305 @end example
16306
16307 @item
16308 Complete example of a thumbnail creation with @command{ffmpeg}:
16309 @example
16310 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
16311 @end example
16312 @end itemize
16313
16314 @section tile
16315
16316 Tile several successive frames together.
16317
16318 The filter accepts the following options:
16319
16320 @table @option
16321
16322 @item layout
16323 Set the grid size (i.e. the number of lines and columns). For the syntax of
16324 this option, check the
16325 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16326
16327 @item nb_frames
16328 Set the maximum number of frames to render in the given area. It must be less
16329 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
16330 the area will be used.
16331
16332 @item margin
16333 Set the outer border margin in pixels.
16334
16335 @item padding
16336 Set the inner border thickness (i.e. the number of pixels between frames). For
16337 more advanced padding options (such as having different values for the edges),
16338 refer to the pad video filter.
16339
16340 @item color
16341 Specify the color of the unused area. For the syntax of this option, check the
16342 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
16343 The default value of @var{color} is "black".
16344
16345 @item overlap
16346 Set the number of frames to overlap when tiling several successive frames together.
16347 The value must be between @code{0} and @var{nb_frames - 1}.
16348
16349 @item init_padding
16350 Set the number of frames to initially be empty before displaying first output frame.
16351 This controls how soon will one get first output frame.
16352 The value must be between @code{0} and @var{nb_frames - 1}.
16353 @end table
16354
16355 @subsection Examples
16356
16357 @itemize
16358 @item
16359 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
16360 @example
16361 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
16362 @end example
16363 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
16364 duplicating each output frame to accommodate the originally detected frame
16365 rate.
16366
16367 @item
16368 Display @code{5} pictures in an area of @code{3x2} frames,
16369 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
16370 mixed flat and named options:
16371 @example
16372 tile=3x2:nb_frames=5:padding=7:margin=2
16373 @end example
16374 @end itemize
16375
16376 @section tinterlace
16377
16378 Perform various types of temporal field interlacing.
16379
16380 Frames are counted starting from 1, so the first input frame is
16381 considered odd.
16382
16383 The filter accepts the following options:
16384
16385 @table @option
16386
16387 @item mode
16388 Specify the mode of the interlacing. This option can also be specified
16389 as a value alone. See below for a list of values for this option.
16390
16391 Available values are:
16392
16393 @table @samp
16394 @item merge, 0
16395 Move odd frames into the upper field, even into the lower field,
16396 generating a double height frame at half frame rate.
16397 @example
16398  ------> time
16399 Input:
16400 Frame 1         Frame 2         Frame 3         Frame 4
16401
16402 11111           22222           33333           44444
16403 11111           22222           33333           44444
16404 11111           22222           33333           44444
16405 11111           22222           33333           44444
16406
16407 Output:
16408 11111                           33333
16409 22222                           44444
16410 11111                           33333
16411 22222                           44444
16412 11111                           33333
16413 22222                           44444
16414 11111                           33333
16415 22222                           44444
16416 @end example
16417
16418 @item drop_even, 1
16419 Only output odd frames, even frames are dropped, generating a frame with
16420 unchanged height at half frame rate.
16421
16422 @example
16423  ------> time
16424 Input:
16425 Frame 1         Frame 2         Frame 3         Frame 4
16426
16427 11111           22222           33333           44444
16428 11111           22222           33333           44444
16429 11111           22222           33333           44444
16430 11111           22222           33333           44444
16431
16432 Output:
16433 11111                           33333
16434 11111                           33333
16435 11111                           33333
16436 11111                           33333
16437 @end example
16438
16439 @item drop_odd, 2
16440 Only output even frames, odd frames are dropped, generating a frame with
16441 unchanged height at half frame rate.
16442
16443 @example
16444  ------> time
16445 Input:
16446 Frame 1         Frame 2         Frame 3         Frame 4
16447
16448 11111           22222           33333           44444
16449 11111           22222           33333           44444
16450 11111           22222           33333           44444
16451 11111           22222           33333           44444
16452
16453 Output:
16454                 22222                           44444
16455                 22222                           44444
16456                 22222                           44444
16457                 22222                           44444
16458 @end example
16459
16460 @item pad, 3
16461 Expand each frame to full height, but pad alternate lines with black,
16462 generating a frame with double height at the same input frame rate.
16463
16464 @example
16465  ------> time
16466 Input:
16467 Frame 1         Frame 2         Frame 3         Frame 4
16468
16469 11111           22222           33333           44444
16470 11111           22222           33333           44444
16471 11111           22222           33333           44444
16472 11111           22222           33333           44444
16473
16474 Output:
16475 11111           .....           33333           .....
16476 .....           22222           .....           44444
16477 11111           .....           33333           .....
16478 .....           22222           .....           44444
16479 11111           .....           33333           .....
16480 .....           22222           .....           44444
16481 11111           .....           33333           .....
16482 .....           22222           .....           44444
16483 @end example
16484
16485
16486 @item interleave_top, 4
16487 Interleave the upper field from odd frames with the lower field from
16488 even frames, generating a frame with unchanged height at half frame rate.
16489
16490 @example
16491  ------> time
16492 Input:
16493 Frame 1         Frame 2         Frame 3         Frame 4
16494
16495 11111<-         22222           33333<-         44444
16496 11111           22222<-         33333           44444<-
16497 11111<-         22222           33333<-         44444
16498 11111           22222<-         33333           44444<-
16499
16500 Output:
16501 11111                           33333
16502 22222                           44444
16503 11111                           33333
16504 22222                           44444
16505 @end example
16506
16507
16508 @item interleave_bottom, 5
16509 Interleave the lower field from odd frames with the upper field from
16510 even frames, generating a frame with unchanged height at half frame rate.
16511
16512 @example
16513  ------> time
16514 Input:
16515 Frame 1         Frame 2         Frame 3         Frame 4
16516
16517 11111           22222<-         33333           44444<-
16518 11111<-         22222           33333<-         44444
16519 11111           22222<-         33333           44444<-
16520 11111<-         22222           33333<-         44444
16521
16522 Output:
16523 22222                           44444
16524 11111                           33333
16525 22222                           44444
16526 11111                           33333
16527 @end example
16528
16529
16530 @item interlacex2, 6
16531 Double frame rate with unchanged height. Frames are inserted each
16532 containing the second temporal field from the previous input frame and
16533 the first temporal field from the next input frame. This mode relies on
16534 the top_field_first flag. Useful for interlaced video displays with no
16535 field synchronisation.
16536
16537 @example
16538  ------> time
16539 Input:
16540 Frame 1         Frame 2         Frame 3         Frame 4
16541
16542 11111           22222           33333           44444
16543  11111           22222           33333           44444
16544 11111           22222           33333           44444
16545  11111           22222           33333           44444
16546
16547 Output:
16548 11111   22222   22222   33333   33333   44444   44444
16549  11111   11111   22222   22222   33333   33333   44444
16550 11111   22222   22222   33333   33333   44444   44444
16551  11111   11111   22222   22222   33333   33333   44444
16552 @end example
16553
16554
16555 @item mergex2, 7
16556 Move odd frames into the upper field, even into the lower field,
16557 generating a double height frame at same frame rate.
16558
16559 @example
16560  ------> time
16561 Input:
16562 Frame 1         Frame 2         Frame 3         Frame 4
16563
16564 11111           22222           33333           44444
16565 11111           22222           33333           44444
16566 11111           22222           33333           44444
16567 11111           22222           33333           44444
16568
16569 Output:
16570 11111           33333           33333           55555
16571 22222           22222           44444           44444
16572 11111           33333           33333           55555
16573 22222           22222           44444           44444
16574 11111           33333           33333           55555
16575 22222           22222           44444           44444
16576 11111           33333           33333           55555
16577 22222           22222           44444           44444
16578 @end example
16579
16580 @end table
16581
16582 Numeric values are deprecated but are accepted for backward
16583 compatibility reasons.
16584
16585 Default mode is @code{merge}.
16586
16587 @item flags
16588 Specify flags influencing the filter process.
16589
16590 Available value for @var{flags} is:
16591
16592 @table @option
16593 @item low_pass_filter, vlfp
16594 Enable linear vertical low-pass filtering in the filter.
16595 Vertical low-pass filtering is required when creating an interlaced
16596 destination from a progressive source which contains high-frequency
16597 vertical detail. Filtering will reduce interlace 'twitter' and Moire
16598 patterning.
16599
16600 @item complex_filter, cvlfp
16601 Enable complex vertical low-pass filtering.
16602 This will slightly less reduce interlace 'twitter' and Moire
16603 patterning but better retain detail and subjective sharpness impression.
16604
16605 @end table
16606
16607 Vertical low-pass filtering can only be enabled for @option{mode}
16608 @var{interleave_top} and @var{interleave_bottom}.
16609
16610 @end table
16611
16612 @section tmix
16613
16614 Mix successive video frames.
16615
16616 A description of the accepted options follows.
16617
16618 @table @option
16619 @item frames
16620 The number of successive frames to mix. If unspecified, it defaults to 3.
16621
16622 @item weights
16623 Specify weight of each input video frame.
16624 Each weight is separated by space. If number of weights is smaller than
16625 number of @var{frames} last specified weight will be used for all remaining
16626 unset weights.
16627
16628 @item scale
16629 Specify scale, if it is set it will be multiplied with sum
16630 of each weight multiplied with pixel values to give final destination
16631 pixel value. By default @var{scale} is auto scaled to sum of weights.
16632 @end table
16633
16634 @subsection Examples
16635
16636 @itemize
16637 @item
16638 Average 7 successive frames:
16639 @example
16640 tmix=frames=7:weights="1 1 1 1 1 1 1"
16641 @end example
16642
16643 @item
16644 Apply simple temporal convolution:
16645 @example
16646 tmix=frames=3:weights="-1 3 -1"
16647 @end example
16648
16649 @item
16650 Similar as above but only showing temporal differences:
16651 @example
16652 tmix=frames=3:weights="-1 2 -1":scale=1
16653 @end example
16654 @end itemize
16655
16656 @anchor{tonemap}
16657 @section tonemap
16658 Tone map colors from different dynamic ranges.
16659
16660 This filter expects data in single precision floating point, as it needs to
16661 operate on (and can output) out-of-range values. Another filter, such as
16662 @ref{zscale}, is needed to convert the resulting frame to a usable format.
16663
16664 The tonemapping algorithms implemented only work on linear light, so input
16665 data should be linearized beforehand (and possibly correctly tagged).
16666
16667 @example
16668 ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
16669 @end example
16670
16671 @subsection Options
16672 The filter accepts the following options.
16673
16674 @table @option
16675 @item tonemap
16676 Set the tone map algorithm to use.
16677
16678 Possible values are:
16679 @table @var
16680 @item none
16681 Do not apply any tone map, only desaturate overbright pixels.
16682
16683 @item clip
16684 Hard-clip any out-of-range values. Use it for perfect color accuracy for
16685 in-range values, while distorting out-of-range values.
16686
16687 @item linear
16688 Stretch the entire reference gamut to a linear multiple of the display.
16689
16690 @item gamma
16691 Fit a logarithmic transfer between the tone curves.
16692
16693 @item reinhard
16694 Preserve overall image brightness with a simple curve, using nonlinear
16695 contrast, which results in flattening details and degrading color accuracy.
16696
16697 @item hable
16698 Preserve both dark and bright details better than @var{reinhard}, at the cost
16699 of slightly darkening everything. Use it when detail preservation is more
16700 important than color and brightness accuracy.
16701
16702 @item mobius
16703 Smoothly map out-of-range values, while retaining contrast and colors for
16704 in-range material as much as possible. Use it when color accuracy is more
16705 important than detail preservation.
16706 @end table
16707
16708 Default is none.
16709
16710 @item param
16711 Tune the tone mapping algorithm.
16712
16713 This affects the following algorithms:
16714 @table @var
16715 @item none
16716 Ignored.
16717
16718 @item linear
16719 Specifies the scale factor to use while stretching.
16720 Default to 1.0.
16721
16722 @item gamma
16723 Specifies the exponent of the function.
16724 Default to 1.8.
16725
16726 @item clip
16727 Specify an extra linear coefficient to multiply into the signal before clipping.
16728 Default to 1.0.
16729
16730 @item reinhard
16731 Specify the local contrast coefficient at the display peak.
16732 Default to 0.5, which means that in-gamut values will be about half as bright
16733 as when clipping.
16734
16735 @item hable
16736 Ignored.
16737
16738 @item mobius
16739 Specify the transition point from linear to mobius transform. Every value
16740 below this point is guaranteed to be mapped 1:1. The higher the value, the
16741 more accurate the result will be, at the cost of losing bright details.
16742 Default to 0.3, which due to the steep initial slope still preserves in-range
16743 colors fairly accurately.
16744 @end table
16745
16746 @item desat
16747 Apply desaturation for highlights that exceed this level of brightness. The
16748 higher the parameter, the more color information will be preserved. This
16749 setting helps prevent unnaturally blown-out colors for super-highlights, by
16750 (smoothly) turning into white instead. This makes images feel more natural,
16751 at the cost of reducing information about out-of-range colors.
16752
16753 The default of 2.0 is somewhat conservative and will mostly just apply to
16754 skies or directly sunlit surfaces. A setting of 0.0 disables this option.
16755
16756 This option works only if the input frame has a supported color tag.
16757
16758 @item peak
16759 Override signal/nominal/reference peak with this value. Useful when the
16760 embedded peak information in display metadata is not reliable or when tone
16761 mapping from a lower range to a higher range.
16762 @end table
16763
16764 @section tpad
16765
16766 Temporarily pad video frames.
16767
16768 The filter accepts the following options:
16769
16770 @table @option
16771 @item start
16772 Specify number of delay frames before input video stream.
16773
16774 @item stop
16775 Specify number of padding frames after input video stream.
16776 Set to -1 to pad indefinitely.
16777
16778 @item start_mode
16779 Set kind of frames added to beginning of stream.
16780 Can be either @var{add} or @var{clone}.
16781 With @var{add} frames of solid-color are added.
16782 With @var{clone} frames are clones of first frame.
16783
16784 @item stop_mode
16785 Set kind of frames added to end of stream.
16786 Can be either @var{add} or @var{clone}.
16787 With @var{add} frames of solid-color are added.
16788 With @var{clone} frames are clones of last frame.
16789
16790 @item start_duration, stop_duration
16791 Specify the duration of the start/stop delay. See
16792 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
16793 for the accepted syntax.
16794 These options override @var{start} and @var{stop}.
16795
16796 @item color
16797 Specify the color of the padded area. For the syntax of this option,
16798 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
16799 manual,ffmpeg-utils}.
16800
16801 The default value of @var{color} is "black".
16802 @end table
16803
16804 @anchor{transpose}
16805 @section transpose
16806
16807 Transpose rows with columns in the input video and optionally flip it.
16808
16809 It accepts the following parameters:
16810
16811 @table @option
16812
16813 @item dir
16814 Specify the transposition direction.
16815
16816 Can assume the following values:
16817 @table @samp
16818 @item 0, 4, cclock_flip
16819 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
16820 @example
16821 L.R     L.l
16822 . . ->  . .
16823 l.r     R.r
16824 @end example
16825
16826 @item 1, 5, clock
16827 Rotate by 90 degrees clockwise, that is:
16828 @example
16829 L.R     l.L
16830 . . ->  . .
16831 l.r     r.R
16832 @end example
16833
16834 @item 2, 6, cclock
16835 Rotate by 90 degrees counterclockwise, that is:
16836 @example
16837 L.R     R.r
16838 . . ->  . .
16839 l.r     L.l
16840 @end example
16841
16842 @item 3, 7, clock_flip
16843 Rotate by 90 degrees clockwise and vertically flip, that is:
16844 @example
16845 L.R     r.R
16846 . . ->  . .
16847 l.r     l.L
16848 @end example
16849 @end table
16850
16851 For values between 4-7, the transposition is only done if the input
16852 video geometry is portrait and not landscape. These values are
16853 deprecated, the @code{passthrough} option should be used instead.
16854
16855 Numerical values are deprecated, and should be dropped in favor of
16856 symbolic constants.
16857
16858 @item passthrough
16859 Do not apply the transposition if the input geometry matches the one
16860 specified by the specified value. It accepts the following values:
16861 @table @samp
16862 @item none
16863 Always apply transposition.
16864 @item portrait
16865 Preserve portrait geometry (when @var{height} >= @var{width}).
16866 @item landscape
16867 Preserve landscape geometry (when @var{width} >= @var{height}).
16868 @end table
16869
16870 Default value is @code{none}.
16871 @end table
16872
16873 For example to rotate by 90 degrees clockwise and preserve portrait
16874 layout:
16875 @example
16876 transpose=dir=1:passthrough=portrait
16877 @end example
16878
16879 The command above can also be specified as:
16880 @example
16881 transpose=1:portrait
16882 @end example
16883
16884 @section transpose_npp
16885
16886 Transpose rows with columns in the input video and optionally flip it.
16887 For more in depth examples see the @ref{transpose} video filter, which shares mostly the same options.
16888
16889 It accepts the following parameters:
16890
16891 @table @option
16892
16893 @item dir
16894 Specify the transposition direction.
16895
16896 Can assume the following values:
16897 @table @samp
16898 @item cclock_flip
16899 Rotate by 90 degrees counterclockwise and vertically flip. (default)
16900
16901 @item clock
16902 Rotate by 90 degrees clockwise.
16903
16904 @item cclock
16905 Rotate by 90 degrees counterclockwise.
16906
16907 @item clock_flip
16908 Rotate by 90 degrees clockwise and vertically flip.
16909 @end table
16910
16911 @item passthrough
16912 Do not apply the transposition if the input geometry matches the one
16913 specified by the specified value. It accepts the following values:
16914 @table @samp
16915 @item none
16916 Always apply transposition. (default)
16917 @item portrait
16918 Preserve portrait geometry (when @var{height} >= @var{width}).
16919 @item landscape
16920 Preserve landscape geometry (when @var{width} >= @var{height}).
16921 @end table
16922
16923 @end table
16924
16925 @section trim
16926 Trim the input so that the output contains one continuous subpart of the input.
16927
16928 It accepts the following parameters:
16929 @table @option
16930 @item start
16931 Specify the time of the start of the kept section, i.e. the frame with the
16932 timestamp @var{start} will be the first frame in the output.
16933
16934 @item end
16935 Specify the time of the first frame that will be dropped, i.e. the frame
16936 immediately preceding the one with the timestamp @var{end} will be the last
16937 frame in the output.
16938
16939 @item start_pts
16940 This is the same as @var{start}, except this option sets the start timestamp
16941 in timebase units instead of seconds.
16942
16943 @item end_pts
16944 This is the same as @var{end}, except this option sets the end timestamp
16945 in timebase units instead of seconds.
16946
16947 @item duration
16948 The maximum duration of the output in seconds.
16949
16950 @item start_frame
16951 The number of the first frame that should be passed to the output.
16952
16953 @item end_frame
16954 The number of the first frame that should be dropped.
16955 @end table
16956
16957 @option{start}, @option{end}, and @option{duration} are expressed as time
16958 duration specifications; see
16959 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
16960 for the accepted syntax.
16961
16962 Note that the first two sets of the start/end options and the @option{duration}
16963 option look at the frame timestamp, while the _frame variants simply count the
16964 frames that pass through the filter. Also note that this filter does not modify
16965 the timestamps. If you wish for the output timestamps to start at zero, insert a
16966 setpts filter after the trim filter.
16967
16968 If multiple start or end options are set, this filter tries to be greedy and
16969 keep all the frames that match at least one of the specified constraints. To keep
16970 only the part that matches all the constraints at once, chain multiple trim
16971 filters.
16972
16973 The defaults are such that all the input is kept. So it is possible to set e.g.
16974 just the end values to keep everything before the specified time.
16975
16976 Examples:
16977 @itemize
16978 @item
16979 Drop everything except the second minute of input:
16980 @example
16981 ffmpeg -i INPUT -vf trim=60:120
16982 @end example
16983
16984 @item
16985 Keep only the first second:
16986 @example
16987 ffmpeg -i INPUT -vf trim=duration=1
16988 @end example
16989
16990 @end itemize
16991
16992 @section unpremultiply
16993 Apply alpha unpremultiply effect to input video stream using first plane
16994 of second stream as alpha.
16995
16996 Both streams must have same dimensions and same pixel format.
16997
16998 The filter accepts the following option:
16999
17000 @table @option
17001 @item planes
17002 Set which planes will be processed, unprocessed planes will be copied.
17003 By default value 0xf, all planes will be processed.
17004
17005 If the format has 1 or 2 components, then luma is bit 0.
17006 If the format has 3 or 4 components:
17007 for RGB formats bit 0 is green, bit 1 is blue and bit 2 is red;
17008 for YUV formats bit 0 is luma, bit 1 is chroma-U and bit 2 is chroma-V.
17009 If present, the alpha channel is always the last bit.
17010
17011 @item inplace
17012 Do not require 2nd input for processing, instead use alpha plane from input stream.
17013 @end table
17014
17015 @anchor{unsharp}
17016 @section unsharp
17017
17018 Sharpen or blur the input video.
17019
17020 It accepts the following parameters:
17021
17022 @table @option
17023 @item luma_msize_x, lx
17024 Set the luma matrix horizontal size. It must be an odd integer between
17025 3 and 23. The default value is 5.
17026
17027 @item luma_msize_y, ly
17028 Set the luma matrix vertical size. It must be an odd integer between 3
17029 and 23. The default value is 5.
17030
17031 @item luma_amount, la
17032 Set the luma effect strength. It must be a floating point number, reasonable
17033 values lay between -1.5 and 1.5.
17034
17035 Negative values will blur the input video, while positive values will
17036 sharpen it, a value of zero will disable the effect.
17037
17038 Default value is 1.0.
17039
17040 @item chroma_msize_x, cx
17041 Set the chroma matrix horizontal size. It must be an odd integer
17042 between 3 and 23. The default value is 5.
17043
17044 @item chroma_msize_y, cy
17045 Set the chroma matrix vertical size. It must be an odd integer
17046 between 3 and 23. The default value is 5.
17047
17048 @item chroma_amount, ca
17049 Set the chroma effect strength. It must be a floating point number, reasonable
17050 values lay between -1.5 and 1.5.
17051
17052 Negative values will blur the input video, while positive values will
17053 sharpen it, a value of zero will disable the effect.
17054
17055 Default value is 0.0.
17056
17057 @end table
17058
17059 All parameters are optional and default to the equivalent of the
17060 string '5:5:1.0:5:5:0.0'.
17061
17062 @subsection Examples
17063
17064 @itemize
17065 @item
17066 Apply strong luma sharpen effect:
17067 @example
17068 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
17069 @end example
17070
17071 @item
17072 Apply a strong blur of both luma and chroma parameters:
17073 @example
17074 unsharp=7:7:-2:7:7:-2
17075 @end example
17076 @end itemize
17077
17078 @section uspp
17079
17080 Apply ultra slow/simple postprocessing filter that compresses and decompresses
17081 the image at several (or - in the case of @option{quality} level @code{8} - all)
17082 shifts and average the results.
17083
17084 The way this differs from the behavior of spp is that uspp actually encodes &
17085 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
17086 DCT similar to MJPEG.
17087
17088 The filter accepts the following options:
17089
17090 @table @option
17091 @item quality
17092 Set quality. This option defines the number of levels for averaging. It accepts
17093 an integer in the range 0-8. If set to @code{0}, the filter will have no
17094 effect. A value of @code{8} means the higher quality. For each increment of
17095 that value the speed drops by a factor of approximately 2.  Default value is
17096 @code{3}.
17097
17098 @item qp
17099 Force a constant quantization parameter. If not set, the filter will use the QP
17100 from the video stream (if available).
17101 @end table
17102
17103 @section vaguedenoiser
17104
17105 Apply a wavelet based denoiser.
17106
17107 It transforms each frame from the video input into the wavelet domain,
17108 using Cohen-Daubechies-Feauveau 9/7. Then it applies some filtering to
17109 the obtained coefficients. It does an inverse wavelet transform after.
17110 Due to wavelet properties, it should give a nice smoothed result, and
17111 reduced noise, without blurring picture features.
17112
17113 This filter accepts the following options:
17114
17115 @table @option
17116 @item threshold
17117 The filtering strength. The higher, the more filtered the video will be.
17118 Hard thresholding can use a higher threshold than soft thresholding
17119 before the video looks overfiltered. Default value is 2.
17120
17121 @item method
17122 The filtering method the filter will use.
17123
17124 It accepts the following values:
17125 @table @samp
17126 @item hard
17127 All values under the threshold will be zeroed.
17128
17129 @item soft
17130 All values under the threshold will be zeroed. All values above will be
17131 reduced by the threshold.
17132
17133 @item garrote
17134 Scales or nullifies coefficients - intermediary between (more) soft and
17135 (less) hard thresholding.
17136 @end table
17137
17138 Default is garrote.
17139
17140 @item nsteps
17141 Number of times, the wavelet will decompose the picture. Picture can't
17142 be decomposed beyond a particular point (typically, 8 for a 640x480
17143 frame - as 2^9 = 512 > 480). Valid values are integers between 1 and 32. Default value is 6.
17144
17145 @item percent
17146 Partial of full denoising (limited coefficients shrinking), from 0 to 100. Default value is 85.
17147
17148 @item planes
17149 A list of the planes to process. By default all planes are processed.
17150 @end table
17151
17152 @section vectorscope
17153
17154 Display 2 color component values in the two dimensional graph (which is called
17155 a vectorscope).
17156
17157 This filter accepts the following options:
17158
17159 @table @option
17160 @item mode, m
17161 Set vectorscope mode.
17162
17163 It accepts the following values:
17164 @table @samp
17165 @item gray
17166 Gray values are displayed on graph, higher brightness means more pixels have
17167 same component color value on location in graph. This is the default mode.
17168
17169 @item color
17170 Gray values are displayed on graph. Surrounding pixels values which are not
17171 present in video frame are drawn in gradient of 2 color components which are
17172 set by option @code{x} and @code{y}. The 3rd color component is static.
17173
17174 @item color2
17175 Actual color components values present in video frame are displayed on graph.
17176
17177 @item color3
17178 Similar as color2 but higher frequency of same values @code{x} and @code{y}
17179 on graph increases value of another color component, which is luminance by
17180 default values of @code{x} and @code{y}.
17181
17182 @item color4
17183 Actual colors present in video frame are displayed on graph. If two different
17184 colors map to same position on graph then color with higher value of component
17185 not present in graph is picked.
17186
17187 @item color5
17188 Gray values are displayed on graph. Similar to @code{color} but with 3rd color
17189 component picked from radial gradient.
17190 @end table
17191
17192 @item x
17193 Set which color component will be represented on X-axis. Default is @code{1}.
17194
17195 @item y
17196 Set which color component will be represented on Y-axis. Default is @code{2}.
17197
17198 @item intensity, i
17199 Set intensity, used by modes: gray, color, color3 and color5 for increasing brightness
17200 of color component which represents frequency of (X, Y) location in graph.
17201
17202 @item envelope, e
17203 @table @samp
17204 @item none
17205 No envelope, this is default.
17206
17207 @item instant
17208 Instant envelope, even darkest single pixel will be clearly highlighted.
17209
17210 @item peak
17211 Hold maximum and minimum values presented in graph over time. This way you
17212 can still spot out of range values without constantly looking at vectorscope.
17213
17214 @item peak+instant
17215 Peak and instant envelope combined together.
17216 @end table
17217
17218 @item graticule, g
17219 Set what kind of graticule to draw.
17220 @table @samp
17221 @item none
17222 @item green
17223 @item color
17224 @end table
17225
17226 @item opacity, o
17227 Set graticule opacity.
17228
17229 @item flags, f
17230 Set graticule flags.
17231
17232 @table @samp
17233 @item white
17234 Draw graticule for white point.
17235
17236 @item black
17237 Draw graticule for black point.
17238
17239 @item name
17240 Draw color points short names.
17241 @end table
17242
17243 @item bgopacity, b
17244 Set background opacity.
17245
17246 @item lthreshold, l
17247 Set low threshold for color component not represented on X or Y axis.
17248 Values lower than this value will be ignored. Default is 0.
17249 Note this value is multiplied with actual max possible value one pixel component
17250 can have. So for 8-bit input and low threshold value of 0.1 actual threshold
17251 is 0.1 * 255 = 25.
17252
17253 @item hthreshold, h
17254 Set high threshold for color component not represented on X or Y axis.
17255 Values higher than this value will be ignored. Default is 1.
17256 Note this value is multiplied with actual max possible value one pixel component
17257 can have. So for 8-bit input and high threshold value of 0.9 actual threshold
17258 is 0.9 * 255 = 230.
17259
17260 @item colorspace, c
17261 Set what kind of colorspace to use when drawing graticule.
17262 @table @samp
17263 @item auto
17264 @item 601
17265 @item 709
17266 @end table
17267 Default is auto.
17268 @end table
17269
17270 @anchor{vidstabdetect}
17271 @section vidstabdetect
17272
17273 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
17274 @ref{vidstabtransform} for pass 2.
17275
17276 This filter generates a file with relative translation and rotation
17277 transform information about subsequent frames, which is then used by
17278 the @ref{vidstabtransform} filter.
17279
17280 To enable compilation of this filter you need to configure FFmpeg with
17281 @code{--enable-libvidstab}.
17282
17283 This filter accepts the following options:
17284
17285 @table @option
17286 @item result
17287 Set the path to the file used to write the transforms information.
17288 Default value is @file{transforms.trf}.
17289
17290 @item shakiness
17291 Set how shaky the video is and how quick the camera is. It accepts an
17292 integer in the range 1-10, a value of 1 means little shakiness, a
17293 value of 10 means strong shakiness. Default value is 5.
17294
17295 @item accuracy
17296 Set the accuracy of the detection process. It must be a value in the
17297 range 1-15. A value of 1 means low accuracy, a value of 15 means high
17298 accuracy. Default value is 15.
17299
17300 @item stepsize
17301 Set stepsize of the search process. The region around minimum is
17302 scanned with 1 pixel resolution. Default value is 6.
17303
17304 @item mincontrast
17305 Set minimum contrast. Below this value a local measurement field is
17306 discarded. Must be a floating point value in the range 0-1. Default
17307 value is 0.3.
17308
17309 @item tripod
17310 Set reference frame number for tripod mode.
17311
17312 If enabled, the motion of the frames is compared to a reference frame
17313 in the filtered stream, identified by the specified number. The idea
17314 is to compensate all movements in a more-or-less static scene and keep
17315 the camera view absolutely still.
17316
17317 If set to 0, it is disabled. The frames are counted starting from 1.
17318
17319 @item show
17320 Show fields and transforms in the resulting frames. It accepts an
17321 integer in the range 0-2. Default value is 0, which disables any
17322 visualization.
17323 @end table
17324
17325 @subsection Examples
17326
17327 @itemize
17328 @item
17329 Use default values:
17330 @example
17331 vidstabdetect
17332 @end example
17333
17334 @item
17335 Analyze strongly shaky movie and put the results in file
17336 @file{mytransforms.trf}:
17337 @example
17338 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
17339 @end example
17340
17341 @item
17342 Visualize the result of internal transformations in the resulting
17343 video:
17344 @example
17345 vidstabdetect=show=1
17346 @end example
17347
17348 @item
17349 Analyze a video with medium shakiness using @command{ffmpeg}:
17350 @example
17351 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
17352 @end example
17353 @end itemize
17354
17355 @anchor{vidstabtransform}
17356 @section vidstabtransform
17357
17358 Video stabilization/deshaking: pass 2 of 2,
17359 see @ref{vidstabdetect} for pass 1.
17360
17361 Read a file with transform information for each frame and
17362 apply/compensate them. Together with the @ref{vidstabdetect}
17363 filter this can be used to deshake videos. See also
17364 @url{http://public.hronopik.de/vid.stab}. It is important to also use
17365 the @ref{unsharp} filter, see below.
17366
17367 To enable compilation of this filter you need to configure FFmpeg with
17368 @code{--enable-libvidstab}.
17369
17370 @subsection Options
17371
17372 @table @option
17373 @item input
17374 Set path to the file used to read the transforms. Default value is
17375 @file{transforms.trf}.
17376
17377 @item smoothing
17378 Set the number of frames (value*2 + 1) used for lowpass filtering the
17379 camera movements. Default value is 10.
17380
17381 For example a number of 10 means that 21 frames are used (10 in the
17382 past and 10 in the future) to smoothen the motion in the video. A
17383 larger value leads to a smoother video, but limits the acceleration of
17384 the camera (pan/tilt movements). 0 is a special case where a static
17385 camera is simulated.
17386
17387 @item optalgo
17388 Set the camera path optimization algorithm.
17389
17390 Accepted values are:
17391 @table @samp
17392 @item gauss
17393 gaussian kernel low-pass filter on camera motion (default)
17394 @item avg
17395 averaging on transformations
17396 @end table
17397
17398 @item maxshift
17399 Set maximal number of pixels to translate frames. Default value is -1,
17400 meaning no limit.
17401
17402 @item maxangle
17403 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
17404 value is -1, meaning no limit.
17405
17406 @item crop
17407 Specify how to deal with borders that may be visible due to movement
17408 compensation.
17409
17410 Available values are:
17411 @table @samp
17412 @item keep
17413 keep image information from previous frame (default)
17414 @item black
17415 fill the border black
17416 @end table
17417
17418 @item invert
17419 Invert transforms if set to 1. Default value is 0.
17420
17421 @item relative
17422 Consider transforms as relative to previous frame if set to 1,
17423 absolute if set to 0. Default value is 0.
17424
17425 @item zoom
17426 Set percentage to zoom. A positive value will result in a zoom-in
17427 effect, a negative value in a zoom-out effect. Default value is 0 (no
17428 zoom).
17429
17430 @item optzoom
17431 Set optimal zooming to avoid borders.
17432
17433 Accepted values are:
17434 @table @samp
17435 @item 0
17436 disabled
17437 @item 1
17438 optimal static zoom value is determined (only very strong movements
17439 will lead to visible borders) (default)
17440 @item 2
17441 optimal adaptive zoom value is determined (no borders will be
17442 visible), see @option{zoomspeed}
17443 @end table
17444
17445 Note that the value given at zoom is added to the one calculated here.
17446
17447 @item zoomspeed
17448 Set percent to zoom maximally each frame (enabled when
17449 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
17450 0.25.
17451
17452 @item interpol
17453 Specify type of interpolation.
17454
17455 Available values are:
17456 @table @samp
17457 @item no
17458 no interpolation
17459 @item linear
17460 linear only horizontal
17461 @item bilinear
17462 linear in both directions (default)
17463 @item bicubic
17464 cubic in both directions (slow)
17465 @end table
17466
17467 @item tripod
17468 Enable virtual tripod mode if set to 1, which is equivalent to
17469 @code{relative=0:smoothing=0}. Default value is 0.
17470
17471 Use also @code{tripod} option of @ref{vidstabdetect}.
17472
17473 @item debug
17474 Increase log verbosity if set to 1. Also the detected global motions
17475 are written to the temporary file @file{global_motions.trf}. Default
17476 value is 0.
17477 @end table
17478
17479 @subsection Examples
17480
17481 @itemize
17482 @item
17483 Use @command{ffmpeg} for a typical stabilization with default values:
17484 @example
17485 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
17486 @end example
17487
17488 Note the use of the @ref{unsharp} filter which is always recommended.
17489
17490 @item
17491 Zoom in a bit more and load transform data from a given file:
17492 @example
17493 vidstabtransform=zoom=5:input="mytransforms.trf"
17494 @end example
17495
17496 @item
17497 Smoothen the video even more:
17498 @example
17499 vidstabtransform=smoothing=30
17500 @end example
17501 @end itemize
17502
17503 @section vflip
17504
17505 Flip the input video vertically.
17506
17507 For example, to vertically flip a video with @command{ffmpeg}:
17508 @example
17509 ffmpeg -i in.avi -vf "vflip" out.avi
17510 @end example
17511
17512 @section vfrdet
17513
17514 Detect variable frame rate video.
17515
17516 This filter tries to detect if the input is variable or constant frame rate.
17517
17518 At end it will output number of frames detected as having variable delta pts,
17519 and ones with constant delta pts.
17520 If there was frames with variable delta, than it will also show min and max delta
17521 encountered.
17522
17523 @section vibrance
17524
17525 Boost or alter saturation.
17526
17527 The filter accepts the following options:
17528 @table @option
17529 @item intensity
17530 Set strength of boost if positive value or strength of alter if negative value.
17531 Default is 0. Allowed range is from -2 to 2.
17532
17533 @item rbal
17534 Set the red balance. Default is 1. Allowed range is from -10 to 10.
17535
17536 @item gbal
17537 Set the green balance. Default is 1. Allowed range is from -10 to 10.
17538
17539 @item bbal
17540 Set the blue balance. Default is 1. Allowed range is from -10 to 10.
17541
17542 @item rlum
17543 Set the red luma coefficient.
17544
17545 @item glum
17546 Set the green luma coefficient.
17547
17548 @item blum
17549 Set the blue luma coefficient.
17550 @end table
17551
17552 @anchor{vignette}
17553 @section vignette
17554
17555 Make or reverse a natural vignetting effect.
17556
17557 The filter accepts the following options:
17558
17559 @table @option
17560 @item angle, a
17561 Set lens angle expression as a number of radians.
17562
17563 The value is clipped in the @code{[0,PI/2]} range.
17564
17565 Default value: @code{"PI/5"}
17566
17567 @item x0
17568 @item y0
17569 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
17570 by default.
17571
17572 @item mode
17573 Set forward/backward mode.
17574
17575 Available modes are:
17576 @table @samp
17577 @item forward
17578 The larger the distance from the central point, the darker the image becomes.
17579
17580 @item backward
17581 The larger the distance from the central point, the brighter the image becomes.
17582 This can be used to reverse a vignette effect, though there is no automatic
17583 detection to extract the lens @option{angle} and other settings (yet). It can
17584 also be used to create a burning effect.
17585 @end table
17586
17587 Default value is @samp{forward}.
17588
17589 @item eval
17590 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
17591
17592 It accepts the following values:
17593 @table @samp
17594 @item init
17595 Evaluate expressions only once during the filter initialization.
17596
17597 @item frame
17598 Evaluate expressions for each incoming frame. This is way slower than the
17599 @samp{init} mode since it requires all the scalers to be re-computed, but it
17600 allows advanced dynamic expressions.
17601 @end table
17602
17603 Default value is @samp{init}.
17604
17605 @item dither
17606 Set dithering to reduce the circular banding effects. Default is @code{1}
17607 (enabled).
17608
17609 @item aspect
17610 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
17611 Setting this value to the SAR of the input will make a rectangular vignetting
17612 following the dimensions of the video.
17613
17614 Default is @code{1/1}.
17615 @end table
17616
17617 @subsection Expressions
17618
17619 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
17620 following parameters.
17621
17622 @table @option
17623 @item w
17624 @item h
17625 input width and height
17626
17627 @item n
17628 the number of input frame, starting from 0
17629
17630 @item pts
17631 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
17632 @var{TB} units, NAN if undefined
17633
17634 @item r
17635 frame rate of the input video, NAN if the input frame rate is unknown
17636
17637 @item t
17638 the PTS (Presentation TimeStamp) of the filtered video frame,
17639 expressed in seconds, NAN if undefined
17640
17641 @item tb
17642 time base of the input video
17643 @end table
17644
17645
17646 @subsection Examples
17647
17648 @itemize
17649 @item
17650 Apply simple strong vignetting effect:
17651 @example
17652 vignette=PI/4
17653 @end example
17654
17655 @item
17656 Make a flickering vignetting:
17657 @example
17658 vignette='PI/4+random(1)*PI/50':eval=frame
17659 @end example
17660
17661 @end itemize
17662
17663 @section vmafmotion
17664
17665 Obtain the average vmaf motion score of a video.
17666 It is one of the component filters of VMAF.
17667
17668 The obtained average motion score is printed through the logging system.
17669
17670 In the below example the input file @file{ref.mpg} is being processed and score
17671 is computed.
17672
17673 @example
17674 ffmpeg -i ref.mpg -lavfi vmafmotion -f null -
17675 @end example
17676
17677 @section vstack
17678 Stack input videos vertically.
17679
17680 All streams must be of same pixel format and of same width.
17681
17682 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
17683 to create same output.
17684
17685 The filter accept the following option:
17686
17687 @table @option
17688 @item inputs
17689 Set number of input streams. Default is 2.
17690
17691 @item shortest
17692 If set to 1, force the output to terminate when the shortest input
17693 terminates. Default value is 0.
17694 @end table
17695
17696 @section w3fdif
17697
17698 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
17699 Deinterlacing Filter").
17700
17701 Based on the process described by Martin Weston for BBC R&D, and
17702 implemented based on the de-interlace algorithm written by Jim
17703 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
17704 uses filter coefficients calculated by BBC R&D.
17705
17706 There are two sets of filter coefficients, so called "simple":
17707 and "complex". Which set of filter coefficients is used can
17708 be set by passing an optional parameter:
17709
17710 @table @option
17711 @item filter
17712 Set the interlacing filter coefficients. Accepts one of the following values:
17713
17714 @table @samp
17715 @item simple
17716 Simple filter coefficient set.
17717 @item complex
17718 More-complex filter coefficient set.
17719 @end table
17720 Default value is @samp{complex}.
17721
17722 @item deint
17723 Specify which frames to deinterlace. Accept one of the following values:
17724
17725 @table @samp
17726 @item all
17727 Deinterlace all frames,
17728 @item interlaced
17729 Only deinterlace frames marked as interlaced.
17730 @end table
17731
17732 Default value is @samp{all}.
17733 @end table
17734
17735 @section waveform
17736 Video waveform monitor.
17737
17738 The waveform monitor plots color component intensity. By default luminance
17739 only. Each column of the waveform corresponds to a column of pixels in the
17740 source video.
17741
17742 It accepts the following options:
17743
17744 @table @option
17745 @item mode, m
17746 Can be either @code{row}, or @code{column}. Default is @code{column}.
17747 In row mode, the graph on the left side represents color component value 0 and
17748 the right side represents value = 255. In column mode, the top side represents
17749 color component value = 0 and bottom side represents value = 255.
17750
17751 @item intensity, i
17752 Set intensity. Smaller values are useful to find out how many values of the same
17753 luminance are distributed across input rows/columns.
17754 Default value is @code{0.04}. Allowed range is [0, 1].
17755
17756 @item mirror, r
17757 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
17758 In mirrored mode, higher values will be represented on the left
17759 side for @code{row} mode and at the top for @code{column} mode. Default is
17760 @code{1} (mirrored).
17761
17762 @item display, d
17763 Set display mode.
17764 It accepts the following values:
17765 @table @samp
17766 @item overlay
17767 Presents information identical to that in the @code{parade}, except
17768 that the graphs representing color components are superimposed directly
17769 over one another.
17770
17771 This display mode makes it easier to spot relative differences or similarities
17772 in overlapping areas of the color components that are supposed to be identical,
17773 such as neutral whites, grays, or blacks.
17774
17775 @item stack
17776 Display separate graph for the color components side by side in
17777 @code{row} mode or one below the other in @code{column} mode.
17778
17779 @item parade
17780 Display separate graph for the color components side by side in
17781 @code{column} mode or one below the other in @code{row} mode.
17782
17783 Using this display mode makes it easy to spot color casts in the highlights
17784 and shadows of an image, by comparing the contours of the top and the bottom
17785 graphs of each waveform. Since whites, grays, and blacks are characterized
17786 by exactly equal amounts of red, green, and blue, neutral areas of the picture
17787 should display three waveforms of roughly equal width/height. If not, the
17788 correction is easy to perform by making level adjustments the three waveforms.
17789 @end table
17790 Default is @code{stack}.
17791
17792 @item components, c
17793 Set which color components to display. Default is 1, which means only luminance
17794 or red color component if input is in RGB colorspace. If is set for example to
17795 7 it will display all 3 (if) available color components.
17796
17797 @item envelope, e
17798 @table @samp
17799 @item none
17800 No envelope, this is default.
17801
17802 @item instant
17803 Instant envelope, minimum and maximum values presented in graph will be easily
17804 visible even with small @code{step} value.
17805
17806 @item peak
17807 Hold minimum and maximum values presented in graph across time. This way you
17808 can still spot out of range values without constantly looking at waveforms.
17809
17810 @item peak+instant
17811 Peak and instant envelope combined together.
17812 @end table
17813
17814 @item filter, f
17815 @table @samp
17816 @item lowpass
17817 No filtering, this is default.
17818
17819 @item flat
17820 Luma and chroma combined together.
17821
17822 @item aflat
17823 Similar as above, but shows difference between blue and red chroma.
17824
17825 @item xflat
17826 Similar as above, but use different colors.
17827
17828 @item chroma
17829 Displays only chroma.
17830
17831 @item color
17832 Displays actual color value on waveform.
17833
17834 @item acolor
17835 Similar as above, but with luma showing frequency of chroma values.
17836 @end table
17837
17838 @item graticule, g
17839 Set which graticule to display.
17840
17841 @table @samp
17842 @item none
17843 Do not display graticule.
17844
17845 @item green
17846 Display green graticule showing legal broadcast ranges.
17847
17848 @item orange
17849 Display orange graticule showing legal broadcast ranges.
17850 @end table
17851
17852 @item opacity, o
17853 Set graticule opacity.
17854
17855 @item flags, fl
17856 Set graticule flags.
17857
17858 @table @samp
17859 @item numbers
17860 Draw numbers above lines. By default enabled.
17861
17862 @item dots
17863 Draw dots instead of lines.
17864 @end table
17865
17866 @item scale, s
17867 Set scale used for displaying graticule.
17868
17869 @table @samp
17870 @item digital
17871 @item millivolts
17872 @item ire
17873 @end table
17874 Default is digital.
17875
17876 @item bgopacity, b
17877 Set background opacity.
17878 @end table
17879
17880 @section weave, doubleweave
17881
17882 The @code{weave} takes a field-based video input and join
17883 each two sequential fields into single frame, producing a new double
17884 height clip with half the frame rate and half the frame count.
17885
17886 The @code{doubleweave} works same as @code{weave} but without
17887 halving frame rate and frame count.
17888
17889 It accepts the following option:
17890
17891 @table @option
17892 @item first_field
17893 Set first field. Available values are:
17894
17895 @table @samp
17896 @item top, t
17897 Set the frame as top-field-first.
17898
17899 @item bottom, b
17900 Set the frame as bottom-field-first.
17901 @end table
17902 @end table
17903
17904 @subsection Examples
17905
17906 @itemize
17907 @item
17908 Interlace video using @ref{select} and @ref{separatefields} filter:
17909 @example
17910 separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
17911 @end example
17912 @end itemize
17913
17914 @section xbr
17915 Apply the xBR high-quality magnification filter which is designed for pixel
17916 art. It follows a set of edge-detection rules, see
17917 @url{https://forums.libretro.com/t/xbr-algorithm-tutorial/123}.
17918
17919 It accepts the following option:
17920
17921 @table @option
17922 @item n
17923 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
17924 @code{3xBR} and @code{4} for @code{4xBR}.
17925 Default is @code{3}.
17926 @end table
17927
17928 @section xstack
17929 Stack video inputs into custom layout.
17930
17931 All streams must be of same pixel format.
17932
17933 The filter accept the following option:
17934
17935 @table @option
17936 @item inputs
17937 Set number of input streams. Default is 2.
17938
17939 @item layout
17940 Specify layout of inputs.
17941 This option requires the desired layout configuration to be explicitly set by the user.
17942 This sets position of each video input in output. Each input
17943 is separated by '|'.
17944 The first number represents the column, and the second number represents the row.
17945 Numbers start at 0 and are separated by '_'. Optionally one can use wX and hX,
17946 where X is video input from which to take width or height.
17947 Multiple values can be used when separated by '+'. In such
17948 case values are summed together.
17949
17950 @item shortest
17951 If set to 1, force the output to terminate when the shortest input
17952 terminates. Default value is 0.
17953 @end table
17954
17955 @subsection Examples
17956
17957 @itemize
17958 @item
17959 Display 4 inputs into 2x2 grid,
17960 note that if inputs are of different sizes unused gaps might appear,
17961 as not all of output video is used.
17962 @example
17963 xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0
17964 @end example
17965
17966 @item
17967 Display 4 inputs into 1x4 grid,
17968 note that if inputs are of different sizes unused gaps might appear,
17969 as not all of output video is used.
17970 @example
17971 xstack=inputs=4:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2
17972 @end example
17973
17974 @item
17975 Display 9 inputs into 3x3 grid,
17976 note that if inputs are of different sizes unused gaps might appear,
17977 as not all of output video is used.
17978 @example
17979 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
17980 @end example
17981 @end itemize
17982
17983 @anchor{yadif}
17984 @section yadif
17985
17986 Deinterlace the input video ("yadif" means "yet another deinterlacing
17987 filter").
17988
17989 It accepts the following parameters:
17990
17991
17992 @table @option
17993
17994 @item mode
17995 The interlacing mode to adopt. It accepts one of the following values:
17996
17997 @table @option
17998 @item 0, send_frame
17999 Output one frame for each frame.
18000 @item 1, send_field
18001 Output one frame for each field.
18002 @item 2, send_frame_nospatial
18003 Like @code{send_frame}, but it skips the spatial interlacing check.
18004 @item 3, send_field_nospatial
18005 Like @code{send_field}, but it skips the spatial interlacing check.
18006 @end table
18007
18008 The default value is @code{send_frame}.
18009
18010 @item parity
18011 The picture field parity assumed for the input interlaced video. It accepts one
18012 of the following values:
18013
18014 @table @option
18015 @item 0, tff
18016 Assume the top field is first.
18017 @item 1, bff
18018 Assume the bottom field is first.
18019 @item -1, auto
18020 Enable automatic detection of field parity.
18021 @end table
18022
18023 The default value is @code{auto}.
18024 If the interlacing is unknown or the decoder does not export this information,
18025 top field first will be assumed.
18026
18027 @item deint
18028 Specify which frames to deinterlace. Accept one of the following
18029 values:
18030
18031 @table @option
18032 @item 0, all
18033 Deinterlace all frames.
18034 @item 1, interlaced
18035 Only deinterlace frames marked as interlaced.
18036 @end table
18037
18038 The default value is @code{all}.
18039 @end table
18040
18041 @section yadif_cuda
18042
18043 Deinterlace the input video using the @ref{yadif} algorithm, but implemented
18044 in CUDA so that it can work as part of a GPU accelerated pipeline with nvdec
18045 and/or nvenc.
18046
18047 It accepts the following parameters:
18048
18049
18050 @table @option
18051
18052 @item mode
18053 The interlacing mode to adopt. It accepts one of the following values:
18054
18055 @table @option
18056 @item 0, send_frame
18057 Output one frame for each frame.
18058 @item 1, send_field
18059 Output one frame for each field.
18060 @item 2, send_frame_nospatial
18061 Like @code{send_frame}, but it skips the spatial interlacing check.
18062 @item 3, send_field_nospatial
18063 Like @code{send_field}, but it skips the spatial interlacing check.
18064 @end table
18065
18066 The default value is @code{send_frame}.
18067
18068 @item parity
18069 The picture field parity assumed for the input interlaced video. It accepts one
18070 of the following values:
18071
18072 @table @option
18073 @item 0, tff
18074 Assume the top field is first.
18075 @item 1, bff
18076 Assume the bottom field is first.
18077 @item -1, auto
18078 Enable automatic detection of field parity.
18079 @end table
18080
18081 The default value is @code{auto}.
18082 If the interlacing is unknown or the decoder does not export this information,
18083 top field first will be assumed.
18084
18085 @item deint
18086 Specify which frames to deinterlace. Accept one of the following
18087 values:
18088
18089 @table @option
18090 @item 0, all
18091 Deinterlace all frames.
18092 @item 1, interlaced
18093 Only deinterlace frames marked as interlaced.
18094 @end table
18095
18096 The default value is @code{all}.
18097 @end table
18098
18099 @section zoompan
18100
18101 Apply Zoom & Pan effect.
18102
18103 This filter accepts the following options:
18104
18105 @table @option
18106 @item zoom, z
18107 Set the zoom expression. Default is 1.
18108
18109 @item x
18110 @item y
18111 Set the x and y expression. Default is 0.
18112
18113 @item d
18114 Set the duration expression in number of frames.
18115 This sets for how many number of frames effect will last for
18116 single input image.
18117
18118 @item s
18119 Set the output image size, default is 'hd720'.
18120
18121 @item fps
18122 Set the output frame rate, default is '25'.
18123 @end table
18124
18125 Each expression can contain the following constants:
18126
18127 @table @option
18128 @item in_w, iw
18129 Input width.
18130
18131 @item in_h, ih
18132 Input height.
18133
18134 @item out_w, ow
18135 Output width.
18136
18137 @item out_h, oh
18138 Output height.
18139
18140 @item in
18141 Input frame count.
18142
18143 @item on
18144 Output frame count.
18145
18146 @item x
18147 @item y
18148 Last calculated 'x' and 'y' position from 'x' and 'y' expression
18149 for current input frame.
18150
18151 @item px
18152 @item py
18153 'x' and 'y' of last output frame of previous input frame or 0 when there was
18154 not yet such frame (first input frame).
18155
18156 @item zoom
18157 Last calculated zoom from 'z' expression for current input frame.
18158
18159 @item pzoom
18160 Last calculated zoom of last output frame of previous input frame.
18161
18162 @item duration
18163 Number of output frames for current input frame. Calculated from 'd' expression
18164 for each input frame.
18165
18166 @item pduration
18167 number of output frames created for previous input frame
18168
18169 @item a
18170 Rational number: input width / input height
18171
18172 @item sar
18173 sample aspect ratio
18174
18175 @item dar
18176 display aspect ratio
18177
18178 @end table
18179
18180 @subsection Examples
18181
18182 @itemize
18183 @item
18184 Zoom-in up to 1.5 and pan at same time to some spot near center of picture:
18185 @example
18186 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
18187 @end example
18188
18189 @item
18190 Zoom-in up to 1.5 and pan always at center of picture:
18191 @example
18192 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
18193 @end example
18194
18195 @item
18196 Same as above but without pausing:
18197 @example
18198 zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
18199 @end example
18200 @end itemize
18201
18202 @anchor{zscale}
18203 @section zscale
18204 Scale (resize) the input video, using the z.lib library:
18205 @url{https://github.com/sekrit-twc/zimg}. To enable compilation of this
18206 filter, you need to configure FFmpeg with @code{--enable-libzimg}.
18207
18208 The zscale filter forces the output display aspect ratio to be the same
18209 as the input, by changing the output sample aspect ratio.
18210
18211 If the input image format is different from the format requested by
18212 the next filter, the zscale filter will convert the input to the
18213 requested format.
18214
18215 @subsection Options
18216 The filter accepts the following options.
18217
18218 @table @option
18219 @item width, w
18220 @item height, h
18221 Set the output video dimension expression. Default value is the input
18222 dimension.
18223
18224 If the @var{width} or @var{w} value is 0, the input width is used for
18225 the output. If the @var{height} or @var{h} value is 0, the input height
18226 is used for the output.
18227
18228 If one and only one of the values is -n with n >= 1, the zscale filter
18229 will use a value that maintains the aspect ratio of the input image,
18230 calculated from the other specified dimension. After that it will,
18231 however, make sure that the calculated dimension is divisible by n and
18232 adjust the value if necessary.
18233
18234 If both values are -n with n >= 1, the behavior will be identical to
18235 both values being set to 0 as previously detailed.
18236
18237 See below for the list of accepted constants for use in the dimension
18238 expression.
18239
18240 @item size, s
18241 Set the video size. For the syntax of this option, check the
18242 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18243
18244 @item dither, d
18245 Set the dither type.
18246
18247 Possible values are:
18248 @table @var
18249 @item none
18250 @item ordered
18251 @item random
18252 @item error_diffusion
18253 @end table
18254
18255 Default is none.
18256
18257 @item filter, f
18258 Set the resize filter type.
18259
18260 Possible values are:
18261 @table @var
18262 @item point
18263 @item bilinear
18264 @item bicubic
18265 @item spline16
18266 @item spline36
18267 @item lanczos
18268 @end table
18269
18270 Default is bilinear.
18271
18272 @item range, r
18273 Set the color range.
18274
18275 Possible values are:
18276 @table @var
18277 @item input
18278 @item limited
18279 @item full
18280 @end table
18281
18282 Default is same as input.
18283
18284 @item primaries, p
18285 Set the color primaries.
18286
18287 Possible values are:
18288 @table @var
18289 @item input
18290 @item 709
18291 @item unspecified
18292 @item 170m
18293 @item 240m
18294 @item 2020
18295 @end table
18296
18297 Default is same as input.
18298
18299 @item transfer, t
18300 Set the transfer characteristics.
18301
18302 Possible values are:
18303 @table @var
18304 @item input
18305 @item 709
18306 @item unspecified
18307 @item 601
18308 @item linear
18309 @item 2020_10
18310 @item 2020_12
18311 @item smpte2084
18312 @item iec61966-2-1
18313 @item arib-std-b67
18314 @end table
18315
18316 Default is same as input.
18317
18318 @item matrix, m
18319 Set the colorspace matrix.
18320
18321 Possible value are:
18322 @table @var
18323 @item input
18324 @item 709
18325 @item unspecified
18326 @item 470bg
18327 @item 170m
18328 @item 2020_ncl
18329 @item 2020_cl
18330 @end table
18331
18332 Default is same as input.
18333
18334 @item rangein, rin
18335 Set the input color range.
18336
18337 Possible values are:
18338 @table @var
18339 @item input
18340 @item limited
18341 @item full
18342 @end table
18343
18344 Default is same as input.
18345
18346 @item primariesin, pin
18347 Set the input color primaries.
18348
18349 Possible values are:
18350 @table @var
18351 @item input
18352 @item 709
18353 @item unspecified
18354 @item 170m
18355 @item 240m
18356 @item 2020
18357 @end table
18358
18359 Default is same as input.
18360
18361 @item transferin, tin
18362 Set the input transfer characteristics.
18363
18364 Possible values are:
18365 @table @var
18366 @item input
18367 @item 709
18368 @item unspecified
18369 @item 601
18370 @item linear
18371 @item 2020_10
18372 @item 2020_12
18373 @end table
18374
18375 Default is same as input.
18376
18377 @item matrixin, min
18378 Set the input colorspace matrix.
18379
18380 Possible value are:
18381 @table @var
18382 @item input
18383 @item 709
18384 @item unspecified
18385 @item 470bg
18386 @item 170m
18387 @item 2020_ncl
18388 @item 2020_cl
18389 @end table
18390
18391 @item chromal, c
18392 Set the output chroma location.
18393
18394 Possible values are:
18395 @table @var
18396 @item input
18397 @item left
18398 @item center
18399 @item topleft
18400 @item top
18401 @item bottomleft
18402 @item bottom
18403 @end table
18404
18405 @item chromalin, cin
18406 Set the input chroma location.
18407
18408 Possible values are:
18409 @table @var
18410 @item input
18411 @item left
18412 @item center
18413 @item topleft
18414 @item top
18415 @item bottomleft
18416 @item bottom
18417 @end table
18418
18419 @item npl
18420 Set the nominal peak luminance.
18421 @end table
18422
18423 The values of the @option{w} and @option{h} options are expressions
18424 containing the following constants:
18425
18426 @table @var
18427 @item in_w
18428 @item in_h
18429 The input width and height
18430
18431 @item iw
18432 @item ih
18433 These are the same as @var{in_w} and @var{in_h}.
18434
18435 @item out_w
18436 @item out_h
18437 The output (scaled) width and height
18438
18439 @item ow
18440 @item oh
18441 These are the same as @var{out_w} and @var{out_h}
18442
18443 @item a
18444 The same as @var{iw} / @var{ih}
18445
18446 @item sar
18447 input sample aspect ratio
18448
18449 @item dar
18450 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
18451
18452 @item hsub
18453 @item vsub
18454 horizontal and vertical input chroma subsample values. For example for the
18455 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
18456
18457 @item ohsub
18458 @item ovsub
18459 horizontal and vertical output chroma subsample values. For example for the
18460 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
18461 @end table
18462
18463 @table @option
18464 @end table
18465
18466 @c man end VIDEO FILTERS
18467
18468 @chapter OpenCL Video Filters
18469 @c man begin OPENCL VIDEO FILTERS
18470
18471 Below is a description of the currently available OpenCL video filters.
18472
18473 To enable compilation of these filters you need to configure FFmpeg with
18474 @code{--enable-opencl}.
18475
18476 Running OpenCL filters requires you to initialize a hardware device and to pass that device to all filters in any filter graph.
18477 @table @option
18478
18479 @item -init_hw_device opencl[=@var{name}][:@var{device}[,@var{key=value}...]]
18480 Initialise a new hardware device of type @var{opencl} called @var{name}, using the
18481 given device parameters.
18482
18483 @item -filter_hw_device @var{name}
18484 Pass the hardware device called @var{name} to all filters in any filter graph.
18485
18486 @end table
18487
18488 For more detailed information see @url{https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options}
18489
18490 @itemize
18491 @item
18492 Example of choosing the first device on the second platform and running avgblur_opencl filter with default parameters on it.
18493 @example
18494 -init_hw_device opencl=gpu:1.0 -filter_hw_device gpu -i INPUT -vf "hwupload, avgblur_opencl, hwdownload" OUTPUT
18495 @end example
18496 @end itemize
18497
18498 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.
18499
18500 @section avgblur_opencl
18501
18502 Apply average blur filter.
18503
18504 The filter accepts the following options:
18505
18506 @table @option
18507 @item sizeX
18508 Set horizontal radius size.
18509 Range is @code{[1, 1024]} and default value is @code{1}.
18510
18511 @item planes
18512 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
18513
18514 @item sizeY
18515 Set vertical radius size. Range is @code{[1, 1024]} and default value is @code{0}. If zero, @code{sizeX} value will be used.
18516 @end table
18517
18518 @subsection Example
18519
18520 @itemize
18521 @item
18522 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.
18523 @example
18524 -i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
18525 @end example
18526 @end itemize
18527
18528 @section boxblur_opencl
18529
18530 Apply a boxblur algorithm to the input video.
18531
18532 It accepts the following parameters:
18533
18534 @table @option
18535
18536 @item luma_radius, lr
18537 @item luma_power, lp
18538 @item chroma_radius, cr
18539 @item chroma_power, cp
18540 @item alpha_radius, ar
18541 @item alpha_power, ap
18542
18543 @end table
18544
18545 A description of the accepted options follows.
18546
18547 @table @option
18548 @item luma_radius, lr
18549 @item chroma_radius, cr
18550 @item alpha_radius, ar
18551 Set an expression for the box radius in pixels used for blurring the
18552 corresponding input plane.
18553
18554 The radius value must be a non-negative number, and must not be
18555 greater than the value of the expression @code{min(w,h)/2} for the
18556 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
18557 planes.
18558
18559 Default value for @option{luma_radius} is "2". If not specified,
18560 @option{chroma_radius} and @option{alpha_radius} default to the
18561 corresponding value set for @option{luma_radius}.
18562
18563 The expressions can contain the following constants:
18564 @table @option
18565 @item w
18566 @item h
18567 The input width and height in pixels.
18568
18569 @item cw
18570 @item ch
18571 The input chroma image width and height in pixels.
18572
18573 @item hsub
18574 @item vsub
18575 The horizontal and vertical chroma subsample values. For example, for the
18576 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
18577 @end table
18578
18579 @item luma_power, lp
18580 @item chroma_power, cp
18581 @item alpha_power, ap
18582 Specify how many times the boxblur filter is applied to the
18583 corresponding plane.
18584
18585 Default value for @option{luma_power} is 2. If not specified,
18586 @option{chroma_power} and @option{alpha_power} default to the
18587 corresponding value set for @option{luma_power}.
18588
18589 A value of 0 will disable the effect.
18590 @end table
18591
18592 @subsection Examples
18593
18594 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.
18595
18596 @itemize
18597 @item
18598 Apply a boxblur filter with the luma, chroma, and alpha radius
18599 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.
18600 @example
18601 -i INPUT -vf "hwupload, boxblur_opencl=luma_radius=2:luma_power=3, hwdownload" OUTPUT
18602 -i INPUT -vf "hwupload, boxblur_opencl=2:3, hwdownload" OUTPUT
18603 @end example
18604
18605 @item
18606 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.
18607
18608 For the luma plane, a 2x2 box radius will be run once.
18609
18610 For the chroma plane, a 4x4 box radius will be run 5 times.
18611
18612 For the alpha plane, a 3x3 box radius will be run 7 times.
18613 @example
18614 -i INPUT -vf "hwupload, boxblur_opencl=2:1:4:5:3:7, hwdownload" OUTPUT
18615 @end example
18616 @end itemize
18617
18618 @section convolution_opencl
18619
18620 Apply convolution of 3x3, 5x5, 7x7 matrix.
18621
18622 The filter accepts the following options:
18623
18624 @table @option
18625 @item 0m
18626 @item 1m
18627 @item 2m
18628 @item 3m
18629 Set matrix for each plane.
18630 Matrix is sequence of 9, 25 or 49 signed numbers.
18631 Default value for each plane is @code{0 0 0 0 1 0 0 0 0}.
18632
18633 @item 0rdiv
18634 @item 1rdiv
18635 @item 2rdiv
18636 @item 3rdiv
18637 Set multiplier for calculated value for each plane.
18638 If unset or 0, it will be sum of all matrix elements.
18639 The option value must be an float number greater or equal to @code{0.0}. Default value is @code{1.0}.
18640
18641 @item 0bias
18642 @item 1bias
18643 @item 2bias
18644 @item 3bias
18645 Set bias for each plane. This value is added to the result of the multiplication.
18646 Useful for making the overall image brighter or darker.
18647 The option value must be an float number greater or equal to @code{0.0}. Default value is @code{0.0}.
18648
18649 @end table
18650
18651 @subsection Examples
18652
18653 @itemize
18654 @item
18655 Apply sharpen:
18656 @example
18657 -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
18658 @end example
18659
18660 @item
18661 Apply blur:
18662 @example
18663 -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
18664 @end example
18665
18666 @item
18667 Apply edge enhance:
18668 @example
18669 -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
18670 @end example
18671
18672 @item
18673 Apply edge detect:
18674 @example
18675 -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
18676 @end example
18677
18678 @item
18679 Apply laplacian edge detector which includes diagonals:
18680 @example
18681 -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
18682 @end example
18683
18684 @item
18685 Apply emboss:
18686 @example
18687 -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
18688 @end example
18689 @end itemize
18690
18691 @section dilation_opencl
18692
18693 Apply dilation effect to the video.
18694
18695 This filter replaces the pixel by the local(3x3) maximum.
18696
18697 It accepts the following options:
18698
18699 @table @option
18700 @item threshold0
18701 @item threshold1
18702 @item threshold2
18703 @item threshold3
18704 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
18705 If @code{0}, plane will remain unchanged.
18706
18707 @item coordinates
18708 Flag which specifies the pixel to refer to.
18709 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
18710
18711 Flags to local 3x3 coordinates region centered on @code{x}:
18712
18713     1 2 3
18714
18715     4 x 5
18716
18717     6 7 8
18718 @end table
18719
18720 @subsection Example
18721
18722 @itemize
18723 @item
18724 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.
18725 @example
18726 -i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
18727 @end example
18728 @end itemize
18729
18730 @section erosion_opencl
18731
18732 Apply erosion effect to the video.
18733
18734 This filter replaces the pixel by the local(3x3) minimum.
18735
18736 It accepts the following options:
18737
18738 @table @option
18739 @item threshold0
18740 @item threshold1
18741 @item threshold2
18742 @item threshold3
18743 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
18744 If @code{0}, plane will remain unchanged.
18745
18746 @item coordinates
18747 Flag which specifies the pixel to refer to.
18748 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
18749
18750 Flags to local 3x3 coordinates region centered on @code{x}:
18751
18752     1 2 3
18753
18754     4 x 5
18755
18756     6 7 8
18757 @end table
18758
18759 @subsection Example
18760
18761 @itemize
18762 @item
18763 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.
18764 @example
18765 -i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
18766 @end example
18767 @end itemize
18768
18769 @section overlay_opencl
18770
18771 Overlay one video on top of another.
18772
18773 It takes two inputs and has one output. The first input is the "main" video on which the second input is overlaid.
18774 This filter requires same memory layout for all the inputs. So, format conversion may be needed.
18775
18776 The filter accepts the following options:
18777
18778 @table @option
18779
18780 @item x
18781 Set the x coordinate of the overlaid video on the main video.
18782 Default value is @code{0}.
18783
18784 @item y
18785 Set the x coordinate of the overlaid video on the main video.
18786 Default value is @code{0}.
18787
18788 @end table
18789
18790 @subsection Examples
18791
18792 @itemize
18793 @item
18794 Overlay an image LOGO at the top-left corner of the INPUT video. Both inputs are yuv420p format.
18795 @example
18796 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
18797 @end example
18798 @item
18799 The inputs have same memory layout for color channels , the overlay has additional alpha plane, like INPUT is yuv420p, and the LOGO is yuva420p.
18800 @example
18801 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
18802 @end example
18803
18804 @end itemize
18805
18806 @section prewitt_opencl
18807
18808 Apply the Prewitt operator (@url{https://en.wikipedia.org/wiki/Prewitt_operator}) to input video stream.
18809
18810 The filter accepts the following option:
18811
18812 @table @option
18813 @item planes
18814 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
18815
18816 @item scale
18817 Set value which will be multiplied with filtered result.
18818 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
18819
18820 @item delta
18821 Set value which will be added to filtered result.
18822 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
18823 @end table
18824
18825 @subsection Example
18826
18827 @itemize
18828 @item
18829 Apply the Prewitt operator with scale set to 2 and delta set to 10.
18830 @example
18831 -i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
18832 @end example
18833 @end itemize
18834
18835 @section roberts_opencl
18836 Apply the Roberts cross operator (@url{https://en.wikipedia.org/wiki/Roberts_cross}) to input video stream.
18837
18838 The filter accepts the following option:
18839
18840 @table @option
18841 @item planes
18842 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
18843
18844 @item scale
18845 Set value which will be multiplied with filtered result.
18846 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
18847
18848 @item delta
18849 Set value which will be added to filtered result.
18850 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
18851 @end table
18852
18853 @subsection Example
18854
18855 @itemize
18856 @item
18857 Apply the Roberts cross operator with scale set to 2 and delta set to 10
18858 @example
18859 -i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
18860 @end example
18861 @end itemize
18862
18863 @section sobel_opencl
18864
18865 Apply the Sobel operator (@url{https://en.wikipedia.org/wiki/Sobel_operator}) to input video stream.
18866
18867 The filter accepts the following option:
18868
18869 @table @option
18870 @item planes
18871 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
18872
18873 @item scale
18874 Set value which will be multiplied with filtered result.
18875 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
18876
18877 @item delta
18878 Set value which will be added to filtered result.
18879 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
18880 @end table
18881
18882 @subsection Example
18883
18884 @itemize
18885 @item
18886 Apply sobel operator with scale set to 2 and delta set to 10
18887 @example
18888 -i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
18889 @end example
18890 @end itemize
18891
18892 @section tonemap_opencl
18893
18894 Perform HDR(PQ/HLG) to SDR conversion with tone-mapping.
18895
18896 It accepts the following parameters:
18897
18898 @table @option
18899 @item tonemap
18900 Specify the tone-mapping operator to be used. Same as tonemap option in @ref{tonemap}.
18901
18902 @item param
18903 Tune the tone mapping algorithm. same as param option in @ref{tonemap}.
18904
18905 @item desat
18906 Apply desaturation for highlights that exceed this level of brightness. The
18907 higher the parameter, the more color information will be preserved. This
18908 setting helps prevent unnaturally blown-out colors for super-highlights, by
18909 (smoothly) turning into white instead. This makes images feel more natural,
18910 at the cost of reducing information about out-of-range colors.
18911
18912 The default value is 0.5, and the algorithm here is a little different from
18913 the cpu version tonemap currently. A setting of 0.0 disables this option.
18914
18915 @item threshold
18916 The tonemapping algorithm parameters is fine-tuned per each scene. And a threshold
18917 is used to detect whether the scene has changed or not. If the distance beween
18918 the current frame average brightness and the current running average exceeds
18919 a threshold value, we would re-calculate scene average and peak brightness.
18920 The default value is 0.2.
18921
18922 @item format
18923 Specify the output pixel format.
18924
18925 Currently supported formats are:
18926 @table @var
18927 @item p010
18928 @item nv12
18929 @end table
18930
18931 @item range, r
18932 Set the output color range.
18933
18934 Possible values are:
18935 @table @var
18936 @item tv/mpeg
18937 @item pc/jpeg
18938 @end table
18939
18940 Default is same as input.
18941
18942 @item primaries, p
18943 Set the output color primaries.
18944
18945 Possible values are:
18946 @table @var
18947 @item bt709
18948 @item bt2020
18949 @end table
18950
18951 Default is same as input.
18952
18953 @item transfer, t
18954 Set the output transfer characteristics.
18955
18956 Possible values are:
18957 @table @var
18958 @item bt709
18959 @item bt2020
18960 @end table
18961
18962 Default is bt709.
18963
18964 @item matrix, m
18965 Set the output colorspace matrix.
18966
18967 Possible value are:
18968 @table @var
18969 @item bt709
18970 @item bt2020
18971 @end table
18972
18973 Default is same as input.
18974
18975 @end table
18976
18977 @subsection Example
18978
18979 @itemize
18980 @item
18981 Convert HDR(PQ/HLG) video to bt2020-transfer-characteristic p010 format using linear operator.
18982 @example
18983 -i INPUT -vf "format=p010,hwupload,tonemap_opencl=t=bt2020:tonemap=linear:format=p010,hwdownload,format=p010" OUTPUT
18984 @end example
18985 @end itemize
18986
18987 @section unsharp_opencl
18988
18989 Sharpen or blur the input video.
18990
18991 It accepts the following parameters:
18992
18993 @table @option
18994 @item luma_msize_x, lx
18995 Set the luma matrix horizontal size.
18996 Range is @code{[1, 23]} and default value is @code{5}.
18997
18998 @item luma_msize_y, ly
18999 Set the luma matrix vertical size.
19000 Range is @code{[1, 23]} and default value is @code{5}.
19001
19002 @item luma_amount, la
19003 Set the luma effect strength.
19004 Range is @code{[-10, 10]} and default value is @code{1.0}.
19005
19006 Negative values will blur the input video, while positive values will
19007 sharpen it, a value of zero will disable the effect.
19008
19009 @item chroma_msize_x, cx
19010 Set the chroma matrix horizontal size.
19011 Range is @code{[1, 23]} and default value is @code{5}.
19012
19013 @item chroma_msize_y, cy
19014 Set the chroma matrix vertical size.
19015 Range is @code{[1, 23]} and default value is @code{5}.
19016
19017 @item chroma_amount, ca
19018 Set the chroma effect strength.
19019 Range is @code{[-10, 10]} and default value is @code{0.0}.
19020
19021 Negative values will blur the input video, while positive values will
19022 sharpen it, a value of zero will disable the effect.
19023
19024 @end table
19025
19026 All parameters are optional and default to the equivalent of the
19027 string '5:5:1.0:5:5:0.0'.
19028
19029 @subsection Examples
19030
19031 @itemize
19032 @item
19033 Apply strong luma sharpen effect:
19034 @example
19035 -i INPUT -vf "hwupload, unsharp_opencl=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5, hwdownload" OUTPUT
19036 @end example
19037
19038 @item
19039 Apply a strong blur of both luma and chroma parameters:
19040 @example
19041 -i INPUT -vf "hwupload, unsharp_opencl=7:7:-2:7:7:-2, hwdownload" OUTPUT
19042 @end example
19043 @end itemize
19044
19045 @c man end OPENCL VIDEO FILTERS
19046
19047 @chapter Video Sources
19048 @c man begin VIDEO SOURCES
19049
19050 Below is a description of the currently available video sources.
19051
19052 @section buffer
19053
19054 Buffer video frames, and make them available to the filter chain.
19055
19056 This source is mainly intended for a programmatic use, in particular
19057 through the interface defined in @file{libavfilter/vsrc_buffer.h}.
19058
19059 It accepts the following parameters:
19060
19061 @table @option
19062
19063 @item video_size
19064 Specify the size (width and height) of the buffered video frames. For the
19065 syntax of this option, check the
19066 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19067
19068 @item width
19069 The input video width.
19070
19071 @item height
19072 The input video height.
19073
19074 @item pix_fmt
19075 A string representing the pixel format of the buffered video frames.
19076 It may be a number corresponding to a pixel format, or a pixel format
19077 name.
19078
19079 @item time_base
19080 Specify the timebase assumed by the timestamps of the buffered frames.
19081
19082 @item frame_rate
19083 Specify the frame rate expected for the video stream.
19084
19085 @item pixel_aspect, sar
19086 The sample (pixel) aspect ratio of the input video.
19087
19088 @item sws_param
19089 Specify the optional parameters to be used for the scale filter which
19090 is automatically inserted when an input change is detected in the
19091 input size or format.
19092
19093 @item hw_frames_ctx
19094 When using a hardware pixel format, this should be a reference to an
19095 AVHWFramesContext describing input frames.
19096 @end table
19097
19098 For example:
19099 @example
19100 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
19101 @end example
19102
19103 will instruct the source to accept video frames with size 320x240 and
19104 with format "yuv410p", assuming 1/24 as the timestamps timebase and
19105 square pixels (1:1 sample aspect ratio).
19106 Since the pixel format with name "yuv410p" corresponds to the number 6
19107 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
19108 this example corresponds to:
19109 @example
19110 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
19111 @end example
19112
19113 Alternatively, the options can be specified as a flat string, but this
19114 syntax is deprecated:
19115
19116 @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}]
19117
19118 @section cellauto
19119
19120 Create a pattern generated by an elementary cellular automaton.
19121
19122 The initial state of the cellular automaton can be defined through the
19123 @option{filename} and @option{pattern} options. If such options are
19124 not specified an initial state is created randomly.
19125
19126 At each new frame a new row in the video is filled with the result of
19127 the cellular automaton next generation. The behavior when the whole
19128 frame is filled is defined by the @option{scroll} option.
19129
19130 This source accepts the following options:
19131
19132 @table @option
19133 @item filename, f
19134 Read the initial cellular automaton state, i.e. the starting row, from
19135 the specified file.
19136 In the file, each non-whitespace character is considered an alive
19137 cell, a newline will terminate the row, and further characters in the
19138 file will be ignored.
19139
19140 @item pattern, p
19141 Read the initial cellular automaton state, i.e. the starting row, from
19142 the specified string.
19143
19144 Each non-whitespace character in the string is considered an alive
19145 cell, a newline will terminate the row, and further characters in the
19146 string will be ignored.
19147
19148 @item rate, r
19149 Set the video rate, that is the number of frames generated per second.
19150 Default is 25.
19151
19152 @item random_fill_ratio, ratio
19153 Set the random fill ratio for the initial cellular automaton row. It
19154 is a floating point number value ranging from 0 to 1, defaults to
19155 1/PHI.
19156
19157 This option is ignored when a file or a pattern is specified.
19158
19159 @item random_seed, seed
19160 Set the seed for filling randomly the initial row, must be an integer
19161 included between 0 and UINT32_MAX. If not specified, or if explicitly
19162 set to -1, the filter will try to use a good random seed on a best
19163 effort basis.
19164
19165 @item rule
19166 Set the cellular automaton rule, it is a number ranging from 0 to 255.
19167 Default value is 110.
19168
19169 @item size, s
19170 Set the size of the output video. For the syntax of this option, check the
19171 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19172
19173 If @option{filename} or @option{pattern} is specified, the size is set
19174 by default to the width of the specified initial state row, and the
19175 height is set to @var{width} * PHI.
19176
19177 If @option{size} is set, it must contain the width of the specified
19178 pattern string, and the specified pattern will be centered in the
19179 larger row.
19180
19181 If a filename or a pattern string is not specified, the size value
19182 defaults to "320x518" (used for a randomly generated initial state).
19183
19184 @item scroll
19185 If set to 1, scroll the output upward when all the rows in the output
19186 have been already filled. If set to 0, the new generated row will be
19187 written over the top row just after the bottom row is filled.
19188 Defaults to 1.
19189
19190 @item start_full, full
19191 If set to 1, completely fill the output with generated rows before
19192 outputting the first frame.
19193 This is the default behavior, for disabling set the value to 0.
19194
19195 @item stitch
19196 If set to 1, stitch the left and right row edges together.
19197 This is the default behavior, for disabling set the value to 0.
19198 @end table
19199
19200 @subsection Examples
19201
19202 @itemize
19203 @item
19204 Read the initial state from @file{pattern}, and specify an output of
19205 size 200x400.
19206 @example
19207 cellauto=f=pattern:s=200x400
19208 @end example
19209
19210 @item
19211 Generate a random initial row with a width of 200 cells, with a fill
19212 ratio of 2/3:
19213 @example
19214 cellauto=ratio=2/3:s=200x200
19215 @end example
19216
19217 @item
19218 Create a pattern generated by rule 18 starting by a single alive cell
19219 centered on an initial row with width 100:
19220 @example
19221 cellauto=p=@@:s=100x400:full=0:rule=18
19222 @end example
19223
19224 @item
19225 Specify a more elaborated initial pattern:
19226 @example
19227 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
19228 @end example
19229
19230 @end itemize
19231
19232 @anchor{coreimagesrc}
19233 @section coreimagesrc
19234 Video source generated on GPU using Apple's CoreImage API on OSX.
19235
19236 This video source is a specialized version of the @ref{coreimage} video filter.
19237 Use a core image generator at the beginning of the applied filterchain to
19238 generate the content.
19239
19240 The coreimagesrc video source accepts the following options:
19241 @table @option
19242 @item list_generators
19243 List all available generators along with all their respective options as well as
19244 possible minimum and maximum values along with the default values.
19245 @example
19246 list_generators=true
19247 @end example
19248
19249 @item size, s
19250 Specify the size of the sourced video. For the syntax of this option, check the
19251 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19252 The default value is @code{320x240}.
19253
19254 @item rate, r
19255 Specify the frame rate of the sourced video, as the number of frames
19256 generated per second. It has to be a string in the format
19257 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
19258 number or a valid video frame rate abbreviation. The default value is
19259 "25".
19260
19261 @item sar
19262 Set the sample aspect ratio of the sourced video.
19263
19264 @item duration, d
19265 Set the duration of the sourced video. See
19266 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
19267 for the accepted syntax.
19268
19269 If not specified, or the expressed duration is negative, the video is
19270 supposed to be generated forever.
19271 @end table
19272
19273 Additionally, all options of the @ref{coreimage} video filter are accepted.
19274 A complete filterchain can be used for further processing of the
19275 generated input without CPU-HOST transfer. See @ref{coreimage} documentation
19276 and examples for details.
19277
19278 @subsection Examples
19279
19280 @itemize
19281
19282 @item
19283 Use CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
19284 given as complete and escaped command-line for Apple's standard bash shell:
19285 @example
19286 ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
19287 @end example
19288 This example is equivalent to the QRCode example of @ref{coreimage} without the
19289 need for a nullsrc video source.
19290 @end itemize
19291
19292
19293 @section mandelbrot
19294
19295 Generate a Mandelbrot set fractal, and progressively zoom towards the
19296 point specified with @var{start_x} and @var{start_y}.
19297
19298 This source accepts the following options:
19299
19300 @table @option
19301
19302 @item end_pts
19303 Set the terminal pts value. Default value is 400.
19304
19305 @item end_scale
19306 Set the terminal scale value.
19307 Must be a floating point value. Default value is 0.3.
19308
19309 @item inner
19310 Set the inner coloring mode, that is the algorithm used to draw the
19311 Mandelbrot fractal internal region.
19312
19313 It shall assume one of the following values:
19314 @table @option
19315 @item black
19316 Set black mode.
19317 @item convergence
19318 Show time until convergence.
19319 @item mincol
19320 Set color based on point closest to the origin of the iterations.
19321 @item period
19322 Set period mode.
19323 @end table
19324
19325 Default value is @var{mincol}.
19326
19327 @item bailout
19328 Set the bailout value. Default value is 10.0.
19329
19330 @item maxiter
19331 Set the maximum of iterations performed by the rendering
19332 algorithm. Default value is 7189.
19333
19334 @item outer
19335 Set outer coloring mode.
19336 It shall assume one of following values:
19337 @table @option
19338 @item iteration_count
19339 Set iteration cound mode.
19340 @item normalized_iteration_count
19341 set normalized iteration count mode.
19342 @end table
19343 Default value is @var{normalized_iteration_count}.
19344
19345 @item rate, r
19346 Set frame rate, expressed as number of frames per second. Default
19347 value is "25".
19348
19349 @item size, s
19350 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
19351 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
19352
19353 @item start_scale
19354 Set the initial scale value. Default value is 3.0.
19355
19356 @item start_x
19357 Set the initial x position. Must be a floating point value between
19358 -100 and 100. Default value is -0.743643887037158704752191506114774.
19359
19360 @item start_y
19361 Set the initial y position. Must be a floating point value between
19362 -100 and 100. Default value is -0.131825904205311970493132056385139.
19363 @end table
19364
19365 @section mptestsrc
19366
19367 Generate various test patterns, as generated by the MPlayer test filter.
19368
19369 The size of the generated video is fixed, and is 256x256.
19370 This source is useful in particular for testing encoding features.
19371
19372 This source accepts the following options:
19373
19374 @table @option
19375
19376 @item rate, r
19377 Specify the frame rate of the sourced video, as the number of frames
19378 generated per second. It has to be a string in the format
19379 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
19380 number or a valid video frame rate abbreviation. The default value is
19381 "25".
19382
19383 @item duration, d
19384 Set the duration of the sourced video. See
19385 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
19386 for the accepted syntax.
19387
19388 If not specified, or the expressed duration is negative, the video is
19389 supposed to be generated forever.
19390
19391 @item test, t
19392
19393 Set the number or the name of the test to perform. Supported tests are:
19394 @table @option
19395 @item dc_luma
19396 @item dc_chroma
19397 @item freq_luma
19398 @item freq_chroma
19399 @item amp_luma
19400 @item amp_chroma
19401 @item cbp
19402 @item mv
19403 @item ring1
19404 @item ring2
19405 @item all
19406
19407 @end table
19408
19409 Default value is "all", which will cycle through the list of all tests.
19410 @end table
19411
19412 Some examples:
19413 @example
19414 mptestsrc=t=dc_luma
19415 @end example
19416
19417 will generate a "dc_luma" test pattern.
19418
19419 @section frei0r_src
19420
19421 Provide a frei0r source.
19422
19423 To enable compilation of this filter you need to install the frei0r
19424 header and configure FFmpeg with @code{--enable-frei0r}.
19425
19426 This source accepts the following parameters:
19427
19428 @table @option
19429
19430 @item size
19431 The size of the video to generate. For the syntax of this option, check the
19432 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19433
19434 @item framerate
19435 The framerate of the generated video. It may be a string of the form
19436 @var{num}/@var{den} or a frame rate abbreviation.
19437
19438 @item filter_name
19439 The name to the frei0r source to load. For more information regarding frei0r and
19440 how to set the parameters, read the @ref{frei0r} section in the video filters
19441 documentation.
19442
19443 @item filter_params
19444 A '|'-separated list of parameters to pass to the frei0r source.
19445
19446 @end table
19447
19448 For example, to generate a frei0r partik0l source with size 200x200
19449 and frame rate 10 which is overlaid on the overlay filter main input:
19450 @example
19451 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
19452 @end example
19453
19454 @section life
19455
19456 Generate a life pattern.
19457
19458 This source is based on a generalization of John Conway's life game.
19459
19460 The sourced input represents a life grid, each pixel represents a cell
19461 which can be in one of two possible states, alive or dead. Every cell
19462 interacts with its eight neighbours, which are the cells that are
19463 horizontally, vertically, or diagonally adjacent.
19464
19465 At each interaction the grid evolves according to the adopted rule,
19466 which specifies the number of neighbor alive cells which will make a
19467 cell stay alive or born. The @option{rule} option allows one to specify
19468 the rule to adopt.
19469
19470 This source accepts the following options:
19471
19472 @table @option
19473 @item filename, f
19474 Set the file from which to read the initial grid state. In the file,
19475 each non-whitespace character is considered an alive cell, and newline
19476 is used to delimit the end of each row.
19477
19478 If this option is not specified, the initial grid is generated
19479 randomly.
19480
19481 @item rate, r
19482 Set the video rate, that is the number of frames generated per second.
19483 Default is 25.
19484
19485 @item random_fill_ratio, ratio
19486 Set the random fill ratio for the initial random grid. It is a
19487 floating point number value ranging from 0 to 1, defaults to 1/PHI.
19488 It is ignored when a file is specified.
19489
19490 @item random_seed, seed
19491 Set the seed for filling the initial random grid, must be an integer
19492 included between 0 and UINT32_MAX. If not specified, or if explicitly
19493 set to -1, the filter will try to use a good random seed on a best
19494 effort basis.
19495
19496 @item rule
19497 Set the life rule.
19498
19499 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
19500 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
19501 @var{NS} specifies the number of alive neighbor cells which make a
19502 live cell stay alive, and @var{NB} the number of alive neighbor cells
19503 which make a dead cell to become alive (i.e. to "born").
19504 "s" and "b" can be used in place of "S" and "B", respectively.
19505
19506 Alternatively a rule can be specified by an 18-bits integer. The 9
19507 high order bits are used to encode the next cell state if it is alive
19508 for each number of neighbor alive cells, the low order bits specify
19509 the rule for "borning" new cells. Higher order bits encode for an
19510 higher number of neighbor cells.
19511 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
19512 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
19513
19514 Default value is "S23/B3", which is the original Conway's game of life
19515 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
19516 cells, and will born a new cell if there are three alive cells around
19517 a dead cell.
19518
19519 @item size, s
19520 Set the size of the output video. For the syntax of this option, check the
19521 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19522
19523 If @option{filename} is specified, the size is set by default to the
19524 same size of the input file. If @option{size} is set, it must contain
19525 the size specified in the input file, and the initial grid defined in
19526 that file is centered in the larger resulting area.
19527
19528 If a filename is not specified, the size value defaults to "320x240"
19529 (used for a randomly generated initial grid).
19530
19531 @item stitch
19532 If set to 1, stitch the left and right grid edges together, and the
19533 top and bottom edges also. Defaults to 1.
19534
19535 @item mold
19536 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
19537 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
19538 value from 0 to 255.
19539
19540 @item life_color
19541 Set the color of living (or new born) cells.
19542
19543 @item death_color
19544 Set the color of dead cells. If @option{mold} is set, this is the first color
19545 used to represent a dead cell.
19546
19547 @item mold_color
19548 Set mold color, for definitely dead and moldy cells.
19549
19550 For the syntax of these 3 color options, check the @ref{color syntax,,"Color" section in the
19551 ffmpeg-utils manual,ffmpeg-utils}.
19552 @end table
19553
19554 @subsection Examples
19555
19556 @itemize
19557 @item
19558 Read a grid from @file{pattern}, and center it on a grid of size
19559 300x300 pixels:
19560 @example
19561 life=f=pattern:s=300x300
19562 @end example
19563
19564 @item
19565 Generate a random grid of size 200x200, with a fill ratio of 2/3:
19566 @example
19567 life=ratio=2/3:s=200x200
19568 @end example
19569
19570 @item
19571 Specify a custom rule for evolving a randomly generated grid:
19572 @example
19573 life=rule=S14/B34
19574 @end example
19575
19576 @item
19577 Full example with slow death effect (mold) using @command{ffplay}:
19578 @example
19579 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
19580 @end example
19581 @end itemize
19582
19583 @anchor{allrgb}
19584 @anchor{allyuv}
19585 @anchor{color}
19586 @anchor{haldclutsrc}
19587 @anchor{nullsrc}
19588 @anchor{pal75bars}
19589 @anchor{pal100bars}
19590 @anchor{rgbtestsrc}
19591 @anchor{smptebars}
19592 @anchor{smptehdbars}
19593 @anchor{testsrc}
19594 @anchor{testsrc2}
19595 @anchor{yuvtestsrc}
19596 @section allrgb, allyuv, color, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
19597
19598 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
19599
19600 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
19601
19602 The @code{color} source provides an uniformly colored input.
19603
19604 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
19605 @ref{haldclut} filter.
19606
19607 The @code{nullsrc} source returns unprocessed video frames. It is
19608 mainly useful to be employed in analysis / debugging tools, or as the
19609 source for filters which ignore the input data.
19610
19611 The @code{pal75bars} source generates a color bars pattern, based on
19612 EBU PAL recommendations with 75% color levels.
19613
19614 The @code{pal100bars} source generates a color bars pattern, based on
19615 EBU PAL recommendations with 100% color levels.
19616
19617 The @code{rgbtestsrc} source generates an RGB test pattern useful for
19618 detecting RGB vs BGR issues. You should see a red, green and blue
19619 stripe from top to bottom.
19620
19621 The @code{smptebars} source generates a color bars pattern, based on
19622 the SMPTE Engineering Guideline EG 1-1990.
19623
19624 The @code{smptehdbars} source generates a color bars pattern, based on
19625 the SMPTE RP 219-2002.
19626
19627 The @code{testsrc} source generates a test video pattern, showing a
19628 color pattern, a scrolling gradient and a timestamp. This is mainly
19629 intended for testing purposes.
19630
19631 The @code{testsrc2} source is similar to testsrc, but supports more
19632 pixel formats instead of just @code{rgb24}. This allows using it as an
19633 input for other tests without requiring a format conversion.
19634
19635 The @code{yuvtestsrc} source generates an YUV test pattern. You should
19636 see a y, cb and cr stripe from top to bottom.
19637
19638 The sources accept the following parameters:
19639
19640 @table @option
19641
19642 @item level
19643 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
19644 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
19645 pixels to be used as identity matrix for 3D lookup tables. Each component is
19646 coded on a @code{1/(N*N)} scale.
19647
19648 @item color, c
19649 Specify the color of the source, only available in the @code{color}
19650 source. For the syntax of this option, check the
19651 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
19652
19653 @item size, s
19654 Specify the size of the sourced video. For the syntax of this option, check the
19655 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19656 The default value is @code{320x240}.
19657
19658 This option is not available with the @code{allrgb}, @code{allyuv}, and
19659 @code{haldclutsrc} filters.
19660
19661 @item rate, r
19662 Specify the frame rate of the sourced video, as the number of frames
19663 generated per second. It has to be a string in the format
19664 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
19665 number or a valid video frame rate abbreviation. The default value is
19666 "25".
19667
19668 @item duration, d
19669 Set the duration of the sourced video. See
19670 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
19671 for the accepted syntax.
19672
19673 If not specified, or the expressed duration is negative, the video is
19674 supposed to be generated forever.
19675
19676 @item sar
19677 Set the sample aspect ratio of the sourced video.
19678
19679 @item alpha
19680 Specify the alpha (opacity) of the background, only available in the
19681 @code{testsrc2} source. The value must be between 0 (fully transparent) and
19682 255 (fully opaque, the default).
19683
19684 @item decimals, n
19685 Set the number of decimals to show in the timestamp, only available in the
19686 @code{testsrc} source.
19687
19688 The displayed timestamp value will correspond to the original
19689 timestamp value multiplied by the power of 10 of the specified
19690 value. Default value is 0.
19691 @end table
19692
19693 @subsection Examples
19694
19695 @itemize
19696 @item
19697 Generate a video with a duration of 5.3 seconds, with size
19698 176x144 and a frame rate of 10 frames per second:
19699 @example
19700 testsrc=duration=5.3:size=qcif:rate=10
19701 @end example
19702
19703 @item
19704 The following graph description will generate a red source
19705 with an opacity of 0.2, with size "qcif" and a frame rate of 10
19706 frames per second:
19707 @example
19708 color=c=red@@0.2:s=qcif:r=10
19709 @end example
19710
19711 @item
19712 If the input content is to be ignored, @code{nullsrc} can be used. The
19713 following command generates noise in the luminance plane by employing
19714 the @code{geq} filter:
19715 @example
19716 nullsrc=s=256x256, geq=random(1)*255:128:128
19717 @end example
19718 @end itemize
19719
19720 @subsection Commands
19721
19722 The @code{color} source supports the following commands:
19723
19724 @table @option
19725 @item c, color
19726 Set the color of the created image. Accepts the same syntax of the
19727 corresponding @option{color} option.
19728 @end table
19729
19730 @section openclsrc
19731
19732 Generate video using an OpenCL program.
19733
19734 @table @option
19735
19736 @item source
19737 OpenCL program source file.
19738
19739 @item kernel
19740 Kernel name in program.
19741
19742 @item size, s
19743 Size of frames to generate.  This must be set.
19744
19745 @item format
19746 Pixel format to use for the generated frames.  This must be set.
19747
19748 @item rate, r
19749 Number of frames generated every second.  Default value is '25'.
19750
19751 @end table
19752
19753 For details of how the program loading works, see the @ref{program_opencl}
19754 filter.
19755
19756 Example programs:
19757
19758 @itemize
19759 @item
19760 Generate a colour ramp by setting pixel values from the position of the pixel
19761 in the output image.  (Note that this will work with all pixel formats, but
19762 the generated output will not be the same.)
19763 @verbatim
19764 __kernel void ramp(__write_only image2d_t dst,
19765                    unsigned int index)
19766 {
19767     int2 loc = (int2)(get_global_id(0), get_global_id(1));
19768
19769     float4 val;
19770     val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
19771
19772     write_imagef(dst, loc, val);
19773 }
19774 @end verbatim
19775
19776 @item
19777 Generate a Sierpinski carpet pattern, panning by a single pixel each frame.
19778 @verbatim
19779 __kernel void sierpinski_carpet(__write_only image2d_t dst,
19780                                 unsigned int index)
19781 {
19782     int2 loc = (int2)(get_global_id(0), get_global_id(1));
19783
19784     float4 value = 0.0f;
19785     int x = loc.x + index;
19786     int y = loc.y + index;
19787     while (x > 0 || y > 0) {
19788         if (x % 3 == 1 && y % 3 == 1) {
19789             value = 1.0f;
19790             break;
19791         }
19792         x /= 3;
19793         y /= 3;
19794     }
19795
19796     write_imagef(dst, loc, value);
19797 }
19798 @end verbatim
19799
19800 @end itemize
19801
19802 @c man end VIDEO SOURCES
19803
19804 @chapter Video Sinks
19805 @c man begin VIDEO SINKS
19806
19807 Below is a description of the currently available video sinks.
19808
19809 @section buffersink
19810
19811 Buffer video frames, and make them available to the end of the filter
19812 graph.
19813
19814 This sink is mainly intended for programmatic use, in particular
19815 through the interface defined in @file{libavfilter/buffersink.h}
19816 or the options system.
19817
19818 It accepts a pointer to an AVBufferSinkContext structure, which
19819 defines the incoming buffers' formats, to be passed as the opaque
19820 parameter to @code{avfilter_init_filter} for initialization.
19821
19822 @section nullsink
19823
19824 Null video sink: do absolutely nothing with the input video. It is
19825 mainly useful as a template and for use in analysis / debugging
19826 tools.
19827
19828 @c man end VIDEO SINKS
19829
19830 @chapter Multimedia Filters
19831 @c man begin MULTIMEDIA FILTERS
19832
19833 Below is a description of the currently available multimedia filters.
19834
19835 @section abitscope
19836
19837 Convert input audio to a video output, displaying the audio bit scope.
19838
19839 The filter accepts the following options:
19840
19841 @table @option
19842 @item rate, r
19843 Set frame rate, expressed as number of frames per second. Default
19844 value is "25".
19845
19846 @item size, s
19847 Specify the video size for the output. For the syntax of this option, check the
19848 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19849 Default value is @code{1024x256}.
19850
19851 @item colors
19852 Specify list of colors separated by space or by '|' which will be used to
19853 draw channels. Unrecognized or missing colors will be replaced
19854 by white color.
19855 @end table
19856
19857 @section ahistogram
19858
19859 Convert input audio to a video output, displaying the volume histogram.
19860
19861 The filter accepts the following options:
19862
19863 @table @option
19864 @item dmode
19865 Specify how histogram is calculated.
19866
19867 It accepts the following values:
19868 @table @samp
19869 @item single
19870 Use single histogram for all channels.
19871 @item separate
19872 Use separate histogram for each channel.
19873 @end table
19874 Default is @code{single}.
19875
19876 @item rate, r
19877 Set frame rate, expressed as number of frames per second. Default
19878 value is "25".
19879
19880 @item size, s
19881 Specify the video size for the output. For the syntax of this option, check the
19882 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19883 Default value is @code{hd720}.
19884
19885 @item scale
19886 Set display scale.
19887
19888 It accepts the following values:
19889 @table @samp
19890 @item log
19891 logarithmic
19892 @item sqrt
19893 square root
19894 @item cbrt
19895 cubic root
19896 @item lin
19897 linear
19898 @item rlog
19899 reverse logarithmic
19900 @end table
19901 Default is @code{log}.
19902
19903 @item ascale
19904 Set amplitude scale.
19905
19906 It accepts the following values:
19907 @table @samp
19908 @item log
19909 logarithmic
19910 @item lin
19911 linear
19912 @end table
19913 Default is @code{log}.
19914
19915 @item acount
19916 Set how much frames to accumulate in histogram.
19917 Defauls is 1. Setting this to -1 accumulates all frames.
19918
19919 @item rheight
19920 Set histogram ratio of window height.
19921
19922 @item slide
19923 Set sonogram sliding.
19924
19925 It accepts the following values:
19926 @table @samp
19927 @item replace
19928 replace old rows with new ones.
19929 @item scroll
19930 scroll from top to bottom.
19931 @end table
19932 Default is @code{replace}.
19933 @end table
19934
19935 @section aphasemeter
19936
19937 Measures phase of input audio, which is exported as metadata @code{lavfi.aphasemeter.phase},
19938 representing mean phase of current audio frame. A video output can also be produced and is
19939 enabled by default. The audio is passed through as first output.
19940
19941 Audio will be rematrixed to stereo if it has a different channel layout. Phase value is in
19942 range @code{[-1, 1]} where @code{-1} means left and right channels are completely out of phase
19943 and @code{1} means channels are in phase.
19944
19945 The filter accepts the following options, all related to its video output:
19946
19947 @table @option
19948 @item rate, r
19949 Set the output frame rate. Default value is @code{25}.
19950
19951 @item size, s
19952 Set the video size for the output. For the syntax of this option, check the
19953 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19954 Default value is @code{800x400}.
19955
19956 @item rc
19957 @item gc
19958 @item bc
19959 Specify the red, green, blue contrast. Default values are @code{2},
19960 @code{7} and @code{1}.
19961 Allowed range is @code{[0, 255]}.
19962
19963 @item mpc
19964 Set color which will be used for drawing median phase. If color is
19965 @code{none} which is default, no median phase value will be drawn.
19966
19967 @item video
19968 Enable video output. Default is enabled.
19969 @end table
19970
19971 @section avectorscope
19972
19973 Convert input audio to a video output, representing the audio vector
19974 scope.
19975
19976 The filter is used to measure the difference between channels of stereo
19977 audio stream. A monoaural signal, consisting of identical left and right
19978 signal, results in straight vertical line. Any stereo separation is visible
19979 as a deviation from this line, creating a Lissajous figure.
19980 If the straight (or deviation from it) but horizontal line appears this
19981 indicates that the left and right channels are out of phase.
19982
19983 The filter accepts the following options:
19984
19985 @table @option
19986 @item mode, m
19987 Set the vectorscope mode.
19988
19989 Available values are:
19990 @table @samp
19991 @item lissajous
19992 Lissajous rotated by 45 degrees.
19993
19994 @item lissajous_xy
19995 Same as above but not rotated.
19996
19997 @item polar
19998 Shape resembling half of circle.
19999 @end table
20000
20001 Default value is @samp{lissajous}.
20002
20003 @item size, s
20004 Set the video size for the output. For the syntax of this option, check the
20005 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20006 Default value is @code{400x400}.
20007
20008 @item rate, r
20009 Set the output frame rate. Default value is @code{25}.
20010
20011 @item rc
20012 @item gc
20013 @item bc
20014 @item ac
20015 Specify the red, green, blue and alpha contrast. Default values are @code{40},
20016 @code{160}, @code{80} and @code{255}.
20017 Allowed range is @code{[0, 255]}.
20018
20019 @item rf
20020 @item gf
20021 @item bf
20022 @item af
20023 Specify the red, green, blue and alpha fade. Default values are @code{15},
20024 @code{10}, @code{5} and @code{5}.
20025 Allowed range is @code{[0, 255]}.
20026
20027 @item zoom
20028 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[0, 10]}.
20029 Values lower than @var{1} will auto adjust zoom factor to maximal possible value.
20030
20031 @item draw
20032 Set the vectorscope drawing mode.
20033
20034 Available values are:
20035 @table @samp
20036 @item dot
20037 Draw dot for each sample.
20038
20039 @item line
20040 Draw line between previous and current sample.
20041 @end table
20042
20043 Default value is @samp{dot}.
20044
20045 @item scale
20046 Specify amplitude scale of audio samples.
20047
20048 Available values are:
20049 @table @samp
20050 @item lin
20051 Linear.
20052
20053 @item sqrt
20054 Square root.
20055
20056 @item cbrt
20057 Cubic root.
20058
20059 @item log
20060 Logarithmic.
20061 @end table
20062
20063 @item swap
20064 Swap left channel axis with right channel axis.
20065
20066 @item mirror
20067 Mirror axis.
20068
20069 @table @samp
20070 @item none
20071 No mirror.
20072
20073 @item x
20074 Mirror only x axis.
20075
20076 @item y
20077 Mirror only y axis.
20078
20079 @item xy
20080 Mirror both axis.
20081 @end table
20082
20083 @end table
20084
20085 @subsection Examples
20086
20087 @itemize
20088 @item
20089 Complete example using @command{ffplay}:
20090 @example
20091 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
20092              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
20093 @end example
20094 @end itemize
20095
20096 @section bench, abench
20097
20098 Benchmark part of a filtergraph.
20099
20100 The filter accepts the following options:
20101
20102 @table @option
20103 @item action
20104 Start or stop a timer.
20105
20106 Available values are:
20107 @table @samp
20108 @item start
20109 Get the current time, set it as frame metadata (using the key
20110 @code{lavfi.bench.start_time}), and forward the frame to the next filter.
20111
20112 @item stop
20113 Get the current time and fetch the @code{lavfi.bench.start_time} metadata from
20114 the input frame metadata to get the time difference. Time difference, average,
20115 maximum and minimum time (respectively @code{t}, @code{avg}, @code{max} and
20116 @code{min}) are then printed. The timestamps are expressed in seconds.
20117 @end table
20118 @end table
20119
20120 @subsection Examples
20121
20122 @itemize
20123 @item
20124 Benchmark @ref{selectivecolor} filter:
20125 @example
20126 bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
20127 @end example
20128 @end itemize
20129
20130 @section concat
20131
20132 Concatenate audio and video streams, joining them together one after the
20133 other.
20134
20135 The filter works on segments of synchronized video and audio streams. All
20136 segments must have the same number of streams of each type, and that will
20137 also be the number of streams at output.
20138
20139 The filter accepts the following options:
20140
20141 @table @option
20142
20143 @item n
20144 Set the number of segments. Default is 2.
20145
20146 @item v
20147 Set the number of output video streams, that is also the number of video
20148 streams in each segment. Default is 1.
20149
20150 @item a
20151 Set the number of output audio streams, that is also the number of audio
20152 streams in each segment. Default is 0.
20153
20154 @item unsafe
20155 Activate unsafe mode: do not fail if segments have a different format.
20156
20157 @end table
20158
20159 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
20160 @var{a} audio outputs.
20161
20162 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
20163 segment, in the same order as the outputs, then the inputs for the second
20164 segment, etc.
20165
20166 Related streams do not always have exactly the same duration, for various
20167 reasons including codec frame size or sloppy authoring. For that reason,
20168 related synchronized streams (e.g. a video and its audio track) should be
20169 concatenated at once. The concat filter will use the duration of the longest
20170 stream in each segment (except the last one), and if necessary pad shorter
20171 audio streams with silence.
20172
20173 For this filter to work correctly, all segments must start at timestamp 0.
20174
20175 All corresponding streams must have the same parameters in all segments; the
20176 filtering system will automatically select a common pixel format for video
20177 streams, and a common sample format, sample rate and channel layout for
20178 audio streams, but other settings, such as resolution, must be converted
20179 explicitly by the user.
20180
20181 Different frame rates are acceptable but will result in variable frame rate
20182 at output; be sure to configure the output file to handle it.
20183
20184 @subsection Examples
20185
20186 @itemize
20187 @item
20188 Concatenate an opening, an episode and an ending, all in bilingual version
20189 (video in stream 0, audio in streams 1 and 2):
20190 @example
20191 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
20192   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
20193    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
20194   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
20195 @end example
20196
20197 @item
20198 Concatenate two parts, handling audio and video separately, using the
20199 (a)movie sources, and adjusting the resolution:
20200 @example
20201 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
20202 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
20203 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
20204 @end example
20205 Note that a desync will happen at the stitch if the audio and video streams
20206 do not have exactly the same duration in the first file.
20207
20208 @end itemize
20209
20210 @subsection Commands
20211
20212 This filter supports the following commands:
20213 @table @option
20214 @item next
20215 Close the current segment and step to the next one
20216 @end table
20217
20218 @section drawgraph, adrawgraph
20219
20220 Draw a graph using input video or audio metadata.
20221
20222 It accepts the following parameters:
20223
20224 @table @option
20225 @item m1
20226 Set 1st frame metadata key from which metadata values will be used to draw a graph.
20227
20228 @item fg1
20229 Set 1st foreground color expression.
20230
20231 @item m2
20232 Set 2nd frame metadata key from which metadata values will be used to draw a graph.
20233
20234 @item fg2
20235 Set 2nd foreground color expression.
20236
20237 @item m3
20238 Set 3rd frame metadata key from which metadata values will be used to draw a graph.
20239
20240 @item fg3
20241 Set 3rd foreground color expression.
20242
20243 @item m4
20244 Set 4th frame metadata key from which metadata values will be used to draw a graph.
20245
20246 @item fg4
20247 Set 4th foreground color expression.
20248
20249 @item min
20250 Set minimal value of metadata value.
20251
20252 @item max
20253 Set maximal value of metadata value.
20254
20255 @item bg
20256 Set graph background color. Default is white.
20257
20258 @item mode
20259 Set graph mode.
20260
20261 Available values for mode is:
20262 @table @samp
20263 @item bar
20264 @item dot
20265 @item line
20266 @end table
20267
20268 Default is @code{line}.
20269
20270 @item slide
20271 Set slide mode.
20272
20273 Available values for slide is:
20274 @table @samp
20275 @item frame
20276 Draw new frame when right border is reached.
20277
20278 @item replace
20279 Replace old columns with new ones.
20280
20281 @item scroll
20282 Scroll from right to left.
20283
20284 @item rscroll
20285 Scroll from left to right.
20286
20287 @item picture
20288 Draw single picture.
20289 @end table
20290
20291 Default is @code{frame}.
20292
20293 @item size
20294 Set size of graph video. For the syntax of this option, check the
20295 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20296 The default value is @code{900x256}.
20297
20298 The foreground color expressions can use the following variables:
20299 @table @option
20300 @item MIN
20301 Minimal value of metadata value.
20302
20303 @item MAX
20304 Maximal value of metadata value.
20305
20306 @item VAL
20307 Current metadata key value.
20308 @end table
20309
20310 The color is defined as 0xAABBGGRR.
20311 @end table
20312
20313 Example using metadata from @ref{signalstats} filter:
20314 @example
20315 signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
20316 @end example
20317
20318 Example using metadata from @ref{ebur128} filter:
20319 @example
20320 ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
20321 @end example
20322
20323 @anchor{ebur128}
20324 @section ebur128
20325
20326 EBU R128 scanner filter. This filter takes an audio stream as input and outputs
20327 it unchanged. By default, it logs a message at a frequency of 10Hz with the
20328 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
20329 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
20330
20331 The filter also has a video output (see the @var{video} option) with a real
20332 time graph to observe the loudness evolution. The graphic contains the logged
20333 message mentioned above, so it is not printed anymore when this option is set,
20334 unless the verbose logging is set. The main graphing area contains the
20335 short-term loudness (3 seconds of analysis), and the gauge on the right is for
20336 the momentary loudness (400 milliseconds), but can optionally be configured
20337 to instead display short-term loudness (see @var{gauge}).
20338
20339 The green area marks a  +/- 1LU target range around the target loudness
20340 (-23LUFS by default, unless modified through @var{target}).
20341
20342 More information about the Loudness Recommendation EBU R128 on
20343 @url{http://tech.ebu.ch/loudness}.
20344
20345 The filter accepts the following options:
20346
20347 @table @option
20348
20349 @item video
20350 Activate the video output. The audio stream is passed unchanged whether this
20351 option is set or no. The video stream will be the first output stream if
20352 activated. Default is @code{0}.
20353
20354 @item size
20355 Set the video size. This option is for video only. For the syntax of this
20356 option, check the
20357 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20358 Default and minimum resolution is @code{640x480}.
20359
20360 @item meter
20361 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
20362 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
20363 other integer value between this range is allowed.
20364
20365 @item metadata
20366 Set metadata injection. If set to @code{1}, the audio input will be segmented
20367 into 100ms output frames, each of them containing various loudness information
20368 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
20369
20370 Default is @code{0}.
20371
20372 @item framelog
20373 Force the frame logging level.
20374
20375 Available values are:
20376 @table @samp
20377 @item info
20378 information logging level
20379 @item verbose
20380 verbose logging level
20381 @end table
20382
20383 By default, the logging level is set to @var{info}. If the @option{video} or
20384 the @option{metadata} options are set, it switches to @var{verbose}.
20385
20386 @item peak
20387 Set peak mode(s).
20388
20389 Available modes can be cumulated (the option is a @code{flag} type). Possible
20390 values are:
20391 @table @samp
20392 @item none
20393 Disable any peak mode (default).
20394 @item sample
20395 Enable sample-peak mode.
20396
20397 Simple peak mode looking for the higher sample value. It logs a message
20398 for sample-peak (identified by @code{SPK}).
20399 @item true
20400 Enable true-peak mode.
20401
20402 If enabled, the peak lookup is done on an over-sampled version of the input
20403 stream for better peak accuracy. It logs a message for true-peak.
20404 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
20405 This mode requires a build with @code{libswresample}.
20406 @end table
20407
20408 @item dualmono
20409 Treat mono input files as "dual mono". If a mono file is intended for playback
20410 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
20411 If set to @code{true}, this option will compensate for this effect.
20412 Multi-channel input files are not affected by this option.
20413
20414 @item panlaw
20415 Set a specific pan law to be used for the measurement of dual mono files.
20416 This parameter is optional, and has a default value of -3.01dB.
20417
20418 @item target
20419 Set a specific target level (in LUFS) used as relative zero in the visualization.
20420 This parameter is optional and has a default value of -23LUFS as specified
20421 by EBU R128. However, material published online may prefer a level of -16LUFS
20422 (e.g. for use with podcasts or video platforms).
20423
20424 @item gauge
20425 Set the value displayed by the gauge. Valid values are @code{momentary} and s
20426 @code{shortterm}. By default the momentary value will be used, but in certain
20427 scenarios it may be more useful to observe the short term value instead (e.g.
20428 live mixing).
20429
20430 @item scale
20431 Sets the display scale for the loudness. Valid parameters are @code{absolute}
20432 (in LUFS) or @code{relative} (LU) relative to the target. This only affects the
20433 video output, not the summary or continuous log output.
20434 @end table
20435
20436 @subsection Examples
20437
20438 @itemize
20439 @item
20440 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
20441 @example
20442 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
20443 @end example
20444
20445 @item
20446 Run an analysis with @command{ffmpeg}:
20447 @example
20448 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
20449 @end example
20450 @end itemize
20451
20452 @section interleave, ainterleave
20453
20454 Temporally interleave frames from several inputs.
20455
20456 @code{interleave} works with video inputs, @code{ainterleave} with audio.
20457
20458 These filters read frames from several inputs and send the oldest
20459 queued frame to the output.
20460
20461 Input streams must have well defined, monotonically increasing frame
20462 timestamp values.
20463
20464 In order to submit one frame to output, these filters need to enqueue
20465 at least one frame for each input, so they cannot work in case one
20466 input is not yet terminated and will not receive incoming frames.
20467
20468 For example consider the case when one input is a @code{select} filter
20469 which always drops input frames. The @code{interleave} filter will keep
20470 reading from that input, but it will never be able to send new frames
20471 to output until the input sends an end-of-stream signal.
20472
20473 Also, depending on inputs synchronization, the filters will drop
20474 frames in case one input receives more frames than the other ones, and
20475 the queue is already filled.
20476
20477 These filters accept the following options:
20478
20479 @table @option
20480 @item nb_inputs, n
20481 Set the number of different inputs, it is 2 by default.
20482 @end table
20483
20484 @subsection Examples
20485
20486 @itemize
20487 @item
20488 Interleave frames belonging to different streams using @command{ffmpeg}:
20489 @example
20490 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
20491 @end example
20492
20493 @item
20494 Add flickering blur effect:
20495 @example
20496 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
20497 @end example
20498 @end itemize
20499
20500 @section metadata, ametadata
20501
20502 Manipulate frame metadata.
20503
20504 This filter accepts the following options:
20505
20506 @table @option
20507 @item mode
20508 Set mode of operation of the filter.
20509
20510 Can be one of the following:
20511
20512 @table @samp
20513 @item select
20514 If both @code{value} and @code{key} is set, select frames
20515 which have such metadata. If only @code{key} is set, select
20516 every frame that has such key in metadata.
20517
20518 @item add
20519 Add new metadata @code{key} and @code{value}. If key is already available
20520 do nothing.
20521
20522 @item modify
20523 Modify value of already present key.
20524
20525 @item delete
20526 If @code{value} is set, delete only keys that have such value.
20527 Otherwise, delete key. If @code{key} is not set, delete all metadata values in
20528 the frame.
20529
20530 @item print
20531 Print key and its value if metadata was found. If @code{key} is not set print all
20532 metadata values available in frame.
20533 @end table
20534
20535 @item key
20536 Set key used with all modes. Must be set for all modes except @code{print} and @code{delete}.
20537
20538 @item value
20539 Set metadata value which will be used. This option is mandatory for
20540 @code{modify} and @code{add} mode.
20541
20542 @item function
20543 Which function to use when comparing metadata value and @code{value}.
20544
20545 Can be one of following:
20546
20547 @table @samp
20548 @item same_str
20549 Values are interpreted as strings, returns true if metadata value is same as @code{value}.
20550
20551 @item starts_with
20552 Values are interpreted as strings, returns true if metadata value starts with
20553 the @code{value} option string.
20554
20555 @item less
20556 Values are interpreted as floats, returns true if metadata value is less than @code{value}.
20557
20558 @item equal
20559 Values are interpreted as floats, returns true if @code{value} is equal with metadata value.
20560
20561 @item greater
20562 Values are interpreted as floats, returns true if metadata value is greater than @code{value}.
20563
20564 @item expr
20565 Values are interpreted as floats, returns true if expression from option @code{expr}
20566 evaluates to true.
20567 @end table
20568
20569 @item expr
20570 Set expression which is used when @code{function} is set to @code{expr}.
20571 The expression is evaluated through the eval API and can contain the following
20572 constants:
20573
20574 @table @option
20575 @item VALUE1
20576 Float representation of @code{value} from metadata key.
20577
20578 @item VALUE2
20579 Float representation of @code{value} as supplied by user in @code{value} option.
20580 @end table
20581
20582 @item file
20583 If specified in @code{print} mode, output is written to the named file. Instead of
20584 plain filename any writable url can be specified. Filename ``-'' is a shorthand
20585 for standard output. If @code{file} option is not set, output is written to the log
20586 with AV_LOG_INFO loglevel.
20587
20588 @end table
20589
20590 @subsection Examples
20591
20592 @itemize
20593 @item
20594 Print all metadata values for frames with key @code{lavfi.signalstats.YDIF} with values
20595 between 0 and 1.
20596 @example
20597 signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
20598 @end example
20599 @item
20600 Print silencedetect output to file @file{metadata.txt}.
20601 @example
20602 silencedetect,ametadata=mode=print:file=metadata.txt
20603 @end example
20604 @item
20605 Direct all metadata to a pipe with file descriptor 4.
20606 @example
20607 metadata=mode=print:file='pipe\:4'
20608 @end example
20609 @end itemize
20610
20611 @section perms, aperms
20612
20613 Set read/write permissions for the output frames.
20614
20615 These filters are mainly aimed at developers to test direct path in the
20616 following filter in the filtergraph.
20617
20618 The filters accept the following options:
20619
20620 @table @option
20621 @item mode
20622 Select the permissions mode.
20623
20624 It accepts the following values:
20625 @table @samp
20626 @item none
20627 Do nothing. This is the default.
20628 @item ro
20629 Set all the output frames read-only.
20630 @item rw
20631 Set all the output frames directly writable.
20632 @item toggle
20633 Make the frame read-only if writable, and writable if read-only.
20634 @item random
20635 Set each output frame read-only or writable randomly.
20636 @end table
20637
20638 @item seed
20639 Set the seed for the @var{random} mode, must be an integer included between
20640 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
20641 @code{-1}, the filter will try to use a good random seed on a best effort
20642 basis.
20643 @end table
20644
20645 Note: in case of auto-inserted filter between the permission filter and the
20646 following one, the permission might not be received as expected in that
20647 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
20648 perms/aperms filter can avoid this problem.
20649
20650 @section realtime, arealtime
20651
20652 Slow down filtering to match real time approximately.
20653
20654 These filters will pause the filtering for a variable amount of time to
20655 match the output rate with the input timestamps.
20656 They are similar to the @option{re} option to @code{ffmpeg}.
20657
20658 They accept the following options:
20659
20660 @table @option
20661 @item limit
20662 Time limit for the pauses. Any pause longer than that will be considered
20663 a timestamp discontinuity and reset the timer. Default is 2 seconds.
20664 @end table
20665
20666 @anchor{select}
20667 @section select, aselect
20668
20669 Select frames to pass in output.
20670
20671 This filter accepts the following options:
20672
20673 @table @option
20674
20675 @item expr, e
20676 Set expression, which is evaluated for each input frame.
20677
20678 If the expression is evaluated to zero, the frame is discarded.
20679
20680 If the evaluation result is negative or NaN, the frame is sent to the
20681 first output; otherwise it is sent to the output with index
20682 @code{ceil(val)-1}, assuming that the input index starts from 0.
20683
20684 For example a value of @code{1.2} corresponds to the output with index
20685 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
20686
20687 @item outputs, n
20688 Set the number of outputs. The output to which to send the selected
20689 frame is based on the result of the evaluation. Default value is 1.
20690 @end table
20691
20692 The expression can contain the following constants:
20693
20694 @table @option
20695 @item n
20696 The (sequential) number of the filtered frame, starting from 0.
20697
20698 @item selected_n
20699 The (sequential) number of the selected frame, starting from 0.
20700
20701 @item prev_selected_n
20702 The sequential number of the last selected frame. It's NAN if undefined.
20703
20704 @item TB
20705 The timebase of the input timestamps.
20706
20707 @item pts
20708 The PTS (Presentation TimeStamp) of the filtered video frame,
20709 expressed in @var{TB} units. It's NAN if undefined.
20710
20711 @item t
20712 The PTS of the filtered video frame,
20713 expressed in seconds. It's NAN if undefined.
20714
20715 @item prev_pts
20716 The PTS of the previously filtered video frame. It's NAN if undefined.
20717
20718 @item prev_selected_pts
20719 The PTS of the last previously filtered video frame. It's NAN if undefined.
20720
20721 @item prev_selected_t
20722 The PTS of the last previously selected video frame, expressed in seconds. It's NAN if undefined.
20723
20724 @item start_pts
20725 The PTS of the first video frame in the video. It's NAN if undefined.
20726
20727 @item start_t
20728 The time of the first video frame in the video. It's NAN if undefined.
20729
20730 @item pict_type @emph{(video only)}
20731 The type of the filtered frame. It can assume one of the following
20732 values:
20733 @table @option
20734 @item I
20735 @item P
20736 @item B
20737 @item S
20738 @item SI
20739 @item SP
20740 @item BI
20741 @end table
20742
20743 @item interlace_type @emph{(video only)}
20744 The frame interlace type. It can assume one of the following values:
20745 @table @option
20746 @item PROGRESSIVE
20747 The frame is progressive (not interlaced).
20748 @item TOPFIRST
20749 The frame is top-field-first.
20750 @item BOTTOMFIRST
20751 The frame is bottom-field-first.
20752 @end table
20753
20754 @item consumed_sample_n @emph{(audio only)}
20755 the number of selected samples before the current frame
20756
20757 @item samples_n @emph{(audio only)}
20758 the number of samples in the current frame
20759
20760 @item sample_rate @emph{(audio only)}
20761 the input sample rate
20762
20763 @item key
20764 This is 1 if the filtered frame is a key-frame, 0 otherwise.
20765
20766 @item pos
20767 the position in the file of the filtered frame, -1 if the information
20768 is not available (e.g. for synthetic video)
20769
20770 @item scene @emph{(video only)}
20771 value between 0 and 1 to indicate a new scene; a low value reflects a low
20772 probability for the current frame to introduce a new scene, while a higher
20773 value means the current frame is more likely to be one (see the example below)
20774
20775 @item concatdec_select
20776 The concat demuxer can select only part of a concat input file by setting an
20777 inpoint and an outpoint, but the output packets may not be entirely contained
20778 in the selected interval. By using this variable, it is possible to skip frames
20779 generated by the concat demuxer which are not exactly contained in the selected
20780 interval.
20781
20782 This works by comparing the frame pts against the @var{lavf.concat.start_time}
20783 and the @var{lavf.concat.duration} packet metadata values which are also
20784 present in the decoded frames.
20785
20786 The @var{concatdec_select} variable is -1 if the frame pts is at least
20787 start_time and either the duration metadata is missing or the frame pts is less
20788 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
20789 missing.
20790
20791 That basically means that an input frame is selected if its pts is within the
20792 interval set by the concat demuxer.
20793
20794 @end table
20795
20796 The default value of the select expression is "1".
20797
20798 @subsection Examples
20799
20800 @itemize
20801 @item
20802 Select all frames in input:
20803 @example
20804 select
20805 @end example
20806
20807 The example above is the same as:
20808 @example
20809 select=1
20810 @end example
20811
20812 @item
20813 Skip all frames:
20814 @example
20815 select=0
20816 @end example
20817
20818 @item
20819 Select only I-frames:
20820 @example
20821 select='eq(pict_type\,I)'
20822 @end example
20823
20824 @item
20825 Select one frame every 100:
20826 @example
20827 select='not(mod(n\,100))'
20828 @end example
20829
20830 @item
20831 Select only frames contained in the 10-20 time interval:
20832 @example
20833 select=between(t\,10\,20)
20834 @end example
20835
20836 @item
20837 Select only I-frames contained in the 10-20 time interval:
20838 @example
20839 select=between(t\,10\,20)*eq(pict_type\,I)
20840 @end example
20841
20842 @item
20843 Select frames with a minimum distance of 10 seconds:
20844 @example
20845 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
20846 @end example
20847
20848 @item
20849 Use aselect to select only audio frames with samples number > 100:
20850 @example
20851 aselect='gt(samples_n\,100)'
20852 @end example
20853
20854 @item
20855 Create a mosaic of the first scenes:
20856 @example
20857 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
20858 @end example
20859
20860 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
20861 choice.
20862
20863 @item
20864 Send even and odd frames to separate outputs, and compose them:
20865 @example
20866 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
20867 @end example
20868
20869 @item
20870 Select useful frames from an ffconcat file which is using inpoints and
20871 outpoints but where the source files are not intra frame only.
20872 @example
20873 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
20874 @end example
20875 @end itemize
20876
20877 @section sendcmd, asendcmd
20878
20879 Send commands to filters in the filtergraph.
20880
20881 These filters read commands to be sent to other filters in the
20882 filtergraph.
20883
20884 @code{sendcmd} must be inserted between two video filters,
20885 @code{asendcmd} must be inserted between two audio filters, but apart
20886 from that they act the same way.
20887
20888 The specification of commands can be provided in the filter arguments
20889 with the @var{commands} option, or in a file specified by the
20890 @var{filename} option.
20891
20892 These filters accept the following options:
20893 @table @option
20894 @item commands, c
20895 Set the commands to be read and sent to the other filters.
20896 @item filename, f
20897 Set the filename of the commands to be read and sent to the other
20898 filters.
20899 @end table
20900
20901 @subsection Commands syntax
20902
20903 A commands description consists of a sequence of interval
20904 specifications, comprising a list of commands to be executed when a
20905 particular event related to that interval occurs. The occurring event
20906 is typically the current frame time entering or leaving a given time
20907 interval.
20908
20909 An interval is specified by the following syntax:
20910 @example
20911 @var{START}[-@var{END}] @var{COMMANDS};
20912 @end example
20913
20914 The time interval is specified by the @var{START} and @var{END} times.
20915 @var{END} is optional and defaults to the maximum time.
20916
20917 The current frame time is considered within the specified interval if
20918 it is included in the interval [@var{START}, @var{END}), that is when
20919 the time is greater or equal to @var{START} and is lesser than
20920 @var{END}.
20921
20922 @var{COMMANDS} consists of a sequence of one or more command
20923 specifications, separated by ",", relating to that interval.  The
20924 syntax of a command specification is given by:
20925 @example
20926 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
20927 @end example
20928
20929 @var{FLAGS} is optional and specifies the type of events relating to
20930 the time interval which enable sending the specified command, and must
20931 be a non-null sequence of identifier flags separated by "+" or "|" and
20932 enclosed between "[" and "]".
20933
20934 The following flags are recognized:
20935 @table @option
20936 @item enter
20937 The command is sent when the current frame timestamp enters the
20938 specified interval. In other words, the command is sent when the
20939 previous frame timestamp was not in the given interval, and the
20940 current is.
20941
20942 @item leave
20943 The command is sent when the current frame timestamp leaves the
20944 specified interval. In other words, the command is sent when the
20945 previous frame timestamp was in the given interval, and the
20946 current is not.
20947 @end table
20948
20949 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
20950 assumed.
20951
20952 @var{TARGET} specifies the target of the command, usually the name of
20953 the filter class or a specific filter instance name.
20954
20955 @var{COMMAND} specifies the name of the command for the target filter.
20956
20957 @var{ARG} is optional and specifies the optional list of argument for
20958 the given @var{COMMAND}.
20959
20960 Between one interval specification and another, whitespaces, or
20961 sequences of characters starting with @code{#} until the end of line,
20962 are ignored and can be used to annotate comments.
20963
20964 A simplified BNF description of the commands specification syntax
20965 follows:
20966 @example
20967 @var{COMMAND_FLAG}  ::= "enter" | "leave"
20968 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
20969 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
20970 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
20971 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
20972 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
20973 @end example
20974
20975 @subsection Examples
20976
20977 @itemize
20978 @item
20979 Specify audio tempo change at second 4:
20980 @example
20981 asendcmd=c='4.0 atempo tempo 1.5',atempo
20982 @end example
20983
20984 @item
20985 Target a specific filter instance:
20986 @example
20987 asendcmd=c='4.0 atempo@@my tempo 1.5',atempo@@my
20988 @end example
20989
20990 @item
20991 Specify a list of drawtext and hue commands in a file.
20992 @example
20993 # show text in the interval 5-10
20994 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
20995          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
20996
20997 # desaturate the image in the interval 15-20
20998 15.0-20.0 [enter] hue s 0,
20999           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
21000           [leave] hue s 1,
21001           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
21002
21003 # apply an exponential saturation fade-out effect, starting from time 25
21004 25 [enter] hue s exp(25-t)
21005 @end example
21006
21007 A filtergraph allowing to read and process the above command list
21008 stored in a file @file{test.cmd}, can be specified with:
21009 @example
21010 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
21011 @end example
21012 @end itemize
21013
21014 @anchor{setpts}
21015 @section setpts, asetpts
21016
21017 Change the PTS (presentation timestamp) of the input frames.
21018
21019 @code{setpts} works on video frames, @code{asetpts} on audio frames.
21020
21021 This filter accepts the following options:
21022
21023 @table @option
21024
21025 @item expr
21026 The expression which is evaluated for each frame to construct its timestamp.
21027
21028 @end table
21029
21030 The expression is evaluated through the eval API and can contain the following
21031 constants:
21032
21033 @table @option
21034 @item FRAME_RATE, FR
21035 frame rate, only defined for constant frame-rate video
21036
21037 @item PTS
21038 The presentation timestamp in input
21039
21040 @item N
21041 The count of the input frame for video or the number of consumed samples,
21042 not including the current frame for audio, starting from 0.
21043
21044 @item NB_CONSUMED_SAMPLES
21045 The number of consumed samples, not including the current frame (only
21046 audio)
21047
21048 @item NB_SAMPLES, S
21049 The number of samples in the current frame (only audio)
21050
21051 @item SAMPLE_RATE, SR
21052 The audio sample rate.
21053
21054 @item STARTPTS
21055 The PTS of the first frame.
21056
21057 @item STARTT
21058 the time in seconds of the first frame
21059
21060 @item INTERLACED
21061 State whether the current frame is interlaced.
21062
21063 @item T
21064 the time in seconds of the current frame
21065
21066 @item POS
21067 original position in the file of the frame, or undefined if undefined
21068 for the current frame
21069
21070 @item PREV_INPTS
21071 The previous input PTS.
21072
21073 @item PREV_INT
21074 previous input time in seconds
21075
21076 @item PREV_OUTPTS
21077 The previous output PTS.
21078
21079 @item PREV_OUTT
21080 previous output time in seconds
21081
21082 @item RTCTIME
21083 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
21084 instead.
21085
21086 @item RTCSTART
21087 The wallclock (RTC) time at the start of the movie in microseconds.
21088
21089 @item TB
21090 The timebase of the input timestamps.
21091
21092 @end table
21093
21094 @subsection Examples
21095
21096 @itemize
21097 @item
21098 Start counting PTS from zero
21099 @example
21100 setpts=PTS-STARTPTS
21101 @end example
21102
21103 @item
21104 Apply fast motion effect:
21105 @example
21106 setpts=0.5*PTS
21107 @end example
21108
21109 @item
21110 Apply slow motion effect:
21111 @example
21112 setpts=2.0*PTS
21113 @end example
21114
21115 @item
21116 Set fixed rate of 25 frames per second:
21117 @example
21118 setpts=N/(25*TB)
21119 @end example
21120
21121 @item
21122 Set fixed rate 25 fps with some jitter:
21123 @example
21124 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
21125 @end example
21126
21127 @item
21128 Apply an offset of 10 seconds to the input PTS:
21129 @example
21130 setpts=PTS+10/TB
21131 @end example
21132
21133 @item
21134 Generate timestamps from a "live source" and rebase onto the current timebase:
21135 @example
21136 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
21137 @end example
21138
21139 @item
21140 Generate timestamps by counting samples:
21141 @example
21142 asetpts=N/SR/TB
21143 @end example
21144
21145 @end itemize
21146
21147 @section setrange
21148
21149 Force color range for the output video frame.
21150
21151 The @code{setrange} filter marks the color range property for the
21152 output frames. It does not change the input frame, but only sets the
21153 corresponding property, which affects how the frame is treated by
21154 following filters.
21155
21156 The filter accepts the following options:
21157
21158 @table @option
21159
21160 @item range
21161 Available values are:
21162
21163 @table @samp
21164 @item auto
21165 Keep the same color range property.
21166
21167 @item unspecified, unknown
21168 Set the color range as unspecified.
21169
21170 @item limited, tv, mpeg
21171 Set the color range as limited.
21172
21173 @item full, pc, jpeg
21174 Set the color range as full.
21175 @end table
21176 @end table
21177
21178 @section settb, asettb
21179
21180 Set the timebase to use for the output frames timestamps.
21181 It is mainly useful for testing timebase configuration.
21182
21183 It accepts the following parameters:
21184
21185 @table @option
21186
21187 @item expr, tb
21188 The expression which is evaluated into the output timebase.
21189
21190 @end table
21191
21192 The value for @option{tb} is an arithmetic expression representing a
21193 rational. The expression can contain the constants "AVTB" (the default
21194 timebase), "intb" (the input timebase) and "sr" (the sample rate,
21195 audio only). Default value is "intb".
21196
21197 @subsection Examples
21198
21199 @itemize
21200 @item
21201 Set the timebase to 1/25:
21202 @example
21203 settb=expr=1/25
21204 @end example
21205
21206 @item
21207 Set the timebase to 1/10:
21208 @example
21209 settb=expr=0.1
21210 @end example
21211
21212 @item
21213 Set the timebase to 1001/1000:
21214 @example
21215 settb=1+0.001
21216 @end example
21217
21218 @item
21219 Set the timebase to 2*intb:
21220 @example
21221 settb=2*intb
21222 @end example
21223
21224 @item
21225 Set the default timebase value:
21226 @example
21227 settb=AVTB
21228 @end example
21229 @end itemize
21230
21231 @section showcqt
21232 Convert input audio to a video output representing frequency spectrum
21233 logarithmically using Brown-Puckette constant Q transform algorithm with
21234 direct frequency domain coefficient calculation (but the transform itself
21235 is not really constant Q, instead the Q factor is actually variable/clamped),
21236 with musical tone scale, from E0 to D#10.
21237
21238 The filter accepts the following options:
21239
21240 @table @option
21241 @item size, s
21242 Specify the video size for the output. It must be even. For the syntax of this option,
21243 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21244 Default value is @code{1920x1080}.
21245
21246 @item fps, rate, r
21247 Set the output frame rate. Default value is @code{25}.
21248
21249 @item bar_h
21250 Set the bargraph height. It must be even. Default value is @code{-1} which
21251 computes the bargraph height automatically.
21252
21253 @item axis_h
21254 Set the axis height. It must be even. Default value is @code{-1} which computes
21255 the axis height automatically.
21256
21257 @item sono_h
21258 Set the sonogram height. It must be even. Default value is @code{-1} which
21259 computes the sonogram height automatically.
21260
21261 @item fullhd
21262 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
21263 instead. Default value is @code{1}.
21264
21265 @item sono_v, volume
21266 Specify the sonogram volume expression. It can contain variables:
21267 @table @option
21268 @item bar_v
21269 the @var{bar_v} evaluated expression
21270 @item frequency, freq, f
21271 the frequency where it is evaluated
21272 @item timeclamp, tc
21273 the value of @var{timeclamp} option
21274 @end table
21275 and functions:
21276 @table @option
21277 @item a_weighting(f)
21278 A-weighting of equal loudness
21279 @item b_weighting(f)
21280 B-weighting of equal loudness
21281 @item c_weighting(f)
21282 C-weighting of equal loudness.
21283 @end table
21284 Default value is @code{16}.
21285
21286 @item bar_v, volume2
21287 Specify the bargraph volume expression. It can contain variables:
21288 @table @option
21289 @item sono_v
21290 the @var{sono_v} evaluated expression
21291 @item frequency, freq, f
21292 the frequency where it is evaluated
21293 @item timeclamp, tc
21294 the value of @var{timeclamp} option
21295 @end table
21296 and functions:
21297 @table @option
21298 @item a_weighting(f)
21299 A-weighting of equal loudness
21300 @item b_weighting(f)
21301 B-weighting of equal loudness
21302 @item c_weighting(f)
21303 C-weighting of equal loudness.
21304 @end table
21305 Default value is @code{sono_v}.
21306
21307 @item sono_g, gamma
21308 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
21309 higher gamma makes the spectrum having more range. Default value is @code{3}.
21310 Acceptable range is @code{[1, 7]}.
21311
21312 @item bar_g, gamma2
21313 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
21314 @code{[1, 7]}.
21315
21316 @item bar_t
21317 Specify the bargraph transparency level. Lower value makes the bargraph sharper.
21318 Default value is @code{1}. Acceptable range is @code{[0, 1]}.
21319
21320 @item timeclamp, tc
21321 Specify the transform timeclamp. At low frequency, there is trade-off between
21322 accuracy in time domain and frequency domain. If timeclamp is lower,
21323 event in time domain is represented more accurately (such as fast bass drum),
21324 otherwise event in frequency domain is represented more accurately
21325 (such as bass guitar). Acceptable range is @code{[0.002, 1]}. Default value is @code{0.17}.
21326
21327 @item attack
21328 Set attack time in seconds. The default is @code{0} (disabled). Otherwise, it
21329 limits future samples by applying asymmetric windowing in time domain, useful
21330 when low latency is required. Accepted range is @code{[0, 1]}.
21331
21332 @item basefreq
21333 Specify the transform base frequency. Default value is @code{20.01523126408007475},
21334 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
21335
21336 @item endfreq
21337 Specify the transform end frequency. Default value is @code{20495.59681441799654},
21338 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
21339
21340 @item coeffclamp
21341 This option is deprecated and ignored.
21342
21343 @item tlength
21344 Specify the transform length in time domain. Use this option to control accuracy
21345 trade-off between time domain and frequency domain at every frequency sample.
21346 It can contain variables:
21347 @table @option
21348 @item frequency, freq, f
21349 the frequency where it is evaluated
21350 @item timeclamp, tc
21351 the value of @var{timeclamp} option.
21352 @end table
21353 Default value is @code{384*tc/(384+tc*f)}.
21354
21355 @item count
21356 Specify the transform count for every video frame. Default value is @code{6}.
21357 Acceptable range is @code{[1, 30]}.
21358
21359 @item fcount
21360 Specify the transform count for every single pixel. Default value is @code{0},
21361 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
21362
21363 @item fontfile
21364 Specify font file for use with freetype to draw the axis. If not specified,
21365 use embedded font. Note that drawing with font file or embedded font is not
21366 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
21367 option instead.
21368
21369 @item font
21370 Specify fontconfig pattern. This has lower priority than @var{fontfile}.
21371 The : in the pattern may be replaced by | to avoid unnecessary escaping.
21372
21373 @item fontcolor
21374 Specify font color expression. This is arithmetic expression that should return
21375 integer value 0xRRGGBB. It can contain variables:
21376 @table @option
21377 @item frequency, freq, f
21378 the frequency where it is evaluated
21379 @item timeclamp, tc
21380 the value of @var{timeclamp} option
21381 @end table
21382 and functions:
21383 @table @option
21384 @item midi(f)
21385 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
21386 @item r(x), g(x), b(x)
21387 red, green, and blue value of intensity x.
21388 @end table
21389 Default value is @code{st(0, (midi(f)-59.5)/12);
21390 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
21391 r(1-ld(1)) + b(ld(1))}.
21392
21393 @item axisfile
21394 Specify image file to draw the axis. This option override @var{fontfile} and
21395 @var{fontcolor} option.
21396
21397 @item axis, text
21398 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
21399 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
21400 Default value is @code{1}.
21401
21402 @item csp
21403 Set colorspace. The accepted values are:
21404 @table @samp
21405 @item unspecified
21406 Unspecified (default)
21407
21408 @item bt709
21409 BT.709
21410
21411 @item fcc
21412 FCC
21413
21414 @item bt470bg
21415 BT.470BG or BT.601-6 625
21416
21417 @item smpte170m
21418 SMPTE-170M or BT.601-6 525
21419
21420 @item smpte240m
21421 SMPTE-240M
21422
21423 @item bt2020ncl
21424 BT.2020 with non-constant luminance
21425
21426 @end table
21427
21428 @item cscheme
21429 Set spectrogram color scheme. This is list of floating point values with format
21430 @code{left_r|left_g|left_b|right_r|right_g|right_b}.
21431 The default is @code{1|0.5|0|0|0.5|1}.
21432
21433 @end table
21434
21435 @subsection Examples
21436
21437 @itemize
21438 @item
21439 Playing audio while showing the spectrum:
21440 @example
21441 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
21442 @end example
21443
21444 @item
21445 Same as above, but with frame rate 30 fps:
21446 @example
21447 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
21448 @end example
21449
21450 @item
21451 Playing at 1280x720:
21452 @example
21453 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
21454 @end example
21455
21456 @item
21457 Disable sonogram display:
21458 @example
21459 sono_h=0
21460 @end example
21461
21462 @item
21463 A1 and its harmonics: A1, A2, (near)E3, A3:
21464 @example
21465 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),
21466                  asplit[a][out1]; [a] showcqt [out0]'
21467 @end example
21468
21469 @item
21470 Same as above, but with more accuracy in frequency domain:
21471 @example
21472 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),
21473                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
21474 @end example
21475
21476 @item
21477 Custom volume:
21478 @example
21479 bar_v=10:sono_v=bar_v*a_weighting(f)
21480 @end example
21481
21482 @item
21483 Custom gamma, now spectrum is linear to the amplitude.
21484 @example
21485 bar_g=2:sono_g=2
21486 @end example
21487
21488 @item
21489 Custom tlength equation:
21490 @example
21491 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)))'
21492 @end example
21493
21494 @item
21495 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
21496 @example
21497 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
21498 @end example
21499
21500 @item
21501 Custom font using fontconfig:
21502 @example
21503 font='Courier New,Monospace,mono|bold'
21504 @end example
21505
21506 @item
21507 Custom frequency range with custom axis using image file:
21508 @example
21509 axisfile=myaxis.png:basefreq=40:endfreq=10000
21510 @end example
21511 @end itemize
21512
21513 @section showfreqs
21514
21515 Convert input audio to video output representing the audio power spectrum.
21516 Audio amplitude is on Y-axis while frequency is on X-axis.
21517
21518 The filter accepts the following options:
21519
21520 @table @option
21521 @item size, s
21522 Specify size of video. For the syntax of this option, check the
21523 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21524 Default is @code{1024x512}.
21525
21526 @item mode
21527 Set display mode.
21528 This set how each frequency bin will be represented.
21529
21530 It accepts the following values:
21531 @table @samp
21532 @item line
21533 @item bar
21534 @item dot
21535 @end table
21536 Default is @code{bar}.
21537
21538 @item ascale
21539 Set amplitude scale.
21540
21541 It accepts the following values:
21542 @table @samp
21543 @item lin
21544 Linear scale.
21545
21546 @item sqrt
21547 Square root scale.
21548
21549 @item cbrt
21550 Cubic root scale.
21551
21552 @item log
21553 Logarithmic scale.
21554 @end table
21555 Default is @code{log}.
21556
21557 @item fscale
21558 Set frequency scale.
21559
21560 It accepts the following values:
21561 @table @samp
21562 @item lin
21563 Linear scale.
21564
21565 @item log
21566 Logarithmic scale.
21567
21568 @item rlog
21569 Reverse logarithmic scale.
21570 @end table
21571 Default is @code{lin}.
21572
21573 @item win_size
21574 Set window size.
21575
21576 It accepts the following values:
21577 @table @samp
21578 @item w16
21579 @item w32
21580 @item w64
21581 @item w128
21582 @item w256
21583 @item w512
21584 @item w1024
21585 @item w2048
21586 @item w4096
21587 @item w8192
21588 @item w16384
21589 @item w32768
21590 @item w65536
21591 @end table
21592 Default is @code{w2048}
21593
21594 @item win_func
21595 Set windowing function.
21596
21597 It accepts the following values:
21598 @table @samp
21599 @item rect
21600 @item bartlett
21601 @item hanning
21602 @item hamming
21603 @item blackman
21604 @item welch
21605 @item flattop
21606 @item bharris
21607 @item bnuttall
21608 @item bhann
21609 @item sine
21610 @item nuttall
21611 @item lanczos
21612 @item gauss
21613 @item tukey
21614 @item dolph
21615 @item cauchy
21616 @item parzen
21617 @item poisson
21618 @item bohman
21619 @end table
21620 Default is @code{hanning}.
21621
21622 @item overlap
21623 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
21624 which means optimal overlap for selected window function will be picked.
21625
21626 @item averaging
21627 Set time averaging. Setting this to 0 will display current maximal peaks.
21628 Default is @code{1}, which means time averaging is disabled.
21629
21630 @item colors
21631 Specify list of colors separated by space or by '|' which will be used to
21632 draw channel frequencies. Unrecognized or missing colors will be replaced
21633 by white color.
21634
21635 @item cmode
21636 Set channel display mode.
21637
21638 It accepts the following values:
21639 @table @samp
21640 @item combined
21641 @item separate
21642 @end table
21643 Default is @code{combined}.
21644
21645 @item minamp
21646 Set minimum amplitude used in @code{log} amplitude scaler.
21647
21648 @end table
21649
21650 @anchor{showspectrum}
21651 @section showspectrum
21652
21653 Convert input audio to a video output, representing the audio frequency
21654 spectrum.
21655
21656 The filter accepts the following options:
21657
21658 @table @option
21659 @item size, s
21660 Specify the video size for the output. For the syntax of this option, check the
21661 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21662 Default value is @code{640x512}.
21663
21664 @item slide
21665 Specify how the spectrum should slide along the window.
21666
21667 It accepts the following values:
21668 @table @samp
21669 @item replace
21670 the samples start again on the left when they reach the right
21671 @item scroll
21672 the samples scroll from right to left
21673 @item fullframe
21674 frames are only produced when the samples reach the right
21675 @item rscroll
21676 the samples scroll from left to right
21677 @end table
21678
21679 Default value is @code{replace}.
21680
21681 @item mode
21682 Specify display mode.
21683
21684 It accepts the following values:
21685 @table @samp
21686 @item combined
21687 all channels are displayed in the same row
21688 @item separate
21689 all channels are displayed in separate rows
21690 @end table
21691
21692 Default value is @samp{combined}.
21693
21694 @item color
21695 Specify display color mode.
21696
21697 It accepts the following values:
21698 @table @samp
21699 @item channel
21700 each channel is displayed in a separate color
21701 @item intensity
21702 each channel is displayed using the same color scheme
21703 @item rainbow
21704 each channel is displayed using the rainbow color scheme
21705 @item moreland
21706 each channel is displayed using the moreland color scheme
21707 @item nebulae
21708 each channel is displayed using the nebulae color scheme
21709 @item fire
21710 each channel is displayed using the fire color scheme
21711 @item fiery
21712 each channel is displayed using the fiery color scheme
21713 @item fruit
21714 each channel is displayed using the fruit color scheme
21715 @item cool
21716 each channel is displayed using the cool color scheme
21717 @item magma
21718 each channel is displayed using the magma color scheme
21719 @item green
21720 each channel is displayed using the green color scheme
21721 @item viridis
21722 each channel is displayed using the viridis color scheme
21723 @item plasma
21724 each channel is displayed using the plasma color scheme
21725 @item cividis
21726 each channel is displayed using the cividis color scheme
21727 @item terrain
21728 each channel is displayed using the terrain color scheme
21729 @end table
21730
21731 Default value is @samp{channel}.
21732
21733 @item scale
21734 Specify scale used for calculating intensity color values.
21735
21736 It accepts the following values:
21737 @table @samp
21738 @item lin
21739 linear
21740 @item sqrt
21741 square root, default
21742 @item cbrt
21743 cubic root
21744 @item log
21745 logarithmic
21746 @item 4thrt
21747 4th root
21748 @item 5thrt
21749 5th root
21750 @end table
21751
21752 Default value is @samp{sqrt}.
21753
21754 @item saturation
21755 Set saturation modifier for displayed colors. Negative values provide
21756 alternative color scheme. @code{0} is no saturation at all.
21757 Saturation must be in [-10.0, 10.0] range.
21758 Default value is @code{1}.
21759
21760 @item win_func
21761 Set window function.
21762
21763 It accepts the following values:
21764 @table @samp
21765 @item rect
21766 @item bartlett
21767 @item hann
21768 @item hanning
21769 @item hamming
21770 @item blackman
21771 @item welch
21772 @item flattop
21773 @item bharris
21774 @item bnuttall
21775 @item bhann
21776 @item sine
21777 @item nuttall
21778 @item lanczos
21779 @item gauss
21780 @item tukey
21781 @item dolph
21782 @item cauchy
21783 @item parzen
21784 @item poisson
21785 @item bohman
21786 @end table
21787
21788 Default value is @code{hann}.
21789
21790 @item orientation
21791 Set orientation of time vs frequency axis. Can be @code{vertical} or
21792 @code{horizontal}. Default is @code{vertical}.
21793
21794 @item overlap
21795 Set ratio of overlap window. Default value is @code{0}.
21796 When value is @code{1} overlap is set to recommended size for specific
21797 window function currently used.
21798
21799 @item gain
21800 Set scale gain for calculating intensity color values.
21801 Default value is @code{1}.
21802
21803 @item data
21804 Set which data to display. Can be @code{magnitude}, default or @code{phase}.
21805
21806 @item rotation
21807 Set color rotation, must be in [-1.0, 1.0] range.
21808 Default value is @code{0}.
21809
21810 @item start
21811 Set start frequency from which to display spectrogram. Default is @code{0}.
21812
21813 @item stop
21814 Set stop frequency to which to display spectrogram. Default is @code{0}.
21815
21816 @item fps
21817 Set upper frame rate limit. Default is @code{auto}, unlimited.
21818
21819 @item legend
21820 Draw time and frequency axes and legends. Default is disabled.
21821 @end table
21822
21823 The usage is very similar to the showwaves filter; see the examples in that
21824 section.
21825
21826 @subsection Examples
21827
21828 @itemize
21829 @item
21830 Large window with logarithmic color scaling:
21831 @example
21832 showspectrum=s=1280x480:scale=log
21833 @end example
21834
21835 @item
21836 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
21837 @example
21838 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
21839              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
21840 @end example
21841 @end itemize
21842
21843 @section showspectrumpic
21844
21845 Convert input audio to a single video frame, representing the audio frequency
21846 spectrum.
21847
21848 The filter accepts the following options:
21849
21850 @table @option
21851 @item size, s
21852 Specify the video size for the output. For the syntax of this option, check the
21853 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21854 Default value is @code{4096x2048}.
21855
21856 @item mode
21857 Specify display mode.
21858
21859 It accepts the following values:
21860 @table @samp
21861 @item combined
21862 all channels are displayed in the same row
21863 @item separate
21864 all channels are displayed in separate rows
21865 @end table
21866 Default value is @samp{combined}.
21867
21868 @item color
21869 Specify display color mode.
21870
21871 It accepts the following values:
21872 @table @samp
21873 @item channel
21874 each channel is displayed in a separate color
21875 @item intensity
21876 each channel is displayed using the same color scheme
21877 @item rainbow
21878 each channel is displayed using the rainbow color scheme
21879 @item moreland
21880 each channel is displayed using the moreland color scheme
21881 @item nebulae
21882 each channel is displayed using the nebulae color scheme
21883 @item fire
21884 each channel is displayed using the fire color scheme
21885 @item fiery
21886 each channel is displayed using the fiery color scheme
21887 @item fruit
21888 each channel is displayed using the fruit color scheme
21889 @item cool
21890 each channel is displayed using the cool color scheme
21891 @item magma
21892 each channel is displayed using the magma color scheme
21893 @item green
21894 each channel is displayed using the green color scheme
21895 @item viridis
21896 each channel is displayed using the viridis color scheme
21897 @item plasma
21898 each channel is displayed using the plasma color scheme
21899 @item cividis
21900 each channel is displayed using the cividis color scheme
21901 @item terrain
21902 each channel is displayed using the terrain color scheme
21903 @end table
21904 Default value is @samp{intensity}.
21905
21906 @item scale
21907 Specify scale used for calculating intensity color values.
21908
21909 It accepts the following values:
21910 @table @samp
21911 @item lin
21912 linear
21913 @item sqrt
21914 square root, default
21915 @item cbrt
21916 cubic root
21917 @item log
21918 logarithmic
21919 @item 4thrt
21920 4th root
21921 @item 5thrt
21922 5th root
21923 @end table
21924 Default value is @samp{log}.
21925
21926 @item saturation
21927 Set saturation modifier for displayed colors. Negative values provide
21928 alternative color scheme. @code{0} is no saturation at all.
21929 Saturation must be in [-10.0, 10.0] range.
21930 Default value is @code{1}.
21931
21932 @item win_func
21933 Set window function.
21934
21935 It accepts the following values:
21936 @table @samp
21937 @item rect
21938 @item bartlett
21939 @item hann
21940 @item hanning
21941 @item hamming
21942 @item blackman
21943 @item welch
21944 @item flattop
21945 @item bharris
21946 @item bnuttall
21947 @item bhann
21948 @item sine
21949 @item nuttall
21950 @item lanczos
21951 @item gauss
21952 @item tukey
21953 @item dolph
21954 @item cauchy
21955 @item parzen
21956 @item poisson
21957 @item bohman
21958 @end table
21959 Default value is @code{hann}.
21960
21961 @item orientation
21962 Set orientation of time vs frequency axis. Can be @code{vertical} or
21963 @code{horizontal}. Default is @code{vertical}.
21964
21965 @item gain
21966 Set scale gain for calculating intensity color values.
21967 Default value is @code{1}.
21968
21969 @item legend
21970 Draw time and frequency axes and legends. Default is enabled.
21971
21972 @item rotation
21973 Set color rotation, must be in [-1.0, 1.0] range.
21974 Default value is @code{0}.
21975
21976 @item start
21977 Set start frequency from which to display spectrogram. Default is @code{0}.
21978
21979 @item stop
21980 Set stop frequency to which to display spectrogram. Default is @code{0}.
21981 @end table
21982
21983 @subsection Examples
21984
21985 @itemize
21986 @item
21987 Extract an audio spectrogram of a whole audio track
21988 in a 1024x1024 picture using @command{ffmpeg}:
21989 @example
21990 ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
21991 @end example
21992 @end itemize
21993
21994 @section showvolume
21995
21996 Convert input audio volume to a video output.
21997
21998 The filter accepts the following options:
21999
22000 @table @option
22001 @item rate, r
22002 Set video rate.
22003
22004 @item b
22005 Set border width, allowed range is [0, 5]. Default is 1.
22006
22007 @item w
22008 Set channel width, allowed range is [80, 8192]. Default is 400.
22009
22010 @item h
22011 Set channel height, allowed range is [1, 900]. Default is 20.
22012
22013 @item f
22014 Set fade, allowed range is [0, 1]. Default is 0.95.
22015
22016 @item c
22017 Set volume color expression.
22018
22019 The expression can use the following variables:
22020
22021 @table @option
22022 @item VOLUME
22023 Current max volume of channel in dB.
22024
22025 @item PEAK
22026 Current peak.
22027
22028 @item CHANNEL
22029 Current channel number, starting from 0.
22030 @end table
22031
22032 @item t
22033 If set, displays channel names. Default is enabled.
22034
22035 @item v
22036 If set, displays volume values. Default is enabled.
22037
22038 @item o
22039 Set orientation, can be horizontal: @code{h} or vertical: @code{v},
22040 default is @code{h}.
22041
22042 @item s
22043 Set step size, allowed range is [0, 5]. Default is 0, which means
22044 step is disabled.
22045
22046 @item p
22047 Set background opacity, allowed range is [0, 1]. Default is 0.
22048
22049 @item m
22050 Set metering mode, can be peak: @code{p} or rms: @code{r},
22051 default is @code{p}.
22052
22053 @item ds
22054 Set display scale, can be linear: @code{lin} or log: @code{log},
22055 default is @code{lin}.
22056
22057 @item dm
22058 In second.
22059 If set to > 0., display a line for the max level
22060 in the previous seconds.
22061 default is disabled: @code{0.}
22062
22063 @item dmc
22064 The color of the max line. Use when @code{dm} option is set to > 0.
22065 default is: @code{orange}
22066 @end table
22067
22068 @section showwaves
22069
22070 Convert input audio to a video output, representing the samples waves.
22071
22072 The filter accepts the following options:
22073
22074 @table @option
22075 @item size, s
22076 Specify the video size for the output. For the syntax of this option, check the
22077 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22078 Default value is @code{600x240}.
22079
22080 @item mode
22081 Set display mode.
22082
22083 Available values are:
22084 @table @samp
22085 @item point
22086 Draw a point for each sample.
22087
22088 @item line
22089 Draw a vertical line for each sample.
22090
22091 @item p2p
22092 Draw a point for each sample and a line between them.
22093
22094 @item cline
22095 Draw a centered vertical line for each sample.
22096 @end table
22097
22098 Default value is @code{point}.
22099
22100 @item n
22101 Set the number of samples which are printed on the same column. A
22102 larger value will decrease the frame rate. Must be a positive
22103 integer. This option can be set only if the value for @var{rate}
22104 is not explicitly specified.
22105
22106 @item rate, r
22107 Set the (approximate) output frame rate. This is done by setting the
22108 option @var{n}. Default value is "25".
22109
22110 @item split_channels
22111 Set if channels should be drawn separately or overlap. Default value is 0.
22112
22113 @item colors
22114 Set colors separated by '|' which are going to be used for drawing of each channel.
22115
22116 @item scale
22117 Set amplitude scale.
22118
22119 Available values are:
22120 @table @samp
22121 @item lin
22122 Linear.
22123
22124 @item log
22125 Logarithmic.
22126
22127 @item sqrt
22128 Square root.
22129
22130 @item cbrt
22131 Cubic root.
22132 @end table
22133
22134 Default is linear.
22135
22136 @item draw
22137 Set the draw mode. This is mostly useful to set for high @var{n}.
22138
22139 Available values are:
22140 @table @samp
22141 @item scale
22142 Scale pixel values for each drawn sample.
22143
22144 @item full
22145 Draw every sample directly.
22146 @end table
22147
22148 Default value is @code{scale}.
22149 @end table
22150
22151 @subsection Examples
22152
22153 @itemize
22154 @item
22155 Output the input file audio and the corresponding video representation
22156 at the same time:
22157 @example
22158 amovie=a.mp3,asplit[out0],showwaves[out1]
22159 @end example
22160
22161 @item
22162 Create a synthetic signal and show it with showwaves, forcing a
22163 frame rate of 30 frames per second:
22164 @example
22165 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
22166 @end example
22167 @end itemize
22168
22169 @section showwavespic
22170
22171 Convert input audio to a single video frame, representing the samples waves.
22172
22173 The filter accepts the following options:
22174
22175 @table @option
22176 @item size, s
22177 Specify the video size for the output. For the syntax of this option, check the
22178 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22179 Default value is @code{600x240}.
22180
22181 @item split_channels
22182 Set if channels should be drawn separately or overlap. Default value is 0.
22183
22184 @item colors
22185 Set colors separated by '|' which are going to be used for drawing of each channel.
22186
22187 @item scale
22188 Set amplitude scale.
22189
22190 Available values are:
22191 @table @samp
22192 @item lin
22193 Linear.
22194
22195 @item log
22196 Logarithmic.
22197
22198 @item sqrt
22199 Square root.
22200
22201 @item cbrt
22202 Cubic root.
22203 @end table
22204
22205 Default is linear.
22206 @end table
22207
22208 @subsection Examples
22209
22210 @itemize
22211 @item
22212 Extract a channel split representation of the wave form of a whole audio track
22213 in a 1024x800 picture using @command{ffmpeg}:
22214 @example
22215 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
22216 @end example
22217 @end itemize
22218
22219 @section sidedata, asidedata
22220
22221 Delete frame side data, or select frames based on it.
22222
22223 This filter accepts the following options:
22224
22225 @table @option
22226 @item mode
22227 Set mode of operation of the filter.
22228
22229 Can be one of the following:
22230
22231 @table @samp
22232 @item select
22233 Select every frame with side data of @code{type}.
22234
22235 @item delete
22236 Delete side data of @code{type}. If @code{type} is not set, delete all side
22237 data in the frame.
22238
22239 @end table
22240
22241 @item type
22242 Set side data type used with all modes. Must be set for @code{select} mode. For
22243 the list of frame side data types, refer to the @code{AVFrameSideDataType} enum
22244 in @file{libavutil/frame.h}. For example, to choose
22245 @code{AV_FRAME_DATA_PANSCAN} side data, you must specify @code{PANSCAN}.
22246
22247 @end table
22248
22249 @section spectrumsynth
22250
22251 Sythesize audio from 2 input video spectrums, first input stream represents
22252 magnitude across time and second represents phase across time.
22253 The filter will transform from frequency domain as displayed in videos back
22254 to time domain as presented in audio output.
22255
22256 This filter is primarily created for reversing processed @ref{showspectrum}
22257 filter outputs, but can synthesize sound from other spectrograms too.
22258 But in such case results are going to be poor if the phase data is not
22259 available, because in such cases phase data need to be recreated, usually
22260 its just recreated from random noise.
22261 For best results use gray only output (@code{channel} color mode in
22262 @ref{showspectrum} filter) and @code{log} scale for magnitude video and
22263 @code{lin} scale for phase video. To produce phase, for 2nd video, use
22264 @code{data} option. Inputs videos should generally use @code{fullframe}
22265 slide mode as that saves resources needed for decoding video.
22266
22267 The filter accepts the following options:
22268
22269 @table @option
22270 @item sample_rate
22271 Specify sample rate of output audio, the sample rate of audio from which
22272 spectrum was generated may differ.
22273
22274 @item channels
22275 Set number of channels represented in input video spectrums.
22276
22277 @item scale
22278 Set scale which was used when generating magnitude input spectrum.
22279 Can be @code{lin} or @code{log}. Default is @code{log}.
22280
22281 @item slide
22282 Set slide which was used when generating inputs spectrums.
22283 Can be @code{replace}, @code{scroll}, @code{fullframe} or @code{rscroll}.
22284 Default is @code{fullframe}.
22285
22286 @item win_func
22287 Set window function used for resynthesis.
22288
22289 @item overlap
22290 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
22291 which means optimal overlap for selected window function will be picked.
22292
22293 @item orientation
22294 Set orientation of input videos. Can be @code{vertical} or @code{horizontal}.
22295 Default is @code{vertical}.
22296 @end table
22297
22298 @subsection Examples
22299
22300 @itemize
22301 @item
22302 First create magnitude and phase videos from audio, assuming audio is stereo with 44100 sample rate,
22303 then resynthesize videos back to audio with spectrumsynth:
22304 @example
22305 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
22306 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
22307 ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
22308 @end example
22309 @end itemize
22310
22311 @section split, asplit
22312
22313 Split input into several identical outputs.
22314
22315 @code{asplit} works with audio input, @code{split} with video.
22316
22317 The filter accepts a single parameter which specifies the number of outputs. If
22318 unspecified, it defaults to 2.
22319
22320 @subsection Examples
22321
22322 @itemize
22323 @item
22324 Create two separate outputs from the same input:
22325 @example
22326 [in] split [out0][out1]
22327 @end example
22328
22329 @item
22330 To create 3 or more outputs, you need to specify the number of
22331 outputs, like in:
22332 @example
22333 [in] asplit=3 [out0][out1][out2]
22334 @end example
22335
22336 @item
22337 Create two separate outputs from the same input, one cropped and
22338 one padded:
22339 @example
22340 [in] split [splitout1][splitout2];
22341 [splitout1] crop=100:100:0:0    [cropout];
22342 [splitout2] pad=200:200:100:100 [padout];
22343 @end example
22344
22345 @item
22346 Create 5 copies of the input audio with @command{ffmpeg}:
22347 @example
22348 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
22349 @end example
22350 @end itemize
22351
22352 @section zmq, azmq
22353
22354 Receive commands sent through a libzmq client, and forward them to
22355 filters in the filtergraph.
22356
22357 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
22358 must be inserted between two video filters, @code{azmq} between two
22359 audio filters. Both are capable to send messages to any filter type.
22360
22361 To enable these filters you need to install the libzmq library and
22362 headers and configure FFmpeg with @code{--enable-libzmq}.
22363
22364 For more information about libzmq see:
22365 @url{http://www.zeromq.org/}
22366
22367 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
22368 receives messages sent through a network interface defined by the
22369 @option{bind_address} (or the abbreviation "@option{b}") option.
22370 Default value of this option is @file{tcp://localhost:5555}. You may
22371 want to alter this value to your needs, but do not forget to escape any
22372 ':' signs (see @ref{filtergraph escaping}).
22373
22374 The received message must be in the form:
22375 @example
22376 @var{TARGET} @var{COMMAND} [@var{ARG}]
22377 @end example
22378
22379 @var{TARGET} specifies the target of the command, usually the name of
22380 the filter class or a specific filter instance name. The default
22381 filter instance name uses the pattern @samp{Parsed_<filter_name>_<index>},
22382 but you can override this by using the @samp{filter_name@@id} syntax
22383 (see @ref{Filtergraph syntax}).
22384
22385 @var{COMMAND} specifies the name of the command for the target filter.
22386
22387 @var{ARG} is optional and specifies the optional argument list for the
22388 given @var{COMMAND}.
22389
22390 Upon reception, the message is processed and the corresponding command
22391 is injected into the filtergraph. Depending on the result, the filter
22392 will send a reply to the client, adopting the format:
22393 @example
22394 @var{ERROR_CODE} @var{ERROR_REASON}
22395 @var{MESSAGE}
22396 @end example
22397
22398 @var{MESSAGE} is optional.
22399
22400 @subsection Examples
22401
22402 Look at @file{tools/zmqsend} for an example of a zmq client which can
22403 be used to send commands processed by these filters.
22404
22405 Consider the following filtergraph generated by @command{ffplay}.
22406 In this example the last overlay filter has an instance name. All other
22407 filters will have default instance names.
22408
22409 @example
22410 ffplay -dumpgraph 1 -f lavfi "
22411 color=s=100x100:c=red  [l];
22412 color=s=100x100:c=blue [r];
22413 nullsrc=s=200x100, zmq [bg];
22414 [bg][l]   overlay     [bg+l];
22415 [bg+l][r] overlay@@my=x=100 "
22416 @end example
22417
22418 To change the color of the left side of the video, the following
22419 command can be used:
22420 @example
22421 echo Parsed_color_0 c yellow | tools/zmqsend
22422 @end example
22423
22424 To change the right side:
22425 @example
22426 echo Parsed_color_1 c pink | tools/zmqsend
22427 @end example
22428
22429 To change the position of the right side:
22430 @example
22431 echo overlay@@my x 150 | tools/zmqsend
22432 @end example
22433
22434
22435 @c man end MULTIMEDIA FILTERS
22436
22437 @chapter Multimedia Sources
22438 @c man begin MULTIMEDIA SOURCES
22439
22440 Below is a description of the currently available multimedia sources.
22441
22442 @section amovie
22443
22444 This is the same as @ref{movie} source, except it selects an audio
22445 stream by default.
22446
22447 @anchor{movie}
22448 @section movie
22449
22450 Read audio and/or video stream(s) from a movie container.
22451
22452 It accepts the following parameters:
22453
22454 @table @option
22455 @item filename
22456 The name of the resource to read (not necessarily a file; it can also be a
22457 device or a stream accessed through some protocol).
22458
22459 @item format_name, f
22460 Specifies the format assumed for the movie to read, and can be either
22461 the name of a container or an input device. If not specified, the
22462 format is guessed from @var{movie_name} or by probing.
22463
22464 @item seek_point, sp
22465 Specifies the seek point in seconds. The frames will be output
22466 starting from this seek point. The parameter is evaluated with
22467 @code{av_strtod}, so the numerical value may be suffixed by an IS
22468 postfix. The default value is "0".
22469
22470 @item streams, s
22471 Specifies the streams to read. Several streams can be specified,
22472 separated by "+". The source will then have as many outputs, in the
22473 same order. The syntax is explained in the @ref{Stream specifiers,,"Stream specifiers"
22474 section in the ffmpeg manual,ffmpeg}. Two special names, "dv" and "da" specify
22475 respectively the default (best suited) video and audio stream. Default
22476 is "dv", or "da" if the filter is called as "amovie".
22477
22478 @item stream_index, si
22479 Specifies the index of the video stream to read. If the value is -1,
22480 the most suitable video stream will be automatically selected. The default
22481 value is "-1". Deprecated. If the filter is called "amovie", it will select
22482 audio instead of video.
22483
22484 @item loop
22485 Specifies how many times to read the stream in sequence.
22486 If the value is 0, the stream will be looped infinitely.
22487 Default value is "1".
22488
22489 Note that when the movie is looped the source timestamps are not
22490 changed, so it will generate non monotonically increasing timestamps.
22491
22492 @item discontinuity
22493 Specifies the time difference between frames above which the point is
22494 considered a timestamp discontinuity which is removed by adjusting the later
22495 timestamps.
22496 @end table
22497
22498 It allows overlaying a second video on top of the main input of
22499 a filtergraph, as shown in this graph:
22500 @example
22501 input -----------> deltapts0 --> overlay --> output
22502                                     ^
22503                                     |
22504 movie --> scale--> deltapts1 -------+
22505 @end example
22506 @subsection Examples
22507
22508 @itemize
22509 @item
22510 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
22511 on top of the input labelled "in":
22512 @example
22513 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
22514 [in] setpts=PTS-STARTPTS [main];
22515 [main][over] overlay=16:16 [out]
22516 @end example
22517
22518 @item
22519 Read from a video4linux2 device, and overlay it on top of the input
22520 labelled "in":
22521 @example
22522 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
22523 [in] setpts=PTS-STARTPTS [main];
22524 [main][over] overlay=16:16 [out]
22525 @end example
22526
22527 @item
22528 Read the first video stream and the audio stream with id 0x81 from
22529 dvd.vob; the video is connected to the pad named "video" and the audio is
22530 connected to the pad named "audio":
22531 @example
22532 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
22533 @end example
22534 @end itemize
22535
22536 @subsection Commands
22537
22538 Both movie and amovie support the following commands:
22539 @table @option
22540 @item seek
22541 Perform seek using "av_seek_frame".
22542 The syntax is: seek @var{stream_index}|@var{timestamp}|@var{flags}
22543 @itemize
22544 @item
22545 @var{stream_index}: If stream_index is -1, a default
22546 stream is selected, and @var{timestamp} is automatically converted
22547 from AV_TIME_BASE units to the stream specific time_base.
22548 @item
22549 @var{timestamp}: Timestamp in AVStream.time_base units
22550 or, if no stream is specified, in AV_TIME_BASE units.
22551 @item
22552 @var{flags}: Flags which select direction and seeking mode.
22553 @end itemize
22554
22555 @item get_duration
22556 Get movie duration in AV_TIME_BASE units.
22557
22558 @end table
22559
22560 @c man end MULTIMEDIA SOURCES