]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
Merge commit '70ab2778be9c83dab84340af7e3ba83fa0f98576'
[ffmpeg] / doc / filters.texi
1 @chapter Filtering Introduction
2 @c man begin FILTERING INTRODUCTION
3
4 Filtering in FFmpeg is enabled through the libavfilter library.
5
6 In libavfilter, a filter can have multiple inputs and multiple
7 outputs.
8 To illustrate the sorts of things that are possible, we consider the
9 following filtergraph.
10
11 @verbatim
12                 [main]
13 input --> split ---------------------> overlay --> output
14             |                             ^
15             |[tmp]                  [flip]|
16             +-----> crop --> vflip -------+
17 @end verbatim
18
19 This filtergraph splits the input stream in two streams, then sends one
20 stream through the crop filter and the vflip filter, before merging it
21 back with the other stream by overlaying it on top. You can use the
22 following command to achieve this:
23
24 @example
25 ffmpeg -i INPUT -vf "split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2" OUTPUT
26 @end example
27
28 The result will be that the top half of the video is mirrored
29 onto the bottom half of the output video.
30
31 Filters in the same linear chain are separated by commas, and distinct
32 linear chains of filters are separated by semicolons. In our example,
33 @var{crop,vflip} are in one linear chain, @var{split} and
34 @var{overlay} are separately in another. The points where the linear
35 chains join are labelled by names enclosed in square brackets. In the
36 example, the split filter generates two outputs that are associated to
37 the labels @var{[main]} and @var{[tmp]}.
38
39 The stream sent to the second output of @var{split}, labelled as
40 @var{[tmp]}, is processed through the @var{crop} filter, which crops
41 away the lower half part of the video, and then vertically flipped. The
42 @var{overlay} filter takes in input the first unchanged output of the
43 split filter (which was labelled as @var{[main]}), and overlay on its
44 lower half the output generated by the @var{crop,vflip} filterchain.
45
46 Some filters take in input a list of parameters: they are specified
47 after the filter name and an equal sign, and are separated from each other
48 by a colon.
49
50 There exist so-called @var{source filters} that do not have an
51 audio/video input, and @var{sink filters} that will not have audio/video
52 output.
53
54 @c man end FILTERING INTRODUCTION
55
56 @chapter graph2dot
57 @c man begin GRAPH2DOT
58
59 The @file{graph2dot} program included in the FFmpeg @file{tools}
60 directory can be used to parse a filtergraph description and issue a
61 corresponding textual representation in the dot language.
62
63 Invoke the command:
64 @example
65 graph2dot -h
66 @end example
67
68 to see how to use @file{graph2dot}.
69
70 You can then pass the dot description to the @file{dot} program (from
71 the graphviz suite of programs) and obtain a graphical representation
72 of the filtergraph.
73
74 For example the sequence of commands:
75 @example
76 echo @var{GRAPH_DESCRIPTION} | \
77 tools/graph2dot -o graph.tmp && \
78 dot -Tpng graph.tmp -o graph.png && \
79 display graph.png
80 @end example
81
82 can be used to create and display an image representing the graph
83 described by the @var{GRAPH_DESCRIPTION} string. Note that this string must be
84 a complete self-contained graph, with its inputs and outputs explicitly defined.
85 For example if your command line is of the form:
86 @example
87 ffmpeg -i infile -vf scale=640:360 outfile
88 @end example
89 your @var{GRAPH_DESCRIPTION} string will need to be of the form:
90 @example
91 nullsrc,scale=640:360,nullsink
92 @end example
93 you may also need to set the @var{nullsrc} parameters and add a @var{format}
94 filter in order to simulate a specific input file.
95
96 @c man end GRAPH2DOT
97
98 @chapter Filtergraph description
99 @c man begin FILTERGRAPH DESCRIPTION
100
101 A filtergraph is a directed graph of connected filters. It can contain
102 cycles, and there can be multiple links between a pair of
103 filters. Each link has one input pad on one side connecting it to one
104 filter from which it takes its input, and one output pad on the other
105 side connecting it to one filter accepting its output.
106
107 Each filter in a filtergraph is an instance of a filter class
108 registered in the application, which defines the features and the
109 number of input and output pads of the filter.
110
111 A filter with no input pads is called a "source", and a filter with no
112 output pads is called a "sink".
113
114 @anchor{Filtergraph syntax}
115 @section Filtergraph syntax
116
117 A filtergraph has a textual representation, which is recognized by the
118 @option{-filter}/@option{-vf}/@option{-af} and
119 @option{-filter_complex} options in @command{ffmpeg} and
120 @option{-vf}/@option{-af} in @command{ffplay}, and by the
121 @code{avfilter_graph_parse_ptr()} function defined in
122 @file{libavfilter/avfilter.h}.
123
124 A filterchain consists of a sequence of connected filters, each one
125 connected to the previous one in the sequence. A filterchain is
126 represented by a list of ","-separated filter descriptions.
127
128 A filtergraph consists of a sequence of filterchains. A sequence of
129 filterchains is represented by a list of ";"-separated filterchain
130 descriptions.
131
132 A filter is represented by a string of the form:
133 [@var{in_link_1}]...[@var{in_link_N}]@var{filter_name}@@@var{id}=@var{arguments}[@var{out_link_1}]...[@var{out_link_M}]
134
135 @var{filter_name} is the name of the filter class of which the
136 described filter is an instance of, and has to be the name of one of
137 the filter classes registered in the program optionally followed by "@@@var{id}".
138 The name of the filter class is optionally followed by a string
139 "=@var{arguments}".
140
141 @var{arguments} is a string which contains the parameters used to
142 initialize the filter instance. It may have one of two forms:
143 @itemize
144
145 @item
146 A ':'-separated list of @var{key=value} pairs.
147
148 @item
149 A ':'-separated list of @var{value}. In this case, the keys are assumed to be
150 the option names in the order they are declared. E.g. the @code{fade} filter
151 declares three options in this order -- @option{type}, @option{start_frame} and
152 @option{nb_frames}. Then the parameter list @var{in:0:30} means that the value
153 @var{in} is assigned to the option @option{type}, @var{0} to
154 @option{start_frame} and @var{30} to @option{nb_frames}.
155
156 @item
157 A ':'-separated list of mixed direct @var{value} and long @var{key=value}
158 pairs. The direct @var{value} must precede the @var{key=value} pairs, and
159 follow the same constraints order of the previous point. The following
160 @var{key=value} pairs can be set in any preferred order.
161
162 @end itemize
163
164 If the option value itself is a list of items (e.g. the @code{format} filter
165 takes a list of pixel formats), the items in the list are usually separated by
166 @samp{|}.
167
168 The list of arguments can be quoted using the character @samp{'} as initial
169 and ending mark, and the character @samp{\} for escaping the characters
170 within the quoted text; otherwise the argument string is considered
171 terminated when the next special character (belonging to the set
172 @samp{[]=;,}) is encountered.
173
174 The name and arguments of the filter are optionally preceded and
175 followed by a list of link labels.
176 A link label allows one to name a link and associate it to a filter output
177 or input pad. The preceding labels @var{in_link_1}
178 ... @var{in_link_N}, are associated to the filter input pads,
179 the following labels @var{out_link_1} ... @var{out_link_M}, are
180 associated to the output pads.
181
182 When two link labels with the same name are found in the
183 filtergraph, a link between the corresponding input and output pad is
184 created.
185
186 If an output pad is not labelled, it is linked by default to the first
187 unlabelled input pad of the next filter in the filterchain.
188 For example in the filterchain
189 @example
190 nullsrc, split[L1], [L2]overlay, nullsink
191 @end example
192 the split filter instance has two output pads, and the overlay filter
193 instance two input pads. The first output pad of split is labelled
194 "L1", the first input pad of overlay is labelled "L2", and the second
195 output pad of split is linked to the second input pad of overlay,
196 which are both unlabelled.
197
198 In a filter description, if the input label of the first filter is not
199 specified, "in" is assumed; if the output label of the last filter is not
200 specified, "out" is assumed.
201
202 In a complete filterchain all the unlabelled filter input and output
203 pads must be connected. A filtergraph is considered valid if all the
204 filter input and output pads of all the filterchains are connected.
205
206 Libavfilter will automatically insert @ref{scale} filters where format
207 conversion is required. It is possible to specify swscale flags
208 for those automatically inserted scalers by prepending
209 @code{sws_flags=@var{flags};}
210 to the filtergraph description.
211
212 Here is a BNF description of the filtergraph syntax:
213 @example
214 @var{NAME}             ::= sequence of alphanumeric characters and '_'
215 @var{FILTER_NAME}      ::= @var{NAME}["@@"@var{NAME}]
216 @var{LINKLABEL}        ::= "[" @var{NAME} "]"
217 @var{LINKLABELS}       ::= @var{LINKLABEL} [@var{LINKLABELS}]
218 @var{FILTER_ARGUMENTS} ::= sequence of chars (possibly quoted)
219 @var{FILTER}           ::= [@var{LINKLABELS}] @var{FILTER_NAME} ["=" @var{FILTER_ARGUMENTS}] [@var{LINKLABELS}]
220 @var{FILTERCHAIN}      ::= @var{FILTER} [,@var{FILTERCHAIN}]
221 @var{FILTERGRAPH}      ::= [sws_flags=@var{flags};] @var{FILTERCHAIN} [;@var{FILTERGRAPH}]
222 @end example
223
224 @anchor{filtergraph escaping}
225 @section Notes on filtergraph escaping
226
227 Filtergraph description composition entails several levels of
228 escaping. See @ref{quoting_and_escaping,,the "Quoting and escaping"
229 section in the ffmpeg-utils(1) manual,ffmpeg-utils} for more
230 information about the employed escaping procedure.
231
232 A first level escaping affects the content of each filter option
233 value, which may contain the special character @code{:} used to
234 separate values, or one of the escaping characters @code{\'}.
235
236 A second level escaping affects the whole filter description, which
237 may contain the escaping characters @code{\'} or the special
238 characters @code{[],;} used by the filtergraph description.
239
240 Finally, when you specify a filtergraph on a shell commandline, you
241 need to perform a third level escaping for the shell special
242 characters contained within it.
243
244 For example, consider the following string to be embedded in
245 the @ref{drawtext} filter description @option{text} value:
246 @example
247 this is a 'string': may contain one, or more, special characters
248 @end example
249
250 This string contains the @code{'} special escaping character, and the
251 @code{:} special character, so it needs to be escaped in this way:
252 @example
253 text=this is a \'string\'\: may contain one, or more, special characters
254 @end example
255
256 A second level of escaping is required when embedding the filter
257 description in a filtergraph description, in order to escape all the
258 filtergraph special characters. Thus the example above becomes:
259 @example
260 drawtext=text=this is a \\\'string\\\'\\: may contain one\, or more\, special characters
261 @end example
262 (note that in addition to the @code{\'} escaping special characters,
263 also @code{,} needs to be escaped).
264
265 Finally an additional level of escaping is needed when writing the
266 filtergraph description in a shell command, which depends on the
267 escaping rules of the adopted shell. For example, assuming that
268 @code{\} is special and needs to be escaped with another @code{\}, the
269 previous string will finally result in:
270 @example
271 -vf "drawtext=text=this is a \\\\\\'string\\\\\\'\\\\: may contain one\\, or more\\, special characters"
272 @end example
273
274 @chapter Timeline editing
275
276 Some filters support a generic @option{enable} option. For the filters
277 supporting timeline editing, this option can be set to an expression which is
278 evaluated before sending a frame to the filter. If the evaluation is non-zero,
279 the filter will be enabled, otherwise the frame will be sent unchanged to the
280 next filter in the filtergraph.
281
282 The expression accepts the following values:
283 @table @samp
284 @item t
285 timestamp expressed in seconds, NAN if the input timestamp is unknown
286
287 @item n
288 sequential number of the input frame, starting from 0
289
290 @item pos
291 the position in the file of the input frame, NAN if unknown
292
293 @item w
294 @item h
295 width and height of the input frame if video
296 @end table
297
298 Additionally, these filters support an @option{enable} command that can be used
299 to re-define the expression.
300
301 Like any other filtering option, the @option{enable} option follows the same
302 rules.
303
304 For example, to enable a blur filter (@ref{smartblur}) from 10 seconds to 3
305 minutes, and a @ref{curves} filter starting at 3 seconds:
306 @example
307 smartblur = enable='between(t,10,3*60)',
308 curves    = enable='gte(t,3)' : preset=cross_process
309 @end example
310
311 See @code{ffmpeg -filters} to view which filters have timeline support.
312
313 @c man end FILTERGRAPH DESCRIPTION
314
315 @anchor{framesync}
316 @chapter Options for filters with several inputs (framesync)
317 @c man begin OPTIONS FOR FILTERS WITH SEVERAL INPUTS
318
319 Some filters with several inputs support a common set of options.
320 These options can only be set by name, not with the short notation.
321
322 @table @option
323 @item eof_action
324 The action to take when EOF is encountered on the secondary input; it accepts
325 one of the following values:
326
327 @table @option
328 @item repeat
329 Repeat the last frame (the default).
330 @item endall
331 End both streams.
332 @item pass
333 Pass the main input through.
334 @end table
335
336 @item shortest
337 If set to 1, force the output to terminate when the shortest input
338 terminates. Default value is 0.
339
340 @item repeatlast
341 If set to 1, force the filter to extend the last frame of secondary streams
342 until the end of the primary stream. A value of 0 disables this behavior.
343 Default value is 1.
344 @end table
345
346 @c man end OPTIONS FOR FILTERS WITH SEVERAL INPUTS
347
348 @chapter Audio Filters
349 @c man begin AUDIO FILTERS
350
351 When you configure your FFmpeg build, you can disable any of the
352 existing filters using @code{--disable-filters}.
353 The configure output will show the audio filters included in your
354 build.
355
356 Below is a description of the currently available audio filters.
357
358 @section acompressor
359
360 A compressor is mainly used to reduce the dynamic range of a signal.
361 Especially modern music is mostly compressed at a high ratio to
362 improve the overall loudness. It's done to get the highest attention
363 of a listener, "fatten" the sound and bring more "power" to the track.
364 If a signal is compressed too much it may sound dull or "dead"
365 afterwards or it may start to "pump" (which could be a powerful effect
366 but can also destroy a track completely).
367 The right compression is the key to reach a professional sound and is
368 the high art of mixing and mastering. Because of its complex settings
369 it may take a long time to get the right feeling for this kind of effect.
370
371 Compression is done by detecting the volume above a chosen level
372 @code{threshold} and dividing it by the factor set with @code{ratio}.
373 So if you set the threshold to -12dB and your signal reaches -6dB a ratio
374 of 2:1 will result in a signal at -9dB. Because an exact manipulation of
375 the signal would cause distortion of the waveform the reduction can be
376 levelled over the time. This is done by setting "Attack" and "Release".
377 @code{attack} determines how long the signal has to rise above the threshold
378 before any reduction will occur and @code{release} sets the time the signal
379 has to fall below the threshold to reduce the reduction again. Shorter signals
380 than the chosen attack time will be left untouched.
381 The overall reduction of the signal can be made up afterwards with the
382 @code{makeup} setting. So compressing the peaks of a signal about 6dB and
383 raising the makeup to this level results in a signal twice as loud than the
384 source. To gain a softer entry in the compression the @code{knee} flattens the
385 hard edge at the threshold in the range of the chosen decibels.
386
387 The filter accepts the following options:
388
389 @table @option
390 @item level_in
391 Set input gain. Default is 1. Range is between 0.015625 and 64.
392
393 @item threshold
394 If a signal of stream rises above this level it will affect the gain
395 reduction.
396 By default it is 0.125. Range is between 0.00097563 and 1.
397
398 @item ratio
399 Set a ratio by which the signal is reduced. 1:2 means that if the level
400 rose 4dB above the threshold, it will be only 2dB above after the reduction.
401 Default is 2. Range is between 1 and 20.
402
403 @item attack
404 Amount of milliseconds the signal has to rise above the threshold before gain
405 reduction starts. Default is 20. Range is between 0.01 and 2000.
406
407 @item release
408 Amount of milliseconds the signal has to fall below the threshold before
409 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
410
411 @item makeup
412 Set the amount by how much signal will be amplified after processing.
413 Default is 1. Range is from 1 to 64.
414
415 @item knee
416 Curve the sharp knee around the threshold to enter gain reduction more softly.
417 Default is 2.82843. Range is between 1 and 8.
418
419 @item link
420 Choose if the @code{average} level between all channels of input stream
421 or the louder(@code{maximum}) channel of input stream affects the
422 reduction. Default is @code{average}.
423
424 @item detection
425 Should the exact signal be taken in case of @code{peak} or an RMS one in case
426 of @code{rms}. Default is @code{rms} which is mostly smoother.
427
428 @item mix
429 How much to use compressed signal in output. Default is 1.
430 Range is between 0 and 1.
431 @end table
432
433 @section acontrast
434 Simple audio dynamic range compression/expansion filter.
435
436 The filter accepts the following options:
437
438 @table @option
439 @item contrast
440 Set contrast. Default is 33. Allowed range is between 0 and 100.
441 @end table
442
443 @section acopy
444
445 Copy the input audio source unchanged to the output. This is mainly useful for
446 testing purposes.
447
448 @section acrossfade
449
450 Apply cross fade from one input audio stream to another input audio stream.
451 The cross fade is applied for specified duration near the end of first stream.
452
453 The filter accepts the following options:
454
455 @table @option
456 @item nb_samples, ns
457 Specify the number of samples for which the cross fade effect has to last.
458 At the end of the cross fade effect the first input audio will be completely
459 silent. Default is 44100.
460
461 @item duration, d
462 Specify the duration of the cross fade effect. See
463 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
464 for the accepted syntax.
465 By default the duration is determined by @var{nb_samples}.
466 If set this option is used instead of @var{nb_samples}.
467
468 @item overlap, o
469 Should first stream end overlap with second stream start. Default is enabled.
470
471 @item curve1
472 Set curve for cross fade transition for first stream.
473
474 @item curve2
475 Set curve for cross fade transition for second stream.
476
477 For description of available curve types see @ref{afade} filter description.
478 @end table
479
480 @subsection Examples
481
482 @itemize
483 @item
484 Cross fade from one input to another:
485 @example
486 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:c1=exp:c2=exp output.flac
487 @end example
488
489 @item
490 Cross fade from one input to another but without overlapping:
491 @example
492 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:o=0:c1=exp:c2=exp output.flac
493 @end example
494 @end itemize
495
496 @section acrossover
497 Split audio stream into several bands.
498
499 This filter splits audio stream into two or more frequency ranges.
500 Summing all streams back will give flat output.
501
502 The filter accepts the following options:
503
504 @table @option
505 @item split
506 Set split frequencies. Those must be positive and increasing.
507
508 @item order
509 Set filter order, can be @var{2nd}, @var{4th} or @var{8th}.
510 Default is @var{4th}.
511 @end table
512
513 @section acrusher
514
515 Reduce audio bit resolution.
516
517 This filter is bit crusher with enhanced functionality. A bit crusher
518 is used to audibly reduce number of bits an audio signal is sampled
519 with. This doesn't change the bit depth at all, it just produces the
520 effect. Material reduced in bit depth sounds more harsh and "digital".
521 This filter is able to even round to continuous values instead of discrete
522 bit depths.
523 Additionally it has a D/C offset which results in different crushing of
524 the lower and the upper half of the signal.
525 An Anti-Aliasing setting is able to produce "softer" crushing sounds.
526
527 Another feature of this filter is the logarithmic mode.
528 This setting switches from linear distances between bits to logarithmic ones.
529 The result is a much more "natural" sounding crusher which doesn't gate low
530 signals for example. The human ear has a logarithmic perception,
531 so this kind of crushing is much more pleasant.
532 Logarithmic crushing is also able to get anti-aliased.
533
534 The filter accepts the following options:
535
536 @table @option
537 @item level_in
538 Set level in.
539
540 @item level_out
541 Set level out.
542
543 @item bits
544 Set bit reduction.
545
546 @item mix
547 Set mixing amount.
548
549 @item mode
550 Can be linear: @code{lin} or logarithmic: @code{log}.
551
552 @item dc
553 Set DC.
554
555 @item aa
556 Set anti-aliasing.
557
558 @item samples
559 Set sample reduction.
560
561 @item lfo
562 Enable LFO. By default disabled.
563
564 @item lforange
565 Set LFO range.
566
567 @item lforate
568 Set LFO rate.
569 @end table
570
571 @section acue
572
573 Delay audio filtering until a given wallclock timestamp. See the @ref{cue}
574 filter.
575
576 @section adeclick
577 Remove impulsive noise from input audio.
578
579 Samples detected as impulsive noise are replaced by interpolated samples using
580 autoregressive modelling.
581
582 @table @option
583 @item w
584 Set window size, in milliseconds. Allowed range is from @code{10} to
585 @code{100}. Default value is @code{55} milliseconds.
586 This sets size of window which will be processed at once.
587
588 @item o
589 Set window overlap, in percentage of window size. Allowed range is from
590 @code{50} to @code{95}. Default value is @code{75} percent.
591 Setting this to a very high value increases impulsive noise removal but makes
592 whole process much slower.
593
594 @item a
595 Set autoregression order, in percentage of window size. Allowed range is from
596 @code{0} to @code{25}. Default value is @code{2} percent. This option also
597 controls quality of interpolated samples using neighbour good samples.
598
599 @item t
600 Set threshold value. Allowed range is from @code{1} to @code{100}.
601 Default value is @code{2}.
602 This controls the strength of impulsive noise which is going to be removed.
603 The lower value, the more samples will be detected as impulsive noise.
604
605 @item b
606 Set burst fusion, in percentage of window size. Allowed range is @code{0} to
607 @code{10}. Default value is @code{2}.
608 If any two samples detected as noise are spaced less than this value then any
609 sample between those two samples will be also detected as noise.
610
611 @item m
612 Set overlap method.
613
614 It accepts the following values:
615 @table @option
616 @item a
617 Select overlap-add method. Even not interpolated samples are slightly
618 changed with this method.
619
620 @item s
621 Select overlap-save method. Not interpolated samples remain unchanged.
622 @end table
623
624 Default value is @code{a}.
625 @end table
626
627 @section adeclip
628 Remove clipped samples from input audio.
629
630 Samples detected as clipped are replaced by interpolated samples using
631 autoregressive modelling.
632
633 @table @option
634 @item w
635 Set window size, in milliseconds. Allowed range is from @code{10} to @code{100}.
636 Default value is @code{55} milliseconds.
637 This sets size of window which will be processed at once.
638
639 @item o
640 Set window overlap, in percentage of window size. Allowed range is from @code{50}
641 to @code{95}. Default value is @code{75} percent.
642
643 @item a
644 Set autoregression order, in percentage of window size. Allowed range is from
645 @code{0} to @code{25}. Default value is @code{8} percent. This option also controls
646 quality of interpolated samples using neighbour good samples.
647
648 @item t
649 Set threshold value. Allowed range is from @code{1} to @code{100}.
650 Default value is @code{10}. Higher values make clip detection less aggressive.
651
652 @item n
653 Set size of histogram used to detect clips. Allowed range is from @code{100} to @code{9999}.
654 Default value is @code{1000}. Higher values make clip detection less aggressive.
655
656 @item m
657 Set overlap method.
658
659 It accepts the following values:
660 @table @option
661 @item a
662 Select overlap-add method. Even not interpolated samples are slightly changed
663 with this method.
664
665 @item s
666 Select overlap-save method. Not interpolated samples remain unchanged.
667 @end table
668
669 Default value is @code{a}.
670 @end table
671
672 @section adelay
673
674 Delay one or more audio channels.
675
676 Samples in delayed channel are filled with silence.
677
678 The filter accepts the following option:
679
680 @table @option
681 @item delays
682 Set list of delays in milliseconds for each channel separated by '|'.
683 Unused delays will be silently ignored. If number of given delays is
684 smaller than number of channels all remaining channels will not be delayed.
685 If you want to delay exact number of samples, append 'S' to number.
686 If you want instead to delay in seconds, append 's' to number.
687 @end table
688
689 @subsection Examples
690
691 @itemize
692 @item
693 Delay first channel by 1.5 seconds, the third channel by 0.5 seconds and leave
694 the second channel (and any other channels that may be present) unchanged.
695 @example
696 adelay=1500|0|500
697 @end example
698
699 @item
700 Delay second channel by 500 samples, the third channel by 700 samples and leave
701 the first channel (and any other channels that may be present) unchanged.
702 @example
703 adelay=0|500S|700S
704 @end example
705 @end itemize
706
707 @section aderivative, aintegral
708
709 Compute derivative/integral of audio stream.
710
711 Applying both filters one after another produces original audio.
712
713 @section aecho
714
715 Apply echoing to the input audio.
716
717 Echoes are reflected sound and can occur naturally amongst mountains
718 (and sometimes large buildings) when talking or shouting; digital echo
719 effects emulate this behaviour and are often used to help fill out the
720 sound of a single instrument or vocal. The time difference between the
721 original signal and the reflection is the @code{delay}, and the
722 loudness of the reflected signal is the @code{decay}.
723 Multiple echoes can have different delays and decays.
724
725 A description of the accepted parameters follows.
726
727 @table @option
728 @item in_gain
729 Set input gain of reflected signal. Default is @code{0.6}.
730
731 @item out_gain
732 Set output gain of reflected signal. Default is @code{0.3}.
733
734 @item delays
735 Set list of time intervals in milliseconds between original signal and reflections
736 separated by '|'. Allowed range for each @code{delay} is @code{(0 - 90000.0]}.
737 Default is @code{1000}.
738
739 @item decays
740 Set list of loudness of reflected signals separated by '|'.
741 Allowed range for each @code{decay} is @code{(0 - 1.0]}.
742 Default is @code{0.5}.
743 @end table
744
745 @subsection Examples
746
747 @itemize
748 @item
749 Make it sound as if there are twice as many instruments as are actually playing:
750 @example
751 aecho=0.8:0.88:60:0.4
752 @end example
753
754 @item
755 If delay is very short, then it sound like a (metallic) robot playing music:
756 @example
757 aecho=0.8:0.88:6:0.4
758 @end example
759
760 @item
761 A longer delay will sound like an open air concert in the mountains:
762 @example
763 aecho=0.8:0.9:1000:0.3
764 @end example
765
766 @item
767 Same as above but with one more mountain:
768 @example
769 aecho=0.8:0.9:1000|1800:0.3|0.25
770 @end example
771 @end itemize
772
773 @section aemphasis
774 Audio emphasis filter creates or restores material directly taken from LPs or
775 emphased CDs with different filter curves. E.g. to store music on vinyl the
776 signal has to be altered by a filter first to even out the disadvantages of
777 this recording medium.
778 Once the material is played back the inverse filter has to be applied to
779 restore the distortion of the frequency response.
780
781 The filter accepts the following options:
782
783 @table @option
784 @item level_in
785 Set input gain.
786
787 @item level_out
788 Set output gain.
789
790 @item mode
791 Set filter mode. For restoring material use @code{reproduction} mode, otherwise
792 use @code{production} mode. Default is @code{reproduction} mode.
793
794 @item type
795 Set filter type. Selects medium. Can be one of the following:
796
797 @table @option
798 @item col
799 select Columbia.
800 @item emi
801 select EMI.
802 @item bsi
803 select BSI (78RPM).
804 @item riaa
805 select RIAA.
806 @item cd
807 select Compact Disc (CD).
808 @item 50fm
809 select 50µs (FM).
810 @item 75fm
811 select 75µs (FM).
812 @item 50kf
813 select 50µs (FM-KF).
814 @item 75kf
815 select 75µs (FM-KF).
816 @end table
817 @end table
818
819 @section aeval
820
821 Modify an audio signal according to the specified expressions.
822
823 This filter accepts one or more expressions (one for each channel),
824 which are evaluated and used to modify a corresponding audio signal.
825
826 It accepts the following parameters:
827
828 @table @option
829 @item exprs
830 Set the '|'-separated expressions list for each separate channel. If
831 the number of input channels is greater than the number of
832 expressions, the last specified expression is used for the remaining
833 output channels.
834
835 @item channel_layout, c
836 Set output channel layout. If not specified, the channel layout is
837 specified by the number of expressions. If set to @samp{same}, it will
838 use by default the same input channel layout.
839 @end table
840
841 Each expression in @var{exprs} can contain the following constants and functions:
842
843 @table @option
844 @item ch
845 channel number of the current expression
846
847 @item n
848 number of the evaluated sample, starting from 0
849
850 @item s
851 sample rate
852
853 @item t
854 time of the evaluated sample expressed in seconds
855
856 @item nb_in_channels
857 @item nb_out_channels
858 input and output number of channels
859
860 @item val(CH)
861 the value of input channel with number @var{CH}
862 @end table
863
864 Note: this filter is slow. For faster processing you should use a
865 dedicated filter.
866
867 @subsection Examples
868
869 @itemize
870 @item
871 Half volume:
872 @example
873 aeval=val(ch)/2:c=same
874 @end example
875
876 @item
877 Invert phase of the second channel:
878 @example
879 aeval=val(0)|-val(1)
880 @end example
881 @end itemize
882
883 @anchor{afade}
884 @section afade
885
886 Apply fade-in/out effect to input audio.
887
888 A description of the accepted parameters follows.
889
890 @table @option
891 @item type, t
892 Specify the effect type, can be either @code{in} for fade-in, or
893 @code{out} for a fade-out effect. Default is @code{in}.
894
895 @item start_sample, ss
896 Specify the number of the start sample for starting to apply the fade
897 effect. Default is 0.
898
899 @item nb_samples, ns
900 Specify the number of samples for which the fade effect has to last. At
901 the end of the fade-in effect the output audio will have the same
902 volume as the input audio, at the end of the fade-out transition
903 the output audio will be silence. Default is 44100.
904
905 @item start_time, st
906 Specify the start time of the fade effect. Default is 0.
907 The value must be specified as a time duration; see
908 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
909 for the accepted syntax.
910 If set this option is used instead of @var{start_sample}.
911
912 @item duration, d
913 Specify the duration of the fade effect. See
914 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
915 for the accepted syntax.
916 At the end of the fade-in effect the output audio will have the same
917 volume as the input audio, at the end of the fade-out transition
918 the output audio will be silence.
919 By default the duration is determined by @var{nb_samples}.
920 If set this option is used instead of @var{nb_samples}.
921
922 @item curve
923 Set curve for fade transition.
924
925 It accepts the following values:
926 @table @option
927 @item tri
928 select triangular, linear slope (default)
929 @item qsin
930 select quarter of sine wave
931 @item hsin
932 select half of sine wave
933 @item esin
934 select exponential sine wave
935 @item log
936 select logarithmic
937 @item ipar
938 select inverted parabola
939 @item qua
940 select quadratic
941 @item cub
942 select cubic
943 @item squ
944 select square root
945 @item cbr
946 select cubic root
947 @item par
948 select parabola
949 @item exp
950 select exponential
951 @item iqsin
952 select inverted quarter of sine wave
953 @item ihsin
954 select inverted half of sine wave
955 @item dese
956 select double-exponential seat
957 @item desi
958 select double-exponential sigmoid
959 @item losi
960 select logistic sigmoid
961 @item nofade
962 no fade applied
963 @end table
964 @end table
965
966 @subsection Examples
967
968 @itemize
969 @item
970 Fade in first 15 seconds of audio:
971 @example
972 afade=t=in:ss=0:d=15
973 @end example
974
975 @item
976 Fade out last 25 seconds of a 900 seconds audio:
977 @example
978 afade=t=out:st=875:d=25
979 @end example
980 @end itemize
981
982 @section afftdn
983 Denoise audio samples with FFT.
984
985 A description of the accepted parameters follows.
986
987 @table @option
988 @item nr
989 Set the noise reduction in dB, allowed range is 0.01 to 97.
990 Default value is 12 dB.
991
992 @item nf
993 Set the noise floor in dB, allowed range is -80 to -20.
994 Default value is -50 dB.
995
996 @item nt
997 Set the noise type.
998
999 It accepts the following values:
1000 @table @option
1001 @item w
1002 Select white noise.
1003
1004 @item v
1005 Select vinyl noise.
1006
1007 @item s
1008 Select shellac noise.
1009
1010 @item c
1011 Select custom noise, defined in @code{bn} option.
1012
1013 Default value is white noise.
1014 @end table
1015
1016 @item bn
1017 Set custom band noise for every one of 15 bands.
1018 Bands are separated by ' ' or '|'.
1019
1020 @item rf
1021 Set the residual floor in dB, allowed range is -80 to -20.
1022 Default value is -38 dB.
1023
1024 @item tn
1025 Enable noise tracking. By default is disabled.
1026 With this enabled, noise floor is automatically adjusted.
1027
1028 @item tr
1029 Enable residual tracking. By default is disabled.
1030
1031 @item om
1032 Set the output mode.
1033
1034 It accepts the following values:
1035 @table @option
1036 @item i
1037 Pass input unchanged.
1038
1039 @item o
1040 Pass noise filtered out.
1041
1042 @item n
1043 Pass only noise.
1044
1045 Default value is @var{o}.
1046 @end table
1047 @end table
1048
1049 @subsection Commands
1050
1051 This filter supports the following commands:
1052 @table @option
1053 @item sample_noise, sn
1054 Start or stop measuring noise profile.
1055 Syntax for the command is : "start" or "stop" string.
1056 After measuring noise profile is stopped it will be
1057 automatically applied in filtering.
1058
1059 @item noise_reduction, nr
1060 Change noise reduction. Argument is single float number.
1061 Syntax for the command is : "@var{noise_reduction}"
1062
1063 @item noise_floor, nf
1064 Change noise floor. Argument is single float number.
1065 Syntax for the command is : "@var{noise_floor}"
1066
1067 @item output_mode, om
1068 Change output mode operation.
1069 Syntax for the command is : "i", "o" or "n" string.
1070 @end table
1071
1072 @section afftfilt
1073 Apply arbitrary expressions to samples in frequency domain.
1074
1075 @table @option
1076 @item real
1077 Set frequency domain real expression for each separate channel separated
1078 by '|'. Default is "re".
1079 If the number of input channels is greater than the number of
1080 expressions, the last specified expression is used for the remaining
1081 output channels.
1082
1083 @item imag
1084 Set frequency domain imaginary expression for each separate channel
1085 separated by '|'. Default is "im".
1086
1087 Each expression in @var{real} and @var{imag} can contain the following
1088 constants and functions:
1089
1090 @table @option
1091 @item sr
1092 sample rate
1093
1094 @item b
1095 current frequency bin number
1096
1097 @item nb
1098 number of available bins
1099
1100 @item ch
1101 channel number of the current expression
1102
1103 @item chs
1104 number of channels
1105
1106 @item pts
1107 current frame pts
1108
1109 @item re
1110 current real part of frequency bin of current channel
1111
1112 @item im
1113 current imaginary part of frequency bin of current channel
1114
1115 @item real(b, ch)
1116 Return the value of real part of frequency bin at location (@var{bin},@var{channel})
1117
1118 @item imag(b, ch)
1119 Return the value of imaginary part of frequency bin at location (@var{bin},@var{channel})
1120 @end table
1121
1122 @item win_size
1123 Set window size.
1124
1125 It accepts the following values:
1126 @table @samp
1127 @item w16
1128 @item w32
1129 @item w64
1130 @item w128
1131 @item w256
1132 @item w512
1133 @item w1024
1134 @item w2048
1135 @item w4096
1136 @item w8192
1137 @item w16384
1138 @item w32768
1139 @item w65536
1140 @end table
1141 Default is @code{w4096}
1142
1143 @item win_func
1144 Set window function. Default is @code{hann}.
1145
1146 @item overlap
1147 Set window overlap. If set to 1, the recommended overlap for selected
1148 window function will be picked. Default is @code{0.75}.
1149 @end table
1150
1151 @subsection Examples
1152
1153 @itemize
1154 @item
1155 Leave almost only low frequencies in audio:
1156 @example
1157 afftfilt="'real=re * (1-clip((b/nb)*b,0,1))':imag='im * (1-clip((b/nb)*b,0,1))'"
1158 @end example
1159 @end itemize
1160
1161 @anchor{afir}
1162 @section afir
1163
1164 Apply an arbitrary Frequency Impulse Response filter.
1165
1166 This filter is designed for applying long FIR filters,
1167 up to 60 seconds long.
1168
1169 It can be used as component for digital crossover filters,
1170 room equalization, cross talk cancellation, wavefield synthesis,
1171 auralization, ambiophonics, ambisonics and spatialization.
1172
1173 This filter uses second stream as FIR coefficients.
1174 If second stream holds single channel, it will be used
1175 for all input channels in first stream, otherwise
1176 number of channels in second stream must be same as
1177 number of channels in first stream.
1178
1179 It accepts the following parameters:
1180
1181 @table @option
1182 @item dry
1183 Set dry gain. This sets input gain.
1184
1185 @item wet
1186 Set wet gain. This sets final output gain.
1187
1188 @item length
1189 Set Impulse Response filter length. Default is 1, which means whole IR is processed.
1190
1191 @item gtype
1192 Enable applying gain measured from power of IR.
1193
1194 Set which approach to use for auto gain measurement.
1195
1196 @table @option
1197 @item none
1198 Do not apply any gain.
1199
1200 @item peak
1201 select peak gain, very conservative approach. This is default value.
1202
1203 @item dc
1204 select DC gain, limited application.
1205
1206 @item gn
1207 select gain to noise approach, this is most popular one.
1208 @end table
1209
1210 @item irgain
1211 Set gain to be applied to IR coefficients before filtering.
1212 Allowed range is 0 to 1. This gain is applied after any gain applied with @var{gtype} option.
1213
1214 @item irfmt
1215 Set format of IR stream. Can be @code{mono} or @code{input}.
1216 Default is @code{input}.
1217
1218 @item maxir
1219 Set max allowed Impulse Response filter duration in seconds. Default is 30 seconds.
1220 Allowed range is 0.1 to 60 seconds.
1221
1222 @item response
1223 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1224 By default it is disabled.
1225
1226 @item channel
1227 Set for which IR channel to display frequency response. By default is first channel
1228 displayed. This option is used only when @var{response} is enabled.
1229
1230 @item size
1231 Set video stream size. This option is used only when @var{response} is enabled.
1232
1233 @item rate
1234 Set video stream frame rate. This option is used only when @var{response} is enabled.
1235
1236 @item minp
1237 Set minimal partition size used for convolution. Default is @var{8192}.
1238 Allowed range is from @var{8} to @var{32768}.
1239 Lower values decreases latency at cost of higher CPU usage.
1240
1241 @item maxp
1242 Set maximal partition size used for convolution. Default is @var{8192}.
1243 Allowed range is from @var{8} to @var{32768}.
1244 Lower values may increase CPU usage.
1245 @end table
1246
1247 @subsection Examples
1248
1249 @itemize
1250 @item
1251 Apply reverb to stream using mono IR file as second input, complete command using ffmpeg:
1252 @example
1253 ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav
1254 @end example
1255 @end itemize
1256
1257 @anchor{aformat}
1258 @section aformat
1259
1260 Set output format constraints for the input audio. The framework will
1261 negotiate the most appropriate format to minimize conversions.
1262
1263 It accepts the following parameters:
1264 @table @option
1265
1266 @item sample_fmts
1267 A '|'-separated list of requested sample formats.
1268
1269 @item sample_rates
1270 A '|'-separated list of requested sample rates.
1271
1272 @item channel_layouts
1273 A '|'-separated list of requested channel layouts.
1274
1275 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1276 for the required syntax.
1277 @end table
1278
1279 If a parameter is omitted, all values are allowed.
1280
1281 Force the output to either unsigned 8-bit or signed 16-bit stereo
1282 @example
1283 aformat=sample_fmts=u8|s16:channel_layouts=stereo
1284 @end example
1285
1286 @section agate
1287
1288 A gate is mainly used to reduce lower parts of a signal. This kind of signal
1289 processing reduces disturbing noise between useful signals.
1290
1291 Gating is done by detecting the volume below a chosen level @var{threshold}
1292 and dividing it by the factor set with @var{ratio}. The bottom of the noise
1293 floor is set via @var{range}. Because an exact manipulation of the signal
1294 would cause distortion of the waveform the reduction can be levelled over
1295 time. This is done by setting @var{attack} and @var{release}.
1296
1297 @var{attack} determines how long the signal has to fall below the threshold
1298 before any reduction will occur and @var{release} sets the time the signal
1299 has to rise above the threshold to reduce the reduction again.
1300 Shorter signals than the chosen attack time will be left untouched.
1301
1302 @table @option
1303 @item level_in
1304 Set input level before filtering.
1305 Default is 1. Allowed range is from 0.015625 to 64.
1306
1307 @item range
1308 Set the level of gain reduction when the signal is below the threshold.
1309 Default is 0.06125. Allowed range is from 0 to 1.
1310
1311 @item threshold
1312 If a signal rises above this level the gain reduction is released.
1313 Default is 0.125. Allowed range is from 0 to 1.
1314
1315 @item ratio
1316 Set a ratio by which the signal is reduced.
1317 Default is 2. Allowed range is from 1 to 9000.
1318
1319 @item attack
1320 Amount of milliseconds the signal has to rise above the threshold before gain
1321 reduction stops.
1322 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
1323
1324 @item release
1325 Amount of milliseconds the signal has to fall below the threshold before the
1326 reduction is increased again. Default is 250 milliseconds.
1327 Allowed range is from 0.01 to 9000.
1328
1329 @item makeup
1330 Set amount of amplification of signal after processing.
1331 Default is 1. Allowed range is from 1 to 64.
1332
1333 @item knee
1334 Curve the sharp knee around the threshold to enter gain reduction more softly.
1335 Default is 2.828427125. Allowed range is from 1 to 8.
1336
1337 @item detection
1338 Choose if exact signal should be taken for detection or an RMS like one.
1339 Default is @code{rms}. Can be @code{peak} or @code{rms}.
1340
1341 @item link
1342 Choose if the average level between all channels or the louder channel affects
1343 the reduction.
1344 Default is @code{average}. Can be @code{average} or @code{maximum}.
1345 @end table
1346
1347 @section aiir
1348
1349 Apply an arbitrary Infinite Impulse Response filter.
1350
1351 It accepts the following parameters:
1352
1353 @table @option
1354 @item z
1355 Set numerator/zeros coefficients.
1356
1357 @item p
1358 Set denominator/poles coefficients.
1359
1360 @item k
1361 Set channels gains.
1362
1363 @item dry_gain
1364 Set input gain.
1365
1366 @item wet_gain
1367 Set output gain.
1368
1369 @item f
1370 Set coefficients format.
1371
1372 @table @samp
1373 @item tf
1374 transfer function
1375 @item zp
1376 Z-plane zeros/poles, cartesian (default)
1377 @item pr
1378 Z-plane zeros/poles, polar radians
1379 @item pd
1380 Z-plane zeros/poles, polar degrees
1381 @end table
1382
1383 @item r
1384 Set kind of processing.
1385 Can be @code{d} - direct or @code{s} - serial cascading. Default is @code{s}.
1386
1387 @item e
1388 Set filtering precision.
1389
1390 @table @samp
1391 @item dbl
1392 double-precision floating-point (default)
1393 @item flt
1394 single-precision floating-point
1395 @item i32
1396 32-bit integers
1397 @item i16
1398 16-bit integers
1399 @end table
1400
1401 @item response
1402 Show IR frequency response, magnitude and phase in additional video stream.
1403 By default it is disabled.
1404
1405 @item channel
1406 Set for which IR channel to display frequency response. By default is first channel
1407 displayed. This option is used only when @var{response} is enabled.
1408
1409 @item size
1410 Set video stream size. This option is used only when @var{response} is enabled.
1411 @end table
1412
1413 Coefficients in @code{tf} format are separated by spaces and are in ascending
1414 order.
1415
1416 Coefficients in @code{zp} format are separated by spaces and order of coefficients
1417 doesn't matter. Coefficients in @code{zp} format are complex numbers with @var{i}
1418 imaginary unit.
1419
1420 Different coefficients and gains can be provided for every channel, in such case
1421 use '|' to separate coefficients or gains. Last provided coefficients will be
1422 used for all remaining channels.
1423
1424 @subsection Examples
1425
1426 @itemize
1427 @item
1428 Apply 2 pole elliptic notch at around 5000Hz for 48000 Hz sample rate:
1429 @example
1430 aiir=k=1:z=7.957584807809675810E-1 -2.575128568908332300 3.674839853930788710 -2.57512875289799137 7.957586296317130880E-1:p=1 -2.86950072432325953 3.63022088054647218 -2.28075678147272232 6.361362326477423500E-1:f=tf:r=d
1431 @end example
1432
1433 @item
1434 Same as above but in @code{zp} format:
1435 @example
1436 aiir=k=0.79575848078096756:z=0.80918701+0.58773007i 0.80918701-0.58773007i 0.80884700+0.58784055i 0.80884700-0.58784055i:p=0.63892345+0.59951235i 0.63892345-0.59951235i 0.79582691+0.44198673i 0.79582691-0.44198673i:f=zp:r=s
1437 @end example
1438 @end itemize
1439
1440 @section alimiter
1441
1442 The limiter prevents an input signal from rising over a desired threshold.
1443 This limiter uses lookahead technology to prevent your signal from distorting.
1444 It means that there is a small delay after the signal is processed. Keep in mind
1445 that the delay it produces is the attack time you set.
1446
1447 The filter accepts the following options:
1448
1449 @table @option
1450 @item level_in
1451 Set input gain. Default is 1.
1452
1453 @item level_out
1454 Set output gain. Default is 1.
1455
1456 @item limit
1457 Don't let signals above this level pass the limiter. Default is 1.
1458
1459 @item attack
1460 The limiter will reach its attenuation level in this amount of time in
1461 milliseconds. Default is 5 milliseconds.
1462
1463 @item release
1464 Come back from limiting to attenuation 1.0 in this amount of milliseconds.
1465 Default is 50 milliseconds.
1466
1467 @item asc
1468 When gain reduction is always needed ASC takes care of releasing to an
1469 average reduction level rather than reaching a reduction of 0 in the release
1470 time.
1471
1472 @item asc_level
1473 Select how much the release time is affected by ASC, 0 means nearly no changes
1474 in release time while 1 produces higher release times.
1475
1476 @item level
1477 Auto level output signal. Default is enabled.
1478 This normalizes audio back to 0dB if enabled.
1479 @end table
1480
1481 Depending on picked setting it is recommended to upsample input 2x or 4x times
1482 with @ref{aresample} before applying this filter.
1483
1484 @section allpass
1485
1486 Apply a two-pole all-pass filter with central frequency (in Hz)
1487 @var{frequency}, and filter-width @var{width}.
1488 An all-pass filter changes the audio's frequency to phase relationship
1489 without changing its frequency to amplitude relationship.
1490
1491 The filter accepts the following options:
1492
1493 @table @option
1494 @item frequency, f
1495 Set frequency in Hz.
1496
1497 @item width_type, t
1498 Set method to specify band-width of filter.
1499 @table @option
1500 @item h
1501 Hz
1502 @item q
1503 Q-Factor
1504 @item o
1505 octave
1506 @item s
1507 slope
1508 @item k
1509 kHz
1510 @end table
1511
1512 @item width, w
1513 Specify the band-width of a filter in width_type units.
1514
1515 @item channels, c
1516 Specify which channels to filter, by default all available are filtered.
1517 @end table
1518
1519 @subsection Commands
1520
1521 This filter supports the following commands:
1522 @table @option
1523 @item frequency, f
1524 Change allpass frequency.
1525 Syntax for the command is : "@var{frequency}"
1526
1527 @item width_type, t
1528 Change allpass width_type.
1529 Syntax for the command is : "@var{width_type}"
1530
1531 @item width, w
1532 Change allpass width.
1533 Syntax for the command is : "@var{width}"
1534 @end table
1535
1536 @section aloop
1537
1538 Loop audio samples.
1539
1540 The filter accepts the following options:
1541
1542 @table @option
1543 @item loop
1544 Set the number of loops. Setting this value to -1 will result in infinite loops.
1545 Default is 0.
1546
1547 @item size
1548 Set maximal number of samples. Default is 0.
1549
1550 @item start
1551 Set first sample of loop. Default is 0.
1552 @end table
1553
1554 @anchor{amerge}
1555 @section amerge
1556
1557 Merge two or more audio streams into a single multi-channel stream.
1558
1559 The filter accepts the following options:
1560
1561 @table @option
1562
1563 @item inputs
1564 Set the number of inputs. Default is 2.
1565
1566 @end table
1567
1568 If the channel layouts of the inputs are disjoint, and therefore compatible,
1569 the channel layout of the output will be set accordingly and the channels
1570 will be reordered as necessary. If the channel layouts of the inputs are not
1571 disjoint, the output will have all the channels of the first input then all
1572 the channels of the second input, in that order, and the channel layout of
1573 the output will be the default value corresponding to the total number of
1574 channels.
1575
1576 For example, if the first input is in 2.1 (FL+FR+LF) and the second input
1577 is FC+BL+BR, then the output will be in 5.1, with the channels in the
1578 following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
1579 first input, b1 is the first channel of the second input).
1580
1581 On the other hand, if both input are in stereo, the output channels will be
1582 in the default order: a1, a2, b1, b2, and the channel layout will be
1583 arbitrarily set to 4.0, which may or may not be the expected value.
1584
1585 All inputs must have the same sample rate, and format.
1586
1587 If inputs do not have the same duration, the output will stop with the
1588 shortest.
1589
1590 @subsection Examples
1591
1592 @itemize
1593 @item
1594 Merge two mono files into a stereo stream:
1595 @example
1596 amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
1597 @end example
1598
1599 @item
1600 Multiple merges assuming 1 video stream and 6 audio streams in @file{input.mkv}:
1601 @example
1602 ffmpeg -i input.mkv -filter_complex "[0:1][0:2][0:3][0:4][0:5][0:6] amerge=inputs=6" -c:a pcm_s16le output.mkv
1603 @end example
1604 @end itemize
1605
1606 @section amix
1607
1608 Mixes multiple audio inputs into a single output.
1609
1610 Note that this filter only supports float samples (the @var{amerge}
1611 and @var{pan} audio filters support many formats). If the @var{amix}
1612 input has integer samples then @ref{aresample} will be automatically
1613 inserted to perform the conversion to float samples.
1614
1615 For example
1616 @example
1617 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
1618 @end example
1619 will mix 3 input audio streams to a single output with the same duration as the
1620 first input and a dropout transition time of 3 seconds.
1621
1622 It accepts the following parameters:
1623 @table @option
1624
1625 @item inputs
1626 The number of inputs. If unspecified, it defaults to 2.
1627
1628 @item duration
1629 How to determine the end-of-stream.
1630 @table @option
1631
1632 @item longest
1633 The duration of the longest input. (default)
1634
1635 @item shortest
1636 The duration of the shortest input.
1637
1638 @item first
1639 The duration of the first input.
1640
1641 @end table
1642
1643 @item dropout_transition
1644 The transition time, in seconds, for volume renormalization when an input
1645 stream ends. The default value is 2 seconds.
1646
1647 @item weights
1648 Specify weight of each input audio stream as sequence.
1649 Each weight is separated by space. By default all inputs have same weight.
1650 @end table
1651
1652 @section amultiply
1653
1654 Multiply first audio stream with second audio stream and store result
1655 in output audio stream. Multiplication is done by multiplying each
1656 sample from first stream with sample at same position from second stream.
1657
1658 With this element-wise multiplication one can create amplitude fades and
1659 amplitude modulations.
1660
1661 @section anequalizer
1662
1663 High-order parametric multiband equalizer for each channel.
1664
1665 It accepts the following parameters:
1666 @table @option
1667 @item params
1668
1669 This option string is in format:
1670 "c@var{chn} f=@var{cf} w=@var{w} g=@var{g} t=@var{f} | ..."
1671 Each equalizer band is separated by '|'.
1672
1673 @table @option
1674 @item chn
1675 Set channel number to which equalization will be applied.
1676 If input doesn't have that channel the entry is ignored.
1677
1678 @item f
1679 Set central frequency for band.
1680 If input doesn't have that frequency the entry is ignored.
1681
1682 @item w
1683 Set band width in hertz.
1684
1685 @item g
1686 Set band gain in dB.
1687
1688 @item t
1689 Set filter type for band, optional, can be:
1690
1691 @table @samp
1692 @item 0
1693 Butterworth, this is default.
1694
1695 @item 1
1696 Chebyshev type 1.
1697
1698 @item 2
1699 Chebyshev type 2.
1700 @end table
1701 @end table
1702
1703 @item curves
1704 With this option activated frequency response of anequalizer is displayed
1705 in video stream.
1706
1707 @item size
1708 Set video stream size. Only useful if curves option is activated.
1709
1710 @item mgain
1711 Set max gain that will be displayed. Only useful if curves option is activated.
1712 Setting this to a reasonable value makes it possible to display gain which is derived from
1713 neighbour bands which are too close to each other and thus produce higher gain
1714 when both are activated.
1715
1716 @item fscale
1717 Set frequency scale used to draw frequency response in video output.
1718 Can be linear or logarithmic. Default is logarithmic.
1719
1720 @item colors
1721 Set color for each channel curve which is going to be displayed in video stream.
1722 This is list of color names separated by space or by '|'.
1723 Unrecognised or missing colors will be replaced by white color.
1724 @end table
1725
1726 @subsection Examples
1727
1728 @itemize
1729 @item
1730 Lower gain by 10 of central frequency 200Hz and width 100 Hz
1731 for first 2 channels using Chebyshev type 1 filter:
1732 @example
1733 anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
1734 @end example
1735 @end itemize
1736
1737 @subsection Commands
1738
1739 This filter supports the following commands:
1740 @table @option
1741 @item change
1742 Alter existing filter parameters.
1743 Syntax for the commands is : "@var{fN}|f=@var{freq}|w=@var{width}|g=@var{gain}"
1744
1745 @var{fN} is existing filter number, starting from 0, if no such filter is available
1746 error is returned.
1747 @var{freq} set new frequency parameter.
1748 @var{width} set new width parameter in herz.
1749 @var{gain} set new gain parameter in dB.
1750
1751 Full filter invocation with asendcmd may look like this:
1752 asendcmd=c='4.0 anequalizer change 0|f=200|w=50|g=1',anequalizer=...
1753 @end table
1754
1755 @section anlmdn
1756
1757 Reduce broadband noise in audio samples using Non-Local Means algorithm.
1758
1759 Each sample is adjusted by looking for other samples with similar contexts. This
1760 context similarity is defined by comparing their surrounding patches of size
1761 @option{p}. Patches are searched in an area of @option{r} around the sample.
1762
1763 The filter accepts the following options.
1764
1765 @table @option
1766 @item s
1767 Set denoising strength. Allowed range is from 0.00001 to 10. Default value is 0.00001.
1768
1769 @item p
1770 Set patch radius duration. Allowed range is from 1 to 100 milliseconds.
1771 Default value is 2 milliseconds.
1772
1773 @item r
1774 Set research radius duration. Allowed range is from 2 to 300 milliseconds.
1775 Default value is 6 milliseconds.
1776 @end table
1777
1778 @section anull
1779
1780 Pass the audio source unchanged to the output.
1781
1782 @section apad
1783
1784 Pad the end of an audio stream with silence.
1785
1786 This can be used together with @command{ffmpeg} @option{-shortest} to
1787 extend audio streams to the same length as the video stream.
1788
1789 A description of the accepted options follows.
1790
1791 @table @option
1792 @item packet_size
1793 Set silence packet size. Default value is 4096.
1794
1795 @item pad_len
1796 Set the number of samples of silence to add to the end. After the
1797 value is reached, the stream is terminated. This option is mutually
1798 exclusive with @option{whole_len}.
1799
1800 @item whole_len
1801 Set the minimum total number of samples in the output audio stream. If
1802 the value is longer than the input audio length, silence is added to
1803 the end, until the value is reached. This option is mutually exclusive
1804 with @option{pad_len}.
1805
1806 @item pad_dur
1807 Specify the duration of samples of silence to add. See
1808 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1809 for the accepted syntax. Used only if set to non-zero value.
1810
1811 @item whole_dur
1812 Specify the minimum total duration in the output audio stream. See
1813 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1814 for the accepted syntax. Used only if set to non-zero value. If the value is longer than
1815 the input audio length, silence is added to the end, until the value is reached.
1816 This option is mutually exclusive with @option{pad_dur}
1817 @end table
1818
1819 If neither the @option{pad_len} nor the @option{whole_len} nor @option{pad_dur}
1820 nor @option{whole_dur} option is set, the filter will add silence to the end of
1821 the input stream indefinitely.
1822
1823 @subsection Examples
1824
1825 @itemize
1826 @item
1827 Add 1024 samples of silence to the end of the input:
1828 @example
1829 apad=pad_len=1024
1830 @end example
1831
1832 @item
1833 Make sure the audio output will contain at least 10000 samples, pad
1834 the input with silence if required:
1835 @example
1836 apad=whole_len=10000
1837 @end example
1838
1839 @item
1840 Use @command{ffmpeg} to pad the audio input with silence, so that the
1841 video stream will always result the shortest and will be converted
1842 until the end in the output file when using the @option{shortest}
1843 option:
1844 @example
1845 ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
1846 @end example
1847 @end itemize
1848
1849 @section aphaser
1850 Add a phasing effect to the input audio.
1851
1852 A phaser filter creates series of peaks and troughs in the frequency spectrum.
1853 The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
1854
1855 A description of the accepted parameters follows.
1856
1857 @table @option
1858 @item in_gain
1859 Set input gain. Default is 0.4.
1860
1861 @item out_gain
1862 Set output gain. Default is 0.74
1863
1864 @item delay
1865 Set delay in milliseconds. Default is 3.0.
1866
1867 @item decay
1868 Set decay. Default is 0.4.
1869
1870 @item speed
1871 Set modulation speed in Hz. Default is 0.5.
1872
1873 @item type
1874 Set modulation type. Default is triangular.
1875
1876 It accepts the following values:
1877 @table @samp
1878 @item triangular, t
1879 @item sinusoidal, s
1880 @end table
1881 @end table
1882
1883 @section apulsator
1884
1885 Audio pulsator is something between an autopanner and a tremolo.
1886 But it can produce funny stereo effects as well. Pulsator changes the volume
1887 of the left and right channel based on a LFO (low frequency oscillator) with
1888 different waveforms and shifted phases.
1889 This filter have the ability to define an offset between left and right
1890 channel. An offset of 0 means that both LFO shapes match each other.
1891 The left and right channel are altered equally - a conventional tremolo.
1892 An offset of 50% means that the shape of the right channel is exactly shifted
1893 in phase (or moved backwards about half of the frequency) - pulsator acts as
1894 an autopanner. At 1 both curves match again. Every setting in between moves the
1895 phase shift gapless between all stages and produces some "bypassing" sounds with
1896 sine and triangle waveforms. The more you set the offset near 1 (starting from
1897 the 0.5) the faster the signal passes from the left to the right speaker.
1898
1899 The filter accepts the following options:
1900
1901 @table @option
1902 @item level_in
1903 Set input gain. By default it is 1. Range is [0.015625 - 64].
1904
1905 @item level_out
1906 Set output gain. By default it is 1. Range is [0.015625 - 64].
1907
1908 @item mode
1909 Set waveform shape the LFO will use. Can be one of: sine, triangle, square,
1910 sawup or sawdown. Default is sine.
1911
1912 @item amount
1913 Set modulation. Define how much of original signal is affected by the LFO.
1914
1915 @item offset_l
1916 Set left channel offset. Default is 0. Allowed range is [0 - 1].
1917
1918 @item offset_r
1919 Set right channel offset. Default is 0.5. Allowed range is [0 - 1].
1920
1921 @item width
1922 Set pulse width. Default is 1. Allowed range is [0 - 2].
1923
1924 @item timing
1925 Set possible timing mode. Can be one of: bpm, ms or hz. Default is hz.
1926
1927 @item bpm
1928 Set bpm. Default is 120. Allowed range is [30 - 300]. Only used if timing
1929 is set to bpm.
1930
1931 @item ms
1932 Set ms. Default is 500. Allowed range is [10 - 2000]. Only used if timing
1933 is set to ms.
1934
1935 @item hz
1936 Set frequency in Hz. Default is 2. Allowed range is [0.01 - 100]. Only used
1937 if timing is set to hz.
1938 @end table
1939
1940 @anchor{aresample}
1941 @section aresample
1942
1943 Resample the input audio to the specified parameters, using the
1944 libswresample library. If none are specified then the filter will
1945 automatically convert between its input and output.
1946
1947 This filter is also able to stretch/squeeze the audio data to make it match
1948 the timestamps or to inject silence / cut out audio to make it match the
1949 timestamps, do a combination of both or do neither.
1950
1951 The filter accepts the syntax
1952 [@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
1953 expresses a sample rate and @var{resampler_options} is a list of
1954 @var{key}=@var{value} pairs, separated by ":". See the
1955 @ref{Resampler Options,,"Resampler Options" section in the
1956 ffmpeg-resampler(1) manual,ffmpeg-resampler}
1957 for the complete list of supported options.
1958
1959 @subsection Examples
1960
1961 @itemize
1962 @item
1963 Resample the input audio to 44100Hz:
1964 @example
1965 aresample=44100
1966 @end example
1967
1968 @item
1969 Stretch/squeeze samples to the given timestamps, with a maximum of 1000
1970 samples per second compensation:
1971 @example
1972 aresample=async=1000
1973 @end example
1974 @end itemize
1975
1976 @section areverse
1977
1978 Reverse an audio clip.
1979
1980 Warning: This filter requires memory to buffer the entire clip, so trimming
1981 is suggested.
1982
1983 @subsection Examples
1984
1985 @itemize
1986 @item
1987 Take the first 5 seconds of a clip, and reverse it.
1988 @example
1989 atrim=end=5,areverse
1990 @end example
1991 @end itemize
1992
1993 @section asetnsamples
1994
1995 Set the number of samples per each output audio frame.
1996
1997 The last output packet may contain a different number of samples, as
1998 the filter will flush all the remaining samples when the input audio
1999 signals its end.
2000
2001 The filter accepts the following options:
2002
2003 @table @option
2004
2005 @item nb_out_samples, n
2006 Set the number of frames per each output audio frame. The number is
2007 intended as the number of samples @emph{per each channel}.
2008 Default value is 1024.
2009
2010 @item pad, p
2011 If set to 1, the filter will pad the last audio frame with zeroes, so
2012 that the last frame will contain the same number of samples as the
2013 previous ones. Default value is 1.
2014 @end table
2015
2016 For example, to set the number of per-frame samples to 1234 and
2017 disable padding for the last frame, use:
2018 @example
2019 asetnsamples=n=1234:p=0
2020 @end example
2021
2022 @section asetrate
2023
2024 Set the sample rate without altering the PCM data.
2025 This will result in a change of speed and pitch.
2026
2027 The filter accepts the following options:
2028
2029 @table @option
2030 @item sample_rate, r
2031 Set the output sample rate. Default is 44100 Hz.
2032 @end table
2033
2034 @section ashowinfo
2035
2036 Show a line containing various information for each input audio frame.
2037 The input audio is not modified.
2038
2039 The shown line contains a sequence of key/value pairs of the form
2040 @var{key}:@var{value}.
2041
2042 The following values are shown in the output:
2043
2044 @table @option
2045 @item n
2046 The (sequential) number of the input frame, starting from 0.
2047
2048 @item pts
2049 The presentation timestamp of the input frame, in time base units; the time base
2050 depends on the filter input pad, and is usually 1/@var{sample_rate}.
2051
2052 @item pts_time
2053 The presentation timestamp of the input frame in seconds.
2054
2055 @item pos
2056 position of the frame in the input stream, -1 if this information in
2057 unavailable and/or meaningless (for example in case of synthetic audio)
2058
2059 @item fmt
2060 The sample format.
2061
2062 @item chlayout
2063 The channel layout.
2064
2065 @item rate
2066 The sample rate for the audio frame.
2067
2068 @item nb_samples
2069 The number of samples (per channel) in the frame.
2070
2071 @item checksum
2072 The Adler-32 checksum (printed in hexadecimal) of the audio data. For planar
2073 audio, the data is treated as if all the planes were concatenated.
2074
2075 @item plane_checksums
2076 A list of Adler-32 checksums for each data plane.
2077 @end table
2078
2079 @anchor{astats}
2080 @section astats
2081
2082 Display time domain statistical information about the audio channels.
2083 Statistics are calculated and displayed for each audio channel and,
2084 where applicable, an overall figure is also given.
2085
2086 It accepts the following option:
2087 @table @option
2088 @item length
2089 Short window length in seconds, used for peak and trough RMS measurement.
2090 Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.01 - 10]}.
2091
2092 @item metadata
2093
2094 Set metadata injection. All the metadata keys are prefixed with @code{lavfi.astats.X},
2095 where @code{X} is channel number starting from 1 or string @code{Overall}. Default is
2096 disabled.
2097
2098 Available keys for each channel are:
2099 DC_offset
2100 Min_level
2101 Max_level
2102 Min_difference
2103 Max_difference
2104 Mean_difference
2105 RMS_difference
2106 Peak_level
2107 RMS_peak
2108 RMS_trough
2109 Crest_factor
2110 Flat_factor
2111 Peak_count
2112 Bit_depth
2113 Dynamic_range
2114 Zero_crossings
2115 Zero_crossings_rate
2116
2117 and for Overall:
2118 DC_offset
2119 Min_level
2120 Max_level
2121 Min_difference
2122 Max_difference
2123 Mean_difference
2124 RMS_difference
2125 Peak_level
2126 RMS_level
2127 RMS_peak
2128 RMS_trough
2129 Flat_factor
2130 Peak_count
2131 Bit_depth
2132 Number_of_samples
2133
2134 For example full key look like this @code{lavfi.astats.1.DC_offset} or
2135 this @code{lavfi.astats.Overall.Peak_count}.
2136
2137 For description what each key means read below.
2138
2139 @item reset
2140 Set number of frame after which stats are going to be recalculated.
2141 Default is disabled.
2142 @end table
2143
2144 A description of each shown parameter follows:
2145
2146 @table @option
2147 @item DC offset
2148 Mean amplitude displacement from zero.
2149
2150 @item Min level
2151 Minimal sample level.
2152
2153 @item Max level
2154 Maximal sample level.
2155
2156 @item Min difference
2157 Minimal difference between two consecutive samples.
2158
2159 @item Max difference
2160 Maximal difference between two consecutive samples.
2161
2162 @item Mean difference
2163 Mean difference between two consecutive samples.
2164 The average of each difference between two consecutive samples.
2165
2166 @item RMS difference
2167 Root Mean Square difference between two consecutive samples.
2168
2169 @item Peak level dB
2170 @item RMS level dB
2171 Standard peak and RMS level measured in dBFS.
2172
2173 @item RMS peak dB
2174 @item RMS trough dB
2175 Peak and trough values for RMS level measured over a short window.
2176
2177 @item Crest factor
2178 Standard ratio of peak to RMS level (note: not in dB).
2179
2180 @item Flat factor
2181 Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
2182 (i.e. either @var{Min level} or @var{Max level}).
2183
2184 @item Peak count
2185 Number of occasions (not the number of samples) that the signal attained either
2186 @var{Min level} or @var{Max level}.
2187
2188 @item Bit depth
2189 Overall bit depth of audio. Number of bits used for each sample.
2190
2191 @item Dynamic range
2192 Measured dynamic range of audio in dB.
2193
2194 @item Zero crossings
2195 Number of points where the waveform crosses the zero level axis.
2196
2197 @item Zero crossings rate
2198 Rate of Zero crossings and number of audio samples.
2199 @end table
2200
2201 @section atempo
2202
2203 Adjust audio tempo.
2204
2205 The filter accepts exactly one parameter, the audio tempo. If not
2206 specified then the filter will assume nominal 1.0 tempo. Tempo must
2207 be in the [0.5, 100.0] range.
2208
2209 Note that tempo greater than 2 will skip some samples rather than
2210 blend them in.  If for any reason this is a concern it is always
2211 possible to daisy-chain several instances of atempo to achieve the
2212 desired product tempo.
2213
2214 @subsection Examples
2215
2216 @itemize
2217 @item
2218 Slow down audio to 80% tempo:
2219 @example
2220 atempo=0.8
2221 @end example
2222
2223 @item
2224 To speed up audio to 300% tempo:
2225 @example
2226 atempo=3
2227 @end example
2228
2229 @item
2230 To speed up audio to 300% tempo by daisy-chaining two atempo instances:
2231 @example
2232 atempo=sqrt(3),atempo=sqrt(3)
2233 @end example
2234 @end itemize
2235
2236 @section atrim
2237
2238 Trim the input so that the output contains one continuous subpart of the input.
2239
2240 It accepts the following parameters:
2241 @table @option
2242 @item start
2243 Timestamp (in seconds) of the start of the section to keep. I.e. the audio
2244 sample with the timestamp @var{start} will be the first sample in the output.
2245
2246 @item end
2247 Specify time of the first audio sample that will be dropped, i.e. the
2248 audio sample immediately preceding the one with the timestamp @var{end} will be
2249 the last sample in the output.
2250
2251 @item start_pts
2252 Same as @var{start}, except this option sets the start timestamp in samples
2253 instead of seconds.
2254
2255 @item end_pts
2256 Same as @var{end}, except this option sets the end timestamp in samples instead
2257 of seconds.
2258
2259 @item duration
2260 The maximum duration of the output in seconds.
2261
2262 @item start_sample
2263 The number of the first sample that should be output.
2264
2265 @item end_sample
2266 The number of the first sample that should be dropped.
2267 @end table
2268
2269 @option{start}, @option{end}, and @option{duration} are expressed as time
2270 duration specifications; see
2271 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
2272
2273 Note that the first two sets of the start/end options and the @option{duration}
2274 option look at the frame timestamp, while the _sample options simply count the
2275 samples that pass through the filter. So start/end_pts and start/end_sample will
2276 give different results when the timestamps are wrong, inexact or do not start at
2277 zero. Also note that this filter does not modify the timestamps. If you wish
2278 to have the output timestamps start at zero, insert the asetpts filter after the
2279 atrim filter.
2280
2281 If multiple start or end options are set, this filter tries to be greedy and
2282 keep all samples that match at least one of the specified constraints. To keep
2283 only the part that matches all the constraints at once, chain multiple atrim
2284 filters.
2285
2286 The defaults are such that all the input is kept. So it is possible to set e.g.
2287 just the end values to keep everything before the specified time.
2288
2289 Examples:
2290 @itemize
2291 @item
2292 Drop everything except the second minute of input:
2293 @example
2294 ffmpeg -i INPUT -af atrim=60:120
2295 @end example
2296
2297 @item
2298 Keep only the first 1000 samples:
2299 @example
2300 ffmpeg -i INPUT -af atrim=end_sample=1000
2301 @end example
2302
2303 @end itemize
2304
2305 @section bandpass
2306
2307 Apply a two-pole Butterworth band-pass filter with central
2308 frequency @var{frequency}, and (3dB-point) band-width width.
2309 The @var{csg} option selects a constant skirt gain (peak gain = Q)
2310 instead of the default: constant 0dB peak gain.
2311 The filter roll off at 6dB per octave (20dB per decade).
2312
2313 The filter accepts the following options:
2314
2315 @table @option
2316 @item frequency, f
2317 Set the filter's central frequency. Default is @code{3000}.
2318
2319 @item csg
2320 Constant skirt gain if set to 1. Defaults to 0.
2321
2322 @item width_type, t
2323 Set method to specify band-width of filter.
2324 @table @option
2325 @item h
2326 Hz
2327 @item q
2328 Q-Factor
2329 @item o
2330 octave
2331 @item s
2332 slope
2333 @item k
2334 kHz
2335 @end table
2336
2337 @item width, w
2338 Specify the band-width of a filter in width_type units.
2339
2340 @item channels, c
2341 Specify which channels to filter, by default all available are filtered.
2342 @end table
2343
2344 @subsection Commands
2345
2346 This filter supports the following commands:
2347 @table @option
2348 @item frequency, f
2349 Change bandpass frequency.
2350 Syntax for the command is : "@var{frequency}"
2351
2352 @item width_type, t
2353 Change bandpass width_type.
2354 Syntax for the command is : "@var{width_type}"
2355
2356 @item width, w
2357 Change bandpass width.
2358 Syntax for the command is : "@var{width}"
2359 @end table
2360
2361 @section bandreject
2362
2363 Apply a two-pole Butterworth band-reject filter with central
2364 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
2365 The filter roll off at 6dB per octave (20dB per decade).
2366
2367 The filter accepts the following options:
2368
2369 @table @option
2370 @item frequency, f
2371 Set the filter's central frequency. Default is @code{3000}.
2372
2373 @item width_type, t
2374 Set method to specify band-width of filter.
2375 @table @option
2376 @item h
2377 Hz
2378 @item q
2379 Q-Factor
2380 @item o
2381 octave
2382 @item s
2383 slope
2384 @item k
2385 kHz
2386 @end table
2387
2388 @item width, w
2389 Specify the band-width of a filter in width_type units.
2390
2391 @item channels, c
2392 Specify which channels to filter, by default all available are filtered.
2393 @end table
2394
2395 @subsection Commands
2396
2397 This filter supports the following commands:
2398 @table @option
2399 @item frequency, f
2400 Change bandreject frequency.
2401 Syntax for the command is : "@var{frequency}"
2402
2403 @item width_type, t
2404 Change bandreject width_type.
2405 Syntax for the command is : "@var{width_type}"
2406
2407 @item width, w
2408 Change bandreject width.
2409 Syntax for the command is : "@var{width}"
2410 @end table
2411
2412 @section bass, lowshelf
2413
2414 Boost or cut the bass (lower) frequencies of the audio using a two-pole
2415 shelving filter with a response similar to that of a standard
2416 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
2417
2418 The filter accepts the following options:
2419
2420 @table @option
2421 @item gain, g
2422 Give the gain at 0 Hz. Its useful range is about -20
2423 (for a large cut) to +20 (for a large boost).
2424 Beware of clipping when using a positive gain.
2425
2426 @item frequency, f
2427 Set the filter's central frequency and so can be used
2428 to extend or reduce the frequency range to be boosted or cut.
2429 The default value is @code{100} Hz.
2430
2431 @item width_type, t
2432 Set method to specify band-width of filter.
2433 @table @option
2434 @item h
2435 Hz
2436 @item q
2437 Q-Factor
2438 @item o
2439 octave
2440 @item s
2441 slope
2442 @item k
2443 kHz
2444 @end table
2445
2446 @item width, w
2447 Determine how steep is the filter's shelf transition.
2448
2449 @item channels, c
2450 Specify which channels to filter, by default all available are filtered.
2451 @end table
2452
2453 @subsection Commands
2454
2455 This filter supports the following commands:
2456 @table @option
2457 @item frequency, f
2458 Change bass frequency.
2459 Syntax for the command is : "@var{frequency}"
2460
2461 @item width_type, t
2462 Change bass width_type.
2463 Syntax for the command is : "@var{width_type}"
2464
2465 @item width, w
2466 Change bass width.
2467 Syntax for the command is : "@var{width}"
2468
2469 @item gain, g
2470 Change bass gain.
2471 Syntax for the command is : "@var{gain}"
2472 @end table
2473
2474 @section biquad
2475
2476 Apply a biquad IIR filter with the given coefficients.
2477 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
2478 are the numerator and denominator coefficients respectively.
2479 and @var{channels}, @var{c} specify which channels to filter, by default all
2480 available are filtered.
2481
2482 @subsection Commands
2483
2484 This filter supports the following commands:
2485 @table @option
2486 @item a0
2487 @item a1
2488 @item a2
2489 @item b0
2490 @item b1
2491 @item b2
2492 Change biquad parameter.
2493 Syntax for the command is : "@var{value}"
2494 @end table
2495
2496 @section bs2b
2497 Bauer stereo to binaural transformation, which improves headphone listening of
2498 stereo audio records.
2499
2500 To enable compilation of this filter you need to configure FFmpeg with
2501 @code{--enable-libbs2b}.
2502
2503 It accepts the following parameters:
2504 @table @option
2505
2506 @item profile
2507 Pre-defined crossfeed level.
2508 @table @option
2509
2510 @item default
2511 Default level (fcut=700, feed=50).
2512
2513 @item cmoy
2514 Chu Moy circuit (fcut=700, feed=60).
2515
2516 @item jmeier
2517 Jan Meier circuit (fcut=650, feed=95).
2518
2519 @end table
2520
2521 @item fcut
2522 Cut frequency (in Hz).
2523
2524 @item feed
2525 Feed level (in Hz).
2526
2527 @end table
2528
2529 @section channelmap
2530
2531 Remap input channels to new locations.
2532
2533 It accepts the following parameters:
2534 @table @option
2535 @item map
2536 Map channels from input to output. The argument is a '|'-separated list of
2537 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
2538 @var{in_channel} form. @var{in_channel} can be either the name of the input
2539 channel (e.g. FL for front left) or its index in the input channel layout.
2540 @var{out_channel} is the name of the output channel or its index in the output
2541 channel layout. If @var{out_channel} is not given then it is implicitly an
2542 index, starting with zero and increasing by one for each mapping.
2543
2544 @item channel_layout
2545 The channel layout of the output stream.
2546 @end table
2547
2548 If no mapping is present, the filter will implicitly map input channels to
2549 output channels, preserving indices.
2550
2551 @subsection Examples
2552
2553 @itemize
2554 @item
2555 For example, assuming a 5.1+downmix input MOV file,
2556 @example
2557 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
2558 @end example
2559 will create an output WAV file tagged as stereo from the downmix channels of
2560 the input.
2561
2562 @item
2563 To fix a 5.1 WAV improperly encoded in AAC's native channel order
2564 @example
2565 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
2566 @end example
2567 @end itemize
2568
2569 @section channelsplit
2570
2571 Split each channel from an input audio stream into a separate output stream.
2572
2573 It accepts the following parameters:
2574 @table @option
2575 @item channel_layout
2576 The channel layout of the input stream. The default is "stereo".
2577 @item channels
2578 A channel layout describing the channels to be extracted as separate output streams
2579 or "all" to extract each input channel as a separate stream. The default is "all".
2580
2581 Choosing channels not present in channel layout in the input will result in an error.
2582 @end table
2583
2584 @subsection Examples
2585
2586 @itemize
2587 @item
2588 For example, assuming a stereo input MP3 file,
2589 @example
2590 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
2591 @end example
2592 will create an output Matroska file with two audio streams, one containing only
2593 the left channel and the other the right channel.
2594
2595 @item
2596 Split a 5.1 WAV file into per-channel files:
2597 @example
2598 ffmpeg -i in.wav -filter_complex
2599 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
2600 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
2601 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
2602 side_right.wav
2603 @end example
2604
2605 @item
2606 Extract only LFE from a 5.1 WAV file:
2607 @example
2608 ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]'
2609 -map '[LFE]' lfe.wav
2610 @end example
2611 @end itemize
2612
2613 @section chorus
2614 Add a chorus effect to the audio.
2615
2616 Can make a single vocal sound like a chorus, but can also be applied to instrumentation.
2617
2618 Chorus resembles an echo effect with a short delay, but whereas with echo the delay is
2619 constant, with chorus, it is varied using using sinusoidal or triangular modulation.
2620 The modulation depth defines the range the modulated delay is played before or after
2621 the delay. Hence the delayed sound will sound slower or faster, that is the delayed
2622 sound tuned around the original one, like in a chorus where some vocals are slightly
2623 off key.
2624
2625 It accepts the following parameters:
2626 @table @option
2627 @item in_gain
2628 Set input gain. Default is 0.4.
2629
2630 @item out_gain
2631 Set output gain. Default is 0.4.
2632
2633 @item delays
2634 Set delays. A typical delay is around 40ms to 60ms.
2635
2636 @item decays
2637 Set decays.
2638
2639 @item speeds
2640 Set speeds.
2641
2642 @item depths
2643 Set depths.
2644 @end table
2645
2646 @subsection Examples
2647
2648 @itemize
2649 @item
2650 A single delay:
2651 @example
2652 chorus=0.7:0.9:55:0.4:0.25:2
2653 @end example
2654
2655 @item
2656 Two delays:
2657 @example
2658 chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
2659 @end example
2660
2661 @item
2662 Fuller sounding chorus with three delays:
2663 @example
2664 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
2665 @end example
2666 @end itemize
2667
2668 @section compand
2669 Compress or expand the audio's dynamic range.
2670
2671 It accepts the following parameters:
2672
2673 @table @option
2674
2675 @item attacks
2676 @item decays
2677 A list of times in seconds for each channel over which the instantaneous level
2678 of the input signal is averaged to determine its volume. @var{attacks} refers to
2679 increase of volume and @var{decays} refers to decrease of volume. For most
2680 situations, the attack time (response to the audio getting louder) should be
2681 shorter than the decay time, because the human ear is more sensitive to sudden
2682 loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
2683 a typical value for decay is 0.8 seconds.
2684 If specified number of attacks & decays is lower than number of channels, the last
2685 set attack/decay will be used for all remaining channels.
2686
2687 @item points
2688 A list of points for the transfer function, specified in dB relative to the
2689 maximum possible signal amplitude. Each key points list must be defined using
2690 the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
2691 @code{x0/y0 x1/y1 x2/y2 ....}
2692
2693 The input values must be in strictly increasing order but the transfer function
2694 does not have to be monotonically rising. The point @code{0/0} is assumed but
2695 may be overridden (by @code{0/out-dBn}). Typical values for the transfer
2696 function are @code{-70/-70|-60/-20|1/0}.
2697
2698 @item soft-knee
2699 Set the curve radius in dB for all joints. It defaults to 0.01.
2700
2701 @item gain
2702 Set the additional gain in dB to be applied at all points on the transfer
2703 function. This allows for easy adjustment of the overall gain.
2704 It defaults to 0.
2705
2706 @item volume
2707 Set an initial volume, in dB, to be assumed for each channel when filtering
2708 starts. This permits the user to supply a nominal level initially, so that, for
2709 example, a very large gain is not applied to initial signal levels before the
2710 companding has begun to operate. A typical value for audio which is initially
2711 quiet is -90 dB. It defaults to 0.
2712
2713 @item delay
2714 Set a delay, in seconds. The input audio is analyzed immediately, but audio is
2715 delayed before being fed to the volume adjuster. Specifying a delay
2716 approximately equal to the attack/decay times allows the filter to effectively
2717 operate in predictive rather than reactive mode. It defaults to 0.
2718
2719 @end table
2720
2721 @subsection Examples
2722
2723 @itemize
2724 @item
2725 Make music with both quiet and loud passages suitable for listening to in a
2726 noisy environment:
2727 @example
2728 compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
2729 @end example
2730
2731 Another example for audio with whisper and explosion parts:
2732 @example
2733 compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
2734 @end example
2735
2736 @item
2737 A noise gate for when the noise is at a lower level than the signal:
2738 @example
2739 compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
2740 @end example
2741
2742 @item
2743 Here is another noise gate, this time for when the noise is at a higher level
2744 than the signal (making it, in some ways, similar to squelch):
2745 @example
2746 compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
2747 @end example
2748
2749 @item
2750 2:1 compression starting at -6dB:
2751 @example
2752 compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
2753 @end example
2754
2755 @item
2756 2:1 compression starting at -9dB:
2757 @example
2758 compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
2759 @end example
2760
2761 @item
2762 2:1 compression starting at -12dB:
2763 @example
2764 compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
2765 @end example
2766
2767 @item
2768 2:1 compression starting at -18dB:
2769 @example
2770 compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
2771 @end example
2772
2773 @item
2774 3:1 compression starting at -15dB:
2775 @example
2776 compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
2777 @end example
2778
2779 @item
2780 Compressor/Gate:
2781 @example
2782 compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
2783 @end example
2784
2785 @item
2786 Expander:
2787 @example
2788 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
2789 @end example
2790
2791 @item
2792 Hard limiter at -6dB:
2793 @example
2794 compand=attacks=0:points=-80/-80|-6/-6|20/-6
2795 @end example
2796
2797 @item
2798 Hard limiter at -12dB:
2799 @example
2800 compand=attacks=0:points=-80/-80|-12/-12|20/-12
2801 @end example
2802
2803 @item
2804 Hard noise gate at -35 dB:
2805 @example
2806 compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
2807 @end example
2808
2809 @item
2810 Soft limiter:
2811 @example
2812 compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
2813 @end example
2814 @end itemize
2815
2816 @section compensationdelay
2817
2818 Compensation Delay Line is a metric based delay to compensate differing
2819 positions of microphones or speakers.
2820
2821 For example, you have recorded guitar with two microphones placed in
2822 different location. Because the front of sound wave has fixed speed in
2823 normal conditions, the phasing of microphones can vary and depends on
2824 their location and interposition. The best sound mix can be achieved when
2825 these microphones are in phase (synchronized). Note that distance of
2826 ~30 cm between microphones makes one microphone to capture signal in
2827 antiphase to another microphone. That makes the final mix sounding moody.
2828 This filter helps to solve phasing problems by adding different delays
2829 to each microphone track and make them synchronized.
2830
2831 The best result can be reached when you take one track as base and
2832 synchronize other tracks one by one with it.
2833 Remember that synchronization/delay tolerance depends on sample rate, too.
2834 Higher sample rates will give more tolerance.
2835
2836 It accepts the following parameters:
2837
2838 @table @option
2839 @item mm
2840 Set millimeters distance. This is compensation distance for fine tuning.
2841 Default is 0.
2842
2843 @item cm
2844 Set cm distance. This is compensation distance for tightening distance setup.
2845 Default is 0.
2846
2847 @item m
2848 Set meters distance. This is compensation distance for hard distance setup.
2849 Default is 0.
2850
2851 @item dry
2852 Set dry amount. Amount of unprocessed (dry) signal.
2853 Default is 0.
2854
2855 @item wet
2856 Set wet amount. Amount of processed (wet) signal.
2857 Default is 1.
2858
2859 @item temp
2860 Set temperature degree in Celsius. This is the temperature of the environment.
2861 Default is 20.
2862 @end table
2863
2864 @section crossfeed
2865 Apply headphone crossfeed filter.
2866
2867 Crossfeed is the process of blending the left and right channels of stereo
2868 audio recording.
2869 It is mainly used to reduce extreme stereo separation of low frequencies.
2870
2871 The intent is to produce more speaker like sound to the listener.
2872
2873 The filter accepts the following options:
2874
2875 @table @option
2876 @item strength
2877 Set strength of crossfeed. Default is 0.2. Allowed range is from 0 to 1.
2878 This sets gain of low shelf filter for side part of stereo image.
2879 Default is -6dB. Max allowed is -30db when strength is set to 1.
2880
2881 @item range
2882 Set soundstage wideness. Default is 0.5. Allowed range is from 0 to 1.
2883 This sets cut off frequency of low shelf filter. Default is cut off near
2884 1550 Hz. With range set to 1 cut off frequency is set to 2100 Hz.
2885
2886 @item level_in
2887 Set input gain. Default is 0.9.
2888
2889 @item level_out
2890 Set output gain. Default is 1.
2891 @end table
2892
2893 @section crystalizer
2894 Simple algorithm to expand audio dynamic range.
2895
2896 The filter accepts the following options:
2897
2898 @table @option
2899 @item i
2900 Sets the intensity of effect (default: 2.0). Must be in range between 0.0
2901 (unchanged sound) to 10.0 (maximum effect).
2902
2903 @item c
2904 Enable clipping. By default is enabled.
2905 @end table
2906
2907 @section dcshift
2908 Apply a DC shift to the audio.
2909
2910 This can be useful to remove a DC offset (caused perhaps by a hardware problem
2911 in the recording chain) from the audio. The effect of a DC offset is reduced
2912 headroom and hence volume. The @ref{astats} filter can be used to determine if
2913 a signal has a DC offset.
2914
2915 @table @option
2916 @item shift
2917 Set the DC shift, allowed range is [-1, 1]. It indicates the amount to shift
2918 the audio.
2919
2920 @item limitergain
2921 Optional. It should have a value much less than 1 (e.g. 0.05 or 0.02) and is
2922 used to prevent clipping.
2923 @end table
2924
2925 @section drmeter
2926 Measure audio dynamic range.
2927
2928 DR values of 14 and higher is found in very dynamic material. DR of 8 to 13
2929 is found in transition material. And anything less that 8 have very poor dynamics
2930 and is very compressed.
2931
2932 The filter accepts the following options:
2933
2934 @table @option
2935 @item length
2936 Set window length in seconds used to split audio into segments of equal length.
2937 Default is 3 seconds.
2938 @end table
2939
2940 @section dynaudnorm
2941 Dynamic Audio Normalizer.
2942
2943 This filter applies a certain amount of gain to the input audio in order
2944 to bring its peak magnitude to a target level (e.g. 0 dBFS). However, in
2945 contrast to more "simple" normalization algorithms, the Dynamic Audio
2946 Normalizer *dynamically* re-adjusts the gain factor to the input audio.
2947 This allows for applying extra gain to the "quiet" sections of the audio
2948 while avoiding distortions or clipping the "loud" sections. In other words:
2949 The Dynamic Audio Normalizer will "even out" the volume of quiet and loud
2950 sections, in the sense that the volume of each section is brought to the
2951 same target level. Note, however, that the Dynamic Audio Normalizer achieves
2952 this goal *without* applying "dynamic range compressing". It will retain 100%
2953 of the dynamic range *within* each section of the audio file.
2954
2955 @table @option
2956 @item f
2957 Set the frame length in milliseconds. In range from 10 to 8000 milliseconds.
2958 Default is 500 milliseconds.
2959 The Dynamic Audio Normalizer processes the input audio in small chunks,
2960 referred to as frames. This is required, because a peak magnitude has no
2961 meaning for just a single sample value. Instead, we need to determine the
2962 peak magnitude for a contiguous sequence of sample values. While a "standard"
2963 normalizer would simply use the peak magnitude of the complete file, the
2964 Dynamic Audio Normalizer determines the peak magnitude individually for each
2965 frame. The length of a frame is specified in milliseconds. By default, the
2966 Dynamic Audio Normalizer uses a frame length of 500 milliseconds, which has
2967 been found to give good results with most files.
2968 Note that the exact frame length, in number of samples, will be determined
2969 automatically, based on the sampling rate of the individual input audio file.
2970
2971 @item g
2972 Set the Gaussian filter window size. In range from 3 to 301, must be odd
2973 number. Default is 31.
2974 Probably the most important parameter of the Dynamic Audio Normalizer is the
2975 @code{window size} of the Gaussian smoothing filter. The filter's window size
2976 is specified in frames, centered around the current frame. For the sake of
2977 simplicity, this must be an odd number. Consequently, the default value of 31
2978 takes into account the current frame, as well as the 15 preceding frames and
2979 the 15 subsequent frames. Using a larger window results in a stronger
2980 smoothing effect and thus in less gain variation, i.e. slower gain
2981 adaptation. Conversely, using a smaller window results in a weaker smoothing
2982 effect and thus in more gain variation, i.e. faster gain adaptation.
2983 In other words, the more you increase this value, the more the Dynamic Audio
2984 Normalizer will behave like a "traditional" normalization filter. On the
2985 contrary, the more you decrease this value, the more the Dynamic Audio
2986 Normalizer will behave like a dynamic range compressor.
2987
2988 @item p
2989 Set the target peak value. This specifies the highest permissible magnitude
2990 level for the normalized audio input. This filter will try to approach the
2991 target peak magnitude as closely as possible, but at the same time it also
2992 makes sure that the normalized signal will never exceed the peak magnitude.
2993 A frame's maximum local gain factor is imposed directly by the target peak
2994 magnitude. The default value is 0.95 and thus leaves a headroom of 5%*.
2995 It is not recommended to go above this value.
2996
2997 @item m
2998 Set the maximum gain factor. In range from 1.0 to 100.0. Default is 10.0.
2999 The Dynamic Audio Normalizer determines the maximum possible (local) gain
3000 factor for each input frame, i.e. the maximum gain factor that does not
3001 result in clipping or distortion. The maximum gain factor is determined by
3002 the frame's highest magnitude sample. However, the Dynamic Audio Normalizer
3003 additionally bounds the frame's maximum gain factor by a predetermined
3004 (global) maximum gain factor. This is done in order to avoid excessive gain
3005 factors in "silent" or almost silent frames. By default, the maximum gain
3006 factor is 10.0, For most inputs the default value should be sufficient and
3007 it usually is not recommended to increase this value. Though, for input
3008 with an extremely low overall volume level, it may be necessary to allow even
3009 higher gain factors. Note, however, that the Dynamic Audio Normalizer does
3010 not simply apply a "hard" threshold (i.e. cut off values above the threshold).
3011 Instead, a "sigmoid" threshold function will be applied. This way, the
3012 gain factors will smoothly approach the threshold value, but never exceed that
3013 value.
3014
3015 @item r
3016 Set the target RMS. In range from 0.0 to 1.0. Default is 0.0 - disabled.
3017 By default, the Dynamic Audio Normalizer performs "peak" normalization.
3018 This means that the maximum local gain factor for each frame is defined
3019 (only) by the frame's highest magnitude sample. This way, the samples can
3020 be amplified as much as possible without exceeding the maximum signal
3021 level, i.e. without clipping. Optionally, however, the Dynamic Audio
3022 Normalizer can also take into account the frame's root mean square,
3023 abbreviated RMS. In electrical engineering, the RMS is commonly used to
3024 determine the power of a time-varying signal. It is therefore considered
3025 that the RMS is a better approximation of the "perceived loudness" than
3026 just looking at the signal's peak magnitude. Consequently, by adjusting all
3027 frames to a constant RMS value, a uniform "perceived loudness" can be
3028 established. If a target RMS value has been specified, a frame's local gain
3029 factor is defined as the factor that would result in exactly that RMS value.
3030 Note, however, that the maximum local gain factor is still restricted by the
3031 frame's highest magnitude sample, in order to prevent clipping.
3032
3033 @item n
3034 Enable channels coupling. By default is enabled.
3035 By default, the Dynamic Audio Normalizer will amplify all channels by the same
3036 amount. This means the same gain factor will be applied to all channels, i.e.
3037 the maximum possible gain factor is determined by the "loudest" channel.
3038 However, in some recordings, it may happen that the volume of the different
3039 channels is uneven, e.g. one channel may be "quieter" than the other one(s).
3040 In this case, this option can be used to disable the channel coupling. This way,
3041 the gain factor will be determined independently for each channel, depending
3042 only on the individual channel's highest magnitude sample. This allows for
3043 harmonizing the volume of the different channels.
3044
3045 @item c
3046 Enable DC bias correction. By default is disabled.
3047 An audio signal (in the time domain) is a sequence of sample values.
3048 In the Dynamic Audio Normalizer these sample values are represented in the
3049 -1.0 to 1.0 range, regardless of the original input format. Normally, the
3050 audio signal, or "waveform", should be centered around the zero point.
3051 That means if we calculate the mean value of all samples in a file, or in a
3052 single frame, then the result should be 0.0 or at least very close to that
3053 value. If, however, there is a significant deviation of the mean value from
3054 0.0, in either positive or negative direction, this is referred to as a
3055 DC bias or DC offset. Since a DC bias is clearly undesirable, the Dynamic
3056 Audio Normalizer provides optional DC bias correction.
3057 With DC bias correction enabled, the Dynamic Audio Normalizer will determine
3058 the mean value, or "DC correction" offset, of each input frame and subtract
3059 that value from all of the frame's sample values which ensures those samples
3060 are centered around 0.0 again. Also, in order to avoid "gaps" at the frame
3061 boundaries, the DC correction offset values will be interpolated smoothly
3062 between neighbouring frames.
3063
3064 @item b
3065 Enable alternative boundary mode. By default is disabled.
3066 The Dynamic Audio Normalizer takes into account a certain neighbourhood
3067 around each frame. This includes the preceding frames as well as the
3068 subsequent frames. However, for the "boundary" frames, located at the very
3069 beginning and at the very end of the audio file, not all neighbouring
3070 frames are available. In particular, for the first few frames in the audio
3071 file, the preceding frames are not known. And, similarly, for the last few
3072 frames in the audio file, the subsequent frames are not known. Thus, the
3073 question arises which gain factors should be assumed for the missing frames
3074 in the "boundary" region. The Dynamic Audio Normalizer implements two modes
3075 to deal with this situation. The default boundary mode assumes a gain factor
3076 of exactly 1.0 for the missing frames, resulting in a smooth "fade in" and
3077 "fade out" at the beginning and at the end of the input, respectively.
3078
3079 @item s
3080 Set the compress factor. In range from 0.0 to 30.0. Default is 0.0.
3081 By default, the Dynamic Audio Normalizer does not apply "traditional"
3082 compression. This means that signal peaks will not be pruned and thus the
3083 full dynamic range will be retained within each local neighbourhood. However,
3084 in some cases it may be desirable to combine the Dynamic Audio Normalizer's
3085 normalization algorithm with a more "traditional" compression.
3086 For this purpose, the Dynamic Audio Normalizer provides an optional compression
3087 (thresholding) function. If (and only if) the compression feature is enabled,
3088 all input frames will be processed by a soft knee thresholding function prior
3089 to the actual normalization process. Put simply, the thresholding function is
3090 going to prune all samples whose magnitude exceeds a certain threshold value.
3091 However, the Dynamic Audio Normalizer does not simply apply a fixed threshold
3092 value. Instead, the threshold value will be adjusted for each individual
3093 frame.
3094 In general, smaller parameters result in stronger compression, and vice versa.
3095 Values below 3.0 are not recommended, because audible distortion may appear.
3096 @end table
3097
3098 @section earwax
3099
3100 Make audio easier to listen to on headphones.
3101
3102 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
3103 so that when listened to on headphones the stereo image is moved from
3104 inside your head (standard for headphones) to outside and in front of
3105 the listener (standard for speakers).
3106
3107 Ported from SoX.
3108
3109 @section equalizer
3110
3111 Apply a two-pole peaking equalisation (EQ) filter. With this
3112 filter, the signal-level at and around a selected frequency can
3113 be increased or decreased, whilst (unlike bandpass and bandreject
3114 filters) that at all other frequencies is unchanged.
3115
3116 In order to produce complex equalisation curves, this filter can
3117 be given several times, each with a different central frequency.
3118
3119 The filter accepts the following options:
3120
3121 @table @option
3122 @item frequency, f
3123 Set the filter's central frequency in Hz.
3124
3125 @item width_type, t
3126 Set method to specify band-width of filter.
3127 @table @option
3128 @item h
3129 Hz
3130 @item q
3131 Q-Factor
3132 @item o
3133 octave
3134 @item s
3135 slope
3136 @item k
3137 kHz
3138 @end table
3139
3140 @item width, w
3141 Specify the band-width of a filter in width_type units.
3142
3143 @item gain, g
3144 Set the required gain or attenuation in dB.
3145 Beware of clipping when using a positive gain.
3146
3147 @item channels, c
3148 Specify which channels to filter, by default all available are filtered.
3149 @end table
3150
3151 @subsection Examples
3152 @itemize
3153 @item
3154 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
3155 @example
3156 equalizer=f=1000:t=h:width=200:g=-10
3157 @end example
3158
3159 @item
3160 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
3161 @example
3162 equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
3163 @end example
3164 @end itemize
3165
3166 @subsection Commands
3167
3168 This filter supports the following commands:
3169 @table @option
3170 @item frequency, f
3171 Change equalizer frequency.
3172 Syntax for the command is : "@var{frequency}"
3173
3174 @item width_type, t
3175 Change equalizer width_type.
3176 Syntax for the command is : "@var{width_type}"
3177
3178 @item width, w
3179 Change equalizer width.
3180 Syntax for the command is : "@var{width}"
3181
3182 @item gain, g
3183 Change equalizer gain.
3184 Syntax for the command is : "@var{gain}"
3185 @end table
3186
3187 @section extrastereo
3188
3189 Linearly increases the difference between left and right channels which
3190 adds some sort of "live" effect to playback.
3191
3192 The filter accepts the following options:
3193
3194 @table @option
3195 @item m
3196 Sets the difference coefficient (default: 2.5). 0.0 means mono sound
3197 (average of both channels), with 1.0 sound will be unchanged, with
3198 -1.0 left and right channels will be swapped.
3199
3200 @item c
3201 Enable clipping. By default is enabled.
3202 @end table
3203
3204 @section firequalizer
3205 Apply FIR Equalization using arbitrary frequency response.
3206
3207 The filter accepts the following option:
3208
3209 @table @option
3210 @item gain
3211 Set gain curve equation (in dB). The expression can contain variables:
3212 @table @option
3213 @item f
3214 the evaluated frequency
3215 @item sr
3216 sample rate
3217 @item ch
3218 channel number, set to 0 when multichannels evaluation is disabled
3219 @item chid
3220 channel id, see libavutil/channel_layout.h, set to the first channel id when
3221 multichannels evaluation is disabled
3222 @item chs
3223 number of channels
3224 @item chlayout
3225 channel_layout, see libavutil/channel_layout.h
3226
3227 @end table
3228 and functions:
3229 @table @option
3230 @item gain_interpolate(f)
3231 interpolate gain on frequency f based on gain_entry
3232 @item cubic_interpolate(f)
3233 same as gain_interpolate, but smoother
3234 @end table
3235 This option is also available as command. Default is @code{gain_interpolate(f)}.
3236
3237 @item gain_entry
3238 Set gain entry for gain_interpolate function. The expression can
3239 contain functions:
3240 @table @option
3241 @item entry(f, g)
3242 store gain entry at frequency f with value g
3243 @end table
3244 This option is also available as command.
3245
3246 @item delay
3247 Set filter delay in seconds. Higher value means more accurate.
3248 Default is @code{0.01}.
3249
3250 @item accuracy
3251 Set filter accuracy in Hz. Lower value means more accurate.
3252 Default is @code{5}.
3253
3254 @item wfunc
3255 Set window function. Acceptable values are:
3256 @table @option
3257 @item rectangular
3258 rectangular window, useful when gain curve is already smooth
3259 @item hann
3260 hann window (default)
3261 @item hamming
3262 hamming window
3263 @item blackman
3264 blackman window
3265 @item nuttall3
3266 3-terms continuous 1st derivative nuttall window
3267 @item mnuttall3
3268 minimum 3-terms discontinuous nuttall window
3269 @item nuttall
3270 4-terms continuous 1st derivative nuttall window
3271 @item bnuttall
3272 minimum 4-terms discontinuous nuttall (blackman-nuttall) window
3273 @item bharris
3274 blackman-harris window
3275 @item tukey
3276 tukey window
3277 @end table
3278
3279 @item fixed
3280 If enabled, use fixed number of audio samples. This improves speed when
3281 filtering with large delay. Default is disabled.
3282
3283 @item multi
3284 Enable multichannels evaluation on gain. Default is disabled.
3285
3286 @item zero_phase
3287 Enable zero phase mode by subtracting timestamp to compensate delay.
3288 Default is disabled.
3289
3290 @item scale
3291 Set scale used by gain. Acceptable values are:
3292 @table @option
3293 @item linlin
3294 linear frequency, linear gain
3295 @item linlog
3296 linear frequency, logarithmic (in dB) gain (default)
3297 @item loglin
3298 logarithmic (in octave scale where 20 Hz is 0) frequency, linear gain
3299 @item loglog
3300 logarithmic frequency, logarithmic gain
3301 @end table
3302
3303 @item dumpfile
3304 Set file for dumping, suitable for gnuplot.
3305
3306 @item dumpscale
3307 Set scale for dumpfile. Acceptable values are same with scale option.
3308 Default is linlog.
3309
3310 @item fft2
3311 Enable 2-channel convolution using complex FFT. This improves speed significantly.
3312 Default is disabled.
3313
3314 @item min_phase
3315 Enable minimum phase impulse response. Default is disabled.
3316 @end table
3317
3318 @subsection Examples
3319 @itemize
3320 @item
3321 lowpass at 1000 Hz:
3322 @example
3323 firequalizer=gain='if(lt(f,1000), 0, -INF)'
3324 @end example
3325 @item
3326 lowpass at 1000 Hz with gain_entry:
3327 @example
3328 firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
3329 @end example
3330 @item
3331 custom equalization:
3332 @example
3333 firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
3334 @end example
3335 @item
3336 higher delay with zero phase to compensate delay:
3337 @example
3338 firequalizer=delay=0.1:fixed=on:zero_phase=on
3339 @end example
3340 @item
3341 lowpass on left channel, highpass on right channel:
3342 @example
3343 firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
3344 :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
3345 @end example
3346 @end itemize
3347
3348 @section flanger
3349 Apply a flanging effect to the audio.
3350
3351 The filter accepts the following options:
3352
3353 @table @option
3354 @item delay
3355 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
3356
3357 @item depth
3358 Set added sweep delay in milliseconds. Range from 0 to 10. Default value is 2.
3359
3360 @item regen
3361 Set percentage regeneration (delayed signal feedback). Range from -95 to 95.
3362 Default value is 0.
3363
3364 @item width
3365 Set percentage of delayed signal mixed with original. Range from 0 to 100.
3366 Default value is 71.
3367
3368 @item speed
3369 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
3370
3371 @item shape
3372 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
3373 Default value is @var{sinusoidal}.
3374
3375 @item phase
3376 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
3377 Default value is 25.
3378
3379 @item interp
3380 Set delay-line interpolation, @var{linear} or @var{quadratic}.
3381 Default is @var{linear}.
3382 @end table
3383
3384 @section haas
3385 Apply Haas effect to audio.
3386
3387 Note that this makes most sense to apply on mono signals.
3388 With this filter applied to mono signals it give some directionality and
3389 stretches its stereo image.
3390
3391 The filter accepts the following options:
3392
3393 @table @option
3394 @item level_in
3395 Set input level. By default is @var{1}, or 0dB
3396
3397 @item level_out
3398 Set output level. By default is @var{1}, or 0dB.
3399
3400 @item side_gain
3401 Set gain applied to side part of signal. By default is @var{1}.
3402
3403 @item middle_source
3404 Set kind of middle source. Can be one of the following:
3405
3406 @table @samp
3407 @item left
3408 Pick left channel.
3409
3410 @item right
3411 Pick right channel.
3412
3413 @item mid
3414 Pick middle part signal of stereo image.
3415
3416 @item side
3417 Pick side part signal of stereo image.
3418 @end table
3419
3420 @item middle_phase
3421 Change middle phase. By default is disabled.
3422
3423 @item left_delay
3424 Set left channel delay. By default is @var{2.05} milliseconds.
3425
3426 @item left_balance
3427 Set left channel balance. By default is @var{-1}.
3428
3429 @item left_gain
3430 Set left channel gain. By default is @var{1}.
3431
3432 @item left_phase
3433 Change left phase. By default is disabled.
3434
3435 @item right_delay
3436 Set right channel delay. By defaults is @var{2.12} milliseconds.
3437
3438 @item right_balance
3439 Set right channel balance. By default is @var{1}.
3440
3441 @item right_gain
3442 Set right channel gain. By default is @var{1}.
3443
3444 @item right_phase
3445 Change right phase. By default is enabled.
3446 @end table
3447
3448 @section hdcd
3449
3450 Decodes High Definition Compatible Digital (HDCD) data. A 16-bit PCM stream with
3451 embedded HDCD codes is expanded into a 20-bit PCM stream.
3452
3453 The filter supports the Peak Extend and Low-level Gain Adjustment features
3454 of HDCD, and detects the Transient Filter flag.
3455
3456 @example
3457 ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
3458 @end example
3459
3460 When using the filter with wav, note the default encoding for wav is 16-bit,
3461 so the resulting 20-bit stream will be truncated back to 16-bit. Use something
3462 like @command{-acodec pcm_s24le} after the filter to get 24-bit PCM output.
3463 @example
3464 ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
3465 ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav
3466 @end example
3467
3468 The filter accepts the following options:
3469
3470 @table @option
3471 @item disable_autoconvert
3472 Disable any automatic format conversion or resampling in the filter graph.
3473
3474 @item process_stereo
3475 Process the stereo channels together. If target_gain does not match between
3476 channels, consider it invalid and use the last valid target_gain.
3477
3478 @item cdt_ms
3479 Set the code detect timer period in ms.
3480
3481 @item force_pe
3482 Always extend peaks above -3dBFS even if PE isn't signaled.
3483
3484 @item analyze_mode
3485 Replace audio with a solid tone and adjust the amplitude to signal some
3486 specific aspect of the decoding process. The output file can be loaded in
3487 an audio editor alongside the original to aid analysis.
3488
3489 @code{analyze_mode=pe:force_pe=true} can be used to see all samples above the PE level.
3490
3491 Modes are:
3492 @table @samp
3493 @item 0, off
3494 Disabled
3495 @item 1, lle
3496 Gain adjustment level at each sample
3497 @item 2, pe
3498 Samples where peak extend occurs
3499 @item 3, cdt
3500 Samples where the code detect timer is active
3501 @item 4, tgm
3502 Samples where the target gain does not match between channels
3503 @end table
3504 @end table
3505
3506 @section headphone
3507
3508 Apply head-related transfer functions (HRTFs) to create virtual
3509 loudspeakers around the user for binaural listening via headphones.
3510 The HRIRs are provided via additional streams, for each channel
3511 one stereo input stream is needed.
3512
3513 The filter accepts the following options:
3514
3515 @table @option
3516 @item map
3517 Set mapping of input streams for convolution.
3518 The argument is a '|'-separated list of channel names in order as they
3519 are given as additional stream inputs for filter.
3520 This also specify number of input streams. Number of input streams
3521 must be not less than number of channels in first stream plus one.
3522
3523 @item gain
3524 Set gain applied to audio. Value is in dB. Default is 0.
3525
3526 @item type
3527 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
3528 processing audio in time domain which is slow.
3529 @var{freq} is processing audio in frequency domain which is fast.
3530 Default is @var{freq}.
3531
3532 @item lfe
3533 Set custom gain for LFE channels. Value is in dB. Default is 0.
3534
3535 @item size
3536 Set size of frame in number of samples which will be processed at once.
3537 Default value is @var{1024}. Allowed range is from 1024 to 96000.
3538
3539 @item hrir
3540 Set format of hrir stream.
3541 Default value is @var{stereo}. Alternative value is @var{multich}.
3542 If value is set to @var{stereo}, number of additional streams should
3543 be greater or equal to number of input channels in first input stream.
3544 Also each additional stream should have stereo number of channels.
3545 If value is set to @var{multich}, number of additional streams should
3546 be exactly one. Also number of input channels of additional stream
3547 should be equal or greater than twice number of channels of first input
3548 stream.
3549 @end table
3550
3551 @subsection Examples
3552
3553 @itemize
3554 @item
3555 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
3556 each amovie filter use stereo file with IR coefficients as input.
3557 The files give coefficients for each position of virtual loudspeaker:
3558 @example
3559 ffmpeg -i input.wav
3560 -filter_complex "amovie=azi_270_ele_0_DFC.wav[sr];amovie=azi_90_ele_0_DFC.wav[sl];amovie=azi_225_ele_0_DFC.wav[br];amovie=azi_135_ele_0_DFC.wav[bl];amovie=azi_0_ele_0_DFC.wav,asplit[fc][lfe];amovie=azi_35_ele_0_DFC.wav[fl];amovie=azi_325_ele_0_DFC.wav[fr];[0:a][fl][fr][fc][lfe][bl][br][sl][sr]headphone=FL|FR|FC|LFE|BL|BR|SL|SR"
3561 output.wav
3562 @end example
3563
3564 @item
3565 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
3566 but now in @var{multich} @var{hrir} format.
3567 @example
3568 ffmpeg -i input.wav -filter_complex "amovie=minp.wav[hrirs];[0:a][hrirs]headphone=map=FL|FR|FC|LFE|BL|BR|SL|SR:hrir=multich"
3569 output.wav
3570 @end example
3571 @end itemize
3572
3573 @section highpass
3574
3575 Apply a high-pass filter with 3dB point frequency.
3576 The filter can be either single-pole, or double-pole (the default).
3577 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
3578
3579 The filter accepts the following options:
3580
3581 @table @option
3582 @item frequency, f
3583 Set frequency in Hz. Default is 3000.
3584
3585 @item poles, p
3586 Set number of poles. Default is 2.
3587
3588 @item width_type, t
3589 Set method to specify band-width of filter.
3590 @table @option
3591 @item h
3592 Hz
3593 @item q
3594 Q-Factor
3595 @item o
3596 octave
3597 @item s
3598 slope
3599 @item k
3600 kHz
3601 @end table
3602
3603 @item width, w
3604 Specify the band-width of a filter in width_type units.
3605 Applies only to double-pole filter.
3606 The default is 0.707q and gives a Butterworth response.
3607
3608 @item channels, c
3609 Specify which channels to filter, by default all available are filtered.
3610 @end table
3611
3612 @subsection Commands
3613
3614 This filter supports the following commands:
3615 @table @option
3616 @item frequency, f
3617 Change highpass frequency.
3618 Syntax for the command is : "@var{frequency}"
3619
3620 @item width_type, t
3621 Change highpass width_type.
3622 Syntax for the command is : "@var{width_type}"
3623
3624 @item width, w
3625 Change highpass width.
3626 Syntax for the command is : "@var{width}"
3627 @end table
3628
3629 @section join
3630
3631 Join multiple input streams into one multi-channel stream.
3632
3633 It accepts the following parameters:
3634 @table @option
3635
3636 @item inputs
3637 The number of input streams. It defaults to 2.
3638
3639 @item channel_layout
3640 The desired output channel layout. It defaults to stereo.
3641
3642 @item map
3643 Map channels from inputs to output. The argument is a '|'-separated list of
3644 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
3645 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
3646 can be either the name of the input channel (e.g. FL for front left) or its
3647 index in the specified input stream. @var{out_channel} is the name of the output
3648 channel.
3649 @end table
3650
3651 The filter will attempt to guess the mappings when they are not specified
3652 explicitly. It does so by first trying to find an unused matching input channel
3653 and if that fails it picks the first unused input channel.
3654
3655 Join 3 inputs (with properly set channel layouts):
3656 @example
3657 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
3658 @end example
3659
3660 Build a 5.1 output from 6 single-channel streams:
3661 @example
3662 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
3663 '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'
3664 out
3665 @end example
3666
3667 @section ladspa
3668
3669 Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
3670
3671 To enable compilation of this filter you need to configure FFmpeg with
3672 @code{--enable-ladspa}.
3673
3674 @table @option
3675 @item file, f
3676 Specifies the name of LADSPA plugin library to load. If the environment
3677 variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
3678 each one of the directories specified by the colon separated list in
3679 @env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
3680 this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
3681 @file{/usr/lib/ladspa/}.
3682
3683 @item plugin, p
3684 Specifies the plugin within the library. Some libraries contain only
3685 one plugin, but others contain many of them. If this is not set filter
3686 will list all available plugins within the specified library.
3687
3688 @item controls, c
3689 Set the '|' separated list of controls which are zero or more floating point
3690 values that determine the behavior of the loaded plugin (for example delay,
3691 threshold or gain).
3692 Controls need to be defined using the following syntax:
3693 c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
3694 @var{valuei} is the value set on the @var{i}-th control.
3695 Alternatively they can be also defined using the following syntax:
3696 @var{value0}|@var{value1}|@var{value2}|..., where
3697 @var{valuei} is the value set on the @var{i}-th control.
3698 If @option{controls} is set to @code{help}, all available controls and
3699 their valid ranges are printed.
3700
3701 @item sample_rate, s
3702 Specify the sample rate, default to 44100. Only used if plugin have
3703 zero inputs.
3704
3705 @item nb_samples, n
3706 Set the number of samples per channel per each output frame, default
3707 is 1024. Only used if plugin have zero inputs.
3708
3709 @item duration, d
3710 Set the minimum duration of the sourced audio. See
3711 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
3712 for the accepted syntax.
3713 Note that the resulting duration may be greater than the specified duration,
3714 as the generated audio is always cut at the end of a complete frame.
3715 If not specified, or the expressed duration is negative, the audio is
3716 supposed to be generated forever.
3717 Only used if plugin have zero inputs.
3718
3719 @end table
3720
3721 @subsection Examples
3722
3723 @itemize
3724 @item
3725 List all available plugins within amp (LADSPA example plugin) library:
3726 @example
3727 ladspa=file=amp
3728 @end example
3729
3730 @item
3731 List all available controls and their valid ranges for @code{vcf_notch}
3732 plugin from @code{VCF} library:
3733 @example
3734 ladspa=f=vcf:p=vcf_notch:c=help
3735 @end example
3736
3737 @item
3738 Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
3739 plugin library:
3740 @example
3741 ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
3742 @end example
3743
3744 @item
3745 Add reverberation to the audio using TAP-plugins
3746 (Tom's Audio Processing plugins):
3747 @example
3748 ladspa=file=tap_reverb:tap_reverb
3749 @end example
3750
3751 @item
3752 Generate white noise, with 0.2 amplitude:
3753 @example
3754 ladspa=file=cmt:noise_source_white:c=c0=.2
3755 @end example
3756
3757 @item
3758 Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
3759 @code{C* Audio Plugin Suite} (CAPS) library:
3760 @example
3761 ladspa=file=caps:Click:c=c1=20'
3762 @end example
3763
3764 @item
3765 Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
3766 @example
3767 ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
3768 @end example
3769
3770 @item
3771 Increase volume by 20dB using fast lookahead limiter from Steve Harris
3772 @code{SWH Plugins} collection:
3773 @example
3774 ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
3775 @end example
3776
3777 @item
3778 Attenuate low frequencies using Multiband EQ from Steve Harris
3779 @code{SWH Plugins} collection:
3780 @example
3781 ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
3782 @end example
3783
3784 @item
3785 Reduce stereo image using @code{Narrower} from the @code{C* Audio Plugin Suite}
3786 (CAPS) library:
3787 @example
3788 ladspa=caps:Narrower
3789 @end example
3790
3791 @item
3792 Another white noise, now using @code{C* Audio Plugin Suite} (CAPS) library:
3793 @example
3794 ladspa=caps:White:.2
3795 @end example
3796
3797 @item
3798 Some fractal noise, using @code{C* Audio Plugin Suite} (CAPS) library:
3799 @example
3800 ladspa=caps:Fractal:c=c1=1
3801 @end example
3802
3803 @item
3804 Dynamic volume normalization using @code{VLevel} plugin:
3805 @example
3806 ladspa=vlevel-ladspa:vlevel_mono
3807 @end example
3808 @end itemize
3809
3810 @subsection Commands
3811
3812 This filter supports the following commands:
3813 @table @option
3814 @item cN
3815 Modify the @var{N}-th control value.
3816
3817 If the specified value is not valid, it is ignored and prior one is kept.
3818 @end table
3819
3820 @section loudnorm
3821
3822 EBU R128 loudness normalization. Includes both dynamic and linear normalization modes.
3823 Support for both single pass (livestreams, files) and double pass (files) modes.
3824 This algorithm can target IL, LRA, and maximum true peak. To accurately detect true peaks,
3825 the audio stream will be upsampled to 192 kHz unless the normalization mode is linear.
3826 Use the @code{-ar} option or @code{aresample} filter to explicitly set an output sample rate.
3827
3828 The filter accepts the following options:
3829
3830 @table @option
3831 @item I, i
3832 Set integrated loudness target.
3833 Range is -70.0 - -5.0. Default value is -24.0.
3834
3835 @item LRA, lra
3836 Set loudness range target.
3837 Range is 1.0 - 20.0. Default value is 7.0.
3838
3839 @item TP, tp
3840 Set maximum true peak.
3841 Range is -9.0 - +0.0. Default value is -2.0.
3842
3843 @item measured_I, measured_i
3844 Measured IL of input file.
3845 Range is -99.0 - +0.0.
3846
3847 @item measured_LRA, measured_lra
3848 Measured LRA of input file.
3849 Range is  0.0 - 99.0.
3850
3851 @item measured_TP, measured_tp
3852 Measured true peak of input file.
3853 Range is  -99.0 - +99.0.
3854
3855 @item measured_thresh
3856 Measured threshold of input file.
3857 Range is -99.0 - +0.0.
3858
3859 @item offset
3860 Set offset gain. Gain is applied before the true-peak limiter.
3861 Range is  -99.0 - +99.0. Default is +0.0.
3862
3863 @item linear
3864 Normalize linearly if possible.
3865 measured_I, measured_LRA, measured_TP, and measured_thresh must also
3866 to be specified in order to use this mode.
3867 Options are true or false. Default is true.
3868
3869 @item dual_mono
3870 Treat mono input files as "dual-mono". If a mono file is intended for playback
3871 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
3872 If set to @code{true}, this option will compensate for this effect.
3873 Multi-channel input files are not affected by this option.
3874 Options are true or false. Default is false.
3875
3876 @item print_format
3877 Set print format for stats. Options are summary, json, or none.
3878 Default value is none.
3879 @end table
3880
3881 @section lowpass
3882
3883 Apply a low-pass filter with 3dB point frequency.
3884 The filter can be either single-pole or double-pole (the default).
3885 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
3886
3887 The filter accepts the following options:
3888
3889 @table @option
3890 @item frequency, f
3891 Set frequency in Hz. Default is 500.
3892
3893 @item poles, p
3894 Set number of poles. Default is 2.
3895
3896 @item width_type, t
3897 Set method to specify band-width of filter.
3898 @table @option
3899 @item h
3900 Hz
3901 @item q
3902 Q-Factor
3903 @item o
3904 octave
3905 @item s
3906 slope
3907 @item k
3908 kHz
3909 @end table
3910
3911 @item width, w
3912 Specify the band-width of a filter in width_type units.
3913 Applies only to double-pole filter.
3914 The default is 0.707q and gives a Butterworth response.
3915
3916 @item channels, c
3917 Specify which channels to filter, by default all available are filtered.
3918 @end table
3919
3920 @subsection Examples
3921 @itemize
3922 @item
3923 Lowpass only LFE channel, it LFE is not present it does nothing:
3924 @example
3925 lowpass=c=LFE
3926 @end example
3927 @end itemize
3928
3929 @subsection Commands
3930
3931 This filter supports the following commands:
3932 @table @option
3933 @item frequency, f
3934 Change lowpass frequency.
3935 Syntax for the command is : "@var{frequency}"
3936
3937 @item width_type, t
3938 Change lowpass width_type.
3939 Syntax for the command is : "@var{width_type}"
3940
3941 @item width, w
3942 Change lowpass width.
3943 Syntax for the command is : "@var{width}"
3944 @end table
3945
3946 @section lv2
3947
3948 Load a LV2 (LADSPA Version 2) plugin.
3949
3950 To enable compilation of this filter you need to configure FFmpeg with
3951 @code{--enable-lv2}.
3952
3953 @table @option
3954 @item plugin, p
3955 Specifies the plugin URI. You may need to escape ':'.
3956
3957 @item controls, c
3958 Set the '|' separated list of controls which are zero or more floating point
3959 values that determine the behavior of the loaded plugin (for example delay,
3960 threshold or gain).
3961 If @option{controls} is set to @code{help}, all available controls and
3962 their valid ranges are printed.
3963
3964 @item sample_rate, s
3965 Specify the sample rate, default to 44100. Only used if plugin have
3966 zero inputs.
3967
3968 @item nb_samples, n
3969 Set the number of samples per channel per each output frame, default
3970 is 1024. Only used if plugin have zero inputs.
3971
3972 @item duration, d
3973 Set the minimum duration of the sourced audio. See
3974 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
3975 for the accepted syntax.
3976 Note that the resulting duration may be greater than the specified duration,
3977 as the generated audio is always cut at the end of a complete frame.
3978 If not specified, or the expressed duration is negative, the audio is
3979 supposed to be generated forever.
3980 Only used if plugin have zero inputs.
3981 @end table
3982
3983 @subsection Examples
3984
3985 @itemize
3986 @item
3987 Apply bass enhancer plugin from Calf:
3988 @example
3989 lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
3990 @end example
3991
3992 @item
3993 Apply vinyl plugin from Calf:
3994 @example
3995 lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
3996 @end example
3997
3998 @item
3999 Apply bit crusher plugin from ArtyFX:
4000 @example
4001 lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
4002 @end example
4003 @end itemize
4004
4005 @section mcompand
4006 Multiband Compress or expand the audio's dynamic range.
4007
4008 The input audio is divided into bands using 4th order Linkwitz-Riley IIRs.
4009 This is akin to the crossover of a loudspeaker, and results in flat frequency
4010 response when absent compander action.
4011
4012 It accepts the following parameters:
4013
4014 @table @option
4015 @item args
4016 This option syntax is:
4017 attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ...
4018 For explanation of each item refer to compand filter documentation.
4019 @end table
4020
4021 @anchor{pan}
4022 @section pan
4023
4024 Mix channels with specific gain levels. The filter accepts the output
4025 channel layout followed by a set of channels definitions.
4026
4027 This filter is also designed to efficiently remap the channels of an audio
4028 stream.
4029
4030 The filter accepts parameters of the form:
4031 "@var{l}|@var{outdef}|@var{outdef}|..."
4032
4033 @table @option
4034 @item l
4035 output channel layout or number of channels
4036
4037 @item outdef
4038 output channel specification, of the form:
4039 "@var{out_name}=[@var{gain}*]@var{in_name}[(+-)[@var{gain}*]@var{in_name}...]"
4040
4041 @item out_name
4042 output channel to define, either a channel name (FL, FR, etc.) or a channel
4043 number (c0, c1, etc.)
4044
4045 @item gain
4046 multiplicative coefficient for the channel, 1 leaving the volume unchanged
4047
4048 @item in_name
4049 input channel to use, see out_name for details; it is not possible to mix
4050 named and numbered input channels
4051 @end table
4052
4053 If the `=' in a channel specification is replaced by `<', then the gains for
4054 that specification will be renormalized so that the total is 1, thus
4055 avoiding clipping noise.
4056
4057 @subsection Mixing examples
4058
4059 For example, if you want to down-mix from stereo to mono, but with a bigger
4060 factor for the left channel:
4061 @example
4062 pan=1c|c0=0.9*c0+0.1*c1
4063 @end example
4064
4065 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
4066 7-channels surround:
4067 @example
4068 pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
4069 @end example
4070
4071 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
4072 that should be preferred (see "-ac" option) unless you have very specific
4073 needs.
4074
4075 @subsection Remapping examples
4076
4077 The channel remapping will be effective if, and only if:
4078
4079 @itemize
4080 @item gain coefficients are zeroes or ones,
4081 @item only one input per channel output,
4082 @end itemize
4083
4084 If all these conditions are satisfied, the filter will notify the user ("Pure
4085 channel mapping detected"), and use an optimized and lossless method to do the
4086 remapping.
4087
4088 For example, if you have a 5.1 source and want a stereo audio stream by
4089 dropping the extra channels:
4090 @example
4091 pan="stereo| c0=FL | c1=FR"
4092 @end example
4093
4094 Given the same source, you can also switch front left and front right channels
4095 and keep the input channel layout:
4096 @example
4097 pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
4098 @end example
4099
4100 If the input is a stereo audio stream, you can mute the front left channel (and
4101 still keep the stereo channel layout) with:
4102 @example
4103 pan="stereo|c1=c1"
4104 @end example
4105
4106 Still with a stereo audio stream input, you can copy the right channel in both
4107 front left and right:
4108 @example
4109 pan="stereo| c0=FR | c1=FR"
4110 @end example
4111
4112 @section replaygain
4113
4114 ReplayGain scanner filter. This filter takes an audio stream as an input and
4115 outputs it unchanged.
4116 At end of filtering it displays @code{track_gain} and @code{track_peak}.
4117
4118 @section resample
4119
4120 Convert the audio sample format, sample rate and channel layout. It is
4121 not meant to be used directly.
4122
4123 @section rubberband
4124 Apply time-stretching and pitch-shifting with librubberband.
4125
4126 To enable compilation of this filter, you need to configure FFmpeg with
4127 @code{--enable-librubberband}.
4128
4129 The filter accepts the following options:
4130
4131 @table @option
4132 @item tempo
4133 Set tempo scale factor.
4134
4135 @item pitch
4136 Set pitch scale factor.
4137
4138 @item transients
4139 Set transients detector.
4140 Possible values are:
4141 @table @var
4142 @item crisp
4143 @item mixed
4144 @item smooth
4145 @end table
4146
4147 @item detector
4148 Set detector.
4149 Possible values are:
4150 @table @var
4151 @item compound
4152 @item percussive
4153 @item soft
4154 @end table
4155
4156 @item phase
4157 Set phase.
4158 Possible values are:
4159 @table @var
4160 @item laminar
4161 @item independent
4162 @end table
4163
4164 @item window
4165 Set processing window size.
4166 Possible values are:
4167 @table @var
4168 @item standard
4169 @item short
4170 @item long
4171 @end table
4172
4173 @item smoothing
4174 Set smoothing.
4175 Possible values are:
4176 @table @var
4177 @item off
4178 @item on
4179 @end table
4180
4181 @item formant
4182 Enable formant preservation when shift pitching.
4183 Possible values are:
4184 @table @var
4185 @item shifted
4186 @item preserved
4187 @end table
4188
4189 @item pitchq
4190 Set pitch quality.
4191 Possible values are:
4192 @table @var
4193 @item quality
4194 @item speed
4195 @item consistency
4196 @end table
4197
4198 @item channels
4199 Set channels.
4200 Possible values are:
4201 @table @var
4202 @item apart
4203 @item together
4204 @end table
4205 @end table
4206
4207 @section sidechaincompress
4208
4209 This filter acts like normal compressor but has the ability to compress
4210 detected signal using second input signal.
4211 It needs two input streams and returns one output stream.
4212 First input stream will be processed depending on second stream signal.
4213 The filtered signal then can be filtered with other filters in later stages of
4214 processing. See @ref{pan} and @ref{amerge} filter.
4215
4216 The filter accepts the following options:
4217
4218 @table @option
4219 @item level_in
4220 Set input gain. Default is 1. Range is between 0.015625 and 64.
4221
4222 @item threshold
4223 If a signal of second stream raises above this level it will affect the gain
4224 reduction of first stream.
4225 By default is 0.125. Range is between 0.00097563 and 1.
4226
4227 @item ratio
4228 Set a ratio about which the signal is reduced. 1:2 means that if the level
4229 raised 4dB above the threshold, it will be only 2dB above after the reduction.
4230 Default is 2. Range is between 1 and 20.
4231
4232 @item attack
4233 Amount of milliseconds the signal has to rise above the threshold before gain
4234 reduction starts. Default is 20. Range is between 0.01 and 2000.
4235
4236 @item release
4237 Amount of milliseconds the signal has to fall below the threshold before
4238 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
4239
4240 @item makeup
4241 Set the amount by how much signal will be amplified after processing.
4242 Default is 1. Range is from 1 to 64.
4243
4244 @item knee
4245 Curve the sharp knee around the threshold to enter gain reduction more softly.
4246 Default is 2.82843. Range is between 1 and 8.
4247
4248 @item link
4249 Choose if the @code{average} level between all channels of side-chain stream
4250 or the louder(@code{maximum}) channel of side-chain stream affects the
4251 reduction. Default is @code{average}.
4252
4253 @item detection
4254 Should the exact signal be taken in case of @code{peak} or an RMS one in case
4255 of @code{rms}. Default is @code{rms} which is mainly smoother.
4256
4257 @item level_sc
4258 Set sidechain gain. Default is 1. Range is between 0.015625 and 64.
4259
4260 @item mix
4261 How much to use compressed signal in output. Default is 1.
4262 Range is between 0 and 1.
4263 @end table
4264
4265 @subsection Examples
4266
4267 @itemize
4268 @item
4269 Full ffmpeg example taking 2 audio inputs, 1st input to be compressed
4270 depending on the signal of 2nd input and later compressed signal to be
4271 merged with 2nd input:
4272 @example
4273 ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
4274 @end example
4275 @end itemize
4276
4277 @section sidechaingate
4278
4279 A sidechain gate acts like a normal (wideband) gate but has the ability to
4280 filter the detected signal before sending it to the gain reduction stage.
4281 Normally a gate uses the full range signal to detect a level above the
4282 threshold.
4283 For example: If you cut all lower frequencies from your sidechain signal
4284 the gate will decrease the volume of your track only if not enough highs
4285 appear. With this technique you are able to reduce the resonation of a
4286 natural drum or remove "rumbling" of muted strokes from a heavily distorted
4287 guitar.
4288 It needs two input streams and returns one output stream.
4289 First input stream will be processed depending on second stream signal.
4290
4291 The filter accepts the following options:
4292
4293 @table @option
4294 @item level_in
4295 Set input level before filtering.
4296 Default is 1. Allowed range is from 0.015625 to 64.
4297
4298 @item range
4299 Set the level of gain reduction when the signal is below the threshold.
4300 Default is 0.06125. Allowed range is from 0 to 1.
4301
4302 @item threshold
4303 If a signal rises above this level the gain reduction is released.
4304 Default is 0.125. Allowed range is from 0 to 1.
4305
4306 @item ratio
4307 Set a ratio about which the signal is reduced.
4308 Default is 2. Allowed range is from 1 to 9000.
4309
4310 @item attack
4311 Amount of milliseconds the signal has to rise above the threshold before gain
4312 reduction stops.
4313 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
4314
4315 @item release
4316 Amount of milliseconds the signal has to fall below the threshold before the
4317 reduction is increased again. Default is 250 milliseconds.
4318 Allowed range is from 0.01 to 9000.
4319
4320 @item makeup
4321 Set amount of amplification of signal after processing.
4322 Default is 1. Allowed range is from 1 to 64.
4323
4324 @item knee
4325 Curve the sharp knee around the threshold to enter gain reduction more softly.
4326 Default is 2.828427125. Allowed range is from 1 to 8.
4327
4328 @item detection
4329 Choose if exact signal should be taken for detection or an RMS like one.
4330 Default is rms. Can be peak or rms.
4331
4332 @item link
4333 Choose if the average level between all channels or the louder channel affects
4334 the reduction.
4335 Default is average. Can be average or maximum.
4336
4337 @item level_sc
4338 Set sidechain gain. Default is 1. Range is from 0.015625 to 64.
4339 @end table
4340
4341 @section silencedetect
4342
4343 Detect silence in an audio stream.
4344
4345 This filter logs a message when it detects that the input audio volume is less
4346 or equal to a noise tolerance value for a duration greater or equal to the
4347 minimum detected noise duration.
4348
4349 The printed times and duration are expressed in seconds.
4350
4351 The filter accepts the following options:
4352
4353 @table @option
4354 @item noise, n
4355 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
4356 specified value) or amplitude ratio. Default is -60dB, or 0.001.
4357
4358 @item duration, d
4359 Set silence duration until notification (default is 2 seconds).
4360
4361 @item mono, m
4362 Process each channel separately, instead of combined. By default is disabled.
4363 @end table
4364
4365 @subsection Examples
4366
4367 @itemize
4368 @item
4369 Detect 5 seconds of silence with -50dB noise tolerance:
4370 @example
4371 silencedetect=n=-50dB:d=5
4372 @end example
4373
4374 @item
4375 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
4376 tolerance in @file{silence.mp3}:
4377 @example
4378 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
4379 @end example
4380 @end itemize
4381
4382 @section silenceremove
4383
4384 Remove silence from the beginning, middle or end of the audio.
4385
4386 The filter accepts the following options:
4387
4388 @table @option
4389 @item start_periods
4390 This value is used to indicate if audio should be trimmed at beginning of
4391 the audio. A value of zero indicates no silence should be trimmed from the
4392 beginning. When specifying a non-zero value, it trims audio up until it
4393 finds non-silence. Normally, when trimming silence from beginning of audio
4394 the @var{start_periods} will be @code{1} but it can be increased to higher
4395 values to trim all audio up to specific count of non-silence periods.
4396 Default value is @code{0}.
4397
4398 @item start_duration
4399 Specify the amount of time that non-silence must be detected before it stops
4400 trimming audio. By increasing the duration, bursts of noises can be treated
4401 as silence and trimmed off. Default value is @code{0}.
4402
4403 @item start_threshold
4404 This indicates what sample value should be treated as silence. For digital
4405 audio, a value of @code{0} may be fine but for audio recorded from analog,
4406 you may wish to increase the value to account for background noise.
4407 Can be specified in dB (in case "dB" is appended to the specified value)
4408 or amplitude ratio. Default value is @code{0}.
4409
4410 @item start_silence
4411 Specify max duration of silence at beginning that will be kept after
4412 trimming. Default is 0, which is equal to trimming all samples detected
4413 as silence.
4414
4415 @item start_mode
4416 Specify mode of detection of silence end in start of multi-channel audio.
4417 Can be @var{any} or @var{all}. Default is @var{any}.
4418 With @var{any}, any sample that is detected as non-silence will cause
4419 stopped trimming of silence.
4420 With @var{all}, only if all channels are detected as non-silence will cause
4421 stopped trimming of silence.
4422
4423 @item stop_periods
4424 Set the count for trimming silence from the end of audio.
4425 To remove silence from the middle of a file, specify a @var{stop_periods}
4426 that is negative. This value is then treated as a positive value and is
4427 used to indicate the effect should restart processing as specified by
4428 @var{start_periods}, making it suitable for removing periods of silence
4429 in the middle of the audio.
4430 Default value is @code{0}.
4431
4432 @item stop_duration
4433 Specify a duration of silence that must exist before audio is not copied any
4434 more. By specifying a higher duration, silence that is wanted can be left in
4435 the audio.
4436 Default value is @code{0}.
4437
4438 @item stop_threshold
4439 This is the same as @option{start_threshold} but for trimming silence from
4440 the end of audio.
4441 Can be specified in dB (in case "dB" is appended to the specified value)
4442 or amplitude ratio. Default value is @code{0}.
4443
4444 @item stop_silence
4445 Specify max duration of silence at end that will be kept after
4446 trimming. Default is 0, which is equal to trimming all samples detected
4447 as silence.
4448
4449 @item stop_mode
4450 Specify mode of detection of silence start in end of multi-channel audio.
4451 Can be @var{any} or @var{all}. Default is @var{any}.
4452 With @var{any}, any sample that is detected as non-silence will cause
4453 stopped trimming of silence.
4454 With @var{all}, only if all channels are detected as non-silence will cause
4455 stopped trimming of silence.
4456
4457 @item detection
4458 Set how is silence detected. Can be @code{rms} or @code{peak}. Second is faster
4459 and works better with digital silence which is exactly 0.
4460 Default value is @code{rms}.
4461
4462 @item window
4463 Set duration in number of seconds used to calculate size of window in number
4464 of samples for detecting silence.
4465 Default value is @code{0.02}. Allowed range is from @code{0} to @code{10}.
4466 @end table
4467
4468 @subsection Examples
4469
4470 @itemize
4471 @item
4472 The following example shows how this filter can be used to start a recording
4473 that does not contain the delay at the start which usually occurs between
4474 pressing the record button and the start of the performance:
4475 @example
4476 silenceremove=start_periods=1:start_duration=5:start_threshold=0.02
4477 @end example
4478
4479 @item
4480 Trim all silence encountered from beginning to end where there is more than 1
4481 second of silence in audio:
4482 @example
4483 silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB
4484 @end example
4485 @end itemize
4486
4487 @section sofalizer
4488
4489 SOFAlizer uses head-related transfer functions (HRTFs) to create virtual
4490 loudspeakers around the user for binaural listening via headphones (audio
4491 formats up to 9 channels supported).
4492 The HRTFs are stored in SOFA files (see @url{http://www.sofacoustics.org/} for a database).
4493 SOFAlizer is developed at the Acoustics Research Institute (ARI) of the
4494 Austrian Academy of Sciences.
4495
4496 To enable compilation of this filter you need to configure FFmpeg with
4497 @code{--enable-libmysofa}.
4498
4499 The filter accepts the following options:
4500
4501 @table @option
4502 @item sofa
4503 Set the SOFA file used for rendering.
4504
4505 @item gain
4506 Set gain applied to audio. Value is in dB. Default is 0.
4507
4508 @item rotation
4509 Set rotation of virtual loudspeakers in deg. Default is 0.
4510
4511 @item elevation
4512 Set elevation of virtual speakers in deg. Default is 0.
4513
4514 @item radius
4515 Set distance in meters between loudspeakers and the listener with near-field
4516 HRTFs. Default is 1.
4517
4518 @item type
4519 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
4520 processing audio in time domain which is slow.
4521 @var{freq} is processing audio in frequency domain which is fast.
4522 Default is @var{freq}.
4523
4524 @item speakers
4525 Set custom positions of virtual loudspeakers. Syntax for this option is:
4526 <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...].
4527 Each virtual loudspeaker is described with short channel name following with
4528 azimuth and elevation in degrees.
4529 Each virtual loudspeaker description is separated by '|'.
4530 For example to override front left and front right channel positions use:
4531 'speakers=FL 45 15|FR 345 15'.
4532 Descriptions with unrecognised channel names are ignored.
4533
4534 @item lfegain
4535 Set custom gain for LFE channels. Value is in dB. Default is 0.
4536
4537 @item framesize
4538 Set custom frame size in number of samples. Default is 1024.
4539 Allowed range is from 1024 to 96000. Only used if option @samp{type}
4540 is set to @var{freq}.
4541
4542 @item normalize
4543 Should all IRs be normalized upon importing SOFA file.
4544 By default is enabled.
4545
4546 @item interpolate
4547 Should nearest IRs be interpolated with neighbor IRs if exact position
4548 does not match. By default is disabled.
4549
4550 @item minphase
4551 Minphase all IRs upon loading of SOFA file. By default is disabled.
4552
4553 @item anglestep
4554 Set neighbor search angle step. Only used if option @var{interpolate} is enabled.
4555
4556 @item radstep
4557 Set neighbor search radius step. Only used if option @var{interpolate} is enabled.
4558 @end table
4559
4560 @subsection Examples
4561
4562 @itemize
4563 @item
4564 Using ClubFritz6 sofa file:
4565 @example
4566 sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
4567 @end example
4568
4569 @item
4570 Using ClubFritz12 sofa file and bigger radius with small rotation:
4571 @example
4572 sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
4573 @end example
4574
4575 @item
4576 Similar as above but with custom speaker positions for front left, front right, back left and back right
4577 and also with custom gain:
4578 @example
4579 "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
4580 @end example
4581 @end itemize
4582
4583 @section stereotools
4584
4585 This filter has some handy utilities to manage stereo signals, for converting
4586 M/S stereo recordings to L/R signal while having control over the parameters
4587 or spreading the stereo image of master track.
4588
4589 The filter accepts the following options:
4590
4591 @table @option
4592 @item level_in
4593 Set input level before filtering for both channels. Defaults is 1.
4594 Allowed range is from 0.015625 to 64.
4595
4596 @item level_out
4597 Set output level after filtering for both channels. Defaults is 1.
4598 Allowed range is from 0.015625 to 64.
4599
4600 @item balance_in
4601 Set input balance between both channels. Default is 0.
4602 Allowed range is from -1 to 1.
4603
4604 @item balance_out
4605 Set output balance between both channels. Default is 0.
4606 Allowed range is from -1 to 1.
4607
4608 @item softclip
4609 Enable softclipping. Results in analog distortion instead of harsh digital 0dB
4610 clipping. Disabled by default.
4611
4612 @item mutel
4613 Mute the left channel. Disabled by default.
4614
4615 @item muter
4616 Mute the right channel. Disabled by default.
4617
4618 @item phasel
4619 Change the phase of the left channel. Disabled by default.
4620
4621 @item phaser
4622 Change the phase of the right channel. Disabled by default.
4623
4624 @item mode
4625 Set stereo mode. Available values are:
4626
4627 @table @samp
4628 @item lr>lr
4629 Left/Right to Left/Right, this is default.
4630
4631 @item lr>ms
4632 Left/Right to Mid/Side.
4633
4634 @item ms>lr
4635 Mid/Side to Left/Right.
4636
4637 @item lr>ll
4638 Left/Right to Left/Left.
4639
4640 @item lr>rr
4641 Left/Right to Right/Right.
4642
4643 @item lr>l+r
4644 Left/Right to Left + Right.
4645
4646 @item lr>rl
4647 Left/Right to Right/Left.
4648
4649 @item ms>ll
4650 Mid/Side to Left/Left.
4651
4652 @item ms>rr
4653 Mid/Side to Right/Right.
4654 @end table
4655
4656 @item slev
4657 Set level of side signal. Default is 1.
4658 Allowed range is from 0.015625 to 64.
4659
4660 @item sbal
4661 Set balance of side signal. Default is 0.
4662 Allowed range is from -1 to 1.
4663
4664 @item mlev
4665 Set level of the middle signal. Default is 1.
4666 Allowed range is from 0.015625 to 64.
4667
4668 @item mpan
4669 Set middle signal pan. Default is 0. Allowed range is from -1 to 1.
4670
4671 @item base
4672 Set stereo base between mono and inversed channels. Default is 0.
4673 Allowed range is from -1 to 1.
4674
4675 @item delay
4676 Set delay in milliseconds how much to delay left from right channel and
4677 vice versa. Default is 0. Allowed range is from -20 to 20.
4678
4679 @item sclevel
4680 Set S/C level. Default is 1. Allowed range is from 1 to 100.
4681
4682 @item phase
4683 Set the stereo phase in degrees. Default is 0. Allowed range is from 0 to 360.
4684
4685 @item bmode_in, bmode_out
4686 Set balance mode for balance_in/balance_out option.
4687
4688 Can be one of the following:
4689
4690 @table @samp
4691 @item balance
4692 Classic balance mode. Attenuate one channel at time.
4693 Gain is raised up to 1.
4694
4695 @item amplitude
4696 Similar as classic mode above but gain is raised up to 2.
4697
4698 @item power
4699 Equal power distribution, from -6dB to +6dB range.
4700 @end table
4701 @end table
4702
4703 @subsection Examples
4704
4705 @itemize
4706 @item
4707 Apply karaoke like effect:
4708 @example
4709 stereotools=mlev=0.015625
4710 @end example
4711
4712 @item
4713 Convert M/S signal to L/R:
4714 @example
4715 "stereotools=mode=ms>lr"
4716 @end example
4717 @end itemize
4718
4719 @section stereowiden
4720
4721 This filter enhance the stereo effect by suppressing signal common to both
4722 channels and by delaying the signal of left into right and vice versa,
4723 thereby widening the stereo effect.
4724
4725 The filter accepts the following options:
4726
4727 @table @option
4728 @item delay
4729 Time in milliseconds of the delay of left signal into right and vice versa.
4730 Default is 20 milliseconds.
4731
4732 @item feedback
4733 Amount of gain in delayed signal into right and vice versa. Gives a delay
4734 effect of left signal in right output and vice versa which gives widening
4735 effect. Default is 0.3.
4736
4737 @item crossfeed
4738 Cross feed of left into right with inverted phase. This helps in suppressing
4739 the mono. If the value is 1 it will cancel all the signal common to both
4740 channels. Default is 0.3.
4741
4742 @item drymix
4743 Set level of input signal of original channel. Default is 0.8.
4744 @end table
4745
4746 @section superequalizer
4747 Apply 18 band equalizer.
4748
4749 The filter accepts the following options:
4750 @table @option
4751 @item 1b
4752 Set 65Hz band gain.
4753 @item 2b
4754 Set 92Hz band gain.
4755 @item 3b
4756 Set 131Hz band gain.
4757 @item 4b
4758 Set 185Hz band gain.
4759 @item 5b
4760 Set 262Hz band gain.
4761 @item 6b
4762 Set 370Hz band gain.
4763 @item 7b
4764 Set 523Hz band gain.
4765 @item 8b
4766 Set 740Hz band gain.
4767 @item 9b
4768 Set 1047Hz band gain.
4769 @item 10b
4770 Set 1480Hz band gain.
4771 @item 11b
4772 Set 2093Hz band gain.
4773 @item 12b
4774 Set 2960Hz band gain.
4775 @item 13b
4776 Set 4186Hz band gain.
4777 @item 14b
4778 Set 5920Hz band gain.
4779 @item 15b
4780 Set 8372Hz band gain.
4781 @item 16b
4782 Set 11840Hz band gain.
4783 @item 17b
4784 Set 16744Hz band gain.
4785 @item 18b
4786 Set 20000Hz band gain.
4787 @end table
4788
4789 @section surround
4790 Apply audio surround upmix filter.
4791
4792 This filter allows to produce multichannel output from audio stream.
4793
4794 The filter accepts the following options:
4795
4796 @table @option
4797 @item chl_out
4798 Set output channel layout. By default, this is @var{5.1}.
4799
4800 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4801 for the required syntax.
4802
4803 @item chl_in
4804 Set input channel layout. By default, this is @var{stereo}.
4805
4806 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4807 for the required syntax.
4808
4809 @item level_in
4810 Set input volume level. By default, this is @var{1}.
4811
4812 @item level_out
4813 Set output volume level. By default, this is @var{1}.
4814
4815 @item lfe
4816 Enable LFE channel output if output channel layout has it. By default, this is enabled.
4817
4818 @item lfe_low
4819 Set LFE low cut off frequency. By default, this is @var{128} Hz.
4820
4821 @item lfe_high
4822 Set LFE high cut off frequency. By default, this is @var{256} Hz.
4823
4824 @item fc_in
4825 Set front center input volume. By default, this is @var{1}.
4826
4827 @item fc_out
4828 Set front center output volume. By default, this is @var{1}.
4829
4830 @item lfe_in
4831 Set LFE input volume. By default, this is @var{1}.
4832
4833 @item lfe_out
4834 Set LFE output volume. By default, this is @var{1}.
4835 @end table
4836
4837 @section treble, highshelf
4838
4839 Boost or cut treble (upper) frequencies of the audio using a two-pole
4840 shelving filter with a response similar to that of a standard
4841 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
4842
4843 The filter accepts the following options:
4844
4845 @table @option
4846 @item gain, g
4847 Give the gain at whichever is the lower of ~22 kHz and the
4848 Nyquist frequency. Its useful range is about -20 (for a large cut)
4849 to +20 (for a large boost). Beware of clipping when using a positive gain.
4850
4851 @item frequency, f
4852 Set the filter's central frequency and so can be used
4853 to extend or reduce the frequency range to be boosted or cut.
4854 The default value is @code{3000} Hz.
4855
4856 @item width_type, t
4857 Set method to specify band-width of filter.
4858 @table @option
4859 @item h
4860 Hz
4861 @item q
4862 Q-Factor
4863 @item o
4864 octave
4865 @item s
4866 slope
4867 @item k
4868 kHz
4869 @end table
4870
4871 @item width, w
4872 Determine how steep is the filter's shelf transition.
4873
4874 @item channels, c
4875 Specify which channels to filter, by default all available are filtered.
4876 @end table
4877
4878 @subsection Commands
4879
4880 This filter supports the following commands:
4881 @table @option
4882 @item frequency, f
4883 Change treble frequency.
4884 Syntax for the command is : "@var{frequency}"
4885
4886 @item width_type, t
4887 Change treble width_type.
4888 Syntax for the command is : "@var{width_type}"
4889
4890 @item width, w
4891 Change treble width.
4892 Syntax for the command is : "@var{width}"
4893
4894 @item gain, g
4895 Change treble gain.
4896 Syntax for the command is : "@var{gain}"
4897 @end table
4898
4899 @section tremolo
4900
4901 Sinusoidal amplitude modulation.
4902
4903 The filter accepts the following options:
4904
4905 @table @option
4906 @item f
4907 Modulation frequency in Hertz. Modulation frequencies in the subharmonic range
4908 (20 Hz or lower) will result in a tremolo effect.
4909 This filter may also be used as a ring modulator by specifying
4910 a modulation frequency higher than 20 Hz.
4911 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
4912
4913 @item d
4914 Depth of modulation as a percentage. Range is 0.0 - 1.0.
4915 Default value is 0.5.
4916 @end table
4917
4918 @section vibrato
4919
4920 Sinusoidal phase modulation.
4921
4922 The filter accepts the following options:
4923
4924 @table @option
4925 @item f
4926 Modulation frequency in Hertz.
4927 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
4928
4929 @item d
4930 Depth of modulation as a percentage. Range is 0.0 - 1.0.
4931 Default value is 0.5.
4932 @end table
4933
4934 @section volume
4935
4936 Adjust the input audio volume.
4937
4938 It accepts the following parameters:
4939 @table @option
4940
4941 @item volume
4942 Set audio volume expression.
4943
4944 Output values are clipped to the maximum value.
4945
4946 The output audio volume is given by the relation:
4947 @example
4948 @var{output_volume} = @var{volume} * @var{input_volume}
4949 @end example
4950
4951 The default value for @var{volume} is "1.0".
4952
4953 @item precision
4954 This parameter represents the mathematical precision.
4955
4956 It determines which input sample formats will be allowed, which affects the
4957 precision of the volume scaling.
4958
4959 @table @option
4960 @item fixed
4961 8-bit fixed-point; this limits input sample format to U8, S16, and S32.
4962 @item float
4963 32-bit floating-point; this limits input sample format to FLT. (default)
4964 @item double
4965 64-bit floating-point; this limits input sample format to DBL.
4966 @end table
4967
4968 @item replaygain
4969 Choose the behaviour on encountering ReplayGain side data in input frames.
4970
4971 @table @option
4972 @item drop
4973 Remove ReplayGain side data, ignoring its contents (the default).
4974
4975 @item ignore
4976 Ignore ReplayGain side data, but leave it in the frame.
4977
4978 @item track
4979 Prefer the track gain, if present.
4980
4981 @item album
4982 Prefer the album gain, if present.
4983 @end table
4984
4985 @item replaygain_preamp
4986 Pre-amplification gain in dB to apply to the selected replaygain gain.
4987
4988 Default value for @var{replaygain_preamp} is 0.0.
4989
4990 @item eval
4991 Set when the volume expression is evaluated.
4992
4993 It accepts the following values:
4994 @table @samp
4995 @item once
4996 only evaluate expression once during the filter initialization, or
4997 when the @samp{volume} command is sent
4998
4999 @item frame
5000 evaluate expression for each incoming frame
5001 @end table
5002
5003 Default value is @samp{once}.
5004 @end table
5005
5006 The volume expression can contain the following parameters.
5007
5008 @table @option
5009 @item n
5010 frame number (starting at zero)
5011 @item nb_channels
5012 number of channels
5013 @item nb_consumed_samples
5014 number of samples consumed by the filter
5015 @item nb_samples
5016 number of samples in the current frame
5017 @item pos
5018 original frame position in the file
5019 @item pts
5020 frame PTS
5021 @item sample_rate
5022 sample rate
5023 @item startpts
5024 PTS at start of stream
5025 @item startt
5026 time at start of stream
5027 @item t
5028 frame time
5029 @item tb
5030 timestamp timebase
5031 @item volume
5032 last set volume value
5033 @end table
5034
5035 Note that when @option{eval} is set to @samp{once} only the
5036 @var{sample_rate} and @var{tb} variables are available, all other
5037 variables will evaluate to NAN.
5038
5039 @subsection Commands
5040
5041 This filter supports the following commands:
5042 @table @option
5043 @item volume
5044 Modify the volume expression.
5045 The command accepts the same syntax of the corresponding option.
5046
5047 If the specified expression is not valid, it is kept at its current
5048 value.
5049 @item replaygain_noclip
5050 Prevent clipping by limiting the gain applied.
5051
5052 Default value for @var{replaygain_noclip} is 1.
5053
5054 @end table
5055
5056 @subsection Examples
5057
5058 @itemize
5059 @item
5060 Halve the input audio volume:
5061 @example
5062 volume=volume=0.5
5063 volume=volume=1/2
5064 volume=volume=-6.0206dB
5065 @end example
5066
5067 In all the above example the named key for @option{volume} can be
5068 omitted, for example like in:
5069 @example
5070 volume=0.5
5071 @end example
5072
5073 @item
5074 Increase input audio power by 6 decibels using fixed-point precision:
5075 @example
5076 volume=volume=6dB:precision=fixed
5077 @end example
5078
5079 @item
5080 Fade volume after time 10 with an annihilation period of 5 seconds:
5081 @example
5082 volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
5083 @end example
5084 @end itemize
5085
5086 @section volumedetect
5087
5088 Detect the volume of the input video.
5089
5090 The filter has no parameters. The input is not modified. Statistics about
5091 the volume will be printed in the log when the input stream end is reached.
5092
5093 In particular it will show the mean volume (root mean square), maximum
5094 volume (on a per-sample basis), and the beginning of a histogram of the
5095 registered volume values (from the maximum value to a cumulated 1/1000 of
5096 the samples).
5097
5098 All volumes are in decibels relative to the maximum PCM value.
5099
5100 @subsection Examples
5101
5102 Here is an excerpt of the output:
5103 @example
5104 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
5105 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
5106 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
5107 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
5108 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
5109 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
5110 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
5111 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
5112 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
5113 @end example
5114
5115 It means that:
5116 @itemize
5117 @item
5118 The mean square energy is approximately -27 dB, or 10^-2.7.
5119 @item
5120 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
5121 @item
5122 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
5123 @end itemize
5124
5125 In other words, raising the volume by +4 dB does not cause any clipping,
5126 raising it by +5 dB causes clipping for 6 samples, etc.
5127
5128 @c man end AUDIO FILTERS
5129
5130 @chapter Audio Sources
5131 @c man begin AUDIO SOURCES
5132
5133 Below is a description of the currently available audio sources.
5134
5135 @section abuffer
5136
5137 Buffer audio frames, and make them available to the filter chain.
5138
5139 This source is mainly intended for a programmatic use, in particular
5140 through the interface defined in @file{libavfilter/asrc_abuffer.h}.
5141
5142 It accepts the following parameters:
5143 @table @option
5144
5145 @item time_base
5146 The timebase which will be used for timestamps of submitted frames. It must be
5147 either a floating-point number or in @var{numerator}/@var{denominator} form.
5148
5149 @item sample_rate
5150 The sample rate of the incoming audio buffers.
5151
5152 @item sample_fmt
5153 The sample format of the incoming audio buffers.
5154 Either a sample format name or its corresponding integer representation from
5155 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
5156
5157 @item channel_layout
5158 The channel layout of the incoming audio buffers.
5159 Either a channel layout name from channel_layout_map in
5160 @file{libavutil/channel_layout.c} or its corresponding integer representation
5161 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
5162
5163 @item channels
5164 The number of channels of the incoming audio buffers.
5165 If both @var{channels} and @var{channel_layout} are specified, then they
5166 must be consistent.
5167
5168 @end table
5169
5170 @subsection Examples
5171
5172 @example
5173 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
5174 @end example
5175
5176 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
5177 Since the sample format with name "s16p" corresponds to the number
5178 6 and the "stereo" channel layout corresponds to the value 0x3, this is
5179 equivalent to:
5180 @example
5181 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
5182 @end example
5183
5184 @section aevalsrc
5185
5186 Generate an audio signal specified by an expression.
5187
5188 This source accepts in input one or more expressions (one for each
5189 channel), which are evaluated and used to generate a corresponding
5190 audio signal.
5191
5192 This source accepts the following options:
5193
5194 @table @option
5195 @item exprs
5196 Set the '|'-separated expressions list for each separate channel. In case the
5197 @option{channel_layout} option is not specified, the selected channel layout
5198 depends on the number of provided expressions. Otherwise the last
5199 specified expression is applied to the remaining output channels.
5200
5201 @item channel_layout, c
5202 Set the channel layout. The number of channels in the specified layout
5203 must be equal to the number of specified expressions.
5204
5205 @item duration, d
5206 Set the minimum duration of the sourced audio. See
5207 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5208 for the accepted syntax.
5209 Note that the resulting duration may be greater than the specified
5210 duration, as the generated audio is always cut at the end of a
5211 complete frame.
5212
5213 If not specified, or the expressed duration is negative, the audio is
5214 supposed to be generated forever.
5215
5216 @item nb_samples, n
5217 Set the number of samples per channel per each output frame,
5218 default to 1024.
5219
5220 @item sample_rate, s
5221 Specify the sample rate, default to 44100.
5222 @end table
5223
5224 Each expression in @var{exprs} can contain the following constants:
5225
5226 @table @option
5227 @item n
5228 number of the evaluated sample, starting from 0
5229
5230 @item t
5231 time of the evaluated sample expressed in seconds, starting from 0
5232
5233 @item s
5234 sample rate
5235
5236 @end table
5237
5238 @subsection Examples
5239
5240 @itemize
5241 @item
5242 Generate silence:
5243 @example
5244 aevalsrc=0
5245 @end example
5246
5247 @item
5248 Generate a sin signal with frequency of 440 Hz, set sample rate to
5249 8000 Hz:
5250 @example
5251 aevalsrc="sin(440*2*PI*t):s=8000"
5252 @end example
5253
5254 @item
5255 Generate a two channels signal, specify the channel layout (Front
5256 Center + Back Center) explicitly:
5257 @example
5258 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
5259 @end example
5260
5261 @item
5262 Generate white noise:
5263 @example
5264 aevalsrc="-2+random(0)"
5265 @end example
5266
5267 @item
5268 Generate an amplitude modulated signal:
5269 @example
5270 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
5271 @end example
5272
5273 @item
5274 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
5275 @example
5276 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
5277 @end example
5278
5279 @end itemize
5280
5281 @section anullsrc
5282
5283 The null audio source, return unprocessed audio frames. It is mainly useful
5284 as a template and to be employed in analysis / debugging tools, or as
5285 the source for filters which ignore the input data (for example the sox
5286 synth filter).
5287
5288 This source accepts the following options:
5289
5290 @table @option
5291
5292 @item channel_layout, cl
5293
5294 Specifies the channel layout, and can be either an integer or a string
5295 representing a channel layout. The default value of @var{channel_layout}
5296 is "stereo".
5297
5298 Check the channel_layout_map definition in
5299 @file{libavutil/channel_layout.c} for the mapping between strings and
5300 channel layout values.
5301
5302 @item sample_rate, r
5303 Specifies the sample rate, and defaults to 44100.
5304
5305 @item nb_samples, n
5306 Set the number of samples per requested frames.
5307
5308 @end table
5309
5310 @subsection Examples
5311
5312 @itemize
5313 @item
5314 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
5315 @example
5316 anullsrc=r=48000:cl=4
5317 @end example
5318
5319 @item
5320 Do the same operation with a more obvious syntax:
5321 @example
5322 anullsrc=r=48000:cl=mono
5323 @end example
5324 @end itemize
5325
5326 All the parameters need to be explicitly defined.
5327
5328 @section flite
5329
5330 Synthesize a voice utterance using the libflite library.
5331
5332 To enable compilation of this filter you need to configure FFmpeg with
5333 @code{--enable-libflite}.
5334
5335 Note that versions of the flite library prior to 2.0 are not thread-safe.
5336
5337 The filter accepts the following options:
5338
5339 @table @option
5340
5341 @item list_voices
5342 If set to 1, list the names of the available voices and exit
5343 immediately. Default value is 0.
5344
5345 @item nb_samples, n
5346 Set the maximum number of samples per frame. Default value is 512.
5347
5348 @item textfile
5349 Set the filename containing the text to speak.
5350
5351 @item text
5352 Set the text to speak.
5353
5354 @item voice, v
5355 Set the voice to use for the speech synthesis. Default value is
5356 @code{kal}. See also the @var{list_voices} option.
5357 @end table
5358
5359 @subsection Examples
5360
5361 @itemize
5362 @item
5363 Read from file @file{speech.txt}, and synthesize the text using the
5364 standard flite voice:
5365 @example
5366 flite=textfile=speech.txt
5367 @end example
5368
5369 @item
5370 Read the specified text selecting the @code{slt} voice:
5371 @example
5372 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
5373 @end example
5374
5375 @item
5376 Input text to ffmpeg:
5377 @example
5378 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
5379 @end example
5380
5381 @item
5382 Make @file{ffplay} speak the specified text, using @code{flite} and
5383 the @code{lavfi} device:
5384 @example
5385 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
5386 @end example
5387 @end itemize
5388
5389 For more information about libflite, check:
5390 @url{http://www.festvox.org/flite/}
5391
5392 @section anoisesrc
5393
5394 Generate a noise audio signal.
5395
5396 The filter accepts the following options:
5397
5398 @table @option
5399 @item sample_rate, r
5400 Specify the sample rate. Default value is 48000 Hz.
5401
5402 @item amplitude, a
5403 Specify the amplitude (0.0 - 1.0) of the generated audio stream. Default value
5404 is 1.0.
5405
5406 @item duration, d
5407 Specify the duration of the generated audio stream. Not specifying this option
5408 results in noise with an infinite length.
5409
5410 @item color, colour, c
5411 Specify the color of noise. Available noise colors are white, pink, brown,
5412 blue and violet. Default color is white.
5413
5414 @item seed, s
5415 Specify a value used to seed the PRNG.
5416
5417 @item nb_samples, n
5418 Set the number of samples per each output frame, default is 1024.
5419 @end table
5420
5421 @subsection Examples
5422
5423 @itemize
5424
5425 @item
5426 Generate 60 seconds of pink noise, with a 44.1 kHz sampling rate and an amplitude of 0.5:
5427 @example
5428 anoisesrc=d=60:c=pink:r=44100:a=0.5
5429 @end example
5430 @end itemize
5431
5432 @section hilbert
5433
5434 Generate odd-tap Hilbert transform FIR coefficients.
5435
5436 The resulting stream can be used with @ref{afir} filter for phase-shifting
5437 the signal by 90 degrees.
5438
5439 This is used in many matrix coding schemes and for analytic signal generation.
5440 The process is often written as a multiplication by i (or j), the imaginary unit.
5441
5442 The filter accepts the following options:
5443
5444 @table @option
5445
5446 @item sample_rate, s
5447 Set sample rate, default is 44100.
5448
5449 @item taps, t
5450 Set length of FIR filter, default is 22051.
5451
5452 @item nb_samples, n
5453 Set number of samples per each frame.
5454
5455 @item win_func, w
5456 Set window function to be used when generating FIR coefficients.
5457 @end table
5458
5459 @section sinc
5460
5461 Generate a sinc kaiser-windowed low-pass, high-pass, band-pass, or band-reject FIR coefficients.
5462
5463 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
5464
5465 The filter accepts the following options:
5466
5467 @table @option
5468 @item sample_rate, r
5469 Set sample rate, default is 44100.
5470
5471 @item nb_samples, n
5472 Set number of samples per each frame. Default is 1024.
5473
5474 @item hp
5475 Set high-pass frequency. Default is 0.
5476
5477 @item lp
5478 Set low-pass frequency. Default is 0.
5479 If high-pass frequency is lower than low-pass frequency and low-pass frequency
5480 is higher than 0 then filter will create band-pass filter coefficients,
5481 otherwise band-reject filter coefficients.
5482
5483 @item phase
5484 Set filter phase response. Default is 50. Allowed range is from 0 to 100.
5485
5486 @item beta
5487 Set Kaiser window beta.
5488
5489 @item att
5490 Set stop-band attenuation. Default is 120dB, allowed range is from 40 to 180 dB.
5491
5492 @item round
5493 Enable rounding, by default is disabled.
5494
5495 @item hptaps
5496 Set number of taps for high-pass filter.
5497
5498 @item lptaps
5499 Set number of taps for low-pass filter.
5500 @end table
5501
5502 @section sine
5503
5504 Generate an audio signal made of a sine wave with amplitude 1/8.
5505
5506 The audio signal is bit-exact.
5507
5508 The filter accepts the following options:
5509
5510 @table @option
5511
5512 @item frequency, f
5513 Set the carrier frequency. Default is 440 Hz.
5514
5515 @item beep_factor, b
5516 Enable a periodic beep every second with frequency @var{beep_factor} times
5517 the carrier frequency. Default is 0, meaning the beep is disabled.
5518
5519 @item sample_rate, r
5520 Specify the sample rate, default is 44100.
5521
5522 @item duration, d
5523 Specify the duration of the generated audio stream.
5524
5525 @item samples_per_frame
5526 Set the number of samples per output frame.
5527
5528 The expression can contain the following constants:
5529
5530 @table @option
5531 @item n
5532 The (sequential) number of the output audio frame, starting from 0.
5533
5534 @item pts
5535 The PTS (Presentation TimeStamp) of the output audio frame,
5536 expressed in @var{TB} units.
5537
5538 @item t
5539 The PTS of the output audio frame, expressed in seconds.
5540
5541 @item TB
5542 The timebase of the output audio frames.
5543 @end table
5544
5545 Default is @code{1024}.
5546 @end table
5547
5548 @subsection Examples
5549
5550 @itemize
5551
5552 @item
5553 Generate a simple 440 Hz sine wave:
5554 @example
5555 sine
5556 @end example
5557
5558 @item
5559 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
5560 @example
5561 sine=220:4:d=5
5562 sine=f=220:b=4:d=5
5563 sine=frequency=220:beep_factor=4:duration=5
5564 @end example
5565
5566 @item
5567 Generate a 1 kHz sine wave following @code{1602,1601,1602,1601,1602} NTSC
5568 pattern:
5569 @example
5570 sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
5571 @end example
5572 @end itemize
5573
5574 @c man end AUDIO SOURCES
5575
5576 @chapter Audio Sinks
5577 @c man begin AUDIO SINKS
5578
5579 Below is a description of the currently available audio sinks.
5580
5581 @section abuffersink
5582
5583 Buffer audio frames, and make them available to the end of filter chain.
5584
5585 This sink is mainly intended for programmatic use, in particular
5586 through the interface defined in @file{libavfilter/buffersink.h}
5587 or the options system.
5588
5589 It accepts a pointer to an AVABufferSinkContext structure, which
5590 defines the incoming buffers' formats, to be passed as the opaque
5591 parameter to @code{avfilter_init_filter} for initialization.
5592 @section anullsink
5593
5594 Null audio sink; do absolutely nothing with the input audio. It is
5595 mainly useful as a template and for use in analysis / debugging
5596 tools.
5597
5598 @c man end AUDIO SINKS
5599
5600 @chapter Video Filters
5601 @c man begin VIDEO FILTERS
5602
5603 When you configure your FFmpeg build, you can disable any of the
5604 existing filters using @code{--disable-filters}.
5605 The configure output will show the video filters included in your
5606 build.
5607
5608 Below is a description of the currently available video filters.
5609
5610 @section alphaextract
5611
5612 Extract the alpha component from the input as a grayscale video. This
5613 is especially useful with the @var{alphamerge} filter.
5614
5615 @section alphamerge
5616
5617 Add or replace the alpha component of the primary input with the
5618 grayscale value of a second input. This is intended for use with
5619 @var{alphaextract} to allow the transmission or storage of frame
5620 sequences that have alpha in a format that doesn't support an alpha
5621 channel.
5622
5623 For example, to reconstruct full frames from a normal YUV-encoded video
5624 and a separate video created with @var{alphaextract}, you might use:
5625 @example
5626 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
5627 @end example
5628
5629 Since this filter is designed for reconstruction, it operates on frame
5630 sequences without considering timestamps, and terminates when either
5631 input reaches end of stream. This will cause problems if your encoding
5632 pipeline drops frames. If you're trying to apply an image as an
5633 overlay to a video stream, consider the @var{overlay} filter instead.
5634
5635 @section amplify
5636
5637 Amplify differences between current pixel and pixels of adjacent frames in
5638 same pixel location.
5639
5640 This filter accepts the following options:
5641
5642 @table @option
5643 @item radius
5644 Set frame radius. Default is 2. Allowed range is from 1 to 63.
5645 For example radius of 3 will instruct filter to calculate average of 7 frames.
5646
5647 @item factor
5648 Set factor to amplify difference. Default is 2. Allowed range is from 0 to 65535.
5649
5650 @item threshold
5651 Set threshold for difference amplification. Any difference greater or equal to
5652 this value will not alter source pixel. Default is 10.
5653 Allowed range is from 0 to 65535.
5654
5655 @item low
5656 Set lower limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
5657 This option controls maximum possible value that will decrease source pixel value.
5658
5659 @item high
5660 Set high limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
5661 This option controls maximum possible value that will increase source pixel value.
5662
5663 @item planes
5664 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
5665 @end table
5666
5667 @section ass
5668
5669 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
5670 and libavformat to work. On the other hand, it is limited to ASS (Advanced
5671 Substation Alpha) subtitles files.
5672
5673 This filter accepts the following option in addition to the common options from
5674 the @ref{subtitles} filter:
5675
5676 @table @option
5677 @item shaping
5678 Set the shaping engine
5679
5680 Available values are:
5681 @table @samp
5682 @item auto
5683 The default libass shaping engine, which is the best available.
5684 @item simple
5685 Fast, font-agnostic shaper that can do only substitutions
5686 @item complex
5687 Slower shaper using OpenType for substitutions and positioning
5688 @end table
5689
5690 The default is @code{auto}.
5691 @end table
5692
5693 @section atadenoise
5694 Apply an Adaptive Temporal Averaging Denoiser to the video input.
5695
5696 The filter accepts the following options:
5697
5698 @table @option
5699 @item 0a
5700 Set threshold A for 1st plane. Default is 0.02.
5701 Valid range is 0 to 0.3.
5702
5703 @item 0b
5704 Set threshold B for 1st plane. Default is 0.04.
5705 Valid range is 0 to 5.
5706
5707 @item 1a
5708 Set threshold A for 2nd plane. Default is 0.02.
5709 Valid range is 0 to 0.3.
5710
5711 @item 1b
5712 Set threshold B for 2nd plane. Default is 0.04.
5713 Valid range is 0 to 5.
5714
5715 @item 2a
5716 Set threshold A for 3rd plane. Default is 0.02.
5717 Valid range is 0 to 0.3.
5718
5719 @item 2b
5720 Set threshold B for 3rd plane. Default is 0.04.
5721 Valid range is 0 to 5.
5722
5723 Threshold A is designed to react on abrupt changes in the input signal and
5724 threshold B is designed to react on continuous changes in the input signal.
5725
5726 @item s
5727 Set number of frames filter will use for averaging. Default is 9. Must be odd
5728 number in range [5, 129].
5729
5730 @item p
5731 Set what planes of frame filter will use for averaging. Default is all.
5732 @end table
5733
5734 @section avgblur
5735
5736 Apply average blur filter.
5737
5738 The filter accepts the following options:
5739
5740 @table @option
5741 @item sizeX
5742 Set horizontal radius size.
5743
5744 @item planes
5745 Set which planes to filter. By default all planes are filtered.
5746
5747 @item sizeY
5748 Set vertical radius size, if zero it will be same as @code{sizeX}.
5749 Default is @code{0}.
5750 @end table
5751
5752 @section bbox
5753
5754 Compute the bounding box for the non-black pixels in the input frame
5755 luminance plane.
5756
5757 This filter computes the bounding box containing all the pixels with a
5758 luminance value greater than the minimum allowed value.
5759 The parameters describing the bounding box are printed on the filter
5760 log.
5761
5762 The filter accepts the following option:
5763
5764 @table @option
5765 @item min_val
5766 Set the minimal luminance value. Default is @code{16}.
5767 @end table
5768
5769 @section bitplanenoise
5770
5771 Show and measure bit plane noise.
5772
5773 The filter accepts the following options:
5774
5775 @table @option
5776 @item bitplane
5777 Set which plane to analyze. Default is @code{1}.
5778
5779 @item filter
5780 Filter out noisy pixels from @code{bitplane} set above.
5781 Default is disabled.
5782 @end table
5783
5784 @section blackdetect
5785
5786 Detect video intervals that are (almost) completely black. Can be
5787 useful to detect chapter transitions, commercials, or invalid
5788 recordings. Output lines contains the time for the start, end and
5789 duration of the detected black interval expressed in seconds.
5790
5791 In order to display the output lines, you need to set the loglevel at
5792 least to the AV_LOG_INFO value.
5793
5794 The filter accepts the following options:
5795
5796 @table @option
5797 @item black_min_duration, d
5798 Set the minimum detected black duration expressed in seconds. It must
5799 be a non-negative floating point number.
5800
5801 Default value is 2.0.
5802
5803 @item picture_black_ratio_th, pic_th
5804 Set the threshold for considering a picture "black".
5805 Express the minimum value for the ratio:
5806 @example
5807 @var{nb_black_pixels} / @var{nb_pixels}
5808 @end example
5809
5810 for which a picture is considered black.
5811 Default value is 0.98.
5812
5813 @item pixel_black_th, pix_th
5814 Set the threshold for considering a pixel "black".
5815
5816 The threshold expresses the maximum pixel luminance value for which a
5817 pixel is considered "black". The provided value is scaled according to
5818 the following equation:
5819 @example
5820 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
5821 @end example
5822
5823 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
5824 the input video format, the range is [0-255] for YUV full-range
5825 formats and [16-235] for YUV non full-range formats.
5826
5827 Default value is 0.10.
5828 @end table
5829
5830 The following example sets the maximum pixel threshold to the minimum
5831 value, and detects only black intervals of 2 or more seconds:
5832 @example
5833 blackdetect=d=2:pix_th=0.00
5834 @end example
5835
5836 @section blackframe
5837
5838 Detect frames that are (almost) completely black. Can be useful to
5839 detect chapter transitions or commercials. Output lines consist of
5840 the frame number of the detected frame, the percentage of blackness,
5841 the position in the file if known or -1 and the timestamp in seconds.
5842
5843 In order to display the output lines, you need to set the loglevel at
5844 least to the AV_LOG_INFO value.
5845
5846 This filter exports frame metadata @code{lavfi.blackframe.pblack}.
5847 The value represents the percentage of pixels in the picture that
5848 are below the threshold value.
5849
5850 It accepts the following parameters:
5851
5852 @table @option
5853
5854 @item amount
5855 The percentage of the pixels that have to be below the threshold; it defaults to
5856 @code{98}.
5857
5858 @item threshold, thresh
5859 The threshold below which a pixel value is considered black; it defaults to
5860 @code{32}.
5861
5862 @end table
5863
5864 @section blend, tblend
5865
5866 Blend two video frames into each other.
5867
5868 The @code{blend} filter takes two input streams and outputs one
5869 stream, the first input is the "top" layer and second input is
5870 "bottom" layer.  By default, the output terminates when the longest input terminates.
5871
5872 The @code{tblend} (time blend) filter takes two consecutive frames
5873 from one single stream, and outputs the result obtained by blending
5874 the new frame on top of the old frame.
5875
5876 A description of the accepted options follows.
5877
5878 @table @option
5879 @item c0_mode
5880 @item c1_mode
5881 @item c2_mode
5882 @item c3_mode
5883 @item all_mode
5884 Set blend mode for specific pixel component or all pixel components in case
5885 of @var{all_mode}. Default value is @code{normal}.
5886
5887 Available values for component modes are:
5888 @table @samp
5889 @item addition
5890 @item grainmerge
5891 @item and
5892 @item average
5893 @item burn
5894 @item darken
5895 @item difference
5896 @item grainextract
5897 @item divide
5898 @item dodge
5899 @item freeze
5900 @item exclusion
5901 @item extremity
5902 @item glow
5903 @item hardlight
5904 @item hardmix
5905 @item heat
5906 @item lighten
5907 @item linearlight
5908 @item multiply
5909 @item multiply128
5910 @item negation
5911 @item normal
5912 @item or
5913 @item overlay
5914 @item phoenix
5915 @item pinlight
5916 @item reflect
5917 @item screen
5918 @item softlight
5919 @item subtract
5920 @item vividlight
5921 @item xor
5922 @end table
5923
5924 @item c0_opacity
5925 @item c1_opacity
5926 @item c2_opacity
5927 @item c3_opacity
5928 @item all_opacity
5929 Set blend opacity for specific pixel component or all pixel components in case
5930 of @var{all_opacity}. Only used in combination with pixel component blend modes.
5931
5932 @item c0_expr
5933 @item c1_expr
5934 @item c2_expr
5935 @item c3_expr
5936 @item all_expr
5937 Set blend expression for specific pixel component or all pixel components in case
5938 of @var{all_expr}. Note that related mode options will be ignored if those are set.
5939
5940 The expressions can use the following variables:
5941
5942 @table @option
5943 @item N
5944 The sequential number of the filtered frame, starting from @code{0}.
5945
5946 @item X
5947 @item Y
5948 the coordinates of the current sample
5949
5950 @item W
5951 @item H
5952 the width and height of currently filtered plane
5953
5954 @item SW
5955 @item SH
5956 Width and height scale for the plane being filtered. It is the
5957 ratio between the dimensions of the current plane to the luma plane,
5958 e.g. for a @code{yuv420p} frame, the values are @code{1,1} for
5959 the luma plane and @code{0.5,0.5} for the chroma planes.
5960
5961 @item T
5962 Time of the current frame, expressed in seconds.
5963
5964 @item TOP, A
5965 Value of pixel component at current location for first video frame (top layer).
5966
5967 @item BOTTOM, B
5968 Value of pixel component at current location for second video frame (bottom layer).
5969 @end table
5970 @end table
5971
5972 The @code{blend} filter also supports the @ref{framesync} options.
5973
5974 @subsection Examples
5975
5976 @itemize
5977 @item
5978 Apply transition from bottom layer to top layer in first 10 seconds:
5979 @example
5980 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
5981 @end example
5982
5983 @item
5984 Apply linear horizontal transition from top layer to bottom layer:
5985 @example
5986 blend=all_expr='A*(X/W)+B*(1-X/W)'
5987 @end example
5988
5989 @item
5990 Apply 1x1 checkerboard effect:
5991 @example
5992 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
5993 @end example
5994
5995 @item
5996 Apply uncover left effect:
5997 @example
5998 blend=all_expr='if(gte(N*SW+X,W),A,B)'
5999 @end example
6000
6001 @item
6002 Apply uncover down effect:
6003 @example
6004 blend=all_expr='if(gte(Y-N*SH,0),A,B)'
6005 @end example
6006
6007 @item
6008 Apply uncover up-left effect:
6009 @example
6010 blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
6011 @end example
6012
6013 @item
6014 Split diagonally video and shows top and bottom layer on each side:
6015 @example
6016 blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
6017 @end example
6018
6019 @item
6020 Display differences between the current and the previous frame:
6021 @example
6022 tblend=all_mode=grainextract
6023 @end example
6024 @end itemize
6025
6026 @section bm3d
6027
6028 Denoise frames using Block-Matching 3D algorithm.
6029
6030 The filter accepts the following options.
6031
6032 @table @option
6033 @item sigma
6034 Set denoising strength. Default value is 1.
6035 Allowed range is from 0 to 999.9.
6036 The denoising algorithm is very sensitive to sigma, so adjust it
6037 according to the source.
6038
6039 @item block
6040 Set local patch size. This sets dimensions in 2D.
6041
6042 @item bstep
6043 Set sliding step for processing blocks. Default value is 4.
6044 Allowed range is from 1 to 64.
6045 Smaller values allows processing more reference blocks and is slower.
6046
6047 @item group
6048 Set maximal number of similar blocks for 3rd dimension. Default value is 1.
6049 When set to 1, no block matching is done. Larger values allows more blocks
6050 in single group.
6051 Allowed range is from 1 to 256.
6052
6053 @item range
6054 Set radius for search block matching. Default is 9.
6055 Allowed range is from 1 to INT32_MAX.
6056
6057 @item mstep
6058 Set step between two search locations for block matching. Default is 1.
6059 Allowed range is from 1 to 64. Smaller is slower.
6060
6061 @item thmse
6062 Set threshold of mean square error for block matching. Valid range is 0 to
6063 INT32_MAX.
6064
6065 @item hdthr
6066 Set thresholding parameter for hard thresholding in 3D transformed domain.
6067 Larger values results in stronger hard-thresholding filtering in frequency
6068 domain.
6069
6070 @item estim
6071 Set filtering estimation mode. Can be @code{basic} or @code{final}.
6072 Default is @code{basic}.
6073
6074 @item ref
6075 If enabled, filter will use 2nd stream for block matching.
6076 Default is disabled for @code{basic} value of @var{estim} option,
6077 and always enabled if value of @var{estim} is @code{final}.
6078
6079 @item planes
6080 Set planes to filter. Default is all available except alpha.
6081 @end table
6082
6083 @subsection Examples
6084
6085 @itemize
6086 @item
6087 Basic filtering with bm3d:
6088 @example
6089 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic
6090 @end example
6091
6092 @item
6093 Same as above, but filtering only luma:
6094 @example
6095 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1
6096 @end example
6097
6098 @item
6099 Same as above, but with both estimation modes:
6100 @example
6101 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
6102 @end example
6103
6104 @item
6105 Same as above, but prefilter with @ref{nlmeans} filter instead:
6106 @example
6107 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
6108 @end example
6109 @end itemize
6110
6111 @section boxblur
6112
6113 Apply a boxblur algorithm to the input video.
6114
6115 It accepts the following parameters:
6116
6117 @table @option
6118
6119 @item luma_radius, lr
6120 @item luma_power, lp
6121 @item chroma_radius, cr
6122 @item chroma_power, cp
6123 @item alpha_radius, ar
6124 @item alpha_power, ap
6125
6126 @end table
6127
6128 A description of the accepted options follows.
6129
6130 @table @option
6131 @item luma_radius, lr
6132 @item chroma_radius, cr
6133 @item alpha_radius, ar
6134 Set an expression for the box radius in pixels used for blurring the
6135 corresponding input plane.
6136
6137 The radius value must be a non-negative number, and must not be
6138 greater than the value of the expression @code{min(w,h)/2} for the
6139 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
6140 planes.
6141
6142 Default value for @option{luma_radius} is "2". If not specified,
6143 @option{chroma_radius} and @option{alpha_radius} default to the
6144 corresponding value set for @option{luma_radius}.
6145
6146 The expressions can contain the following constants:
6147 @table @option
6148 @item w
6149 @item h
6150 The input width and height in pixels.
6151
6152 @item cw
6153 @item ch
6154 The input chroma image width and height in pixels.
6155
6156 @item hsub
6157 @item vsub
6158 The horizontal and vertical chroma subsample values. For example, for the
6159 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
6160 @end table
6161
6162 @item luma_power, lp
6163 @item chroma_power, cp
6164 @item alpha_power, ap
6165 Specify how many times the boxblur filter is applied to the
6166 corresponding plane.
6167
6168 Default value for @option{luma_power} is 2. If not specified,
6169 @option{chroma_power} and @option{alpha_power} default to the
6170 corresponding value set for @option{luma_power}.
6171
6172 A value of 0 will disable the effect.
6173 @end table
6174
6175 @subsection Examples
6176
6177 @itemize
6178 @item
6179 Apply a boxblur filter with the luma, chroma, and alpha radii
6180 set to 2:
6181 @example
6182 boxblur=luma_radius=2:luma_power=1
6183 boxblur=2:1
6184 @end example
6185
6186 @item
6187 Set the luma radius to 2, and alpha and chroma radius to 0:
6188 @example
6189 boxblur=2:1:cr=0:ar=0
6190 @end example
6191
6192 @item
6193 Set the luma and chroma radii to a fraction of the video dimension:
6194 @example
6195 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
6196 @end example
6197 @end itemize
6198
6199 @section bwdif
6200
6201 Deinterlace the input video ("bwdif" stands for "Bob Weaver
6202 Deinterlacing Filter").
6203
6204 Motion adaptive deinterlacing based on yadif with the use of w3fdif and cubic
6205 interpolation algorithms.
6206 It accepts the following parameters:
6207
6208 @table @option
6209 @item mode
6210 The interlacing mode to adopt. It accepts one of the following values:
6211
6212 @table @option
6213 @item 0, send_frame
6214 Output one frame for each frame.
6215 @item 1, send_field
6216 Output one frame for each field.
6217 @end table
6218
6219 The default value is @code{send_field}.
6220
6221 @item parity
6222 The picture field parity assumed for the input interlaced video. It accepts one
6223 of the following values:
6224
6225 @table @option
6226 @item 0, tff
6227 Assume the top field is first.
6228 @item 1, bff
6229 Assume the bottom field is first.
6230 @item -1, auto
6231 Enable automatic detection of field parity.
6232 @end table
6233
6234 The default value is @code{auto}.
6235 If the interlacing is unknown or the decoder does not export this information,
6236 top field first will be assumed.
6237
6238 @item deint
6239 Specify which frames to deinterlace. Accept one of the following
6240 values:
6241
6242 @table @option
6243 @item 0, all
6244 Deinterlace all frames.
6245 @item 1, interlaced
6246 Only deinterlace frames marked as interlaced.
6247 @end table
6248
6249 The default value is @code{all}.
6250 @end table
6251
6252 @section chromahold
6253 Remove all color information for all colors except for certain one.
6254
6255 The filter accepts the following options:
6256
6257 @table @option
6258 @item color
6259 The color which will not be replaced with neutral chroma.
6260
6261 @item similarity
6262 Similarity percentage with the above color.
6263 0.01 matches only the exact key color, while 1.0 matches everything.
6264
6265 @item yuv
6266 Signals that the color passed is already in YUV instead of RGB.
6267
6268 Literal colors like "green" or "red" don't make sense with this enabled anymore.
6269 This can be used to pass exact YUV values as hexadecimal numbers.
6270 @end table
6271
6272 @section chromakey
6273 YUV colorspace color/chroma keying.
6274
6275 The filter accepts the following options:
6276
6277 @table @option
6278 @item color
6279 The color which will be replaced with transparency.
6280
6281 @item similarity
6282 Similarity percentage with the key color.
6283
6284 0.01 matches only the exact key color, while 1.0 matches everything.
6285
6286 @item blend
6287 Blend percentage.
6288
6289 0.0 makes pixels either fully transparent, or not transparent at all.
6290
6291 Higher values result in semi-transparent pixels, with a higher transparency
6292 the more similar the pixels color is to the key color.
6293
6294 @item yuv
6295 Signals that the color passed is already in YUV instead of RGB.
6296
6297 Literal colors like "green" or "red" don't make sense with this enabled anymore.
6298 This can be used to pass exact YUV values as hexadecimal numbers.
6299 @end table
6300
6301 @subsection Examples
6302
6303 @itemize
6304 @item
6305 Make every green pixel in the input image transparent:
6306 @example
6307 ffmpeg -i input.png -vf chromakey=green out.png
6308 @end example
6309
6310 @item
6311 Overlay a greenscreen-video on top of a static black background.
6312 @example
6313 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
6314 @end example
6315 @end itemize
6316
6317 @section chromashift
6318 Shift chroma pixels horizontally and/or vertically.
6319
6320 The filter accepts the following options:
6321 @table @option
6322 @item cbh
6323 Set amount to shift chroma-blue horizontally.
6324 @item cbv
6325 Set amount to shift chroma-blue vertically.
6326 @item crh
6327 Set amount to shift chroma-red horizontally.
6328 @item crv
6329 Set amount to shift chroma-red vertically.
6330 @item edge
6331 Set edge mode, can be @var{smear}, default, or @var{warp}.
6332 @end table
6333
6334 @section ciescope
6335
6336 Display CIE color diagram with pixels overlaid onto it.
6337
6338 The filter accepts the following options:
6339
6340 @table @option
6341 @item system
6342 Set color system.
6343
6344 @table @samp
6345 @item ntsc, 470m
6346 @item ebu, 470bg
6347 @item smpte
6348 @item 240m
6349 @item apple
6350 @item widergb
6351 @item cie1931
6352 @item rec709, hdtv
6353 @item uhdtv, rec2020
6354 @end table
6355
6356 @item cie
6357 Set CIE system.
6358
6359 @table @samp
6360 @item xyy
6361 @item ucs
6362 @item luv
6363 @end table
6364
6365 @item gamuts
6366 Set what gamuts to draw.
6367
6368 See @code{system} option for available values.
6369
6370 @item size, s
6371 Set ciescope size, by default set to 512.
6372
6373 @item intensity, i
6374 Set intensity used to map input pixel values to CIE diagram.
6375
6376 @item contrast
6377 Set contrast used to draw tongue colors that are out of active color system gamut.
6378
6379 @item corrgamma
6380 Correct gamma displayed on scope, by default enabled.
6381
6382 @item showwhite
6383 Show white point on CIE diagram, by default disabled.
6384
6385 @item gamma
6386 Set input gamma. Used only with XYZ input color space.
6387 @end table
6388
6389 @section codecview
6390
6391 Visualize information exported by some codecs.
6392
6393 Some codecs can export information through frames using side-data or other
6394 means. For example, some MPEG based codecs export motion vectors through the
6395 @var{export_mvs} flag in the codec @option{flags2} option.
6396
6397 The filter accepts the following option:
6398
6399 @table @option
6400 @item mv
6401 Set motion vectors to visualize.
6402
6403 Available flags for @var{mv} are:
6404
6405 @table @samp
6406 @item pf
6407 forward predicted MVs of P-frames
6408 @item bf
6409 forward predicted MVs of B-frames
6410 @item bb
6411 backward predicted MVs of B-frames
6412 @end table
6413
6414 @item qp
6415 Display quantization parameters using the chroma planes.
6416
6417 @item mv_type, mvt
6418 Set motion vectors type to visualize. Includes MVs from all frames unless specified by @var{frame_type} option.
6419
6420 Available flags for @var{mv_type} are:
6421
6422 @table @samp
6423 @item fp
6424 forward predicted MVs
6425 @item bp
6426 backward predicted MVs
6427 @end table
6428
6429 @item frame_type, ft
6430 Set frame type to visualize motion vectors of.
6431
6432 Available flags for @var{frame_type} are:
6433
6434 @table @samp
6435 @item if
6436 intra-coded frames (I-frames)
6437 @item pf
6438 predicted frames (P-frames)
6439 @item bf
6440 bi-directionally predicted frames (B-frames)
6441 @end table
6442 @end table
6443
6444 @subsection Examples
6445
6446 @itemize
6447 @item
6448 Visualize forward predicted MVs of all frames using @command{ffplay}:
6449 @example
6450 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
6451 @end example
6452
6453 @item
6454 Visualize multi-directionals MVs of P and B-Frames using @command{ffplay}:
6455 @example
6456 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
6457 @end example
6458 @end itemize
6459
6460 @section colorbalance
6461 Modify intensity of primary colors (red, green and blue) of input frames.
6462
6463 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
6464 regions for the red-cyan, green-magenta or blue-yellow balance.
6465
6466 A positive adjustment value shifts the balance towards the primary color, a negative
6467 value towards the complementary color.
6468
6469 The filter accepts the following options:
6470
6471 @table @option
6472 @item rs
6473 @item gs
6474 @item bs
6475 Adjust red, green and blue shadows (darkest pixels).
6476
6477 @item rm
6478 @item gm
6479 @item bm
6480 Adjust red, green and blue midtones (medium pixels).
6481
6482 @item rh
6483 @item gh
6484 @item bh
6485 Adjust red, green and blue highlights (brightest pixels).
6486
6487 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
6488 @end table
6489
6490 @subsection Examples
6491
6492 @itemize
6493 @item
6494 Add red color cast to shadows:
6495 @example
6496 colorbalance=rs=.3
6497 @end example
6498 @end itemize
6499
6500 @section colorkey
6501 RGB colorspace color keying.
6502
6503 The filter accepts the following options:
6504
6505 @table @option
6506 @item color
6507 The color which will be replaced with transparency.
6508
6509 @item similarity
6510 Similarity percentage with the key color.
6511
6512 0.01 matches only the exact key color, while 1.0 matches everything.
6513
6514 @item blend
6515 Blend percentage.
6516
6517 0.0 makes pixels either fully transparent, or not transparent at all.
6518
6519 Higher values result in semi-transparent pixels, with a higher transparency
6520 the more similar the pixels color is to the key color.
6521 @end table
6522
6523 @subsection Examples
6524
6525 @itemize
6526 @item
6527 Make every green pixel in the input image transparent:
6528 @example
6529 ffmpeg -i input.png -vf colorkey=green out.png
6530 @end example
6531
6532 @item
6533 Overlay a greenscreen-video on top of a static background image.
6534 @example
6535 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
6536 @end example
6537 @end itemize
6538
6539 @section colorlevels
6540
6541 Adjust video input frames using levels.
6542
6543 The filter accepts the following options:
6544
6545 @table @option
6546 @item rimin
6547 @item gimin
6548 @item bimin
6549 @item aimin
6550 Adjust red, green, blue and alpha input black point.
6551 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
6552
6553 @item rimax
6554 @item gimax
6555 @item bimax
6556 @item aimax
6557 Adjust red, green, blue and alpha input white point.
6558 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{1}.
6559
6560 Input levels are used to lighten highlights (bright tones), darken shadows
6561 (dark tones), change the balance of bright and dark tones.
6562
6563 @item romin
6564 @item gomin
6565 @item bomin
6566 @item aomin
6567 Adjust red, green, blue and alpha output black point.
6568 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{0}.
6569
6570 @item romax
6571 @item gomax
6572 @item bomax
6573 @item aomax
6574 Adjust red, green, blue and alpha output white point.
6575 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{1}.
6576
6577 Output levels allows manual selection of a constrained output level range.
6578 @end table
6579
6580 @subsection Examples
6581
6582 @itemize
6583 @item
6584 Make video output darker:
6585 @example
6586 colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
6587 @end example
6588
6589 @item
6590 Increase contrast:
6591 @example
6592 colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
6593 @end example
6594
6595 @item
6596 Make video output lighter:
6597 @example
6598 colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
6599 @end example
6600
6601 @item
6602 Increase brightness:
6603 @example
6604 colorlevels=romin=0.5:gomin=0.5:bomin=0.5
6605 @end example
6606 @end itemize
6607
6608 @section colorchannelmixer
6609
6610 Adjust video input frames by re-mixing color channels.
6611
6612 This filter modifies a color channel by adding the values associated to
6613 the other channels of the same pixels. For example if the value to
6614 modify is red, the output value will be:
6615 @example
6616 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
6617 @end example
6618
6619 The filter accepts the following options:
6620
6621 @table @option
6622 @item rr
6623 @item rg
6624 @item rb
6625 @item ra
6626 Adjust contribution of input red, green, blue and alpha channels for output red channel.
6627 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
6628
6629 @item gr
6630 @item gg
6631 @item gb
6632 @item ga
6633 Adjust contribution of input red, green, blue and alpha channels for output green channel.
6634 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
6635
6636 @item br
6637 @item bg
6638 @item bb
6639 @item ba
6640 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
6641 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
6642
6643 @item ar
6644 @item ag
6645 @item ab
6646 @item aa
6647 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
6648 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
6649
6650 Allowed ranges for options are @code{[-2.0, 2.0]}.
6651 @end table
6652
6653 @subsection Examples
6654
6655 @itemize
6656 @item
6657 Convert source to grayscale:
6658 @example
6659 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
6660 @end example
6661 @item
6662 Simulate sepia tones:
6663 @example
6664 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
6665 @end example
6666 @end itemize
6667
6668 @section colormatrix
6669
6670 Convert color matrix.
6671
6672 The filter accepts the following options:
6673
6674 @table @option
6675 @item src
6676 @item dst
6677 Specify the source and destination color matrix. Both values must be
6678 specified.
6679
6680 The accepted values are:
6681 @table @samp
6682 @item bt709
6683 BT.709
6684
6685 @item fcc
6686 FCC
6687
6688 @item bt601
6689 BT.601
6690
6691 @item bt470
6692 BT.470
6693
6694 @item bt470bg
6695 BT.470BG
6696
6697 @item smpte170m
6698 SMPTE-170M
6699
6700 @item smpte240m
6701 SMPTE-240M
6702
6703 @item bt2020
6704 BT.2020
6705 @end table
6706 @end table
6707
6708 For example to convert from BT.601 to SMPTE-240M, use the command:
6709 @example
6710 colormatrix=bt601:smpte240m
6711 @end example
6712
6713 @section colorspace
6714
6715 Convert colorspace, transfer characteristics or color primaries.
6716 Input video needs to have an even size.
6717
6718 The filter accepts the following options:
6719
6720 @table @option
6721 @anchor{all}
6722 @item all
6723 Specify all color properties at once.
6724
6725 The accepted values are:
6726 @table @samp
6727 @item bt470m
6728 BT.470M
6729
6730 @item bt470bg
6731 BT.470BG
6732
6733 @item bt601-6-525
6734 BT.601-6 525
6735
6736 @item bt601-6-625
6737 BT.601-6 625
6738
6739 @item bt709
6740 BT.709
6741
6742 @item smpte170m
6743 SMPTE-170M
6744
6745 @item smpte240m
6746 SMPTE-240M
6747
6748 @item bt2020
6749 BT.2020
6750
6751 @end table
6752
6753 @anchor{space}
6754 @item space
6755 Specify output colorspace.
6756
6757 The accepted values are:
6758 @table @samp
6759 @item bt709
6760 BT.709
6761
6762 @item fcc
6763 FCC
6764
6765 @item bt470bg
6766 BT.470BG or BT.601-6 625
6767
6768 @item smpte170m
6769 SMPTE-170M or BT.601-6 525
6770
6771 @item smpte240m
6772 SMPTE-240M
6773
6774 @item ycgco
6775 YCgCo
6776
6777 @item bt2020ncl
6778 BT.2020 with non-constant luminance
6779
6780 @end table
6781
6782 @anchor{trc}
6783 @item trc
6784 Specify output transfer characteristics.
6785
6786 The accepted values are:
6787 @table @samp
6788 @item bt709
6789 BT.709
6790
6791 @item bt470m
6792 BT.470M
6793
6794 @item bt470bg
6795 BT.470BG
6796
6797 @item gamma22
6798 Constant gamma of 2.2
6799
6800 @item gamma28
6801 Constant gamma of 2.8
6802
6803 @item smpte170m
6804 SMPTE-170M, BT.601-6 625 or BT.601-6 525
6805
6806 @item smpte240m
6807 SMPTE-240M
6808
6809 @item srgb
6810 SRGB
6811
6812 @item iec61966-2-1
6813 iec61966-2-1
6814
6815 @item iec61966-2-4
6816 iec61966-2-4
6817
6818 @item xvycc
6819 xvycc
6820
6821 @item bt2020-10
6822 BT.2020 for 10-bits content
6823
6824 @item bt2020-12
6825 BT.2020 for 12-bits content
6826
6827 @end table
6828
6829 @anchor{primaries}
6830 @item primaries
6831 Specify output color primaries.
6832
6833 The accepted values are:
6834 @table @samp
6835 @item bt709
6836 BT.709
6837
6838 @item bt470m
6839 BT.470M
6840
6841 @item bt470bg
6842 BT.470BG or BT.601-6 625
6843
6844 @item smpte170m
6845 SMPTE-170M or BT.601-6 525
6846
6847 @item smpte240m
6848 SMPTE-240M
6849
6850 @item film
6851 film
6852
6853 @item smpte431
6854 SMPTE-431
6855
6856 @item smpte432
6857 SMPTE-432
6858
6859 @item bt2020
6860 BT.2020
6861
6862 @item jedec-p22
6863 JEDEC P22 phosphors
6864
6865 @end table
6866
6867 @anchor{range}
6868 @item range
6869 Specify output color range.
6870
6871 The accepted values are:
6872 @table @samp
6873 @item tv
6874 TV (restricted) range
6875
6876 @item mpeg
6877 MPEG (restricted) range
6878
6879 @item pc
6880 PC (full) range
6881
6882 @item jpeg
6883 JPEG (full) range
6884
6885 @end table
6886
6887 @item format
6888 Specify output color format.
6889
6890 The accepted values are:
6891 @table @samp
6892 @item yuv420p
6893 YUV 4:2:0 planar 8-bits
6894
6895 @item yuv420p10
6896 YUV 4:2:0 planar 10-bits
6897
6898 @item yuv420p12
6899 YUV 4:2:0 planar 12-bits
6900
6901 @item yuv422p
6902 YUV 4:2:2 planar 8-bits
6903
6904 @item yuv422p10
6905 YUV 4:2:2 planar 10-bits
6906
6907 @item yuv422p12
6908 YUV 4:2:2 planar 12-bits
6909
6910 @item yuv444p
6911 YUV 4:4:4 planar 8-bits
6912
6913 @item yuv444p10
6914 YUV 4:4:4 planar 10-bits
6915
6916 @item yuv444p12
6917 YUV 4:4:4 planar 12-bits
6918
6919 @end table
6920
6921 @item fast
6922 Do a fast conversion, which skips gamma/primary correction. This will take
6923 significantly less CPU, but will be mathematically incorrect. To get output
6924 compatible with that produced by the colormatrix filter, use fast=1.
6925
6926 @item dither
6927 Specify dithering mode.
6928
6929 The accepted values are:
6930 @table @samp
6931 @item none
6932 No dithering
6933
6934 @item fsb
6935 Floyd-Steinberg dithering
6936 @end table
6937
6938 @item wpadapt
6939 Whitepoint adaptation mode.
6940
6941 The accepted values are:
6942 @table @samp
6943 @item bradford
6944 Bradford whitepoint adaptation
6945
6946 @item vonkries
6947 von Kries whitepoint adaptation
6948
6949 @item identity
6950 identity whitepoint adaptation (i.e. no whitepoint adaptation)
6951 @end table
6952
6953 @item iall
6954 Override all input properties at once. Same accepted values as @ref{all}.
6955
6956 @item ispace
6957 Override input colorspace. Same accepted values as @ref{space}.
6958
6959 @item iprimaries
6960 Override input color primaries. Same accepted values as @ref{primaries}.
6961
6962 @item itrc
6963 Override input transfer characteristics. Same accepted values as @ref{trc}.
6964
6965 @item irange
6966 Override input color range. Same accepted values as @ref{range}.
6967
6968 @end table
6969
6970 The filter converts the transfer characteristics, color space and color
6971 primaries to the specified user values. The output value, if not specified,
6972 is set to a default value based on the "all" property. If that property is
6973 also not specified, the filter will log an error. The output color range and
6974 format default to the same value as the input color range and format. The
6975 input transfer characteristics, color space, color primaries and color range
6976 should be set on the input data. If any of these are missing, the filter will
6977 log an error and no conversion will take place.
6978
6979 For example to convert the input to SMPTE-240M, use the command:
6980 @example
6981 colorspace=smpte240m
6982 @end example
6983
6984 @section convolution
6985
6986 Apply convolution of 3x3, 5x5, 7x7 or horizontal/vertical up to 49 elements.
6987
6988 The filter accepts the following options:
6989
6990 @table @option
6991 @item 0m
6992 @item 1m
6993 @item 2m
6994 @item 3m
6995 Set matrix for each plane.
6996 Matrix is sequence of 9, 25 or 49 signed integers in @var{square} mode,
6997 and from 1 to 49 odd number of signed integers in @var{row} mode.
6998
6999 @item 0rdiv
7000 @item 1rdiv
7001 @item 2rdiv
7002 @item 3rdiv
7003 Set multiplier for calculated value for each plane.
7004 If unset or 0, it will be sum of all matrix elements.
7005
7006 @item 0bias
7007 @item 1bias
7008 @item 2bias
7009 @item 3bias
7010 Set bias for each plane. This value is added to the result of the multiplication.
7011 Useful for making the overall image brighter or darker. Default is 0.0.
7012
7013 @item 0mode
7014 @item 1mode
7015 @item 2mode
7016 @item 3mode
7017 Set matrix mode for each plane. Can be @var{square}, @var{row} or @var{column}.
7018 Default is @var{square}.
7019 @end table
7020
7021 @subsection Examples
7022
7023 @itemize
7024 @item
7025 Apply sharpen:
7026 @example
7027 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"
7028 @end example
7029
7030 @item
7031 Apply blur:
7032 @example
7033 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"
7034 @end example
7035
7036 @item
7037 Apply edge enhance:
7038 @example
7039 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"
7040 @end example
7041
7042 @item
7043 Apply edge detect:
7044 @example
7045 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"
7046 @end example
7047
7048 @item
7049 Apply laplacian edge detector which includes diagonals:
7050 @example
7051 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"
7052 @end example
7053
7054 @item
7055 Apply emboss:
7056 @example
7057 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"
7058 @end example
7059 @end itemize
7060
7061 @section convolve
7062
7063 Apply 2D convolution of video stream in frequency domain using second stream
7064 as impulse.
7065
7066 The filter accepts the following options:
7067
7068 @table @option
7069 @item planes
7070 Set which planes to process.
7071
7072 @item impulse
7073 Set which impulse video frames will be processed, can be @var{first}
7074 or @var{all}. Default is @var{all}.
7075 @end table
7076
7077 The @code{convolve} filter also supports the @ref{framesync} options.
7078
7079 @section copy
7080
7081 Copy the input video source unchanged to the output. This is mainly useful for
7082 testing purposes.
7083
7084 @anchor{coreimage}
7085 @section coreimage
7086 Video filtering on GPU using Apple's CoreImage API on OSX.
7087
7088 Hardware acceleration is based on an OpenGL context. Usually, this means it is
7089 processed by video hardware. However, software-based OpenGL implementations
7090 exist which means there is no guarantee for hardware processing. It depends on
7091 the respective OSX.
7092
7093 There are many filters and image generators provided by Apple that come with a
7094 large variety of options. The filter has to be referenced by its name along
7095 with its options.
7096
7097 The coreimage filter accepts the following options:
7098 @table @option
7099 @item list_filters
7100 List all available filters and generators along with all their respective
7101 options as well as possible minimum and maximum values along with the default
7102 values.
7103 @example
7104 list_filters=true
7105 @end example
7106
7107 @item filter
7108 Specify all filters by their respective name and options.
7109 Use @var{list_filters} to determine all valid filter names and options.
7110 Numerical options are specified by a float value and are automatically clamped
7111 to their respective value range.  Vector and color options have to be specified
7112 by a list of space separated float values. Character escaping has to be done.
7113 A special option name @code{default} is available to use default options for a
7114 filter.
7115
7116 It is required to specify either @code{default} or at least one of the filter options.
7117 All omitted options are used with their default values.
7118 The syntax of the filter string is as follows:
7119 @example
7120 filter=<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...][#<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...]][#...]
7121 @end example
7122
7123 @item output_rect
7124 Specify a rectangle where the output of the filter chain is copied into the
7125 input image. It is given by a list of space separated float values:
7126 @example
7127 output_rect=x\ y\ width\ height
7128 @end example
7129 If not given, the output rectangle equals the dimensions of the input image.
7130 The output rectangle is automatically cropped at the borders of the input
7131 image. Negative values are valid for each component.
7132 @example
7133 output_rect=25\ 25\ 100\ 100
7134 @end example
7135 @end table
7136
7137 Several filters can be chained for successive processing without GPU-HOST
7138 transfers allowing for fast processing of complex filter chains.
7139 Currently, only filters with zero (generators) or exactly one (filters) input
7140 image and one output image are supported. Also, transition filters are not yet
7141 usable as intended.
7142
7143 Some filters generate output images with additional padding depending on the
7144 respective filter kernel. The padding is automatically removed to ensure the
7145 filter output has the same size as the input image.
7146
7147 For image generators, the size of the output image is determined by the
7148 previous output image of the filter chain or the input image of the whole
7149 filterchain, respectively. The generators do not use the pixel information of
7150 this image to generate their output. However, the generated output is
7151 blended onto this image, resulting in partial or complete coverage of the
7152 output image.
7153
7154 The @ref{coreimagesrc} video source can be used for generating input images
7155 which are directly fed into the filter chain. By using it, providing input
7156 images by another video source or an input video is not required.
7157
7158 @subsection Examples
7159
7160 @itemize
7161
7162 @item
7163 List all filters available:
7164 @example
7165 coreimage=list_filters=true
7166 @end example
7167
7168 @item
7169 Use the CIBoxBlur filter with default options to blur an image:
7170 @example
7171 coreimage=filter=CIBoxBlur@@default
7172 @end example
7173
7174 @item
7175 Use a filter chain with CISepiaTone at default values and CIVignetteEffect with
7176 its center at 100x100 and a radius of 50 pixels:
7177 @example
7178 coreimage=filter=CIBoxBlur@@default#CIVignetteEffect@@inputCenter=100\ 100@@inputRadius=50
7179 @end example
7180
7181 @item
7182 Use nullsrc and CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
7183 given as complete and escaped command-line for Apple's standard bash shell:
7184 @example
7185 ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
7186 @end example
7187 @end itemize
7188
7189 @section crop
7190
7191 Crop the input video to given dimensions.
7192
7193 It accepts the following parameters:
7194
7195 @table @option
7196 @item w, out_w
7197 The width of the output video. It defaults to @code{iw}.
7198 This expression is evaluated only once during the filter
7199 configuration, or when the @samp{w} or @samp{out_w} command is sent.
7200
7201 @item h, out_h
7202 The height of the output video. It defaults to @code{ih}.
7203 This expression is evaluated only once during the filter
7204 configuration, or when the @samp{h} or @samp{out_h} command is sent.
7205
7206 @item x
7207 The horizontal position, in the input video, of the left edge of the output
7208 video. It defaults to @code{(in_w-out_w)/2}.
7209 This expression is evaluated per-frame.
7210
7211 @item y
7212 The vertical position, in the input video, of the top edge of the output video.
7213 It defaults to @code{(in_h-out_h)/2}.
7214 This expression is evaluated per-frame.
7215
7216 @item keep_aspect
7217 If set to 1 will force the output display aspect ratio
7218 to be the same of the input, by changing the output sample aspect
7219 ratio. It defaults to 0.
7220
7221 @item exact
7222 Enable exact cropping. If enabled, subsampled videos will be cropped at exact
7223 width/height/x/y as specified and will not be rounded to nearest smaller value.
7224 It defaults to 0.
7225 @end table
7226
7227 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
7228 expressions containing the following constants:
7229
7230 @table @option
7231 @item x
7232 @item y
7233 The computed values for @var{x} and @var{y}. They are evaluated for
7234 each new frame.
7235
7236 @item in_w
7237 @item in_h
7238 The input width and height.
7239
7240 @item iw
7241 @item ih
7242 These are the same as @var{in_w} and @var{in_h}.
7243
7244 @item out_w
7245 @item out_h
7246 The output (cropped) width and height.
7247
7248 @item ow
7249 @item oh
7250 These are the same as @var{out_w} and @var{out_h}.
7251
7252 @item a
7253 same as @var{iw} / @var{ih}
7254
7255 @item sar
7256 input sample aspect ratio
7257
7258 @item dar
7259 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
7260
7261 @item hsub
7262 @item vsub
7263 horizontal and vertical chroma subsample values. For example for the
7264 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
7265
7266 @item n
7267 The number of the input frame, starting from 0.
7268
7269 @item pos
7270 the position in the file of the input frame, NAN if unknown
7271
7272 @item t
7273 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
7274
7275 @end table
7276
7277 The expression for @var{out_w} may depend on the value of @var{out_h},
7278 and the expression for @var{out_h} may depend on @var{out_w}, but they
7279 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
7280 evaluated after @var{out_w} and @var{out_h}.
7281
7282 The @var{x} and @var{y} parameters specify the expressions for the
7283 position of the top-left corner of the output (non-cropped) area. They
7284 are evaluated for each frame. If the evaluated value is not valid, it
7285 is approximated to the nearest valid value.
7286
7287 The expression for @var{x} may depend on @var{y}, and the expression
7288 for @var{y} may depend on @var{x}.
7289
7290 @subsection Examples
7291
7292 @itemize
7293 @item
7294 Crop area with size 100x100 at position (12,34).
7295 @example
7296 crop=100:100:12:34
7297 @end example
7298
7299 Using named options, the example above becomes:
7300 @example
7301 crop=w=100:h=100:x=12:y=34
7302 @end example
7303
7304 @item
7305 Crop the central input area with size 100x100:
7306 @example
7307 crop=100:100
7308 @end example
7309
7310 @item
7311 Crop the central input area with size 2/3 of the input video:
7312 @example
7313 crop=2/3*in_w:2/3*in_h
7314 @end example
7315
7316 @item
7317 Crop the input video central square:
7318 @example
7319 crop=out_w=in_h
7320 crop=in_h
7321 @end example
7322
7323 @item
7324 Delimit the rectangle with the top-left corner placed at position
7325 100:100 and the right-bottom corner corresponding to the right-bottom
7326 corner of the input image.
7327 @example
7328 crop=in_w-100:in_h-100:100:100
7329 @end example
7330
7331 @item
7332 Crop 10 pixels from the left and right borders, and 20 pixels from
7333 the top and bottom borders
7334 @example
7335 crop=in_w-2*10:in_h-2*20
7336 @end example
7337
7338 @item
7339 Keep only the bottom right quarter of the input image:
7340 @example
7341 crop=in_w/2:in_h/2:in_w/2:in_h/2
7342 @end example
7343
7344 @item
7345 Crop height for getting Greek harmony:
7346 @example
7347 crop=in_w:1/PHI*in_w
7348 @end example
7349
7350 @item
7351 Apply trembling effect:
7352 @example
7353 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)
7354 @end example
7355
7356 @item
7357 Apply erratic camera effect depending on timestamp:
7358 @example
7359 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)"
7360 @end example
7361
7362 @item
7363 Set x depending on the value of y:
7364 @example
7365 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
7366 @end example
7367 @end itemize
7368
7369 @subsection Commands
7370
7371 This filter supports the following commands:
7372 @table @option
7373 @item w, out_w
7374 @item h, out_h
7375 @item x
7376 @item y
7377 Set width/height of the output video and the horizontal/vertical position
7378 in the input video.
7379 The command accepts the same syntax of the corresponding option.
7380
7381 If the specified expression is not valid, it is kept at its current
7382 value.
7383 @end table
7384
7385 @section cropdetect
7386
7387 Auto-detect the crop size.
7388
7389 It calculates the necessary cropping parameters and prints the
7390 recommended parameters via the logging system. The detected dimensions
7391 correspond to the non-black area of the input video.
7392
7393 It accepts the following parameters:
7394
7395 @table @option
7396
7397 @item limit
7398 Set higher black value threshold, which can be optionally specified
7399 from nothing (0) to everything (255 for 8-bit based formats). An intensity
7400 value greater to the set value is considered non-black. It defaults to 24.
7401 You can also specify a value between 0.0 and 1.0 which will be scaled depending
7402 on the bitdepth of the pixel format.
7403
7404 @item round
7405 The value which the width/height should be divisible by. It defaults to
7406 16. The offset is automatically adjusted to center the video. Use 2 to
7407 get only even dimensions (needed for 4:2:2 video). 16 is best when
7408 encoding to most video codecs.
7409
7410 @item reset_count, reset
7411 Set the counter that determines after how many frames cropdetect will
7412 reset the previously detected largest video area and start over to
7413 detect the current optimal crop area. Default value is 0.
7414
7415 This can be useful when channel logos distort the video area. 0
7416 indicates 'never reset', and returns the largest area encountered during
7417 playback.
7418 @end table
7419
7420 @anchor{cue}
7421 @section cue
7422
7423 Delay video filtering until a given wallclock timestamp. The filter first
7424 passes on @option{preroll} amount of frames, then it buffers at most
7425 @option{buffer} amount of frames and waits for the cue. After reaching the cue
7426 it forwards the buffered frames and also any subsequent frames coming in its
7427 input.
7428
7429 The filter can be used synchronize the output of multiple ffmpeg processes for
7430 realtime output devices like decklink. By putting the delay in the filtering
7431 chain and pre-buffering frames the process can pass on data to output almost
7432 immediately after the target wallclock timestamp is reached.
7433
7434 Perfect frame accuracy cannot be guaranteed, but the result is good enough for
7435 some use cases.
7436
7437 @table @option
7438
7439 @item cue
7440 The cue timestamp expressed in a UNIX timestamp in microseconds. Default is 0.
7441
7442 @item preroll
7443 The duration of content to pass on as preroll expressed in seconds. Default is 0.
7444
7445 @item buffer
7446 The maximum duration of content to buffer before waiting for the cue expressed
7447 in seconds. Default is 0.
7448
7449 @end table
7450
7451 @anchor{curves}
7452 @section curves
7453
7454 Apply color adjustments using curves.
7455
7456 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
7457 component (red, green and blue) has its values defined by @var{N} key points
7458 tied from each other using a smooth curve. The x-axis represents the pixel
7459 values from the input frame, and the y-axis the new pixel values to be set for
7460 the output frame.
7461
7462 By default, a component curve is defined by the two points @var{(0;0)} and
7463 @var{(1;1)}. This creates a straight line where each original pixel value is
7464 "adjusted" to its own value, which means no change to the image.
7465
7466 The filter allows you to redefine these two points and add some more. A new
7467 curve (using a natural cubic spline interpolation) will be define to pass
7468 smoothly through all these new coordinates. The new defined points needs to be
7469 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
7470 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
7471 the vector spaces, the values will be clipped accordingly.
7472
7473 The filter accepts the following options:
7474
7475 @table @option
7476 @item preset
7477 Select one of the available color presets. This option can be used in addition
7478 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
7479 options takes priority on the preset values.
7480 Available presets are:
7481 @table @samp
7482 @item none
7483 @item color_negative
7484 @item cross_process
7485 @item darker
7486 @item increase_contrast
7487 @item lighter
7488 @item linear_contrast
7489 @item medium_contrast
7490 @item negative
7491 @item strong_contrast
7492 @item vintage
7493 @end table
7494 Default is @code{none}.
7495 @item master, m
7496 Set the master key points. These points will define a second pass mapping. It
7497 is sometimes called a "luminance" or "value" mapping. It can be used with
7498 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
7499 post-processing LUT.
7500 @item red, r
7501 Set the key points for the red component.
7502 @item green, g
7503 Set the key points for the green component.
7504 @item blue, b
7505 Set the key points for the blue component.
7506 @item all
7507 Set the key points for all components (not including master).
7508 Can be used in addition to the other key points component
7509 options. In this case, the unset component(s) will fallback on this
7510 @option{all} setting.
7511 @item psfile
7512 Specify a Photoshop curves file (@code{.acv}) to import the settings from.
7513 @item plot
7514 Save Gnuplot script of the curves in specified file.
7515 @end table
7516
7517 To avoid some filtergraph syntax conflicts, each key points list need to be
7518 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
7519
7520 @subsection Examples
7521
7522 @itemize
7523 @item
7524 Increase slightly the middle level of blue:
7525 @example
7526 curves=blue='0/0 0.5/0.58 1/1'
7527 @end example
7528
7529 @item
7530 Vintage effect:
7531 @example
7532 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'
7533 @end example
7534 Here we obtain the following coordinates for each components:
7535 @table @var
7536 @item red
7537 @code{(0;0.11) (0.42;0.51) (1;0.95)}
7538 @item green
7539 @code{(0;0) (0.50;0.48) (1;1)}
7540 @item blue
7541 @code{(0;0.22) (0.49;0.44) (1;0.80)}
7542 @end table
7543
7544 @item
7545 The previous example can also be achieved with the associated built-in preset:
7546 @example
7547 curves=preset=vintage
7548 @end example
7549
7550 @item
7551 Or simply:
7552 @example
7553 curves=vintage
7554 @end example
7555
7556 @item
7557 Use a Photoshop preset and redefine the points of the green component:
7558 @example
7559 curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
7560 @end example
7561
7562 @item
7563 Check out the curves of the @code{cross_process} profile using @command{ffmpeg}
7564 and @command{gnuplot}:
7565 @example
7566 ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
7567 gnuplot -p /tmp/curves.plt
7568 @end example
7569 @end itemize
7570
7571 @section datascope
7572
7573 Video data analysis filter.
7574
7575 This filter shows hexadecimal pixel values of part of video.
7576
7577 The filter accepts the following options:
7578
7579 @table @option
7580 @item size, s
7581 Set output video size.
7582
7583 @item x
7584 Set x offset from where to pick pixels.
7585
7586 @item y
7587 Set y offset from where to pick pixels.
7588
7589 @item mode
7590 Set scope mode, can be one of the following:
7591 @table @samp
7592 @item mono
7593 Draw hexadecimal pixel values with white color on black background.
7594
7595 @item color
7596 Draw hexadecimal pixel values with input video pixel color on black
7597 background.
7598
7599 @item color2
7600 Draw hexadecimal pixel values on color background picked from input video,
7601 the text color is picked in such way so its always visible.
7602 @end table
7603
7604 @item axis
7605 Draw rows and columns numbers on left and top of video.
7606
7607 @item opacity
7608 Set background opacity.
7609 @end table
7610
7611 @section dctdnoiz
7612
7613 Denoise frames using 2D DCT (frequency domain filtering).
7614
7615 This filter is not designed for real time.
7616
7617 The filter accepts the following options:
7618
7619 @table @option
7620 @item sigma, s
7621 Set the noise sigma constant.
7622
7623 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
7624 coefficient (absolute value) below this threshold with be dropped.
7625
7626 If you need a more advanced filtering, see @option{expr}.
7627
7628 Default is @code{0}.
7629
7630 @item overlap
7631 Set number overlapping pixels for each block. Since the filter can be slow, you
7632 may want to reduce this value, at the cost of a less effective filter and the
7633 risk of various artefacts.
7634
7635 If the overlapping value doesn't permit processing the whole input width or
7636 height, a warning will be displayed and according borders won't be denoised.
7637
7638 Default value is @var{blocksize}-1, which is the best possible setting.
7639
7640 @item expr, e
7641 Set the coefficient factor expression.
7642
7643 For each coefficient of a DCT block, this expression will be evaluated as a
7644 multiplier value for the coefficient.
7645
7646 If this is option is set, the @option{sigma} option will be ignored.
7647
7648 The absolute value of the coefficient can be accessed through the @var{c}
7649 variable.
7650
7651 @item n
7652 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
7653 @var{blocksize}, which is the width and height of the processed blocks.
7654
7655 The default value is @var{3} (8x8) and can be raised to @var{4} for a
7656 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
7657 on the speed processing. Also, a larger block size does not necessarily means a
7658 better de-noising.
7659 @end table
7660
7661 @subsection Examples
7662
7663 Apply a denoise with a @option{sigma} of @code{4.5}:
7664 @example
7665 dctdnoiz=4.5
7666 @end example
7667
7668 The same operation can be achieved using the expression system:
7669 @example
7670 dctdnoiz=e='gte(c, 4.5*3)'
7671 @end example
7672
7673 Violent denoise using a block size of @code{16x16}:
7674 @example
7675 dctdnoiz=15:n=4
7676 @end example
7677
7678 @section deband
7679
7680 Remove banding artifacts from input video.
7681 It works by replacing banded pixels with average value of referenced pixels.
7682
7683 The filter accepts the following options:
7684
7685 @table @option
7686 @item 1thr
7687 @item 2thr
7688 @item 3thr
7689 @item 4thr
7690 Set banding detection threshold for each plane. Default is 0.02.
7691 Valid range is 0.00003 to 0.5.
7692 If difference between current pixel and reference pixel is less than threshold,
7693 it will be considered as banded.
7694
7695 @item range, r
7696 Banding detection range in pixels. Default is 16. If positive, random number
7697 in range 0 to set value will be used. If negative, exact absolute value
7698 will be used.
7699 The range defines square of four pixels around current pixel.
7700
7701 @item direction, d
7702 Set direction in radians from which four pixel will be compared. If positive,
7703 random direction from 0 to set direction will be picked. If negative, exact of
7704 absolute value will be picked. For example direction 0, -PI or -2*PI radians
7705 will pick only pixels on same row and -PI/2 will pick only pixels on same
7706 column.
7707
7708 @item blur, b
7709 If enabled, current pixel is compared with average value of all four
7710 surrounding pixels. The default is enabled. If disabled current pixel is
7711 compared with all four surrounding pixels. The pixel is considered banded
7712 if only all four differences with surrounding pixels are less than threshold.
7713
7714 @item coupling, c
7715 If enabled, current pixel is changed if and only if all pixel components are banded,
7716 e.g. banding detection threshold is triggered for all color components.
7717 The default is disabled.
7718 @end table
7719
7720 @section deblock
7721
7722 Remove blocking artifacts from input video.
7723
7724 The filter accepts the following options:
7725
7726 @table @option
7727 @item filter
7728 Set filter type, can be @var{weak} or @var{strong}. Default is @var{strong}.
7729 This controls what kind of deblocking is applied.
7730
7731 @item block
7732 Set size of block, allowed range is from 4 to 512. Default is @var{8}.
7733
7734 @item alpha
7735 @item beta
7736 @item gamma
7737 @item delta
7738 Set blocking detection thresholds. Allowed range is 0 to 1.
7739 Defaults are: @var{0.098} for @var{alpha} and @var{0.05} for the rest.
7740 Using higher threshold gives more deblocking strength.
7741 Setting @var{alpha} controls threshold detection at exact edge of block.
7742 Remaining options controls threshold detection near the edge. Each one for
7743 below/above or left/right. Setting any of those to @var{0} disables
7744 deblocking.
7745
7746 @item planes
7747 Set planes to filter. Default is to filter all available planes.
7748 @end table
7749
7750 @subsection Examples
7751
7752 @itemize
7753 @item
7754 Deblock using weak filter and block size of 4 pixels.
7755 @example
7756 deblock=filter=weak:block=4
7757 @end example
7758
7759 @item
7760 Deblock using strong filter, block size of 4 pixels and custom thresholds for
7761 deblocking more edges.
7762 @example
7763 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05
7764 @end example
7765
7766 @item
7767 Similar as above, but filter only first plane.
7768 @example
7769 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1
7770 @end example
7771
7772 @item
7773 Similar as above, but filter only second and third plane.
7774 @example
7775 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
7776 @end example
7777 @end itemize
7778
7779 @anchor{decimate}
7780 @section decimate
7781
7782 Drop duplicated frames at regular intervals.
7783
7784 The filter accepts the following options:
7785
7786 @table @option
7787 @item cycle
7788 Set the number of frames from which one will be dropped. Setting this to
7789 @var{N} means one frame in every batch of @var{N} frames will be dropped.
7790 Default is @code{5}.
7791
7792 @item dupthresh
7793 Set the threshold for duplicate detection. If the difference metric for a frame
7794 is less than or equal to this value, then it is declared as duplicate. Default
7795 is @code{1.1}
7796
7797 @item scthresh
7798 Set scene change threshold. Default is @code{15}.
7799
7800 @item blockx
7801 @item blocky
7802 Set the size of the x and y-axis blocks used during metric calculations.
7803 Larger blocks give better noise suppression, but also give worse detection of
7804 small movements. Must be a power of two. Default is @code{32}.
7805
7806 @item ppsrc
7807 Mark main input as a pre-processed input and activate clean source input
7808 stream. This allows the input to be pre-processed with various filters to help
7809 the metrics calculation while keeping the frame selection lossless. When set to
7810 @code{1}, the first stream is for the pre-processed input, and the second
7811 stream is the clean source from where the kept frames are chosen. Default is
7812 @code{0}.
7813
7814 @item chroma
7815 Set whether or not chroma is considered in the metric calculations. Default is
7816 @code{1}.
7817 @end table
7818
7819 @section deconvolve
7820
7821 Apply 2D deconvolution of video stream in frequency domain using second stream
7822 as impulse.
7823
7824 The filter accepts the following options:
7825
7826 @table @option
7827 @item planes
7828 Set which planes to process.
7829
7830 @item impulse
7831 Set which impulse video frames will be processed, can be @var{first}
7832 or @var{all}. Default is @var{all}.
7833
7834 @item noise
7835 Set noise when doing divisions. Default is @var{0.0000001}. Useful when width
7836 and height are not same and not power of 2 or if stream prior to convolving
7837 had noise.
7838 @end table
7839
7840 The @code{deconvolve} filter also supports the @ref{framesync} options.
7841
7842 @section dedot
7843
7844 Reduce cross-luminance (dot-crawl) and cross-color (rainbows) from video.
7845
7846 It accepts the following options:
7847
7848 @table @option
7849 @item m
7850 Set mode of operation. Can be combination of @var{dotcrawl} for cross-luminance reduction and/or
7851 @var{rainbows} for cross-color reduction.
7852
7853 @item lt
7854 Set spatial luma threshold. Lower values increases reduction of cross-luminance.
7855
7856 @item tl
7857 Set tolerance for temporal luma. Higher values increases reduction of cross-luminance.
7858
7859 @item tc
7860 Set tolerance for chroma temporal variation. Higher values increases reduction of cross-color.
7861
7862 @item ct
7863 Set temporal chroma threshold. Lower values increases reduction of cross-color.
7864 @end table
7865
7866 @section deflate
7867
7868 Apply deflate effect to the video.
7869
7870 This filter replaces the pixel by the local(3x3) average by taking into account
7871 only values lower than the pixel.
7872
7873 It accepts the following options:
7874
7875 @table @option
7876 @item threshold0
7877 @item threshold1
7878 @item threshold2
7879 @item threshold3
7880 Limit the maximum change for each plane, default is 65535.
7881 If 0, plane will remain unchanged.
7882 @end table
7883
7884 @section deflicker
7885
7886 Remove temporal frame luminance variations.
7887
7888 It accepts the following options:
7889
7890 @table @option
7891 @item size, s
7892 Set moving-average filter size in frames. Default is 5. Allowed range is 2 - 129.
7893
7894 @item mode, m
7895 Set averaging mode to smooth temporal luminance variations.
7896
7897 Available values are:
7898 @table @samp
7899 @item am
7900 Arithmetic mean
7901
7902 @item gm
7903 Geometric mean
7904
7905 @item hm
7906 Harmonic mean
7907
7908 @item qm
7909 Quadratic mean
7910
7911 @item cm
7912 Cubic mean
7913
7914 @item pm
7915 Power mean
7916
7917 @item median
7918 Median
7919 @end table
7920
7921 @item bypass
7922 Do not actually modify frame. Useful when one only wants metadata.
7923 @end table
7924
7925 @section dejudder
7926
7927 Remove judder produced by partially interlaced telecined content.
7928
7929 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
7930 source was partially telecined content then the output of @code{pullup,dejudder}
7931 will have a variable frame rate. May change the recorded frame rate of the
7932 container. Aside from that change, this filter will not affect constant frame
7933 rate video.
7934
7935 The option available in this filter is:
7936 @table @option
7937
7938 @item cycle
7939 Specify the length of the window over which the judder repeats.
7940
7941 Accepts any integer greater than 1. Useful values are:
7942 @table @samp
7943
7944 @item 4
7945 If the original was telecined from 24 to 30 fps (Film to NTSC).
7946
7947 @item 5
7948 If the original was telecined from 25 to 30 fps (PAL to NTSC).
7949
7950 @item 20
7951 If a mixture of the two.
7952 @end table
7953
7954 The default is @samp{4}.
7955 @end table
7956
7957 @section delogo
7958
7959 Suppress a TV station logo by a simple interpolation of the surrounding
7960 pixels. Just set a rectangle covering the logo and watch it disappear
7961 (and sometimes something even uglier appear - your mileage may vary).
7962
7963 It accepts the following parameters:
7964 @table @option
7965
7966 @item x
7967 @item y
7968 Specify the top left corner coordinates of the logo. They must be
7969 specified.
7970
7971 @item w
7972 @item h
7973 Specify the width and height of the logo to clear. They must be
7974 specified.
7975
7976 @item band, t
7977 Specify the thickness of the fuzzy edge of the rectangle (added to
7978 @var{w} and @var{h}). The default value is 1. This option is
7979 deprecated, setting higher values should no longer be necessary and
7980 is not recommended.
7981
7982 @item show
7983 When set to 1, a green rectangle is drawn on the screen to simplify
7984 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
7985 The default value is 0.
7986
7987 The rectangle is drawn on the outermost pixels which will be (partly)
7988 replaced with interpolated values. The values of the next pixels
7989 immediately outside this rectangle in each direction will be used to
7990 compute the interpolated pixel values inside the rectangle.
7991
7992 @end table
7993
7994 @subsection Examples
7995
7996 @itemize
7997 @item
7998 Set a rectangle covering the area with top left corner coordinates 0,0
7999 and size 100x77, and a band of size 10:
8000 @example
8001 delogo=x=0:y=0:w=100:h=77:band=10
8002 @end example
8003
8004 @end itemize
8005
8006 @section deshake
8007
8008 Attempt to fix small changes in horizontal and/or vertical shift. This
8009 filter helps remove camera shake from hand-holding a camera, bumping a
8010 tripod, moving on a vehicle, etc.
8011
8012 The filter accepts the following options:
8013
8014 @table @option
8015
8016 @item x
8017 @item y
8018 @item w
8019 @item h
8020 Specify a rectangular area where to limit the search for motion
8021 vectors.
8022 If desired the search for motion vectors can be limited to a
8023 rectangular area of the frame defined by its top left corner, width
8024 and height. These parameters have the same meaning as the drawbox
8025 filter which can be used to visualise the position of the bounding
8026 box.
8027
8028 This is useful when simultaneous movement of subjects within the frame
8029 might be confused for camera motion by the motion vector search.
8030
8031 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
8032 then the full frame is used. This allows later options to be set
8033 without specifying the bounding box for the motion vector search.
8034
8035 Default - search the whole frame.
8036
8037 @item rx
8038 @item ry
8039 Specify the maximum extent of movement in x and y directions in the
8040 range 0-64 pixels. Default 16.
8041
8042 @item edge
8043 Specify how to generate pixels to fill blanks at the edge of the
8044 frame. Available values are:
8045 @table @samp
8046 @item blank, 0
8047 Fill zeroes at blank locations
8048 @item original, 1
8049 Original image at blank locations
8050 @item clamp, 2
8051 Extruded edge value at blank locations
8052 @item mirror, 3
8053 Mirrored edge at blank locations
8054 @end table
8055 Default value is @samp{mirror}.
8056
8057 @item blocksize
8058 Specify the blocksize to use for motion search. Range 4-128 pixels,
8059 default 8.
8060
8061 @item contrast
8062 Specify the contrast threshold for blocks. Only blocks with more than
8063 the specified contrast (difference between darkest and lightest
8064 pixels) will be considered. Range 1-255, default 125.
8065
8066 @item search
8067 Specify the search strategy. Available values are:
8068 @table @samp
8069 @item exhaustive, 0
8070 Set exhaustive search
8071 @item less, 1
8072 Set less exhaustive search.
8073 @end table
8074 Default value is @samp{exhaustive}.
8075
8076 @item filename
8077 If set then a detailed log of the motion search is written to the
8078 specified file.
8079
8080 @end table
8081
8082 @section despill
8083
8084 Remove unwanted contamination of foreground colors, caused by reflected color of
8085 greenscreen or bluescreen.
8086
8087 This filter accepts the following options:
8088
8089 @table @option
8090 @item type
8091 Set what type of despill to use.
8092
8093 @item mix
8094 Set how spillmap will be generated.
8095
8096 @item expand
8097 Set how much to get rid of still remaining spill.
8098
8099 @item red
8100 Controls amount of red in spill area.
8101
8102 @item green
8103 Controls amount of green in spill area.
8104 Should be -1 for greenscreen.
8105
8106 @item blue
8107 Controls amount of blue in spill area.
8108 Should be -1 for bluescreen.
8109
8110 @item brightness
8111 Controls brightness of spill area, preserving colors.
8112
8113 @item alpha
8114 Modify alpha from generated spillmap.
8115 @end table
8116
8117 @section detelecine
8118
8119 Apply an exact inverse of the telecine operation. It requires a predefined
8120 pattern specified using the pattern option which must be the same as that passed
8121 to the telecine filter.
8122
8123 This filter accepts the following options:
8124
8125 @table @option
8126 @item first_field
8127 @table @samp
8128 @item top, t
8129 top field first
8130 @item bottom, b
8131 bottom field first
8132 The default value is @code{top}.
8133 @end table
8134
8135 @item pattern
8136 A string of numbers representing the pulldown pattern you wish to apply.
8137 The default value is @code{23}.
8138
8139 @item start_frame
8140 A number representing position of the first frame with respect to the telecine
8141 pattern. This is to be used if the stream is cut. The default value is @code{0}.
8142 @end table
8143
8144 @section dilation
8145
8146 Apply dilation effect to the video.
8147
8148 This filter replaces the pixel by the local(3x3) maximum.
8149
8150 It accepts the following options:
8151
8152 @table @option
8153 @item threshold0
8154 @item threshold1
8155 @item threshold2
8156 @item threshold3
8157 Limit the maximum change for each plane, default is 65535.
8158 If 0, plane will remain unchanged.
8159
8160 @item coordinates
8161 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
8162 pixels are used.
8163
8164 Flags to local 3x3 coordinates maps like this:
8165
8166     1 2 3
8167     4   5
8168     6 7 8
8169 @end table
8170
8171 @section displace
8172
8173 Displace pixels as indicated by second and third input stream.
8174
8175 It takes three input streams and outputs one stream, the first input is the
8176 source, and second and third input are displacement maps.
8177
8178 The second input specifies how much to displace pixels along the
8179 x-axis, while the third input specifies how much to displace pixels
8180 along the y-axis.
8181 If one of displacement map streams terminates, last frame from that
8182 displacement map will be used.
8183
8184 Note that once generated, displacements maps can be reused over and over again.
8185
8186 A description of the accepted options follows.
8187
8188 @table @option
8189 @item edge
8190 Set displace behavior for pixels that are out of range.
8191
8192 Available values are:
8193 @table @samp
8194 @item blank
8195 Missing pixels are replaced by black pixels.
8196
8197 @item smear
8198 Adjacent pixels will spread out to replace missing pixels.
8199
8200 @item wrap
8201 Out of range pixels are wrapped so they point to pixels of other side.
8202
8203 @item mirror
8204 Out of range pixels will be replaced with mirrored pixels.
8205 @end table
8206 Default is @samp{smear}.
8207
8208 @end table
8209
8210 @subsection Examples
8211
8212 @itemize
8213 @item
8214 Add ripple effect to rgb input of video size hd720:
8215 @example
8216 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
8217 @end example
8218
8219 @item
8220 Add wave effect to rgb input of video size hd720:
8221 @example
8222 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
8223 @end example
8224 @end itemize
8225
8226 @section drawbox
8227
8228 Draw a colored box on the input image.
8229
8230 It accepts the following parameters:
8231
8232 @table @option
8233 @item x
8234 @item y
8235 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
8236
8237 @item width, w
8238 @item height, h
8239 The expressions which specify the width and height of the box; if 0 they are interpreted as
8240 the input width and height. It defaults to 0.
8241
8242 @item color, c
8243 Specify the color of the box to write. For the general syntax of this option,
8244 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
8245 value @code{invert} is used, the box edge color is the same as the
8246 video with inverted luma.
8247
8248 @item thickness, t
8249 The expression which sets the thickness of the box edge.
8250 A value of @code{fill} will create a filled box. Default value is @code{3}.
8251
8252 See below for the list of accepted constants.
8253
8254 @item replace
8255 Applicable if the input has alpha. With value @code{1}, the pixels of the painted box
8256 will overwrite the video's color and alpha pixels.
8257 Default is @code{0}, which composites the box onto the input, leaving the video's alpha intact.
8258 @end table
8259
8260 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
8261 following constants:
8262
8263 @table @option
8264 @item dar
8265 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
8266
8267 @item hsub
8268 @item vsub
8269 horizontal and vertical chroma subsample values. For example for the
8270 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8271
8272 @item in_h, ih
8273 @item in_w, iw
8274 The input width and height.
8275
8276 @item sar
8277 The input sample aspect ratio.
8278
8279 @item x
8280 @item y
8281 The x and y offset coordinates where the box is drawn.
8282
8283 @item w
8284 @item h
8285 The width and height of the drawn box.
8286
8287 @item t
8288 The thickness of the drawn box.
8289
8290 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
8291 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
8292
8293 @end table
8294
8295 @subsection Examples
8296
8297 @itemize
8298 @item
8299 Draw a black box around the edge of the input image:
8300 @example
8301 drawbox
8302 @end example
8303
8304 @item
8305 Draw a box with color red and an opacity of 50%:
8306 @example
8307 drawbox=10:20:200:60:red@@0.5
8308 @end example
8309
8310 The previous example can be specified as:
8311 @example
8312 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
8313 @end example
8314
8315 @item
8316 Fill the box with pink color:
8317 @example
8318 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=fill
8319 @end example
8320
8321 @item
8322 Draw a 2-pixel red 2.40:1 mask:
8323 @example
8324 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
8325 @end example
8326 @end itemize
8327
8328 @section drawgrid
8329
8330 Draw a grid on the input image.
8331
8332 It accepts the following parameters:
8333
8334 @table @option
8335 @item x
8336 @item y
8337 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
8338
8339 @item width, w
8340 @item height, h
8341 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
8342 input width and height, respectively, minus @code{thickness}, so image gets
8343 framed. Default to 0.
8344
8345 @item color, c
8346 Specify the color of the grid. For the general syntax of this option,
8347 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
8348 value @code{invert} is used, the grid color is the same as the
8349 video with inverted luma.
8350
8351 @item thickness, t
8352 The expression which sets the thickness of the grid line. Default value is @code{1}.
8353
8354 See below for the list of accepted constants.
8355
8356 @item replace
8357 Applicable if the input has alpha. With @code{1} the pixels of the painted grid
8358 will overwrite the video's color and alpha pixels.
8359 Default is @code{0}, which composites the grid onto the input, leaving the video's alpha intact.
8360 @end table
8361
8362 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
8363 following constants:
8364
8365 @table @option
8366 @item dar
8367 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
8368
8369 @item hsub
8370 @item vsub
8371 horizontal and vertical chroma subsample values. For example for the
8372 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8373
8374 @item in_h, ih
8375 @item in_w, iw
8376 The input grid cell width and height.
8377
8378 @item sar
8379 The input sample aspect ratio.
8380
8381 @item x
8382 @item y
8383 The x and y coordinates of some point of grid intersection (meant to configure offset).
8384
8385 @item w
8386 @item h
8387 The width and height of the drawn cell.
8388
8389 @item t
8390 The thickness of the drawn cell.
8391
8392 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
8393 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
8394
8395 @end table
8396
8397 @subsection Examples
8398
8399 @itemize
8400 @item
8401 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
8402 @example
8403 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
8404 @end example
8405
8406 @item
8407 Draw a white 3x3 grid with an opacity of 50%:
8408 @example
8409 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
8410 @end example
8411 @end itemize
8412
8413 @anchor{drawtext}
8414 @section drawtext
8415
8416 Draw a text string or text from a specified file on top of a video, using the
8417 libfreetype library.
8418
8419 To enable compilation of this filter, you need to configure FFmpeg with
8420 @code{--enable-libfreetype}.
8421 To enable default font fallback and the @var{font} option you need to
8422 configure FFmpeg with @code{--enable-libfontconfig}.
8423 To enable the @var{text_shaping} option, you need to configure FFmpeg with
8424 @code{--enable-libfribidi}.
8425
8426 @subsection Syntax
8427
8428 It accepts the following parameters:
8429
8430 @table @option
8431
8432 @item box
8433 Used to draw a box around text using the background color.
8434 The value must be either 1 (enable) or 0 (disable).
8435 The default value of @var{box} is 0.
8436
8437 @item boxborderw
8438 Set the width of the border to be drawn around the box using @var{boxcolor}.
8439 The default value of @var{boxborderw} is 0.
8440
8441 @item boxcolor
8442 The color to be used for drawing box around text. For the syntax of this
8443 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
8444
8445 The default value of @var{boxcolor} is "white".
8446
8447 @item line_spacing
8448 Set the line spacing in pixels of the border to be drawn around the box using @var{box}.
8449 The default value of @var{line_spacing} is 0.
8450
8451 @item borderw
8452 Set the width of the border to be drawn around the text using @var{bordercolor}.
8453 The default value of @var{borderw} is 0.
8454
8455 @item bordercolor
8456 Set the color to be used for drawing border around text. For the syntax of this
8457 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
8458
8459 The default value of @var{bordercolor} is "black".
8460
8461 @item expansion
8462 Select how the @var{text} is expanded. Can be either @code{none},
8463 @code{strftime} (deprecated) or
8464 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
8465 below for details.
8466
8467 @item basetime
8468 Set a start time for the count. Value is in microseconds. Only applied
8469 in the deprecated strftime expansion mode. To emulate in normal expansion
8470 mode use the @code{pts} function, supplying the start time (in seconds)
8471 as the second argument.
8472
8473 @item fix_bounds
8474 If true, check and fix text coords to avoid clipping.
8475
8476 @item fontcolor
8477 The color to be used for drawing fonts. For the syntax of this option, check
8478 the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
8479
8480 The default value of @var{fontcolor} is "black".
8481
8482 @item fontcolor_expr
8483 String which is expanded the same way as @var{text} to obtain dynamic
8484 @var{fontcolor} value. By default this option has empty value and is not
8485 processed. When this option is set, it overrides @var{fontcolor} option.
8486
8487 @item font
8488 The font family to be used for drawing text. By default Sans.
8489
8490 @item fontfile
8491 The font file to be used for drawing text. The path must be included.
8492 This parameter is mandatory if the fontconfig support is disabled.
8493
8494 @item alpha
8495 Draw the text applying alpha blending. The value can
8496 be a number between 0.0 and 1.0.
8497 The expression accepts the same variables @var{x, y} as well.
8498 The default value is 1.
8499 Please see @var{fontcolor_expr}.
8500
8501 @item fontsize
8502 The font size to be used for drawing text.
8503 The default value of @var{fontsize} is 16.
8504
8505 @item text_shaping
8506 If set to 1, attempt to shape the text (for example, reverse the order of
8507 right-to-left text and join Arabic characters) before drawing it.
8508 Otherwise, just draw the text exactly as given.
8509 By default 1 (if supported).
8510
8511 @item ft_load_flags
8512 The flags to be used for loading the fonts.
8513
8514 The flags map the corresponding flags supported by libfreetype, and are
8515 a combination of the following values:
8516 @table @var
8517 @item default
8518 @item no_scale
8519 @item no_hinting
8520 @item render
8521 @item no_bitmap
8522 @item vertical_layout
8523 @item force_autohint
8524 @item crop_bitmap
8525 @item pedantic
8526 @item ignore_global_advance_width
8527 @item no_recurse
8528 @item ignore_transform
8529 @item monochrome
8530 @item linear_design
8531 @item no_autohint
8532 @end table
8533
8534 Default value is "default".
8535
8536 For more information consult the documentation for the FT_LOAD_*
8537 libfreetype flags.
8538
8539 @item shadowcolor
8540 The color to be used for drawing a shadow behind the drawn text. For the
8541 syntax of this option, check the @ref{color syntax,,"Color" section in the
8542 ffmpeg-utils manual,ffmpeg-utils}.
8543
8544 The default value of @var{shadowcolor} is "black".
8545
8546 @item shadowx
8547 @item shadowy
8548 The x and y offsets for the text shadow position with respect to the
8549 position of the text. They can be either positive or negative
8550 values. The default value for both is "0".
8551
8552 @item start_number
8553 The starting frame number for the n/frame_num variable. The default value
8554 is "0".
8555
8556 @item tabsize
8557 The size in number of spaces to use for rendering the tab.
8558 Default value is 4.
8559
8560 @item timecode
8561 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
8562 format. It can be used with or without text parameter. @var{timecode_rate}
8563 option must be specified.
8564
8565 @item timecode_rate, rate, r
8566 Set the timecode frame rate (timecode only). Value will be rounded to nearest
8567 integer. Minimum value is "1".
8568 Drop-frame timecode is supported for frame rates 30 & 60.
8569
8570 @item tc24hmax
8571 If set to 1, the output of the timecode option will wrap around at 24 hours.
8572 Default is 0 (disabled).
8573
8574 @item text
8575 The text string to be drawn. The text must be a sequence of UTF-8
8576 encoded characters.
8577 This parameter is mandatory if no file is specified with the parameter
8578 @var{textfile}.
8579
8580 @item textfile
8581 A text file containing text to be drawn. The text must be a sequence
8582 of UTF-8 encoded characters.
8583
8584 This parameter is mandatory if no text string is specified with the
8585 parameter @var{text}.
8586
8587 If both @var{text} and @var{textfile} are specified, an error is thrown.
8588
8589 @item reload
8590 If set to 1, the @var{textfile} will be reloaded before each frame.
8591 Be sure to update it atomically, or it may be read partially, or even fail.
8592
8593 @item x
8594 @item y
8595 The expressions which specify the offsets where text will be drawn
8596 within the video frame. They are relative to the top/left border of the
8597 output image.
8598
8599 The default value of @var{x} and @var{y} is "0".
8600
8601 See below for the list of accepted constants and functions.
8602 @end table
8603
8604 The parameters for @var{x} and @var{y} are expressions containing the
8605 following constants and functions:
8606
8607 @table @option
8608 @item dar
8609 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
8610
8611 @item hsub
8612 @item vsub
8613 horizontal and vertical chroma subsample values. For example for the
8614 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8615
8616 @item line_h, lh
8617 the height of each text line
8618
8619 @item main_h, h, H
8620 the input height
8621
8622 @item main_w, w, W
8623 the input width
8624
8625 @item max_glyph_a, ascent
8626 the maximum distance from the baseline to the highest/upper grid
8627 coordinate used to place a glyph outline point, for all the rendered
8628 glyphs.
8629 It is a positive value, due to the grid's orientation with the Y axis
8630 upwards.
8631
8632 @item max_glyph_d, descent
8633 the maximum distance from the baseline to the lowest grid coordinate
8634 used to place a glyph outline point, for all the rendered glyphs.
8635 This is a negative value, due to the grid's orientation, with the Y axis
8636 upwards.
8637
8638 @item max_glyph_h
8639 maximum glyph height, that is the maximum height for all the glyphs
8640 contained in the rendered text, it is equivalent to @var{ascent} -
8641 @var{descent}.
8642
8643 @item max_glyph_w
8644 maximum glyph width, that is the maximum width for all the glyphs
8645 contained in the rendered text
8646
8647 @item n
8648 the number of input frame, starting from 0
8649
8650 @item rand(min, max)
8651 return a random number included between @var{min} and @var{max}
8652
8653 @item sar
8654 The input sample aspect ratio.
8655
8656 @item t
8657 timestamp expressed in seconds, NAN if the input timestamp is unknown
8658
8659 @item text_h, th
8660 the height of the rendered text
8661
8662 @item text_w, tw
8663 the width of the rendered text
8664
8665 @item x
8666 @item y
8667 the x and y offset coordinates where the text is drawn.
8668
8669 These parameters allow the @var{x} and @var{y} expressions to refer
8670 each other, so you can for example specify @code{y=x/dar}.
8671 @end table
8672
8673 @anchor{drawtext_expansion}
8674 @subsection Text expansion
8675
8676 If @option{expansion} is set to @code{strftime},
8677 the filter recognizes strftime() sequences in the provided text and
8678 expands them accordingly. Check the documentation of strftime(). This
8679 feature is deprecated.
8680
8681 If @option{expansion} is set to @code{none}, the text is printed verbatim.
8682
8683 If @option{expansion} is set to @code{normal} (which is the default),
8684 the following expansion mechanism is used.
8685
8686 The backslash character @samp{\}, followed by any character, always expands to
8687 the second character.
8688
8689 Sequences of the form @code{%@{...@}} are expanded. The text between the
8690 braces is a function name, possibly followed by arguments separated by ':'.
8691 If the arguments contain special characters or delimiters (':' or '@}'),
8692 they should be escaped.
8693
8694 Note that they probably must also be escaped as the value for the
8695 @option{text} option in the filter argument string and as the filter
8696 argument in the filtergraph description, and possibly also for the shell,
8697 that makes up to four levels of escaping; using a text file avoids these
8698 problems.
8699
8700 The following functions are available:
8701
8702 @table @command
8703
8704 @item expr, e
8705 The expression evaluation result.
8706
8707 It must take one argument specifying the expression to be evaluated,
8708 which accepts the same constants and functions as the @var{x} and
8709 @var{y} values. Note that not all constants should be used, for
8710 example the text size is not known when evaluating the expression, so
8711 the constants @var{text_w} and @var{text_h} will have an undefined
8712 value.
8713
8714 @item expr_int_format, eif
8715 Evaluate the expression's value and output as formatted integer.
8716
8717 The first argument is the expression to be evaluated, just as for the @var{expr} function.
8718 The second argument specifies the output format. Allowed values are @samp{x},
8719 @samp{X}, @samp{d} and @samp{u}. They are treated exactly as in the
8720 @code{printf} function.
8721 The third parameter is optional and sets the number of positions taken by the output.
8722 It can be used to add padding with zeros from the left.
8723
8724 @item gmtime
8725 The time at which the filter is running, expressed in UTC.
8726 It can accept an argument: a strftime() format string.
8727
8728 @item localtime
8729 The time at which the filter is running, expressed in the local time zone.
8730 It can accept an argument: a strftime() format string.
8731
8732 @item metadata
8733 Frame metadata. Takes one or two arguments.
8734
8735 The first argument is mandatory and specifies the metadata key.
8736
8737 The second argument is optional and specifies a default value, used when the
8738 metadata key is not found or empty.
8739
8740 @item n, frame_num
8741 The frame number, starting from 0.
8742
8743 @item pict_type
8744 A 1 character description of the current picture type.
8745
8746 @item pts
8747 The timestamp of the current frame.
8748 It can take up to three arguments.
8749
8750 The first argument is the format of the timestamp; it defaults to @code{flt}
8751 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
8752 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
8753 @code{gmtime} stands for the timestamp of the frame formatted as UTC time;
8754 @code{localtime} stands for the timestamp of the frame formatted as
8755 local time zone time.
8756
8757 The second argument is an offset added to the timestamp.
8758
8759 If the format is set to @code{hms}, a third argument @code{24HH} may be
8760 supplied to present the hour part of the formatted timestamp in 24h format
8761 (00-23).
8762
8763 If the format is set to @code{localtime} or @code{gmtime},
8764 a third argument may be supplied: a strftime() format string.
8765 By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
8766 @end table
8767
8768 @subsection Examples
8769
8770 @itemize
8771 @item
8772 Draw "Test Text" with font FreeSerif, using the default values for the
8773 optional parameters.
8774
8775 @example
8776 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
8777 @end example
8778
8779 @item
8780 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
8781 and y=50 (counting from the top-left corner of the screen), text is
8782 yellow with a red box around it. Both the text and the box have an
8783 opacity of 20%.
8784
8785 @example
8786 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
8787           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
8788 @end example
8789
8790 Note that the double quotes are not necessary if spaces are not used
8791 within the parameter list.
8792
8793 @item
8794 Show the text at the center of the video frame:
8795 @example
8796 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
8797 @end example
8798
8799 @item
8800 Show the text at a random position, switching to a new position every 30 seconds:
8801 @example
8802 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)"
8803 @end example
8804
8805 @item
8806 Show a text line sliding from right to left in the last row of the video
8807 frame. The file @file{LONG_LINE} is assumed to contain a single line
8808 with no newlines.
8809 @example
8810 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
8811 @end example
8812
8813 @item
8814 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
8815 @example
8816 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
8817 @end example
8818
8819 @item
8820 Draw a single green letter "g", at the center of the input video.
8821 The glyph baseline is placed at half screen height.
8822 @example
8823 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
8824 @end example
8825
8826 @item
8827 Show text for 1 second every 3 seconds:
8828 @example
8829 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
8830 @end example
8831
8832 @item
8833 Use fontconfig to set the font. Note that the colons need to be escaped.
8834 @example
8835 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
8836 @end example
8837
8838 @item
8839 Print the date of a real-time encoding (see strftime(3)):
8840 @example
8841 drawtext='fontfile=FreeSans.ttf:text=%@{localtime\:%a %b %d %Y@}'
8842 @end example
8843
8844 @item
8845 Show text fading in and out (appearing/disappearing):
8846 @example
8847 #!/bin/sh
8848 DS=1.0 # display start
8849 DE=10.0 # display end
8850 FID=1.5 # fade in duration
8851 FOD=5 # fade out duration
8852 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 @}"
8853 @end example
8854
8855 @item
8856 Horizontally align multiple separate texts. Note that @option{max_glyph_a}
8857 and the @option{fontsize} value are included in the @option{y} offset.
8858 @example
8859 drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a,
8860 drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
8861 @end example
8862
8863 @end itemize
8864
8865 For more information about libfreetype, check:
8866 @url{http://www.freetype.org/}.
8867
8868 For more information about fontconfig, check:
8869 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
8870
8871 For more information about libfribidi, check:
8872 @url{http://fribidi.org/}.
8873
8874 @section edgedetect
8875
8876 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
8877
8878 The filter accepts the following options:
8879
8880 @table @option
8881 @item low
8882 @item high
8883 Set low and high threshold values used by the Canny thresholding
8884 algorithm.
8885
8886 The high threshold selects the "strong" edge pixels, which are then
8887 connected through 8-connectivity with the "weak" edge pixels selected
8888 by the low threshold.
8889
8890 @var{low} and @var{high} threshold values must be chosen in the range
8891 [0,1], and @var{low} should be lesser or equal to @var{high}.
8892
8893 Default value for @var{low} is @code{20/255}, and default value for @var{high}
8894 is @code{50/255}.
8895
8896 @item mode
8897 Define the drawing mode.
8898
8899 @table @samp
8900 @item wires
8901 Draw white/gray wires on black background.
8902
8903 @item colormix
8904 Mix the colors to create a paint/cartoon effect.
8905
8906 @item canny
8907 Apply Canny edge detector on all selected planes.
8908 @end table
8909 Default value is @var{wires}.
8910
8911 @item planes
8912 Select planes for filtering. By default all available planes are filtered.
8913 @end table
8914
8915 @subsection Examples
8916
8917 @itemize
8918 @item
8919 Standard edge detection with custom values for the hysteresis thresholding:
8920 @example
8921 edgedetect=low=0.1:high=0.4
8922 @end example
8923
8924 @item
8925 Painting effect without thresholding:
8926 @example
8927 edgedetect=mode=colormix:high=0
8928 @end example
8929 @end itemize
8930
8931 @section eq
8932 Set brightness, contrast, saturation and approximate gamma adjustment.
8933
8934 The filter accepts the following options:
8935
8936 @table @option
8937 @item contrast
8938 Set the contrast expression. The value must be a float value in range
8939 @code{-2.0} to @code{2.0}. The default value is "1".
8940
8941 @item brightness
8942 Set the brightness expression. The value must be a float value in
8943 range @code{-1.0} to @code{1.0}. The default value is "0".
8944
8945 @item saturation
8946 Set the saturation expression. The value must be a float in
8947 range @code{0.0} to @code{3.0}. The default value is "1".
8948
8949 @item gamma
8950 Set the gamma expression. The value must be a float in range
8951 @code{0.1} to @code{10.0}.  The default value is "1".
8952
8953 @item gamma_r
8954 Set the gamma expression for red. The value must be a float in
8955 range @code{0.1} to @code{10.0}. The default value is "1".
8956
8957 @item gamma_g
8958 Set the gamma expression for green. The value must be a float in range
8959 @code{0.1} to @code{10.0}. The default value is "1".
8960
8961 @item gamma_b
8962 Set the gamma expression for blue. The value must be a float in range
8963 @code{0.1} to @code{10.0}. The default value is "1".
8964
8965 @item gamma_weight
8966 Set the gamma weight expression. It can be used to reduce the effect
8967 of a high gamma value on bright image areas, e.g. keep them from
8968 getting overamplified and just plain white. The value must be a float
8969 in range @code{0.0} to @code{1.0}. A value of @code{0.0} turns the
8970 gamma correction all the way down while @code{1.0} leaves it at its
8971 full strength. Default is "1".
8972
8973 @item eval
8974 Set when the expressions for brightness, contrast, saturation and
8975 gamma expressions are evaluated.
8976
8977 It accepts the following values:
8978 @table @samp
8979 @item init
8980 only evaluate expressions once during the filter initialization or
8981 when a command is processed
8982
8983 @item frame
8984 evaluate expressions for each incoming frame
8985 @end table
8986
8987 Default value is @samp{init}.
8988 @end table
8989
8990 The expressions accept the following parameters:
8991 @table @option
8992 @item n
8993 frame count of the input frame starting from 0
8994
8995 @item pos
8996 byte position of the corresponding packet in the input file, NAN if
8997 unspecified
8998
8999 @item r
9000 frame rate of the input video, NAN if the input frame rate is unknown
9001
9002 @item t
9003 timestamp expressed in seconds, NAN if the input timestamp is unknown
9004 @end table
9005
9006 @subsection Commands
9007 The filter supports the following commands:
9008
9009 @table @option
9010 @item contrast
9011 Set the contrast expression.
9012
9013 @item brightness
9014 Set the brightness expression.
9015
9016 @item saturation
9017 Set the saturation expression.
9018
9019 @item gamma
9020 Set the gamma expression.
9021
9022 @item gamma_r
9023 Set the gamma_r expression.
9024
9025 @item gamma_g
9026 Set gamma_g expression.
9027
9028 @item gamma_b
9029 Set gamma_b expression.
9030
9031 @item gamma_weight
9032 Set gamma_weight expression.
9033
9034 The command accepts the same syntax of the corresponding option.
9035
9036 If the specified expression is not valid, it is kept at its current
9037 value.
9038
9039 @end table
9040
9041 @section erosion
9042
9043 Apply erosion effect to the video.
9044
9045 This filter replaces the pixel by the local(3x3) minimum.
9046
9047 It accepts the following options:
9048
9049 @table @option
9050 @item threshold0
9051 @item threshold1
9052 @item threshold2
9053 @item threshold3
9054 Limit the maximum change for each plane, default is 65535.
9055 If 0, plane will remain unchanged.
9056
9057 @item coordinates
9058 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
9059 pixels are used.
9060
9061 Flags to local 3x3 coordinates maps like this:
9062
9063     1 2 3
9064     4   5
9065     6 7 8
9066 @end table
9067
9068 @section extractplanes
9069
9070 Extract color channel components from input video stream into
9071 separate grayscale video streams.
9072
9073 The filter accepts the following option:
9074
9075 @table @option
9076 @item planes
9077 Set plane(s) to extract.
9078
9079 Available values for planes are:
9080 @table @samp
9081 @item y
9082 @item u
9083 @item v
9084 @item a
9085 @item r
9086 @item g
9087 @item b
9088 @end table
9089
9090 Choosing planes not available in the input will result in an error.
9091 That means you cannot select @code{r}, @code{g}, @code{b} planes
9092 with @code{y}, @code{u}, @code{v} planes at same time.
9093 @end table
9094
9095 @subsection Examples
9096
9097 @itemize
9098 @item
9099 Extract luma, u and v color channel component from input video frame
9100 into 3 grayscale outputs:
9101 @example
9102 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
9103 @end example
9104 @end itemize
9105
9106 @section elbg
9107
9108 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
9109
9110 For each input image, the filter will compute the optimal mapping from
9111 the input to the output given the codebook length, that is the number
9112 of distinct output colors.
9113
9114 This filter accepts the following options.
9115
9116 @table @option
9117 @item codebook_length, l
9118 Set codebook length. The value must be a positive integer, and
9119 represents the number of distinct output colors. Default value is 256.
9120
9121 @item nb_steps, n
9122 Set the maximum number of iterations to apply for computing the optimal
9123 mapping. The higher the value the better the result and the higher the
9124 computation time. Default value is 1.
9125
9126 @item seed, s
9127 Set a random seed, must be an integer included between 0 and
9128 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
9129 will try to use a good random seed on a best effort basis.
9130
9131 @item pal8
9132 Set pal8 output pixel format. This option does not work with codebook
9133 length greater than 256.
9134 @end table
9135
9136 @section entropy
9137
9138 Measure graylevel entropy in histogram of color channels of video frames.
9139
9140 It accepts the following parameters:
9141
9142 @table @option
9143 @item mode
9144 Can be either @var{normal} or @var{diff}. Default is @var{normal}.
9145
9146 @var{diff} mode measures entropy of histogram delta values, absolute differences
9147 between neighbour histogram values.
9148 @end table
9149
9150 @section fade
9151
9152 Apply a fade-in/out effect to the input video.
9153
9154 It accepts the following parameters:
9155
9156 @table @option
9157 @item type, t
9158 The effect type can be either "in" for a fade-in, or "out" for a fade-out
9159 effect.
9160 Default is @code{in}.
9161
9162 @item start_frame, s
9163 Specify the number of the frame to start applying the fade
9164 effect at. Default is 0.
9165
9166 @item nb_frames, n
9167 The number of frames that the fade effect lasts. At the end of the
9168 fade-in effect, the output video will have the same intensity as the input video.
9169 At the end of the fade-out transition, the output video will be filled with the
9170 selected @option{color}.
9171 Default is 25.
9172
9173 @item alpha
9174 If set to 1, fade only alpha channel, if one exists on the input.
9175 Default value is 0.
9176
9177 @item start_time, st
9178 Specify the timestamp (in seconds) of the frame to start to apply the fade
9179 effect. If both start_frame and start_time are specified, the fade will start at
9180 whichever comes last.  Default is 0.
9181
9182 @item duration, d
9183 The number of seconds for which the fade effect has to last. At the end of the
9184 fade-in effect the output video will have the same intensity as the input video,
9185 at the end of the fade-out transition the output video will be filled with the
9186 selected @option{color}.
9187 If both duration and nb_frames are specified, duration is used. Default is 0
9188 (nb_frames is used by default).
9189
9190 @item color, c
9191 Specify the color of the fade. Default is "black".
9192 @end table
9193
9194 @subsection Examples
9195
9196 @itemize
9197 @item
9198 Fade in the first 30 frames of video:
9199 @example
9200 fade=in:0:30
9201 @end example
9202
9203 The command above is equivalent to:
9204 @example
9205 fade=t=in:s=0:n=30
9206 @end example
9207
9208 @item
9209 Fade out the last 45 frames of a 200-frame video:
9210 @example
9211 fade=out:155:45
9212 fade=type=out:start_frame=155:nb_frames=45
9213 @end example
9214
9215 @item
9216 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
9217 @example
9218 fade=in:0:25, fade=out:975:25
9219 @end example
9220
9221 @item
9222 Make the first 5 frames yellow, then fade in from frame 5-24:
9223 @example
9224 fade=in:5:20:color=yellow
9225 @end example
9226
9227 @item
9228 Fade in alpha over first 25 frames of video:
9229 @example
9230 fade=in:0:25:alpha=1
9231 @end example
9232
9233 @item
9234 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
9235 @example
9236 fade=t=in:st=5.5:d=0.5
9237 @end example
9238
9239 @end itemize
9240
9241 @section fftfilt
9242 Apply arbitrary expressions to samples in frequency domain
9243
9244 @table @option
9245 @item dc_Y
9246 Adjust the dc value (gain) of the luma plane of the image. The filter
9247 accepts an integer value in range @code{0} to @code{1000}. The default
9248 value is set to @code{0}.
9249
9250 @item dc_U
9251 Adjust the dc value (gain) of the 1st chroma plane of the image. The
9252 filter accepts an integer value in range @code{0} to @code{1000}. The
9253 default value is set to @code{0}.
9254
9255 @item dc_V
9256 Adjust the dc value (gain) of the 2nd chroma plane of the image. The
9257 filter accepts an integer value in range @code{0} to @code{1000}. The
9258 default value is set to @code{0}.
9259
9260 @item weight_Y
9261 Set the frequency domain weight expression for the luma plane.
9262
9263 @item weight_U
9264 Set the frequency domain weight expression for the 1st chroma plane.
9265
9266 @item weight_V
9267 Set the frequency domain weight expression for the 2nd chroma plane.
9268
9269 @item eval
9270 Set when the expressions are evaluated.
9271
9272 It accepts the following values:
9273 @table @samp
9274 @item init
9275 Only evaluate expressions once during the filter initialization.
9276
9277 @item frame
9278 Evaluate expressions for each incoming frame.
9279 @end table
9280
9281 Default value is @samp{init}.
9282
9283 The filter accepts the following variables:
9284 @item X
9285 @item Y
9286 The coordinates of the current sample.
9287
9288 @item W
9289 @item H
9290 The width and height of the image.
9291
9292 @item N
9293 The number of input frame, starting from 0.
9294 @end table
9295
9296 @subsection Examples
9297
9298 @itemize
9299 @item
9300 High-pass:
9301 @example
9302 fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
9303 @end example
9304
9305 @item
9306 Low-pass:
9307 @example
9308 fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
9309 @end example
9310
9311 @item
9312 Sharpen:
9313 @example
9314 fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
9315 @end example
9316
9317 @item
9318 Blur:
9319 @example
9320 fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
9321 @end example
9322
9323 @end itemize
9324
9325 @section fftdnoiz
9326 Denoise frames using 3D FFT (frequency domain filtering).
9327
9328 The filter accepts the following options:
9329
9330 @table @option
9331 @item sigma
9332 Set the noise sigma constant. This sets denoising strength.
9333 Default value is 1. Allowed range is from 0 to 30.
9334 Using very high sigma with low overlap may give blocking artifacts.
9335
9336 @item amount
9337 Set amount of denoising. By default all detected noise is reduced.
9338 Default value is 1. Allowed range is from 0 to 1.
9339
9340 @item block
9341 Set size of block, Default is 4, can be 3, 4, 5 or 6.
9342 Actual size of block in pixels is 2 to power of @var{block}, so by default
9343 block size in pixels is 2^4 which is 16.
9344
9345 @item overlap
9346 Set block overlap. Default is 0.5. Allowed range is from 0.2 to 0.8.
9347
9348 @item prev
9349 Set number of previous frames to use for denoising. By default is set to 0.
9350
9351 @item next
9352 Set number of next frames to to use for denoising. By default is set to 0.
9353
9354 @item planes
9355 Set planes which will be filtered, by default are all available filtered
9356 except alpha.
9357 @end table
9358
9359 @section field
9360
9361 Extract a single field from an interlaced image using stride
9362 arithmetic to avoid wasting CPU time. The output frames are marked as
9363 non-interlaced.
9364
9365 The filter accepts the following options:
9366
9367 @table @option
9368 @item type
9369 Specify whether to extract the top (if the value is @code{0} or
9370 @code{top}) or the bottom field (if the value is @code{1} or
9371 @code{bottom}).
9372 @end table
9373
9374 @section fieldhint
9375
9376 Create new frames by copying the top and bottom fields from surrounding frames
9377 supplied as numbers by the hint file.
9378
9379 @table @option
9380 @item hint
9381 Set file containing hints: absolute/relative frame numbers.
9382
9383 There must be one line for each frame in a clip. Each line must contain two
9384 numbers separated by the comma, optionally followed by @code{-} or @code{+}.
9385 Numbers supplied on each line of file can not be out of [N-1,N+1] where N
9386 is current frame number for @code{absolute} mode or out of [-1, 1] range
9387 for @code{relative} mode. First number tells from which frame to pick up top
9388 field and second number tells from which frame to pick up bottom field.
9389
9390 If optionally followed by @code{+} output frame will be marked as interlaced,
9391 else if followed by @code{-} output frame will be marked as progressive, else
9392 it will be marked same as input frame.
9393 If line starts with @code{#} or @code{;} that line is skipped.
9394
9395 @item mode
9396 Can be item @code{absolute} or @code{relative}. Default is @code{absolute}.
9397 @end table
9398
9399 Example of first several lines of @code{hint} file for @code{relative} mode:
9400 @example
9401 0,0 - # first frame
9402 1,0 - # second frame, use third's frame top field and second's frame bottom field
9403 1,0 - # third frame, use fourth's frame top field and third's frame bottom field
9404 1,0 -
9405 0,0 -
9406 0,0 -
9407 1,0 -
9408 1,0 -
9409 1,0 -
9410 0,0 -
9411 0,0 -
9412 1,0 -
9413 1,0 -
9414 1,0 -
9415 0,0 -
9416 @end example
9417
9418 @section fieldmatch
9419
9420 Field matching filter for inverse telecine. It is meant to reconstruct the
9421 progressive frames from a telecined stream. The filter does not drop duplicated
9422 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
9423 followed by a decimation filter such as @ref{decimate} in the filtergraph.
9424
9425 The separation of the field matching and the decimation is notably motivated by
9426 the possibility of inserting a de-interlacing filter fallback between the two.
9427 If the source has mixed telecined and real interlaced content,
9428 @code{fieldmatch} will not be able to match fields for the interlaced parts.
9429 But these remaining combed frames will be marked as interlaced, and thus can be
9430 de-interlaced by a later filter such as @ref{yadif} before decimation.
9431
9432 In addition to the various configuration options, @code{fieldmatch} can take an
9433 optional second stream, activated through the @option{ppsrc} option. If
9434 enabled, the frames reconstruction will be based on the fields and frames from
9435 this second stream. This allows the first input to be pre-processed in order to
9436 help the various algorithms of the filter, while keeping the output lossless
9437 (assuming the fields are matched properly). Typically, a field-aware denoiser,
9438 or brightness/contrast adjustments can help.
9439
9440 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
9441 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
9442 which @code{fieldmatch} is based on. While the semantic and usage are very
9443 close, some behaviour and options names can differ.
9444
9445 The @ref{decimate} filter currently only works for constant frame rate input.
9446 If your input has mixed telecined (30fps) and progressive content with a lower
9447 framerate like 24fps use the following filterchain to produce the necessary cfr
9448 stream: @code{dejudder,fps=30000/1001,fieldmatch,decimate}.
9449
9450 The filter accepts the following options:
9451
9452 @table @option
9453 @item order
9454 Specify the assumed field order of the input stream. Available values are:
9455
9456 @table @samp
9457 @item auto
9458 Auto detect parity (use FFmpeg's internal parity value).
9459 @item bff
9460 Assume bottom field first.
9461 @item tff
9462 Assume top field first.
9463 @end table
9464
9465 Note that it is sometimes recommended not to trust the parity announced by the
9466 stream.
9467
9468 Default value is @var{auto}.
9469
9470 @item mode
9471 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
9472 sense that it won't risk creating jerkiness due to duplicate frames when
9473 possible, but if there are bad edits or blended fields it will end up
9474 outputting combed frames when a good match might actually exist. On the other
9475 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
9476 but will almost always find a good frame if there is one. The other values are
9477 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
9478 jerkiness and creating duplicate frames versus finding good matches in sections
9479 with bad edits, orphaned fields, blended fields, etc.
9480
9481 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
9482
9483 Available values are:
9484
9485 @table @samp
9486 @item pc
9487 2-way matching (p/c)
9488 @item pc_n
9489 2-way matching, and trying 3rd match if still combed (p/c + n)
9490 @item pc_u
9491 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
9492 @item pc_n_ub
9493 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
9494 still combed (p/c + n + u/b)
9495 @item pcn
9496 3-way matching (p/c/n)
9497 @item pcn_ub
9498 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
9499 detected as combed (p/c/n + u/b)
9500 @end table
9501
9502 The parenthesis at the end indicate the matches that would be used for that
9503 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
9504 @var{top}).
9505
9506 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
9507 the slowest.
9508
9509 Default value is @var{pc_n}.
9510
9511 @item ppsrc
9512 Mark the main input stream as a pre-processed input, and enable the secondary
9513 input stream as the clean source to pick the fields from. See the filter
9514 introduction for more details. It is similar to the @option{clip2} feature from
9515 VFM/TFM.
9516
9517 Default value is @code{0} (disabled).
9518
9519 @item field
9520 Set the field to match from. It is recommended to set this to the same value as
9521 @option{order} unless you experience matching failures with that setting. In
9522 certain circumstances changing the field that is used to match from can have a
9523 large impact on matching performance. Available values are:
9524
9525 @table @samp
9526 @item auto
9527 Automatic (same value as @option{order}).
9528 @item bottom
9529 Match from the bottom field.
9530 @item top
9531 Match from the top field.
9532 @end table
9533
9534 Default value is @var{auto}.
9535
9536 @item mchroma
9537 Set whether or not chroma is included during the match comparisons. In most
9538 cases it is recommended to leave this enabled. You should set this to @code{0}
9539 only if your clip has bad chroma problems such as heavy rainbowing or other
9540 artifacts. Setting this to @code{0} could also be used to speed things up at
9541 the cost of some accuracy.
9542
9543 Default value is @code{1}.
9544
9545 @item y0
9546 @item y1
9547 These define an exclusion band which excludes the lines between @option{y0} and
9548 @option{y1} from being included in the field matching decision. An exclusion
9549 band can be used to ignore subtitles, a logo, or other things that may
9550 interfere with the matching. @option{y0} sets the starting scan line and
9551 @option{y1} sets the ending line; all lines in between @option{y0} and
9552 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
9553 @option{y0} and @option{y1} to the same value will disable the feature.
9554 @option{y0} and @option{y1} defaults to @code{0}.
9555
9556 @item scthresh
9557 Set the scene change detection threshold as a percentage of maximum change on
9558 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
9559 detection is only relevant in case @option{combmatch}=@var{sc}.  The range for
9560 @option{scthresh} is @code{[0.0, 100.0]}.
9561
9562 Default value is @code{12.0}.
9563
9564 @item combmatch
9565 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
9566 account the combed scores of matches when deciding what match to use as the
9567 final match. Available values are:
9568
9569 @table @samp
9570 @item none
9571 No final matching based on combed scores.
9572 @item sc
9573 Combed scores are only used when a scene change is detected.
9574 @item full
9575 Use combed scores all the time.
9576 @end table
9577
9578 Default is @var{sc}.
9579
9580 @item combdbg
9581 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
9582 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
9583 Available values are:
9584
9585 @table @samp
9586 @item none
9587 No forced calculation.
9588 @item pcn
9589 Force p/c/n calculations.
9590 @item pcnub
9591 Force p/c/n/u/b calculations.
9592 @end table
9593
9594 Default value is @var{none}.
9595
9596 @item cthresh
9597 This is the area combing threshold used for combed frame detection. This
9598 essentially controls how "strong" or "visible" combing must be to be detected.
9599 Larger values mean combing must be more visible and smaller values mean combing
9600 can be less visible or strong and still be detected. Valid settings are from
9601 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
9602 be detected as combed). This is basically a pixel difference value. A good
9603 range is @code{[8, 12]}.
9604
9605 Default value is @code{9}.
9606
9607 @item chroma
9608 Sets whether or not chroma is considered in the combed frame decision.  Only
9609 disable this if your source has chroma problems (rainbowing, etc.) that are
9610 causing problems for the combed frame detection with chroma enabled. Actually,
9611 using @option{chroma}=@var{0} is usually more reliable, except for the case
9612 where there is chroma only combing in the source.
9613
9614 Default value is @code{0}.
9615
9616 @item blockx
9617 @item blocky
9618 Respectively set the x-axis and y-axis size of the window used during combed
9619 frame detection. This has to do with the size of the area in which
9620 @option{combpel} pixels are required to be detected as combed for a frame to be
9621 declared combed. See the @option{combpel} parameter description for more info.
9622 Possible values are any number that is a power of 2 starting at 4 and going up
9623 to 512.
9624
9625 Default value is @code{16}.
9626
9627 @item combpel
9628 The number of combed pixels inside any of the @option{blocky} by
9629 @option{blockx} size blocks on the frame for the frame to be detected as
9630 combed. While @option{cthresh} controls how "visible" the combing must be, this
9631 setting controls "how much" combing there must be in any localized area (a
9632 window defined by the @option{blockx} and @option{blocky} settings) on the
9633 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
9634 which point no frames will ever be detected as combed). This setting is known
9635 as @option{MI} in TFM/VFM vocabulary.
9636
9637 Default value is @code{80}.
9638 @end table
9639
9640 @anchor{p/c/n/u/b meaning}
9641 @subsection p/c/n/u/b meaning
9642
9643 @subsubsection p/c/n
9644
9645 We assume the following telecined stream:
9646
9647 @example
9648 Top fields:     1 2 2 3 4
9649 Bottom fields:  1 2 3 4 4
9650 @end example
9651
9652 The numbers correspond to the progressive frame the fields relate to. Here, the
9653 first two frames are progressive, the 3rd and 4th are combed, and so on.
9654
9655 When @code{fieldmatch} is configured to run a matching from bottom
9656 (@option{field}=@var{bottom}) this is how this input stream get transformed:
9657
9658 @example
9659 Input stream:
9660                 T     1 2 2 3 4
9661                 B     1 2 3 4 4   <-- matching reference
9662
9663 Matches:              c c n n c
9664
9665 Output stream:
9666                 T     1 2 3 4 4
9667                 B     1 2 3 4 4
9668 @end example
9669
9670 As a result of the field matching, we can see that some frames get duplicated.
9671 To perform a complete inverse telecine, you need to rely on a decimation filter
9672 after this operation. See for instance the @ref{decimate} filter.
9673
9674 The same operation now matching from top fields (@option{field}=@var{top})
9675 looks like this:
9676
9677 @example
9678 Input stream:
9679                 T     1 2 2 3 4   <-- matching reference
9680                 B     1 2 3 4 4
9681
9682 Matches:              c c p p c
9683
9684 Output stream:
9685                 T     1 2 2 3 4
9686                 B     1 2 2 3 4
9687 @end example
9688
9689 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
9690 basically, they refer to the frame and field of the opposite parity:
9691
9692 @itemize
9693 @item @var{p} matches the field of the opposite parity in the previous frame
9694 @item @var{c} matches the field of the opposite parity in the current frame
9695 @item @var{n} matches the field of the opposite parity in the next frame
9696 @end itemize
9697
9698 @subsubsection u/b
9699
9700 The @var{u} and @var{b} matching are a bit special in the sense that they match
9701 from the opposite parity flag. In the following examples, we assume that we are
9702 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
9703 'x' is placed above and below each matched fields.
9704
9705 With bottom matching (@option{field}=@var{bottom}):
9706 @example
9707 Match:           c         p           n          b          u
9708
9709                  x       x               x        x          x
9710   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
9711   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
9712                  x         x           x        x              x
9713
9714 Output frames:
9715                  2          1          2          2          2
9716                  2          2          2          1          3
9717 @end example
9718
9719 With top matching (@option{field}=@var{top}):
9720 @example
9721 Match:           c         p           n          b          u
9722
9723                  x         x           x        x              x
9724   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
9725   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
9726                  x       x               x        x          x
9727
9728 Output frames:
9729                  2          2          2          1          2
9730                  2          1          3          2          2
9731 @end example
9732
9733 @subsection Examples
9734
9735 Simple IVTC of a top field first telecined stream:
9736 @example
9737 fieldmatch=order=tff:combmatch=none, decimate
9738 @end example
9739
9740 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
9741 @example
9742 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
9743 @end example
9744
9745 @section fieldorder
9746
9747 Transform the field order of the input video.
9748
9749 It accepts the following parameters:
9750
9751 @table @option
9752
9753 @item order
9754 The output field order. Valid values are @var{tff} for top field first or @var{bff}
9755 for bottom field first.
9756 @end table
9757
9758 The default value is @samp{tff}.
9759
9760 The transformation is done by shifting the picture content up or down
9761 by one line, and filling the remaining line with appropriate picture content.
9762 This method is consistent with most broadcast field order converters.
9763
9764 If the input video is not flagged as being interlaced, or it is already
9765 flagged as being of the required output field order, then this filter does
9766 not alter the incoming video.
9767
9768 It is very useful when converting to or from PAL DV material,
9769 which is bottom field first.
9770
9771 For example:
9772 @example
9773 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
9774 @end example
9775
9776 @section fifo, afifo
9777
9778 Buffer input images and send them when they are requested.
9779
9780 It is mainly useful when auto-inserted by the libavfilter
9781 framework.
9782
9783 It does not take parameters.
9784
9785 @section fillborders
9786
9787 Fill borders of the input video, without changing video stream dimensions.
9788 Sometimes video can have garbage at the four edges and you may not want to
9789 crop video input to keep size multiple of some number.
9790
9791 This filter accepts the following options:
9792
9793 @table @option
9794 @item left
9795 Number of pixels to fill from left border.
9796
9797 @item right
9798 Number of pixels to fill from right border.
9799
9800 @item top
9801 Number of pixels to fill from top border.
9802
9803 @item bottom
9804 Number of pixels to fill from bottom border.
9805
9806 @item mode
9807 Set fill mode.
9808
9809 It accepts the following values:
9810 @table @samp
9811 @item smear
9812 fill pixels using outermost pixels
9813
9814 @item mirror
9815 fill pixels using mirroring
9816
9817 @item fixed
9818 fill pixels with constant value
9819 @end table
9820
9821 Default is @var{smear}.
9822
9823 @item color
9824 Set color for pixels in fixed mode. Default is @var{black}.
9825 @end table
9826
9827 @section find_rect
9828
9829 Find a rectangular object
9830
9831 It accepts the following options:
9832
9833 @table @option
9834 @item object
9835 Filepath of the object image, needs to be in gray8.
9836
9837 @item threshold
9838 Detection threshold, default is 0.5.
9839
9840 @item mipmaps
9841 Number of mipmaps, default is 3.
9842
9843 @item xmin, ymin, xmax, ymax
9844 Specifies the rectangle in which to search.
9845 @end table
9846
9847 @subsection Examples
9848
9849 @itemize
9850 @item
9851 Generate a representative palette of a given video using @command{ffmpeg}:
9852 @example
9853 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
9854 @end example
9855 @end itemize
9856
9857 @section cover_rect
9858
9859 Cover a rectangular object
9860
9861 It accepts the following options:
9862
9863 @table @option
9864 @item cover
9865 Filepath of the optional cover image, needs to be in yuv420.
9866
9867 @item mode
9868 Set covering mode.
9869
9870 It accepts the following values:
9871 @table @samp
9872 @item cover
9873 cover it by the supplied image
9874 @item blur
9875 cover it by interpolating the surrounding pixels
9876 @end table
9877
9878 Default value is @var{blur}.
9879 @end table
9880
9881 @subsection Examples
9882
9883 @itemize
9884 @item
9885 Generate a representative palette of a given video using @command{ffmpeg}:
9886 @example
9887 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
9888 @end example
9889 @end itemize
9890
9891 @section floodfill
9892
9893 Flood area with values of same pixel components with another values.
9894
9895 It accepts the following options:
9896 @table @option
9897 @item x
9898 Set pixel x coordinate.
9899
9900 @item y
9901 Set pixel y coordinate.
9902
9903 @item s0
9904 Set source #0 component value.
9905
9906 @item s1
9907 Set source #1 component value.
9908
9909 @item s2
9910 Set source #2 component value.
9911
9912 @item s3
9913 Set source #3 component value.
9914
9915 @item d0
9916 Set destination #0 component value.
9917
9918 @item d1
9919 Set destination #1 component value.
9920
9921 @item d2
9922 Set destination #2 component value.
9923
9924 @item d3
9925 Set destination #3 component value.
9926 @end table
9927
9928 @anchor{format}
9929 @section format
9930
9931 Convert the input video to one of the specified pixel formats.
9932 Libavfilter will try to pick one that is suitable as input to
9933 the next filter.
9934
9935 It accepts the following parameters:
9936 @table @option
9937
9938 @item pix_fmts
9939 A '|'-separated list of pixel format names, such as
9940 "pix_fmts=yuv420p|monow|rgb24".
9941
9942 @end table
9943
9944 @subsection Examples
9945
9946 @itemize
9947 @item
9948 Convert the input video to the @var{yuv420p} format
9949 @example
9950 format=pix_fmts=yuv420p
9951 @end example
9952
9953 Convert the input video to any of the formats in the list
9954 @example
9955 format=pix_fmts=yuv420p|yuv444p|yuv410p
9956 @end example
9957 @end itemize
9958
9959 @anchor{fps}
9960 @section fps
9961
9962 Convert the video to specified constant frame rate by duplicating or dropping
9963 frames as necessary.
9964
9965 It accepts the following parameters:
9966 @table @option
9967
9968 @item fps
9969 The desired output frame rate. The default is @code{25}.
9970
9971 @item start_time
9972 Assume the first PTS should be the given value, in seconds. This allows for
9973 padding/trimming at the start of stream. By default, no assumption is made
9974 about the first frame's expected PTS, so no padding or trimming is done.
9975 For example, this could be set to 0 to pad the beginning with duplicates of
9976 the first frame if a video stream starts after the audio stream or to trim any
9977 frames with a negative PTS.
9978
9979 @item round
9980 Timestamp (PTS) rounding method.
9981
9982 Possible values are:
9983 @table @option
9984 @item zero
9985 round towards 0
9986 @item inf
9987 round away from 0
9988 @item down
9989 round towards -infinity
9990 @item up
9991 round towards +infinity
9992 @item near
9993 round to nearest
9994 @end table
9995 The default is @code{near}.
9996
9997 @item eof_action
9998 Action performed when reading the last frame.
9999
10000 Possible values are:
10001 @table @option
10002 @item round
10003 Use same timestamp rounding method as used for other frames.
10004 @item pass
10005 Pass through last frame if input duration has not been reached yet.
10006 @end table
10007 The default is @code{round}.
10008
10009 @end table
10010
10011 Alternatively, the options can be specified as a flat string:
10012 @var{fps}[:@var{start_time}[:@var{round}]].
10013
10014 See also the @ref{setpts} filter.
10015
10016 @subsection Examples
10017
10018 @itemize
10019 @item
10020 A typical usage in order to set the fps to 25:
10021 @example
10022 fps=fps=25
10023 @end example
10024
10025 @item
10026 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
10027 @example
10028 fps=fps=film:round=near
10029 @end example
10030 @end itemize
10031
10032 @section framepack
10033
10034 Pack two different video streams into a stereoscopic video, setting proper
10035 metadata on supported codecs. The two views should have the same size and
10036 framerate and processing will stop when the shorter video ends. Please note
10037 that you may conveniently adjust view properties with the @ref{scale} and
10038 @ref{fps} filters.
10039
10040 It accepts the following parameters:
10041 @table @option
10042
10043 @item format
10044 The desired packing format. Supported values are:
10045
10046 @table @option
10047
10048 @item sbs
10049 The views are next to each other (default).
10050
10051 @item tab
10052 The views are on top of each other.
10053
10054 @item lines
10055 The views are packed by line.
10056
10057 @item columns
10058 The views are packed by column.
10059
10060 @item frameseq
10061 The views are temporally interleaved.
10062
10063 @end table
10064
10065 @end table
10066
10067 Some examples:
10068
10069 @example
10070 # Convert left and right views into a frame-sequential video
10071 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
10072
10073 # Convert views into a side-by-side video with the same output resolution as the input
10074 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
10075 @end example
10076
10077 @section framerate
10078
10079 Change the frame rate by interpolating new video output frames from the source
10080 frames.
10081
10082 This filter is not designed to function correctly with interlaced media. If
10083 you wish to change the frame rate of interlaced media then you are required
10084 to deinterlace before this filter and re-interlace after this filter.
10085
10086 A description of the accepted options follows.
10087
10088 @table @option
10089 @item fps
10090 Specify the output frames per second. This option can also be specified
10091 as a value alone. The default is @code{50}.
10092
10093 @item interp_start
10094 Specify the start of a range where the output frame will be created as a
10095 linear interpolation of two frames. The range is [@code{0}-@code{255}],
10096 the default is @code{15}.
10097
10098 @item interp_end
10099 Specify the end of a range where the output frame will be created as a
10100 linear interpolation of two frames. The range is [@code{0}-@code{255}],
10101 the default is @code{240}.
10102
10103 @item scene
10104 Specify the level at which a scene change is detected as a value between
10105 0 and 100 to indicate a new scene; a low value reflects a low
10106 probability for the current frame to introduce a new scene, while a higher
10107 value means the current frame is more likely to be one.
10108 The default is @code{8.2}.
10109
10110 @item flags
10111 Specify flags influencing the filter process.
10112
10113 Available value for @var{flags} is:
10114
10115 @table @option
10116 @item scene_change_detect, scd
10117 Enable scene change detection using the value of the option @var{scene}.
10118 This flag is enabled by default.
10119 @end table
10120 @end table
10121
10122 @section framestep
10123
10124 Select one frame every N-th frame.
10125
10126 This filter accepts the following option:
10127 @table @option
10128 @item step
10129 Select frame after every @code{step} frames.
10130 Allowed values are positive integers higher than 0. Default value is @code{1}.
10131 @end table
10132
10133 @section freezedetect
10134
10135 Detect frozen video.
10136
10137 This filter logs a message and sets frame metadata when it detects that the
10138 input video has no significant change in content during a specified duration.
10139 Video freeze detection calculates the mean average absolute difference of all
10140 the components of video frames and compares it to a noise floor.
10141
10142 The printed times and duration are expressed in seconds. The
10143 @code{lavfi.freezedetect.freeze_start} metadata key is set on the first frame
10144 whose timestamp equals or exceeds the detection duration and it contains the
10145 timestamp of the first frame of the freeze. The
10146 @code{lavfi.freezedetect.freeze_duration} and
10147 @code{lavfi.freezedetect.freeze_end} metadata keys are set on the first frame
10148 after the freeze.
10149
10150 The filter accepts the following options:
10151
10152 @table @option
10153 @item noise, n
10154 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
10155 specified value) or as a difference ratio between 0 and 1. Default is -60dB, or
10156 0.001.
10157
10158 @item duration, d
10159 Set freeze duration until notification (default is 2 seconds).
10160 @end table
10161
10162 @anchor{frei0r}
10163 @section frei0r
10164
10165 Apply a frei0r effect to the input video.
10166
10167 To enable the compilation of this filter, you need to install the frei0r
10168 header and configure FFmpeg with @code{--enable-frei0r}.
10169
10170 It accepts the following parameters:
10171
10172 @table @option
10173
10174 @item filter_name
10175 The name of the frei0r effect to load. If the environment variable
10176 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
10177 directories specified by the colon-separated list in @env{FREI0R_PATH}.
10178 Otherwise, the standard frei0r paths are searched, in this order:
10179 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
10180 @file{/usr/lib/frei0r-1/}.
10181
10182 @item filter_params
10183 A '|'-separated list of parameters to pass to the frei0r effect.
10184
10185 @end table
10186
10187 A frei0r effect parameter can be a boolean (its value is either
10188 "y" or "n"), a double, a color (specified as
10189 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
10190 numbers between 0.0 and 1.0, inclusive) or a color description as specified in the
10191 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils},
10192 a position (specified as @var{X}/@var{Y}, where
10193 @var{X} and @var{Y} are floating point numbers) and/or a string.
10194
10195 The number and types of parameters depend on the loaded effect. If an
10196 effect parameter is not specified, the default value is set.
10197
10198 @subsection Examples
10199
10200 @itemize
10201 @item
10202 Apply the distort0r effect, setting the first two double parameters:
10203 @example
10204 frei0r=filter_name=distort0r:filter_params=0.5|0.01
10205 @end example
10206
10207 @item
10208 Apply the colordistance effect, taking a color as the first parameter:
10209 @example
10210 frei0r=colordistance:0.2/0.3/0.4
10211 frei0r=colordistance:violet
10212 frei0r=colordistance:0x112233
10213 @end example
10214
10215 @item
10216 Apply the perspective effect, specifying the top left and top right image
10217 positions:
10218 @example
10219 frei0r=perspective:0.2/0.2|0.8/0.2
10220 @end example
10221 @end itemize
10222
10223 For more information, see
10224 @url{http://frei0r.dyne.org}
10225
10226 @section fspp
10227
10228 Apply fast and simple postprocessing. It is a faster version of @ref{spp}.
10229
10230 It splits (I)DCT into horizontal/vertical passes. Unlike the simple post-
10231 processing filter, one of them is performed once per block, not per pixel.
10232 This allows for much higher speed.
10233
10234 The filter accepts the following options:
10235
10236 @table @option
10237 @item quality
10238 Set quality. This option defines the number of levels for averaging. It accepts
10239 an integer in the range 4-5. Default value is @code{4}.
10240
10241 @item qp
10242 Force a constant quantization parameter. It accepts an integer in range 0-63.
10243 If not set, the filter will use the QP from the video stream (if available).
10244
10245 @item strength
10246 Set filter strength. It accepts an integer in range -15 to 32. Lower values mean
10247 more details but also more artifacts, while higher values make the image smoother
10248 but also blurrier. Default value is @code{0} âˆ’ PSNR optimal.
10249
10250 @item use_bframe_qp
10251 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
10252 option may cause flicker since the B-Frames have often larger QP. Default is
10253 @code{0} (not enabled).
10254
10255 @end table
10256
10257 @section gblur
10258
10259 Apply Gaussian blur filter.
10260
10261 The filter accepts the following options:
10262
10263 @table @option
10264 @item sigma
10265 Set horizontal sigma, standard deviation of Gaussian blur. Default is @code{0.5}.
10266
10267 @item steps
10268 Set number of steps for Gaussian approximation. Default is @code{1}.
10269
10270 @item planes
10271 Set which planes to filter. By default all planes are filtered.
10272
10273 @item sigmaV
10274 Set vertical sigma, if negative it will be same as @code{sigma}.
10275 Default is @code{-1}.
10276 @end table
10277
10278 @section geq
10279
10280 Apply generic equation to each pixel.
10281
10282 The filter accepts the following options:
10283
10284 @table @option
10285 @item lum_expr, lum
10286 Set the luminance expression.
10287 @item cb_expr, cb
10288 Set the chrominance blue expression.
10289 @item cr_expr, cr
10290 Set the chrominance red expression.
10291 @item alpha_expr, a
10292 Set the alpha expression.
10293 @item red_expr, r
10294 Set the red expression.
10295 @item green_expr, g
10296 Set the green expression.
10297 @item blue_expr, b
10298 Set the blue expression.
10299 @end table
10300
10301 The colorspace is selected according to the specified options. If one
10302 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
10303 options is specified, the filter will automatically select a YCbCr
10304 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
10305 @option{blue_expr} options is specified, it will select an RGB
10306 colorspace.
10307
10308 If one of the chrominance expression is not defined, it falls back on the other
10309 one. If no alpha expression is specified it will evaluate to opaque value.
10310 If none of chrominance expressions are specified, they will evaluate
10311 to the luminance expression.
10312
10313 The expressions can use the following variables and functions:
10314
10315 @table @option
10316 @item N
10317 The sequential number of the filtered frame, starting from @code{0}.
10318
10319 @item X
10320 @item Y
10321 The coordinates of the current sample.
10322
10323 @item W
10324 @item H
10325 The width and height of the image.
10326
10327 @item SW
10328 @item SH
10329 Width and height scale depending on the currently filtered plane. It is the
10330 ratio between the corresponding luma plane number of pixels and the current
10331 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
10332 @code{0.5,0.5} for chroma planes.
10333
10334 @item T
10335 Time of the current frame, expressed in seconds.
10336
10337 @item p(x, y)
10338 Return the value of the pixel at location (@var{x},@var{y}) of the current
10339 plane.
10340
10341 @item lum(x, y)
10342 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
10343 plane.
10344
10345 @item cb(x, y)
10346 Return the value of the pixel at location (@var{x},@var{y}) of the
10347 blue-difference chroma plane. Return 0 if there is no such plane.
10348
10349 @item cr(x, y)
10350 Return the value of the pixel at location (@var{x},@var{y}) of the
10351 red-difference chroma plane. Return 0 if there is no such plane.
10352
10353 @item r(x, y)
10354 @item g(x, y)
10355 @item b(x, y)
10356 Return the value of the pixel at location (@var{x},@var{y}) of the
10357 red/green/blue component. Return 0 if there is no such component.
10358
10359 @item alpha(x, y)
10360 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
10361 plane. Return 0 if there is no such plane.
10362 @end table
10363
10364 For functions, if @var{x} and @var{y} are outside the area, the value will be
10365 automatically clipped to the closer edge.
10366
10367 @subsection Examples
10368
10369 @itemize
10370 @item
10371 Flip the image horizontally:
10372 @example
10373 geq=p(W-X\,Y)
10374 @end example
10375
10376 @item
10377 Generate a bidimensional sine wave, with angle @code{PI/3} and a
10378 wavelength of 100 pixels:
10379 @example
10380 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
10381 @end example
10382
10383 @item
10384 Generate a fancy enigmatic moving light:
10385 @example
10386 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
10387 @end example
10388
10389 @item
10390 Generate a quick emboss effect:
10391 @example
10392 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
10393 @end example
10394
10395 @item
10396 Modify RGB components depending on pixel position:
10397 @example
10398 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
10399 @end example
10400
10401 @item
10402 Create a radial gradient that is the same size as the input (also see
10403 the @ref{vignette} filter):
10404 @example
10405 geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
10406 @end example
10407 @end itemize
10408
10409 @section gradfun
10410
10411 Fix the banding artifacts that are sometimes introduced into nearly flat
10412 regions by truncation to 8-bit color depth.
10413 Interpolate the gradients that should go where the bands are, and
10414 dither them.
10415
10416 It is designed for playback only.  Do not use it prior to
10417 lossy compression, because compression tends to lose the dither and
10418 bring back the bands.
10419
10420 It accepts the following parameters:
10421
10422 @table @option
10423
10424 @item strength
10425 The maximum amount by which the filter will change any one pixel. This is also
10426 the threshold for detecting nearly flat regions. Acceptable values range from
10427 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
10428 valid range.
10429
10430 @item radius
10431 The neighborhood to fit the gradient to. A larger radius makes for smoother
10432 gradients, but also prevents the filter from modifying the pixels near detailed
10433 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
10434 values will be clipped to the valid range.
10435
10436 @end table
10437
10438 Alternatively, the options can be specified as a flat string:
10439 @var{strength}[:@var{radius}]
10440
10441 @subsection Examples
10442
10443 @itemize
10444 @item
10445 Apply the filter with a @code{3.5} strength and radius of @code{8}:
10446 @example
10447 gradfun=3.5:8
10448 @end example
10449
10450 @item
10451 Specify radius, omitting the strength (which will fall-back to the default
10452 value):
10453 @example
10454 gradfun=radius=8
10455 @end example
10456
10457 @end itemize
10458
10459 @section graphmonitor, agraphmonitor
10460 Show various filtergraph stats.
10461
10462 With this filter one can debug complete filtergraph.
10463 Especially issues with links filling with queued frames.
10464
10465 The filter accepts the following options:
10466
10467 @table @option
10468 @item size, s
10469 Set video output size. Default is @var{hd720}.
10470
10471 @item opacity, o
10472 Set video opacity. Default is @var{0.9}. Allowed range is from @var{0} to @var{1}.
10473
10474 @item mode, m
10475 Set output mode, can be @var{fulll} or @var{compact}.
10476 In @var{compact} mode only filters with some queued frames have displayed stats.
10477
10478 @item flags, f
10479 Set flags which enable which stats are shown in video.
10480
10481 Available values for flags are:
10482 @table @samp
10483 @item queue
10484 Display number of queued frames in each link.
10485
10486 @item frame_count_in
10487 Display number of frames taken from filter.
10488
10489 @item frame_count_out
10490 Display number of frames given out from filter.
10491
10492 @item pts
10493 Display current filtered frame pts.
10494
10495 @item time
10496 Display current filtered frame time.
10497
10498 @item timebase
10499 Display time base for filter link.
10500
10501 @item format
10502 Display used format for filter link.
10503
10504 @item size
10505 Display video size or number of audio channels in case of audio used by filter link.
10506
10507 @item rate
10508 Display video frame rate or sample rate in case of audio used by filter link.
10509 @end table
10510
10511 @item rate, r
10512 Set upper limit for video rate of output stream, Default value is @var{25}.
10513 This guarantee that output video frame rate will not be higher than this value.
10514 @end table
10515
10516 @section greyedge
10517 A color constancy variation filter which estimates scene illumination via grey edge algorithm
10518 and corrects the scene colors accordingly.
10519
10520 See: @url{https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf}
10521
10522 The filter accepts the following options:
10523
10524 @table @option
10525 @item difford
10526 The order of differentiation to be applied on the scene. Must be chosen in the range
10527 [0,2] and default value is 1.
10528
10529 @item minknorm
10530 The Minkowski parameter to be used for calculating the Minkowski distance. Must
10531 be chosen in the range [0,20] and default value is 1. Set to 0 for getting
10532 max value instead of calculating Minkowski distance.
10533
10534 @item sigma
10535 The standard deviation of Gaussian blur to be applied on the scene. Must be
10536 chosen in the range [0,1024.0] and default value = 1. floor( @var{sigma} * break_off_sigma(3) )
10537 can't be equal to 0 if @var{difford} is greater than 0.
10538 @end table
10539
10540 @subsection Examples
10541 @itemize
10542
10543 @item
10544 Grey Edge:
10545 @example
10546 greyedge=difford=1:minknorm=5:sigma=2
10547 @end example
10548
10549 @item
10550 Max Edge:
10551 @example
10552 greyedge=difford=1:minknorm=0:sigma=2
10553 @end example
10554
10555 @end itemize
10556
10557 @anchor{haldclut}
10558 @section haldclut
10559
10560 Apply a Hald CLUT to a video stream.
10561
10562 First input is the video stream to process, and second one is the Hald CLUT.
10563 The Hald CLUT input can be a simple picture or a complete video stream.
10564
10565 The filter accepts the following options:
10566
10567 @table @option
10568 @item shortest
10569 Force termination when the shortest input terminates. Default is @code{0}.
10570 @item repeatlast
10571 Continue applying the last CLUT after the end of the stream. A value of
10572 @code{0} disable the filter after the last frame of the CLUT is reached.
10573 Default is @code{1}.
10574 @end table
10575
10576 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
10577 filters share the same internals).
10578
10579 More information about the Hald CLUT can be found on Eskil Steenberg's website
10580 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
10581
10582 @subsection Workflow examples
10583
10584 @subsubsection Hald CLUT video stream
10585
10586 Generate an identity Hald CLUT stream altered with various effects:
10587 @example
10588 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
10589 @end example
10590
10591 Note: make sure you use a lossless codec.
10592
10593 Then use it with @code{haldclut} to apply it on some random stream:
10594 @example
10595 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
10596 @end example
10597
10598 The Hald CLUT will be applied to the 10 first seconds (duration of
10599 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
10600 to the remaining frames of the @code{mandelbrot} stream.
10601
10602 @subsubsection Hald CLUT with preview
10603
10604 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
10605 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
10606 biggest possible square starting at the top left of the picture. The remaining
10607 padding pixels (bottom or right) will be ignored. This area can be used to add
10608 a preview of the Hald CLUT.
10609
10610 Typically, the following generated Hald CLUT will be supported by the
10611 @code{haldclut} filter:
10612
10613 @example
10614 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
10615    pad=iw+320 [padded_clut];
10616    smptebars=s=320x256, split [a][b];
10617    [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
10618    [main][b] overlay=W-320" -frames:v 1 clut.png
10619 @end example
10620
10621 It contains the original and a preview of the effect of the CLUT: SMPTE color
10622 bars are displayed on the right-top, and below the same color bars processed by
10623 the color changes.
10624
10625 Then, the effect of this Hald CLUT can be visualized with:
10626 @example
10627 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
10628 @end example
10629
10630 @section hflip
10631
10632 Flip the input video horizontally.
10633
10634 For example, to horizontally flip the input video with @command{ffmpeg}:
10635 @example
10636 ffmpeg -i in.avi -vf "hflip" out.avi
10637 @end example
10638
10639 @section histeq
10640 This filter applies a global color histogram equalization on a
10641 per-frame basis.
10642
10643 It can be used to correct video that has a compressed range of pixel
10644 intensities.  The filter redistributes the pixel intensities to
10645 equalize their distribution across the intensity range. It may be
10646 viewed as an "automatically adjusting contrast filter". This filter is
10647 useful only for correcting degraded or poorly captured source
10648 video.
10649
10650 The filter accepts the following options:
10651
10652 @table @option
10653 @item strength
10654 Determine the amount of equalization to be applied.  As the strength
10655 is reduced, the distribution of pixel intensities more-and-more
10656 approaches that of the input frame. The value must be a float number
10657 in the range [0,1] and defaults to 0.200.
10658
10659 @item intensity
10660 Set the maximum intensity that can generated and scale the output
10661 values appropriately.  The strength should be set as desired and then
10662 the intensity can be limited if needed to avoid washing-out. The value
10663 must be a float number in the range [0,1] and defaults to 0.210.
10664
10665 @item antibanding
10666 Set the antibanding level. If enabled the filter will randomly vary
10667 the luminance of output pixels by a small amount to avoid banding of
10668 the histogram. Possible values are @code{none}, @code{weak} or
10669 @code{strong}. It defaults to @code{none}.
10670 @end table
10671
10672 @section histogram
10673
10674 Compute and draw a color distribution histogram for the input video.
10675
10676 The computed histogram is a representation of the color component
10677 distribution in an image.
10678
10679 Standard histogram displays the color components distribution in an image.
10680 Displays color graph for each color component. Shows distribution of
10681 the Y, U, V, A or R, G, B components, depending on input format, in the
10682 current frame. Below each graph a color component scale meter is shown.
10683
10684 The filter accepts the following options:
10685
10686 @table @option
10687 @item level_height
10688 Set height of level. Default value is @code{200}.
10689 Allowed range is [50, 2048].
10690
10691 @item scale_height
10692 Set height of color scale. Default value is @code{12}.
10693 Allowed range is [0, 40].
10694
10695 @item display_mode
10696 Set display mode.
10697 It accepts the following values:
10698 @table @samp
10699 @item stack
10700 Per color component graphs are placed below each other.
10701
10702 @item parade
10703 Per color component graphs are placed side by side.
10704
10705 @item overlay
10706 Presents information identical to that in the @code{parade}, except
10707 that the graphs representing color components are superimposed directly
10708 over one another.
10709 @end table
10710 Default is @code{stack}.
10711
10712 @item levels_mode
10713 Set mode. Can be either @code{linear}, or @code{logarithmic}.
10714 Default is @code{linear}.
10715
10716 @item components
10717 Set what color components to display.
10718 Default is @code{7}.
10719
10720 @item fgopacity
10721 Set foreground opacity. Default is @code{0.7}.
10722
10723 @item bgopacity
10724 Set background opacity. Default is @code{0.5}.
10725 @end table
10726
10727 @subsection Examples
10728
10729 @itemize
10730
10731 @item
10732 Calculate and draw histogram:
10733 @example
10734 ffplay -i input -vf histogram
10735 @end example
10736
10737 @end itemize
10738
10739 @anchor{hqdn3d}
10740 @section hqdn3d
10741
10742 This is a high precision/quality 3d denoise filter. It aims to reduce
10743 image noise, producing smooth images and making still images really
10744 still. It should enhance compressibility.
10745
10746 It accepts the following optional parameters:
10747
10748 @table @option
10749 @item luma_spatial
10750 A non-negative floating point number which specifies spatial luma strength.
10751 It defaults to 4.0.
10752
10753 @item chroma_spatial
10754 A non-negative floating point number which specifies spatial chroma strength.
10755 It defaults to 3.0*@var{luma_spatial}/4.0.
10756
10757 @item luma_tmp
10758 A floating point number which specifies luma temporal strength. It defaults to
10759 6.0*@var{luma_spatial}/4.0.
10760
10761 @item chroma_tmp
10762 A floating point number which specifies chroma temporal strength. It defaults to
10763 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
10764 @end table
10765
10766 @anchor{hwdownload}
10767 @section hwdownload
10768
10769 Download hardware frames to system memory.
10770
10771 The input must be in hardware frames, and the output a non-hardware format.
10772 Not all formats will be supported on the output - it may be necessary to insert
10773 an additional @option{format} filter immediately following in the graph to get
10774 the output in a supported format.
10775
10776 @section hwmap
10777
10778 Map hardware frames to system memory or to another device.
10779
10780 This filter has several different modes of operation; which one is used depends
10781 on the input and output formats:
10782 @itemize
10783 @item
10784 Hardware frame input, normal frame output
10785
10786 Map the input frames to system memory and pass them to the output.  If the
10787 original hardware frame is later required (for example, after overlaying
10788 something else on part of it), the @option{hwmap} filter can be used again
10789 in the next mode to retrieve it.
10790 @item
10791 Normal frame input, hardware frame output
10792
10793 If the input is actually a software-mapped hardware frame, then unmap it -
10794 that is, return the original hardware frame.
10795
10796 Otherwise, a device must be provided.  Create new hardware surfaces on that
10797 device for the output, then map them back to the software format at the input
10798 and give those frames to the preceding filter.  This will then act like the
10799 @option{hwupload} filter, but may be able to avoid an additional copy when
10800 the input is already in a compatible format.
10801 @item
10802 Hardware frame input and output
10803
10804 A device must be supplied for the output, either directly or with the
10805 @option{derive_device} option.  The input and output devices must be of
10806 different types and compatible - the exact meaning of this is
10807 system-dependent, but typically it means that they must refer to the same
10808 underlying hardware context (for example, refer to the same graphics card).
10809
10810 If the input frames were originally created on the output device, then unmap
10811 to retrieve the original frames.
10812
10813 Otherwise, map the frames to the output device - create new hardware frames
10814 on the output corresponding to the frames on the input.
10815 @end itemize
10816
10817 The following additional parameters are accepted:
10818
10819 @table @option
10820 @item mode
10821 Set the frame mapping mode.  Some combination of:
10822 @table @var
10823 @item read
10824 The mapped frame should be readable.
10825 @item write
10826 The mapped frame should be writeable.
10827 @item overwrite
10828 The mapping will always overwrite the entire frame.
10829
10830 This may improve performance in some cases, as the original contents of the
10831 frame need not be loaded.
10832 @item direct
10833 The mapping must not involve any copying.
10834
10835 Indirect mappings to copies of frames are created in some cases where either
10836 direct mapping is not possible or it would have unexpected properties.
10837 Setting this flag ensures that the mapping is direct and will fail if that is
10838 not possible.
10839 @end table
10840 Defaults to @var{read+write} if not specified.
10841
10842 @item derive_device @var{type}
10843 Rather than using the device supplied at initialisation, instead derive a new
10844 device of type @var{type} from the device the input frames exist on.
10845
10846 @item reverse
10847 In a hardware to hardware mapping, map in reverse - create frames in the sink
10848 and map them back to the source.  This may be necessary in some cases where
10849 a mapping in one direction is required but only the opposite direction is
10850 supported by the devices being used.
10851
10852 This option is dangerous - it may break the preceding filter in undefined
10853 ways if there are any additional constraints on that filter's output.
10854 Do not use it without fully understanding the implications of its use.
10855 @end table
10856
10857 @anchor{hwupload}
10858 @section hwupload
10859
10860 Upload system memory frames to hardware surfaces.
10861
10862 The device to upload to must be supplied when the filter is initialised.  If
10863 using ffmpeg, select the appropriate device with the @option{-filter_hw_device}
10864 option.
10865
10866 @anchor{hwupload_cuda}
10867 @section hwupload_cuda
10868
10869 Upload system memory frames to a CUDA device.
10870
10871 It accepts the following optional parameters:
10872
10873 @table @option
10874 @item device
10875 The number of the CUDA device to use
10876 @end table
10877
10878 @section hqx
10879
10880 Apply a high-quality magnification filter designed for pixel art. This filter
10881 was originally created by Maxim Stepin.
10882
10883 It accepts the following option:
10884
10885 @table @option
10886 @item n
10887 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
10888 @code{hq3x} and @code{4} for @code{hq4x}.
10889 Default is @code{3}.
10890 @end table
10891
10892 @section hstack
10893 Stack input videos horizontally.
10894
10895 All streams must be of same pixel format and of same height.
10896
10897 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
10898 to create same output.
10899
10900 The filter accept the following option:
10901
10902 @table @option
10903 @item inputs
10904 Set number of input streams. Default is 2.
10905
10906 @item shortest
10907 If set to 1, force the output to terminate when the shortest input
10908 terminates. Default value is 0.
10909 @end table
10910
10911 @section hue
10912
10913 Modify the hue and/or the saturation of the input.
10914
10915 It accepts the following parameters:
10916
10917 @table @option
10918 @item h
10919 Specify the hue angle as a number of degrees. It accepts an expression,
10920 and defaults to "0".
10921
10922 @item s
10923 Specify the saturation in the [-10,10] range. It accepts an expression and
10924 defaults to "1".
10925
10926 @item H
10927 Specify the hue angle as a number of radians. It accepts an
10928 expression, and defaults to "0".
10929
10930 @item b
10931 Specify the brightness in the [-10,10] range. It accepts an expression and
10932 defaults to "0".
10933 @end table
10934
10935 @option{h} and @option{H} are mutually exclusive, and can't be
10936 specified at the same time.
10937
10938 The @option{b}, @option{h}, @option{H} and @option{s} option values are
10939 expressions containing the following constants:
10940
10941 @table @option
10942 @item n
10943 frame count of the input frame starting from 0
10944
10945 @item pts
10946 presentation timestamp of the input frame expressed in time base units
10947
10948 @item r
10949 frame rate of the input video, NAN if the input frame rate is unknown
10950
10951 @item t
10952 timestamp expressed in seconds, NAN if the input timestamp is unknown
10953
10954 @item tb
10955 time base of the input video
10956 @end table
10957
10958 @subsection Examples
10959
10960 @itemize
10961 @item
10962 Set the hue to 90 degrees and the saturation to 1.0:
10963 @example
10964 hue=h=90:s=1
10965 @end example
10966
10967 @item
10968 Same command but expressing the hue in radians:
10969 @example
10970 hue=H=PI/2:s=1
10971 @end example
10972
10973 @item
10974 Rotate hue and make the saturation swing between 0
10975 and 2 over a period of 1 second:
10976 @example
10977 hue="H=2*PI*t: s=sin(2*PI*t)+1"
10978 @end example
10979
10980 @item
10981 Apply a 3 seconds saturation fade-in effect starting at 0:
10982 @example
10983 hue="s=min(t/3\,1)"
10984 @end example
10985
10986 The general fade-in expression can be written as:
10987 @example
10988 hue="s=min(0\, max((t-START)/DURATION\, 1))"
10989 @end example
10990
10991 @item
10992 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
10993 @example
10994 hue="s=max(0\, min(1\, (8-t)/3))"
10995 @end example
10996
10997 The general fade-out expression can be written as:
10998 @example
10999 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
11000 @end example
11001
11002 @end itemize
11003
11004 @subsection Commands
11005
11006 This filter supports the following commands:
11007 @table @option
11008 @item b
11009 @item s
11010 @item h
11011 @item H
11012 Modify the hue and/or the saturation and/or brightness of the input video.
11013 The command accepts the same syntax of the corresponding option.
11014
11015 If the specified expression is not valid, it is kept at its current
11016 value.
11017 @end table
11018
11019 @section hysteresis
11020
11021 Grow first stream into second stream by connecting components.
11022 This makes it possible to build more robust edge masks.
11023
11024 This filter accepts the following options:
11025
11026 @table @option
11027 @item planes
11028 Set which planes will be processed as bitmap, unprocessed planes will be
11029 copied from first stream.
11030 By default value 0xf, all planes will be processed.
11031
11032 @item threshold
11033 Set threshold which is used in filtering. If pixel component value is higher than
11034 this value filter algorithm for connecting components is activated.
11035 By default value is 0.
11036 @end table
11037
11038 @section idet
11039
11040 Detect video interlacing type.
11041
11042 This filter tries to detect if the input frames are interlaced, progressive,
11043 top or bottom field first. It will also try to detect fields that are
11044 repeated between adjacent frames (a sign of telecine).
11045
11046 Single frame detection considers only immediately adjacent frames when classifying each frame.
11047 Multiple frame detection incorporates the classification history of previous frames.
11048
11049 The filter will log these metadata values:
11050
11051 @table @option
11052 @item single.current_frame
11053 Detected type of current frame using single-frame detection. One of:
11054 ``tff'' (top field first), ``bff'' (bottom field first),
11055 ``progressive'', or ``undetermined''
11056
11057 @item single.tff
11058 Cumulative number of frames detected as top field first using single-frame detection.
11059
11060 @item multiple.tff
11061 Cumulative number of frames detected as top field first using multiple-frame detection.
11062
11063 @item single.bff
11064 Cumulative number of frames detected as bottom field first using single-frame detection.
11065
11066 @item multiple.current_frame
11067 Detected type of current frame using multiple-frame detection. One of:
11068 ``tff'' (top field first), ``bff'' (bottom field first),
11069 ``progressive'', or ``undetermined''
11070
11071 @item multiple.bff
11072 Cumulative number of frames detected as bottom field first using multiple-frame detection.
11073
11074 @item single.progressive
11075 Cumulative number of frames detected as progressive using single-frame detection.
11076
11077 @item multiple.progressive
11078 Cumulative number of frames detected as progressive using multiple-frame detection.
11079
11080 @item single.undetermined
11081 Cumulative number of frames that could not be classified using single-frame detection.
11082
11083 @item multiple.undetermined
11084 Cumulative number of frames that could not be classified using multiple-frame detection.
11085
11086 @item repeated.current_frame
11087 Which field in the current frame is repeated from the last. One of ``neither'', ``top'', or ``bottom''.
11088
11089 @item repeated.neither
11090 Cumulative number of frames with no repeated field.
11091
11092 @item repeated.top
11093 Cumulative number of frames with the top field repeated from the previous frame's top field.
11094
11095 @item repeated.bottom
11096 Cumulative number of frames with the bottom field repeated from the previous frame's bottom field.
11097 @end table
11098
11099 The filter accepts the following options:
11100
11101 @table @option
11102 @item intl_thres
11103 Set interlacing threshold.
11104 @item prog_thres
11105 Set progressive threshold.
11106 @item rep_thres
11107 Threshold for repeated field detection.
11108 @item half_life
11109 Number of frames after which a given frame's contribution to the
11110 statistics is halved (i.e., it contributes only 0.5 to its
11111 classification). The default of 0 means that all frames seen are given
11112 full weight of 1.0 forever.
11113 @item analyze_interlaced_flag
11114 When this is not 0 then idet will use the specified number of frames to determine
11115 if the interlaced flag is accurate, it will not count undetermined frames.
11116 If the flag is found to be accurate it will be used without any further
11117 computations, if it is found to be inaccurate it will be cleared without any
11118 further computations. This allows inserting the idet filter as a low computational
11119 method to clean up the interlaced flag
11120 @end table
11121
11122 @section il
11123
11124 Deinterleave or interleave fields.
11125
11126 This filter allows one to process interlaced images fields without
11127 deinterlacing them. Deinterleaving splits the input frame into 2
11128 fields (so called half pictures). Odd lines are moved to the top
11129 half of the output image, even lines to the bottom half.
11130 You can process (filter) them independently and then re-interleave them.
11131
11132 The filter accepts the following options:
11133
11134 @table @option
11135 @item luma_mode, l
11136 @item chroma_mode, c
11137 @item alpha_mode, a
11138 Available values for @var{luma_mode}, @var{chroma_mode} and
11139 @var{alpha_mode} are:
11140
11141 @table @samp
11142 @item none
11143 Do nothing.
11144
11145 @item deinterleave, d
11146 Deinterleave fields, placing one above the other.
11147
11148 @item interleave, i
11149 Interleave fields. Reverse the effect of deinterleaving.
11150 @end table
11151 Default value is @code{none}.
11152
11153 @item luma_swap, ls
11154 @item chroma_swap, cs
11155 @item alpha_swap, as
11156 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
11157 @end table
11158
11159 @section inflate
11160
11161 Apply inflate effect to the video.
11162
11163 This filter replaces the pixel by the local(3x3) average by taking into account
11164 only values higher than the pixel.
11165
11166 It accepts the following options:
11167
11168 @table @option
11169 @item threshold0
11170 @item threshold1
11171 @item threshold2
11172 @item threshold3
11173 Limit the maximum change for each plane, default is 65535.
11174 If 0, plane will remain unchanged.
11175 @end table
11176
11177 @section interlace
11178
11179 Simple interlacing filter from progressive contents. This interleaves upper (or
11180 lower) lines from odd frames with lower (or upper) lines from even frames,
11181 halving the frame rate and preserving image height.
11182
11183 @example
11184    Original        Original             New Frame
11185    Frame 'j'      Frame 'j+1'             (tff)
11186   ==========      ===========       ==================
11187     Line 0  -------------------->    Frame 'j' Line 0
11188     Line 1          Line 1  ---->   Frame 'j+1' Line 1
11189     Line 2 --------------------->    Frame 'j' Line 2
11190     Line 3          Line 3  ---->   Frame 'j+1' Line 3
11191      ...             ...                   ...
11192 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
11193 @end example
11194
11195 It accepts the following optional parameters:
11196
11197 @table @option
11198 @item scan
11199 This determines whether the interlaced frame is taken from the even
11200 (tff - default) or odd (bff) lines of the progressive frame.
11201
11202 @item lowpass
11203 Vertical lowpass filter to avoid twitter interlacing and
11204 reduce moire patterns.
11205
11206 @table @samp
11207 @item 0, off
11208 Disable vertical lowpass filter
11209
11210 @item 1, linear
11211 Enable linear filter (default)
11212
11213 @item 2, complex
11214 Enable complex filter. This will slightly less reduce twitter and moire
11215 but better retain detail and subjective sharpness impression.
11216
11217 @end table
11218 @end table
11219
11220 @section kerndeint
11221
11222 Deinterlace input video by applying Donald Graft's adaptive kernel
11223 deinterling. Work on interlaced parts of a video to produce
11224 progressive frames.
11225
11226 The description of the accepted parameters follows.
11227
11228 @table @option
11229 @item thresh
11230 Set the threshold which affects the filter's tolerance when
11231 determining if a pixel line must be processed. It must be an integer
11232 in the range [0,255] and defaults to 10. A value of 0 will result in
11233 applying the process on every pixels.
11234
11235 @item map
11236 Paint pixels exceeding the threshold value to white if set to 1.
11237 Default is 0.
11238
11239 @item order
11240 Set the fields order. Swap fields if set to 1, leave fields alone if
11241 0. Default is 0.
11242
11243 @item sharp
11244 Enable additional sharpening if set to 1. Default is 0.
11245
11246 @item twoway
11247 Enable twoway sharpening if set to 1. Default is 0.
11248 @end table
11249
11250 @subsection Examples
11251
11252 @itemize
11253 @item
11254 Apply default values:
11255 @example
11256 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
11257 @end example
11258
11259 @item
11260 Enable additional sharpening:
11261 @example
11262 kerndeint=sharp=1
11263 @end example
11264
11265 @item
11266 Paint processed pixels in white:
11267 @example
11268 kerndeint=map=1
11269 @end example
11270 @end itemize
11271
11272 @section lenscorrection
11273
11274 Correct radial lens distortion
11275
11276 This filter can be used to correct for radial distortion as can result from the use
11277 of wide angle lenses, and thereby re-rectify the image. To find the right parameters
11278 one can use tools available for example as part of opencv or simply trial-and-error.
11279 To use opencv use the calibration sample (under samples/cpp) from the opencv sources
11280 and extract the k1 and k2 coefficients from the resulting matrix.
11281
11282 Note that effectively the same filter is available in the open-source tools Krita and
11283 Digikam from the KDE project.
11284
11285 In contrast to the @ref{vignette} filter, which can also be used to compensate lens errors,
11286 this filter corrects the distortion of the image, whereas @ref{vignette} corrects the
11287 brightness distribution, so you may want to use both filters together in certain
11288 cases, though you will have to take care of ordering, i.e. whether vignetting should
11289 be applied before or after lens correction.
11290
11291 @subsection Options
11292
11293 The filter accepts the following options:
11294
11295 @table @option
11296 @item cx
11297 Relative x-coordinate of the focal point of the image, and thereby the center of the
11298 distortion. This value has a range [0,1] and is expressed as fractions of the image
11299 width. Default is 0.5.
11300 @item cy
11301 Relative y-coordinate of the focal point of the image, and thereby the center of the
11302 distortion. This value has a range [0,1] and is expressed as fractions of the image
11303 height. Default is 0.5.
11304 @item k1
11305 Coefficient of the quadratic correction term. This value has a range [-1,1]. 0 means
11306 no correction. Default is 0.
11307 @item k2
11308 Coefficient of the double quadratic correction term. This value has a range [-1,1].
11309 0 means no correction. Default is 0.
11310 @end table
11311
11312 The formula that generates the correction is:
11313
11314 @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)
11315
11316 where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the
11317 distances from the focal point in the source and target images, respectively.
11318
11319 @section lensfun
11320
11321 Apply lens correction via the lensfun library (@url{http://lensfun.sourceforge.net/}).
11322
11323 The @code{lensfun} filter requires the camera make, camera model, and lens model
11324 to apply the lens correction. The filter will load the lensfun database and
11325 query it to find the corresponding camera and lens entries in the database. As
11326 long as these entries can be found with the given options, the filter can
11327 perform corrections on frames. Note that incomplete strings will result in the
11328 filter choosing the best match with the given options, and the filter will
11329 output the chosen camera and lens models (logged with level "info"). You must
11330 provide the make, camera model, and lens model as they are required.
11331
11332 The filter accepts the following options:
11333
11334 @table @option
11335 @item make
11336 The make of the camera (for example, "Canon"). This option is required.
11337
11338 @item model
11339 The model of the camera (for example, "Canon EOS 100D"). This option is
11340 required.
11341
11342 @item lens_model
11343 The model of the lens (for example, "Canon EF-S 18-55mm f/3.5-5.6 IS STM"). This
11344 option is required.
11345
11346 @item mode
11347 The type of correction to apply. The following values are valid options:
11348
11349 @table @samp
11350 @item vignetting
11351 Enables fixing lens vignetting.
11352
11353 @item geometry
11354 Enables fixing lens geometry. This is the default.
11355
11356 @item subpixel
11357 Enables fixing chromatic aberrations.
11358
11359 @item vig_geo
11360 Enables fixing lens vignetting and lens geometry.
11361
11362 @item vig_subpixel
11363 Enables fixing lens vignetting and chromatic aberrations.
11364
11365 @item distortion
11366 Enables fixing both lens geometry and chromatic aberrations.
11367
11368 @item all
11369 Enables all possible corrections.
11370
11371 @end table
11372 @item focal_length
11373 The focal length of the image/video (zoom; expected constant for video). For
11374 example, a 18--55mm lens has focal length range of [18--55], so a value in that
11375 range should be chosen when using that lens. Default 18.
11376
11377 @item aperture
11378 The aperture of the image/video (expected constant for video). Note that
11379 aperture is only used for vignetting correction. Default 3.5.
11380
11381 @item focus_distance
11382 The focus distance of the image/video (expected constant for video). Note that
11383 focus distance is only used for vignetting and only slightly affects the
11384 vignetting correction process. If unknown, leave it at the default value (which
11385 is 1000).
11386
11387 @item target_geometry
11388 The target geometry of the output image/video. The following values are valid
11389 options:
11390
11391 @table @samp
11392 @item rectilinear (default)
11393 @item fisheye
11394 @item panoramic
11395 @item equirectangular
11396 @item fisheye_orthographic
11397 @item fisheye_stereographic
11398 @item fisheye_equisolid
11399 @item fisheye_thoby
11400 @end table
11401 @item reverse
11402 Apply the reverse of image correction (instead of correcting distortion, apply
11403 it).
11404
11405 @item interpolation
11406 The type of interpolation used when correcting distortion. The following values
11407 are valid options:
11408
11409 @table @samp
11410 @item nearest
11411 @item linear (default)
11412 @item lanczos
11413 @end table
11414 @end table
11415
11416 @subsection Examples
11417
11418 @itemize
11419 @item
11420 Apply lens correction with make "Canon", camera model "Canon EOS 100D", and lens
11421 model "Canon EF-S 18-55mm f/3.5-5.6 IS STM" with focal length of "18" and
11422 aperture of "8.0".
11423
11424 @example
11425 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
11426 @end example
11427
11428 @item
11429 Apply the same as before, but only for the first 5 seconds of video.
11430
11431 @example
11432 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
11433 @end example
11434
11435 @end itemize
11436
11437 @section libvmaf
11438
11439 Obtain the VMAF (Video Multi-Method Assessment Fusion)
11440 score between two input videos.
11441
11442 The obtained VMAF score is printed through the logging system.
11443
11444 It requires Netflix's vmaf library (libvmaf) as a pre-requisite.
11445 After installing the library it can be enabled using:
11446 @code{./configure --enable-libvmaf --enable-version3}.
11447 If no model path is specified it uses the default model: @code{vmaf_v0.6.1.pkl}.
11448
11449 The filter has following options:
11450
11451 @table @option
11452 @item model_path
11453 Set the model path which is to be used for SVM.
11454 Default value: @code{"vmaf_v0.6.1.pkl"}
11455
11456 @item log_path
11457 Set the file path to be used to store logs.
11458
11459 @item log_fmt
11460 Set the format of the log file (xml or json).
11461
11462 @item enable_transform
11463 This option can enable/disable the @code{score_transform} applied to the final predicted VMAF score,
11464 if you have specified score_transform option in the input parameter file passed to @code{run_vmaf_training.py}
11465 Default value: @code{false}
11466
11467 @item phone_model
11468 Invokes the phone model which will generate VMAF scores higher than in the
11469 regular model, which is more suitable for laptop, TV, etc. viewing conditions.
11470
11471 @item psnr
11472 Enables computing psnr along with vmaf.
11473
11474 @item ssim
11475 Enables computing ssim along with vmaf.
11476
11477 @item ms_ssim
11478 Enables computing ms_ssim along with vmaf.
11479
11480 @item pool
11481 Set the pool method (mean, min or harmonic mean) to be used for computing vmaf.
11482
11483 @item n_threads
11484 Set number of threads to be used when computing vmaf.
11485
11486 @item n_subsample
11487 Set interval for frame subsampling used when computing vmaf.
11488
11489 @item enable_conf_interval
11490 Enables confidence interval.
11491 @end table
11492
11493 This filter also supports the @ref{framesync} options.
11494
11495 On the below examples the input file @file{main.mpg} being processed is
11496 compared with the reference file @file{ref.mpg}.
11497
11498 @example
11499 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf -f null -
11500 @end example
11501
11502 Example with options:
11503 @example
11504 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf="psnr=1:log_fmt=json" -f null -
11505 @end example
11506
11507 @section limiter
11508
11509 Limits the pixel components values to the specified range [min, max].
11510
11511 The filter accepts the following options:
11512
11513 @table @option
11514 @item min
11515 Lower bound. Defaults to the lowest allowed value for the input.
11516
11517 @item max
11518 Upper bound. Defaults to the highest allowed value for the input.
11519
11520 @item planes
11521 Specify which planes will be processed. Defaults to all available.
11522 @end table
11523
11524 @section loop
11525
11526 Loop video frames.
11527
11528 The filter accepts the following options:
11529
11530 @table @option
11531 @item loop
11532 Set the number of loops. Setting this value to -1 will result in infinite loops.
11533 Default is 0.
11534
11535 @item size
11536 Set maximal size in number of frames. Default is 0.
11537
11538 @item start
11539 Set first frame of loop. Default is 0.
11540 @end table
11541
11542 @subsection Examples
11543
11544 @itemize
11545 @item
11546 Loop single first frame infinitely:
11547 @example
11548 loop=loop=-1:size=1:start=0
11549 @end example
11550
11551 @item
11552 Loop single first frame 10 times:
11553 @example
11554 loop=loop=10:size=1:start=0
11555 @end example
11556
11557 @item
11558 Loop 10 first frames 5 times:
11559 @example
11560 loop=loop=5:size=10:start=0
11561 @end example
11562 @end itemize
11563
11564 @section lut1d
11565
11566 Apply a 1D LUT to an input video.
11567
11568 The filter accepts the following options:
11569
11570 @table @option
11571 @item file
11572 Set the 1D LUT file name.
11573
11574 Currently supported formats:
11575 @table @samp
11576 @item cube
11577 Iridas
11578 @end table
11579
11580 @item interp
11581 Select interpolation mode.
11582
11583 Available values are:
11584
11585 @table @samp
11586 @item nearest
11587 Use values from the nearest defined point.
11588 @item linear
11589 Interpolate values using the linear interpolation.
11590 @item cosine
11591 Interpolate values using the cosine interpolation.
11592 @item cubic
11593 Interpolate values using the cubic interpolation.
11594 @item spline
11595 Interpolate values using the spline interpolation.
11596 @end table
11597 @end table
11598
11599 @anchor{lut3d}
11600 @section lut3d
11601
11602 Apply a 3D LUT to an input video.
11603
11604 The filter accepts the following options:
11605
11606 @table @option
11607 @item file
11608 Set the 3D LUT file name.
11609
11610 Currently supported formats:
11611 @table @samp
11612 @item 3dl
11613 AfterEffects
11614 @item cube
11615 Iridas
11616 @item dat
11617 DaVinci
11618 @item m3d
11619 Pandora
11620 @end table
11621 @item interp
11622 Select interpolation mode.
11623
11624 Available values are:
11625
11626 @table @samp
11627 @item nearest
11628 Use values from the nearest defined point.
11629 @item trilinear
11630 Interpolate values using the 8 points defining a cube.
11631 @item tetrahedral
11632 Interpolate values using a tetrahedron.
11633 @end table
11634 @end table
11635
11636 This filter also supports the @ref{framesync} options.
11637
11638 @section lumakey
11639
11640 Turn certain luma values into transparency.
11641
11642 The filter accepts the following options:
11643
11644 @table @option
11645 @item threshold
11646 Set the luma which will be used as base for transparency.
11647 Default value is @code{0}.
11648
11649 @item tolerance
11650 Set the range of luma values to be keyed out.
11651 Default value is @code{0}.
11652
11653 @item softness
11654 Set the range of softness. Default value is @code{0}.
11655 Use this to control gradual transition from zero to full transparency.
11656 @end table
11657
11658 @section lut, lutrgb, lutyuv
11659
11660 Compute a look-up table for binding each pixel component input value
11661 to an output value, and apply it to the input video.
11662
11663 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
11664 to an RGB input video.
11665
11666 These filters accept the following parameters:
11667 @table @option
11668 @item c0
11669 set first pixel component expression
11670 @item c1
11671 set second pixel component expression
11672 @item c2
11673 set third pixel component expression
11674 @item c3
11675 set fourth pixel component expression, corresponds to the alpha component
11676
11677 @item r
11678 set red component expression
11679 @item g
11680 set green component expression
11681 @item b
11682 set blue component expression
11683 @item a
11684 alpha component expression
11685
11686 @item y
11687 set Y/luminance component expression
11688 @item u
11689 set U/Cb component expression
11690 @item v
11691 set V/Cr component expression
11692 @end table
11693
11694 Each of them specifies the expression to use for computing the lookup table for
11695 the corresponding pixel component values.
11696
11697 The exact component associated to each of the @var{c*} options depends on the
11698 format in input.
11699
11700 The @var{lut} filter requires either YUV or RGB pixel formats in input,
11701 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
11702
11703 The expressions can contain the following constants and functions:
11704
11705 @table @option
11706 @item w
11707 @item h
11708 The input width and height.
11709
11710 @item val
11711 The input value for the pixel component.
11712
11713 @item clipval
11714 The input value, clipped to the @var{minval}-@var{maxval} range.
11715
11716 @item maxval
11717 The maximum value for the pixel component.
11718
11719 @item minval
11720 The minimum value for the pixel component.
11721
11722 @item negval
11723 The negated value for the pixel component value, clipped to the
11724 @var{minval}-@var{maxval} range; it corresponds to the expression
11725 "maxval-clipval+minval".
11726
11727 @item clip(val)
11728 The computed value in @var{val}, clipped to the
11729 @var{minval}-@var{maxval} range.
11730
11731 @item gammaval(gamma)
11732 The computed gamma correction value of the pixel component value,
11733 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
11734 expression
11735 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
11736
11737 @end table
11738
11739 All expressions default to "val".
11740
11741 @subsection Examples
11742
11743 @itemize
11744 @item
11745 Negate input video:
11746 @example
11747 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
11748 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
11749 @end example
11750
11751 The above is the same as:
11752 @example
11753 lutrgb="r=negval:g=negval:b=negval"
11754 lutyuv="y=negval:u=negval:v=negval"
11755 @end example
11756
11757 @item
11758 Negate luminance:
11759 @example
11760 lutyuv=y=negval
11761 @end example
11762
11763 @item
11764 Remove chroma components, turning the video into a graytone image:
11765 @example
11766 lutyuv="u=128:v=128"
11767 @end example
11768
11769 @item
11770 Apply a luma burning effect:
11771 @example
11772 lutyuv="y=2*val"
11773 @end example
11774
11775 @item
11776 Remove green and blue components:
11777 @example
11778 lutrgb="g=0:b=0"
11779 @end example
11780
11781 @item
11782 Set a constant alpha channel value on input:
11783 @example
11784 format=rgba,lutrgb=a="maxval-minval/2"
11785 @end example
11786
11787 @item
11788 Correct luminance gamma by a factor of 0.5:
11789 @example
11790 lutyuv=y=gammaval(0.5)
11791 @end example
11792
11793 @item
11794 Discard least significant bits of luma:
11795 @example
11796 lutyuv=y='bitand(val, 128+64+32)'
11797 @end example
11798
11799 @item
11800 Technicolor like effect:
11801 @example
11802 lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
11803 @end example
11804 @end itemize
11805
11806 @section lut2, tlut2
11807
11808 The @code{lut2} filter takes two input streams and outputs one
11809 stream.
11810
11811 The @code{tlut2} (time lut2) filter takes two consecutive frames
11812 from one single stream.
11813
11814 This filter accepts the following parameters:
11815 @table @option
11816 @item c0
11817 set first pixel component expression
11818 @item c1
11819 set second pixel component expression
11820 @item c2
11821 set third pixel component expression
11822 @item c3
11823 set fourth pixel component expression, corresponds to the alpha component
11824
11825 @item d
11826 set output bit depth, only available for @code{lut2} filter. By default is 0,
11827 which means bit depth is automatically picked from first input format.
11828 @end table
11829
11830 Each of them specifies the expression to use for computing the lookup table for
11831 the corresponding pixel component values.
11832
11833 The exact component associated to each of the @var{c*} options depends on the
11834 format in inputs.
11835
11836 The expressions can contain the following constants:
11837
11838 @table @option
11839 @item w
11840 @item h
11841 The input width and height.
11842
11843 @item x
11844 The first input value for the pixel component.
11845
11846 @item y
11847 The second input value for the pixel component.
11848
11849 @item bdx
11850 The first input video bit depth.
11851
11852 @item bdy
11853 The second input video bit depth.
11854 @end table
11855
11856 All expressions default to "x".
11857
11858 @subsection Examples
11859
11860 @itemize
11861 @item
11862 Highlight differences between two RGB video streams:
11863 @example
11864 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)'
11865 @end example
11866
11867 @item
11868 Highlight differences between two YUV video streams:
11869 @example
11870 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)'
11871 @end example
11872
11873 @item
11874 Show max difference between two video streams:
11875 @example
11876 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)))'
11877 @end example
11878 @end itemize
11879
11880 @section maskedclamp
11881
11882 Clamp the first input stream with the second input and third input stream.
11883
11884 Returns the value of first stream to be between second input
11885 stream - @code{undershoot} and third input stream + @code{overshoot}.
11886
11887 This filter accepts the following options:
11888 @table @option
11889 @item undershoot
11890 Default value is @code{0}.
11891
11892 @item overshoot
11893 Default value is @code{0}.
11894
11895 @item planes
11896 Set which planes will be processed as bitmap, unprocessed planes will be
11897 copied from first stream.
11898 By default value 0xf, all planes will be processed.
11899 @end table
11900
11901 @section maskedmerge
11902
11903 Merge the first input stream with the second input stream using per pixel
11904 weights in the third input stream.
11905
11906 A value of 0 in the third stream pixel component means that pixel component
11907 from first stream is returned unchanged, while maximum value (eg. 255 for
11908 8-bit videos) means that pixel component from second stream is returned
11909 unchanged. Intermediate values define the amount of merging between both
11910 input stream's pixel components.
11911
11912 This filter accepts the following options:
11913 @table @option
11914 @item planes
11915 Set which planes will be processed as bitmap, unprocessed planes will be
11916 copied from first stream.
11917 By default value 0xf, all planes will be processed.
11918 @end table
11919
11920 @section maskfun
11921 Create mask from input video.
11922
11923 For example it is useful to create motion masks after @code{tblend} filter.
11924
11925 This filter accepts the following options:
11926
11927 @table @option
11928 @item low
11929 Set low threshold. Any pixel component lower or exact than this value will be set to 0.
11930
11931 @item high
11932 Set high threshold. Any pixel component higher than this value will be set to max value
11933 allowed for current pixel format.
11934
11935 @item planes
11936 Set planes to filter, by default all available planes are filtered.
11937
11938 @item fill
11939 Fill all frame pixels with this value.
11940
11941 @item sum
11942 Set max average pixel value for frame. If sum of all pixel components is higher that this
11943 average, output frame will be completely filled with value set by @var{fill} option.
11944 Typically useful for scene changes when used in combination with @code{tblend} filter.
11945 @end table
11946
11947 @section mcdeint
11948
11949 Apply motion-compensation deinterlacing.
11950
11951 It needs one field per frame as input and must thus be used together
11952 with yadif=1/3 or equivalent.
11953
11954 This filter accepts the following options:
11955 @table @option
11956 @item mode
11957 Set the deinterlacing mode.
11958
11959 It accepts one of the following values:
11960 @table @samp
11961 @item fast
11962 @item medium
11963 @item slow
11964 use iterative motion estimation
11965 @item extra_slow
11966 like @samp{slow}, but use multiple reference frames.
11967 @end table
11968 Default value is @samp{fast}.
11969
11970 @item parity
11971 Set the picture field parity assumed for the input video. It must be
11972 one of the following values:
11973
11974 @table @samp
11975 @item 0, tff
11976 assume top field first
11977 @item 1, bff
11978 assume bottom field first
11979 @end table
11980
11981 Default value is @samp{bff}.
11982
11983 @item qp
11984 Set per-block quantization parameter (QP) used by the internal
11985 encoder.
11986
11987 Higher values should result in a smoother motion vector field but less
11988 optimal individual vectors. Default value is 1.
11989 @end table
11990
11991 @section mergeplanes
11992
11993 Merge color channel components from several video streams.
11994
11995 The filter accepts up to 4 input streams, and merge selected input
11996 planes to the output video.
11997
11998 This filter accepts the following options:
11999 @table @option
12000 @item mapping
12001 Set input to output plane mapping. Default is @code{0}.
12002
12003 The mappings is specified as a bitmap. It should be specified as a
12004 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
12005 mapping for the first plane of the output stream. 'A' sets the number of
12006 the input stream to use (from 0 to 3), and 'a' the plane number of the
12007 corresponding input to use (from 0 to 3). The rest of the mappings is
12008 similar, 'Bb' describes the mapping for the output stream second
12009 plane, 'Cc' describes the mapping for the output stream third plane and
12010 'Dd' describes the mapping for the output stream fourth plane.
12011
12012 @item format
12013 Set output pixel format. Default is @code{yuva444p}.
12014 @end table
12015
12016 @subsection Examples
12017
12018 @itemize
12019 @item
12020 Merge three gray video streams of same width and height into single video stream:
12021 @example
12022 [a0][a1][a2]mergeplanes=0x001020:yuv444p
12023 @end example
12024
12025 @item
12026 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
12027 @example
12028 [a0][a1]mergeplanes=0x00010210:yuva444p
12029 @end example
12030
12031 @item
12032 Swap Y and A plane in yuva444p stream:
12033 @example
12034 format=yuva444p,mergeplanes=0x03010200:yuva444p
12035 @end example
12036
12037 @item
12038 Swap U and V plane in yuv420p stream:
12039 @example
12040 format=yuv420p,mergeplanes=0x000201:yuv420p
12041 @end example
12042
12043 @item
12044 Cast a rgb24 clip to yuv444p:
12045 @example
12046 format=rgb24,mergeplanes=0x000102:yuv444p
12047 @end example
12048 @end itemize
12049
12050 @section mestimate
12051
12052 Estimate and export motion vectors using block matching algorithms.
12053 Motion vectors are stored in frame side data to be used by other filters.
12054
12055 This filter accepts the following options:
12056 @table @option
12057 @item method
12058 Specify the motion estimation method. Accepts one of the following values:
12059
12060 @table @samp
12061 @item esa
12062 Exhaustive search algorithm.
12063 @item tss
12064 Three step search algorithm.
12065 @item tdls
12066 Two dimensional logarithmic search algorithm.
12067 @item ntss
12068 New three step search algorithm.
12069 @item fss
12070 Four step search algorithm.
12071 @item ds
12072 Diamond search algorithm.
12073 @item hexbs
12074 Hexagon-based search algorithm.
12075 @item epzs
12076 Enhanced predictive zonal search algorithm.
12077 @item umh
12078 Uneven multi-hexagon search algorithm.
12079 @end table
12080 Default value is @samp{esa}.
12081
12082 @item mb_size
12083 Macroblock size. Default @code{16}.
12084
12085 @item search_param
12086 Search parameter. Default @code{7}.
12087 @end table
12088
12089 @section midequalizer
12090
12091 Apply Midway Image Equalization effect using two video streams.
12092
12093 Midway Image Equalization adjusts a pair of images to have the same
12094 histogram, while maintaining their dynamics as much as possible. It's
12095 useful for e.g. matching exposures from a pair of stereo cameras.
12096
12097 This filter has two inputs and one output, which must be of same pixel format, but
12098 may be of different sizes. The output of filter is first input adjusted with
12099 midway histogram of both inputs.
12100
12101 This filter accepts the following option:
12102
12103 @table @option
12104 @item planes
12105 Set which planes to process. Default is @code{15}, which is all available planes.
12106 @end table
12107
12108 @section minterpolate
12109
12110 Convert the video to specified frame rate using motion interpolation.
12111
12112 This filter accepts the following options:
12113 @table @option
12114 @item fps
12115 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}.
12116
12117 @item mi_mode
12118 Motion interpolation mode. Following values are accepted:
12119 @table @samp
12120 @item dup
12121 Duplicate previous or next frame for interpolating new ones.
12122 @item blend
12123 Blend source frames. Interpolated frame is mean of previous and next frames.
12124 @item mci
12125 Motion compensated interpolation. Following options are effective when this mode is selected:
12126
12127 @table @samp
12128 @item mc_mode
12129 Motion compensation mode. Following values are accepted:
12130 @table @samp
12131 @item obmc
12132 Overlapped block motion compensation.
12133 @item aobmc
12134 Adaptive overlapped block motion compensation. Window weighting coefficients are controlled adaptively according to the reliabilities of the neighboring motion vectors to reduce oversmoothing.
12135 @end table
12136 Default mode is @samp{obmc}.
12137
12138 @item me_mode
12139 Motion estimation mode. Following values are accepted:
12140 @table @samp
12141 @item bidir
12142 Bidirectional motion estimation. Motion vectors are estimated for each source frame in both forward and backward directions.
12143 @item bilat
12144 Bilateral motion estimation. Motion vectors are estimated directly for interpolated frame.
12145 @end table
12146 Default mode is @samp{bilat}.
12147
12148 @item me
12149 The algorithm to be used for motion estimation. Following values are accepted:
12150 @table @samp
12151 @item esa
12152 Exhaustive search algorithm.
12153 @item tss
12154 Three step search algorithm.
12155 @item tdls
12156 Two dimensional logarithmic search algorithm.
12157 @item ntss
12158 New three step search algorithm.
12159 @item fss
12160 Four step search algorithm.
12161 @item ds
12162 Diamond search algorithm.
12163 @item hexbs
12164 Hexagon-based search algorithm.
12165 @item epzs
12166 Enhanced predictive zonal search algorithm.
12167 @item umh
12168 Uneven multi-hexagon search algorithm.
12169 @end table
12170 Default algorithm is @samp{epzs}.
12171
12172 @item mb_size
12173 Macroblock size. Default @code{16}.
12174
12175 @item search_param
12176 Motion estimation search parameter. Default @code{32}.
12177
12178 @item vsbmc
12179 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).
12180 @end table
12181 @end table
12182
12183 @item scd
12184 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:
12185 @table @samp
12186 @item none
12187 Disable scene change detection.
12188 @item fdiff
12189 Frame difference. Corresponding pixel values are compared and if it satisfies @var{scd_threshold} scene change is detected.
12190 @end table
12191 Default method is @samp{fdiff}.
12192
12193 @item scd_threshold
12194 Scene change detection threshold. Default is @code{5.0}.
12195 @end table
12196
12197 @section mix
12198
12199 Mix several video input streams into one video stream.
12200
12201 A description of the accepted options follows.
12202
12203 @table @option
12204 @item nb_inputs
12205 The number of inputs. If unspecified, it defaults to 2.
12206
12207 @item weights
12208 Specify weight of each input video stream as sequence.
12209 Each weight is separated by space. If number of weights
12210 is smaller than number of @var{frames} last specified
12211 weight will be used for all remaining unset weights.
12212
12213 @item scale
12214 Specify scale, if it is set it will be multiplied with sum
12215 of each weight multiplied with pixel values to give final destination
12216 pixel value. By default @var{scale} is auto scaled to sum of weights.
12217
12218 @item duration
12219 Specify how end of stream is determined.
12220 @table @samp
12221 @item longest
12222 The duration of the longest input. (default)
12223
12224 @item shortest
12225 The duration of the shortest input.
12226
12227 @item first
12228 The duration of the first input.
12229 @end table
12230 @end table
12231
12232 @section mpdecimate
12233
12234 Drop frames that do not differ greatly from the previous frame in
12235 order to reduce frame rate.
12236
12237 The main use of this filter is for very-low-bitrate encoding
12238 (e.g. streaming over dialup modem), but it could in theory be used for
12239 fixing movies that were inverse-telecined incorrectly.
12240
12241 A description of the accepted options follows.
12242
12243 @table @option
12244 @item max
12245 Set the maximum number of consecutive frames which can be dropped (if
12246 positive), or the minimum interval between dropped frames (if
12247 negative). If the value is 0, the frame is dropped disregarding the
12248 number of previous sequentially dropped frames.
12249
12250 Default value is 0.
12251
12252 @item hi
12253 @item lo
12254 @item frac
12255 Set the dropping threshold values.
12256
12257 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
12258 represent actual pixel value differences, so a threshold of 64
12259 corresponds to 1 unit of difference for each pixel, or the same spread
12260 out differently over the block.
12261
12262 A frame is a candidate for dropping if no 8x8 blocks differ by more
12263 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
12264 meaning the whole image) differ by more than a threshold of @option{lo}.
12265
12266 Default value for @option{hi} is 64*12, default value for @option{lo} is
12267 64*5, and default value for @option{frac} is 0.33.
12268 @end table
12269
12270
12271 @section negate
12272
12273 Negate (invert) the input video.
12274
12275 It accepts the following option:
12276
12277 @table @option
12278
12279 @item negate_alpha
12280 With value 1, it negates the alpha component, if present. Default value is 0.
12281 @end table
12282
12283 @anchor{nlmeans}
12284 @section nlmeans
12285
12286 Denoise frames using Non-Local Means algorithm.
12287
12288 Each pixel is adjusted by looking for other pixels with similar contexts. This
12289 context similarity is defined by comparing their surrounding patches of size
12290 @option{p}x@option{p}. Patches are searched in an area of @option{r}x@option{r}
12291 around the pixel.
12292
12293 Note that the research area defines centers for patches, which means some
12294 patches will be made of pixels outside that research area.
12295
12296 The filter accepts the following options.
12297
12298 @table @option
12299 @item s
12300 Set denoising strength. Default is 1.0. Must be in range [1.0, 30.0].
12301
12302 @item p
12303 Set patch size. Default is 7. Must be odd number in range [0, 99].
12304
12305 @item pc
12306 Same as @option{p} but for chroma planes.
12307
12308 The default value is @var{0} and means automatic.
12309
12310 @item r
12311 Set research size. Default is 15. Must be odd number in range [0, 99].
12312
12313 @item rc
12314 Same as @option{r} but for chroma planes.
12315
12316 The default value is @var{0} and means automatic.
12317 @end table
12318
12319 @section nnedi
12320
12321 Deinterlace video using neural network edge directed interpolation.
12322
12323 This filter accepts the following options:
12324
12325 @table @option
12326 @item weights
12327 Mandatory option, without binary file filter can not work.
12328 Currently file can be found here:
12329 https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
12330
12331 @item deint
12332 Set which frames to deinterlace, by default it is @code{all}.
12333 Can be @code{all} or @code{interlaced}.
12334
12335 @item field
12336 Set mode of operation.
12337
12338 Can be one of the following:
12339
12340 @table @samp
12341 @item af
12342 Use frame flags, both fields.
12343 @item a
12344 Use frame flags, single field.
12345 @item t
12346 Use top field only.
12347 @item b
12348 Use bottom field only.
12349 @item tf
12350 Use both fields, top first.
12351 @item bf
12352 Use both fields, bottom first.
12353 @end table
12354
12355 @item planes
12356 Set which planes to process, by default filter process all frames.
12357
12358 @item nsize
12359 Set size of local neighborhood around each pixel, used by the predictor neural
12360 network.
12361
12362 Can be one of the following:
12363
12364 @table @samp
12365 @item s8x6
12366 @item s16x6
12367 @item s32x6
12368 @item s48x6
12369 @item s8x4
12370 @item s16x4
12371 @item s32x4
12372 @end table
12373
12374 @item nns
12375 Set the number of neurons in predictor neural network.
12376 Can be one of the following:
12377
12378 @table @samp
12379 @item n16
12380 @item n32
12381 @item n64
12382 @item n128
12383 @item n256
12384 @end table
12385
12386 @item qual
12387 Controls the number of different neural network predictions that are blended
12388 together to compute the final output value. Can be @code{fast}, default or
12389 @code{slow}.
12390
12391 @item etype
12392 Set which set of weights to use in the predictor.
12393 Can be one of the following:
12394
12395 @table @samp
12396 @item a
12397 weights trained to minimize absolute error
12398 @item s
12399 weights trained to minimize squared error
12400 @end table
12401
12402 @item pscrn
12403 Controls whether or not the prescreener neural network is used to decide
12404 which pixels should be processed by the predictor neural network and which
12405 can be handled by simple cubic interpolation.
12406 The prescreener is trained to know whether cubic interpolation will be
12407 sufficient for a pixel or whether it should be predicted by the predictor nn.
12408 The computational complexity of the prescreener nn is much less than that of
12409 the predictor nn. Since most pixels can be handled by cubic interpolation,
12410 using the prescreener generally results in much faster processing.
12411 The prescreener is pretty accurate, so the difference between using it and not
12412 using it is almost always unnoticeable.
12413
12414 Can be one of the following:
12415
12416 @table @samp
12417 @item none
12418 @item original
12419 @item new
12420 @end table
12421
12422 Default is @code{new}.
12423
12424 @item fapprox
12425 Set various debugging flags.
12426 @end table
12427
12428 @section noformat
12429
12430 Force libavfilter not to use any of the specified pixel formats for the
12431 input to the next filter.
12432
12433 It accepts the following parameters:
12434 @table @option
12435
12436 @item pix_fmts
12437 A '|'-separated list of pixel format names, such as
12438 pix_fmts=yuv420p|monow|rgb24".
12439
12440 @end table
12441
12442 @subsection Examples
12443
12444 @itemize
12445 @item
12446 Force libavfilter to use a format different from @var{yuv420p} for the
12447 input to the vflip filter:
12448 @example
12449 noformat=pix_fmts=yuv420p,vflip
12450 @end example
12451
12452 @item
12453 Convert the input video to any of the formats not contained in the list:
12454 @example
12455 noformat=yuv420p|yuv444p|yuv410p
12456 @end example
12457 @end itemize
12458
12459 @section noise
12460
12461 Add noise on video input frame.
12462
12463 The filter accepts the following options:
12464
12465 @table @option
12466 @item all_seed
12467 @item c0_seed
12468 @item c1_seed
12469 @item c2_seed
12470 @item c3_seed
12471 Set noise seed for specific pixel component or all pixel components in case
12472 of @var{all_seed}. Default value is @code{123457}.
12473
12474 @item all_strength, alls
12475 @item c0_strength, c0s
12476 @item c1_strength, c1s
12477 @item c2_strength, c2s
12478 @item c3_strength, c3s
12479 Set noise strength for specific pixel component or all pixel components in case
12480 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
12481
12482 @item all_flags, allf
12483 @item c0_flags, c0f
12484 @item c1_flags, c1f
12485 @item c2_flags, c2f
12486 @item c3_flags, c3f
12487 Set pixel component flags or set flags for all components if @var{all_flags}.
12488 Available values for component flags are:
12489 @table @samp
12490 @item a
12491 averaged temporal noise (smoother)
12492 @item p
12493 mix random noise with a (semi)regular pattern
12494 @item t
12495 temporal noise (noise pattern changes between frames)
12496 @item u
12497 uniform noise (gaussian otherwise)
12498 @end table
12499 @end table
12500
12501 @subsection Examples
12502
12503 Add temporal and uniform noise to input video:
12504 @example
12505 noise=alls=20:allf=t+u
12506 @end example
12507
12508 @section normalize
12509
12510 Normalize RGB video (aka histogram stretching, contrast stretching).
12511 See: https://en.wikipedia.org/wiki/Normalization_(image_processing)
12512
12513 For each channel of each frame, the filter computes the input range and maps
12514 it linearly to the user-specified output range. The output range defaults
12515 to the full dynamic range from pure black to pure white.
12516
12517 Temporal smoothing can be used on the input range to reduce flickering (rapid
12518 changes in brightness) caused when small dark or bright objects enter or leave
12519 the scene. This is similar to the auto-exposure (automatic gain control) on a
12520 video camera, and, like a video camera, it may cause a period of over- or
12521 under-exposure of the video.
12522
12523 The R,G,B channels can be normalized independently, which may cause some
12524 color shifting, or linked together as a single channel, which prevents
12525 color shifting. Linked normalization preserves hue. Independent normalization
12526 does not, so it can be used to remove some color casts. Independent and linked
12527 normalization can be combined in any ratio.
12528
12529 The normalize filter accepts the following options:
12530
12531 @table @option
12532 @item blackpt
12533 @item whitept
12534 Colors which define the output range. The minimum input value is mapped to
12535 the @var{blackpt}. The maximum input value is mapped to the @var{whitept}.
12536 The defaults are black and white respectively. Specifying white for
12537 @var{blackpt} and black for @var{whitept} will give color-inverted,
12538 normalized video. Shades of grey can be used to reduce the dynamic range
12539 (contrast). Specifying saturated colors here can create some interesting
12540 effects.
12541
12542 @item smoothing
12543 The number of previous frames to use for temporal smoothing. The input range
12544 of each channel is smoothed using a rolling average over the current frame
12545 and the @var{smoothing} previous frames. The default is 0 (no temporal
12546 smoothing).
12547
12548 @item independence
12549 Controls the ratio of independent (color shifting) channel normalization to
12550 linked (color preserving) normalization. 0.0 is fully linked, 1.0 is fully
12551 independent. Defaults to 1.0 (fully independent).
12552
12553 @item strength
12554 Overall strength of the filter. 1.0 is full strength. 0.0 is a rather
12555 expensive no-op. Defaults to 1.0 (full strength).
12556
12557 @end table
12558
12559 @subsection Examples
12560
12561 Stretch video contrast to use the full dynamic range, with no temporal
12562 smoothing; may flicker depending on the source content:
12563 @example
12564 normalize=blackpt=black:whitept=white:smoothing=0
12565 @end example
12566
12567 As above, but with 50 frames of temporal smoothing; flicker should be
12568 reduced, depending on the source content:
12569 @example
12570 normalize=blackpt=black:whitept=white:smoothing=50
12571 @end example
12572
12573 As above, but with hue-preserving linked channel normalization:
12574 @example
12575 normalize=blackpt=black:whitept=white:smoothing=50:independence=0
12576 @end example
12577
12578 As above, but with half strength:
12579 @example
12580 normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5
12581 @end example
12582
12583 Map the darkest input color to red, the brightest input color to cyan:
12584 @example
12585 normalize=blackpt=red:whitept=cyan
12586 @end example
12587
12588 @section null
12589
12590 Pass the video source unchanged to the output.
12591
12592 @section ocr
12593 Optical Character Recognition
12594
12595 This filter uses Tesseract for optical character recognition. To enable
12596 compilation of this filter, you need to configure FFmpeg with
12597 @code{--enable-libtesseract}.
12598
12599 It accepts the following options:
12600
12601 @table @option
12602 @item datapath
12603 Set datapath to tesseract data. Default is to use whatever was
12604 set at installation.
12605
12606 @item language
12607 Set language, default is "eng".
12608
12609 @item whitelist
12610 Set character whitelist.
12611
12612 @item blacklist
12613 Set character blacklist.
12614 @end table
12615
12616 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
12617
12618 @section ocv
12619
12620 Apply a video transform using libopencv.
12621
12622 To enable this filter, install the libopencv library and headers and
12623 configure FFmpeg with @code{--enable-libopencv}.
12624
12625 It accepts the following parameters:
12626
12627 @table @option
12628
12629 @item filter_name
12630 The name of the libopencv filter to apply.
12631
12632 @item filter_params
12633 The parameters to pass to the libopencv filter. If not specified, the default
12634 values are assumed.
12635
12636 @end table
12637
12638 Refer to the official libopencv documentation for more precise
12639 information:
12640 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
12641
12642 Several libopencv filters are supported; see the following subsections.
12643
12644 @anchor{dilate}
12645 @subsection dilate
12646
12647 Dilate an image by using a specific structuring element.
12648 It corresponds to the libopencv function @code{cvDilate}.
12649
12650 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
12651
12652 @var{struct_el} represents a structuring element, and has the syntax:
12653 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
12654
12655 @var{cols} and @var{rows} represent the number of columns and rows of
12656 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
12657 point, and @var{shape} the shape for the structuring element. @var{shape}
12658 must be "rect", "cross", "ellipse", or "custom".
12659
12660 If the value for @var{shape} is "custom", it must be followed by a
12661 string of the form "=@var{filename}". The file with name
12662 @var{filename} is assumed to represent a binary image, with each
12663 printable character corresponding to a bright pixel. When a custom
12664 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
12665 or columns and rows of the read file are assumed instead.
12666
12667 The default value for @var{struct_el} is "3x3+0x0/rect".
12668
12669 @var{nb_iterations} specifies the number of times the transform is
12670 applied to the image, and defaults to 1.
12671
12672 Some examples:
12673 @example
12674 # Use the default values
12675 ocv=dilate
12676
12677 # Dilate using a structuring element with a 5x5 cross, iterating two times
12678 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
12679
12680 # Read the shape from the file diamond.shape, iterating two times.
12681 # The file diamond.shape may contain a pattern of characters like this
12682 #   *
12683 #  ***
12684 # *****
12685 #  ***
12686 #   *
12687 # The specified columns and rows are ignored
12688 # but the anchor point coordinates are not
12689 ocv=dilate:0x0+2x2/custom=diamond.shape|2
12690 @end example
12691
12692 @subsection erode
12693
12694 Erode an image by using a specific structuring element.
12695 It corresponds to the libopencv function @code{cvErode}.
12696
12697 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
12698 with the same syntax and semantics as the @ref{dilate} filter.
12699
12700 @subsection smooth
12701
12702 Smooth the input video.
12703
12704 The filter takes the following parameters:
12705 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
12706
12707 @var{type} is the type of smooth filter to apply, and must be one of
12708 the following values: "blur", "blur_no_scale", "median", "gaussian",
12709 or "bilateral". The default value is "gaussian".
12710
12711 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
12712 depend on the smooth type. @var{param1} and
12713 @var{param2} accept integer positive values or 0. @var{param3} and
12714 @var{param4} accept floating point values.
12715
12716 The default value for @var{param1} is 3. The default value for the
12717 other parameters is 0.
12718
12719 These parameters correspond to the parameters assigned to the
12720 libopencv function @code{cvSmooth}.
12721
12722 @section oscilloscope
12723
12724 2D Video Oscilloscope.
12725
12726 Useful to measure spatial impulse, step responses, chroma delays, etc.
12727
12728 It accepts the following parameters:
12729
12730 @table @option
12731 @item x
12732 Set scope center x position.
12733
12734 @item y
12735 Set scope center y position.
12736
12737 @item s
12738 Set scope size, relative to frame diagonal.
12739
12740 @item t
12741 Set scope tilt/rotation.
12742
12743 @item o
12744 Set trace opacity.
12745
12746 @item tx
12747 Set trace center x position.
12748
12749 @item ty
12750 Set trace center y position.
12751
12752 @item tw
12753 Set trace width, relative to width of frame.
12754
12755 @item th
12756 Set trace height, relative to height of frame.
12757
12758 @item c
12759 Set which components to trace. By default it traces first three components.
12760
12761 @item g
12762 Draw trace grid. By default is enabled.
12763
12764 @item st
12765 Draw some statistics. By default is enabled.
12766
12767 @item sc
12768 Draw scope. By default is enabled.
12769 @end table
12770
12771 @subsection Examples
12772
12773 @itemize
12774 @item
12775 Inspect full first row of video frame.
12776 @example
12777 oscilloscope=x=0.5:y=0:s=1
12778 @end example
12779
12780 @item
12781 Inspect full last row of video frame.
12782 @example
12783 oscilloscope=x=0.5:y=1:s=1
12784 @end example
12785
12786 @item
12787 Inspect full 5th line of video frame of height 1080.
12788 @example
12789 oscilloscope=x=0.5:y=5/1080:s=1
12790 @end example
12791
12792 @item
12793 Inspect full last column of video frame.
12794 @example
12795 oscilloscope=x=1:y=0.5:s=1:t=1
12796 @end example
12797
12798 @end itemize
12799
12800 @anchor{overlay}
12801 @section overlay
12802
12803 Overlay one video on top of another.
12804
12805 It takes two inputs and has one output. The first input is the "main"
12806 video on which the second input is overlaid.
12807
12808 It accepts the following parameters:
12809
12810 A description of the accepted options follows.
12811
12812 @table @option
12813 @item x
12814 @item y
12815 Set the expression for the x and y coordinates of the overlaid video
12816 on the main video. Default value is "0" for both expressions. In case
12817 the expression is invalid, it is set to a huge value (meaning that the
12818 overlay will not be displayed within the output visible area).
12819
12820 @item eof_action
12821 See @ref{framesync}.
12822
12823 @item eval
12824 Set when the expressions for @option{x}, and @option{y} are evaluated.
12825
12826 It accepts the following values:
12827 @table @samp
12828 @item init
12829 only evaluate expressions once during the filter initialization or
12830 when a command is processed
12831
12832 @item frame
12833 evaluate expressions for each incoming frame
12834 @end table
12835
12836 Default value is @samp{frame}.
12837
12838 @item shortest
12839 See @ref{framesync}.
12840
12841 @item format
12842 Set the format for the output video.
12843
12844 It accepts the following values:
12845 @table @samp
12846 @item yuv420
12847 force YUV420 output
12848
12849 @item yuv422
12850 force YUV422 output
12851
12852 @item yuv444
12853 force YUV444 output
12854
12855 @item rgb
12856 force packed RGB output
12857
12858 @item gbrp
12859 force planar RGB output
12860
12861 @item auto
12862 automatically pick format
12863 @end table
12864
12865 Default value is @samp{yuv420}.
12866
12867 @item repeatlast
12868 See @ref{framesync}.
12869
12870 @item alpha
12871 Set format of alpha of the overlaid video, it can be @var{straight} or
12872 @var{premultiplied}. Default is @var{straight}.
12873 @end table
12874
12875 The @option{x}, and @option{y} expressions can contain the following
12876 parameters.
12877
12878 @table @option
12879 @item main_w, W
12880 @item main_h, H
12881 The main input width and height.
12882
12883 @item overlay_w, w
12884 @item overlay_h, h
12885 The overlay input width and height.
12886
12887 @item x
12888 @item y
12889 The computed values for @var{x} and @var{y}. They are evaluated for
12890 each new frame.
12891
12892 @item hsub
12893 @item vsub
12894 horizontal and vertical chroma subsample values of the output
12895 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
12896 @var{vsub} is 1.
12897
12898 @item n
12899 the number of input frame, starting from 0
12900
12901 @item pos
12902 the position in the file of the input frame, NAN if unknown
12903
12904 @item t
12905 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
12906
12907 @end table
12908
12909 This filter also supports the @ref{framesync} options.
12910
12911 Note that the @var{n}, @var{pos}, @var{t} variables are available only
12912 when evaluation is done @emph{per frame}, and will evaluate to NAN
12913 when @option{eval} is set to @samp{init}.
12914
12915 Be aware that frames are taken from each input video in timestamp
12916 order, hence, if their initial timestamps differ, it is a good idea
12917 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
12918 have them begin in the same zero timestamp, as the example for
12919 the @var{movie} filter does.
12920
12921 You can chain together more overlays but you should test the
12922 efficiency of such approach.
12923
12924 @subsection Commands
12925
12926 This filter supports the following commands:
12927 @table @option
12928 @item x
12929 @item y
12930 Modify the x and y of the overlay input.
12931 The command accepts the same syntax of the corresponding option.
12932
12933 If the specified expression is not valid, it is kept at its current
12934 value.
12935 @end table
12936
12937 @subsection Examples
12938
12939 @itemize
12940 @item
12941 Draw the overlay at 10 pixels from the bottom right corner of the main
12942 video:
12943 @example
12944 overlay=main_w-overlay_w-10:main_h-overlay_h-10
12945 @end example
12946
12947 Using named options the example above becomes:
12948 @example
12949 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
12950 @end example
12951
12952 @item
12953 Insert a transparent PNG logo in the bottom left corner of the input,
12954 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
12955 @example
12956 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
12957 @end example
12958
12959 @item
12960 Insert 2 different transparent PNG logos (second logo on bottom
12961 right corner) using the @command{ffmpeg} tool:
12962 @example
12963 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
12964 @end example
12965
12966 @item
12967 Add a transparent color layer on top of the main video; @code{WxH}
12968 must specify the size of the main input to the overlay filter:
12969 @example
12970 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
12971 @end example
12972
12973 @item
12974 Play an original video and a filtered version (here with the deshake
12975 filter) side by side using the @command{ffplay} tool:
12976 @example
12977 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
12978 @end example
12979
12980 The above command is the same as:
12981 @example
12982 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
12983 @end example
12984
12985 @item
12986 Make a sliding overlay appearing from the left to the right top part of the
12987 screen starting since time 2:
12988 @example
12989 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
12990 @end example
12991
12992 @item
12993 Compose output by putting two input videos side to side:
12994 @example
12995 ffmpeg -i left.avi -i right.avi -filter_complex "
12996 nullsrc=size=200x100 [background];
12997 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
12998 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
12999 [background][left]       overlay=shortest=1       [background+left];
13000 [background+left][right] overlay=shortest=1:x=100 [left+right]
13001 "
13002 @end example
13003
13004 @item
13005 Mask 10-20 seconds of a video by applying the delogo filter to a section
13006 @example
13007 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
13008 -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]'
13009 masked.avi
13010 @end example
13011
13012 @item
13013 Chain several overlays in cascade:
13014 @example
13015 nullsrc=s=200x200 [bg];
13016 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
13017 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
13018 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
13019 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
13020 [in3] null,       [mid2] overlay=100:100 [out0]
13021 @end example
13022
13023 @end itemize
13024
13025 @section owdenoise
13026
13027 Apply Overcomplete Wavelet denoiser.
13028
13029 The filter accepts the following options:
13030
13031 @table @option
13032 @item depth
13033 Set depth.
13034
13035 Larger depth values will denoise lower frequency components more, but
13036 slow down filtering.
13037
13038 Must be an int in the range 8-16, default is @code{8}.
13039
13040 @item luma_strength, ls
13041 Set luma strength.
13042
13043 Must be a double value in the range 0-1000, default is @code{1.0}.
13044
13045 @item chroma_strength, cs
13046 Set chroma strength.
13047
13048 Must be a double value in the range 0-1000, default is @code{1.0}.
13049 @end table
13050
13051 @anchor{pad}
13052 @section pad
13053
13054 Add paddings to the input image, and place the original input at the
13055 provided @var{x}, @var{y} coordinates.
13056
13057 It accepts the following parameters:
13058
13059 @table @option
13060 @item width, w
13061 @item height, h
13062 Specify an expression for the size of the output image with the
13063 paddings added. If the value for @var{width} or @var{height} is 0, the
13064 corresponding input size is used for the output.
13065
13066 The @var{width} expression can reference the value set by the
13067 @var{height} expression, and vice versa.
13068
13069 The default value of @var{width} and @var{height} is 0.
13070
13071 @item x
13072 @item y
13073 Specify the offsets to place the input image at within the padded area,
13074 with respect to the top/left border of the output image.
13075
13076 The @var{x} expression can reference the value set by the @var{y}
13077 expression, and vice versa.
13078
13079 The default value of @var{x} and @var{y} is 0.
13080
13081 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
13082 so the input image is centered on the padded area.
13083
13084 @item color
13085 Specify the color of the padded area. For the syntax of this option,
13086 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
13087 manual,ffmpeg-utils}.
13088
13089 The default value of @var{color} is "black".
13090
13091 @item eval
13092 Specify when to evaluate  @var{width}, @var{height}, @var{x} and @var{y} expression.
13093
13094 It accepts the following values:
13095
13096 @table @samp
13097 @item init
13098 Only evaluate expressions once during the filter initialization or when
13099 a command is processed.
13100
13101 @item frame
13102 Evaluate expressions for each incoming frame.
13103
13104 @end table
13105
13106 Default value is @samp{init}.
13107
13108 @item aspect
13109 Pad to aspect instead to a resolution.
13110
13111 @end table
13112
13113 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
13114 options are expressions containing the following constants:
13115
13116 @table @option
13117 @item in_w
13118 @item in_h
13119 The input video width and height.
13120
13121 @item iw
13122 @item ih
13123 These are the same as @var{in_w} and @var{in_h}.
13124
13125 @item out_w
13126 @item out_h
13127 The output width and height (the size of the padded area), as
13128 specified by the @var{width} and @var{height} expressions.
13129
13130 @item ow
13131 @item oh
13132 These are the same as @var{out_w} and @var{out_h}.
13133
13134 @item x
13135 @item y
13136 The x and y offsets as specified by the @var{x} and @var{y}
13137 expressions, or NAN if not yet specified.
13138
13139 @item a
13140 same as @var{iw} / @var{ih}
13141
13142 @item sar
13143 input sample aspect ratio
13144
13145 @item dar
13146 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
13147
13148 @item hsub
13149 @item vsub
13150 The horizontal and vertical chroma subsample values. For example for the
13151 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
13152 @end table
13153
13154 @subsection Examples
13155
13156 @itemize
13157 @item
13158 Add paddings with the color "violet" to the input video. The output video
13159 size is 640x480, and the top-left corner of the input video is placed at
13160 column 0, row 40
13161 @example
13162 pad=640:480:0:40:violet
13163 @end example
13164
13165 The example above is equivalent to the following command:
13166 @example
13167 pad=width=640:height=480:x=0:y=40:color=violet
13168 @end example
13169
13170 @item
13171 Pad the input to get an output with dimensions increased by 3/2,
13172 and put the input video at the center of the padded area:
13173 @example
13174 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
13175 @end example
13176
13177 @item
13178 Pad the input to get a squared output with size equal to the maximum
13179 value between the input width and height, and put the input video at
13180 the center of the padded area:
13181 @example
13182 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
13183 @end example
13184
13185 @item
13186 Pad the input to get a final w/h ratio of 16:9:
13187 @example
13188 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
13189 @end example
13190
13191 @item
13192 In case of anamorphic video, in order to set the output display aspect
13193 correctly, it is necessary to use @var{sar} in the expression,
13194 according to the relation:
13195 @example
13196 (ih * X / ih) * sar = output_dar
13197 X = output_dar / sar
13198 @end example
13199
13200 Thus the previous example needs to be modified to:
13201 @example
13202 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
13203 @end example
13204
13205 @item
13206 Double the output size and put the input video in the bottom-right
13207 corner of the output padded area:
13208 @example
13209 pad="2*iw:2*ih:ow-iw:oh-ih"
13210 @end example
13211 @end itemize
13212
13213 @anchor{palettegen}
13214 @section palettegen
13215
13216 Generate one palette for a whole video stream.
13217
13218 It accepts the following options:
13219
13220 @table @option
13221 @item max_colors
13222 Set the maximum number of colors to quantize in the palette.
13223 Note: the palette will still contain 256 colors; the unused palette entries
13224 will be black.
13225
13226 @item reserve_transparent
13227 Create a palette of 255 colors maximum and reserve the last one for
13228 transparency. Reserving the transparency color is useful for GIF optimization.
13229 If not set, the maximum of colors in the palette will be 256. You probably want
13230 to disable this option for a standalone image.
13231 Set by default.
13232
13233 @item transparency_color
13234 Set the color that will be used as background for transparency.
13235
13236 @item stats_mode
13237 Set statistics mode.
13238
13239 It accepts the following values:
13240 @table @samp
13241 @item full
13242 Compute full frame histograms.
13243 @item diff
13244 Compute histograms only for the part that differs from previous frame. This
13245 might be relevant to give more importance to the moving part of your input if
13246 the background is static.
13247 @item single
13248 Compute new histogram for each frame.
13249 @end table
13250
13251 Default value is @var{full}.
13252 @end table
13253
13254 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
13255 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
13256 color quantization of the palette. This information is also visible at
13257 @var{info} logging level.
13258
13259 @subsection Examples
13260
13261 @itemize
13262 @item
13263 Generate a representative palette of a given video using @command{ffmpeg}:
13264 @example
13265 ffmpeg -i input.mkv -vf palettegen palette.png
13266 @end example
13267 @end itemize
13268
13269 @section paletteuse
13270
13271 Use a palette to downsample an input video stream.
13272
13273 The filter takes two inputs: one video stream and a palette. The palette must
13274 be a 256 pixels image.
13275
13276 It accepts the following options:
13277
13278 @table @option
13279 @item dither
13280 Select dithering mode. Available algorithms are:
13281 @table @samp
13282 @item bayer
13283 Ordered 8x8 bayer dithering (deterministic)
13284 @item heckbert
13285 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
13286 Note: this dithering is sometimes considered "wrong" and is included as a
13287 reference.
13288 @item floyd_steinberg
13289 Floyd and Steingberg dithering (error diffusion)
13290 @item sierra2
13291 Frankie Sierra dithering v2 (error diffusion)
13292 @item sierra2_4a
13293 Frankie Sierra dithering v2 "Lite" (error diffusion)
13294 @end table
13295
13296 Default is @var{sierra2_4a}.
13297
13298 @item bayer_scale
13299 When @var{bayer} dithering is selected, this option defines the scale of the
13300 pattern (how much the crosshatch pattern is visible). A low value means more
13301 visible pattern for less banding, and higher value means less visible pattern
13302 at the cost of more banding.
13303
13304 The option must be an integer value in the range [0,5]. Default is @var{2}.
13305
13306 @item diff_mode
13307 If set, define the zone to process
13308
13309 @table @samp
13310 @item rectangle
13311 Only the changing rectangle will be reprocessed. This is similar to GIF
13312 cropping/offsetting compression mechanism. This option can be useful for speed
13313 if only a part of the image is changing, and has use cases such as limiting the
13314 scope of the error diffusal @option{dither} to the rectangle that bounds the
13315 moving scene (it leads to more deterministic output if the scene doesn't change
13316 much, and as a result less moving noise and better GIF compression).
13317 @end table
13318
13319 Default is @var{none}.
13320
13321 @item new
13322 Take new palette for each output frame.
13323
13324 @item alpha_threshold
13325 Sets the alpha threshold for transparency. Alpha values above this threshold
13326 will be treated as completely opaque, and values below this threshold will be
13327 treated as completely transparent.
13328
13329 The option must be an integer value in the range [0,255]. Default is @var{128}.
13330 @end table
13331
13332 @subsection Examples
13333
13334 @itemize
13335 @item
13336 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
13337 using @command{ffmpeg}:
13338 @example
13339 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
13340 @end example
13341 @end itemize
13342
13343 @section perspective
13344
13345 Correct perspective of video not recorded perpendicular to the screen.
13346
13347 A description of the accepted parameters follows.
13348
13349 @table @option
13350 @item x0
13351 @item y0
13352 @item x1
13353 @item y1
13354 @item x2
13355 @item y2
13356 @item x3
13357 @item y3
13358 Set coordinates expression for top left, top right, bottom left and bottom right corners.
13359 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
13360 If the @code{sense} option is set to @code{source}, then the specified points will be sent
13361 to the corners of the destination. If the @code{sense} option is set to @code{destination},
13362 then the corners of the source will be sent to the specified coordinates.
13363
13364 The expressions can use the following variables:
13365
13366 @table @option
13367 @item W
13368 @item H
13369 the width and height of video frame.
13370 @item in
13371 Input frame count.
13372 @item on
13373 Output frame count.
13374 @end table
13375
13376 @item interpolation
13377 Set interpolation for perspective correction.
13378
13379 It accepts the following values:
13380 @table @samp
13381 @item linear
13382 @item cubic
13383 @end table
13384
13385 Default value is @samp{linear}.
13386
13387 @item sense
13388 Set interpretation of coordinate options.
13389
13390 It accepts the following values:
13391 @table @samp
13392 @item 0, source
13393
13394 Send point in the source specified by the given coordinates to
13395 the corners of the destination.
13396
13397 @item 1, destination
13398
13399 Send the corners of the source to the point in the destination specified
13400 by the given coordinates.
13401
13402 Default value is @samp{source}.
13403 @end table
13404
13405 @item eval
13406 Set when the expressions for coordinates @option{x0,y0,...x3,y3} are evaluated.
13407
13408 It accepts the following values:
13409 @table @samp
13410 @item init
13411 only evaluate expressions once during the filter initialization or
13412 when a command is processed
13413
13414 @item frame
13415 evaluate expressions for each incoming frame
13416 @end table
13417
13418 Default value is @samp{init}.
13419 @end table
13420
13421 @section phase
13422
13423 Delay interlaced video by one field time so that the field order changes.
13424
13425 The intended use is to fix PAL movies that have been captured with the
13426 opposite field order to the film-to-video transfer.
13427
13428 A description of the accepted parameters follows.
13429
13430 @table @option
13431 @item mode
13432 Set phase mode.
13433
13434 It accepts the following values:
13435 @table @samp
13436 @item t
13437 Capture field order top-first, transfer bottom-first.
13438 Filter will delay the bottom field.
13439
13440 @item b
13441 Capture field order bottom-first, transfer top-first.
13442 Filter will delay the top field.
13443
13444 @item p
13445 Capture and transfer with the same field order. This mode only exists
13446 for the documentation of the other options to refer to, but if you
13447 actually select it, the filter will faithfully do nothing.
13448
13449 @item a
13450 Capture field order determined automatically by field flags, transfer
13451 opposite.
13452 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
13453 basis using field flags. If no field information is available,
13454 then this works just like @samp{u}.
13455
13456 @item u
13457 Capture unknown or varying, transfer opposite.
13458 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
13459 analyzing the images and selecting the alternative that produces best
13460 match between the fields.
13461
13462 @item T
13463 Capture top-first, transfer unknown or varying.
13464 Filter selects among @samp{t} and @samp{p} using image analysis.
13465
13466 @item B
13467 Capture bottom-first, transfer unknown or varying.
13468 Filter selects among @samp{b} and @samp{p} using image analysis.
13469
13470 @item A
13471 Capture determined by field flags, transfer unknown or varying.
13472 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
13473 image analysis. If no field information is available, then this works just
13474 like @samp{U}. This is the default mode.
13475
13476 @item U
13477 Both capture and transfer unknown or varying.
13478 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
13479 @end table
13480 @end table
13481
13482 @section pixdesctest
13483
13484 Pixel format descriptor test filter, mainly useful for internal
13485 testing. The output video should be equal to the input video.
13486
13487 For example:
13488 @example
13489 format=monow, pixdesctest
13490 @end example
13491
13492 can be used to test the monowhite pixel format descriptor definition.
13493
13494 @section pixscope
13495
13496 Display sample values of color channels. Mainly useful for checking color
13497 and levels. Minimum supported resolution is 640x480.
13498
13499 The filters accept the following options:
13500
13501 @table @option
13502 @item x
13503 Set scope X position, relative offset on X axis.
13504
13505 @item y
13506 Set scope Y position, relative offset on Y axis.
13507
13508 @item w
13509 Set scope width.
13510
13511 @item h
13512 Set scope height.
13513
13514 @item o
13515 Set window opacity. This window also holds statistics about pixel area.
13516
13517 @item wx
13518 Set window X position, relative offset on X axis.
13519
13520 @item wy
13521 Set window Y position, relative offset on Y axis.
13522 @end table
13523
13524 @section pp
13525
13526 Enable the specified chain of postprocessing subfilters using libpostproc. This
13527 library should be automatically selected with a GPL build (@code{--enable-gpl}).
13528 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
13529 Each subfilter and some options have a short and a long name that can be used
13530 interchangeably, i.e. dr/dering are the same.
13531
13532 The filters accept the following options:
13533
13534 @table @option
13535 @item subfilters
13536 Set postprocessing subfilters string.
13537 @end table
13538
13539 All subfilters share common options to determine their scope:
13540
13541 @table @option
13542 @item a/autoq
13543 Honor the quality commands for this subfilter.
13544
13545 @item c/chrom
13546 Do chrominance filtering, too (default).
13547
13548 @item y/nochrom
13549 Do luminance filtering only (no chrominance).
13550
13551 @item n/noluma
13552 Do chrominance filtering only (no luminance).
13553 @end table
13554
13555 These options can be appended after the subfilter name, separated by a '|'.
13556
13557 Available subfilters are:
13558
13559 @table @option
13560 @item hb/hdeblock[|difference[|flatness]]
13561 Horizontal deblocking filter
13562 @table @option
13563 @item difference
13564 Difference factor where higher values mean more deblocking (default: @code{32}).
13565 @item flatness
13566 Flatness threshold where lower values mean more deblocking (default: @code{39}).
13567 @end table
13568
13569 @item vb/vdeblock[|difference[|flatness]]
13570 Vertical deblocking filter
13571 @table @option
13572 @item difference
13573 Difference factor where higher values mean more deblocking (default: @code{32}).
13574 @item flatness
13575 Flatness threshold where lower values mean more deblocking (default: @code{39}).
13576 @end table
13577
13578 @item ha/hadeblock[|difference[|flatness]]
13579 Accurate horizontal deblocking filter
13580 @table @option
13581 @item difference
13582 Difference factor where higher values mean more deblocking (default: @code{32}).
13583 @item flatness
13584 Flatness threshold where lower values mean more deblocking (default: @code{39}).
13585 @end table
13586
13587 @item va/vadeblock[|difference[|flatness]]
13588 Accurate vertical deblocking filter
13589 @table @option
13590 @item difference
13591 Difference factor where higher values mean more deblocking (default: @code{32}).
13592 @item flatness
13593 Flatness threshold where lower values mean more deblocking (default: @code{39}).
13594 @end table
13595 @end table
13596
13597 The horizontal and vertical deblocking filters share the difference and
13598 flatness values so you cannot set different horizontal and vertical
13599 thresholds.
13600
13601 @table @option
13602 @item h1/x1hdeblock
13603 Experimental horizontal deblocking filter
13604
13605 @item v1/x1vdeblock
13606 Experimental vertical deblocking filter
13607
13608 @item dr/dering
13609 Deringing filter
13610
13611 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
13612 @table @option
13613 @item threshold1
13614 larger -> stronger filtering
13615 @item threshold2
13616 larger -> stronger filtering
13617 @item threshold3
13618 larger -> stronger filtering
13619 @end table
13620
13621 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
13622 @table @option
13623 @item f/fullyrange
13624 Stretch luminance to @code{0-255}.
13625 @end table
13626
13627 @item lb/linblenddeint
13628 Linear blend deinterlacing filter that deinterlaces the given block by
13629 filtering all lines with a @code{(1 2 1)} filter.
13630
13631 @item li/linipoldeint
13632 Linear interpolating deinterlacing filter that deinterlaces the given block by
13633 linearly interpolating every second line.
13634
13635 @item ci/cubicipoldeint
13636 Cubic interpolating deinterlacing filter deinterlaces the given block by
13637 cubically interpolating every second line.
13638
13639 @item md/mediandeint
13640 Median deinterlacing filter that deinterlaces the given block by applying a
13641 median filter to every second line.
13642
13643 @item fd/ffmpegdeint
13644 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
13645 second line with a @code{(-1 4 2 4 -1)} filter.
13646
13647 @item l5/lowpass5
13648 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
13649 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
13650
13651 @item fq/forceQuant[|quantizer]
13652 Overrides the quantizer table from the input with the constant quantizer you
13653 specify.
13654 @table @option
13655 @item quantizer
13656 Quantizer to use
13657 @end table
13658
13659 @item de/default
13660 Default pp filter combination (@code{hb|a,vb|a,dr|a})
13661
13662 @item fa/fast
13663 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
13664
13665 @item ac
13666 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
13667 @end table
13668
13669 @subsection Examples
13670
13671 @itemize
13672 @item
13673 Apply horizontal and vertical deblocking, deringing and automatic
13674 brightness/contrast:
13675 @example
13676 pp=hb/vb/dr/al
13677 @end example
13678
13679 @item
13680 Apply default filters without brightness/contrast correction:
13681 @example
13682 pp=de/-al
13683 @end example
13684
13685 @item
13686 Apply default filters and temporal denoiser:
13687 @example
13688 pp=default/tmpnoise|1|2|3
13689 @end example
13690
13691 @item
13692 Apply deblocking on luminance only, and switch vertical deblocking on or off
13693 automatically depending on available CPU time:
13694 @example
13695 pp=hb|y/vb|a
13696 @end example
13697 @end itemize
13698
13699 @section pp7
13700 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
13701 similar to spp = 6 with 7 point DCT, where only the center sample is
13702 used after IDCT.
13703
13704 The filter accepts the following options:
13705
13706 @table @option
13707 @item qp
13708 Force a constant quantization parameter. It accepts an integer in range
13709 0 to 63. If not set, the filter will use the QP from the video stream
13710 (if available).
13711
13712 @item mode
13713 Set thresholding mode. Available modes are:
13714
13715 @table @samp
13716 @item hard
13717 Set hard thresholding.
13718 @item soft
13719 Set soft thresholding (better de-ringing effect, but likely blurrier).
13720 @item medium
13721 Set medium thresholding (good results, default).
13722 @end table
13723 @end table
13724
13725 @section premultiply
13726 Apply alpha premultiply effect to input video stream using first plane
13727 of second stream as alpha.
13728
13729 Both streams must have same dimensions and same pixel format.
13730
13731 The filter accepts the following option:
13732
13733 @table @option
13734 @item planes
13735 Set which planes will be processed, unprocessed planes will be copied.
13736 By default value 0xf, all planes will be processed.
13737
13738 @item inplace
13739 Do not require 2nd input for processing, instead use alpha plane from input stream.
13740 @end table
13741
13742 @section prewitt
13743 Apply prewitt operator to input video stream.
13744
13745 The filter accepts the following option:
13746
13747 @table @option
13748 @item planes
13749 Set which planes will be processed, unprocessed planes will be copied.
13750 By default value 0xf, all planes will be processed.
13751
13752 @item scale
13753 Set value which will be multiplied with filtered result.
13754
13755 @item delta
13756 Set value which will be added to filtered result.
13757 @end table
13758
13759 @anchor{program_opencl}
13760 @section program_opencl
13761
13762 Filter video using an OpenCL program.
13763
13764 @table @option
13765
13766 @item source
13767 OpenCL program source file.
13768
13769 @item kernel
13770 Kernel name in program.
13771
13772 @item inputs
13773 Number of inputs to the filter.  Defaults to 1.
13774
13775 @item size, s
13776 Size of output frames.  Defaults to the same as the first input.
13777
13778 @end table
13779
13780 The program source file must contain a kernel function with the given name,
13781 which will be run once for each plane of the output.  Each run on a plane
13782 gets enqueued as a separate 2D global NDRange with one work-item for each
13783 pixel to be generated.  The global ID offset for each work-item is therefore
13784 the coordinates of a pixel in the destination image.
13785
13786 The kernel function needs to take the following arguments:
13787 @itemize
13788 @item
13789 Destination image, @var{__write_only image2d_t}.
13790
13791 This image will become the output; the kernel should write all of it.
13792 @item
13793 Frame index, @var{unsigned int}.
13794
13795 This is a counter starting from zero and increasing by one for each frame.
13796 @item
13797 Source images, @var{__read_only image2d_t}.
13798
13799 These are the most recent images on each input.  The kernel may read from
13800 them to generate the output, but they can't be written to.
13801 @end itemize
13802
13803 Example programs:
13804
13805 @itemize
13806 @item
13807 Copy the input to the output (output must be the same size as the input).
13808 @verbatim
13809 __kernel void copy(__write_only image2d_t destination,
13810                    unsigned int index,
13811                    __read_only  image2d_t source)
13812 {
13813     const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
13814
13815     int2 location = (int2)(get_global_id(0), get_global_id(1));
13816
13817     float4 value = read_imagef(source, sampler, location);
13818
13819     write_imagef(destination, location, value);
13820 }
13821 @end verbatim
13822
13823 @item
13824 Apply a simple transformation, rotating the input by an amount increasing
13825 with the index counter.  Pixel values are linearly interpolated by the
13826 sampler, and the output need not have the same dimensions as the input.
13827 @verbatim
13828 __kernel void rotate_image(__write_only image2d_t dst,
13829                            unsigned int index,
13830                            __read_only  image2d_t src)
13831 {
13832     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
13833                                CLK_FILTER_LINEAR);
13834
13835     float angle = (float)index / 100.0f;
13836
13837     float2 dst_dim = convert_float2(get_image_dim(dst));
13838     float2 src_dim = convert_float2(get_image_dim(src));
13839
13840     float2 dst_cen = dst_dim / 2.0f;
13841     float2 src_cen = src_dim / 2.0f;
13842
13843     int2   dst_loc = (int2)(get_global_id(0), get_global_id(1));
13844
13845     float2 dst_pos = convert_float2(dst_loc) - dst_cen;
13846     float2 src_pos = {
13847         cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
13848         sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
13849     };
13850     src_pos = src_pos * src_dim / dst_dim;
13851
13852     float2 src_loc = src_pos + src_cen;
13853
13854     if (src_loc.x < 0.0f      || src_loc.y < 0.0f ||
13855         src_loc.x > src_dim.x || src_loc.y > src_dim.y)
13856         write_imagef(dst, dst_loc, 0.5f);
13857     else
13858         write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
13859 }
13860 @end verbatim
13861
13862 @item
13863 Blend two inputs together, with the amount of each input used varying
13864 with the index counter.
13865 @verbatim
13866 __kernel void blend_images(__write_only image2d_t dst,
13867                            unsigned int index,
13868                            __read_only  image2d_t src1,
13869                            __read_only  image2d_t src2)
13870 {
13871     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
13872                                CLK_FILTER_LINEAR);
13873
13874     float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
13875
13876     int2  dst_loc = (int2)(get_global_id(0), get_global_id(1));
13877     int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
13878     int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
13879
13880     float4 val1 = read_imagef(src1, sampler, src1_loc);
13881     float4 val2 = read_imagef(src2, sampler, src2_loc);
13882
13883     write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
13884 }
13885 @end verbatim
13886
13887 @end itemize
13888
13889 @section pseudocolor
13890
13891 Alter frame colors in video with pseudocolors.
13892
13893 This filter accept the following options:
13894
13895 @table @option
13896 @item c0
13897 set pixel first component expression
13898
13899 @item c1
13900 set pixel second component expression
13901
13902 @item c2
13903 set pixel third component expression
13904
13905 @item c3
13906 set pixel fourth component expression, corresponds to the alpha component
13907
13908 @item i
13909 set component to use as base for altering colors
13910 @end table
13911
13912 Each of them specifies the expression to use for computing the lookup table for
13913 the corresponding pixel component values.
13914
13915 The expressions can contain the following constants and functions:
13916
13917 @table @option
13918 @item w
13919 @item h
13920 The input width and height.
13921
13922 @item val
13923 The input value for the pixel component.
13924
13925 @item ymin, umin, vmin, amin
13926 The minimum allowed component value.
13927
13928 @item ymax, umax, vmax, amax
13929 The maximum allowed component value.
13930 @end table
13931
13932 All expressions default to "val".
13933
13934 @subsection Examples
13935
13936 @itemize
13937 @item
13938 Change too high luma values to gradient:
13939 @example
13940 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'"
13941 @end example
13942 @end itemize
13943
13944 @section psnr
13945
13946 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
13947 Ratio) between two input videos.
13948
13949 This filter takes in input two input videos, the first input is
13950 considered the "main" source and is passed unchanged to the
13951 output. The second input is used as a "reference" video for computing
13952 the PSNR.
13953
13954 Both video inputs must have the same resolution and pixel format for
13955 this filter to work correctly. Also it assumes that both inputs
13956 have the same number of frames, which are compared one by one.
13957
13958 The obtained average PSNR is printed through the logging system.
13959
13960 The filter stores the accumulated MSE (mean squared error) of each
13961 frame, and at the end of the processing it is averaged across all frames
13962 equally, and the following formula is applied to obtain the PSNR:
13963
13964 @example
13965 PSNR = 10*log10(MAX^2/MSE)
13966 @end example
13967
13968 Where MAX is the average of the maximum values of each component of the
13969 image.
13970
13971 The description of the accepted parameters follows.
13972
13973 @table @option
13974 @item stats_file, f
13975 If specified the filter will use the named file to save the PSNR of
13976 each individual frame. When filename equals "-" the data is sent to
13977 standard output.
13978
13979 @item stats_version
13980 Specifies which version of the stats file format to use. Details of
13981 each format are written below.
13982 Default value is 1.
13983
13984 @item stats_add_max
13985 Determines whether the max value is output to the stats log.
13986 Default value is 0.
13987 Requires stats_version >= 2. If this is set and stats_version < 2,
13988 the filter will return an error.
13989 @end table
13990
13991 This filter also supports the @ref{framesync} options.
13992
13993 The file printed if @var{stats_file} is selected, contains a sequence of
13994 key/value pairs of the form @var{key}:@var{value} for each compared
13995 couple of frames.
13996
13997 If a @var{stats_version} greater than 1 is specified, a header line precedes
13998 the list of per-frame-pair stats, with key value pairs following the frame
13999 format with the following parameters:
14000
14001 @table @option
14002 @item psnr_log_version
14003 The version of the log file format. Will match @var{stats_version}.
14004
14005 @item fields
14006 A comma separated list of the per-frame-pair parameters included in
14007 the log.
14008 @end table
14009
14010 A description of each shown per-frame-pair parameter follows:
14011
14012 @table @option
14013 @item n
14014 sequential number of the input frame, starting from 1
14015
14016 @item mse_avg
14017 Mean Square Error pixel-by-pixel average difference of the compared
14018 frames, averaged over all the image components.
14019
14020 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
14021 Mean Square Error pixel-by-pixel average difference of the compared
14022 frames for the component specified by the suffix.
14023
14024 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
14025 Peak Signal to Noise ratio of the compared frames for the component
14026 specified by the suffix.
14027
14028 @item max_avg, max_y, max_u, max_v
14029 Maximum allowed value for each channel, and average over all
14030 channels.
14031 @end table
14032
14033 For example:
14034 @example
14035 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
14036 [main][ref] psnr="stats_file=stats.log" [out]
14037 @end example
14038
14039 On this example the input file being processed is compared with the
14040 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
14041 is stored in @file{stats.log}.
14042
14043 @anchor{pullup}
14044 @section pullup
14045
14046 Pulldown reversal (inverse telecine) filter, capable of handling mixed
14047 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
14048 content.
14049
14050 The pullup filter is designed to take advantage of future context in making
14051 its decisions. This filter is stateless in the sense that it does not lock
14052 onto a pattern to follow, but it instead looks forward to the following
14053 fields in order to identify matches and rebuild progressive frames.
14054
14055 To produce content with an even framerate, insert the fps filter after
14056 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
14057 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
14058
14059 The filter accepts the following options:
14060
14061 @table @option
14062 @item jl
14063 @item jr
14064 @item jt
14065 @item jb
14066 These options set the amount of "junk" to ignore at the left, right, top, and
14067 bottom of the image, respectively. Left and right are in units of 8 pixels,
14068 while top and bottom are in units of 2 lines.
14069 The default is 8 pixels on each side.
14070
14071 @item sb
14072 Set the strict breaks. Setting this option to 1 will reduce the chances of
14073 filter generating an occasional mismatched frame, but it may also cause an
14074 excessive number of frames to be dropped during high motion sequences.
14075 Conversely, setting it to -1 will make filter match fields more easily.
14076 This may help processing of video where there is slight blurring between
14077 the fields, but may also cause there to be interlaced frames in the output.
14078 Default value is @code{0}.
14079
14080 @item mp
14081 Set the metric plane to use. It accepts the following values:
14082 @table @samp
14083 @item l
14084 Use luma plane.
14085
14086 @item u
14087 Use chroma blue plane.
14088
14089 @item v
14090 Use chroma red plane.
14091 @end table
14092
14093 This option may be set to use chroma plane instead of the default luma plane
14094 for doing filter's computations. This may improve accuracy on very clean
14095 source material, but more likely will decrease accuracy, especially if there
14096 is chroma noise (rainbow effect) or any grayscale video.
14097 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
14098 load and make pullup usable in realtime on slow machines.
14099 @end table
14100
14101 For best results (without duplicated frames in the output file) it is
14102 necessary to change the output frame rate. For example, to inverse
14103 telecine NTSC input:
14104 @example
14105 ffmpeg -i input -vf pullup -r 24000/1001 ...
14106 @end example
14107
14108 @section qp
14109
14110 Change video quantization parameters (QP).
14111
14112 The filter accepts the following option:
14113
14114 @table @option
14115 @item qp
14116 Set expression for quantization parameter.
14117 @end table
14118
14119 The expression is evaluated through the eval API and can contain, among others,
14120 the following constants:
14121
14122 @table @var
14123 @item known
14124 1 if index is not 129, 0 otherwise.
14125
14126 @item qp
14127 Sequential index starting from -129 to 128.
14128 @end table
14129
14130 @subsection Examples
14131
14132 @itemize
14133 @item
14134 Some equation like:
14135 @example
14136 qp=2+2*sin(PI*qp)
14137 @end example
14138 @end itemize
14139
14140 @section random
14141
14142 Flush video frames from internal cache of frames into a random order.
14143 No frame is discarded.
14144 Inspired by @ref{frei0r} nervous filter.
14145
14146 @table @option
14147 @item frames
14148 Set size in number of frames of internal cache, in range from @code{2} to
14149 @code{512}. Default is @code{30}.
14150
14151 @item seed
14152 Set seed for random number generator, must be an integer included between
14153 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
14154 less than @code{0}, the filter will try to use a good random seed on a
14155 best effort basis.
14156 @end table
14157
14158 @section readeia608
14159
14160 Read closed captioning (EIA-608) information from the top lines of a video frame.
14161
14162 This filter adds frame metadata for @code{lavfi.readeia608.X.cc} and
14163 @code{lavfi.readeia608.X.line}, where @code{X} is the number of the identified line
14164 with EIA-608 data (starting from 0). A description of each metadata value follows:
14165
14166 @table @option
14167 @item lavfi.readeia608.X.cc
14168 The two bytes stored as EIA-608 data (printed in hexadecimal).
14169
14170 @item lavfi.readeia608.X.line
14171 The number of the line on which the EIA-608 data was identified and read.
14172 @end table
14173
14174 This filter accepts the following options:
14175
14176 @table @option
14177 @item scan_min
14178 Set the line to start scanning for EIA-608 data. Default is @code{0}.
14179
14180 @item scan_max
14181 Set the line to end scanning for EIA-608 data. Default is @code{29}.
14182
14183 @item mac
14184 Set minimal acceptable amplitude change for sync codes detection.
14185 Default is @code{0.2}. Allowed range is @code{[0.001 - 1]}.
14186
14187 @item spw
14188 Set the ratio of width reserved for sync code detection.
14189 Default is @code{0.27}. Allowed range is @code{[0.01 - 0.7]}.
14190
14191 @item mhd
14192 Set the max peaks height difference for sync code detection.
14193 Default is @code{0.1}. Allowed range is @code{[0.0 - 0.5]}.
14194
14195 @item mpd
14196 Set max peaks period difference for sync code detection.
14197 Default is @code{0.1}. Allowed range is @code{[0.0 - 0.5]}.
14198
14199 @item msd
14200 Set the first two max start code bits differences.
14201 Default is @code{0.02}. Allowed range is @code{[0.0 - 0.5]}.
14202
14203 @item bhd
14204 Set the minimum ratio of bits height compared to 3rd start code bit.
14205 Default is @code{0.75}. Allowed range is @code{[0.01 - 1]}.
14206
14207 @item th_w
14208 Set the white color threshold. Default is @code{0.35}. Allowed range is @code{[0.1 - 1]}.
14209
14210 @item th_b
14211 Set the black color threshold. Default is @code{0.15}. Allowed range is @code{[0.0 - 0.5]}.
14212
14213 @item chp
14214 Enable checking the parity bit. In the event of a parity error, the filter will output
14215 @code{0x00} for that character. Default is false.
14216 @end table
14217
14218 @subsection Examples
14219
14220 @itemize
14221 @item
14222 Output a csv with presentation time and the first two lines of identified EIA-608 captioning data.
14223 @example
14224 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
14225 @end example
14226 @end itemize
14227
14228 @section readvitc
14229
14230 Read vertical interval timecode (VITC) information from the top lines of a
14231 video frame.
14232
14233 The filter adds frame metadata key @code{lavfi.readvitc.tc_str} with the
14234 timecode value, if a valid timecode has been detected. Further metadata key
14235 @code{lavfi.readvitc.found} is set to 0/1 depending on whether
14236 timecode data has been found or not.
14237
14238 This filter accepts the following options:
14239
14240 @table @option
14241 @item scan_max
14242 Set the maximum number of lines to scan for VITC data. If the value is set to
14243 @code{-1} the full video frame is scanned. Default is @code{45}.
14244
14245 @item thr_b
14246 Set the luma threshold for black. Accepts float numbers in the range [0.0,1.0],
14247 default value is @code{0.2}. The value must be equal or less than @code{thr_w}.
14248
14249 @item thr_w
14250 Set the luma threshold for white. Accepts float numbers in the range [0.0,1.0],
14251 default value is @code{0.6}. The value must be equal or greater than @code{thr_b}.
14252 @end table
14253
14254 @subsection Examples
14255
14256 @itemize
14257 @item
14258 Detect and draw VITC data onto the video frame; if no valid VITC is detected,
14259 draw @code{--:--:--:--} as a placeholder:
14260 @example
14261 ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%@{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--@}:x=(w-tw)/2:y=400-ascent'
14262 @end example
14263 @end itemize
14264
14265 @section remap
14266
14267 Remap pixels using 2nd: Xmap and 3rd: Ymap input video stream.
14268
14269 Destination pixel at position (X, Y) will be picked from source (x, y) position
14270 where x = Xmap(X, Y) and y = Ymap(X, Y). If mapping values are out of range, zero
14271 value for pixel will be used for destination pixel.
14272
14273 Xmap and Ymap input video streams must be of same dimensions. Output video stream
14274 will have Xmap/Ymap video stream dimensions.
14275 Xmap and Ymap input video streams are 16bit depth, single channel.
14276
14277 @section removegrain
14278
14279 The removegrain filter is a spatial denoiser for progressive video.
14280
14281 @table @option
14282 @item m0
14283 Set mode for the first plane.
14284
14285 @item m1
14286 Set mode for the second plane.
14287
14288 @item m2
14289 Set mode for the third plane.
14290
14291 @item m3
14292 Set mode for the fourth plane.
14293 @end table
14294
14295 Range of mode is from 0 to 24. Description of each mode follows:
14296
14297 @table @var
14298 @item 0
14299 Leave input plane unchanged. Default.
14300
14301 @item 1
14302 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
14303
14304 @item 2
14305 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
14306
14307 @item 3
14308 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
14309
14310 @item 4
14311 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
14312 This is equivalent to a median filter.
14313
14314 @item 5
14315 Line-sensitive clipping giving the minimal change.
14316
14317 @item 6
14318 Line-sensitive clipping, intermediate.
14319
14320 @item 7
14321 Line-sensitive clipping, intermediate.
14322
14323 @item 8
14324 Line-sensitive clipping, intermediate.
14325
14326 @item 9
14327 Line-sensitive clipping on a line where the neighbours pixels are the closest.
14328
14329 @item 10
14330 Replaces the target pixel with the closest neighbour.
14331
14332 @item 11
14333 [1 2 1] horizontal and vertical kernel blur.
14334
14335 @item 12
14336 Same as mode 11.
14337
14338 @item 13
14339 Bob mode, interpolates top field from the line where the neighbours
14340 pixels are the closest.
14341
14342 @item 14
14343 Bob mode, interpolates bottom field from the line where the neighbours
14344 pixels are the closest.
14345
14346 @item 15
14347 Bob mode, interpolates top field. Same as 13 but with a more complicated
14348 interpolation formula.
14349
14350 @item 16
14351 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
14352 interpolation formula.
14353
14354 @item 17
14355 Clips the pixel with the minimum and maximum of respectively the maximum and
14356 minimum of each pair of opposite neighbour pixels.
14357
14358 @item 18
14359 Line-sensitive clipping using opposite neighbours whose greatest distance from
14360 the current pixel is minimal.
14361
14362 @item 19
14363 Replaces the pixel with the average of its 8 neighbours.
14364
14365 @item 20
14366 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
14367
14368 @item 21
14369 Clips pixels using the averages of opposite neighbour.
14370
14371 @item 22
14372 Same as mode 21 but simpler and faster.
14373
14374 @item 23
14375 Small edge and halo removal, but reputed useless.
14376
14377 @item 24
14378 Similar as 23.
14379 @end table
14380
14381 @section removelogo
14382
14383 Suppress a TV station logo, using an image file to determine which
14384 pixels comprise the logo. It works by filling in the pixels that
14385 comprise the logo with neighboring pixels.
14386
14387 The filter accepts the following options:
14388
14389 @table @option
14390 @item filename, f
14391 Set the filter bitmap file, which can be any image format supported by
14392 libavformat. The width and height of the image file must match those of the
14393 video stream being processed.
14394 @end table
14395
14396 Pixels in the provided bitmap image with a value of zero are not
14397 considered part of the logo, non-zero pixels are considered part of
14398 the logo. If you use white (255) for the logo and black (0) for the
14399 rest, you will be safe. For making the filter bitmap, it is
14400 recommended to take a screen capture of a black frame with the logo
14401 visible, and then using a threshold filter followed by the erode
14402 filter once or twice.
14403
14404 If needed, little splotches can be fixed manually. Remember that if
14405 logo pixels are not covered, the filter quality will be much
14406 reduced. Marking too many pixels as part of the logo does not hurt as
14407 much, but it will increase the amount of blurring needed to cover over
14408 the image and will destroy more information than necessary, and extra
14409 pixels will slow things down on a large logo.
14410
14411 @section repeatfields
14412
14413 This filter uses the repeat_field flag from the Video ES headers and hard repeats
14414 fields based on its value.
14415
14416 @section reverse
14417
14418 Reverse a video clip.
14419
14420 Warning: This filter requires memory to buffer the entire clip, so trimming
14421 is suggested.
14422
14423 @subsection Examples
14424
14425 @itemize
14426 @item
14427 Take the first 5 seconds of a clip, and reverse it.
14428 @example
14429 trim=end=5,reverse
14430 @end example
14431 @end itemize
14432
14433 @section rgbashift
14434 Shift R/G/B/A pixels horizontally and/or vertically.
14435
14436 The filter accepts the following options:
14437 @table @option
14438 @item rh
14439 Set amount to shift red horizontally.
14440 @item rv
14441 Set amount to shift red vertically.
14442 @item gh
14443 Set amount to shift green horizontally.
14444 @item gv
14445 Set amount to shift green vertically.
14446 @item bh
14447 Set amount to shift blue horizontally.
14448 @item bv
14449 Set amount to shift blue vertically.
14450 @item ah
14451 Set amount to shift alpha horizontally.
14452 @item av
14453 Set amount to shift alpha vertically.
14454 @item edge
14455 Set edge mode, can be @var{smear}, default, or @var{warp}.
14456 @end table
14457
14458 @section roberts
14459 Apply roberts cross operator to input video stream.
14460
14461 The filter accepts the following option:
14462
14463 @table @option
14464 @item planes
14465 Set which planes will be processed, unprocessed planes will be copied.
14466 By default value 0xf, all planes will be processed.
14467
14468 @item scale
14469 Set value which will be multiplied with filtered result.
14470
14471 @item delta
14472 Set value which will be added to filtered result.
14473 @end table
14474
14475 @section rotate
14476
14477 Rotate video by an arbitrary angle expressed in radians.
14478
14479 The filter accepts the following options:
14480
14481 A description of the optional parameters follows.
14482 @table @option
14483 @item angle, a
14484 Set an expression for the angle by which to rotate the input video
14485 clockwise, expressed as a number of radians. A negative value will
14486 result in a counter-clockwise rotation. By default it is set to "0".
14487
14488 This expression is evaluated for each frame.
14489
14490 @item out_w, ow
14491 Set the output width expression, default value is "iw".
14492 This expression is evaluated just once during configuration.
14493
14494 @item out_h, oh
14495 Set the output height expression, default value is "ih".
14496 This expression is evaluated just once during configuration.
14497
14498 @item bilinear
14499 Enable bilinear interpolation if set to 1, a value of 0 disables
14500 it. Default value is 1.
14501
14502 @item fillcolor, c
14503 Set the color used to fill the output area not covered by the rotated
14504 image. For the general syntax of this option, check the
14505 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
14506 If the special value "none" is selected then no
14507 background is printed (useful for example if the background is never shown).
14508
14509 Default value is "black".
14510 @end table
14511
14512 The expressions for the angle and the output size can contain the
14513 following constants and functions:
14514
14515 @table @option
14516 @item n
14517 sequential number of the input frame, starting from 0. It is always NAN
14518 before the first frame is filtered.
14519
14520 @item t
14521 time in seconds of the input frame, it is set to 0 when the filter is
14522 configured. It is always NAN before the first frame is filtered.
14523
14524 @item hsub
14525 @item vsub
14526 horizontal and vertical chroma subsample values. For example for the
14527 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14528
14529 @item in_w, iw
14530 @item in_h, ih
14531 the input video width and height
14532
14533 @item out_w, ow
14534 @item out_h, oh
14535 the output width and height, that is the size of the padded area as
14536 specified by the @var{width} and @var{height} expressions
14537
14538 @item rotw(a)
14539 @item roth(a)
14540 the minimal width/height required for completely containing the input
14541 video rotated by @var{a} radians.
14542
14543 These are only available when computing the @option{out_w} and
14544 @option{out_h} expressions.
14545 @end table
14546
14547 @subsection Examples
14548
14549 @itemize
14550 @item
14551 Rotate the input by PI/6 radians clockwise:
14552 @example
14553 rotate=PI/6
14554 @end example
14555
14556 @item
14557 Rotate the input by PI/6 radians counter-clockwise:
14558 @example
14559 rotate=-PI/6
14560 @end example
14561
14562 @item
14563 Rotate the input by 45 degrees clockwise:
14564 @example
14565 rotate=45*PI/180
14566 @end example
14567
14568 @item
14569 Apply a constant rotation with period T, starting from an angle of PI/3:
14570 @example
14571 rotate=PI/3+2*PI*t/T
14572 @end example
14573
14574 @item
14575 Make the input video rotation oscillating with a period of T
14576 seconds and an amplitude of A radians:
14577 @example
14578 rotate=A*sin(2*PI/T*t)
14579 @end example
14580
14581 @item
14582 Rotate the video, output size is chosen so that the whole rotating
14583 input video is always completely contained in the output:
14584 @example
14585 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
14586 @end example
14587
14588 @item
14589 Rotate the video, reduce the output size so that no background is ever
14590 shown:
14591 @example
14592 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
14593 @end example
14594 @end itemize
14595
14596 @subsection Commands
14597
14598 The filter supports the following commands:
14599
14600 @table @option
14601 @item a, angle
14602 Set the angle expression.
14603 The command accepts the same syntax of the corresponding option.
14604
14605 If the specified expression is not valid, it is kept at its current
14606 value.
14607 @end table
14608
14609 @section sab
14610
14611 Apply Shape Adaptive Blur.
14612
14613 The filter accepts the following options:
14614
14615 @table @option
14616 @item luma_radius, lr
14617 Set luma blur filter strength, must be a value in range 0.1-4.0, default
14618 value is 1.0. A greater value will result in a more blurred image, and
14619 in slower processing.
14620
14621 @item luma_pre_filter_radius, lpfr
14622 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
14623 value is 1.0.
14624
14625 @item luma_strength, ls
14626 Set luma maximum difference between pixels to still be considered, must
14627 be a value in the 0.1-100.0 range, default value is 1.0.
14628
14629 @item chroma_radius, cr
14630 Set chroma blur filter strength, must be a value in range -0.9-4.0. A
14631 greater value will result in a more blurred image, and in slower
14632 processing.
14633
14634 @item chroma_pre_filter_radius, cpfr
14635 Set chroma pre-filter radius, must be a value in the -0.9-2.0 range.
14636
14637 @item chroma_strength, cs
14638 Set chroma maximum difference between pixels to still be considered,
14639 must be a value in the -0.9-100.0 range.
14640 @end table
14641
14642 Each chroma option value, if not explicitly specified, is set to the
14643 corresponding luma option value.
14644
14645 @anchor{scale}
14646 @section scale
14647
14648 Scale (resize) the input video, using the libswscale library.
14649
14650 The scale filter forces the output display aspect ratio to be the same
14651 of the input, by changing the output sample aspect ratio.
14652
14653 If the input image format is different from the format requested by
14654 the next filter, the scale filter will convert the input to the
14655 requested format.
14656
14657 @subsection Options
14658 The filter accepts the following options, or any of the options
14659 supported by the libswscale scaler.
14660
14661 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
14662 the complete list of scaler options.
14663
14664 @table @option
14665 @item width, w
14666 @item height, h
14667 Set the output video dimension expression. Default value is the input
14668 dimension.
14669
14670 If the @var{width} or @var{w} value is 0, the input width is used for
14671 the output. If the @var{height} or @var{h} value is 0, the input height
14672 is used for the output.
14673
14674 If one and only one of the values is -n with n >= 1, the scale filter
14675 will use a value that maintains the aspect ratio of the input image,
14676 calculated from the other specified dimension. After that it will,
14677 however, make sure that the calculated dimension is divisible by n and
14678 adjust the value if necessary.
14679
14680 If both values are -n with n >= 1, the behavior will be identical to
14681 both values being set to 0 as previously detailed.
14682
14683 See below for the list of accepted constants for use in the dimension
14684 expression.
14685
14686 @item eval
14687 Specify when to evaluate @var{width} and @var{height} expression. It accepts the following values:
14688
14689 @table @samp
14690 @item init
14691 Only evaluate expressions once during the filter initialization or when a command is processed.
14692
14693 @item frame
14694 Evaluate expressions for each incoming frame.
14695
14696 @end table
14697
14698 Default value is @samp{init}.
14699
14700
14701 @item interl
14702 Set the interlacing mode. It accepts the following values:
14703
14704 @table @samp
14705 @item 1
14706 Force interlaced aware scaling.
14707
14708 @item 0
14709 Do not apply interlaced scaling.
14710
14711 @item -1
14712 Select interlaced aware scaling depending on whether the source frames
14713 are flagged as interlaced or not.
14714 @end table
14715
14716 Default value is @samp{0}.
14717
14718 @item flags
14719 Set libswscale scaling flags. See
14720 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
14721 complete list of values. If not explicitly specified the filter applies
14722 the default flags.
14723
14724
14725 @item param0, param1
14726 Set libswscale input parameters for scaling algorithms that need them. See
14727 @ref{sws_params,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
14728 complete documentation. If not explicitly specified the filter applies
14729 empty parameters.
14730
14731
14732
14733 @item size, s
14734 Set the video size. For the syntax of this option, check the
14735 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
14736
14737 @item in_color_matrix
14738 @item out_color_matrix
14739 Set in/output YCbCr color space type.
14740
14741 This allows the autodetected value to be overridden as well as allows forcing
14742 a specific value used for the output and encoder.
14743
14744 If not specified, the color space type depends on the pixel format.
14745
14746 Possible values:
14747
14748 @table @samp
14749 @item auto
14750 Choose automatically.
14751
14752 @item bt709
14753 Format conforming to International Telecommunication Union (ITU)
14754 Recommendation BT.709.
14755
14756 @item fcc
14757 Set color space conforming to the United States Federal Communications
14758 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
14759
14760 @item bt601
14761 Set color space conforming to:
14762
14763 @itemize
14764 @item
14765 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
14766
14767 @item
14768 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
14769
14770 @item
14771 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
14772
14773 @end itemize
14774
14775 @item smpte240m
14776 Set color space conforming to SMPTE ST 240:1999.
14777 @end table
14778
14779 @item in_range
14780 @item out_range
14781 Set in/output YCbCr sample range.
14782
14783 This allows the autodetected value to be overridden as well as allows forcing
14784 a specific value used for the output and encoder. If not specified, the
14785 range depends on the pixel format. Possible values:
14786
14787 @table @samp
14788 @item auto/unknown
14789 Choose automatically.
14790
14791 @item jpeg/full/pc
14792 Set full range (0-255 in case of 8-bit luma).
14793
14794 @item mpeg/limited/tv
14795 Set "MPEG" range (16-235 in case of 8-bit luma).
14796 @end table
14797
14798 @item force_original_aspect_ratio
14799 Enable decreasing or increasing output video width or height if necessary to
14800 keep the original aspect ratio. Possible values:
14801
14802 @table @samp
14803 @item disable
14804 Scale the video as specified and disable this feature.
14805
14806 @item decrease
14807 The output video dimensions will automatically be decreased if needed.
14808
14809 @item increase
14810 The output video dimensions will automatically be increased if needed.
14811
14812 @end table
14813
14814 One useful instance of this option is that when you know a specific device's
14815 maximum allowed resolution, you can use this to limit the output video to
14816 that, while retaining the aspect ratio. For example, device A allows
14817 1280x720 playback, and your video is 1920x800. Using this option (set it to
14818 decrease) and specifying 1280x720 to the command line makes the output
14819 1280x533.
14820
14821 Please note that this is a different thing than specifying -1 for @option{w}
14822 or @option{h}, you still need to specify the output resolution for this option
14823 to work.
14824
14825 @end table
14826
14827 The values of the @option{w} and @option{h} options are expressions
14828 containing the following constants:
14829
14830 @table @var
14831 @item in_w
14832 @item in_h
14833 The input width and height
14834
14835 @item iw
14836 @item ih
14837 These are the same as @var{in_w} and @var{in_h}.
14838
14839 @item out_w
14840 @item out_h
14841 The output (scaled) width and height
14842
14843 @item ow
14844 @item oh
14845 These are the same as @var{out_w} and @var{out_h}
14846
14847 @item a
14848 The same as @var{iw} / @var{ih}
14849
14850 @item sar
14851 input sample aspect ratio
14852
14853 @item dar
14854 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
14855
14856 @item hsub
14857 @item vsub
14858 horizontal and vertical input chroma subsample values. For example for the
14859 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14860
14861 @item ohsub
14862 @item ovsub
14863 horizontal and vertical output chroma subsample values. For example for the
14864 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14865 @end table
14866
14867 @subsection Examples
14868
14869 @itemize
14870 @item
14871 Scale the input video to a size of 200x100
14872 @example
14873 scale=w=200:h=100
14874 @end example
14875
14876 This is equivalent to:
14877 @example
14878 scale=200:100
14879 @end example
14880
14881 or:
14882 @example
14883 scale=200x100
14884 @end example
14885
14886 @item
14887 Specify a size abbreviation for the output size:
14888 @example
14889 scale=qcif
14890 @end example
14891
14892 which can also be written as:
14893 @example
14894 scale=size=qcif
14895 @end example
14896
14897 @item
14898 Scale the input to 2x:
14899 @example
14900 scale=w=2*iw:h=2*ih
14901 @end example
14902
14903 @item
14904 The above is the same as:
14905 @example
14906 scale=2*in_w:2*in_h
14907 @end example
14908
14909 @item
14910 Scale the input to 2x with forced interlaced scaling:
14911 @example
14912 scale=2*iw:2*ih:interl=1
14913 @end example
14914
14915 @item
14916 Scale the input to half size:
14917 @example
14918 scale=w=iw/2:h=ih/2
14919 @end example
14920
14921 @item
14922 Increase the width, and set the height to the same size:
14923 @example
14924 scale=3/2*iw:ow
14925 @end example
14926
14927 @item
14928 Seek Greek harmony:
14929 @example
14930 scale=iw:1/PHI*iw
14931 scale=ih*PHI:ih
14932 @end example
14933
14934 @item
14935 Increase the height, and set the width to 3/2 of the height:
14936 @example
14937 scale=w=3/2*oh:h=3/5*ih
14938 @end example
14939
14940 @item
14941 Increase the size, making the size a multiple of the chroma
14942 subsample values:
14943 @example
14944 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
14945 @end example
14946
14947 @item
14948 Increase the width to a maximum of 500 pixels,
14949 keeping the same aspect ratio as the input:
14950 @example
14951 scale=w='min(500\, iw*3/2):h=-1'
14952 @end example
14953
14954 @item
14955 Make pixels square by combining scale and setsar:
14956 @example
14957 scale='trunc(ih*dar):ih',setsar=1/1
14958 @end example
14959
14960 @item
14961 Make pixels square by combining scale and setsar,
14962 making sure the resulting resolution is even (required by some codecs):
14963 @example
14964 scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
14965 @end example
14966 @end itemize
14967
14968 @subsection Commands
14969
14970 This filter supports the following commands:
14971 @table @option
14972 @item width, w
14973 @item height, h
14974 Set the output video dimension expression.
14975 The command accepts the same syntax of the corresponding option.
14976
14977 If the specified expression is not valid, it is kept at its current
14978 value.
14979 @end table
14980
14981 @section scale_npp
14982
14983 Use the NVIDIA Performance Primitives (libnpp) to perform scaling and/or pixel
14984 format conversion on CUDA video frames. Setting the output width and height
14985 works in the same way as for the @var{scale} filter.
14986
14987 The following additional options are accepted:
14988 @table @option
14989 @item format
14990 The pixel format of the output CUDA frames. If set to the string "same" (the
14991 default), the input format will be kept. Note that automatic format negotiation
14992 and conversion is not yet supported for hardware frames
14993
14994 @item interp_algo
14995 The interpolation algorithm used for resizing. One of the following:
14996 @table @option
14997 @item nn
14998 Nearest neighbour.
14999
15000 @item linear
15001 @item cubic
15002 @item cubic2p_bspline
15003 2-parameter cubic (B=1, C=0)
15004
15005 @item cubic2p_catmullrom
15006 2-parameter cubic (B=0, C=1/2)
15007
15008 @item cubic2p_b05c03
15009 2-parameter cubic (B=1/2, C=3/10)
15010
15011 @item super
15012 Supersampling
15013
15014 @item lanczos
15015 @end table
15016
15017 @end table
15018
15019 @section scale2ref
15020
15021 Scale (resize) the input video, based on a reference video.
15022
15023 See the scale filter for available options, scale2ref supports the same but
15024 uses the reference video instead of the main input as basis. scale2ref also
15025 supports the following additional constants for the @option{w} and
15026 @option{h} options:
15027
15028 @table @var
15029 @item main_w
15030 @item main_h
15031 The main input video's width and height
15032
15033 @item main_a
15034 The same as @var{main_w} / @var{main_h}
15035
15036 @item main_sar
15037 The main input video's sample aspect ratio
15038
15039 @item main_dar, mdar
15040 The main input video's display aspect ratio. Calculated from
15041 @code{(main_w / main_h) * main_sar}.
15042
15043 @item main_hsub
15044 @item main_vsub
15045 The main input video's horizontal and vertical chroma subsample values.
15046 For example for the pixel format "yuv422p" @var{hsub} is 2 and @var{vsub}
15047 is 1.
15048 @end table
15049
15050 @subsection Examples
15051
15052 @itemize
15053 @item
15054 Scale a subtitle stream (b) to match the main video (a) in size before overlaying
15055 @example
15056 'scale2ref[b][a];[a][b]overlay'
15057 @end example
15058 @end itemize
15059
15060 @anchor{selectivecolor}
15061 @section selectivecolor
15062
15063 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
15064 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
15065 by the "purity" of the color (that is, how saturated it already is).
15066
15067 This filter is similar to the Adobe Photoshop Selective Color tool.
15068
15069 The filter accepts the following options:
15070
15071 @table @option
15072 @item correction_method
15073 Select color correction method.
15074
15075 Available values are:
15076 @table @samp
15077 @item absolute
15078 Specified adjustments are applied "as-is" (added/subtracted to original pixel
15079 component value).
15080 @item relative
15081 Specified adjustments are relative to the original component value.
15082 @end table
15083 Default is @code{absolute}.
15084 @item reds
15085 Adjustments for red pixels (pixels where the red component is the maximum)
15086 @item yellows
15087 Adjustments for yellow pixels (pixels where the blue component is the minimum)
15088 @item greens
15089 Adjustments for green pixels (pixels where the green component is the maximum)
15090 @item cyans
15091 Adjustments for cyan pixels (pixels where the red component is the minimum)
15092 @item blues
15093 Adjustments for blue pixels (pixels where the blue component is the maximum)
15094 @item magentas
15095 Adjustments for magenta pixels (pixels where the green component is the minimum)
15096 @item whites
15097 Adjustments for white pixels (pixels where all components are greater than 128)
15098 @item neutrals
15099 Adjustments for all pixels except pure black and pure white
15100 @item blacks
15101 Adjustments for black pixels (pixels where all components are lesser than 128)
15102 @item psfile
15103 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
15104 @end table
15105
15106 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
15107 4 space separated floating point adjustment values in the [-1,1] range,
15108 respectively to adjust the amount of cyan, magenta, yellow and black for the
15109 pixels of its range.
15110
15111 @subsection Examples
15112
15113 @itemize
15114 @item
15115 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
15116 increase magenta by 27% in blue areas:
15117 @example
15118 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
15119 @end example
15120
15121 @item
15122 Use a Photoshop selective color preset:
15123 @example
15124 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
15125 @end example
15126 @end itemize
15127
15128 @anchor{separatefields}
15129 @section separatefields
15130
15131 The @code{separatefields} takes a frame-based video input and splits
15132 each frame into its components fields, producing a new half height clip
15133 with twice the frame rate and twice the frame count.
15134
15135 This filter use field-dominance information in frame to decide which
15136 of each pair of fields to place first in the output.
15137 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
15138
15139 @section setdar, setsar
15140
15141 The @code{setdar} filter sets the Display Aspect Ratio for the filter
15142 output video.
15143
15144 This is done by changing the specified Sample (aka Pixel) Aspect
15145 Ratio, according to the following equation:
15146 @example
15147 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
15148 @end example
15149
15150 Keep in mind that the @code{setdar} filter does not modify the pixel
15151 dimensions of the video frame. Also, the display aspect ratio set by
15152 this filter may be changed by later filters in the filterchain,
15153 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
15154 applied.
15155
15156 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
15157 the filter output video.
15158
15159 Note that as a consequence of the application of this filter, the
15160 output display aspect ratio will change according to the equation
15161 above.
15162
15163 Keep in mind that the sample aspect ratio set by the @code{setsar}
15164 filter may be changed by later filters in the filterchain, e.g. if
15165 another "setsar" or a "setdar" filter is applied.
15166
15167 It accepts the following parameters:
15168
15169 @table @option
15170 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
15171 Set the aspect ratio used by the filter.
15172
15173 The parameter can be a floating point number string, an expression, or
15174 a string of the form @var{num}:@var{den}, where @var{num} and
15175 @var{den} are the numerator and denominator of the aspect ratio. If
15176 the parameter is not specified, it is assumed the value "0".
15177 In case the form "@var{num}:@var{den}" is used, the @code{:} character
15178 should be escaped.
15179
15180 @item max
15181 Set the maximum integer value to use for expressing numerator and
15182 denominator when reducing the expressed aspect ratio to a rational.
15183 Default value is @code{100}.
15184
15185 @end table
15186
15187 The parameter @var{sar} is an expression containing
15188 the following constants:
15189
15190 @table @option
15191 @item E, PI, PHI
15192 These are approximated values for the mathematical constants e
15193 (Euler's number), pi (Greek pi), and phi (the golden ratio).
15194
15195 @item w, h
15196 The input width and height.
15197
15198 @item a
15199 These are the same as @var{w} / @var{h}.
15200
15201 @item sar
15202 The input sample aspect ratio.
15203
15204 @item dar
15205 The input display aspect ratio. It is the same as
15206 (@var{w} / @var{h}) * @var{sar}.
15207
15208 @item hsub, vsub
15209 Horizontal and vertical chroma subsample values. For example, for the
15210 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
15211 @end table
15212
15213 @subsection Examples
15214
15215 @itemize
15216
15217 @item
15218 To change the display aspect ratio to 16:9, specify one of the following:
15219 @example
15220 setdar=dar=1.77777
15221 setdar=dar=16/9
15222 @end example
15223
15224 @item
15225 To change the sample aspect ratio to 10:11, specify:
15226 @example
15227 setsar=sar=10/11
15228 @end example
15229
15230 @item
15231 To set a display aspect ratio of 16:9, and specify a maximum integer value of
15232 1000 in the aspect ratio reduction, use the command:
15233 @example
15234 setdar=ratio=16/9:max=1000
15235 @end example
15236
15237 @end itemize
15238
15239 @anchor{setfield}
15240 @section setfield
15241
15242 Force field for the output video frame.
15243
15244 The @code{setfield} filter marks the interlace type field for the
15245 output frames. It does not change the input frame, but only sets the
15246 corresponding property, which affects how the frame is treated by
15247 following filters (e.g. @code{fieldorder} or @code{yadif}).
15248
15249 The filter accepts the following options:
15250
15251 @table @option
15252
15253 @item mode
15254 Available values are:
15255
15256 @table @samp
15257 @item auto
15258 Keep the same field property.
15259
15260 @item bff
15261 Mark the frame as bottom-field-first.
15262
15263 @item tff
15264 Mark the frame as top-field-first.
15265
15266 @item prog
15267 Mark the frame as progressive.
15268 @end table
15269 @end table
15270
15271 @anchor{setparams}
15272 @section setparams
15273
15274 Force frame parameter for the output video frame.
15275
15276 The @code{setparams} filter marks interlace and color range for the
15277 output frames. It does not change the input frame, but only sets the
15278 corresponding property, which affects how the frame is treated by
15279 filters/encoders.
15280
15281 @table @option
15282 @item field_mode
15283 Available values are:
15284
15285 @table @samp
15286 @item auto
15287 Keep the same field property (default).
15288
15289 @item bff
15290 Mark the frame as bottom-field-first.
15291
15292 @item tff
15293 Mark the frame as top-field-first.
15294
15295 @item prog
15296 Mark the frame as progressive.
15297 @end table
15298
15299 @item range
15300 Available values are:
15301
15302 @table @samp
15303 @item auto
15304 Keep the same color range property (default).
15305
15306 @item unspecified, unknown
15307 Mark the frame as unspecified color range.
15308
15309 @item limited, tv, mpeg
15310 Mark the frame as limited range.
15311
15312 @item full, pc, jpeg
15313 Mark the frame as full range.
15314 @end table
15315
15316 @item color_primaries
15317 Set the color primaries.
15318 Available values are:
15319
15320 @table @samp
15321 @item auto
15322 Keep the same color primaries property (default).
15323
15324 @item bt709
15325 @item unknown
15326 @item bt470m
15327 @item bt470bg
15328 @item smpte170m
15329 @item smpte240m
15330 @item film
15331 @item bt2020
15332 @item smpte428
15333 @item smpte431
15334 @item smpte432
15335 @item jedec-p22
15336 @end table
15337
15338 @item color_trc
15339 Set the color transfer.
15340 Available values are:
15341
15342 @table @samp
15343 @item auto
15344 Keep the same color trc property (default).
15345
15346 @item bt709
15347 @item unknown
15348 @item bt470m
15349 @item bt470bg
15350 @item smpte170m
15351 @item smpte240m
15352 @item linear
15353 @item log100
15354 @item log316
15355 @item iec61966-2-4
15356 @item bt1361e
15357 @item iec61966-2-1
15358 @item bt2020-10
15359 @item bt2020-12
15360 @item smpte2084
15361 @item smpte428
15362 @item arib-std-b67
15363 @end table
15364
15365 @item colorspace
15366 Set the colorspace.
15367 Available values are:
15368
15369 @table @samp
15370 @item auto
15371 Keep the same colorspace property (default).
15372
15373 @item gbr
15374 @item bt709
15375 @item unknown
15376 @item fcc
15377 @item bt470bg
15378 @item smpte170m
15379 @item smpte240m
15380 @item ycgco
15381 @item bt2020nc
15382 @item bt2020c
15383 @item smpte2085
15384 @item chroma-derived-nc
15385 @item chroma-derived-c
15386 @item ictcp
15387 @end table
15388 @end table
15389
15390 @section showinfo
15391
15392 Show a line containing various information for each input video frame.
15393 The input video is not modified.
15394
15395 This filter supports the following options:
15396
15397 @table @option
15398 @item checksum
15399 Calculate checksums of each plane. By default enabled.
15400 @end table
15401
15402 The shown line contains a sequence of key/value pairs of the form
15403 @var{key}:@var{value}.
15404
15405 The following values are shown in the output:
15406
15407 @table @option
15408 @item n
15409 The (sequential) number of the input frame, starting from 0.
15410
15411 @item pts
15412 The Presentation TimeStamp of the input frame, expressed as a number of
15413 time base units. The time base unit depends on the filter input pad.
15414
15415 @item pts_time
15416 The Presentation TimeStamp of the input frame, expressed as a number of
15417 seconds.
15418
15419 @item pos
15420 The position of the frame in the input stream, or -1 if this information is
15421 unavailable and/or meaningless (for example in case of synthetic video).
15422
15423 @item fmt
15424 The pixel format name.
15425
15426 @item sar
15427 The sample aspect ratio of the input frame, expressed in the form
15428 @var{num}/@var{den}.
15429
15430 @item s
15431 The size of the input frame. For the syntax of this option, check the
15432 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15433
15434 @item i
15435 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
15436 for bottom field first).
15437
15438 @item iskey
15439 This is 1 if the frame is a key frame, 0 otherwise.
15440
15441 @item type
15442 The picture type of the input frame ("I" for an I-frame, "P" for a
15443 P-frame, "B" for a B-frame, or "?" for an unknown type).
15444 Also refer to the documentation of the @code{AVPictureType} enum and of
15445 the @code{av_get_picture_type_char} function defined in
15446 @file{libavutil/avutil.h}.
15447
15448 @item checksum
15449 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
15450
15451 @item plane_checksum
15452 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
15453 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
15454 @end table
15455
15456 @section showpalette
15457
15458 Displays the 256 colors palette of each frame. This filter is only relevant for
15459 @var{pal8} pixel format frames.
15460
15461 It accepts the following option:
15462
15463 @table @option
15464 @item s
15465 Set the size of the box used to represent one palette color entry. Default is
15466 @code{30} (for a @code{30x30} pixel box).
15467 @end table
15468
15469 @section shuffleframes
15470
15471 Reorder and/or duplicate and/or drop video frames.
15472
15473 It accepts the following parameters:
15474
15475 @table @option
15476 @item mapping
15477 Set the destination indexes of input frames.
15478 This is space or '|' separated list of indexes that maps input frames to output
15479 frames. Number of indexes also sets maximal value that each index may have.
15480 '-1' index have special meaning and that is to drop frame.
15481 @end table
15482
15483 The first frame has the index 0. The default is to keep the input unchanged.
15484
15485 @subsection Examples
15486
15487 @itemize
15488 @item
15489 Swap second and third frame of every three frames of the input:
15490 @example
15491 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
15492 @end example
15493
15494 @item
15495 Swap 10th and 1st frame of every ten frames of the input:
15496 @example
15497 ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
15498 @end example
15499 @end itemize
15500
15501 @section shuffleplanes
15502
15503 Reorder and/or duplicate video planes.
15504
15505 It accepts the following parameters:
15506
15507 @table @option
15508
15509 @item map0
15510 The index of the input plane to be used as the first output plane.
15511
15512 @item map1
15513 The index of the input plane to be used as the second output plane.
15514
15515 @item map2
15516 The index of the input plane to be used as the third output plane.
15517
15518 @item map3
15519 The index of the input plane to be used as the fourth output plane.
15520
15521 @end table
15522
15523 The first plane has the index 0. The default is to keep the input unchanged.
15524
15525 @subsection Examples
15526
15527 @itemize
15528 @item
15529 Swap the second and third planes of the input:
15530 @example
15531 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
15532 @end example
15533 @end itemize
15534
15535 @anchor{signalstats}
15536 @section signalstats
15537 Evaluate various visual metrics that assist in determining issues associated
15538 with the digitization of analog video media.
15539
15540 By default the filter will log these metadata values:
15541
15542 @table @option
15543 @item YMIN
15544 Display the minimal Y value contained within the input frame. Expressed in
15545 range of [0-255].
15546
15547 @item YLOW
15548 Display the Y value at the 10% percentile within the input frame. Expressed in
15549 range of [0-255].
15550
15551 @item YAVG
15552 Display the average Y value within the input frame. Expressed in range of
15553 [0-255].
15554
15555 @item YHIGH
15556 Display the Y value at the 90% percentile within the input frame. Expressed in
15557 range of [0-255].
15558
15559 @item YMAX
15560 Display the maximum Y value contained within the input frame. Expressed in
15561 range of [0-255].
15562
15563 @item UMIN
15564 Display the minimal U value contained within the input frame. Expressed in
15565 range of [0-255].
15566
15567 @item ULOW
15568 Display the U value at the 10% percentile within the input frame. Expressed in
15569 range of [0-255].
15570
15571 @item UAVG
15572 Display the average U value within the input frame. Expressed in range of
15573 [0-255].
15574
15575 @item UHIGH
15576 Display the U value at the 90% percentile within the input frame. Expressed in
15577 range of [0-255].
15578
15579 @item UMAX
15580 Display the maximum U value contained within the input frame. Expressed in
15581 range of [0-255].
15582
15583 @item VMIN
15584 Display the minimal V value contained within the input frame. Expressed in
15585 range of [0-255].
15586
15587 @item VLOW
15588 Display the V value at the 10% percentile within the input frame. Expressed in
15589 range of [0-255].
15590
15591 @item VAVG
15592 Display the average V value within the input frame. Expressed in range of
15593 [0-255].
15594
15595 @item VHIGH
15596 Display the V value at the 90% percentile within the input frame. Expressed in
15597 range of [0-255].
15598
15599 @item VMAX
15600 Display the maximum V value contained within the input frame. Expressed in
15601 range of [0-255].
15602
15603 @item SATMIN
15604 Display the minimal saturation value contained within the input frame.
15605 Expressed in range of [0-~181.02].
15606
15607 @item SATLOW
15608 Display the saturation value at the 10% percentile within the input frame.
15609 Expressed in range of [0-~181.02].
15610
15611 @item SATAVG
15612 Display the average saturation value within the input frame. Expressed in range
15613 of [0-~181.02].
15614
15615 @item SATHIGH
15616 Display the saturation value at the 90% percentile within the input frame.
15617 Expressed in range of [0-~181.02].
15618
15619 @item SATMAX
15620 Display the maximum saturation value contained within the input frame.
15621 Expressed in range of [0-~181.02].
15622
15623 @item HUEMED
15624 Display the median value for hue within the input frame. Expressed in range of
15625 [0-360].
15626
15627 @item HUEAVG
15628 Display the average value for hue within the input frame. Expressed in range of
15629 [0-360].
15630
15631 @item YDIF
15632 Display the average of sample value difference between all values of the Y
15633 plane in the current frame and corresponding values of the previous input frame.
15634 Expressed in range of [0-255].
15635
15636 @item UDIF
15637 Display the average of sample value difference between all values of the U
15638 plane in the current frame and corresponding values of the previous input frame.
15639 Expressed in range of [0-255].
15640
15641 @item VDIF
15642 Display the average of sample value difference between all values of the V
15643 plane in the current frame and corresponding values of the previous input frame.
15644 Expressed in range of [0-255].
15645
15646 @item YBITDEPTH
15647 Display bit depth of Y plane in current frame.
15648 Expressed in range of [0-16].
15649
15650 @item UBITDEPTH
15651 Display bit depth of U plane in current frame.
15652 Expressed in range of [0-16].
15653
15654 @item VBITDEPTH
15655 Display bit depth of V plane in current frame.
15656 Expressed in range of [0-16].
15657 @end table
15658
15659 The filter accepts the following options:
15660
15661 @table @option
15662 @item stat
15663 @item out
15664
15665 @option{stat} specify an additional form of image analysis.
15666 @option{out} output video with the specified type of pixel highlighted.
15667
15668 Both options accept the following values:
15669
15670 @table @samp
15671 @item tout
15672 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
15673 unlike the neighboring pixels of the same field. Examples of temporal outliers
15674 include the results of video dropouts, head clogs, or tape tracking issues.
15675
15676 @item vrep
15677 Identify @var{vertical line repetition}. Vertical line repetition includes
15678 similar rows of pixels within a frame. In born-digital video vertical line
15679 repetition is common, but this pattern is uncommon in video digitized from an
15680 analog source. When it occurs in video that results from the digitization of an
15681 analog source it can indicate concealment from a dropout compensator.
15682
15683 @item brng
15684 Identify pixels that fall outside of legal broadcast range.
15685 @end table
15686
15687 @item color, c
15688 Set the highlight color for the @option{out} option. The default color is
15689 yellow.
15690 @end table
15691
15692 @subsection Examples
15693
15694 @itemize
15695 @item
15696 Output data of various video metrics:
15697 @example
15698 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
15699 @end example
15700
15701 @item
15702 Output specific data about the minimum and maximum values of the Y plane per frame:
15703 @example
15704 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
15705 @end example
15706
15707 @item
15708 Playback video while highlighting pixels that are outside of broadcast range in red.
15709 @example
15710 ffplay example.mov -vf signalstats="out=brng:color=red"
15711 @end example
15712
15713 @item
15714 Playback video with signalstats metadata drawn over the frame.
15715 @example
15716 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
15717 @end example
15718
15719 The contents of signalstat_drawtext.txt used in the command are:
15720 @example
15721 time %@{pts:hms@}
15722 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
15723 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
15724 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
15725 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
15726
15727 @end example
15728 @end itemize
15729
15730 @anchor{signature}
15731 @section signature
15732
15733 Calculates the MPEG-7 Video Signature. The filter can handle more than one
15734 input. In this case the matching between the inputs can be calculated additionally.
15735 The filter always passes through the first input. The signature of each stream can
15736 be written into a file.
15737
15738 It accepts the following options:
15739
15740 @table @option
15741 @item detectmode
15742 Enable or disable the matching process.
15743
15744 Available values are:
15745
15746 @table @samp
15747 @item off
15748 Disable the calculation of a matching (default).
15749 @item full
15750 Calculate the matching for the whole video and output whether the whole video
15751 matches or only parts.
15752 @item fast
15753 Calculate only until a matching is found or the video ends. Should be faster in
15754 some cases.
15755 @end table
15756
15757 @item nb_inputs
15758 Set the number of inputs. The option value must be a non negative integer.
15759 Default value is 1.
15760
15761 @item filename
15762 Set the path to which the output is written. If there is more than one input,
15763 the path must be a prototype, i.e. must contain %d or %0nd (where n is a positive
15764 integer), that will be replaced with the input number. If no filename is
15765 specified, no output will be written. This is the default.
15766
15767 @item format
15768 Choose the output format.
15769
15770 Available values are:
15771
15772 @table @samp
15773 @item binary
15774 Use the specified binary representation (default).
15775 @item xml
15776 Use the specified xml representation.
15777 @end table
15778
15779 @item th_d
15780 Set threshold to detect one word as similar. The option value must be an integer
15781 greater than zero. The default value is 9000.
15782
15783 @item th_dc
15784 Set threshold to detect all words as similar. The option value must be an integer
15785 greater than zero. The default value is 60000.
15786
15787 @item th_xh
15788 Set threshold to detect frames as similar. The option value must be an integer
15789 greater than zero. The default value is 116.
15790
15791 @item th_di
15792 Set the minimum length of a sequence in frames to recognize it as matching
15793 sequence. The option value must be a non negative integer value.
15794 The default value is 0.
15795
15796 @item th_it
15797 Set the minimum relation, that matching frames to all frames must have.
15798 The option value must be a double value between 0 and 1. The default value is 0.5.
15799 @end table
15800
15801 @subsection Examples
15802
15803 @itemize
15804 @item
15805 To calculate the signature of an input video and store it in signature.bin:
15806 @example
15807 ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
15808 @end example
15809
15810 @item
15811 To detect whether two videos match and store the signatures in XML format in
15812 signature0.xml and signature1.xml:
15813 @example
15814 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 -
15815 @end example
15816
15817 @end itemize
15818
15819 @anchor{smartblur}
15820 @section smartblur
15821
15822 Blur the input video without impacting the outlines.
15823
15824 It accepts the following options:
15825
15826 @table @option
15827 @item luma_radius, lr
15828 Set the luma radius. The option value must be a float number in
15829 the range [0.1,5.0] that specifies the variance of the gaussian filter
15830 used to blur the image (slower if larger). Default value is 1.0.
15831
15832 @item luma_strength, ls
15833 Set the luma strength. The option value must be a float number
15834 in the range [-1.0,1.0] that configures the blurring. A value included
15835 in [0.0,1.0] will blur the image whereas a value included in
15836 [-1.0,0.0] will sharpen the image. Default value is 1.0.
15837
15838 @item luma_threshold, lt
15839 Set the luma threshold used as a coefficient to determine
15840 whether a pixel should be blurred or not. The option value must be an
15841 integer in the range [-30,30]. A value of 0 will filter all the image,
15842 a value included in [0,30] will filter flat areas and a value included
15843 in [-30,0] will filter edges. Default value is 0.
15844
15845 @item chroma_radius, cr
15846 Set the chroma radius. The option value must be a float number in
15847 the range [0.1,5.0] that specifies the variance of the gaussian filter
15848 used to blur the image (slower if larger). Default value is @option{luma_radius}.
15849
15850 @item chroma_strength, cs
15851 Set the chroma strength. The option value must be a float number
15852 in the range [-1.0,1.0] that configures the blurring. A value included
15853 in [0.0,1.0] will blur the image whereas a value included in
15854 [-1.0,0.0] will sharpen the image. Default value is @option{luma_strength}.
15855
15856 @item chroma_threshold, ct
15857 Set the chroma threshold used as a coefficient to determine
15858 whether a pixel should be blurred or not. The option value must be an
15859 integer in the range [-30,30]. A value of 0 will filter all the image,
15860 a value included in [0,30] will filter flat areas and a value included
15861 in [-30,0] will filter edges. Default value is @option{luma_threshold}.
15862 @end table
15863
15864 If a chroma option is not explicitly set, the corresponding luma value
15865 is set.
15866
15867 @section ssim
15868
15869 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
15870
15871 This filter takes in input two input videos, the first input is
15872 considered the "main" source and is passed unchanged to the
15873 output. The second input is used as a "reference" video for computing
15874 the SSIM.
15875
15876 Both video inputs must have the same resolution and pixel format for
15877 this filter to work correctly. Also it assumes that both inputs
15878 have the same number of frames, which are compared one by one.
15879
15880 The filter stores the calculated SSIM of each frame.
15881
15882 The description of the accepted parameters follows.
15883
15884 @table @option
15885 @item stats_file, f
15886 If specified the filter will use the named file to save the SSIM of
15887 each individual frame. When filename equals "-" the data is sent to
15888 standard output.
15889 @end table
15890
15891 The file printed if @var{stats_file} is selected, contains a sequence of
15892 key/value pairs of the form @var{key}:@var{value} for each compared
15893 couple of frames.
15894
15895 A description of each shown parameter follows:
15896
15897 @table @option
15898 @item n
15899 sequential number of the input frame, starting from 1
15900
15901 @item Y, U, V, R, G, B
15902 SSIM of the compared frames for the component specified by the suffix.
15903
15904 @item All
15905 SSIM of the compared frames for the whole frame.
15906
15907 @item dB
15908 Same as above but in dB representation.
15909 @end table
15910
15911 This filter also supports the @ref{framesync} options.
15912
15913 For example:
15914 @example
15915 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
15916 [main][ref] ssim="stats_file=stats.log" [out]
15917 @end example
15918
15919 On this example the input file being processed is compared with the
15920 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
15921 is stored in @file{stats.log}.
15922
15923 Another example with both psnr and ssim at same time:
15924 @example
15925 ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
15926 @end example
15927
15928 @section stereo3d
15929
15930 Convert between different stereoscopic image formats.
15931
15932 The filters accept the following options:
15933
15934 @table @option
15935 @item in
15936 Set stereoscopic image format of input.
15937
15938 Available values for input image formats are:
15939 @table @samp
15940 @item sbsl
15941 side by side parallel (left eye left, right eye right)
15942
15943 @item sbsr
15944 side by side crosseye (right eye left, left eye right)
15945
15946 @item sbs2l
15947 side by side parallel with half width resolution
15948 (left eye left, right eye right)
15949
15950 @item sbs2r
15951 side by side crosseye with half width resolution
15952 (right eye left, left eye right)
15953
15954 @item abl
15955 above-below (left eye above, right eye below)
15956
15957 @item abr
15958 above-below (right eye above, left eye below)
15959
15960 @item ab2l
15961 above-below with half height resolution
15962 (left eye above, right eye below)
15963
15964 @item ab2r
15965 above-below with half height resolution
15966 (right eye above, left eye below)
15967
15968 @item al
15969 alternating frames (left eye first, right eye second)
15970
15971 @item ar
15972 alternating frames (right eye first, left eye second)
15973
15974 @item irl
15975 interleaved rows (left eye has top row, right eye starts on next row)
15976
15977 @item irr
15978 interleaved rows (right eye has top row, left eye starts on next row)
15979
15980 @item icl
15981 interleaved columns, left eye first
15982
15983 @item icr
15984 interleaved columns, right eye first
15985
15986 Default value is @samp{sbsl}.
15987 @end table
15988
15989 @item out
15990 Set stereoscopic image format of output.
15991
15992 @table @samp
15993 @item sbsl
15994 side by side parallel (left eye left, right eye right)
15995
15996 @item sbsr
15997 side by side crosseye (right eye left, left eye right)
15998
15999 @item sbs2l
16000 side by side parallel with half width resolution
16001 (left eye left, right eye right)
16002
16003 @item sbs2r
16004 side by side crosseye with half width resolution
16005 (right eye left, left eye right)
16006
16007 @item abl
16008 above-below (left eye above, right eye below)
16009
16010 @item abr
16011 above-below (right eye above, left eye below)
16012
16013 @item ab2l
16014 above-below with half height resolution
16015 (left eye above, right eye below)
16016
16017 @item ab2r
16018 above-below with half height resolution
16019 (right eye above, left eye below)
16020
16021 @item al
16022 alternating frames (left eye first, right eye second)
16023
16024 @item ar
16025 alternating frames (right eye first, left eye second)
16026
16027 @item irl
16028 interleaved rows (left eye has top row, right eye starts on next row)
16029
16030 @item irr
16031 interleaved rows (right eye has top row, left eye starts on next row)
16032
16033 @item arbg
16034 anaglyph red/blue gray
16035 (red filter on left eye, blue filter on right eye)
16036
16037 @item argg
16038 anaglyph red/green gray
16039 (red filter on left eye, green filter on right eye)
16040
16041 @item arcg
16042 anaglyph red/cyan gray
16043 (red filter on left eye, cyan filter on right eye)
16044
16045 @item arch
16046 anaglyph red/cyan half colored
16047 (red filter on left eye, cyan filter on right eye)
16048
16049 @item arcc
16050 anaglyph red/cyan color
16051 (red filter on left eye, cyan filter on right eye)
16052
16053 @item arcd
16054 anaglyph red/cyan color optimized with the least squares projection of dubois
16055 (red filter on left eye, cyan filter on right eye)
16056
16057 @item agmg
16058 anaglyph green/magenta gray
16059 (green filter on left eye, magenta filter on right eye)
16060
16061 @item agmh
16062 anaglyph green/magenta half colored
16063 (green filter on left eye, magenta filter on right eye)
16064
16065 @item agmc
16066 anaglyph green/magenta colored
16067 (green filter on left eye, magenta filter on right eye)
16068
16069 @item agmd
16070 anaglyph green/magenta color optimized with the least squares projection of dubois
16071 (green filter on left eye, magenta filter on right eye)
16072
16073 @item aybg
16074 anaglyph yellow/blue gray
16075 (yellow filter on left eye, blue filter on right eye)
16076
16077 @item aybh
16078 anaglyph yellow/blue half colored
16079 (yellow filter on left eye, blue filter on right eye)
16080
16081 @item aybc
16082 anaglyph yellow/blue colored
16083 (yellow filter on left eye, blue filter on right eye)
16084
16085 @item aybd
16086 anaglyph yellow/blue color optimized with the least squares projection of dubois
16087 (yellow filter on left eye, blue filter on right eye)
16088
16089 @item ml
16090 mono output (left eye only)
16091
16092 @item mr
16093 mono output (right eye only)
16094
16095 @item chl
16096 checkerboard, left eye first
16097
16098 @item chr
16099 checkerboard, right eye first
16100
16101 @item icl
16102 interleaved columns, left eye first
16103
16104 @item icr
16105 interleaved columns, right eye first
16106
16107 @item hdmi
16108 HDMI frame pack
16109 @end table
16110
16111 Default value is @samp{arcd}.
16112 @end table
16113
16114 @subsection Examples
16115
16116 @itemize
16117 @item
16118 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
16119 @example
16120 stereo3d=sbsl:aybd
16121 @end example
16122
16123 @item
16124 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
16125 @example
16126 stereo3d=abl:sbsr
16127 @end example
16128 @end itemize
16129
16130 @section streamselect, astreamselect
16131 Select video or audio streams.
16132
16133 The filter accepts the following options:
16134
16135 @table @option
16136 @item inputs
16137 Set number of inputs. Default is 2.
16138
16139 @item map
16140 Set input indexes to remap to outputs.
16141 @end table
16142
16143 @subsection Commands
16144
16145 The @code{streamselect} and @code{astreamselect} filter supports the following
16146 commands:
16147
16148 @table @option
16149 @item map
16150 Set input indexes to remap to outputs.
16151 @end table
16152
16153 @subsection Examples
16154
16155 @itemize
16156 @item
16157 Select first 5 seconds 1st stream and rest of time 2nd stream:
16158 @example
16159 sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
16160 @end example
16161
16162 @item
16163 Same as above, but for audio:
16164 @example
16165 asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
16166 @end example
16167 @end itemize
16168
16169 @section sobel
16170 Apply sobel operator to input video stream.
16171
16172 The filter accepts the following option:
16173
16174 @table @option
16175 @item planes
16176 Set which planes will be processed, unprocessed planes will be copied.
16177 By default value 0xf, all planes will be processed.
16178
16179 @item scale
16180 Set value which will be multiplied with filtered result.
16181
16182 @item delta
16183 Set value which will be added to filtered result.
16184 @end table
16185
16186 @anchor{spp}
16187 @section spp
16188
16189 Apply a simple postprocessing filter that compresses and decompresses the image
16190 at several (or - in the case of @option{quality} level @code{6} - all) shifts
16191 and average the results.
16192
16193 The filter accepts the following options:
16194
16195 @table @option
16196 @item quality
16197 Set quality. This option defines the number of levels for averaging. It accepts
16198 an integer in the range 0-6. If set to @code{0}, the filter will have no
16199 effect. A value of @code{6} means the higher quality. For each increment of
16200 that value the speed drops by a factor of approximately 2.  Default value is
16201 @code{3}.
16202
16203 @item qp
16204 Force a constant quantization parameter. If not set, the filter will use the QP
16205 from the video stream (if available).
16206
16207 @item mode
16208 Set thresholding mode. Available modes are:
16209
16210 @table @samp
16211 @item hard
16212 Set hard thresholding (default).
16213 @item soft
16214 Set soft thresholding (better de-ringing effect, but likely blurrier).
16215 @end table
16216
16217 @item use_bframe_qp
16218 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
16219 option may cause flicker since the B-Frames have often larger QP. Default is
16220 @code{0} (not enabled).
16221 @end table
16222
16223 @section sr
16224
16225 Scale the input by applying one of the super-resolution methods based on
16226 convolutional neural networks. Supported models:
16227
16228 @itemize
16229 @item
16230 Super-Resolution Convolutional Neural Network model (SRCNN).
16231 See @url{https://arxiv.org/abs/1501.00092}.
16232
16233 @item
16234 Efficient Sub-Pixel Convolutional Neural Network model (ESPCN).
16235 See @url{https://arxiv.org/abs/1609.05158}.
16236 @end itemize
16237
16238 Training scripts as well as scripts for model generation are provided in
16239 the repository at @url{https://github.com/HighVoltageRocknRoll/sr.git}.
16240
16241 The filter accepts the following options:
16242
16243 @table @option
16244 @item dnn_backend
16245 Specify which DNN backend to use for model loading and execution. This option accepts
16246 the following values:
16247
16248 @table @samp
16249 @item native
16250 Native implementation of DNN loading and execution.
16251
16252 @item tensorflow
16253 TensorFlow backend. To enable this backend you
16254 need to install the TensorFlow for C library (see
16255 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
16256 @code{--enable-libtensorflow}
16257 @end table
16258
16259 Default value is @samp{native}.
16260
16261 @item model
16262 Set path to model file specifying network architecture and its parameters.
16263 Note that different backends use different file formats. TensorFlow backend
16264 can load files for both formats, while native backend can load files for only
16265 its format.
16266
16267 @item scale_factor
16268 Set scale factor for SRCNN model. Allowed values are @code{2}, @code{3} and @code{4}.
16269 Default value is @code{2}. Scale factor is necessary for SRCNN model, because it accepts
16270 input upscaled using bicubic upscaling with proper scale factor.
16271 @end table
16272
16273 @anchor{subtitles}
16274 @section subtitles
16275
16276 Draw subtitles on top of input video using the libass library.
16277
16278 To enable compilation of this filter you need to configure FFmpeg with
16279 @code{--enable-libass}. This filter also requires a build with libavcodec and
16280 libavformat to convert the passed subtitles file to ASS (Advanced Substation
16281 Alpha) subtitles format.
16282
16283 The filter accepts the following options:
16284
16285 @table @option
16286 @item filename, f
16287 Set the filename of the subtitle file to read. It must be specified.
16288
16289 @item original_size
16290 Specify the size of the original video, the video for which the ASS file
16291 was composed. For the syntax of this option, check the
16292 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16293 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
16294 correctly scale the fonts if the aspect ratio has been changed.
16295
16296 @item fontsdir
16297 Set a directory path containing fonts that can be used by the filter.
16298 These fonts will be used in addition to whatever the font provider uses.
16299
16300 @item alpha
16301 Process alpha channel, by default alpha channel is untouched.
16302
16303 @item charenc
16304 Set subtitles input character encoding. @code{subtitles} filter only. Only
16305 useful if not UTF-8.
16306
16307 @item stream_index, si
16308 Set subtitles stream index. @code{subtitles} filter only.
16309
16310 @item force_style
16311 Override default style or script info parameters of the subtitles. It accepts a
16312 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
16313 @end table
16314
16315 If the first key is not specified, it is assumed that the first value
16316 specifies the @option{filename}.
16317
16318 For example, to render the file @file{sub.srt} on top of the input
16319 video, use the command:
16320 @example
16321 subtitles=sub.srt
16322 @end example
16323
16324 which is equivalent to:
16325 @example
16326 subtitles=filename=sub.srt
16327 @end example
16328
16329 To render the default subtitles stream from file @file{video.mkv}, use:
16330 @example
16331 subtitles=video.mkv
16332 @end example
16333
16334 To render the second subtitles stream from that file, use:
16335 @example
16336 subtitles=video.mkv:si=1
16337 @end example
16338
16339 To make the subtitles stream from @file{sub.srt} appear in 80% transparent blue
16340 @code{DejaVu Serif}, use:
16341 @example
16342 subtitles=sub.srt:force_style='FontName=DejaVu Serif,PrimaryColour=&HCCFF0000'
16343 @end example
16344
16345 @section super2xsai
16346
16347 Scale the input by 2x and smooth using the Super2xSaI (Scale and
16348 Interpolate) pixel art scaling algorithm.
16349
16350 Useful for enlarging pixel art images without reducing sharpness.
16351
16352 @section swaprect
16353
16354 Swap two rectangular objects in video.
16355
16356 This filter accepts the following options:
16357
16358 @table @option
16359 @item w
16360 Set object width.
16361
16362 @item h
16363 Set object height.
16364
16365 @item x1
16366 Set 1st rect x coordinate.
16367
16368 @item y1
16369 Set 1st rect y coordinate.
16370
16371 @item x2
16372 Set 2nd rect x coordinate.
16373
16374 @item y2
16375 Set 2nd rect y coordinate.
16376
16377 All expressions are evaluated once for each frame.
16378 @end table
16379
16380 The all options are expressions containing the following constants:
16381
16382 @table @option
16383 @item w
16384 @item h
16385 The input width and height.
16386
16387 @item a
16388 same as @var{w} / @var{h}
16389
16390 @item sar
16391 input sample aspect ratio
16392
16393 @item dar
16394 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
16395
16396 @item n
16397 The number of the input frame, starting from 0.
16398
16399 @item t
16400 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
16401
16402 @item pos
16403 the position in the file of the input frame, NAN if unknown
16404 @end table
16405
16406 @section swapuv
16407 Swap U & V plane.
16408
16409 @section telecine
16410
16411 Apply telecine process to the video.
16412
16413 This filter accepts the following options:
16414
16415 @table @option
16416 @item first_field
16417 @table @samp
16418 @item top, t
16419 top field first
16420 @item bottom, b
16421 bottom field first
16422 The default value is @code{top}.
16423 @end table
16424
16425 @item pattern
16426 A string of numbers representing the pulldown pattern you wish to apply.
16427 The default value is @code{23}.
16428 @end table
16429
16430 @example
16431 Some typical patterns:
16432
16433 NTSC output (30i):
16434 27.5p: 32222
16435 24p: 23 (classic)
16436 24p: 2332 (preferred)
16437 20p: 33
16438 18p: 334
16439 16p: 3444
16440
16441 PAL output (25i):
16442 27.5p: 12222
16443 24p: 222222222223 ("Euro pulldown")
16444 16.67p: 33
16445 16p: 33333334
16446 @end example
16447
16448 @section threshold
16449
16450 Apply threshold effect to video stream.
16451
16452 This filter needs four video streams to perform thresholding.
16453 First stream is stream we are filtering.
16454 Second stream is holding threshold values, third stream is holding min values,
16455 and last, fourth stream is holding max values.
16456
16457 The filter accepts the following option:
16458
16459 @table @option
16460 @item planes
16461 Set which planes will be processed, unprocessed planes will be copied.
16462 By default value 0xf, all planes will be processed.
16463 @end table
16464
16465 For example if first stream pixel's component value is less then threshold value
16466 of pixel component from 2nd threshold stream, third stream value will picked,
16467 otherwise fourth stream pixel component value will be picked.
16468
16469 Using color source filter one can perform various types of thresholding:
16470
16471 @subsection Examples
16472
16473 @itemize
16474 @item
16475 Binary threshold, using gray color as threshold:
16476 @example
16477 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
16478 @end example
16479
16480 @item
16481 Inverted binary threshold, using gray color as threshold:
16482 @example
16483 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
16484 @end example
16485
16486 @item
16487 Truncate binary threshold, using gray color as threshold:
16488 @example
16489 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
16490 @end example
16491
16492 @item
16493 Threshold to zero, using gray color as threshold:
16494 @example
16495 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
16496 @end example
16497
16498 @item
16499 Inverted threshold to zero, using gray color as threshold:
16500 @example
16501 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
16502 @end example
16503 @end itemize
16504
16505 @section thumbnail
16506 Select the most representative frame in a given sequence of consecutive frames.
16507
16508 The filter accepts the following options:
16509
16510 @table @option
16511 @item n
16512 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
16513 will pick one of them, and then handle the next batch of @var{n} frames until
16514 the end. Default is @code{100}.
16515 @end table
16516
16517 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
16518 value will result in a higher memory usage, so a high value is not recommended.
16519
16520 @subsection Examples
16521
16522 @itemize
16523 @item
16524 Extract one picture each 50 frames:
16525 @example
16526 thumbnail=50
16527 @end example
16528
16529 @item
16530 Complete example of a thumbnail creation with @command{ffmpeg}:
16531 @example
16532 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
16533 @end example
16534 @end itemize
16535
16536 @section tile
16537
16538 Tile several successive frames together.
16539
16540 The filter accepts the following options:
16541
16542 @table @option
16543
16544 @item layout
16545 Set the grid size (i.e. the number of lines and columns). For the syntax of
16546 this option, check the
16547 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16548
16549 @item nb_frames
16550 Set the maximum number of frames to render in the given area. It must be less
16551 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
16552 the area will be used.
16553
16554 @item margin
16555 Set the outer border margin in pixels.
16556
16557 @item padding
16558 Set the inner border thickness (i.e. the number of pixels between frames). For
16559 more advanced padding options (such as having different values for the edges),
16560 refer to the pad video filter.
16561
16562 @item color
16563 Specify the color of the unused area. For the syntax of this option, check the
16564 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
16565 The default value of @var{color} is "black".
16566
16567 @item overlap
16568 Set the number of frames to overlap when tiling several successive frames together.
16569 The value must be between @code{0} and @var{nb_frames - 1}.
16570
16571 @item init_padding
16572 Set the number of frames to initially be empty before displaying first output frame.
16573 This controls how soon will one get first output frame.
16574 The value must be between @code{0} and @var{nb_frames - 1}.
16575 @end table
16576
16577 @subsection Examples
16578
16579 @itemize
16580 @item
16581 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
16582 @example
16583 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
16584 @end example
16585 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
16586 duplicating each output frame to accommodate the originally detected frame
16587 rate.
16588
16589 @item
16590 Display @code{5} pictures in an area of @code{3x2} frames,
16591 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
16592 mixed flat and named options:
16593 @example
16594 tile=3x2:nb_frames=5:padding=7:margin=2
16595 @end example
16596 @end itemize
16597
16598 @section tinterlace
16599
16600 Perform various types of temporal field interlacing.
16601
16602 Frames are counted starting from 1, so the first input frame is
16603 considered odd.
16604
16605 The filter accepts the following options:
16606
16607 @table @option
16608
16609 @item mode
16610 Specify the mode of the interlacing. This option can also be specified
16611 as a value alone. See below for a list of values for this option.
16612
16613 Available values are:
16614
16615 @table @samp
16616 @item merge, 0
16617 Move odd frames into the upper field, even into the lower field,
16618 generating a double height frame at half frame rate.
16619 @example
16620  ------> time
16621 Input:
16622 Frame 1         Frame 2         Frame 3         Frame 4
16623
16624 11111           22222           33333           44444
16625 11111           22222           33333           44444
16626 11111           22222           33333           44444
16627 11111           22222           33333           44444
16628
16629 Output:
16630 11111                           33333
16631 22222                           44444
16632 11111                           33333
16633 22222                           44444
16634 11111                           33333
16635 22222                           44444
16636 11111                           33333
16637 22222                           44444
16638 @end example
16639
16640 @item drop_even, 1
16641 Only output odd frames, even frames are dropped, generating a frame with
16642 unchanged height at half frame rate.
16643
16644 @example
16645  ------> time
16646 Input:
16647 Frame 1         Frame 2         Frame 3         Frame 4
16648
16649 11111           22222           33333           44444
16650 11111           22222           33333           44444
16651 11111           22222           33333           44444
16652 11111           22222           33333           44444
16653
16654 Output:
16655 11111                           33333
16656 11111                           33333
16657 11111                           33333
16658 11111                           33333
16659 @end example
16660
16661 @item drop_odd, 2
16662 Only output even frames, odd frames are dropped, generating a frame with
16663 unchanged height at half frame rate.
16664
16665 @example
16666  ------> time
16667 Input:
16668 Frame 1         Frame 2         Frame 3         Frame 4
16669
16670 11111           22222           33333           44444
16671 11111           22222           33333           44444
16672 11111           22222           33333           44444
16673 11111           22222           33333           44444
16674
16675 Output:
16676                 22222                           44444
16677                 22222                           44444
16678                 22222                           44444
16679                 22222                           44444
16680 @end example
16681
16682 @item pad, 3
16683 Expand each frame to full height, but pad alternate lines with black,
16684 generating a frame with double height at the same input frame rate.
16685
16686 @example
16687  ------> time
16688 Input:
16689 Frame 1         Frame 2         Frame 3         Frame 4
16690
16691 11111           22222           33333           44444
16692 11111           22222           33333           44444
16693 11111           22222           33333           44444
16694 11111           22222           33333           44444
16695
16696 Output:
16697 11111           .....           33333           .....
16698 .....           22222           .....           44444
16699 11111           .....           33333           .....
16700 .....           22222           .....           44444
16701 11111           .....           33333           .....
16702 .....           22222           .....           44444
16703 11111           .....           33333           .....
16704 .....           22222           .....           44444
16705 @end example
16706
16707
16708 @item interleave_top, 4
16709 Interleave the upper field from odd frames with the lower field from
16710 even frames, generating a frame with unchanged height at half frame rate.
16711
16712 @example
16713  ------> time
16714 Input:
16715 Frame 1         Frame 2         Frame 3         Frame 4
16716
16717 11111<-         22222           33333<-         44444
16718 11111           22222<-         33333           44444<-
16719 11111<-         22222           33333<-         44444
16720 11111           22222<-         33333           44444<-
16721
16722 Output:
16723 11111                           33333
16724 22222                           44444
16725 11111                           33333
16726 22222                           44444
16727 @end example
16728
16729
16730 @item interleave_bottom, 5
16731 Interleave the lower field from odd frames with the upper field from
16732 even frames, generating a frame with unchanged height at half frame rate.
16733
16734 @example
16735  ------> time
16736 Input:
16737 Frame 1         Frame 2         Frame 3         Frame 4
16738
16739 11111           22222<-         33333           44444<-
16740 11111<-         22222           33333<-         44444
16741 11111           22222<-         33333           44444<-
16742 11111<-         22222           33333<-         44444
16743
16744 Output:
16745 22222                           44444
16746 11111                           33333
16747 22222                           44444
16748 11111                           33333
16749 @end example
16750
16751
16752 @item interlacex2, 6
16753 Double frame rate with unchanged height. Frames are inserted each
16754 containing the second temporal field from the previous input frame and
16755 the first temporal field from the next input frame. This mode relies on
16756 the top_field_first flag. Useful for interlaced video displays with no
16757 field synchronisation.
16758
16759 @example
16760  ------> time
16761 Input:
16762 Frame 1         Frame 2         Frame 3         Frame 4
16763
16764 11111           22222           33333           44444
16765  11111           22222           33333           44444
16766 11111           22222           33333           44444
16767  11111           22222           33333           44444
16768
16769 Output:
16770 11111   22222   22222   33333   33333   44444   44444
16771  11111   11111   22222   22222   33333   33333   44444
16772 11111   22222   22222   33333   33333   44444   44444
16773  11111   11111   22222   22222   33333   33333   44444
16774 @end example
16775
16776
16777 @item mergex2, 7
16778 Move odd frames into the upper field, even into the lower field,
16779 generating a double height frame at same frame rate.
16780
16781 @example
16782  ------> time
16783 Input:
16784 Frame 1         Frame 2         Frame 3         Frame 4
16785
16786 11111           22222           33333           44444
16787 11111           22222           33333           44444
16788 11111           22222           33333           44444
16789 11111           22222           33333           44444
16790
16791 Output:
16792 11111           33333           33333           55555
16793 22222           22222           44444           44444
16794 11111           33333           33333           55555
16795 22222           22222           44444           44444
16796 11111           33333           33333           55555
16797 22222           22222           44444           44444
16798 11111           33333           33333           55555
16799 22222           22222           44444           44444
16800 @end example
16801
16802 @end table
16803
16804 Numeric values are deprecated but are accepted for backward
16805 compatibility reasons.
16806
16807 Default mode is @code{merge}.
16808
16809 @item flags
16810 Specify flags influencing the filter process.
16811
16812 Available value for @var{flags} is:
16813
16814 @table @option
16815 @item low_pass_filter, vlfp
16816 Enable linear vertical low-pass filtering in the filter.
16817 Vertical low-pass filtering is required when creating an interlaced
16818 destination from a progressive source which contains high-frequency
16819 vertical detail. Filtering will reduce interlace 'twitter' and Moire
16820 patterning.
16821
16822 @item complex_filter, cvlfp
16823 Enable complex vertical low-pass filtering.
16824 This will slightly less reduce interlace 'twitter' and Moire
16825 patterning but better retain detail and subjective sharpness impression.
16826
16827 @end table
16828
16829 Vertical low-pass filtering can only be enabled for @option{mode}
16830 @var{interleave_top} and @var{interleave_bottom}.
16831
16832 @end table
16833
16834 @section tmix
16835
16836 Mix successive video frames.
16837
16838 A description of the accepted options follows.
16839
16840 @table @option
16841 @item frames
16842 The number of successive frames to mix. If unspecified, it defaults to 3.
16843
16844 @item weights
16845 Specify weight of each input video frame.
16846 Each weight is separated by space. If number of weights is smaller than
16847 number of @var{frames} last specified weight will be used for all remaining
16848 unset weights.
16849
16850 @item scale
16851 Specify scale, if it is set it will be multiplied with sum
16852 of each weight multiplied with pixel values to give final destination
16853 pixel value. By default @var{scale} is auto scaled to sum of weights.
16854 @end table
16855
16856 @subsection Examples
16857
16858 @itemize
16859 @item
16860 Average 7 successive frames:
16861 @example
16862 tmix=frames=7:weights="1 1 1 1 1 1 1"
16863 @end example
16864
16865 @item
16866 Apply simple temporal convolution:
16867 @example
16868 tmix=frames=3:weights="-1 3 -1"
16869 @end example
16870
16871 @item
16872 Similar as above but only showing temporal differences:
16873 @example
16874 tmix=frames=3:weights="-1 2 -1":scale=1
16875 @end example
16876 @end itemize
16877
16878 @anchor{tonemap}
16879 @section tonemap
16880 Tone map colors from different dynamic ranges.
16881
16882 This filter expects data in single precision floating point, as it needs to
16883 operate on (and can output) out-of-range values. Another filter, such as
16884 @ref{zscale}, is needed to convert the resulting frame to a usable format.
16885
16886 The tonemapping algorithms implemented only work on linear light, so input
16887 data should be linearized beforehand (and possibly correctly tagged).
16888
16889 @example
16890 ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
16891 @end example
16892
16893 @subsection Options
16894 The filter accepts the following options.
16895
16896 @table @option
16897 @item tonemap
16898 Set the tone map algorithm to use.
16899
16900 Possible values are:
16901 @table @var
16902 @item none
16903 Do not apply any tone map, only desaturate overbright pixels.
16904
16905 @item clip
16906 Hard-clip any out-of-range values. Use it for perfect color accuracy for
16907 in-range values, while distorting out-of-range values.
16908
16909 @item linear
16910 Stretch the entire reference gamut to a linear multiple of the display.
16911
16912 @item gamma
16913 Fit a logarithmic transfer between the tone curves.
16914
16915 @item reinhard
16916 Preserve overall image brightness with a simple curve, using nonlinear
16917 contrast, which results in flattening details and degrading color accuracy.
16918
16919 @item hable
16920 Preserve both dark and bright details better than @var{reinhard}, at the cost
16921 of slightly darkening everything. Use it when detail preservation is more
16922 important than color and brightness accuracy.
16923
16924 @item mobius
16925 Smoothly map out-of-range values, while retaining contrast and colors for
16926 in-range material as much as possible. Use it when color accuracy is more
16927 important than detail preservation.
16928 @end table
16929
16930 Default is none.
16931
16932 @item param
16933 Tune the tone mapping algorithm.
16934
16935 This affects the following algorithms:
16936 @table @var
16937 @item none
16938 Ignored.
16939
16940 @item linear
16941 Specifies the scale factor to use while stretching.
16942 Default to 1.0.
16943
16944 @item gamma
16945 Specifies the exponent of the function.
16946 Default to 1.8.
16947
16948 @item clip
16949 Specify an extra linear coefficient to multiply into the signal before clipping.
16950 Default to 1.0.
16951
16952 @item reinhard
16953 Specify the local contrast coefficient at the display peak.
16954 Default to 0.5, which means that in-gamut values will be about half as bright
16955 as when clipping.
16956
16957 @item hable
16958 Ignored.
16959
16960 @item mobius
16961 Specify the transition point from linear to mobius transform. Every value
16962 below this point is guaranteed to be mapped 1:1. The higher the value, the
16963 more accurate the result will be, at the cost of losing bright details.
16964 Default to 0.3, which due to the steep initial slope still preserves in-range
16965 colors fairly accurately.
16966 @end table
16967
16968 @item desat
16969 Apply desaturation for highlights that exceed this level of brightness. The
16970 higher the parameter, the more color information will be preserved. This
16971 setting helps prevent unnaturally blown-out colors for super-highlights, by
16972 (smoothly) turning into white instead. This makes images feel more natural,
16973 at the cost of reducing information about out-of-range colors.
16974
16975 The default of 2.0 is somewhat conservative and will mostly just apply to
16976 skies or directly sunlit surfaces. A setting of 0.0 disables this option.
16977
16978 This option works only if the input frame has a supported color tag.
16979
16980 @item peak
16981 Override signal/nominal/reference peak with this value. Useful when the
16982 embedded peak information in display metadata is not reliable or when tone
16983 mapping from a lower range to a higher range.
16984 @end table
16985
16986 @section tpad
16987
16988 Temporarily pad video frames.
16989
16990 The filter accepts the following options:
16991
16992 @table @option
16993 @item start
16994 Specify number of delay frames before input video stream.
16995
16996 @item stop
16997 Specify number of padding frames after input video stream.
16998 Set to -1 to pad indefinitely.
16999
17000 @item start_mode
17001 Set kind of frames added to beginning of stream.
17002 Can be either @var{add} or @var{clone}.
17003 With @var{add} frames of solid-color are added.
17004 With @var{clone} frames are clones of first frame.
17005
17006 @item stop_mode
17007 Set kind of frames added to end of stream.
17008 Can be either @var{add} or @var{clone}.
17009 With @var{add} frames of solid-color are added.
17010 With @var{clone} frames are clones of last frame.
17011
17012 @item start_duration, stop_duration
17013 Specify the duration of the start/stop delay. See
17014 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
17015 for the accepted syntax.
17016 These options override @var{start} and @var{stop}.
17017
17018 @item color
17019 Specify the color of the padded area. For the syntax of this option,
17020 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
17021 manual,ffmpeg-utils}.
17022
17023 The default value of @var{color} is "black".
17024 @end table
17025
17026 @anchor{transpose}
17027 @section transpose
17028
17029 Transpose rows with columns in the input video and optionally flip it.
17030
17031 It accepts the following parameters:
17032
17033 @table @option
17034
17035 @item dir
17036 Specify the transposition direction.
17037
17038 Can assume the following values:
17039 @table @samp
17040 @item 0, 4, cclock_flip
17041 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
17042 @example
17043 L.R     L.l
17044 . . ->  . .
17045 l.r     R.r
17046 @end example
17047
17048 @item 1, 5, clock
17049 Rotate by 90 degrees clockwise, that is:
17050 @example
17051 L.R     l.L
17052 . . ->  . .
17053 l.r     r.R
17054 @end example
17055
17056 @item 2, 6, cclock
17057 Rotate by 90 degrees counterclockwise, that is:
17058 @example
17059 L.R     R.r
17060 . . ->  . .
17061 l.r     L.l
17062 @end example
17063
17064 @item 3, 7, clock_flip
17065 Rotate by 90 degrees clockwise and vertically flip, that is:
17066 @example
17067 L.R     r.R
17068 . . ->  . .
17069 l.r     l.L
17070 @end example
17071 @end table
17072
17073 For values between 4-7, the transposition is only done if the input
17074 video geometry is portrait and not landscape. These values are
17075 deprecated, the @code{passthrough} option should be used instead.
17076
17077 Numerical values are deprecated, and should be dropped in favor of
17078 symbolic constants.
17079
17080 @item passthrough
17081 Do not apply the transposition if the input geometry matches the one
17082 specified by the specified value. It accepts the following values:
17083 @table @samp
17084 @item none
17085 Always apply transposition.
17086 @item portrait
17087 Preserve portrait geometry (when @var{height} >= @var{width}).
17088 @item landscape
17089 Preserve landscape geometry (when @var{width} >= @var{height}).
17090 @end table
17091
17092 Default value is @code{none}.
17093 @end table
17094
17095 For example to rotate by 90 degrees clockwise and preserve portrait
17096 layout:
17097 @example
17098 transpose=dir=1:passthrough=portrait
17099 @end example
17100
17101 The command above can also be specified as:
17102 @example
17103 transpose=1:portrait
17104 @end example
17105
17106 @section transpose_npp
17107
17108 Transpose rows with columns in the input video and optionally flip it.
17109 For more in depth examples see the @ref{transpose} video filter, which shares mostly the same options.
17110
17111 It accepts the following parameters:
17112
17113 @table @option
17114
17115 @item dir
17116 Specify the transposition direction.
17117
17118 Can assume the following values:
17119 @table @samp
17120 @item cclock_flip
17121 Rotate by 90 degrees counterclockwise and vertically flip. (default)
17122
17123 @item clock
17124 Rotate by 90 degrees clockwise.
17125
17126 @item cclock
17127 Rotate by 90 degrees counterclockwise.
17128
17129 @item clock_flip
17130 Rotate by 90 degrees clockwise and vertically flip.
17131 @end table
17132
17133 @item passthrough
17134 Do not apply the transposition if the input geometry matches the one
17135 specified by the specified value. It accepts the following values:
17136 @table @samp
17137 @item none
17138 Always apply transposition. (default)
17139 @item portrait
17140 Preserve portrait geometry (when @var{height} >= @var{width}).
17141 @item landscape
17142 Preserve landscape geometry (when @var{width} >= @var{height}).
17143 @end table
17144
17145 @end table
17146
17147 @section trim
17148 Trim the input so that the output contains one continuous subpart of the input.
17149
17150 It accepts the following parameters:
17151 @table @option
17152 @item start
17153 Specify the time of the start of the kept section, i.e. the frame with the
17154 timestamp @var{start} will be the first frame in the output.
17155
17156 @item end
17157 Specify the time of the first frame that will be dropped, i.e. the frame
17158 immediately preceding the one with the timestamp @var{end} will be the last
17159 frame in the output.
17160
17161 @item start_pts
17162 This is the same as @var{start}, except this option sets the start timestamp
17163 in timebase units instead of seconds.
17164
17165 @item end_pts
17166 This is the same as @var{end}, except this option sets the end timestamp
17167 in timebase units instead of seconds.
17168
17169 @item duration
17170 The maximum duration of the output in seconds.
17171
17172 @item start_frame
17173 The number of the first frame that should be passed to the output.
17174
17175 @item end_frame
17176 The number of the first frame that should be dropped.
17177 @end table
17178
17179 @option{start}, @option{end}, and @option{duration} are expressed as time
17180 duration specifications; see
17181 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
17182 for the accepted syntax.
17183
17184 Note that the first two sets of the start/end options and the @option{duration}
17185 option look at the frame timestamp, while the _frame variants simply count the
17186 frames that pass through the filter. Also note that this filter does not modify
17187 the timestamps. If you wish for the output timestamps to start at zero, insert a
17188 setpts filter after the trim filter.
17189
17190 If multiple start or end options are set, this filter tries to be greedy and
17191 keep all the frames that match at least one of the specified constraints. To keep
17192 only the part that matches all the constraints at once, chain multiple trim
17193 filters.
17194
17195 The defaults are such that all the input is kept. So it is possible to set e.g.
17196 just the end values to keep everything before the specified time.
17197
17198 Examples:
17199 @itemize
17200 @item
17201 Drop everything except the second minute of input:
17202 @example
17203 ffmpeg -i INPUT -vf trim=60:120
17204 @end example
17205
17206 @item
17207 Keep only the first second:
17208 @example
17209 ffmpeg -i INPUT -vf trim=duration=1
17210 @end example
17211
17212 @end itemize
17213
17214 @section unpremultiply
17215 Apply alpha unpremultiply effect to input video stream using first plane
17216 of second stream as alpha.
17217
17218 Both streams must have same dimensions and same pixel format.
17219
17220 The filter accepts the following option:
17221
17222 @table @option
17223 @item planes
17224 Set which planes will be processed, unprocessed planes will be copied.
17225 By default value 0xf, all planes will be processed.
17226
17227 If the format has 1 or 2 components, then luma is bit 0.
17228 If the format has 3 or 4 components:
17229 for RGB formats bit 0 is green, bit 1 is blue and bit 2 is red;
17230 for YUV formats bit 0 is luma, bit 1 is chroma-U and bit 2 is chroma-V.
17231 If present, the alpha channel is always the last bit.
17232
17233 @item inplace
17234 Do not require 2nd input for processing, instead use alpha plane from input stream.
17235 @end table
17236
17237 @anchor{unsharp}
17238 @section unsharp
17239
17240 Sharpen or blur the input video.
17241
17242 It accepts the following parameters:
17243
17244 @table @option
17245 @item luma_msize_x, lx
17246 Set the luma matrix horizontal size. It must be an odd integer between
17247 3 and 23. The default value is 5.
17248
17249 @item luma_msize_y, ly
17250 Set the luma matrix vertical size. It must be an odd integer between 3
17251 and 23. The default value is 5.
17252
17253 @item luma_amount, la
17254 Set the luma effect strength. It must be a floating point number, reasonable
17255 values lay between -1.5 and 1.5.
17256
17257 Negative values will blur the input video, while positive values will
17258 sharpen it, a value of zero will disable the effect.
17259
17260 Default value is 1.0.
17261
17262 @item chroma_msize_x, cx
17263 Set the chroma matrix horizontal size. It must be an odd integer
17264 between 3 and 23. The default value is 5.
17265
17266 @item chroma_msize_y, cy
17267 Set the chroma matrix vertical size. It must be an odd integer
17268 between 3 and 23. The default value is 5.
17269
17270 @item chroma_amount, ca
17271 Set the chroma effect strength. It must be a floating point number, reasonable
17272 values lay between -1.5 and 1.5.
17273
17274 Negative values will blur the input video, while positive values will
17275 sharpen it, a value of zero will disable the effect.
17276
17277 Default value is 0.0.
17278
17279 @end table
17280
17281 All parameters are optional and default to the equivalent of the
17282 string '5:5:1.0:5:5:0.0'.
17283
17284 @subsection Examples
17285
17286 @itemize
17287 @item
17288 Apply strong luma sharpen effect:
17289 @example
17290 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
17291 @end example
17292
17293 @item
17294 Apply a strong blur of both luma and chroma parameters:
17295 @example
17296 unsharp=7:7:-2:7:7:-2
17297 @end example
17298 @end itemize
17299
17300 @section uspp
17301
17302 Apply ultra slow/simple postprocessing filter that compresses and decompresses
17303 the image at several (or - in the case of @option{quality} level @code{8} - all)
17304 shifts and average the results.
17305
17306 The way this differs from the behavior of spp is that uspp actually encodes &
17307 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
17308 DCT similar to MJPEG.
17309
17310 The filter accepts the following options:
17311
17312 @table @option
17313 @item quality
17314 Set quality. This option defines the number of levels for averaging. It accepts
17315 an integer in the range 0-8. If set to @code{0}, the filter will have no
17316 effect. A value of @code{8} means the higher quality. For each increment of
17317 that value the speed drops by a factor of approximately 2.  Default value is
17318 @code{3}.
17319
17320 @item qp
17321 Force a constant quantization parameter. If not set, the filter will use the QP
17322 from the video stream (if available).
17323 @end table
17324
17325 @section vaguedenoiser
17326
17327 Apply a wavelet based denoiser.
17328
17329 It transforms each frame from the video input into the wavelet domain,
17330 using Cohen-Daubechies-Feauveau 9/7. Then it applies some filtering to
17331 the obtained coefficients. It does an inverse wavelet transform after.
17332 Due to wavelet properties, it should give a nice smoothed result, and
17333 reduced noise, without blurring picture features.
17334
17335 This filter accepts the following options:
17336
17337 @table @option
17338 @item threshold
17339 The filtering strength. The higher, the more filtered the video will be.
17340 Hard thresholding can use a higher threshold than soft thresholding
17341 before the video looks overfiltered. Default value is 2.
17342
17343 @item method
17344 The filtering method the filter will use.
17345
17346 It accepts the following values:
17347 @table @samp
17348 @item hard
17349 All values under the threshold will be zeroed.
17350
17351 @item soft
17352 All values under the threshold will be zeroed. All values above will be
17353 reduced by the threshold.
17354
17355 @item garrote
17356 Scales or nullifies coefficients - intermediary between (more) soft and
17357 (less) hard thresholding.
17358 @end table
17359
17360 Default is garrote.
17361
17362 @item nsteps
17363 Number of times, the wavelet will decompose the picture. Picture can't
17364 be decomposed beyond a particular point (typically, 8 for a 640x480
17365 frame - as 2^9 = 512 > 480). Valid values are integers between 1 and 32. Default value is 6.
17366
17367 @item percent
17368 Partial of full denoising (limited coefficients shrinking), from 0 to 100. Default value is 85.
17369
17370 @item planes
17371 A list of the planes to process. By default all planes are processed.
17372 @end table
17373
17374 @section vectorscope
17375
17376 Display 2 color component values in the two dimensional graph (which is called
17377 a vectorscope).
17378
17379 This filter accepts the following options:
17380
17381 @table @option
17382 @item mode, m
17383 Set vectorscope mode.
17384
17385 It accepts the following values:
17386 @table @samp
17387 @item gray
17388 Gray values are displayed on graph, higher brightness means more pixels have
17389 same component color value on location in graph. This is the default mode.
17390
17391 @item color
17392 Gray values are displayed on graph. Surrounding pixels values which are not
17393 present in video frame are drawn in gradient of 2 color components which are
17394 set by option @code{x} and @code{y}. The 3rd color component is static.
17395
17396 @item color2
17397 Actual color components values present in video frame are displayed on graph.
17398
17399 @item color3
17400 Similar as color2 but higher frequency of same values @code{x} and @code{y}
17401 on graph increases value of another color component, which is luminance by
17402 default values of @code{x} and @code{y}.
17403
17404 @item color4
17405 Actual colors present in video frame are displayed on graph. If two different
17406 colors map to same position on graph then color with higher value of component
17407 not present in graph is picked.
17408
17409 @item color5
17410 Gray values are displayed on graph. Similar to @code{color} but with 3rd color
17411 component picked from radial gradient.
17412 @end table
17413
17414 @item x
17415 Set which color component will be represented on X-axis. Default is @code{1}.
17416
17417 @item y
17418 Set which color component will be represented on Y-axis. Default is @code{2}.
17419
17420 @item intensity, i
17421 Set intensity, used by modes: gray, color, color3 and color5 for increasing brightness
17422 of color component which represents frequency of (X, Y) location in graph.
17423
17424 @item envelope, e
17425 @table @samp
17426 @item none
17427 No envelope, this is default.
17428
17429 @item instant
17430 Instant envelope, even darkest single pixel will be clearly highlighted.
17431
17432 @item peak
17433 Hold maximum and minimum values presented in graph over time. This way you
17434 can still spot out of range values without constantly looking at vectorscope.
17435
17436 @item peak+instant
17437 Peak and instant envelope combined together.
17438 @end table
17439
17440 @item graticule, g
17441 Set what kind of graticule to draw.
17442 @table @samp
17443 @item none
17444 @item green
17445 @item color
17446 @end table
17447
17448 @item opacity, o
17449 Set graticule opacity.
17450
17451 @item flags, f
17452 Set graticule flags.
17453
17454 @table @samp
17455 @item white
17456 Draw graticule for white point.
17457
17458 @item black
17459 Draw graticule for black point.
17460
17461 @item name
17462 Draw color points short names.
17463 @end table
17464
17465 @item bgopacity, b
17466 Set background opacity.
17467
17468 @item lthreshold, l
17469 Set low threshold for color component not represented on X or Y axis.
17470 Values lower than this value will be ignored. Default is 0.
17471 Note this value is multiplied with actual max possible value one pixel component
17472 can have. So for 8-bit input and low threshold value of 0.1 actual threshold
17473 is 0.1 * 255 = 25.
17474
17475 @item hthreshold, h
17476 Set high threshold for color component not represented on X or Y axis.
17477 Values higher than this value will be ignored. Default is 1.
17478 Note this value is multiplied with actual max possible value one pixel component
17479 can have. So for 8-bit input and high threshold value of 0.9 actual threshold
17480 is 0.9 * 255 = 230.
17481
17482 @item colorspace, c
17483 Set what kind of colorspace to use when drawing graticule.
17484 @table @samp
17485 @item auto
17486 @item 601
17487 @item 709
17488 @end table
17489 Default is auto.
17490 @end table
17491
17492 @anchor{vidstabdetect}
17493 @section vidstabdetect
17494
17495 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
17496 @ref{vidstabtransform} for pass 2.
17497
17498 This filter generates a file with relative translation and rotation
17499 transform information about subsequent frames, which is then used by
17500 the @ref{vidstabtransform} filter.
17501
17502 To enable compilation of this filter you need to configure FFmpeg with
17503 @code{--enable-libvidstab}.
17504
17505 This filter accepts the following options:
17506
17507 @table @option
17508 @item result
17509 Set the path to the file used to write the transforms information.
17510 Default value is @file{transforms.trf}.
17511
17512 @item shakiness
17513 Set how shaky the video is and how quick the camera is. It accepts an
17514 integer in the range 1-10, a value of 1 means little shakiness, a
17515 value of 10 means strong shakiness. Default value is 5.
17516
17517 @item accuracy
17518 Set the accuracy of the detection process. It must be a value in the
17519 range 1-15. A value of 1 means low accuracy, a value of 15 means high
17520 accuracy. Default value is 15.
17521
17522 @item stepsize
17523 Set stepsize of the search process. The region around minimum is
17524 scanned with 1 pixel resolution. Default value is 6.
17525
17526 @item mincontrast
17527 Set minimum contrast. Below this value a local measurement field is
17528 discarded. Must be a floating point value in the range 0-1. Default
17529 value is 0.3.
17530
17531 @item tripod
17532 Set reference frame number for tripod mode.
17533
17534 If enabled, the motion of the frames is compared to a reference frame
17535 in the filtered stream, identified by the specified number. The idea
17536 is to compensate all movements in a more-or-less static scene and keep
17537 the camera view absolutely still.
17538
17539 If set to 0, it is disabled. The frames are counted starting from 1.
17540
17541 @item show
17542 Show fields and transforms in the resulting frames. It accepts an
17543 integer in the range 0-2. Default value is 0, which disables any
17544 visualization.
17545 @end table
17546
17547 @subsection Examples
17548
17549 @itemize
17550 @item
17551 Use default values:
17552 @example
17553 vidstabdetect
17554 @end example
17555
17556 @item
17557 Analyze strongly shaky movie and put the results in file
17558 @file{mytransforms.trf}:
17559 @example
17560 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
17561 @end example
17562
17563 @item
17564 Visualize the result of internal transformations in the resulting
17565 video:
17566 @example
17567 vidstabdetect=show=1
17568 @end example
17569
17570 @item
17571 Analyze a video with medium shakiness using @command{ffmpeg}:
17572 @example
17573 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
17574 @end example
17575 @end itemize
17576
17577 @anchor{vidstabtransform}
17578 @section vidstabtransform
17579
17580 Video stabilization/deshaking: pass 2 of 2,
17581 see @ref{vidstabdetect} for pass 1.
17582
17583 Read a file with transform information for each frame and
17584 apply/compensate them. Together with the @ref{vidstabdetect}
17585 filter this can be used to deshake videos. See also
17586 @url{http://public.hronopik.de/vid.stab}. It is important to also use
17587 the @ref{unsharp} filter, see below.
17588
17589 To enable compilation of this filter you need to configure FFmpeg with
17590 @code{--enable-libvidstab}.
17591
17592 @subsection Options
17593
17594 @table @option
17595 @item input
17596 Set path to the file used to read the transforms. Default value is
17597 @file{transforms.trf}.
17598
17599 @item smoothing
17600 Set the number of frames (value*2 + 1) used for lowpass filtering the
17601 camera movements. Default value is 10.
17602
17603 For example a number of 10 means that 21 frames are used (10 in the
17604 past and 10 in the future) to smoothen the motion in the video. A
17605 larger value leads to a smoother video, but limits the acceleration of
17606 the camera (pan/tilt movements). 0 is a special case where a static
17607 camera is simulated.
17608
17609 @item optalgo
17610 Set the camera path optimization algorithm.
17611
17612 Accepted values are:
17613 @table @samp
17614 @item gauss
17615 gaussian kernel low-pass filter on camera motion (default)
17616 @item avg
17617 averaging on transformations
17618 @end table
17619
17620 @item maxshift
17621 Set maximal number of pixels to translate frames. Default value is -1,
17622 meaning no limit.
17623
17624 @item maxangle
17625 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
17626 value is -1, meaning no limit.
17627
17628 @item crop
17629 Specify how to deal with borders that may be visible due to movement
17630 compensation.
17631
17632 Available values are:
17633 @table @samp
17634 @item keep
17635 keep image information from previous frame (default)
17636 @item black
17637 fill the border black
17638 @end table
17639
17640 @item invert
17641 Invert transforms if set to 1. Default value is 0.
17642
17643 @item relative
17644 Consider transforms as relative to previous frame if set to 1,
17645 absolute if set to 0. Default value is 0.
17646
17647 @item zoom
17648 Set percentage to zoom. A positive value will result in a zoom-in
17649 effect, a negative value in a zoom-out effect. Default value is 0 (no
17650 zoom).
17651
17652 @item optzoom
17653 Set optimal zooming to avoid borders.
17654
17655 Accepted values are:
17656 @table @samp
17657 @item 0
17658 disabled
17659 @item 1
17660 optimal static zoom value is determined (only very strong movements
17661 will lead to visible borders) (default)
17662 @item 2
17663 optimal adaptive zoom value is determined (no borders will be
17664 visible), see @option{zoomspeed}
17665 @end table
17666
17667 Note that the value given at zoom is added to the one calculated here.
17668
17669 @item zoomspeed
17670 Set percent to zoom maximally each frame (enabled when
17671 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
17672 0.25.
17673
17674 @item interpol
17675 Specify type of interpolation.
17676
17677 Available values are:
17678 @table @samp
17679 @item no
17680 no interpolation
17681 @item linear
17682 linear only horizontal
17683 @item bilinear
17684 linear in both directions (default)
17685 @item bicubic
17686 cubic in both directions (slow)
17687 @end table
17688
17689 @item tripod
17690 Enable virtual tripod mode if set to 1, which is equivalent to
17691 @code{relative=0:smoothing=0}. Default value is 0.
17692
17693 Use also @code{tripod} option of @ref{vidstabdetect}.
17694
17695 @item debug
17696 Increase log verbosity if set to 1. Also the detected global motions
17697 are written to the temporary file @file{global_motions.trf}. Default
17698 value is 0.
17699 @end table
17700
17701 @subsection Examples
17702
17703 @itemize
17704 @item
17705 Use @command{ffmpeg} for a typical stabilization with default values:
17706 @example
17707 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
17708 @end example
17709
17710 Note the use of the @ref{unsharp} filter which is always recommended.
17711
17712 @item
17713 Zoom in a bit more and load transform data from a given file:
17714 @example
17715 vidstabtransform=zoom=5:input="mytransforms.trf"
17716 @end example
17717
17718 @item
17719 Smoothen the video even more:
17720 @example
17721 vidstabtransform=smoothing=30
17722 @end example
17723 @end itemize
17724
17725 @section vflip
17726
17727 Flip the input video vertically.
17728
17729 For example, to vertically flip a video with @command{ffmpeg}:
17730 @example
17731 ffmpeg -i in.avi -vf "vflip" out.avi
17732 @end example
17733
17734 @section vfrdet
17735
17736 Detect variable frame rate video.
17737
17738 This filter tries to detect if the input is variable or constant frame rate.
17739
17740 At end it will output number of frames detected as having variable delta pts,
17741 and ones with constant delta pts.
17742 If there was frames with variable delta, than it will also show min and max delta
17743 encountered.
17744
17745 @section vibrance
17746
17747 Boost or alter saturation.
17748
17749 The filter accepts the following options:
17750 @table @option
17751 @item intensity
17752 Set strength of boost if positive value or strength of alter if negative value.
17753 Default is 0. Allowed range is from -2 to 2.
17754
17755 @item rbal
17756 Set the red balance. Default is 1. Allowed range is from -10 to 10.
17757
17758 @item gbal
17759 Set the green balance. Default is 1. Allowed range is from -10 to 10.
17760
17761 @item bbal
17762 Set the blue balance. Default is 1. Allowed range is from -10 to 10.
17763
17764 @item rlum
17765 Set the red luma coefficient.
17766
17767 @item glum
17768 Set the green luma coefficient.
17769
17770 @item blum
17771 Set the blue luma coefficient.
17772 @end table
17773
17774 @anchor{vignette}
17775 @section vignette
17776
17777 Make or reverse a natural vignetting effect.
17778
17779 The filter accepts the following options:
17780
17781 @table @option
17782 @item angle, a
17783 Set lens angle expression as a number of radians.
17784
17785 The value is clipped in the @code{[0,PI/2]} range.
17786
17787 Default value: @code{"PI/5"}
17788
17789 @item x0
17790 @item y0
17791 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
17792 by default.
17793
17794 @item mode
17795 Set forward/backward mode.
17796
17797 Available modes are:
17798 @table @samp
17799 @item forward
17800 The larger the distance from the central point, the darker the image becomes.
17801
17802 @item backward
17803 The larger the distance from the central point, the brighter the image becomes.
17804 This can be used to reverse a vignette effect, though there is no automatic
17805 detection to extract the lens @option{angle} and other settings (yet). It can
17806 also be used to create a burning effect.
17807 @end table
17808
17809 Default value is @samp{forward}.
17810
17811 @item eval
17812 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
17813
17814 It accepts the following values:
17815 @table @samp
17816 @item init
17817 Evaluate expressions only once during the filter initialization.
17818
17819 @item frame
17820 Evaluate expressions for each incoming frame. This is way slower than the
17821 @samp{init} mode since it requires all the scalers to be re-computed, but it
17822 allows advanced dynamic expressions.
17823 @end table
17824
17825 Default value is @samp{init}.
17826
17827 @item dither
17828 Set dithering to reduce the circular banding effects. Default is @code{1}
17829 (enabled).
17830
17831 @item aspect
17832 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
17833 Setting this value to the SAR of the input will make a rectangular vignetting
17834 following the dimensions of the video.
17835
17836 Default is @code{1/1}.
17837 @end table
17838
17839 @subsection Expressions
17840
17841 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
17842 following parameters.
17843
17844 @table @option
17845 @item w
17846 @item h
17847 input width and height
17848
17849 @item n
17850 the number of input frame, starting from 0
17851
17852 @item pts
17853 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
17854 @var{TB} units, NAN if undefined
17855
17856 @item r
17857 frame rate of the input video, NAN if the input frame rate is unknown
17858
17859 @item t
17860 the PTS (Presentation TimeStamp) of the filtered video frame,
17861 expressed in seconds, NAN if undefined
17862
17863 @item tb
17864 time base of the input video
17865 @end table
17866
17867
17868 @subsection Examples
17869
17870 @itemize
17871 @item
17872 Apply simple strong vignetting effect:
17873 @example
17874 vignette=PI/4
17875 @end example
17876
17877 @item
17878 Make a flickering vignetting:
17879 @example
17880 vignette='PI/4+random(1)*PI/50':eval=frame
17881 @end example
17882
17883 @end itemize
17884
17885 @section vmafmotion
17886
17887 Obtain the average vmaf motion score of a video.
17888 It is one of the component filters of VMAF.
17889
17890 The obtained average motion score is printed through the logging system.
17891
17892 In the below example the input file @file{ref.mpg} is being processed and score
17893 is computed.
17894
17895 @example
17896 ffmpeg -i ref.mpg -lavfi vmafmotion -f null -
17897 @end example
17898
17899 @section vstack
17900 Stack input videos vertically.
17901
17902 All streams must be of same pixel format and of same width.
17903
17904 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
17905 to create same output.
17906
17907 The filter accept the following option:
17908
17909 @table @option
17910 @item inputs
17911 Set number of input streams. Default is 2.
17912
17913 @item shortest
17914 If set to 1, force the output to terminate when the shortest input
17915 terminates. Default value is 0.
17916 @end table
17917
17918 @section w3fdif
17919
17920 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
17921 Deinterlacing Filter").
17922
17923 Based on the process described by Martin Weston for BBC R&D, and
17924 implemented based on the de-interlace algorithm written by Jim
17925 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
17926 uses filter coefficients calculated by BBC R&D.
17927
17928 There are two sets of filter coefficients, so called "simple":
17929 and "complex". Which set of filter coefficients is used can
17930 be set by passing an optional parameter:
17931
17932 @table @option
17933 @item filter
17934 Set the interlacing filter coefficients. Accepts one of the following values:
17935
17936 @table @samp
17937 @item simple
17938 Simple filter coefficient set.
17939 @item complex
17940 More-complex filter coefficient set.
17941 @end table
17942 Default value is @samp{complex}.
17943
17944 @item deint
17945 Specify which frames to deinterlace. Accept one of the following values:
17946
17947 @table @samp
17948 @item all
17949 Deinterlace all frames,
17950 @item interlaced
17951 Only deinterlace frames marked as interlaced.
17952 @end table
17953
17954 Default value is @samp{all}.
17955 @end table
17956
17957 @section waveform
17958 Video waveform monitor.
17959
17960 The waveform monitor plots color component intensity. By default luminance
17961 only. Each column of the waveform corresponds to a column of pixels in the
17962 source video.
17963
17964 It accepts the following options:
17965
17966 @table @option
17967 @item mode, m
17968 Can be either @code{row}, or @code{column}. Default is @code{column}.
17969 In row mode, the graph on the left side represents color component value 0 and
17970 the right side represents value = 255. In column mode, the top side represents
17971 color component value = 0 and bottom side represents value = 255.
17972
17973 @item intensity, i
17974 Set intensity. Smaller values are useful to find out how many values of the same
17975 luminance are distributed across input rows/columns.
17976 Default value is @code{0.04}. Allowed range is [0, 1].
17977
17978 @item mirror, r
17979 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
17980 In mirrored mode, higher values will be represented on the left
17981 side for @code{row} mode and at the top for @code{column} mode. Default is
17982 @code{1} (mirrored).
17983
17984 @item display, d
17985 Set display mode.
17986 It accepts the following values:
17987 @table @samp
17988 @item overlay
17989 Presents information identical to that in the @code{parade}, except
17990 that the graphs representing color components are superimposed directly
17991 over one another.
17992
17993 This display mode makes it easier to spot relative differences or similarities
17994 in overlapping areas of the color components that are supposed to be identical,
17995 such as neutral whites, grays, or blacks.
17996
17997 @item stack
17998 Display separate graph for the color components side by side in
17999 @code{row} mode or one below the other in @code{column} mode.
18000
18001 @item parade
18002 Display separate graph for the color components side by side in
18003 @code{column} mode or one below the other in @code{row} mode.
18004
18005 Using this display mode makes it easy to spot color casts in the highlights
18006 and shadows of an image, by comparing the contours of the top and the bottom
18007 graphs of each waveform. Since whites, grays, and blacks are characterized
18008 by exactly equal amounts of red, green, and blue, neutral areas of the picture
18009 should display three waveforms of roughly equal width/height. If not, the
18010 correction is easy to perform by making level adjustments the three waveforms.
18011 @end table
18012 Default is @code{stack}.
18013
18014 @item components, c
18015 Set which color components to display. Default is 1, which means only luminance
18016 or red color component if input is in RGB colorspace. If is set for example to
18017 7 it will display all 3 (if) available color components.
18018
18019 @item envelope, e
18020 @table @samp
18021 @item none
18022 No envelope, this is default.
18023
18024 @item instant
18025 Instant envelope, minimum and maximum values presented in graph will be easily
18026 visible even with small @code{step} value.
18027
18028 @item peak
18029 Hold minimum and maximum values presented in graph across time. This way you
18030 can still spot out of range values without constantly looking at waveforms.
18031
18032 @item peak+instant
18033 Peak and instant envelope combined together.
18034 @end table
18035
18036 @item filter, f
18037 @table @samp
18038 @item lowpass
18039 No filtering, this is default.
18040
18041 @item flat
18042 Luma and chroma combined together.
18043
18044 @item aflat
18045 Similar as above, but shows difference between blue and red chroma.
18046
18047 @item xflat
18048 Similar as above, but use different colors.
18049
18050 @item chroma
18051 Displays only chroma.
18052
18053 @item color
18054 Displays actual color value on waveform.
18055
18056 @item acolor
18057 Similar as above, but with luma showing frequency of chroma values.
18058 @end table
18059
18060 @item graticule, g
18061 Set which graticule to display.
18062
18063 @table @samp
18064 @item none
18065 Do not display graticule.
18066
18067 @item green
18068 Display green graticule showing legal broadcast ranges.
18069
18070 @item orange
18071 Display orange graticule showing legal broadcast ranges.
18072 @end table
18073
18074 @item opacity, o
18075 Set graticule opacity.
18076
18077 @item flags, fl
18078 Set graticule flags.
18079
18080 @table @samp
18081 @item numbers
18082 Draw numbers above lines. By default enabled.
18083
18084 @item dots
18085 Draw dots instead of lines.
18086 @end table
18087
18088 @item scale, s
18089 Set scale used for displaying graticule.
18090
18091 @table @samp
18092 @item digital
18093 @item millivolts
18094 @item ire
18095 @end table
18096 Default is digital.
18097
18098 @item bgopacity, b
18099 Set background opacity.
18100 @end table
18101
18102 @section weave, doubleweave
18103
18104 The @code{weave} takes a field-based video input and join
18105 each two sequential fields into single frame, producing a new double
18106 height clip with half the frame rate and half the frame count.
18107
18108 The @code{doubleweave} works same as @code{weave} but without
18109 halving frame rate and frame count.
18110
18111 It accepts the following option:
18112
18113 @table @option
18114 @item first_field
18115 Set first field. Available values are:
18116
18117 @table @samp
18118 @item top, t
18119 Set the frame as top-field-first.
18120
18121 @item bottom, b
18122 Set the frame as bottom-field-first.
18123 @end table
18124 @end table
18125
18126 @subsection Examples
18127
18128 @itemize
18129 @item
18130 Interlace video using @ref{select} and @ref{separatefields} filter:
18131 @example
18132 separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
18133 @end example
18134 @end itemize
18135
18136 @section xbr
18137 Apply the xBR high-quality magnification filter which is designed for pixel
18138 art. It follows a set of edge-detection rules, see
18139 @url{https://forums.libretro.com/t/xbr-algorithm-tutorial/123}.
18140
18141 It accepts the following option:
18142
18143 @table @option
18144 @item n
18145 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
18146 @code{3xBR} and @code{4} for @code{4xBR}.
18147 Default is @code{3}.
18148 @end table
18149
18150 @section xstack
18151 Stack video inputs into custom layout.
18152
18153 All streams must be of same pixel format.
18154
18155 The filter accept the following option:
18156
18157 @table @option
18158 @item inputs
18159 Set number of input streams. Default is 2.
18160
18161 @item layout
18162 Specify layout of inputs.
18163 This option requires the desired layout configuration to be explicitly set by the user.
18164 This sets position of each video input in output. Each input
18165 is separated by '|'.
18166 The first number represents the column, and the second number represents the row.
18167 Numbers start at 0 and are separated by '_'. Optionally one can use wX and hX,
18168 where X is video input from which to take width or height.
18169 Multiple values can be used when separated by '+'. In such
18170 case values are summed together.
18171
18172 @item shortest
18173 If set to 1, force the output to terminate when the shortest input
18174 terminates. Default value is 0.
18175 @end table
18176
18177 @subsection Examples
18178
18179 @itemize
18180 @item
18181 Display 4 inputs into 2x2 grid,
18182 note that if inputs are of different sizes unused gaps might appear,
18183 as not all of output video is used.
18184 @example
18185 xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0
18186 @end example
18187
18188 @item
18189 Display 4 inputs into 1x4 grid,
18190 note that if inputs are of different sizes unused gaps might appear,
18191 as not all of output video is used.
18192 @example
18193 xstack=inputs=4:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2
18194 @end example
18195
18196 @item
18197 Display 9 inputs into 3x3 grid,
18198 note that if inputs are of different sizes unused gaps might appear,
18199 as not all of output video is used.
18200 @example
18201 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
18202 @end example
18203 @end itemize
18204
18205 @anchor{yadif}
18206 @section yadif
18207
18208 Deinterlace the input video ("yadif" means "yet another deinterlacing
18209 filter").
18210
18211 It accepts the following parameters:
18212
18213
18214 @table @option
18215
18216 @item mode
18217 The interlacing mode to adopt. It accepts one of the following values:
18218
18219 @table @option
18220 @item 0, send_frame
18221 Output one frame for each frame.
18222 @item 1, send_field
18223 Output one frame for each field.
18224 @item 2, send_frame_nospatial
18225 Like @code{send_frame}, but it skips the spatial interlacing check.
18226 @item 3, send_field_nospatial
18227 Like @code{send_field}, but it skips the spatial interlacing check.
18228 @end table
18229
18230 The default value is @code{send_frame}.
18231
18232 @item parity
18233 The picture field parity assumed for the input interlaced video. It accepts one
18234 of the following values:
18235
18236 @table @option
18237 @item 0, tff
18238 Assume the top field is first.
18239 @item 1, bff
18240 Assume the bottom field is first.
18241 @item -1, auto
18242 Enable automatic detection of field parity.
18243 @end table
18244
18245 The default value is @code{auto}.
18246 If the interlacing is unknown or the decoder does not export this information,
18247 top field first will be assumed.
18248
18249 @item deint
18250 Specify which frames to deinterlace. Accept one of the following
18251 values:
18252
18253 @table @option
18254 @item 0, all
18255 Deinterlace all frames.
18256 @item 1, interlaced
18257 Only deinterlace frames marked as interlaced.
18258 @end table
18259
18260 The default value is @code{all}.
18261 @end table
18262
18263 @section yadif_cuda
18264
18265 Deinterlace the input video using the @ref{yadif} algorithm, but implemented
18266 in CUDA so that it can work as part of a GPU accelerated pipeline with nvdec
18267 and/or nvenc.
18268
18269 It accepts the following parameters:
18270
18271
18272 @table @option
18273
18274 @item mode
18275 The interlacing mode to adopt. It accepts one of the following values:
18276
18277 @table @option
18278 @item 0, send_frame
18279 Output one frame for each frame.
18280 @item 1, send_field
18281 Output one frame for each field.
18282 @item 2, send_frame_nospatial
18283 Like @code{send_frame}, but it skips the spatial interlacing check.
18284 @item 3, send_field_nospatial
18285 Like @code{send_field}, but it skips the spatial interlacing check.
18286 @end table
18287
18288 The default value is @code{send_frame}.
18289
18290 @item parity
18291 The picture field parity assumed for the input interlaced video. It accepts one
18292 of the following values:
18293
18294 @table @option
18295 @item 0, tff
18296 Assume the top field is first.
18297 @item 1, bff
18298 Assume the bottom field is first.
18299 @item -1, auto
18300 Enable automatic detection of field parity.
18301 @end table
18302
18303 The default value is @code{auto}.
18304 If the interlacing is unknown or the decoder does not export this information,
18305 top field first will be assumed.
18306
18307 @item deint
18308 Specify which frames to deinterlace. Accept one of the following
18309 values:
18310
18311 @table @option
18312 @item 0, all
18313 Deinterlace all frames.
18314 @item 1, interlaced
18315 Only deinterlace frames marked as interlaced.
18316 @end table
18317
18318 The default value is @code{all}.
18319 @end table
18320
18321 @section zoompan
18322
18323 Apply Zoom & Pan effect.
18324
18325 This filter accepts the following options:
18326
18327 @table @option
18328 @item zoom, z
18329 Set the zoom expression. Default is 1.
18330
18331 @item x
18332 @item y
18333 Set the x and y expression. Default is 0.
18334
18335 @item d
18336 Set the duration expression in number of frames.
18337 This sets for how many number of frames effect will last for
18338 single input image.
18339
18340 @item s
18341 Set the output image size, default is 'hd720'.
18342
18343 @item fps
18344 Set the output frame rate, default is '25'.
18345 @end table
18346
18347 Each expression can contain the following constants:
18348
18349 @table @option
18350 @item in_w, iw
18351 Input width.
18352
18353 @item in_h, ih
18354 Input height.
18355
18356 @item out_w, ow
18357 Output width.
18358
18359 @item out_h, oh
18360 Output height.
18361
18362 @item in
18363 Input frame count.
18364
18365 @item on
18366 Output frame count.
18367
18368 @item x
18369 @item y
18370 Last calculated 'x' and 'y' position from 'x' and 'y' expression
18371 for current input frame.
18372
18373 @item px
18374 @item py
18375 'x' and 'y' of last output frame of previous input frame or 0 when there was
18376 not yet such frame (first input frame).
18377
18378 @item zoom
18379 Last calculated zoom from 'z' expression for current input frame.
18380
18381 @item pzoom
18382 Last calculated zoom of last output frame of previous input frame.
18383
18384 @item duration
18385 Number of output frames for current input frame. Calculated from 'd' expression
18386 for each input frame.
18387
18388 @item pduration
18389 number of output frames created for previous input frame
18390
18391 @item a
18392 Rational number: input width / input height
18393
18394 @item sar
18395 sample aspect ratio
18396
18397 @item dar
18398 display aspect ratio
18399
18400 @end table
18401
18402 @subsection Examples
18403
18404 @itemize
18405 @item
18406 Zoom-in up to 1.5 and pan at same time to some spot near center of picture:
18407 @example
18408 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
18409 @end example
18410
18411 @item
18412 Zoom-in up to 1.5 and pan always at center of picture:
18413 @example
18414 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
18415 @end example
18416
18417 @item
18418 Same as above but without pausing:
18419 @example
18420 zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
18421 @end example
18422 @end itemize
18423
18424 @anchor{zscale}
18425 @section zscale
18426 Scale (resize) the input video, using the z.lib library:
18427 @url{https://github.com/sekrit-twc/zimg}. To enable compilation of this
18428 filter, you need to configure FFmpeg with @code{--enable-libzimg}.
18429
18430 The zscale filter forces the output display aspect ratio to be the same
18431 as the input, by changing the output sample aspect ratio.
18432
18433 If the input image format is different from the format requested by
18434 the next filter, the zscale filter will convert the input to the
18435 requested format.
18436
18437 @subsection Options
18438 The filter accepts the following options.
18439
18440 @table @option
18441 @item width, w
18442 @item height, h
18443 Set the output video dimension expression. Default value is the input
18444 dimension.
18445
18446 If the @var{width} or @var{w} value is 0, the input width is used for
18447 the output. If the @var{height} or @var{h} value is 0, the input height
18448 is used for the output.
18449
18450 If one and only one of the values is -n with n >= 1, the zscale filter
18451 will use a value that maintains the aspect ratio of the input image,
18452 calculated from the other specified dimension. After that it will,
18453 however, make sure that the calculated dimension is divisible by n and
18454 adjust the value if necessary.
18455
18456 If both values are -n with n >= 1, the behavior will be identical to
18457 both values being set to 0 as previously detailed.
18458
18459 See below for the list of accepted constants for use in the dimension
18460 expression.
18461
18462 @item size, s
18463 Set the video size. For the syntax of this option, check the
18464 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18465
18466 @item dither, d
18467 Set the dither type.
18468
18469 Possible values are:
18470 @table @var
18471 @item none
18472 @item ordered
18473 @item random
18474 @item error_diffusion
18475 @end table
18476
18477 Default is none.
18478
18479 @item filter, f
18480 Set the resize filter type.
18481
18482 Possible values are:
18483 @table @var
18484 @item point
18485 @item bilinear
18486 @item bicubic
18487 @item spline16
18488 @item spline36
18489 @item lanczos
18490 @end table
18491
18492 Default is bilinear.
18493
18494 @item range, r
18495 Set the color range.
18496
18497 Possible values are:
18498 @table @var
18499 @item input
18500 @item limited
18501 @item full
18502 @end table
18503
18504 Default is same as input.
18505
18506 @item primaries, p
18507 Set the color primaries.
18508
18509 Possible values are:
18510 @table @var
18511 @item input
18512 @item 709
18513 @item unspecified
18514 @item 170m
18515 @item 240m
18516 @item 2020
18517 @end table
18518
18519 Default is same as input.
18520
18521 @item transfer, t
18522 Set the transfer characteristics.
18523
18524 Possible values are:
18525 @table @var
18526 @item input
18527 @item 709
18528 @item unspecified
18529 @item 601
18530 @item linear
18531 @item 2020_10
18532 @item 2020_12
18533 @item smpte2084
18534 @item iec61966-2-1
18535 @item arib-std-b67
18536 @end table
18537
18538 Default is same as input.
18539
18540 @item matrix, m
18541 Set the colorspace matrix.
18542
18543 Possible value are:
18544 @table @var
18545 @item input
18546 @item 709
18547 @item unspecified
18548 @item 470bg
18549 @item 170m
18550 @item 2020_ncl
18551 @item 2020_cl
18552 @end table
18553
18554 Default is same as input.
18555
18556 @item rangein, rin
18557 Set the input color range.
18558
18559 Possible values are:
18560 @table @var
18561 @item input
18562 @item limited
18563 @item full
18564 @end table
18565
18566 Default is same as input.
18567
18568 @item primariesin, pin
18569 Set the input color primaries.
18570
18571 Possible values are:
18572 @table @var
18573 @item input
18574 @item 709
18575 @item unspecified
18576 @item 170m
18577 @item 240m
18578 @item 2020
18579 @end table
18580
18581 Default is same as input.
18582
18583 @item transferin, tin
18584 Set the input transfer characteristics.
18585
18586 Possible values are:
18587 @table @var
18588 @item input
18589 @item 709
18590 @item unspecified
18591 @item 601
18592 @item linear
18593 @item 2020_10
18594 @item 2020_12
18595 @end table
18596
18597 Default is same as input.
18598
18599 @item matrixin, min
18600 Set the input colorspace matrix.
18601
18602 Possible value are:
18603 @table @var
18604 @item input
18605 @item 709
18606 @item unspecified
18607 @item 470bg
18608 @item 170m
18609 @item 2020_ncl
18610 @item 2020_cl
18611 @end table
18612
18613 @item chromal, c
18614 Set the output chroma location.
18615
18616 Possible values are:
18617 @table @var
18618 @item input
18619 @item left
18620 @item center
18621 @item topleft
18622 @item top
18623 @item bottomleft
18624 @item bottom
18625 @end table
18626
18627 @item chromalin, cin
18628 Set the input chroma location.
18629
18630 Possible values are:
18631 @table @var
18632 @item input
18633 @item left
18634 @item center
18635 @item topleft
18636 @item top
18637 @item bottomleft
18638 @item bottom
18639 @end table
18640
18641 @item npl
18642 Set the nominal peak luminance.
18643 @end table
18644
18645 The values of the @option{w} and @option{h} options are expressions
18646 containing the following constants:
18647
18648 @table @var
18649 @item in_w
18650 @item in_h
18651 The input width and height
18652
18653 @item iw
18654 @item ih
18655 These are the same as @var{in_w} and @var{in_h}.
18656
18657 @item out_w
18658 @item out_h
18659 The output (scaled) width and height
18660
18661 @item ow
18662 @item oh
18663 These are the same as @var{out_w} and @var{out_h}
18664
18665 @item a
18666 The same as @var{iw} / @var{ih}
18667
18668 @item sar
18669 input sample aspect ratio
18670
18671 @item dar
18672 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
18673
18674 @item hsub
18675 @item vsub
18676 horizontal and vertical input chroma subsample values. For example for the
18677 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
18678
18679 @item ohsub
18680 @item ovsub
18681 horizontal and vertical output chroma subsample values. For example for the
18682 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
18683 @end table
18684
18685 @table @option
18686 @end table
18687
18688 @c man end VIDEO FILTERS
18689
18690 @chapter OpenCL Video Filters
18691 @c man begin OPENCL VIDEO FILTERS
18692
18693 Below is a description of the currently available OpenCL video filters.
18694
18695 To enable compilation of these filters you need to configure FFmpeg with
18696 @code{--enable-opencl}.
18697
18698 Running OpenCL filters requires you to initialize a hardware device and to pass that device to all filters in any filter graph.
18699 @table @option
18700
18701 @item -init_hw_device opencl[=@var{name}][:@var{device}[,@var{key=value}...]]
18702 Initialise a new hardware device of type @var{opencl} called @var{name}, using the
18703 given device parameters.
18704
18705 @item -filter_hw_device @var{name}
18706 Pass the hardware device called @var{name} to all filters in any filter graph.
18707
18708 @end table
18709
18710 For more detailed information see @url{https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options}
18711
18712 @itemize
18713 @item
18714 Example of choosing the first device on the second platform and running avgblur_opencl filter with default parameters on it.
18715 @example
18716 -init_hw_device opencl=gpu:1.0 -filter_hw_device gpu -i INPUT -vf "hwupload, avgblur_opencl, hwdownload" OUTPUT
18717 @end example
18718 @end itemize
18719
18720 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.
18721
18722 @section avgblur_opencl
18723
18724 Apply average blur filter.
18725
18726 The filter accepts the following options:
18727
18728 @table @option
18729 @item sizeX
18730 Set horizontal radius size.
18731 Range is @code{[1, 1024]} and default value is @code{1}.
18732
18733 @item planes
18734 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
18735
18736 @item sizeY
18737 Set vertical radius size. Range is @code{[1, 1024]} and default value is @code{0}. If zero, @code{sizeX} value will be used.
18738 @end table
18739
18740 @subsection Example
18741
18742 @itemize
18743 @item
18744 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.
18745 @example
18746 -i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
18747 @end example
18748 @end itemize
18749
18750 @section boxblur_opencl
18751
18752 Apply a boxblur algorithm to the input video.
18753
18754 It accepts the following parameters:
18755
18756 @table @option
18757
18758 @item luma_radius, lr
18759 @item luma_power, lp
18760 @item chroma_radius, cr
18761 @item chroma_power, cp
18762 @item alpha_radius, ar
18763 @item alpha_power, ap
18764
18765 @end table
18766
18767 A description of the accepted options follows.
18768
18769 @table @option
18770 @item luma_radius, lr
18771 @item chroma_radius, cr
18772 @item alpha_radius, ar
18773 Set an expression for the box radius in pixels used for blurring the
18774 corresponding input plane.
18775
18776 The radius value must be a non-negative number, and must not be
18777 greater than the value of the expression @code{min(w,h)/2} for the
18778 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
18779 planes.
18780
18781 Default value for @option{luma_radius} is "2". If not specified,
18782 @option{chroma_radius} and @option{alpha_radius} default to the
18783 corresponding value set for @option{luma_radius}.
18784
18785 The expressions can contain the following constants:
18786 @table @option
18787 @item w
18788 @item h
18789 The input width and height in pixels.
18790
18791 @item cw
18792 @item ch
18793 The input chroma image width and height in pixels.
18794
18795 @item hsub
18796 @item vsub
18797 The horizontal and vertical chroma subsample values. For example, for the
18798 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
18799 @end table
18800
18801 @item luma_power, lp
18802 @item chroma_power, cp
18803 @item alpha_power, ap
18804 Specify how many times the boxblur filter is applied to the
18805 corresponding plane.
18806
18807 Default value for @option{luma_power} is 2. If not specified,
18808 @option{chroma_power} and @option{alpha_power} default to the
18809 corresponding value set for @option{luma_power}.
18810
18811 A value of 0 will disable the effect.
18812 @end table
18813
18814 @subsection Examples
18815
18816 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.
18817
18818 @itemize
18819 @item
18820 Apply a boxblur filter with the luma, chroma, and alpha radius
18821 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.
18822 @example
18823 -i INPUT -vf "hwupload, boxblur_opencl=luma_radius=2:luma_power=3, hwdownload" OUTPUT
18824 -i INPUT -vf "hwupload, boxblur_opencl=2:3, hwdownload" OUTPUT
18825 @end example
18826
18827 @item
18828 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.
18829
18830 For the luma plane, a 2x2 box radius will be run once.
18831
18832 For the chroma plane, a 4x4 box radius will be run 5 times.
18833
18834 For the alpha plane, a 3x3 box radius will be run 7 times.
18835 @example
18836 -i INPUT -vf "hwupload, boxblur_opencl=2:1:4:5:3:7, hwdownload" OUTPUT
18837 @end example
18838 @end itemize
18839
18840 @section convolution_opencl
18841
18842 Apply convolution of 3x3, 5x5, 7x7 matrix.
18843
18844 The filter accepts the following options:
18845
18846 @table @option
18847 @item 0m
18848 @item 1m
18849 @item 2m
18850 @item 3m
18851 Set matrix for each plane.
18852 Matrix is sequence of 9, 25 or 49 signed numbers.
18853 Default value for each plane is @code{0 0 0 0 1 0 0 0 0}.
18854
18855 @item 0rdiv
18856 @item 1rdiv
18857 @item 2rdiv
18858 @item 3rdiv
18859 Set multiplier for calculated value for each plane.
18860 If unset or 0, it will be sum of all matrix elements.
18861 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{1.0}.
18862
18863 @item 0bias
18864 @item 1bias
18865 @item 2bias
18866 @item 3bias
18867 Set bias for each plane. This value is added to the result of the multiplication.
18868 Useful for making the overall image brighter or darker.
18869 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{0.0}.
18870
18871 @end table
18872
18873 @subsection Examples
18874
18875 @itemize
18876 @item
18877 Apply sharpen:
18878 @example
18879 -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
18880 @end example
18881
18882 @item
18883 Apply blur:
18884 @example
18885 -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
18886 @end example
18887
18888 @item
18889 Apply edge enhance:
18890 @example
18891 -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
18892 @end example
18893
18894 @item
18895 Apply edge detect:
18896 @example
18897 -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
18898 @end example
18899
18900 @item
18901 Apply laplacian edge detector which includes diagonals:
18902 @example
18903 -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
18904 @end example
18905
18906 @item
18907 Apply emboss:
18908 @example
18909 -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
18910 @end example
18911 @end itemize
18912
18913 @section dilation_opencl
18914
18915 Apply dilation effect to the video.
18916
18917 This filter replaces the pixel by the local(3x3) maximum.
18918
18919 It accepts the following options:
18920
18921 @table @option
18922 @item threshold0
18923 @item threshold1
18924 @item threshold2
18925 @item threshold3
18926 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
18927 If @code{0}, plane will remain unchanged.
18928
18929 @item coordinates
18930 Flag which specifies the pixel to refer to.
18931 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
18932
18933 Flags to local 3x3 coordinates region centered on @code{x}:
18934
18935     1 2 3
18936
18937     4 x 5
18938
18939     6 7 8
18940 @end table
18941
18942 @subsection Example
18943
18944 @itemize
18945 @item
18946 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.
18947 @example
18948 -i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
18949 @end example
18950 @end itemize
18951
18952 @section erosion_opencl
18953
18954 Apply erosion effect to the video.
18955
18956 This filter replaces the pixel by the local(3x3) minimum.
18957
18958 It accepts the following options:
18959
18960 @table @option
18961 @item threshold0
18962 @item threshold1
18963 @item threshold2
18964 @item threshold3
18965 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
18966 If @code{0}, plane will remain unchanged.
18967
18968 @item coordinates
18969 Flag which specifies the pixel to refer to.
18970 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
18971
18972 Flags to local 3x3 coordinates region centered on @code{x}:
18973
18974     1 2 3
18975
18976     4 x 5
18977
18978     6 7 8
18979 @end table
18980
18981 @subsection Example
18982
18983 @itemize
18984 @item
18985 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.
18986 @example
18987 -i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
18988 @end example
18989 @end itemize
18990
18991 @section overlay_opencl
18992
18993 Overlay one video on top of another.
18994
18995 It takes two inputs and has one output. The first input is the "main" video on which the second input is overlaid.
18996 This filter requires same memory layout for all the inputs. So, format conversion may be needed.
18997
18998 The filter accepts the following options:
18999
19000 @table @option
19001
19002 @item x
19003 Set the x coordinate of the overlaid video on the main video.
19004 Default value is @code{0}.
19005
19006 @item y
19007 Set the x coordinate of the overlaid video on the main video.
19008 Default value is @code{0}.
19009
19010 @end table
19011
19012 @subsection Examples
19013
19014 @itemize
19015 @item
19016 Overlay an image LOGO at the top-left corner of the INPUT video. Both inputs are yuv420p format.
19017 @example
19018 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
19019 @end example
19020 @item
19021 The inputs have same memory layout for color channels , the overlay has additional alpha plane, like INPUT is yuv420p, and the LOGO is yuva420p.
19022 @example
19023 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
19024 @end example
19025
19026 @end itemize
19027
19028 @section prewitt_opencl
19029
19030 Apply the Prewitt operator (@url{https://en.wikipedia.org/wiki/Prewitt_operator}) to input video stream.
19031
19032 The filter accepts the following option:
19033
19034 @table @option
19035 @item planes
19036 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
19037
19038 @item scale
19039 Set value which will be multiplied with filtered result.
19040 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
19041
19042 @item delta
19043 Set value which will be added to filtered result.
19044 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
19045 @end table
19046
19047 @subsection Example
19048
19049 @itemize
19050 @item
19051 Apply the Prewitt operator with scale set to 2 and delta set to 10.
19052 @example
19053 -i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
19054 @end example
19055 @end itemize
19056
19057 @section roberts_opencl
19058 Apply the Roberts cross operator (@url{https://en.wikipedia.org/wiki/Roberts_cross}) to input video stream.
19059
19060 The filter accepts the following option:
19061
19062 @table @option
19063 @item planes
19064 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
19065
19066 @item scale
19067 Set value which will be multiplied with filtered result.
19068 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
19069
19070 @item delta
19071 Set value which will be added to filtered result.
19072 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
19073 @end table
19074
19075 @subsection Example
19076
19077 @itemize
19078 @item
19079 Apply the Roberts cross operator with scale set to 2 and delta set to 10
19080 @example
19081 -i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
19082 @end example
19083 @end itemize
19084
19085 @section sobel_opencl
19086
19087 Apply the Sobel operator (@url{https://en.wikipedia.org/wiki/Sobel_operator}) to input video stream.
19088
19089 The filter accepts the following option:
19090
19091 @table @option
19092 @item planes
19093 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
19094
19095 @item scale
19096 Set value which will be multiplied with filtered result.
19097 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
19098
19099 @item delta
19100 Set value which will be added to filtered result.
19101 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
19102 @end table
19103
19104 @subsection Example
19105
19106 @itemize
19107 @item
19108 Apply sobel operator with scale set to 2 and delta set to 10
19109 @example
19110 -i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
19111 @end example
19112 @end itemize
19113
19114 @section tonemap_opencl
19115
19116 Perform HDR(PQ/HLG) to SDR conversion with tone-mapping.
19117
19118 It accepts the following parameters:
19119
19120 @table @option
19121 @item tonemap
19122 Specify the tone-mapping operator to be used. Same as tonemap option in @ref{tonemap}.
19123
19124 @item param
19125 Tune the tone mapping algorithm. same as param option in @ref{tonemap}.
19126
19127 @item desat
19128 Apply desaturation for highlights that exceed this level of brightness. The
19129 higher the parameter, the more color information will be preserved. This
19130 setting helps prevent unnaturally blown-out colors for super-highlights, by
19131 (smoothly) turning into white instead. This makes images feel more natural,
19132 at the cost of reducing information about out-of-range colors.
19133
19134 The default value is 0.5, and the algorithm here is a little different from
19135 the cpu version tonemap currently. A setting of 0.0 disables this option.
19136
19137 @item threshold
19138 The tonemapping algorithm parameters is fine-tuned per each scene. And a threshold
19139 is used to detect whether the scene has changed or not. If the distance between
19140 the current frame average brightness and the current running average exceeds
19141 a threshold value, we would re-calculate scene average and peak brightness.
19142 The default value is 0.2.
19143
19144 @item format
19145 Specify the output pixel format.
19146
19147 Currently supported formats are:
19148 @table @var
19149 @item p010
19150 @item nv12
19151 @end table
19152
19153 @item range, r
19154 Set the output color range.
19155
19156 Possible values are:
19157 @table @var
19158 @item tv/mpeg
19159 @item pc/jpeg
19160 @end table
19161
19162 Default is same as input.
19163
19164 @item primaries, p
19165 Set the output color primaries.
19166
19167 Possible values are:
19168 @table @var
19169 @item bt709
19170 @item bt2020
19171 @end table
19172
19173 Default is same as input.
19174
19175 @item transfer, t
19176 Set the output transfer characteristics.
19177
19178 Possible values are:
19179 @table @var
19180 @item bt709
19181 @item bt2020
19182 @end table
19183
19184 Default is bt709.
19185
19186 @item matrix, m
19187 Set the output colorspace matrix.
19188
19189 Possible value are:
19190 @table @var
19191 @item bt709
19192 @item bt2020
19193 @end table
19194
19195 Default is same as input.
19196
19197 @end table
19198
19199 @subsection Example
19200
19201 @itemize
19202 @item
19203 Convert HDR(PQ/HLG) video to bt2020-transfer-characteristic p010 format using linear operator.
19204 @example
19205 -i INPUT -vf "format=p010,hwupload,tonemap_opencl=t=bt2020:tonemap=linear:format=p010,hwdownload,format=p010" OUTPUT
19206 @end example
19207 @end itemize
19208
19209 @section unsharp_opencl
19210
19211 Sharpen or blur the input video.
19212
19213 It accepts the following parameters:
19214
19215 @table @option
19216 @item luma_msize_x, lx
19217 Set the luma matrix horizontal size.
19218 Range is @code{[1, 23]} and default value is @code{5}.
19219
19220 @item luma_msize_y, ly
19221 Set the luma matrix vertical size.
19222 Range is @code{[1, 23]} and default value is @code{5}.
19223
19224 @item luma_amount, la
19225 Set the luma effect strength.
19226 Range is @code{[-10, 10]} and default value is @code{1.0}.
19227
19228 Negative values will blur the input video, while positive values will
19229 sharpen it, a value of zero will disable the effect.
19230
19231 @item chroma_msize_x, cx
19232 Set the chroma matrix horizontal size.
19233 Range is @code{[1, 23]} and default value is @code{5}.
19234
19235 @item chroma_msize_y, cy
19236 Set the chroma matrix vertical size.
19237 Range is @code{[1, 23]} and default value is @code{5}.
19238
19239 @item chroma_amount, ca
19240 Set the chroma effect strength.
19241 Range is @code{[-10, 10]} and default value is @code{0.0}.
19242
19243 Negative values will blur the input video, while positive values will
19244 sharpen it, a value of zero will disable the effect.
19245
19246 @end table
19247
19248 All parameters are optional and default to the equivalent of the
19249 string '5:5:1.0:5:5:0.0'.
19250
19251 @subsection Examples
19252
19253 @itemize
19254 @item
19255 Apply strong luma sharpen effect:
19256 @example
19257 -i INPUT -vf "hwupload, unsharp_opencl=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5, hwdownload" OUTPUT
19258 @end example
19259
19260 @item
19261 Apply a strong blur of both luma and chroma parameters:
19262 @example
19263 -i INPUT -vf "hwupload, unsharp_opencl=7:7:-2:7:7:-2, hwdownload" OUTPUT
19264 @end example
19265 @end itemize
19266
19267 @c man end OPENCL VIDEO FILTERS
19268
19269 @chapter Video Sources
19270 @c man begin VIDEO SOURCES
19271
19272 Below is a description of the currently available video sources.
19273
19274 @section buffer
19275
19276 Buffer video frames, and make them available to the filter chain.
19277
19278 This source is mainly intended for a programmatic use, in particular
19279 through the interface defined in @file{libavfilter/vsrc_buffer.h}.
19280
19281 It accepts the following parameters:
19282
19283 @table @option
19284
19285 @item video_size
19286 Specify the size (width and height) of the buffered video frames. For the
19287 syntax of this option, check the
19288 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19289
19290 @item width
19291 The input video width.
19292
19293 @item height
19294 The input video height.
19295
19296 @item pix_fmt
19297 A string representing the pixel format of the buffered video frames.
19298 It may be a number corresponding to a pixel format, or a pixel format
19299 name.
19300
19301 @item time_base
19302 Specify the timebase assumed by the timestamps of the buffered frames.
19303
19304 @item frame_rate
19305 Specify the frame rate expected for the video stream.
19306
19307 @item pixel_aspect, sar
19308 The sample (pixel) aspect ratio of the input video.
19309
19310 @item sws_param
19311 Specify the optional parameters to be used for the scale filter which
19312 is automatically inserted when an input change is detected in the
19313 input size or format.
19314
19315 @item hw_frames_ctx
19316 When using a hardware pixel format, this should be a reference to an
19317 AVHWFramesContext describing input frames.
19318 @end table
19319
19320 For example:
19321 @example
19322 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
19323 @end example
19324
19325 will instruct the source to accept video frames with size 320x240 and
19326 with format "yuv410p", assuming 1/24 as the timestamps timebase and
19327 square pixels (1:1 sample aspect ratio).
19328 Since the pixel format with name "yuv410p" corresponds to the number 6
19329 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
19330 this example corresponds to:
19331 @example
19332 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
19333 @end example
19334
19335 Alternatively, the options can be specified as a flat string, but this
19336 syntax is deprecated:
19337
19338 @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}]
19339
19340 @section cellauto
19341
19342 Create a pattern generated by an elementary cellular automaton.
19343
19344 The initial state of the cellular automaton can be defined through the
19345 @option{filename} and @option{pattern} options. If such options are
19346 not specified an initial state is created randomly.
19347
19348 At each new frame a new row in the video is filled with the result of
19349 the cellular automaton next generation. The behavior when the whole
19350 frame is filled is defined by the @option{scroll} option.
19351
19352 This source accepts the following options:
19353
19354 @table @option
19355 @item filename, f
19356 Read the initial cellular automaton state, i.e. the starting row, from
19357 the specified file.
19358 In the file, each non-whitespace character is considered an alive
19359 cell, a newline will terminate the row, and further characters in the
19360 file will be ignored.
19361
19362 @item pattern, p
19363 Read the initial cellular automaton state, i.e. the starting row, from
19364 the specified string.
19365
19366 Each non-whitespace character in the string is considered an alive
19367 cell, a newline will terminate the row, and further characters in the
19368 string will be ignored.
19369
19370 @item rate, r
19371 Set the video rate, that is the number of frames generated per second.
19372 Default is 25.
19373
19374 @item random_fill_ratio, ratio
19375 Set the random fill ratio for the initial cellular automaton row. It
19376 is a floating point number value ranging from 0 to 1, defaults to
19377 1/PHI.
19378
19379 This option is ignored when a file or a pattern is specified.
19380
19381 @item random_seed, seed
19382 Set the seed for filling randomly the initial row, must be an integer
19383 included between 0 and UINT32_MAX. If not specified, or if explicitly
19384 set to -1, the filter will try to use a good random seed on a best
19385 effort basis.
19386
19387 @item rule
19388 Set the cellular automaton rule, it is a number ranging from 0 to 255.
19389 Default value is 110.
19390
19391 @item size, s
19392 Set the size of the output video. For the syntax of this option, check the
19393 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19394
19395 If @option{filename} or @option{pattern} is specified, the size is set
19396 by default to the width of the specified initial state row, and the
19397 height is set to @var{width} * PHI.
19398
19399 If @option{size} is set, it must contain the width of the specified
19400 pattern string, and the specified pattern will be centered in the
19401 larger row.
19402
19403 If a filename or a pattern string is not specified, the size value
19404 defaults to "320x518" (used for a randomly generated initial state).
19405
19406 @item scroll
19407 If set to 1, scroll the output upward when all the rows in the output
19408 have been already filled. If set to 0, the new generated row will be
19409 written over the top row just after the bottom row is filled.
19410 Defaults to 1.
19411
19412 @item start_full, full
19413 If set to 1, completely fill the output with generated rows before
19414 outputting the first frame.
19415 This is the default behavior, for disabling set the value to 0.
19416
19417 @item stitch
19418 If set to 1, stitch the left and right row edges together.
19419 This is the default behavior, for disabling set the value to 0.
19420 @end table
19421
19422 @subsection Examples
19423
19424 @itemize
19425 @item
19426 Read the initial state from @file{pattern}, and specify an output of
19427 size 200x400.
19428 @example
19429 cellauto=f=pattern:s=200x400
19430 @end example
19431
19432 @item
19433 Generate a random initial row with a width of 200 cells, with a fill
19434 ratio of 2/3:
19435 @example
19436 cellauto=ratio=2/3:s=200x200
19437 @end example
19438
19439 @item
19440 Create a pattern generated by rule 18 starting by a single alive cell
19441 centered on an initial row with width 100:
19442 @example
19443 cellauto=p=@@:s=100x400:full=0:rule=18
19444 @end example
19445
19446 @item
19447 Specify a more elaborated initial pattern:
19448 @example
19449 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
19450 @end example
19451
19452 @end itemize
19453
19454 @anchor{coreimagesrc}
19455 @section coreimagesrc
19456 Video source generated on GPU using Apple's CoreImage API on OSX.
19457
19458 This video source is a specialized version of the @ref{coreimage} video filter.
19459 Use a core image generator at the beginning of the applied filterchain to
19460 generate the content.
19461
19462 The coreimagesrc video source accepts the following options:
19463 @table @option
19464 @item list_generators
19465 List all available generators along with all their respective options as well as
19466 possible minimum and maximum values along with the default values.
19467 @example
19468 list_generators=true
19469 @end example
19470
19471 @item size, s
19472 Specify the size of the sourced video. For the syntax of this option, check the
19473 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19474 The default value is @code{320x240}.
19475
19476 @item rate, r
19477 Specify the frame rate of the sourced video, as the number of frames
19478 generated per second. It has to be a string in the format
19479 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
19480 number or a valid video frame rate abbreviation. The default value is
19481 "25".
19482
19483 @item sar
19484 Set the sample aspect ratio of the sourced video.
19485
19486 @item duration, d
19487 Set the duration of the sourced video. See
19488 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
19489 for the accepted syntax.
19490
19491 If not specified, or the expressed duration is negative, the video is
19492 supposed to be generated forever.
19493 @end table
19494
19495 Additionally, all options of the @ref{coreimage} video filter are accepted.
19496 A complete filterchain can be used for further processing of the
19497 generated input without CPU-HOST transfer. See @ref{coreimage} documentation
19498 and examples for details.
19499
19500 @subsection Examples
19501
19502 @itemize
19503
19504 @item
19505 Use CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
19506 given as complete and escaped command-line for Apple's standard bash shell:
19507 @example
19508 ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
19509 @end example
19510 This example is equivalent to the QRCode example of @ref{coreimage} without the
19511 need for a nullsrc video source.
19512 @end itemize
19513
19514
19515 @section mandelbrot
19516
19517 Generate a Mandelbrot set fractal, and progressively zoom towards the
19518 point specified with @var{start_x} and @var{start_y}.
19519
19520 This source accepts the following options:
19521
19522 @table @option
19523
19524 @item end_pts
19525 Set the terminal pts value. Default value is 400.
19526
19527 @item end_scale
19528 Set the terminal scale value.
19529 Must be a floating point value. Default value is 0.3.
19530
19531 @item inner
19532 Set the inner coloring mode, that is the algorithm used to draw the
19533 Mandelbrot fractal internal region.
19534
19535 It shall assume one of the following values:
19536 @table @option
19537 @item black
19538 Set black mode.
19539 @item convergence
19540 Show time until convergence.
19541 @item mincol
19542 Set color based on point closest to the origin of the iterations.
19543 @item period
19544 Set period mode.
19545 @end table
19546
19547 Default value is @var{mincol}.
19548
19549 @item bailout
19550 Set the bailout value. Default value is 10.0.
19551
19552 @item maxiter
19553 Set the maximum of iterations performed by the rendering
19554 algorithm. Default value is 7189.
19555
19556 @item outer
19557 Set outer coloring mode.
19558 It shall assume one of following values:
19559 @table @option
19560 @item iteration_count
19561 Set iteration count mode.
19562 @item normalized_iteration_count
19563 set normalized iteration count mode.
19564 @end table
19565 Default value is @var{normalized_iteration_count}.
19566
19567 @item rate, r
19568 Set frame rate, expressed as number of frames per second. Default
19569 value is "25".
19570
19571 @item size, s
19572 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
19573 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
19574
19575 @item start_scale
19576 Set the initial scale value. Default value is 3.0.
19577
19578 @item start_x
19579 Set the initial x position. Must be a floating point value between
19580 -100 and 100. Default value is -0.743643887037158704752191506114774.
19581
19582 @item start_y
19583 Set the initial y position. Must be a floating point value between
19584 -100 and 100. Default value is -0.131825904205311970493132056385139.
19585 @end table
19586
19587 @section mptestsrc
19588
19589 Generate various test patterns, as generated by the MPlayer test filter.
19590
19591 The size of the generated video is fixed, and is 256x256.
19592 This source is useful in particular for testing encoding features.
19593
19594 This source accepts the following options:
19595
19596 @table @option
19597
19598 @item rate, r
19599 Specify the frame rate of the sourced video, as the number of frames
19600 generated per second. It has to be a string in the format
19601 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
19602 number or a valid video frame rate abbreviation. The default value is
19603 "25".
19604
19605 @item duration, d
19606 Set the duration of the sourced video. See
19607 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
19608 for the accepted syntax.
19609
19610 If not specified, or the expressed duration is negative, the video is
19611 supposed to be generated forever.
19612
19613 @item test, t
19614
19615 Set the number or the name of the test to perform. Supported tests are:
19616 @table @option
19617 @item dc_luma
19618 @item dc_chroma
19619 @item freq_luma
19620 @item freq_chroma
19621 @item amp_luma
19622 @item amp_chroma
19623 @item cbp
19624 @item mv
19625 @item ring1
19626 @item ring2
19627 @item all
19628
19629 @end table
19630
19631 Default value is "all", which will cycle through the list of all tests.
19632 @end table
19633
19634 Some examples:
19635 @example
19636 mptestsrc=t=dc_luma
19637 @end example
19638
19639 will generate a "dc_luma" test pattern.
19640
19641 @section frei0r_src
19642
19643 Provide a frei0r source.
19644
19645 To enable compilation of this filter you need to install the frei0r
19646 header and configure FFmpeg with @code{--enable-frei0r}.
19647
19648 This source accepts the following parameters:
19649
19650 @table @option
19651
19652 @item size
19653 The size of the video to generate. For the syntax of this option, check the
19654 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19655
19656 @item framerate
19657 The framerate of the generated video. It may be a string of the form
19658 @var{num}/@var{den} or a frame rate abbreviation.
19659
19660 @item filter_name
19661 The name to the frei0r source to load. For more information regarding frei0r and
19662 how to set the parameters, read the @ref{frei0r} section in the video filters
19663 documentation.
19664
19665 @item filter_params
19666 A '|'-separated list of parameters to pass to the frei0r source.
19667
19668 @end table
19669
19670 For example, to generate a frei0r partik0l source with size 200x200
19671 and frame rate 10 which is overlaid on the overlay filter main input:
19672 @example
19673 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
19674 @end example
19675
19676 @section life
19677
19678 Generate a life pattern.
19679
19680 This source is based on a generalization of John Conway's life game.
19681
19682 The sourced input represents a life grid, each pixel represents a cell
19683 which can be in one of two possible states, alive or dead. Every cell
19684 interacts with its eight neighbours, which are the cells that are
19685 horizontally, vertically, or diagonally adjacent.
19686
19687 At each interaction the grid evolves according to the adopted rule,
19688 which specifies the number of neighbor alive cells which will make a
19689 cell stay alive or born. The @option{rule} option allows one to specify
19690 the rule to adopt.
19691
19692 This source accepts the following options:
19693
19694 @table @option
19695 @item filename, f
19696 Set the file from which to read the initial grid state. In the file,
19697 each non-whitespace character is considered an alive cell, and newline
19698 is used to delimit the end of each row.
19699
19700 If this option is not specified, the initial grid is generated
19701 randomly.
19702
19703 @item rate, r
19704 Set the video rate, that is the number of frames generated per second.
19705 Default is 25.
19706
19707 @item random_fill_ratio, ratio
19708 Set the random fill ratio for the initial random grid. It is a
19709 floating point number value ranging from 0 to 1, defaults to 1/PHI.
19710 It is ignored when a file is specified.
19711
19712 @item random_seed, seed
19713 Set the seed for filling the initial random grid, must be an integer
19714 included between 0 and UINT32_MAX. If not specified, or if explicitly
19715 set to -1, the filter will try to use a good random seed on a best
19716 effort basis.
19717
19718 @item rule
19719 Set the life rule.
19720
19721 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
19722 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
19723 @var{NS} specifies the number of alive neighbor cells which make a
19724 live cell stay alive, and @var{NB} the number of alive neighbor cells
19725 which make a dead cell to become alive (i.e. to "born").
19726 "s" and "b" can be used in place of "S" and "B", respectively.
19727
19728 Alternatively a rule can be specified by an 18-bits integer. The 9
19729 high order bits are used to encode the next cell state if it is alive
19730 for each number of neighbor alive cells, the low order bits specify
19731 the rule for "borning" new cells. Higher order bits encode for an
19732 higher number of neighbor cells.
19733 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
19734 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
19735
19736 Default value is "S23/B3", which is the original Conway's game of life
19737 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
19738 cells, and will born a new cell if there are three alive cells around
19739 a dead cell.
19740
19741 @item size, s
19742 Set the size of the output video. For the syntax of this option, check the
19743 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19744
19745 If @option{filename} is specified, the size is set by default to the
19746 same size of the input file. If @option{size} is set, it must contain
19747 the size specified in the input file, and the initial grid defined in
19748 that file is centered in the larger resulting area.
19749
19750 If a filename is not specified, the size value defaults to "320x240"
19751 (used for a randomly generated initial grid).
19752
19753 @item stitch
19754 If set to 1, stitch the left and right grid edges together, and the
19755 top and bottom edges also. Defaults to 1.
19756
19757 @item mold
19758 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
19759 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
19760 value from 0 to 255.
19761
19762 @item life_color
19763 Set the color of living (or new born) cells.
19764
19765 @item death_color
19766 Set the color of dead cells. If @option{mold} is set, this is the first color
19767 used to represent a dead cell.
19768
19769 @item mold_color
19770 Set mold color, for definitely dead and moldy cells.
19771
19772 For the syntax of these 3 color options, check the @ref{color syntax,,"Color" section in the
19773 ffmpeg-utils manual,ffmpeg-utils}.
19774 @end table
19775
19776 @subsection Examples
19777
19778 @itemize
19779 @item
19780 Read a grid from @file{pattern}, and center it on a grid of size
19781 300x300 pixels:
19782 @example
19783 life=f=pattern:s=300x300
19784 @end example
19785
19786 @item
19787 Generate a random grid of size 200x200, with a fill ratio of 2/3:
19788 @example
19789 life=ratio=2/3:s=200x200
19790 @end example
19791
19792 @item
19793 Specify a custom rule for evolving a randomly generated grid:
19794 @example
19795 life=rule=S14/B34
19796 @end example
19797
19798 @item
19799 Full example with slow death effect (mold) using @command{ffplay}:
19800 @example
19801 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
19802 @end example
19803 @end itemize
19804
19805 @anchor{allrgb}
19806 @anchor{allyuv}
19807 @anchor{color}
19808 @anchor{haldclutsrc}
19809 @anchor{nullsrc}
19810 @anchor{pal75bars}
19811 @anchor{pal100bars}
19812 @anchor{rgbtestsrc}
19813 @anchor{smptebars}
19814 @anchor{smptehdbars}
19815 @anchor{testsrc}
19816 @anchor{testsrc2}
19817 @anchor{yuvtestsrc}
19818 @section allrgb, allyuv, color, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
19819
19820 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
19821
19822 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
19823
19824 The @code{color} source provides an uniformly colored input.
19825
19826 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
19827 @ref{haldclut} filter.
19828
19829 The @code{nullsrc} source returns unprocessed video frames. It is
19830 mainly useful to be employed in analysis / debugging tools, or as the
19831 source for filters which ignore the input data.
19832
19833 The @code{pal75bars} source generates a color bars pattern, based on
19834 EBU PAL recommendations with 75% color levels.
19835
19836 The @code{pal100bars} source generates a color bars pattern, based on
19837 EBU PAL recommendations with 100% color levels.
19838
19839 The @code{rgbtestsrc} source generates an RGB test pattern useful for
19840 detecting RGB vs BGR issues. You should see a red, green and blue
19841 stripe from top to bottom.
19842
19843 The @code{smptebars} source generates a color bars pattern, based on
19844 the SMPTE Engineering Guideline EG 1-1990.
19845
19846 The @code{smptehdbars} source generates a color bars pattern, based on
19847 the SMPTE RP 219-2002.
19848
19849 The @code{testsrc} source generates a test video pattern, showing a
19850 color pattern, a scrolling gradient and a timestamp. This is mainly
19851 intended for testing purposes.
19852
19853 The @code{testsrc2} source is similar to testsrc, but supports more
19854 pixel formats instead of just @code{rgb24}. This allows using it as an
19855 input for other tests without requiring a format conversion.
19856
19857 The @code{yuvtestsrc} source generates an YUV test pattern. You should
19858 see a y, cb and cr stripe from top to bottom.
19859
19860 The sources accept the following parameters:
19861
19862 @table @option
19863
19864 @item level
19865 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
19866 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
19867 pixels to be used as identity matrix for 3D lookup tables. Each component is
19868 coded on a @code{1/(N*N)} scale.
19869
19870 @item color, c
19871 Specify the color of the source, only available in the @code{color}
19872 source. For the syntax of this option, check the
19873 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
19874
19875 @item size, s
19876 Specify the size of the sourced video. For the syntax of this option, check the
19877 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19878 The default value is @code{320x240}.
19879
19880 This option is not available with the @code{allrgb}, @code{allyuv}, and
19881 @code{haldclutsrc} filters.
19882
19883 @item rate, r
19884 Specify the frame rate of the sourced video, as the number of frames
19885 generated per second. It has to be a string in the format
19886 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
19887 number or a valid video frame rate abbreviation. The default value is
19888 "25".
19889
19890 @item duration, d
19891 Set the duration of the sourced video. See
19892 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
19893 for the accepted syntax.
19894
19895 If not specified, or the expressed duration is negative, the video is
19896 supposed to be generated forever.
19897
19898 @item sar
19899 Set the sample aspect ratio of the sourced video.
19900
19901 @item alpha
19902 Specify the alpha (opacity) of the background, only available in the
19903 @code{testsrc2} source. The value must be between 0 (fully transparent) and
19904 255 (fully opaque, the default).
19905
19906 @item decimals, n
19907 Set the number of decimals to show in the timestamp, only available in the
19908 @code{testsrc} source.
19909
19910 The displayed timestamp value will correspond to the original
19911 timestamp value multiplied by the power of 10 of the specified
19912 value. Default value is 0.
19913 @end table
19914
19915 @subsection Examples
19916
19917 @itemize
19918 @item
19919 Generate a video with a duration of 5.3 seconds, with size
19920 176x144 and a frame rate of 10 frames per second:
19921 @example
19922 testsrc=duration=5.3:size=qcif:rate=10
19923 @end example
19924
19925 @item
19926 The following graph description will generate a red source
19927 with an opacity of 0.2, with size "qcif" and a frame rate of 10
19928 frames per second:
19929 @example
19930 color=c=red@@0.2:s=qcif:r=10
19931 @end example
19932
19933 @item
19934 If the input content is to be ignored, @code{nullsrc} can be used. The
19935 following command generates noise in the luminance plane by employing
19936 the @code{geq} filter:
19937 @example
19938 nullsrc=s=256x256, geq=random(1)*255:128:128
19939 @end example
19940 @end itemize
19941
19942 @subsection Commands
19943
19944 The @code{color} source supports the following commands:
19945
19946 @table @option
19947 @item c, color
19948 Set the color of the created image. Accepts the same syntax of the
19949 corresponding @option{color} option.
19950 @end table
19951
19952 @section openclsrc
19953
19954 Generate video using an OpenCL program.
19955
19956 @table @option
19957
19958 @item source
19959 OpenCL program source file.
19960
19961 @item kernel
19962 Kernel name in program.
19963
19964 @item size, s
19965 Size of frames to generate.  This must be set.
19966
19967 @item format
19968 Pixel format to use for the generated frames.  This must be set.
19969
19970 @item rate, r
19971 Number of frames generated every second.  Default value is '25'.
19972
19973 @end table
19974
19975 For details of how the program loading works, see the @ref{program_opencl}
19976 filter.
19977
19978 Example programs:
19979
19980 @itemize
19981 @item
19982 Generate a colour ramp by setting pixel values from the position of the pixel
19983 in the output image.  (Note that this will work with all pixel formats, but
19984 the generated output will not be the same.)
19985 @verbatim
19986 __kernel void ramp(__write_only image2d_t dst,
19987                    unsigned int index)
19988 {
19989     int2 loc = (int2)(get_global_id(0), get_global_id(1));
19990
19991     float4 val;
19992     val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
19993
19994     write_imagef(dst, loc, val);
19995 }
19996 @end verbatim
19997
19998 @item
19999 Generate a Sierpinski carpet pattern, panning by a single pixel each frame.
20000 @verbatim
20001 __kernel void sierpinski_carpet(__write_only image2d_t dst,
20002                                 unsigned int index)
20003 {
20004     int2 loc = (int2)(get_global_id(0), get_global_id(1));
20005
20006     float4 value = 0.0f;
20007     int x = loc.x + index;
20008     int y = loc.y + index;
20009     while (x > 0 || y > 0) {
20010         if (x % 3 == 1 && y % 3 == 1) {
20011             value = 1.0f;
20012             break;
20013         }
20014         x /= 3;
20015         y /= 3;
20016     }
20017
20018     write_imagef(dst, loc, value);
20019 }
20020 @end verbatim
20021
20022 @end itemize
20023
20024 @c man end VIDEO SOURCES
20025
20026 @chapter Video Sinks
20027 @c man begin VIDEO SINKS
20028
20029 Below is a description of the currently available video sinks.
20030
20031 @section buffersink
20032
20033 Buffer video frames, and make them available to the end of the filter
20034 graph.
20035
20036 This sink is mainly intended for programmatic use, in particular
20037 through the interface defined in @file{libavfilter/buffersink.h}
20038 or the options system.
20039
20040 It accepts a pointer to an AVBufferSinkContext structure, which
20041 defines the incoming buffers' formats, to be passed as the opaque
20042 parameter to @code{avfilter_init_filter} for initialization.
20043
20044 @section nullsink
20045
20046 Null video sink: do absolutely nothing with the input video. It is
20047 mainly useful as a template and for use in analysis / debugging
20048 tools.
20049
20050 @c man end VIDEO SINKS
20051
20052 @chapter Multimedia Filters
20053 @c man begin MULTIMEDIA FILTERS
20054
20055 Below is a description of the currently available multimedia filters.
20056
20057 @section abitscope
20058
20059 Convert input audio to a video output, displaying the audio bit scope.
20060
20061 The filter accepts the following options:
20062
20063 @table @option
20064 @item rate, r
20065 Set frame rate, expressed as number of frames per second. Default
20066 value is "25".
20067
20068 @item size, s
20069 Specify the video size for the output. For the syntax of this option, check the
20070 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20071 Default value is @code{1024x256}.
20072
20073 @item colors
20074 Specify list of colors separated by space or by '|' which will be used to
20075 draw channels. Unrecognized or missing colors will be replaced
20076 by white color.
20077 @end table
20078
20079 @section ahistogram
20080
20081 Convert input audio to a video output, displaying the volume histogram.
20082
20083 The filter accepts the following options:
20084
20085 @table @option
20086 @item dmode
20087 Specify how histogram is calculated.
20088
20089 It accepts the following values:
20090 @table @samp
20091 @item single
20092 Use single histogram for all channels.
20093 @item separate
20094 Use separate histogram for each channel.
20095 @end table
20096 Default is @code{single}.
20097
20098 @item rate, r
20099 Set frame rate, expressed as number of frames per second. Default
20100 value is "25".
20101
20102 @item size, s
20103 Specify the video size for the output. For the syntax of this option, check the
20104 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20105 Default value is @code{hd720}.
20106
20107 @item scale
20108 Set display scale.
20109
20110 It accepts the following values:
20111 @table @samp
20112 @item log
20113 logarithmic
20114 @item sqrt
20115 square root
20116 @item cbrt
20117 cubic root
20118 @item lin
20119 linear
20120 @item rlog
20121 reverse logarithmic
20122 @end table
20123 Default is @code{log}.
20124
20125 @item ascale
20126 Set amplitude scale.
20127
20128 It accepts the following values:
20129 @table @samp
20130 @item log
20131 logarithmic
20132 @item lin
20133 linear
20134 @end table
20135 Default is @code{log}.
20136
20137 @item acount
20138 Set how much frames to accumulate in histogram.
20139 Default is 1. Setting this to -1 accumulates all frames.
20140
20141 @item rheight
20142 Set histogram ratio of window height.
20143
20144 @item slide
20145 Set sonogram sliding.
20146
20147 It accepts the following values:
20148 @table @samp
20149 @item replace
20150 replace old rows with new ones.
20151 @item scroll
20152 scroll from top to bottom.
20153 @end table
20154 Default is @code{replace}.
20155 @end table
20156
20157 @section aphasemeter
20158
20159 Measures phase of input audio, which is exported as metadata @code{lavfi.aphasemeter.phase},
20160 representing mean phase of current audio frame. A video output can also be produced and is
20161 enabled by default. The audio is passed through as first output.
20162
20163 Audio will be rematrixed to stereo if it has a different channel layout. Phase value is in
20164 range @code{[-1, 1]} where @code{-1} means left and right channels are completely out of phase
20165 and @code{1} means channels are in phase.
20166
20167 The filter accepts the following options, all related to its video output:
20168
20169 @table @option
20170 @item rate, r
20171 Set the output frame rate. Default value is @code{25}.
20172
20173 @item size, s
20174 Set the video size for the output. For the syntax of this option, check the
20175 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20176 Default value is @code{800x400}.
20177
20178 @item rc
20179 @item gc
20180 @item bc
20181 Specify the red, green, blue contrast. Default values are @code{2},
20182 @code{7} and @code{1}.
20183 Allowed range is @code{[0, 255]}.
20184
20185 @item mpc
20186 Set color which will be used for drawing median phase. If color is
20187 @code{none} which is default, no median phase value will be drawn.
20188
20189 @item video
20190 Enable video output. Default is enabled.
20191 @end table
20192
20193 @section avectorscope
20194
20195 Convert input audio to a video output, representing the audio vector
20196 scope.
20197
20198 The filter is used to measure the difference between channels of stereo
20199 audio stream. A monoaural signal, consisting of identical left and right
20200 signal, results in straight vertical line. Any stereo separation is visible
20201 as a deviation from this line, creating a Lissajous figure.
20202 If the straight (or deviation from it) but horizontal line appears this
20203 indicates that the left and right channels are out of phase.
20204
20205 The filter accepts the following options:
20206
20207 @table @option
20208 @item mode, m
20209 Set the vectorscope mode.
20210
20211 Available values are:
20212 @table @samp
20213 @item lissajous
20214 Lissajous rotated by 45 degrees.
20215
20216 @item lissajous_xy
20217 Same as above but not rotated.
20218
20219 @item polar
20220 Shape resembling half of circle.
20221 @end table
20222
20223 Default value is @samp{lissajous}.
20224
20225 @item size, s
20226 Set the video size for the output. For the syntax of this option, check the
20227 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20228 Default value is @code{400x400}.
20229
20230 @item rate, r
20231 Set the output frame rate. Default value is @code{25}.
20232
20233 @item rc
20234 @item gc
20235 @item bc
20236 @item ac
20237 Specify the red, green, blue and alpha contrast. Default values are @code{40},
20238 @code{160}, @code{80} and @code{255}.
20239 Allowed range is @code{[0, 255]}.
20240
20241 @item rf
20242 @item gf
20243 @item bf
20244 @item af
20245 Specify the red, green, blue and alpha fade. Default values are @code{15},
20246 @code{10}, @code{5} and @code{5}.
20247 Allowed range is @code{[0, 255]}.
20248
20249 @item zoom
20250 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[0, 10]}.
20251 Values lower than @var{1} will auto adjust zoom factor to maximal possible value.
20252
20253 @item draw
20254 Set the vectorscope drawing mode.
20255
20256 Available values are:
20257 @table @samp
20258 @item dot
20259 Draw dot for each sample.
20260
20261 @item line
20262 Draw line between previous and current sample.
20263 @end table
20264
20265 Default value is @samp{dot}.
20266
20267 @item scale
20268 Specify amplitude scale of audio samples.
20269
20270 Available values are:
20271 @table @samp
20272 @item lin
20273 Linear.
20274
20275 @item sqrt
20276 Square root.
20277
20278 @item cbrt
20279 Cubic root.
20280
20281 @item log
20282 Logarithmic.
20283 @end table
20284
20285 @item swap
20286 Swap left channel axis with right channel axis.
20287
20288 @item mirror
20289 Mirror axis.
20290
20291 @table @samp
20292 @item none
20293 No mirror.
20294
20295 @item x
20296 Mirror only x axis.
20297
20298 @item y
20299 Mirror only y axis.
20300
20301 @item xy
20302 Mirror both axis.
20303 @end table
20304
20305 @end table
20306
20307 @subsection Examples
20308
20309 @itemize
20310 @item
20311 Complete example using @command{ffplay}:
20312 @example
20313 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
20314              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
20315 @end example
20316 @end itemize
20317
20318 @section bench, abench
20319
20320 Benchmark part of a filtergraph.
20321
20322 The filter accepts the following options:
20323
20324 @table @option
20325 @item action
20326 Start or stop a timer.
20327
20328 Available values are:
20329 @table @samp
20330 @item start
20331 Get the current time, set it as frame metadata (using the key
20332 @code{lavfi.bench.start_time}), and forward the frame to the next filter.
20333
20334 @item stop
20335 Get the current time and fetch the @code{lavfi.bench.start_time} metadata from
20336 the input frame metadata to get the time difference. Time difference, average,
20337 maximum and minimum time (respectively @code{t}, @code{avg}, @code{max} and
20338 @code{min}) are then printed. The timestamps are expressed in seconds.
20339 @end table
20340 @end table
20341
20342 @subsection Examples
20343
20344 @itemize
20345 @item
20346 Benchmark @ref{selectivecolor} filter:
20347 @example
20348 bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
20349 @end example
20350 @end itemize
20351
20352 @section concat
20353
20354 Concatenate audio and video streams, joining them together one after the
20355 other.
20356
20357 The filter works on segments of synchronized video and audio streams. All
20358 segments must have the same number of streams of each type, and that will
20359 also be the number of streams at output.
20360
20361 The filter accepts the following options:
20362
20363 @table @option
20364
20365 @item n
20366 Set the number of segments. Default is 2.
20367
20368 @item v
20369 Set the number of output video streams, that is also the number of video
20370 streams in each segment. Default is 1.
20371
20372 @item a
20373 Set the number of output audio streams, that is also the number of audio
20374 streams in each segment. Default is 0.
20375
20376 @item unsafe
20377 Activate unsafe mode: do not fail if segments have a different format.
20378
20379 @end table
20380
20381 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
20382 @var{a} audio outputs.
20383
20384 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
20385 segment, in the same order as the outputs, then the inputs for the second
20386 segment, etc.
20387
20388 Related streams do not always have exactly the same duration, for various
20389 reasons including codec frame size or sloppy authoring. For that reason,
20390 related synchronized streams (e.g. a video and its audio track) should be
20391 concatenated at once. The concat filter will use the duration of the longest
20392 stream in each segment (except the last one), and if necessary pad shorter
20393 audio streams with silence.
20394
20395 For this filter to work correctly, all segments must start at timestamp 0.
20396
20397 All corresponding streams must have the same parameters in all segments; the
20398 filtering system will automatically select a common pixel format for video
20399 streams, and a common sample format, sample rate and channel layout for
20400 audio streams, but other settings, such as resolution, must be converted
20401 explicitly by the user.
20402
20403 Different frame rates are acceptable but will result in variable frame rate
20404 at output; be sure to configure the output file to handle it.
20405
20406 @subsection Examples
20407
20408 @itemize
20409 @item
20410 Concatenate an opening, an episode and an ending, all in bilingual version
20411 (video in stream 0, audio in streams 1 and 2):
20412 @example
20413 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
20414   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
20415    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
20416   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
20417 @end example
20418
20419 @item
20420 Concatenate two parts, handling audio and video separately, using the
20421 (a)movie sources, and adjusting the resolution:
20422 @example
20423 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
20424 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
20425 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
20426 @end example
20427 Note that a desync will happen at the stitch if the audio and video streams
20428 do not have exactly the same duration in the first file.
20429
20430 @end itemize
20431
20432 @subsection Commands
20433
20434 This filter supports the following commands:
20435 @table @option
20436 @item next
20437 Close the current segment and step to the next one
20438 @end table
20439
20440 @section drawgraph, adrawgraph
20441
20442 Draw a graph using input video or audio metadata.
20443
20444 It accepts the following parameters:
20445
20446 @table @option
20447 @item m1
20448 Set 1st frame metadata key from which metadata values will be used to draw a graph.
20449
20450 @item fg1
20451 Set 1st foreground color expression.
20452
20453 @item m2
20454 Set 2nd frame metadata key from which metadata values will be used to draw a graph.
20455
20456 @item fg2
20457 Set 2nd foreground color expression.
20458
20459 @item m3
20460 Set 3rd frame metadata key from which metadata values will be used to draw a graph.
20461
20462 @item fg3
20463 Set 3rd foreground color expression.
20464
20465 @item m4
20466 Set 4th frame metadata key from which metadata values will be used to draw a graph.
20467
20468 @item fg4
20469 Set 4th foreground color expression.
20470
20471 @item min
20472 Set minimal value of metadata value.
20473
20474 @item max
20475 Set maximal value of metadata value.
20476
20477 @item bg
20478 Set graph background color. Default is white.
20479
20480 @item mode
20481 Set graph mode.
20482
20483 Available values for mode is:
20484 @table @samp
20485 @item bar
20486 @item dot
20487 @item line
20488 @end table
20489
20490 Default is @code{line}.
20491
20492 @item slide
20493 Set slide mode.
20494
20495 Available values for slide is:
20496 @table @samp
20497 @item frame
20498 Draw new frame when right border is reached.
20499
20500 @item replace
20501 Replace old columns with new ones.
20502
20503 @item scroll
20504 Scroll from right to left.
20505
20506 @item rscroll
20507 Scroll from left to right.
20508
20509 @item picture
20510 Draw single picture.
20511 @end table
20512
20513 Default is @code{frame}.
20514
20515 @item size
20516 Set size of graph video. For the syntax of this option, check the
20517 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20518 The default value is @code{900x256}.
20519
20520 The foreground color expressions can use the following variables:
20521 @table @option
20522 @item MIN
20523 Minimal value of metadata value.
20524
20525 @item MAX
20526 Maximal value of metadata value.
20527
20528 @item VAL
20529 Current metadata key value.
20530 @end table
20531
20532 The color is defined as 0xAABBGGRR.
20533 @end table
20534
20535 Example using metadata from @ref{signalstats} filter:
20536 @example
20537 signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
20538 @end example
20539
20540 Example using metadata from @ref{ebur128} filter:
20541 @example
20542 ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
20543 @end example
20544
20545 @anchor{ebur128}
20546 @section ebur128
20547
20548 EBU R128 scanner filter. This filter takes an audio stream as input and outputs
20549 it unchanged. By default, it logs a message at a frequency of 10Hz with the
20550 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
20551 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
20552
20553 The filter also has a video output (see the @var{video} option) with a real
20554 time graph to observe the loudness evolution. The graphic contains the logged
20555 message mentioned above, so it is not printed anymore when this option is set,
20556 unless the verbose logging is set. The main graphing area contains the
20557 short-term loudness (3 seconds of analysis), and the gauge on the right is for
20558 the momentary loudness (400 milliseconds), but can optionally be configured
20559 to instead display short-term loudness (see @var{gauge}).
20560
20561 The green area marks a  +/- 1LU target range around the target loudness
20562 (-23LUFS by default, unless modified through @var{target}).
20563
20564 More information about the Loudness Recommendation EBU R128 on
20565 @url{http://tech.ebu.ch/loudness}.
20566
20567 The filter accepts the following options:
20568
20569 @table @option
20570
20571 @item video
20572 Activate the video output. The audio stream is passed unchanged whether this
20573 option is set or no. The video stream will be the first output stream if
20574 activated. Default is @code{0}.
20575
20576 @item size
20577 Set the video size. This option is for video only. For the syntax of this
20578 option, check the
20579 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20580 Default and minimum resolution is @code{640x480}.
20581
20582 @item meter
20583 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
20584 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
20585 other integer value between this range is allowed.
20586
20587 @item metadata
20588 Set metadata injection. If set to @code{1}, the audio input will be segmented
20589 into 100ms output frames, each of them containing various loudness information
20590 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
20591
20592 Default is @code{0}.
20593
20594 @item framelog
20595 Force the frame logging level.
20596
20597 Available values are:
20598 @table @samp
20599 @item info
20600 information logging level
20601 @item verbose
20602 verbose logging level
20603 @end table
20604
20605 By default, the logging level is set to @var{info}. If the @option{video} or
20606 the @option{metadata} options are set, it switches to @var{verbose}.
20607
20608 @item peak
20609 Set peak mode(s).
20610
20611 Available modes can be cumulated (the option is a @code{flag} type). Possible
20612 values are:
20613 @table @samp
20614 @item none
20615 Disable any peak mode (default).
20616 @item sample
20617 Enable sample-peak mode.
20618
20619 Simple peak mode looking for the higher sample value. It logs a message
20620 for sample-peak (identified by @code{SPK}).
20621 @item true
20622 Enable true-peak mode.
20623
20624 If enabled, the peak lookup is done on an over-sampled version of the input
20625 stream for better peak accuracy. It logs a message for true-peak.
20626 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
20627 This mode requires a build with @code{libswresample}.
20628 @end table
20629
20630 @item dualmono
20631 Treat mono input files as "dual mono". If a mono file is intended for playback
20632 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
20633 If set to @code{true}, this option will compensate for this effect.
20634 Multi-channel input files are not affected by this option.
20635
20636 @item panlaw
20637 Set a specific pan law to be used for the measurement of dual mono files.
20638 This parameter is optional, and has a default value of -3.01dB.
20639
20640 @item target
20641 Set a specific target level (in LUFS) used as relative zero in the visualization.
20642 This parameter is optional and has a default value of -23LUFS as specified
20643 by EBU R128. However, material published online may prefer a level of -16LUFS
20644 (e.g. for use with podcasts or video platforms).
20645
20646 @item gauge
20647 Set the value displayed by the gauge. Valid values are @code{momentary} and s
20648 @code{shortterm}. By default the momentary value will be used, but in certain
20649 scenarios it may be more useful to observe the short term value instead (e.g.
20650 live mixing).
20651
20652 @item scale
20653 Sets the display scale for the loudness. Valid parameters are @code{absolute}
20654 (in LUFS) or @code{relative} (LU) relative to the target. This only affects the
20655 video output, not the summary or continuous log output.
20656 @end table
20657
20658 @subsection Examples
20659
20660 @itemize
20661 @item
20662 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
20663 @example
20664 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
20665 @end example
20666
20667 @item
20668 Run an analysis with @command{ffmpeg}:
20669 @example
20670 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
20671 @end example
20672 @end itemize
20673
20674 @section interleave, ainterleave
20675
20676 Temporally interleave frames from several inputs.
20677
20678 @code{interleave} works with video inputs, @code{ainterleave} with audio.
20679
20680 These filters read frames from several inputs and send the oldest
20681 queued frame to the output.
20682
20683 Input streams must have well defined, monotonically increasing frame
20684 timestamp values.
20685
20686 In order to submit one frame to output, these filters need to enqueue
20687 at least one frame for each input, so they cannot work in case one
20688 input is not yet terminated and will not receive incoming frames.
20689
20690 For example consider the case when one input is a @code{select} filter
20691 which always drops input frames. The @code{interleave} filter will keep
20692 reading from that input, but it will never be able to send new frames
20693 to output until the input sends an end-of-stream signal.
20694
20695 Also, depending on inputs synchronization, the filters will drop
20696 frames in case one input receives more frames than the other ones, and
20697 the queue is already filled.
20698
20699 These filters accept the following options:
20700
20701 @table @option
20702 @item nb_inputs, n
20703 Set the number of different inputs, it is 2 by default.
20704 @end table
20705
20706 @subsection Examples
20707
20708 @itemize
20709 @item
20710 Interleave frames belonging to different streams using @command{ffmpeg}:
20711 @example
20712 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
20713 @end example
20714
20715 @item
20716 Add flickering blur effect:
20717 @example
20718 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
20719 @end example
20720 @end itemize
20721
20722 @section metadata, ametadata
20723
20724 Manipulate frame metadata.
20725
20726 This filter accepts the following options:
20727
20728 @table @option
20729 @item mode
20730 Set mode of operation of the filter.
20731
20732 Can be one of the following:
20733
20734 @table @samp
20735 @item select
20736 If both @code{value} and @code{key} is set, select frames
20737 which have such metadata. If only @code{key} is set, select
20738 every frame that has such key in metadata.
20739
20740 @item add
20741 Add new metadata @code{key} and @code{value}. If key is already available
20742 do nothing.
20743
20744 @item modify
20745 Modify value of already present key.
20746
20747 @item delete
20748 If @code{value} is set, delete only keys that have such value.
20749 Otherwise, delete key. If @code{key} is not set, delete all metadata values in
20750 the frame.
20751
20752 @item print
20753 Print key and its value if metadata was found. If @code{key} is not set print all
20754 metadata values available in frame.
20755 @end table
20756
20757 @item key
20758 Set key used with all modes. Must be set for all modes except @code{print} and @code{delete}.
20759
20760 @item value
20761 Set metadata value which will be used. This option is mandatory for
20762 @code{modify} and @code{add} mode.
20763
20764 @item function
20765 Which function to use when comparing metadata value and @code{value}.
20766
20767 Can be one of following:
20768
20769 @table @samp
20770 @item same_str
20771 Values are interpreted as strings, returns true if metadata value is same as @code{value}.
20772
20773 @item starts_with
20774 Values are interpreted as strings, returns true if metadata value starts with
20775 the @code{value} option string.
20776
20777 @item less
20778 Values are interpreted as floats, returns true if metadata value is less than @code{value}.
20779
20780 @item equal
20781 Values are interpreted as floats, returns true if @code{value} is equal with metadata value.
20782
20783 @item greater
20784 Values are interpreted as floats, returns true if metadata value is greater than @code{value}.
20785
20786 @item expr
20787 Values are interpreted as floats, returns true if expression from option @code{expr}
20788 evaluates to true.
20789 @end table
20790
20791 @item expr
20792 Set expression which is used when @code{function} is set to @code{expr}.
20793 The expression is evaluated through the eval API and can contain the following
20794 constants:
20795
20796 @table @option
20797 @item VALUE1
20798 Float representation of @code{value} from metadata key.
20799
20800 @item VALUE2
20801 Float representation of @code{value} as supplied by user in @code{value} option.
20802 @end table
20803
20804 @item file
20805 If specified in @code{print} mode, output is written to the named file. Instead of
20806 plain filename any writable url can be specified. Filename ``-'' is a shorthand
20807 for standard output. If @code{file} option is not set, output is written to the log
20808 with AV_LOG_INFO loglevel.
20809
20810 @end table
20811
20812 @subsection Examples
20813
20814 @itemize
20815 @item
20816 Print all metadata values for frames with key @code{lavfi.signalstats.YDIF} with values
20817 between 0 and 1.
20818 @example
20819 signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
20820 @end example
20821 @item
20822 Print silencedetect output to file @file{metadata.txt}.
20823 @example
20824 silencedetect,ametadata=mode=print:file=metadata.txt
20825 @end example
20826 @item
20827 Direct all metadata to a pipe with file descriptor 4.
20828 @example
20829 metadata=mode=print:file='pipe\:4'
20830 @end example
20831 @end itemize
20832
20833 @section perms, aperms
20834
20835 Set read/write permissions for the output frames.
20836
20837 These filters are mainly aimed at developers to test direct path in the
20838 following filter in the filtergraph.
20839
20840 The filters accept the following options:
20841
20842 @table @option
20843 @item mode
20844 Select the permissions mode.
20845
20846 It accepts the following values:
20847 @table @samp
20848 @item none
20849 Do nothing. This is the default.
20850 @item ro
20851 Set all the output frames read-only.
20852 @item rw
20853 Set all the output frames directly writable.
20854 @item toggle
20855 Make the frame read-only if writable, and writable if read-only.
20856 @item random
20857 Set each output frame read-only or writable randomly.
20858 @end table
20859
20860 @item seed
20861 Set the seed for the @var{random} mode, must be an integer included between
20862 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
20863 @code{-1}, the filter will try to use a good random seed on a best effort
20864 basis.
20865 @end table
20866
20867 Note: in case of auto-inserted filter between the permission filter and the
20868 following one, the permission might not be received as expected in that
20869 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
20870 perms/aperms filter can avoid this problem.
20871
20872 @section realtime, arealtime
20873
20874 Slow down filtering to match real time approximately.
20875
20876 These filters will pause the filtering for a variable amount of time to
20877 match the output rate with the input timestamps.
20878 They are similar to the @option{re} option to @code{ffmpeg}.
20879
20880 They accept the following options:
20881
20882 @table @option
20883 @item limit
20884 Time limit for the pauses. Any pause longer than that will be considered
20885 a timestamp discontinuity and reset the timer. Default is 2 seconds.
20886 @end table
20887
20888 @anchor{select}
20889 @section select, aselect
20890
20891 Select frames to pass in output.
20892
20893 This filter accepts the following options:
20894
20895 @table @option
20896
20897 @item expr, e
20898 Set expression, which is evaluated for each input frame.
20899
20900 If the expression is evaluated to zero, the frame is discarded.
20901
20902 If the evaluation result is negative or NaN, the frame is sent to the
20903 first output; otherwise it is sent to the output with index
20904 @code{ceil(val)-1}, assuming that the input index starts from 0.
20905
20906 For example a value of @code{1.2} corresponds to the output with index
20907 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
20908
20909 @item outputs, n
20910 Set the number of outputs. The output to which to send the selected
20911 frame is based on the result of the evaluation. Default value is 1.
20912 @end table
20913
20914 The expression can contain the following constants:
20915
20916 @table @option
20917 @item n
20918 The (sequential) number of the filtered frame, starting from 0.
20919
20920 @item selected_n
20921 The (sequential) number of the selected frame, starting from 0.
20922
20923 @item prev_selected_n
20924 The sequential number of the last selected frame. It's NAN if undefined.
20925
20926 @item TB
20927 The timebase of the input timestamps.
20928
20929 @item pts
20930 The PTS (Presentation TimeStamp) of the filtered video frame,
20931 expressed in @var{TB} units. It's NAN if undefined.
20932
20933 @item t
20934 The PTS of the filtered video frame,
20935 expressed in seconds. It's NAN if undefined.
20936
20937 @item prev_pts
20938 The PTS of the previously filtered video frame. It's NAN if undefined.
20939
20940 @item prev_selected_pts
20941 The PTS of the last previously filtered video frame. It's NAN if undefined.
20942
20943 @item prev_selected_t
20944 The PTS of the last previously selected video frame, expressed in seconds. It's NAN if undefined.
20945
20946 @item start_pts
20947 The PTS of the first video frame in the video. It's NAN if undefined.
20948
20949 @item start_t
20950 The time of the first video frame in the video. It's NAN if undefined.
20951
20952 @item pict_type @emph{(video only)}
20953 The type of the filtered frame. It can assume one of the following
20954 values:
20955 @table @option
20956 @item I
20957 @item P
20958 @item B
20959 @item S
20960 @item SI
20961 @item SP
20962 @item BI
20963 @end table
20964
20965 @item interlace_type @emph{(video only)}
20966 The frame interlace type. It can assume one of the following values:
20967 @table @option
20968 @item PROGRESSIVE
20969 The frame is progressive (not interlaced).
20970 @item TOPFIRST
20971 The frame is top-field-first.
20972 @item BOTTOMFIRST
20973 The frame is bottom-field-first.
20974 @end table
20975
20976 @item consumed_sample_n @emph{(audio only)}
20977 the number of selected samples before the current frame
20978
20979 @item samples_n @emph{(audio only)}
20980 the number of samples in the current frame
20981
20982 @item sample_rate @emph{(audio only)}
20983 the input sample rate
20984
20985 @item key
20986 This is 1 if the filtered frame is a key-frame, 0 otherwise.
20987
20988 @item pos
20989 the position in the file of the filtered frame, -1 if the information
20990 is not available (e.g. for synthetic video)
20991
20992 @item scene @emph{(video only)}
20993 value between 0 and 1 to indicate a new scene; a low value reflects a low
20994 probability for the current frame to introduce a new scene, while a higher
20995 value means the current frame is more likely to be one (see the example below)
20996
20997 @item concatdec_select
20998 The concat demuxer can select only part of a concat input file by setting an
20999 inpoint and an outpoint, but the output packets may not be entirely contained
21000 in the selected interval. By using this variable, it is possible to skip frames
21001 generated by the concat demuxer which are not exactly contained in the selected
21002 interval.
21003
21004 This works by comparing the frame pts against the @var{lavf.concat.start_time}
21005 and the @var{lavf.concat.duration} packet metadata values which are also
21006 present in the decoded frames.
21007
21008 The @var{concatdec_select} variable is -1 if the frame pts is at least
21009 start_time and either the duration metadata is missing or the frame pts is less
21010 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
21011 missing.
21012
21013 That basically means that an input frame is selected if its pts is within the
21014 interval set by the concat demuxer.
21015
21016 @end table
21017
21018 The default value of the select expression is "1".
21019
21020 @subsection Examples
21021
21022 @itemize
21023 @item
21024 Select all frames in input:
21025 @example
21026 select
21027 @end example
21028
21029 The example above is the same as:
21030 @example
21031 select=1
21032 @end example
21033
21034 @item
21035 Skip all frames:
21036 @example
21037 select=0
21038 @end example
21039
21040 @item
21041 Select only I-frames:
21042 @example
21043 select='eq(pict_type\,I)'
21044 @end example
21045
21046 @item
21047 Select one frame every 100:
21048 @example
21049 select='not(mod(n\,100))'
21050 @end example
21051
21052 @item
21053 Select only frames contained in the 10-20 time interval:
21054 @example
21055 select=between(t\,10\,20)
21056 @end example
21057
21058 @item
21059 Select only I-frames contained in the 10-20 time interval:
21060 @example
21061 select=between(t\,10\,20)*eq(pict_type\,I)
21062 @end example
21063
21064 @item
21065 Select frames with a minimum distance of 10 seconds:
21066 @example
21067 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
21068 @end example
21069
21070 @item
21071 Use aselect to select only audio frames with samples number > 100:
21072 @example
21073 aselect='gt(samples_n\,100)'
21074 @end example
21075
21076 @item
21077 Create a mosaic of the first scenes:
21078 @example
21079 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
21080 @end example
21081
21082 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
21083 choice.
21084
21085 @item
21086 Send even and odd frames to separate outputs, and compose them:
21087 @example
21088 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
21089 @end example
21090
21091 @item
21092 Select useful frames from an ffconcat file which is using inpoints and
21093 outpoints but where the source files are not intra frame only.
21094 @example
21095 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
21096 @end example
21097 @end itemize
21098
21099 @section sendcmd, asendcmd
21100
21101 Send commands to filters in the filtergraph.
21102
21103 These filters read commands to be sent to other filters in the
21104 filtergraph.
21105
21106 @code{sendcmd} must be inserted between two video filters,
21107 @code{asendcmd} must be inserted between two audio filters, but apart
21108 from that they act the same way.
21109
21110 The specification of commands can be provided in the filter arguments
21111 with the @var{commands} option, or in a file specified by the
21112 @var{filename} option.
21113
21114 These filters accept the following options:
21115 @table @option
21116 @item commands, c
21117 Set the commands to be read and sent to the other filters.
21118 @item filename, f
21119 Set the filename of the commands to be read and sent to the other
21120 filters.
21121 @end table
21122
21123 @subsection Commands syntax
21124
21125 A commands description consists of a sequence of interval
21126 specifications, comprising a list of commands to be executed when a
21127 particular event related to that interval occurs. The occurring event
21128 is typically the current frame time entering or leaving a given time
21129 interval.
21130
21131 An interval is specified by the following syntax:
21132 @example
21133 @var{START}[-@var{END}] @var{COMMANDS};
21134 @end example
21135
21136 The time interval is specified by the @var{START} and @var{END} times.
21137 @var{END} is optional and defaults to the maximum time.
21138
21139 The current frame time is considered within the specified interval if
21140 it is included in the interval [@var{START}, @var{END}), that is when
21141 the time is greater or equal to @var{START} and is lesser than
21142 @var{END}.
21143
21144 @var{COMMANDS} consists of a sequence of one or more command
21145 specifications, separated by ",", relating to that interval.  The
21146 syntax of a command specification is given by:
21147 @example
21148 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
21149 @end example
21150
21151 @var{FLAGS} is optional and specifies the type of events relating to
21152 the time interval which enable sending the specified command, and must
21153 be a non-null sequence of identifier flags separated by "+" or "|" and
21154 enclosed between "[" and "]".
21155
21156 The following flags are recognized:
21157 @table @option
21158 @item enter
21159 The command is sent when the current frame timestamp enters the
21160 specified interval. In other words, the command is sent when the
21161 previous frame timestamp was not in the given interval, and the
21162 current is.
21163
21164 @item leave
21165 The command is sent when the current frame timestamp leaves the
21166 specified interval. In other words, the command is sent when the
21167 previous frame timestamp was in the given interval, and the
21168 current is not.
21169 @end table
21170
21171 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
21172 assumed.
21173
21174 @var{TARGET} specifies the target of the command, usually the name of
21175 the filter class or a specific filter instance name.
21176
21177 @var{COMMAND} specifies the name of the command for the target filter.
21178
21179 @var{ARG} is optional and specifies the optional list of argument for
21180 the given @var{COMMAND}.
21181
21182 Between one interval specification and another, whitespaces, or
21183 sequences of characters starting with @code{#} until the end of line,
21184 are ignored and can be used to annotate comments.
21185
21186 A simplified BNF description of the commands specification syntax
21187 follows:
21188 @example
21189 @var{COMMAND_FLAG}  ::= "enter" | "leave"
21190 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
21191 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
21192 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
21193 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
21194 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
21195 @end example
21196
21197 @subsection Examples
21198
21199 @itemize
21200 @item
21201 Specify audio tempo change at second 4:
21202 @example
21203 asendcmd=c='4.0 atempo tempo 1.5',atempo
21204 @end example
21205
21206 @item
21207 Target a specific filter instance:
21208 @example
21209 asendcmd=c='4.0 atempo@@my tempo 1.5',atempo@@my
21210 @end example
21211
21212 @item
21213 Specify a list of drawtext and hue commands in a file.
21214 @example
21215 # show text in the interval 5-10
21216 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
21217          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
21218
21219 # desaturate the image in the interval 15-20
21220 15.0-20.0 [enter] hue s 0,
21221           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
21222           [leave] hue s 1,
21223           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
21224
21225 # apply an exponential saturation fade-out effect, starting from time 25
21226 25 [enter] hue s exp(25-t)
21227 @end example
21228
21229 A filtergraph allowing to read and process the above command list
21230 stored in a file @file{test.cmd}, can be specified with:
21231 @example
21232 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
21233 @end example
21234 @end itemize
21235
21236 @anchor{setpts}
21237 @section setpts, asetpts
21238
21239 Change the PTS (presentation timestamp) of the input frames.
21240
21241 @code{setpts} works on video frames, @code{asetpts} on audio frames.
21242
21243 This filter accepts the following options:
21244
21245 @table @option
21246
21247 @item expr
21248 The expression which is evaluated for each frame to construct its timestamp.
21249
21250 @end table
21251
21252 The expression is evaluated through the eval API and can contain the following
21253 constants:
21254
21255 @table @option
21256 @item FRAME_RATE, FR
21257 frame rate, only defined for constant frame-rate video
21258
21259 @item PTS
21260 The presentation timestamp in input
21261
21262 @item N
21263 The count of the input frame for video or the number of consumed samples,
21264 not including the current frame for audio, starting from 0.
21265
21266 @item NB_CONSUMED_SAMPLES
21267 The number of consumed samples, not including the current frame (only
21268 audio)
21269
21270 @item NB_SAMPLES, S
21271 The number of samples in the current frame (only audio)
21272
21273 @item SAMPLE_RATE, SR
21274 The audio sample rate.
21275
21276 @item STARTPTS
21277 The PTS of the first frame.
21278
21279 @item STARTT
21280 the time in seconds of the first frame
21281
21282 @item INTERLACED
21283 State whether the current frame is interlaced.
21284
21285 @item T
21286 the time in seconds of the current frame
21287
21288 @item POS
21289 original position in the file of the frame, or undefined if undefined
21290 for the current frame
21291
21292 @item PREV_INPTS
21293 The previous input PTS.
21294
21295 @item PREV_INT
21296 previous input time in seconds
21297
21298 @item PREV_OUTPTS
21299 The previous output PTS.
21300
21301 @item PREV_OUTT
21302 previous output time in seconds
21303
21304 @item RTCTIME
21305 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
21306 instead.
21307
21308 @item RTCSTART
21309 The wallclock (RTC) time at the start of the movie in microseconds.
21310
21311 @item TB
21312 The timebase of the input timestamps.
21313
21314 @end table
21315
21316 @subsection Examples
21317
21318 @itemize
21319 @item
21320 Start counting PTS from zero
21321 @example
21322 setpts=PTS-STARTPTS
21323 @end example
21324
21325 @item
21326 Apply fast motion effect:
21327 @example
21328 setpts=0.5*PTS
21329 @end example
21330
21331 @item
21332 Apply slow motion effect:
21333 @example
21334 setpts=2.0*PTS
21335 @end example
21336
21337 @item
21338 Set fixed rate of 25 frames per second:
21339 @example
21340 setpts=N/(25*TB)
21341 @end example
21342
21343 @item
21344 Set fixed rate 25 fps with some jitter:
21345 @example
21346 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
21347 @end example
21348
21349 @item
21350 Apply an offset of 10 seconds to the input PTS:
21351 @example
21352 setpts=PTS+10/TB
21353 @end example
21354
21355 @item
21356 Generate timestamps from a "live source" and rebase onto the current timebase:
21357 @example
21358 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
21359 @end example
21360
21361 @item
21362 Generate timestamps by counting samples:
21363 @example
21364 asetpts=N/SR/TB
21365 @end example
21366
21367 @end itemize
21368
21369 @section setrange
21370
21371 Force color range for the output video frame.
21372
21373 The @code{setrange} filter marks the color range property for the
21374 output frames. It does not change the input frame, but only sets the
21375 corresponding property, which affects how the frame is treated by
21376 following filters.
21377
21378 The filter accepts the following options:
21379
21380 @table @option
21381
21382 @item range
21383 Available values are:
21384
21385 @table @samp
21386 @item auto
21387 Keep the same color range property.
21388
21389 @item unspecified, unknown
21390 Set the color range as unspecified.
21391
21392 @item limited, tv, mpeg
21393 Set the color range as limited.
21394
21395 @item full, pc, jpeg
21396 Set the color range as full.
21397 @end table
21398 @end table
21399
21400 @section settb, asettb
21401
21402 Set the timebase to use for the output frames timestamps.
21403 It is mainly useful for testing timebase configuration.
21404
21405 It accepts the following parameters:
21406
21407 @table @option
21408
21409 @item expr, tb
21410 The expression which is evaluated into the output timebase.
21411
21412 @end table
21413
21414 The value for @option{tb} is an arithmetic expression representing a
21415 rational. The expression can contain the constants "AVTB" (the default
21416 timebase), "intb" (the input timebase) and "sr" (the sample rate,
21417 audio only). Default value is "intb".
21418
21419 @subsection Examples
21420
21421 @itemize
21422 @item
21423 Set the timebase to 1/25:
21424 @example
21425 settb=expr=1/25
21426 @end example
21427
21428 @item
21429 Set the timebase to 1/10:
21430 @example
21431 settb=expr=0.1
21432 @end example
21433
21434 @item
21435 Set the timebase to 1001/1000:
21436 @example
21437 settb=1+0.001
21438 @end example
21439
21440 @item
21441 Set the timebase to 2*intb:
21442 @example
21443 settb=2*intb
21444 @end example
21445
21446 @item
21447 Set the default timebase value:
21448 @example
21449 settb=AVTB
21450 @end example
21451 @end itemize
21452
21453 @section showcqt
21454 Convert input audio to a video output representing frequency spectrum
21455 logarithmically using Brown-Puckette constant Q transform algorithm with
21456 direct frequency domain coefficient calculation (but the transform itself
21457 is not really constant Q, instead the Q factor is actually variable/clamped),
21458 with musical tone scale, from E0 to D#10.
21459
21460 The filter accepts the following options:
21461
21462 @table @option
21463 @item size, s
21464 Specify the video size for the output. It must be even. For the syntax of this option,
21465 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21466 Default value is @code{1920x1080}.
21467
21468 @item fps, rate, r
21469 Set the output frame rate. Default value is @code{25}.
21470
21471 @item bar_h
21472 Set the bargraph height. It must be even. Default value is @code{-1} which
21473 computes the bargraph height automatically.
21474
21475 @item axis_h
21476 Set the axis height. It must be even. Default value is @code{-1} which computes
21477 the axis height automatically.
21478
21479 @item sono_h
21480 Set the sonogram height. It must be even. Default value is @code{-1} which
21481 computes the sonogram height automatically.
21482
21483 @item fullhd
21484 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
21485 instead. Default value is @code{1}.
21486
21487 @item sono_v, volume
21488 Specify the sonogram volume expression. It can contain variables:
21489 @table @option
21490 @item bar_v
21491 the @var{bar_v} evaluated expression
21492 @item frequency, freq, f
21493 the frequency where it is evaluated
21494 @item timeclamp, tc
21495 the value of @var{timeclamp} option
21496 @end table
21497 and functions:
21498 @table @option
21499 @item a_weighting(f)
21500 A-weighting of equal loudness
21501 @item b_weighting(f)
21502 B-weighting of equal loudness
21503 @item c_weighting(f)
21504 C-weighting of equal loudness.
21505 @end table
21506 Default value is @code{16}.
21507
21508 @item bar_v, volume2
21509 Specify the bargraph volume expression. It can contain variables:
21510 @table @option
21511 @item sono_v
21512 the @var{sono_v} evaluated expression
21513 @item frequency, freq, f
21514 the frequency where it is evaluated
21515 @item timeclamp, tc
21516 the value of @var{timeclamp} option
21517 @end table
21518 and functions:
21519 @table @option
21520 @item a_weighting(f)
21521 A-weighting of equal loudness
21522 @item b_weighting(f)
21523 B-weighting of equal loudness
21524 @item c_weighting(f)
21525 C-weighting of equal loudness.
21526 @end table
21527 Default value is @code{sono_v}.
21528
21529 @item sono_g, gamma
21530 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
21531 higher gamma makes the spectrum having more range. Default value is @code{3}.
21532 Acceptable range is @code{[1, 7]}.
21533
21534 @item bar_g, gamma2
21535 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
21536 @code{[1, 7]}.
21537
21538 @item bar_t
21539 Specify the bargraph transparency level. Lower value makes the bargraph sharper.
21540 Default value is @code{1}. Acceptable range is @code{[0, 1]}.
21541
21542 @item timeclamp, tc
21543 Specify the transform timeclamp. At low frequency, there is trade-off between
21544 accuracy in time domain and frequency domain. If timeclamp is lower,
21545 event in time domain is represented more accurately (such as fast bass drum),
21546 otherwise event in frequency domain is represented more accurately
21547 (such as bass guitar). Acceptable range is @code{[0.002, 1]}. Default value is @code{0.17}.
21548
21549 @item attack
21550 Set attack time in seconds. The default is @code{0} (disabled). Otherwise, it
21551 limits future samples by applying asymmetric windowing in time domain, useful
21552 when low latency is required. Accepted range is @code{[0, 1]}.
21553
21554 @item basefreq
21555 Specify the transform base frequency. Default value is @code{20.01523126408007475},
21556 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
21557
21558 @item endfreq
21559 Specify the transform end frequency. Default value is @code{20495.59681441799654},
21560 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
21561
21562 @item coeffclamp
21563 This option is deprecated and ignored.
21564
21565 @item tlength
21566 Specify the transform length in time domain. Use this option to control accuracy
21567 trade-off between time domain and frequency domain at every frequency sample.
21568 It can contain variables:
21569 @table @option
21570 @item frequency, freq, f
21571 the frequency where it is evaluated
21572 @item timeclamp, tc
21573 the value of @var{timeclamp} option.
21574 @end table
21575 Default value is @code{384*tc/(384+tc*f)}.
21576
21577 @item count
21578 Specify the transform count for every video frame. Default value is @code{6}.
21579 Acceptable range is @code{[1, 30]}.
21580
21581 @item fcount
21582 Specify the transform count for every single pixel. Default value is @code{0},
21583 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
21584
21585 @item fontfile
21586 Specify font file for use with freetype to draw the axis. If not specified,
21587 use embedded font. Note that drawing with font file or embedded font is not
21588 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
21589 option instead.
21590
21591 @item font
21592 Specify fontconfig pattern. This has lower priority than @var{fontfile}.
21593 The : in the pattern may be replaced by | to avoid unnecessary escaping.
21594
21595 @item fontcolor
21596 Specify font color expression. This is arithmetic expression that should return
21597 integer value 0xRRGGBB. It can contain variables:
21598 @table @option
21599 @item frequency, freq, f
21600 the frequency where it is evaluated
21601 @item timeclamp, tc
21602 the value of @var{timeclamp} option
21603 @end table
21604 and functions:
21605 @table @option
21606 @item midi(f)
21607 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
21608 @item r(x), g(x), b(x)
21609 red, green, and blue value of intensity x.
21610 @end table
21611 Default value is @code{st(0, (midi(f)-59.5)/12);
21612 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
21613 r(1-ld(1)) + b(ld(1))}.
21614
21615 @item axisfile
21616 Specify image file to draw the axis. This option override @var{fontfile} and
21617 @var{fontcolor} option.
21618
21619 @item axis, text
21620 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
21621 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
21622 Default value is @code{1}.
21623
21624 @item csp
21625 Set colorspace. The accepted values are:
21626 @table @samp
21627 @item unspecified
21628 Unspecified (default)
21629
21630 @item bt709
21631 BT.709
21632
21633 @item fcc
21634 FCC
21635
21636 @item bt470bg
21637 BT.470BG or BT.601-6 625
21638
21639 @item smpte170m
21640 SMPTE-170M or BT.601-6 525
21641
21642 @item smpte240m
21643 SMPTE-240M
21644
21645 @item bt2020ncl
21646 BT.2020 with non-constant luminance
21647
21648 @end table
21649
21650 @item cscheme
21651 Set spectrogram color scheme. This is list of floating point values with format
21652 @code{left_r|left_g|left_b|right_r|right_g|right_b}.
21653 The default is @code{1|0.5|0|0|0.5|1}.
21654
21655 @end table
21656
21657 @subsection Examples
21658
21659 @itemize
21660 @item
21661 Playing audio while showing the spectrum:
21662 @example
21663 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
21664 @end example
21665
21666 @item
21667 Same as above, but with frame rate 30 fps:
21668 @example
21669 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
21670 @end example
21671
21672 @item
21673 Playing at 1280x720:
21674 @example
21675 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
21676 @end example
21677
21678 @item
21679 Disable sonogram display:
21680 @example
21681 sono_h=0
21682 @end example
21683
21684 @item
21685 A1 and its harmonics: A1, A2, (near)E3, A3:
21686 @example
21687 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),
21688                  asplit[a][out1]; [a] showcqt [out0]'
21689 @end example
21690
21691 @item
21692 Same as above, but with more accuracy in frequency domain:
21693 @example
21694 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),
21695                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
21696 @end example
21697
21698 @item
21699 Custom volume:
21700 @example
21701 bar_v=10:sono_v=bar_v*a_weighting(f)
21702 @end example
21703
21704 @item
21705 Custom gamma, now spectrum is linear to the amplitude.
21706 @example
21707 bar_g=2:sono_g=2
21708 @end example
21709
21710 @item
21711 Custom tlength equation:
21712 @example
21713 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)))'
21714 @end example
21715
21716 @item
21717 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
21718 @example
21719 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
21720 @end example
21721
21722 @item
21723 Custom font using fontconfig:
21724 @example
21725 font='Courier New,Monospace,mono|bold'
21726 @end example
21727
21728 @item
21729 Custom frequency range with custom axis using image file:
21730 @example
21731 axisfile=myaxis.png:basefreq=40:endfreq=10000
21732 @end example
21733 @end itemize
21734
21735 @section showfreqs
21736
21737 Convert input audio to video output representing the audio power spectrum.
21738 Audio amplitude is on Y-axis while frequency is on X-axis.
21739
21740 The filter accepts the following options:
21741
21742 @table @option
21743 @item size, s
21744 Specify size of video. For the syntax of this option, check the
21745 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21746 Default is @code{1024x512}.
21747
21748 @item mode
21749 Set display mode.
21750 This set how each frequency bin will be represented.
21751
21752 It accepts the following values:
21753 @table @samp
21754 @item line
21755 @item bar
21756 @item dot
21757 @end table
21758 Default is @code{bar}.
21759
21760 @item ascale
21761 Set amplitude scale.
21762
21763 It accepts the following values:
21764 @table @samp
21765 @item lin
21766 Linear scale.
21767
21768 @item sqrt
21769 Square root scale.
21770
21771 @item cbrt
21772 Cubic root scale.
21773
21774 @item log
21775 Logarithmic scale.
21776 @end table
21777 Default is @code{log}.
21778
21779 @item fscale
21780 Set frequency scale.
21781
21782 It accepts the following values:
21783 @table @samp
21784 @item lin
21785 Linear scale.
21786
21787 @item log
21788 Logarithmic scale.
21789
21790 @item rlog
21791 Reverse logarithmic scale.
21792 @end table
21793 Default is @code{lin}.
21794
21795 @item win_size
21796 Set window size.
21797
21798 It accepts the following values:
21799 @table @samp
21800 @item w16
21801 @item w32
21802 @item w64
21803 @item w128
21804 @item w256
21805 @item w512
21806 @item w1024
21807 @item w2048
21808 @item w4096
21809 @item w8192
21810 @item w16384
21811 @item w32768
21812 @item w65536
21813 @end table
21814 Default is @code{w2048}
21815
21816 @item win_func
21817 Set windowing function.
21818
21819 It accepts the following values:
21820 @table @samp
21821 @item rect
21822 @item bartlett
21823 @item hanning
21824 @item hamming
21825 @item blackman
21826 @item welch
21827 @item flattop
21828 @item bharris
21829 @item bnuttall
21830 @item bhann
21831 @item sine
21832 @item nuttall
21833 @item lanczos
21834 @item gauss
21835 @item tukey
21836 @item dolph
21837 @item cauchy
21838 @item parzen
21839 @item poisson
21840 @item bohman
21841 @end table
21842 Default is @code{hanning}.
21843
21844 @item overlap
21845 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
21846 which means optimal overlap for selected window function will be picked.
21847
21848 @item averaging
21849 Set time averaging. Setting this to 0 will display current maximal peaks.
21850 Default is @code{1}, which means time averaging is disabled.
21851
21852 @item colors
21853 Specify list of colors separated by space or by '|' which will be used to
21854 draw channel frequencies. Unrecognized or missing colors will be replaced
21855 by white color.
21856
21857 @item cmode
21858 Set channel display mode.
21859
21860 It accepts the following values:
21861 @table @samp
21862 @item combined
21863 @item separate
21864 @end table
21865 Default is @code{combined}.
21866
21867 @item minamp
21868 Set minimum amplitude used in @code{log} amplitude scaler.
21869
21870 @end table
21871
21872 @anchor{showspectrum}
21873 @section showspectrum
21874
21875 Convert input audio to a video output, representing the audio frequency
21876 spectrum.
21877
21878 The filter accepts the following options:
21879
21880 @table @option
21881 @item size, s
21882 Specify the video size for the output. For the syntax of this option, check the
21883 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21884 Default value is @code{640x512}.
21885
21886 @item slide
21887 Specify how the spectrum should slide along the window.
21888
21889 It accepts the following values:
21890 @table @samp
21891 @item replace
21892 the samples start again on the left when they reach the right
21893 @item scroll
21894 the samples scroll from right to left
21895 @item fullframe
21896 frames are only produced when the samples reach the right
21897 @item rscroll
21898 the samples scroll from left to right
21899 @end table
21900
21901 Default value is @code{replace}.
21902
21903 @item mode
21904 Specify display mode.
21905
21906 It accepts the following values:
21907 @table @samp
21908 @item combined
21909 all channels are displayed in the same row
21910 @item separate
21911 all channels are displayed in separate rows
21912 @end table
21913
21914 Default value is @samp{combined}.
21915
21916 @item color
21917 Specify display color mode.
21918
21919 It accepts the following values:
21920 @table @samp
21921 @item channel
21922 each channel is displayed in a separate color
21923 @item intensity
21924 each channel is displayed using the same color scheme
21925 @item rainbow
21926 each channel is displayed using the rainbow color scheme
21927 @item moreland
21928 each channel is displayed using the moreland color scheme
21929 @item nebulae
21930 each channel is displayed using the nebulae color scheme
21931 @item fire
21932 each channel is displayed using the fire color scheme
21933 @item fiery
21934 each channel is displayed using the fiery color scheme
21935 @item fruit
21936 each channel is displayed using the fruit color scheme
21937 @item cool
21938 each channel is displayed using the cool color scheme
21939 @item magma
21940 each channel is displayed using the magma color scheme
21941 @item green
21942 each channel is displayed using the green color scheme
21943 @item viridis
21944 each channel is displayed using the viridis color scheme
21945 @item plasma
21946 each channel is displayed using the plasma color scheme
21947 @item cividis
21948 each channel is displayed using the cividis color scheme
21949 @item terrain
21950 each channel is displayed using the terrain color scheme
21951 @end table
21952
21953 Default value is @samp{channel}.
21954
21955 @item scale
21956 Specify scale used for calculating intensity color values.
21957
21958 It accepts the following values:
21959 @table @samp
21960 @item lin
21961 linear
21962 @item sqrt
21963 square root, default
21964 @item cbrt
21965 cubic root
21966 @item log
21967 logarithmic
21968 @item 4thrt
21969 4th root
21970 @item 5thrt
21971 5th root
21972 @end table
21973
21974 Default value is @samp{sqrt}.
21975
21976 @item saturation
21977 Set saturation modifier for displayed colors. Negative values provide
21978 alternative color scheme. @code{0} is no saturation at all.
21979 Saturation must be in [-10.0, 10.0] range.
21980 Default value is @code{1}.
21981
21982 @item win_func
21983 Set window function.
21984
21985 It accepts the following values:
21986 @table @samp
21987 @item rect
21988 @item bartlett
21989 @item hann
21990 @item hanning
21991 @item hamming
21992 @item blackman
21993 @item welch
21994 @item flattop
21995 @item bharris
21996 @item bnuttall
21997 @item bhann
21998 @item sine
21999 @item nuttall
22000 @item lanczos
22001 @item gauss
22002 @item tukey
22003 @item dolph
22004 @item cauchy
22005 @item parzen
22006 @item poisson
22007 @item bohman
22008 @end table
22009
22010 Default value is @code{hann}.
22011
22012 @item orientation
22013 Set orientation of time vs frequency axis. Can be @code{vertical} or
22014 @code{horizontal}. Default is @code{vertical}.
22015
22016 @item overlap
22017 Set ratio of overlap window. Default value is @code{0}.
22018 When value is @code{1} overlap is set to recommended size for specific
22019 window function currently used.
22020
22021 @item gain
22022 Set scale gain for calculating intensity color values.
22023 Default value is @code{1}.
22024
22025 @item data
22026 Set which data to display. Can be @code{magnitude}, default or @code{phase}.
22027
22028 @item rotation
22029 Set color rotation, must be in [-1.0, 1.0] range.
22030 Default value is @code{0}.
22031
22032 @item start
22033 Set start frequency from which to display spectrogram. Default is @code{0}.
22034
22035 @item stop
22036 Set stop frequency to which to display spectrogram. Default is @code{0}.
22037
22038 @item fps
22039 Set upper frame rate limit. Default is @code{auto}, unlimited.
22040
22041 @item legend
22042 Draw time and frequency axes and legends. Default is disabled.
22043 @end table
22044
22045 The usage is very similar to the showwaves filter; see the examples in that
22046 section.
22047
22048 @subsection Examples
22049
22050 @itemize
22051 @item
22052 Large window with logarithmic color scaling:
22053 @example
22054 showspectrum=s=1280x480:scale=log
22055 @end example
22056
22057 @item
22058 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
22059 @example
22060 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
22061              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
22062 @end example
22063 @end itemize
22064
22065 @section showspectrumpic
22066
22067 Convert input audio to a single video frame, representing the audio frequency
22068 spectrum.
22069
22070 The filter accepts the following options:
22071
22072 @table @option
22073 @item size, s
22074 Specify the video size for the output. For the syntax of this option, check the
22075 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22076 Default value is @code{4096x2048}.
22077
22078 @item mode
22079 Specify display mode.
22080
22081 It accepts the following values:
22082 @table @samp
22083 @item combined
22084 all channels are displayed in the same row
22085 @item separate
22086 all channels are displayed in separate rows
22087 @end table
22088 Default value is @samp{combined}.
22089
22090 @item color
22091 Specify display color mode.
22092
22093 It accepts the following values:
22094 @table @samp
22095 @item channel
22096 each channel is displayed in a separate color
22097 @item intensity
22098 each channel is displayed using the same color scheme
22099 @item rainbow
22100 each channel is displayed using the rainbow color scheme
22101 @item moreland
22102 each channel is displayed using the moreland color scheme
22103 @item nebulae
22104 each channel is displayed using the nebulae color scheme
22105 @item fire
22106 each channel is displayed using the fire color scheme
22107 @item fiery
22108 each channel is displayed using the fiery color scheme
22109 @item fruit
22110 each channel is displayed using the fruit color scheme
22111 @item cool
22112 each channel is displayed using the cool color scheme
22113 @item magma
22114 each channel is displayed using the magma color scheme
22115 @item green
22116 each channel is displayed using the green color scheme
22117 @item viridis
22118 each channel is displayed using the viridis color scheme
22119 @item plasma
22120 each channel is displayed using the plasma color scheme
22121 @item cividis
22122 each channel is displayed using the cividis color scheme
22123 @item terrain
22124 each channel is displayed using the terrain color scheme
22125 @end table
22126 Default value is @samp{intensity}.
22127
22128 @item scale
22129 Specify scale used for calculating intensity color values.
22130
22131 It accepts the following values:
22132 @table @samp
22133 @item lin
22134 linear
22135 @item sqrt
22136 square root, default
22137 @item cbrt
22138 cubic root
22139 @item log
22140 logarithmic
22141 @item 4thrt
22142 4th root
22143 @item 5thrt
22144 5th root
22145 @end table
22146 Default value is @samp{log}.
22147
22148 @item saturation
22149 Set saturation modifier for displayed colors. Negative values provide
22150 alternative color scheme. @code{0} is no saturation at all.
22151 Saturation must be in [-10.0, 10.0] range.
22152 Default value is @code{1}.
22153
22154 @item win_func
22155 Set window function.
22156
22157 It accepts the following values:
22158 @table @samp
22159 @item rect
22160 @item bartlett
22161 @item hann
22162 @item hanning
22163 @item hamming
22164 @item blackman
22165 @item welch
22166 @item flattop
22167 @item bharris
22168 @item bnuttall
22169 @item bhann
22170 @item sine
22171 @item nuttall
22172 @item lanczos
22173 @item gauss
22174 @item tukey
22175 @item dolph
22176 @item cauchy
22177 @item parzen
22178 @item poisson
22179 @item bohman
22180 @end table
22181 Default value is @code{hann}.
22182
22183 @item orientation
22184 Set orientation of time vs frequency axis. Can be @code{vertical} or
22185 @code{horizontal}. Default is @code{vertical}.
22186
22187 @item gain
22188 Set scale gain for calculating intensity color values.
22189 Default value is @code{1}.
22190
22191 @item legend
22192 Draw time and frequency axes and legends. Default is enabled.
22193
22194 @item rotation
22195 Set color rotation, must be in [-1.0, 1.0] range.
22196 Default value is @code{0}.
22197
22198 @item start
22199 Set start frequency from which to display spectrogram. Default is @code{0}.
22200
22201 @item stop
22202 Set stop frequency to which to display spectrogram. Default is @code{0}.
22203 @end table
22204
22205 @subsection Examples
22206
22207 @itemize
22208 @item
22209 Extract an audio spectrogram of a whole audio track
22210 in a 1024x1024 picture using @command{ffmpeg}:
22211 @example
22212 ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
22213 @end example
22214 @end itemize
22215
22216 @section showvolume
22217
22218 Convert input audio volume to a video output.
22219
22220 The filter accepts the following options:
22221
22222 @table @option
22223 @item rate, r
22224 Set video rate.
22225
22226 @item b
22227 Set border width, allowed range is [0, 5]. Default is 1.
22228
22229 @item w
22230 Set channel width, allowed range is [80, 8192]. Default is 400.
22231
22232 @item h
22233 Set channel height, allowed range is [1, 900]. Default is 20.
22234
22235 @item f
22236 Set fade, allowed range is [0, 1]. Default is 0.95.
22237
22238 @item c
22239 Set volume color expression.
22240
22241 The expression can use the following variables:
22242
22243 @table @option
22244 @item VOLUME
22245 Current max volume of channel in dB.
22246
22247 @item PEAK
22248 Current peak.
22249
22250 @item CHANNEL
22251 Current channel number, starting from 0.
22252 @end table
22253
22254 @item t
22255 If set, displays channel names. Default is enabled.
22256
22257 @item v
22258 If set, displays volume values. Default is enabled.
22259
22260 @item o
22261 Set orientation, can be horizontal: @code{h} or vertical: @code{v},
22262 default is @code{h}.
22263
22264 @item s
22265 Set step size, allowed range is [0, 5]. Default is 0, which means
22266 step is disabled.
22267
22268 @item p
22269 Set background opacity, allowed range is [0, 1]. Default is 0.
22270
22271 @item m
22272 Set metering mode, can be peak: @code{p} or rms: @code{r},
22273 default is @code{p}.
22274
22275 @item ds
22276 Set display scale, can be linear: @code{lin} or log: @code{log},
22277 default is @code{lin}.
22278
22279 @item dm
22280 In second.
22281 If set to > 0., display a line for the max level
22282 in the previous seconds.
22283 default is disabled: @code{0.}
22284
22285 @item dmc
22286 The color of the max line. Use when @code{dm} option is set to > 0.
22287 default is: @code{orange}
22288 @end table
22289
22290 @section showwaves
22291
22292 Convert input audio to a video output, representing the samples waves.
22293
22294 The filter accepts the following options:
22295
22296 @table @option
22297 @item size, s
22298 Specify the video size for the output. For the syntax of this option, check the
22299 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22300 Default value is @code{600x240}.
22301
22302 @item mode
22303 Set display mode.
22304
22305 Available values are:
22306 @table @samp
22307 @item point
22308 Draw a point for each sample.
22309
22310 @item line
22311 Draw a vertical line for each sample.
22312
22313 @item p2p
22314 Draw a point for each sample and a line between them.
22315
22316 @item cline
22317 Draw a centered vertical line for each sample.
22318 @end table
22319
22320 Default value is @code{point}.
22321
22322 @item n
22323 Set the number of samples which are printed on the same column. A
22324 larger value will decrease the frame rate. Must be a positive
22325 integer. This option can be set only if the value for @var{rate}
22326 is not explicitly specified.
22327
22328 @item rate, r
22329 Set the (approximate) output frame rate. This is done by setting the
22330 option @var{n}. Default value is "25".
22331
22332 @item split_channels
22333 Set if channels should be drawn separately or overlap. Default value is 0.
22334
22335 @item colors
22336 Set colors separated by '|' which are going to be used for drawing of each channel.
22337
22338 @item scale
22339 Set amplitude scale.
22340
22341 Available values are:
22342 @table @samp
22343 @item lin
22344 Linear.
22345
22346 @item log
22347 Logarithmic.
22348
22349 @item sqrt
22350 Square root.
22351
22352 @item cbrt
22353 Cubic root.
22354 @end table
22355
22356 Default is linear.
22357
22358 @item draw
22359 Set the draw mode. This is mostly useful to set for high @var{n}.
22360
22361 Available values are:
22362 @table @samp
22363 @item scale
22364 Scale pixel values for each drawn sample.
22365
22366 @item full
22367 Draw every sample directly.
22368 @end table
22369
22370 Default value is @code{scale}.
22371 @end table
22372
22373 @subsection Examples
22374
22375 @itemize
22376 @item
22377 Output the input file audio and the corresponding video representation
22378 at the same time:
22379 @example
22380 amovie=a.mp3,asplit[out0],showwaves[out1]
22381 @end example
22382
22383 @item
22384 Create a synthetic signal and show it with showwaves, forcing a
22385 frame rate of 30 frames per second:
22386 @example
22387 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
22388 @end example
22389 @end itemize
22390
22391 @section showwavespic
22392
22393 Convert input audio to a single video frame, representing the samples waves.
22394
22395 The filter accepts the following options:
22396
22397 @table @option
22398 @item size, s
22399 Specify the video size for the output. For the syntax of this option, check the
22400 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22401 Default value is @code{600x240}.
22402
22403 @item split_channels
22404 Set if channels should be drawn separately or overlap. Default value is 0.
22405
22406 @item colors
22407 Set colors separated by '|' which are going to be used for drawing of each channel.
22408
22409 @item scale
22410 Set amplitude scale.
22411
22412 Available values are:
22413 @table @samp
22414 @item lin
22415 Linear.
22416
22417 @item log
22418 Logarithmic.
22419
22420 @item sqrt
22421 Square root.
22422
22423 @item cbrt
22424 Cubic root.
22425 @end table
22426
22427 Default is linear.
22428 @end table
22429
22430 @subsection Examples
22431
22432 @itemize
22433 @item
22434 Extract a channel split representation of the wave form of a whole audio track
22435 in a 1024x800 picture using @command{ffmpeg}:
22436 @example
22437 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
22438 @end example
22439 @end itemize
22440
22441 @section sidedata, asidedata
22442
22443 Delete frame side data, or select frames based on it.
22444
22445 This filter accepts the following options:
22446
22447 @table @option
22448 @item mode
22449 Set mode of operation of the filter.
22450
22451 Can be one of the following:
22452
22453 @table @samp
22454 @item select
22455 Select every frame with side data of @code{type}.
22456
22457 @item delete
22458 Delete side data of @code{type}. If @code{type} is not set, delete all side
22459 data in the frame.
22460
22461 @end table
22462
22463 @item type
22464 Set side data type used with all modes. Must be set for @code{select} mode. For
22465 the list of frame side data types, refer to the @code{AVFrameSideDataType} enum
22466 in @file{libavutil/frame.h}. For example, to choose
22467 @code{AV_FRAME_DATA_PANSCAN} side data, you must specify @code{PANSCAN}.
22468
22469 @end table
22470
22471 @section spectrumsynth
22472
22473 Sythesize audio from 2 input video spectrums, first input stream represents
22474 magnitude across time and second represents phase across time.
22475 The filter will transform from frequency domain as displayed in videos back
22476 to time domain as presented in audio output.
22477
22478 This filter is primarily created for reversing processed @ref{showspectrum}
22479 filter outputs, but can synthesize sound from other spectrograms too.
22480 But in such case results are going to be poor if the phase data is not
22481 available, because in such cases phase data need to be recreated, usually
22482 it's just recreated from random noise.
22483 For best results use gray only output (@code{channel} color mode in
22484 @ref{showspectrum} filter) and @code{log} scale for magnitude video and
22485 @code{lin} scale for phase video. To produce phase, for 2nd video, use
22486 @code{data} option. Inputs videos should generally use @code{fullframe}
22487 slide mode as that saves resources needed for decoding video.
22488
22489 The filter accepts the following options:
22490
22491 @table @option
22492 @item sample_rate
22493 Specify sample rate of output audio, the sample rate of audio from which
22494 spectrum was generated may differ.
22495
22496 @item channels
22497 Set number of channels represented in input video spectrums.
22498
22499 @item scale
22500 Set scale which was used when generating magnitude input spectrum.
22501 Can be @code{lin} or @code{log}. Default is @code{log}.
22502
22503 @item slide
22504 Set slide which was used when generating inputs spectrums.
22505 Can be @code{replace}, @code{scroll}, @code{fullframe} or @code{rscroll}.
22506 Default is @code{fullframe}.
22507
22508 @item win_func
22509 Set window function used for resynthesis.
22510
22511 @item overlap
22512 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
22513 which means optimal overlap for selected window function will be picked.
22514
22515 @item orientation
22516 Set orientation of input videos. Can be @code{vertical} or @code{horizontal}.
22517 Default is @code{vertical}.
22518 @end table
22519
22520 @subsection Examples
22521
22522 @itemize
22523 @item
22524 First create magnitude and phase videos from audio, assuming audio is stereo with 44100 sample rate,
22525 then resynthesize videos back to audio with spectrumsynth:
22526 @example
22527 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
22528 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
22529 ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
22530 @end example
22531 @end itemize
22532
22533 @section split, asplit
22534
22535 Split input into several identical outputs.
22536
22537 @code{asplit} works with audio input, @code{split} with video.
22538
22539 The filter accepts a single parameter which specifies the number of outputs. If
22540 unspecified, it defaults to 2.
22541
22542 @subsection Examples
22543
22544 @itemize
22545 @item
22546 Create two separate outputs from the same input:
22547 @example
22548 [in] split [out0][out1]
22549 @end example
22550
22551 @item
22552 To create 3 or more outputs, you need to specify the number of
22553 outputs, like in:
22554 @example
22555 [in] asplit=3 [out0][out1][out2]
22556 @end example
22557
22558 @item
22559 Create two separate outputs from the same input, one cropped and
22560 one padded:
22561 @example
22562 [in] split [splitout1][splitout2];
22563 [splitout1] crop=100:100:0:0    [cropout];
22564 [splitout2] pad=200:200:100:100 [padout];
22565 @end example
22566
22567 @item
22568 Create 5 copies of the input audio with @command{ffmpeg}:
22569 @example
22570 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
22571 @end example
22572 @end itemize
22573
22574 @section zmq, azmq
22575
22576 Receive commands sent through a libzmq client, and forward them to
22577 filters in the filtergraph.
22578
22579 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
22580 must be inserted between two video filters, @code{azmq} between two
22581 audio filters. Both are capable to send messages to any filter type.
22582
22583 To enable these filters you need to install the libzmq library and
22584 headers and configure FFmpeg with @code{--enable-libzmq}.
22585
22586 For more information about libzmq see:
22587 @url{http://www.zeromq.org/}
22588
22589 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
22590 receives messages sent through a network interface defined by the
22591 @option{bind_address} (or the abbreviation "@option{b}") option.
22592 Default value of this option is @file{tcp://localhost:5555}. You may
22593 want to alter this value to your needs, but do not forget to escape any
22594 ':' signs (see @ref{filtergraph escaping}).
22595
22596 The received message must be in the form:
22597 @example
22598 @var{TARGET} @var{COMMAND} [@var{ARG}]
22599 @end example
22600
22601 @var{TARGET} specifies the target of the command, usually the name of
22602 the filter class or a specific filter instance name. The default
22603 filter instance name uses the pattern @samp{Parsed_<filter_name>_<index>},
22604 but you can override this by using the @samp{filter_name@@id} syntax
22605 (see @ref{Filtergraph syntax}).
22606
22607 @var{COMMAND} specifies the name of the command for the target filter.
22608
22609 @var{ARG} is optional and specifies the optional argument list for the
22610 given @var{COMMAND}.
22611
22612 Upon reception, the message is processed and the corresponding command
22613 is injected into the filtergraph. Depending on the result, the filter
22614 will send a reply to the client, adopting the format:
22615 @example
22616 @var{ERROR_CODE} @var{ERROR_REASON}
22617 @var{MESSAGE}
22618 @end example
22619
22620 @var{MESSAGE} is optional.
22621
22622 @subsection Examples
22623
22624 Look at @file{tools/zmqsend} for an example of a zmq client which can
22625 be used to send commands processed by these filters.
22626
22627 Consider the following filtergraph generated by @command{ffplay}.
22628 In this example the last overlay filter has an instance name. All other
22629 filters will have default instance names.
22630
22631 @example
22632 ffplay -dumpgraph 1 -f lavfi "
22633 color=s=100x100:c=red  [l];
22634 color=s=100x100:c=blue [r];
22635 nullsrc=s=200x100, zmq [bg];
22636 [bg][l]   overlay     [bg+l];
22637 [bg+l][r] overlay@@my=x=100 "
22638 @end example
22639
22640 To change the color of the left side of the video, the following
22641 command can be used:
22642 @example
22643 echo Parsed_color_0 c yellow | tools/zmqsend
22644 @end example
22645
22646 To change the right side:
22647 @example
22648 echo Parsed_color_1 c pink | tools/zmqsend
22649 @end example
22650
22651 To change the position of the right side:
22652 @example
22653 echo overlay@@my x 150 | tools/zmqsend
22654 @end example
22655
22656
22657 @c man end MULTIMEDIA FILTERS
22658
22659 @chapter Multimedia Sources
22660 @c man begin MULTIMEDIA SOURCES
22661
22662 Below is a description of the currently available multimedia sources.
22663
22664 @section amovie
22665
22666 This is the same as @ref{movie} source, except it selects an audio
22667 stream by default.
22668
22669 @anchor{movie}
22670 @section movie
22671
22672 Read audio and/or video stream(s) from a movie container.
22673
22674 It accepts the following parameters:
22675
22676 @table @option
22677 @item filename
22678 The name of the resource to read (not necessarily a file; it can also be a
22679 device or a stream accessed through some protocol).
22680
22681 @item format_name, f
22682 Specifies the format assumed for the movie to read, and can be either
22683 the name of a container or an input device. If not specified, the
22684 format is guessed from @var{movie_name} or by probing.
22685
22686 @item seek_point, sp
22687 Specifies the seek point in seconds. The frames will be output
22688 starting from this seek point. The parameter is evaluated with
22689 @code{av_strtod}, so the numerical value may be suffixed by an IS
22690 postfix. The default value is "0".
22691
22692 @item streams, s
22693 Specifies the streams to read. Several streams can be specified,
22694 separated by "+". The source will then have as many outputs, in the
22695 same order. The syntax is explained in the @ref{Stream specifiers,,"Stream specifiers"
22696 section in the ffmpeg manual,ffmpeg}. Two special names, "dv" and "da" specify
22697 respectively the default (best suited) video and audio stream. Default
22698 is "dv", or "da" if the filter is called as "amovie".
22699
22700 @item stream_index, si
22701 Specifies the index of the video stream to read. If the value is -1,
22702 the most suitable video stream will be automatically selected. The default
22703 value is "-1". Deprecated. If the filter is called "amovie", it will select
22704 audio instead of video.
22705
22706 @item loop
22707 Specifies how many times to read the stream in sequence.
22708 If the value is 0, the stream will be looped infinitely.
22709 Default value is "1".
22710
22711 Note that when the movie is looped the source timestamps are not
22712 changed, so it will generate non monotonically increasing timestamps.
22713
22714 @item discontinuity
22715 Specifies the time difference between frames above which the point is
22716 considered a timestamp discontinuity which is removed by adjusting the later
22717 timestamps.
22718 @end table
22719
22720 It allows overlaying a second video on top of the main input of
22721 a filtergraph, as shown in this graph:
22722 @example
22723 input -----------> deltapts0 --> overlay --> output
22724                                     ^
22725                                     |
22726 movie --> scale--> deltapts1 -------+
22727 @end example
22728 @subsection Examples
22729
22730 @itemize
22731 @item
22732 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
22733 on top of the input labelled "in":
22734 @example
22735 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
22736 [in] setpts=PTS-STARTPTS [main];
22737 [main][over] overlay=16:16 [out]
22738 @end example
22739
22740 @item
22741 Read from a video4linux2 device, and overlay it on top of the input
22742 labelled "in":
22743 @example
22744 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
22745 [in] setpts=PTS-STARTPTS [main];
22746 [main][over] overlay=16:16 [out]
22747 @end example
22748
22749 @item
22750 Read the first video stream and the audio stream with id 0x81 from
22751 dvd.vob; the video is connected to the pad named "video" and the audio is
22752 connected to the pad named "audio":
22753 @example
22754 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
22755 @end example
22756 @end itemize
22757
22758 @subsection Commands
22759
22760 Both movie and amovie support the following commands:
22761 @table @option
22762 @item seek
22763 Perform seek using "av_seek_frame".
22764 The syntax is: seek @var{stream_index}|@var{timestamp}|@var{flags}
22765 @itemize
22766 @item
22767 @var{stream_index}: If stream_index is -1, a default
22768 stream is selected, and @var{timestamp} is automatically converted
22769 from AV_TIME_BASE units to the stream specific time_base.
22770 @item
22771 @var{timestamp}: Timestamp in AVStream.time_base units
22772 or, if no stream is specified, in AV_TIME_BASE units.
22773 @item
22774 @var{flags}: Flags which select direction and seeking mode.
22775 @end itemize
22776
22777 @item get_duration
22778 Get movie duration in AV_TIME_BASE units.
22779
22780 @end table
22781
22782 @c man end MULTIMEDIA SOURCES