]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
doc/filters: update hue command syntax after recent update
[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 @example
12 input --> split ---------------------> overlay --> output
13             |                             ^
14             |                             |
15             +-----> crop --> vflip -------+
16 @end example
17
18 This filtergraph splits the input stream in two streams, sends one
19 stream through the crop filter and the vflip filter before merging it
20 back with the other stream by overlaying it on top. You can use the
21 following command to achieve this:
22
23 @example
24 ffmpeg -i INPUT -vf "split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2" OUTPUT
25 @end example
26
27 The result will be that in output the top half of the video is mirrored
28 onto the bottom half.
29
30 Filters in the same linear chain are separated by commas, and distinct
31 linear chains of filters are separated by semicolons. In our example,
32 @var{crop,vflip} are in one linear chain, @var{split} and
33 @var{overlay} are separately in another. The points where the linear
34 chains join are labelled by names enclosed in square brackets. In the
35 example, the split filter generates two outputs that are associated to
36 the labels @var{[main]} and @var{[tmp]}.
37
38 The stream sent to the second output of @var{split}, labelled as
39 @var{[tmp]}, is processed through the @var{crop} filter, which crops
40 away the lower half part of the video, and then vertically flipped. The
41 @var{overlay} filter takes in input the first unchanged output of the
42 split filter (which was labelled as @var{[main]}), and overlay on its
43 lower half the output generated by the @var{crop,vflip} filterchain.
44
45 Some filters take in input a list of parameters: they are specified
46 after the filter name and an equal sign, and are separated from each other
47 by a colon.
48
49 There exist so-called @var{source filters} that do not have an
50 audio/video input, and @var{sink filters} that will not have audio/video
51 output.
52
53 @c man end FILTERING INTRODUCTION
54
55 @chapter graph2dot
56 @c man begin GRAPH2DOT
57
58 The @file{graph2dot} program included in the FFmpeg @file{tools}
59 directory can be used to parse a filtergraph description and issue a
60 corresponding textual representation in the dot language.
61
62 Invoke the command:
63 @example
64 graph2dot -h
65 @end example
66
67 to see how to use @file{graph2dot}.
68
69 You can then pass the dot description to the @file{dot} program (from
70 the graphviz suite of programs) and obtain a graphical representation
71 of the filtergraph.
72
73 For example the sequence of commands:
74 @example
75 echo @var{GRAPH_DESCRIPTION} | \
76 tools/graph2dot -o graph.tmp && \
77 dot -Tpng graph.tmp -o graph.png && \
78 display graph.png
79 @end example
80
81 can be used to create and display an image representing the graph
82 described by the @var{GRAPH_DESCRIPTION} string. Note that this string must be
83 a complete self-contained graph, with its inputs and outputs explicitly defined.
84 For example if your command line is of the form:
85 @example
86 ffmpeg -i infile -vf scale=640:360 outfile
87 @end example
88 your @var{GRAPH_DESCRIPTION} string will need to be of the form:
89 @example
90 nullsrc,scale=640:360,nullsink
91 @end example
92 you may also need to set the @var{nullsrc} parameters and add a @var{format}
93 filter in order to simulate a specific input file.
94
95 @c man end GRAPH2DOT
96
97 @chapter Filtergraph description
98 @c man begin FILTERGRAPH DESCRIPTION
99
100 A filtergraph is a directed graph of connected filters. It can contain
101 cycles, and there can be multiple links between a pair of
102 filters. Each link has one input pad on one side connecting it to one
103 filter from which it takes its input, and one output pad on the other
104 side connecting it to the one filter accepting its output.
105
106 Each filter in a filtergraph is an instance of a filter class
107 registered in the application, which defines the features and the
108 number of input and output pads of the filter.
109
110 A filter with no input pads is called a "source", a filter with no
111 output pads is called a "sink".
112
113 @anchor{Filtergraph syntax}
114 @section Filtergraph syntax
115
116 A filtergraph can be represented using a textual representation, which is
117 recognized by the @option{-filter}/@option{-vf} and @option{-filter_complex}
118 options in @command{ffmpeg} and @option{-vf} in @command{ffplay}, and by the
119 @code{avfilter_graph_parse()}/@code{avfilter_graph_parse2()} function defined in
120 @file{libavfilter/avfiltergraph.h}.
121
122 A filterchain consists of a sequence of connected filters, each one
123 connected to the previous one in the sequence. A filterchain is
124 represented by a list of ","-separated filter descriptions.
125
126 A filtergraph consists of a sequence of filterchains. A sequence of
127 filterchains is represented by a list of ";"-separated filterchain
128 descriptions.
129
130 A filter is represented by a string of the form:
131 [@var{in_link_1}]...[@var{in_link_N}]@var{filter_name}=@var{arguments}[@var{out_link_1}]...[@var{out_link_M}]
132
133 @var{filter_name} is the name of the filter class of which the
134 described filter is an instance of, and has to be the name of one of
135 the filter classes registered in the program.
136 The name of the filter class is optionally followed by a string
137 "=@var{arguments}".
138
139 @var{arguments} is a string which contains the parameters used to
140 initialize the filter instance. It may have one of the following forms:
141 @itemize
142
143 @item
144 A ':'-separated list of @var{key=value} pairs.
145
146 @item
147 A ':'-separated list of @var{value}. In this case, the keys are assumed to be
148 the option names in the order they are declared. E.g. the @code{fade} filter
149 declares three options in this order -- @option{type}, @option{start_frame} and
150 @option{nb_frames}. Then the parameter list @var{in:0:30} means that the value
151 @var{in} is assigned to the option @option{type}, @var{0} to
152 @option{start_frame} and @var{30} to @option{nb_frames}.
153
154 @item
155 A ':'-separated list of mixed direct @var{value} and long @var{key=value}
156 pairs. The direct @var{value} must precede the @var{key=value} pairs, and
157 follow the same constraints order of the previous point. The following
158 @var{key=value} pairs can be set in any preferred order.
159
160 @end itemize
161
162 If the option value itself is a list of items (e.g. the @code{format} filter
163 takes a list of pixel formats), the items in the list are usually separated by
164 '|'.
165
166 The list of arguments can be quoted using the character "'" as initial
167 and ending mark, and the character '\' for escaping the characters
168 within the quoted text; otherwise the argument string is considered
169 terminated when the next special character (belonging to the set
170 "[]=;,") is encountered.
171
172 The name and arguments of the filter are optionally preceded and
173 followed by a list of link labels.
174 A link label allows to name a link and associate it to a filter output
175 or input pad. The preceding labels @var{in_link_1}
176 ... @var{in_link_N}, are associated to the filter input pads,
177 the following labels @var{out_link_1} ... @var{out_link_M}, are
178 associated to the output pads.
179
180 When two link labels with the same name are found in the
181 filtergraph, a link between the corresponding input and output pad is
182 created.
183
184 If an output pad is not labelled, it is linked by default to the first
185 unlabelled input pad of the next filter in the filterchain.
186 For example in the filterchain:
187 @example
188 nullsrc, split[L1], [L2]overlay, nullsink
189 @end example
190 the split filter instance has two output pads, and the overlay filter
191 instance two input pads. The first output pad of split is labelled
192 "L1", the first input pad of overlay is labelled "L2", and the second
193 output pad of split is linked to the second input pad of overlay,
194 which are both unlabelled.
195
196 In a complete filterchain all the unlabelled filter input and output
197 pads must be connected. A filtergraph is considered valid if all the
198 filter input and output pads of all the filterchains are connected.
199
200 Libavfilter will automatically insert scale filters where format
201 conversion is required. It is possible to specify swscale flags
202 for those automatically inserted scalers by prepending
203 @code{sws_flags=@var{flags};}
204 to the filtergraph description.
205
206 Follows a BNF description for the filtergraph syntax:
207 @example
208 @var{NAME}             ::= sequence of alphanumeric characters and '_'
209 @var{LINKLABEL}        ::= "[" @var{NAME} "]"
210 @var{LINKLABELS}       ::= @var{LINKLABEL} [@var{LINKLABELS}]
211 @var{FILTER_ARGUMENTS} ::= sequence of chars (eventually quoted)
212 @var{FILTER}           ::= [@var{LINKLABELS}] @var{NAME} ["=" @var{FILTER_ARGUMENTS}] [@var{LINKLABELS}]
213 @var{FILTERCHAIN}      ::= @var{FILTER} [,@var{FILTERCHAIN}]
214 @var{FILTERGRAPH}      ::= [sws_flags=@var{flags};] @var{FILTERCHAIN} [;@var{FILTERGRAPH}]
215 @end example
216
217 @section Notes on filtergraph escaping
218
219 Some filter arguments require the use of special characters, typically
220 @code{:} to separate key=value pairs in a named options list. In this
221 case the user should perform a first level escaping when specifying
222 the filter arguments. For example, consider the following literal
223 string to be embedded in the @ref{drawtext} filter arguments:
224 @example
225 this is a 'string': may contain one, or more, special characters
226 @end example
227
228 Since @code{:} is special for the filter arguments syntax, it needs to
229 be escaped, so you get:
230 @example
231 text=this is a \'string\'\: may contain one, or more, special characters
232 @end example
233
234 A second level of escaping is required when embedding the filter
235 arguments in a filtergraph description, in order to escape all the
236 filtergraph special characters. Thus the example above becomes:
237 @example
238 drawtext=text=this is a \\\'string\\\'\\: may contain one\, or more\, special characters
239 @end example
240
241 Finally an additional level of escaping may be needed when writing the
242 filtergraph description in a shell command, which depends on the
243 escaping rules of the adopted shell. For example, assuming that
244 @code{\} is special and needs to be escaped with another @code{\}, the
245 previous string will finally result in:
246 @example
247 -vf "drawtext=text=this is a \\\\\\'string\\\\\\'\\\\: may contain one\\, or more\\, special characters"
248 @end example
249
250 Sometimes, it might be more convenient to employ quoting in place of
251 escaping. For example the string:
252 @example
253 Caesar: tu quoque, Brute, fili mi
254 @end example
255
256 Can be quoted in the filter arguments as:
257 @example
258 text='Caesar: tu quoque, Brute, fili mi'
259 @end example
260
261 And finally inserted in a filtergraph like:
262 @example
263 drawtext=text=\'Caesar: tu quoque\, Brute\, fili mi\'
264 @end example
265
266 See the ``Quoting and escaping'' section in the ffmpeg-utils manual
267 for more information about the escaping and quoting rules adopted by
268 FFmpeg.
269
270 @c man end FILTERGRAPH DESCRIPTION
271
272 @chapter Audio Filters
273 @c man begin AUDIO FILTERS
274
275 When you configure your FFmpeg build, you can disable any of the
276 existing filters using @code{--disable-filters}.
277 The configure output will show the audio filters included in your
278 build.
279
280 Below is a description of the currently available audio filters.
281
282 @section aconvert
283
284 Convert the input audio format to the specified formats.
285
286 @emph{This filter is deprecated. Use @ref{aformat} instead.}
287
288 The filter accepts a string of the form:
289 "@var{sample_format}:@var{channel_layout}".
290
291 @var{sample_format} specifies the sample format, and can be a string or the
292 corresponding numeric value defined in @file{libavutil/samplefmt.h}. Use 'p'
293 suffix for a planar sample format.
294
295 @var{channel_layout} specifies the channel layout, and can be a string
296 or the corresponding number value defined in @file{libavutil/channel_layout.h}.
297
298 The special parameter "auto", signifies that the filter will
299 automatically select the output format depending on the output filter.
300
301 @subsection Examples
302
303 @itemize
304 @item
305 Convert input to float, planar, stereo:
306 @example
307 aconvert=fltp:stereo
308 @end example
309
310 @item
311 Convert input to unsigned 8-bit, automatically select out channel layout:
312 @example
313 aconvert=u8:auto
314 @end example
315 @end itemize
316
317 @section allpass
318
319 Apply a two-pole all-pass filter with central frequency (in Hz)
320 @var{frequency}, and filter-width @var{width}.
321 An all-pass filter changes the audio's frequency to phase relationship
322 without changing its frequency to amplitude relationship.
323
324 The filter accepts parameters as a list of @var{key}=@var{value}
325 pairs, separated by ":".
326
327 A description of the accepted parameters follows.
328
329 @table @option
330 @item frequency, f
331 Set frequency in Hz.
332
333 @item width_type
334 Set method to specify band-width of filter.
335 @table @option
336 @item h
337 Hz
338 @item q
339 Q-Factor
340 @item o
341 octave
342 @item s
343 slope
344 @end table
345
346 @item width, w
347 Specify the band-width of a filter in width_type units.
348 @end table
349
350 @section highpass
351
352 Apply a high-pass filter with 3dB point frequency.
353 The filter can be either single-pole, or double-pole (the default).
354 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
355
356 The filter accepts parameters as a list of @var{key}=@var{value}
357 pairs, separated by ":".
358
359 A description of the accepted parameters follows.
360
361 @table @option
362 @item frequency, f
363 Set frequency in Hz. Default is 3000.
364
365 @item poles, p
366 Set number of poles. Default is 2.
367
368 @item width_type
369 Set method to specify band-width of filter.
370 @table @option
371 @item h
372 Hz
373 @item q
374 Q-Factor
375 @item o
376 octave
377 @item s
378 slope
379 @end table
380
381 @item width, w
382 Specify the band-width of a filter in width_type units.
383 Applies only to double-pole filter.
384 The default is 0.707q and gives a Butterworth response.
385 @end table
386
387 @section lowpass
388
389 Apply a low-pass filter with 3dB point frequency.
390 The filter can be either single-pole or double-pole (the default).
391 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
392
393 The filter accepts parameters as a list of @var{key}=@var{value}
394 pairs, separated by ":".
395
396 A description of the accepted parameters follows.
397
398 @table @option
399 @item frequency, f
400 Set frequency in Hz. Default is 500.
401
402 @item poles, p
403 Set number of poles. Default is 2.
404
405 @item width_type
406 Set method to specify band-width of filter.
407 @table @option
408 @item h
409 Hz
410 @item q
411 Q-Factor
412 @item o
413 octave
414 @item s
415 slope
416 @end table
417
418 @item width, w
419 Specify the band-width of a filter in width_type units.
420 Applies only to double-pole filter.
421 The default is 0.707q and gives a Butterworth response.
422 @end table
423
424 @section bass
425
426 Boost or cut the bass (lower) frequencies of the audio using a two-pole
427 shelving filter with a response similar to that of a standard
428 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
429
430 The filter accepts parameters as a list of @var{key}=@var{value}
431 pairs, separated by ":".
432
433 A description of the accepted parameters follows.
434
435 @table @option
436 @item gain, g
437 Give the gain at 0 Hz. Its useful range is about -20
438 (for a large cut) to +20 (for a large boost).
439 Beware of clipping when using a positive gain.
440
441 @item frequency, f
442 Set the filter's central frequency and so can be used
443 to extend or reduce the frequency range to be boosted or cut.
444 The default value is @code{100} Hz.
445
446 @item width_type
447 Set method to specify band-width of filter.
448 @table @option
449 @item h
450 Hz
451 @item q
452 Q-Factor
453 @item o
454 octave
455 @item s
456 slope
457 @end table
458
459 @item width, w
460 Determine how steep is the filter's shelf transition.
461 @end table
462
463 @section telecine
464
465 Apply telecine process to the video.
466
467 This filter accepts the following options:
468
469 @table @option
470 @item first_field
471 @table @samp
472 @item top, t
473 top field first
474 @item bottom, b
475 bottom field first
476 The default value is @code{top}.
477 @end table
478
479 @item pattern
480 A string of numbers representing the pulldown pattern you wish to apply.
481 The default value is @code{23}.
482 @end table
483
484 @example
485 Some typical patterns:
486
487 NTSC output (30i):
488 27.5p: 32222
489 24p: 23 (classic)
490 24p: 2332 (preferred)
491 20p: 33
492 18p: 334
493 16p: 3444
494
495 PAL output (25i):
496 27.5p: 12222
497 24p: 222222222223 ("Euro pulldown")
498 16.67p: 33
499 16p: 33333334
500 @end example
501
502 @section treble
503
504 Boost or cut treble (upper) frequencies of the audio using a two-pole
505 shelving filter with a response similar to that of a standard
506 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
507
508 The filter accepts parameters as a list of @var{key}=@var{value}
509 pairs, separated by ":".
510
511 A description of the accepted parameters follows.
512
513 @table @option
514 @item gain, g
515 Give the gain at whichever is the lower of ~22 kHz and the
516 Nyquist frequency. Its useful range is about -20 (for a large cut)
517 to +20 (for a large boost). Beware of clipping when using a positive gain.
518
519 @item frequency, f
520 Set the filter's central frequency and so can be used
521 to extend or reduce the frequency range to be boosted or cut.
522 The default value is @code{3000} Hz.
523
524 @item width_type
525 Set method to specify band-width of filter.
526 @table @option
527 @item h
528 Hz
529 @item q
530 Q-Factor
531 @item o
532 octave
533 @item s
534 slope
535 @end table
536
537 @item width, w
538 Determine how steep is the filter's shelf transition.
539 @end table
540
541 @section bandpass
542
543 Apply a two-pole Butterworth band-pass filter with central
544 frequency @var{frequency}, and (3dB-point) band-width width.
545 The @var{csg} option selects a constant skirt gain (peak gain = Q)
546 instead of the default: constant 0dB peak gain.
547 The filter roll off at 6dB per octave (20dB per decade).
548
549 The filter accepts parameters as a list of @var{key}=@var{value}
550 pairs, separated by ":".
551
552 A description of the accepted parameters follows.
553
554 @table @option
555 @item frequency, f
556 Set the filter's central frequency. Default is @code{3000}.
557
558 @item csg
559 Constant skirt gain if set to 1. Defaults to 0.
560
561 @item width_type
562 Set method to specify band-width of filter.
563 @table @option
564 @item h
565 Hz
566 @item q
567 Q-Factor
568 @item o
569 octave
570 @item s
571 slope
572 @end table
573
574 @item width, w
575 Specify the band-width of a filter in width_type units.
576 @end table
577
578 @section bandreject
579
580 Apply a two-pole Butterworth band-reject filter with central
581 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
582 The filter roll off at 6dB per octave (20dB per decade).
583
584 The filter accepts parameters as a list of @var{key}=@var{value}
585 pairs, separated by ":".
586
587 A description of the accepted parameters follows.
588
589 @table @option
590 @item frequency, f
591 Set the filter's central frequency. Default is @code{3000}.
592
593 @item width_type
594 Set method to specify band-width of filter.
595 @table @option
596 @item h
597 Hz
598 @item q
599 Q-Factor
600 @item o
601 octave
602 @item s
603 slope
604 @end table
605
606 @item width, w
607 Specify the band-width of a filter in width_type units.
608 @end table
609
610 @section biquad
611
612 Apply a biquad IIR filter with the given coefficients.
613 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
614 are the numerator and denominator coefficients respectively.
615
616 @section equalizer
617
618 Apply a two-pole peaking equalisation (EQ) filter. With this
619 filter, the signal-level at and around a selected frequency can
620 be increased or decreased, whilst (unlike bandpass and bandreject
621 filters) that at all other frequencies is unchanged.
622
623 In order to produce complex equalisation curves, this filter can
624 be given several times, each with a different central frequency.
625
626 The filter accepts parameters as a list of @var{key}=@var{value}
627 pairs, separated by ":".
628
629 A description of the accepted parameters follows.
630
631 @table @option
632 @item frequency, f
633 Set the filter's central frequency in Hz.
634
635 @item width_type
636 Set method to specify band-width of filter.
637 @table @option
638 @item h
639 Hz
640 @item q
641 Q-Factor
642 @item o
643 octave
644 @item s
645 slope
646 @end table
647
648 @item width, w
649 Specify the band-width of a filter in width_type units.
650
651 @item gain, g
652 Set the required gain or attenuation in dB.
653 Beware of clipping when using a positive gain.
654 @end table
655
656 @section afade
657
658 Apply fade-in/out effect to input audio.
659
660 A description of the accepted parameters follows.
661
662 @table @option
663 @item type, t
664 Specify the effect type, can be either @code{in} for fade-in, or
665 @code{out} for a fade-out effect. Default is @code{in}.
666
667 @item start_sample, ss
668 Specify the number of the start sample for starting to apply the fade
669 effect. Default is 0.
670
671 @item nb_samples, ns
672 Specify the number of samples for which the fade effect has to last. At
673 the end of the fade-in effect the output audio will have the same
674 volume as the input audio, at the end of the fade-out transition
675 the output audio will be silence. Default is 44100.
676
677 @item start_time, st
678 Specify time in seconds for starting to apply the fade
679 effect. Default is 0.
680 If set this option is used instead of @var{start_sample} one.
681
682 @item duration, d
683 Specify the number of seconds for which the fade effect has to last. At
684 the end of the fade-in effect the output audio will have the same
685 volume as the input audio, at the end of the fade-out transition
686 the output audio will be silence. Default is 0.
687 If set this option is used instead of @var{nb_samples} one.
688
689 @item curve
690 Set curve for fade transition.
691
692 It accepts the following values:
693 @table @option
694 @item tri
695 select triangular, linear slope (default)
696 @item qsin
697 select quarter of sine wave
698 @item hsin
699 select half of sine wave
700 @item esin
701 select exponential sine wave
702 @item log
703 select logarithmic
704 @item par
705 select inverted parabola
706 @item qua
707 select quadratic
708 @item cub
709 select cubic
710 @item squ
711 select square root
712 @item cbr
713 select cubic root
714 @end table
715 @end table
716
717 @subsection Examples
718
719 @itemize
720 @item
721 Fade in first 15 seconds of audio:
722 @example
723 afade=t=in:ss=0:d=15
724 @end example
725
726 @item
727 Fade out last 25 seconds of a 900 seconds audio:
728 @example
729 afade=t=out:ss=875:d=25
730 @end example
731 @end itemize
732
733 @anchor{aformat}
734 @section aformat
735
736 Set output format constraints for the input audio. The framework will
737 negotiate the most appropriate format to minimize conversions.
738
739 The filter accepts the following named parameters:
740 @table @option
741
742 @item sample_fmts
743 A '|'-separated list of requested sample formats.
744
745 @item sample_rates
746 A '|'-separated list of requested sample rates.
747
748 @item channel_layouts
749 A '|'-separated list of requested channel layouts.
750
751 @end table
752
753 If a parameter is omitted, all values are allowed.
754
755 For example to force the output to either unsigned 8-bit or signed 16-bit stereo:
756 @example
757 aformat=sample_fmts=u8|s16:channel_layouts=stereo
758 @end example
759
760 @section amerge
761
762 Merge two or more audio streams into a single multi-channel stream.
763
764 The filter accepts the following options:
765
766 @table @option
767
768 @item inputs
769 Set the number of inputs. Default is 2.
770
771 @end table
772
773 If the channel layouts of the inputs are disjoint, and therefore compatible,
774 the channel layout of the output will be set accordingly and the channels
775 will be reordered as necessary. If the channel layouts of the inputs are not
776 disjoint, the output will have all the channels of the first input then all
777 the channels of the second input, in that order, and the channel layout of
778 the output will be the default value corresponding to the total number of
779 channels.
780
781 For example, if the first input is in 2.1 (FL+FR+LF) and the second input
782 is FC+BL+BR, then the output will be in 5.1, with the channels in the
783 following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
784 first input, b1 is the first channel of the second input).
785
786 On the other hand, if both input are in stereo, the output channels will be
787 in the default order: a1, a2, b1, b2, and the channel layout will be
788 arbitrarily set to 4.0, which may or may not be the expected value.
789
790 All inputs must have the same sample rate, and format.
791
792 If inputs do not have the same duration, the output will stop with the
793 shortest.
794
795 @subsection Examples
796
797 @itemize
798 @item
799 Merge two mono files into a stereo stream:
800 @example
801 amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
802 @end example
803
804 @item
805 Multiple merges:
806 @example
807 ffmpeg -f lavfi -i "
808 amovie=input.mkv:si=0 [a0];
809 amovie=input.mkv:si=1 [a1];
810 amovie=input.mkv:si=2 [a2];
811 amovie=input.mkv:si=3 [a3];
812 amovie=input.mkv:si=4 [a4];
813 amovie=input.mkv:si=5 [a5];
814 [a0][a1][a2][a3][a4][a5] amerge=inputs=6" -c:a pcm_s16le output.mkv
815 @end example
816 @end itemize
817
818 @section amix
819
820 Mixes multiple audio inputs into a single output.
821
822 For example
823 @example
824 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
825 @end example
826 will mix 3 input audio streams to a single output with the same duration as the
827 first input and a dropout transition time of 3 seconds.
828
829 The filter accepts the following named parameters:
830 @table @option
831
832 @item inputs
833 Number of inputs. If unspecified, it defaults to 2.
834
835 @item duration
836 How to determine the end-of-stream.
837 @table @option
838
839 @item longest
840 Duration of longest input. (default)
841
842 @item shortest
843 Duration of shortest input.
844
845 @item first
846 Duration of first input.
847
848 @end table
849
850 @item dropout_transition
851 Transition time, in seconds, for volume renormalization when an input
852 stream ends. The default value is 2 seconds.
853
854 @end table
855
856 @section anull
857
858 Pass the audio source unchanged to the output.
859
860 @section apad
861
862 Pad the end of a audio stream with silence, this can be used together with
863 -shortest to extend audio streams to the same length as the video stream.
864
865 @anchor{aresample}
866 @section aresample
867
868 Resample the input audio to the specified parameters, using the
869 libswresample library. If none are specified then the filter will
870 automatically convert between its input and output.
871
872 This filter is also able to stretch/squeeze the audio data to make it match
873 the timestamps or to inject silence / cut out audio to make it match the
874 timestamps, do a combination of both or do neither.
875
876 The filter accepts the syntax
877 [@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
878 expresses a sample rate and @var{resampler_options} is a list of
879 @var{key}=@var{value} pairs, separated by ":". See the
880 ffmpeg-resampler manual for the complete list of supported options.
881
882 @subsection Examples
883
884 @itemize
885 @item
886 Resample the input audio to 44100Hz:
887 @example
888 aresample=44100
889 @end example
890
891 @item
892 Stretch/squeeze samples to the given timestamps, with a maximum of 1000
893 samples per second compensation:
894 @example
895 aresample=async=1000
896 @end example
897 @end itemize
898
899 @section asetnsamples
900
901 Set the number of samples per each output audio frame.
902
903 The last output packet may contain a different number of samples, as
904 the filter will flush all the remaining samples when the input audio
905 signal its end.
906
907 The filter accepts the following options:
908
909 @table @option
910
911 @item nb_out_samples, n
912 Set the number of frames per each output audio frame. The number is
913 intended as the number of samples @emph{per each channel}.
914 Default value is 1024.
915
916 @item pad, p
917 If set to 1, the filter will pad the last audio frame with zeroes, so
918 that the last frame will contain the same number of samples as the
919 previous ones. Default value is 1.
920 @end table
921
922 For example, to set the number of per-frame samples to 1234 and
923 disable padding for the last frame, use:
924 @example
925 asetnsamples=n=1234:p=0
926 @end example
927
928 @section ashowinfo
929
930 Show a line containing various information for each input audio frame.
931 The input audio is not modified.
932
933 The shown line contains a sequence of key/value pairs of the form
934 @var{key}:@var{value}.
935
936 A description of each shown parameter follows:
937
938 @table @option
939 @item n
940 sequential number of the input frame, starting from 0
941
942 @item pts
943 Presentation timestamp of the input frame, in time base units; the time base
944 depends on the filter input pad, and is usually 1/@var{sample_rate}.
945
946 @item pts_time
947 presentation timestamp of the input frame in seconds
948
949 @item pos
950 position of the frame in the input stream, -1 if this information in
951 unavailable and/or meaningless (for example in case of synthetic audio)
952
953 @item fmt
954 sample format
955
956 @item chlayout
957 channel layout
958
959 @item rate
960 sample rate for the audio frame
961
962 @item nb_samples
963 number of samples (per channel) in the frame
964
965 @item checksum
966 Adler-32 checksum (printed in hexadecimal) of the audio data. For planar audio
967 the data is treated as if all the planes were concatenated.
968
969 @item plane_checksums
970 A list of Adler-32 checksums for each data plane.
971 @end table
972
973 @section asplit
974
975 Split input audio into several identical outputs.
976
977 The filter accepts a single parameter which specifies the number of outputs. If
978 unspecified, it defaults to 2.
979
980 For example:
981 @example
982 [in] asplit [out0][out1]
983 @end example
984
985 will create two separate outputs from the same input.
986
987 To create 3 or more outputs, you need to specify the number of
988 outputs, like in:
989 @example
990 [in] asplit=3 [out0][out1][out2]
991 @end example
992
993 @example
994 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
995 @end example
996 will create 5 copies of the input audio.
997
998
999 @section astreamsync
1000
1001 Forward two audio streams and control the order the buffers are forwarded.
1002
1003 The filter accepts the following options:
1004
1005 @table @option
1006 @item expr, e
1007 Set the expression deciding which stream should be
1008 forwarded next: if the result is negative, the first stream is forwarded; if
1009 the result is positive or zero, the second stream is forwarded. It can use
1010 the following variables:
1011
1012 @table @var
1013 @item b1 b2
1014 number of buffers forwarded so far on each stream
1015 @item s1 s2
1016 number of samples forwarded so far on each stream
1017 @item t1 t2
1018 current timestamp of each stream
1019 @end table
1020
1021 The default value is @code{t1-t2}, which means to always forward the stream
1022 that has a smaller timestamp.
1023 @end table
1024
1025 @subsection Examples
1026
1027 Stress-test @code{amerge} by randomly sending buffers on the wrong
1028 input, while avoiding too much of a desynchronization:
1029 @example
1030 amovie=file.ogg [a] ; amovie=file.mp3 [b] ;
1031 [a] [b] astreamsync=(2*random(1))-1+tanh(5*(t1-t2)) [a2] [b2] ;
1032 [a2] [b2] amerge
1033 @end example
1034
1035 @section atempo
1036
1037 Adjust audio tempo.
1038
1039 The filter accepts exactly one parameter, the audio tempo. If not
1040 specified then the filter will assume nominal 1.0 tempo. Tempo must
1041 be in the [0.5, 2.0] range.
1042
1043 @subsection Examples
1044
1045 @itemize
1046 @item
1047 Slow down audio to 80% tempo:
1048 @example
1049 atempo=0.8
1050 @end example
1051
1052 @item
1053 To speed up audio to 125% tempo:
1054 @example
1055 atempo=1.25
1056 @end example
1057 @end itemize
1058
1059 @section earwax
1060
1061 Make audio easier to listen to on headphones.
1062
1063 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
1064 so that when listened to on headphones the stereo image is moved from
1065 inside your head (standard for headphones) to outside and in front of
1066 the listener (standard for speakers).
1067
1068 Ported from SoX.
1069
1070 @section pan
1071
1072 Mix channels with specific gain levels. The filter accepts the output
1073 channel layout followed by a set of channels definitions.
1074
1075 This filter is also designed to remap efficiently the channels of an audio
1076 stream.
1077
1078 The filter accepts parameters of the form:
1079 "@var{l}:@var{outdef}:@var{outdef}:..."
1080
1081 @table @option
1082 @item l
1083 output channel layout or number of channels
1084
1085 @item outdef
1086 output channel specification, of the form:
1087 "@var{out_name}=[@var{gain}*]@var{in_name}[+[@var{gain}*]@var{in_name}...]"
1088
1089 @item out_name
1090 output channel to define, either a channel name (FL, FR, etc.) or a channel
1091 number (c0, c1, etc.)
1092
1093 @item gain
1094 multiplicative coefficient for the channel, 1 leaving the volume unchanged
1095
1096 @item in_name
1097 input channel to use, see out_name for details; it is not possible to mix
1098 named and numbered input channels
1099 @end table
1100
1101 If the `=' in a channel specification is replaced by `<', then the gains for
1102 that specification will be renormalized so that the total is 1, thus
1103 avoiding clipping noise.
1104
1105 @subsection Mixing examples
1106
1107 For example, if you want to down-mix from stereo to mono, but with a bigger
1108 factor for the left channel:
1109 @example
1110 pan=1:c0=0.9*c0+0.1*c1
1111 @end example
1112
1113 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
1114 7-channels surround:
1115 @example
1116 pan=stereo: FL < FL + 0.5*FC + 0.6*BL + 0.6*SL : FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
1117 @end example
1118
1119 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
1120 that should be preferred (see "-ac" option) unless you have very specific
1121 needs.
1122
1123 @subsection Remapping examples
1124
1125 The channel remapping will be effective if, and only if:
1126
1127 @itemize
1128 @item gain coefficients are zeroes or ones,
1129 @item only one input per channel output,
1130 @end itemize
1131
1132 If all these conditions are satisfied, the filter will notify the user ("Pure
1133 channel mapping detected"), and use an optimized and lossless method to do the
1134 remapping.
1135
1136 For example, if you have a 5.1 source and want a stereo audio stream by
1137 dropping the extra channels:
1138 @example
1139 pan="stereo: c0=FL : c1=FR"
1140 @end example
1141
1142 Given the same source, you can also switch front left and front right channels
1143 and keep the input channel layout:
1144 @example
1145 pan="5.1: c0=c1 : c1=c0 : c2=c2 : c3=c3 : c4=c4 : c5=c5"
1146 @end example
1147
1148 If the input is a stereo audio stream, you can mute the front left channel (and
1149 still keep the stereo channel layout) with:
1150 @example
1151 pan="stereo:c1=c1"
1152 @end example
1153
1154 Still with a stereo audio stream input, you can copy the right channel in both
1155 front left and right:
1156 @example
1157 pan="stereo: c0=FR : c1=FR"
1158 @end example
1159
1160 @section silencedetect
1161
1162 Detect silence in an audio stream.
1163
1164 This filter logs a message when it detects that the input audio volume is less
1165 or equal to a noise tolerance value for a duration greater or equal to the
1166 minimum detected noise duration.
1167
1168 The printed times and duration are expressed in seconds.
1169
1170 The filter accepts the following options:
1171
1172 @table @option
1173 @item duration, d
1174 Set silence duration until notification (default is 2 seconds).
1175
1176 @item noise, n
1177 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
1178 specified value) or amplitude ratio. Default is -60dB, or 0.001.
1179 @end table
1180
1181 @subsection Examples
1182
1183 @itemize
1184 @item
1185 Detect 5 seconds of silence with -50dB noise tolerance:
1186 @example
1187 silencedetect=n=-50dB:d=5
1188 @end example
1189
1190 @item
1191 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
1192 tolerance in @file{silence.mp3}:
1193 @example
1194 ffmpeg -f lavfi -i amovie=silence.mp3,silencedetect=noise=0.0001 -f null -
1195 @end example
1196 @end itemize
1197
1198 @section asyncts
1199 Synchronize audio data with timestamps by squeezing/stretching it and/or
1200 dropping samples/adding silence when needed.
1201
1202 This filter is not built by default, please use @ref{aresample} to do squeezing/stretching.
1203
1204 The filter accepts the following named parameters:
1205 @table @option
1206
1207 @item compensate
1208 Enable stretching/squeezing the data to make it match the timestamps. Disabled
1209 by default. When disabled, time gaps are covered with silence.
1210
1211 @item min_delta
1212 Minimum difference between timestamps and audio data (in seconds) to trigger
1213 adding/dropping samples. Default value is 0.1. If you get non-perfect sync with
1214 this filter, try setting this parameter to 0.
1215
1216 @item max_comp
1217 Maximum compensation in samples per second. Relevant only with compensate=1.
1218 Default value 500.
1219
1220 @item first_pts
1221 Assume the first pts should be this value. The time base is 1 / sample rate.
1222 This allows for padding/trimming at the start of stream. By default, no
1223 assumption is made about the first frame's expected pts, so no padding or
1224 trimming is done. For example, this could be set to 0 to pad the beginning with
1225 silence if an audio stream starts after the video stream or to trim any samples
1226 with a negative pts due to encoder delay.
1227
1228 @end table
1229
1230 @section channelsplit
1231 Split each channel in input audio stream into a separate output stream.
1232
1233 This filter accepts the following named parameters:
1234 @table @option
1235 @item channel_layout
1236 Channel layout of the input stream. Default is "stereo".
1237 @end table
1238
1239 For example, assuming a stereo input MP3 file
1240 @example
1241 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
1242 @end example
1243 will create an output Matroska file with two audio streams, one containing only
1244 the left channel and the other the right channel.
1245
1246 To split a 5.1 WAV file into per-channel files
1247 @example
1248 ffmpeg -i in.wav -filter_complex
1249 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
1250 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
1251 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
1252 side_right.wav
1253 @end example
1254
1255 @section channelmap
1256 Remap input channels to new locations.
1257
1258 This filter accepts the following named parameters:
1259 @table @option
1260 @item channel_layout
1261 Channel layout of the output stream.
1262
1263 @item map
1264 Map channels from input to output. The argument is a '|'-separated list of
1265 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
1266 @var{in_channel} form. @var{in_channel} can be either the name of the input
1267 channel (e.g. FL for front left) or its index in the input channel layout.
1268 @var{out_channel} is the name of the output channel or its index in the output
1269 channel layout. If @var{out_channel} is not given then it is implicitly an
1270 index, starting with zero and increasing by one for each mapping.
1271 @end table
1272
1273 If no mapping is present, the filter will implicitly map input channels to
1274 output channels preserving index.
1275
1276 For example, assuming a 5.1+downmix input MOV file
1277 @example
1278 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
1279 @end example
1280 will create an output WAV file tagged as stereo from the downmix channels of
1281 the input.
1282
1283 To fix a 5.1 WAV improperly encoded in AAC's native channel order
1284 @example
1285 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:channel_layout=5.1' out.wav
1286 @end example
1287
1288 @section join
1289 Join multiple input streams into one multi-channel stream.
1290
1291 The filter accepts the following named parameters:
1292 @table @option
1293
1294 @item inputs
1295 Number of input streams. Defaults to 2.
1296
1297 @item channel_layout
1298 Desired output channel layout. Defaults to stereo.
1299
1300 @item map
1301 Map channels from inputs to output. The argument is a '|'-separated list of
1302 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
1303 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
1304 can be either the name of the input channel (e.g. FL for front left) or its
1305 index in the specified input stream. @var{out_channel} is the name of the output
1306 channel.
1307 @end table
1308
1309 The filter will attempt to guess the mappings when those are not specified
1310 explicitly. It does so by first trying to find an unused matching input channel
1311 and if that fails it picks the first unused input channel.
1312
1313 E.g. to join 3 inputs (with properly set channel layouts)
1314 @example
1315 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
1316 @end example
1317
1318 To build a 5.1 output from 6 single-channel streams:
1319 @example
1320 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
1321 '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'
1322 out
1323 @end example
1324
1325 @section resample
1326 Convert the audio sample format, sample rate and channel layout. This filter is
1327 not meant to be used directly.
1328
1329 @section volume
1330
1331 Adjust the input audio volume.
1332
1333 The filter accepts the following named parameters. If the key of the
1334 first options is omitted, the arguments are interpreted according to
1335 the following syntax:
1336 @example
1337 volume=@var{volume}:@var{precision}
1338 @end example
1339
1340 @table @option
1341
1342 @item volume
1343 Expresses how the audio volume will be increased or decreased.
1344
1345 Output values are clipped to the maximum value.
1346
1347 The output audio volume is given by the relation:
1348 @example
1349 @var{output_volume} = @var{volume} * @var{input_volume}
1350 @end example
1351
1352 Default value for @var{volume} is 1.0.
1353
1354 @item precision
1355 Set the mathematical precision.
1356
1357 This determines which input sample formats will be allowed, which affects the
1358 precision of the volume scaling.
1359
1360 @table @option
1361 @item fixed
1362 8-bit fixed-point; limits input sample format to U8, S16, and S32.
1363 @item float
1364 32-bit floating-point; limits input sample format to FLT. (default)
1365 @item double
1366 64-bit floating-point; limits input sample format to DBL.
1367 @end table
1368 @end table
1369
1370 @subsection Examples
1371
1372 @itemize
1373 @item
1374 Halve the input audio volume:
1375 @example
1376 volume=volume=0.5
1377 volume=volume=1/2
1378 volume=volume=-6.0206dB
1379 @end example
1380
1381 In all the above example the named key for @option{volume} can be
1382 omitted, for example like in:
1383 @example
1384 volume=0.5
1385 @end example
1386
1387 @item
1388 Increase input audio power by 6 decibels using fixed-point precision:
1389 @example
1390 volume=volume=6dB:precision=fixed
1391 @end example
1392 @end itemize
1393
1394 @section volumedetect
1395
1396 Detect the volume of the input video.
1397
1398 The filter has no parameters. The input is not modified. Statistics about
1399 the volume will be printed in the log when the input stream end is reached.
1400
1401 In particular it will show the mean volume (root mean square), maximum
1402 volume (on a per-sample basis), and the beginning of an histogram of the
1403 registered volume values (from the maximum value to a cumulated 1/1000 of
1404 the samples).
1405
1406 All volumes are in decibels relative to the maximum PCM value.
1407
1408 @subsection Examples
1409
1410 Here is an excerpt of the output:
1411 @example
1412 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
1413 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
1414 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
1415 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
1416 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
1417 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
1418 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
1419 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
1420 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
1421 @end example
1422
1423 It means that:
1424 @itemize
1425 @item
1426 The mean square energy is approximately -27 dB, or 10^-2.7.
1427 @item
1428 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
1429 @item
1430 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
1431 @end itemize
1432
1433 In other words, raising the volume by +4 dB does not cause any clipping,
1434 raising it by +5 dB causes clipping for 6 samples, etc.
1435
1436 @c man end AUDIO FILTERS
1437
1438 @chapter Audio Sources
1439 @c man begin AUDIO SOURCES
1440
1441 Below is a description of the currently available audio sources.
1442
1443 @section abuffer
1444
1445 Buffer audio frames, and make them available to the filter chain.
1446
1447 This source is mainly intended for a programmatic use, in particular
1448 through the interface defined in @file{libavfilter/asrc_abuffer.h}.
1449
1450 It accepts the following named parameters:
1451
1452 @table @option
1453
1454 @item time_base
1455 Timebase which will be used for timestamps of submitted frames. It must be
1456 either a floating-point number or in @var{numerator}/@var{denominator} form.
1457
1458 @item sample_rate
1459 The sample rate of the incoming audio buffers.
1460
1461 @item sample_fmt
1462 The sample format of the incoming audio buffers.
1463 Either a sample format name or its corresponging integer representation from
1464 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
1465
1466 @item channel_layout
1467 The channel layout of the incoming audio buffers.
1468 Either a channel layout name from channel_layout_map in
1469 @file{libavutil/channel_layout.c} or its corresponding integer representation
1470 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
1471
1472 @item channels
1473 The number of channels of the incoming audio buffers.
1474 If both @var{channels} and @var{channel_layout} are specified, then they
1475 must be consistent.
1476
1477 @end table
1478
1479 @subsection Examples
1480
1481 @example
1482 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
1483 @end example
1484
1485 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
1486 Since the sample format with name "s16p" corresponds to the number
1487 6 and the "stereo" channel layout corresponds to the value 0x3, this is
1488 equivalent to:
1489 @example
1490 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
1491 @end example
1492
1493 @section aevalsrc
1494
1495 Generate an audio signal specified by an expression.
1496
1497 This source accepts in input one or more expressions (one for each
1498 channel), which are evaluated and used to generate a corresponding
1499 audio signal.
1500
1501 This source accepts the following options:
1502
1503 @table @option
1504 @item exprs
1505 Set the '|'-separated expressions list for each separate channel. In case the
1506 @option{channel_layout} option is not specified, the selected channel layout
1507 depends on the number of provided expressions.
1508
1509 @item channel_layout, c
1510 Set the channel layout. The number of channels in the specified layout
1511 must be equal to the number of specified expressions.
1512
1513 @item duration, d
1514 Set the minimum duration of the sourced audio. See the function
1515 @code{av_parse_time()} for the accepted format.
1516 Note that the resulting duration may be greater than the specified
1517 duration, as the generated audio is always cut at the end of a
1518 complete frame.
1519
1520 If not specified, or the expressed duration is negative, the audio is
1521 supposed to be generated forever.
1522
1523 @item nb_samples, n
1524 Set the number of samples per channel per each output frame,
1525 default to 1024.
1526
1527 @item sample_rate, s
1528 Specify the sample rate, default to 44100.
1529 @end table
1530
1531 Each expression in @var{exprs} can contain the following constants:
1532
1533 @table @option
1534 @item n
1535 number of the evaluated sample, starting from 0
1536
1537 @item t
1538 time of the evaluated sample expressed in seconds, starting from 0
1539
1540 @item s
1541 sample rate
1542
1543 @end table
1544
1545 @subsection Examples
1546
1547 @itemize
1548 @item
1549 Generate silence:
1550 @example
1551 aevalsrc=0
1552 @end example
1553
1554 @item
1555 Generate a sin signal with frequency of 440 Hz, set sample rate to
1556 8000 Hz:
1557 @example
1558 aevalsrc="sin(440*2*PI*t):s=8000"
1559 @end example
1560
1561 @item
1562 Generate a two channels signal, specify the channel layout (Front
1563 Center + Back Center) explicitly:
1564 @example
1565 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
1566 @end example
1567
1568 @item
1569 Generate white noise:
1570 @example
1571 aevalsrc="-2+random(0)"
1572 @end example
1573
1574 @item
1575 Generate an amplitude modulated signal:
1576 @example
1577 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
1578 @end example
1579
1580 @item
1581 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
1582 @example
1583 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
1584 @end example
1585
1586 @end itemize
1587
1588 @section anullsrc
1589
1590 Null audio source, return unprocessed audio frames. It is mainly useful
1591 as a template and to be employed in analysis / debugging tools, or as
1592 the source for filters which ignore the input data (for example the sox
1593 synth filter).
1594
1595 This source accepts the following options:
1596
1597 @table @option
1598
1599 @item channel_layout, cl
1600
1601 Specify the channel layout, and can be either an integer or a string
1602 representing a channel layout. The default value of @var{channel_layout}
1603 is "stereo".
1604
1605 Check the channel_layout_map definition in
1606 @file{libavutil/channel_layout.c} for the mapping between strings and
1607 channel layout values.
1608
1609 @item sample_rate, r
1610 Specify the sample rate, and defaults to 44100.
1611
1612 @item nb_samples, n
1613 Set the number of samples per requested frames.
1614
1615 @end table
1616
1617 @subsection Examples
1618
1619 @itemize
1620 @item
1621 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
1622 @example
1623 anullsrc=r=48000:cl=4
1624 @end example
1625
1626 @item
1627 Do the same operation with a more obvious syntax:
1628 @example
1629 anullsrc=r=48000:cl=mono
1630 @end example
1631 @end itemize
1632
1633 @section abuffer
1634 Buffer audio frames, and make them available to the filter chain.
1635
1636 This source is not intended to be part of user-supplied graph descriptions but
1637 for insertion by calling programs through the interface defined in
1638 @file{libavfilter/buffersrc.h}.
1639
1640 It accepts the following named parameters:
1641 @table @option
1642
1643 @item time_base
1644 Timebase which will be used for timestamps of submitted frames. It must be
1645 either a floating-point number or in @var{numerator}/@var{denominator} form.
1646
1647 @item sample_rate
1648 Audio sample rate.
1649
1650 @item sample_fmt
1651 Name of the sample format, as returned by @code{av_get_sample_fmt_name()}.
1652
1653 @item channel_layout
1654 Channel layout of the audio data, in the form that can be accepted by
1655 @code{av_get_channel_layout()}.
1656 @end table
1657
1658 All the parameters need to be explicitly defined.
1659
1660 @section flite
1661
1662 Synthesize a voice utterance using the libflite library.
1663
1664 To enable compilation of this filter you need to configure FFmpeg with
1665 @code{--enable-libflite}.
1666
1667 Note that the flite library is not thread-safe.
1668
1669 The filter accepts the following options:
1670
1671 @table @option
1672
1673 @item list_voices
1674 If set to 1, list the names of the available voices and exit
1675 immediately. Default value is 0.
1676
1677 @item nb_samples, n
1678 Set the maximum number of samples per frame. Default value is 512.
1679
1680 @item textfile
1681 Set the filename containing the text to speak.
1682
1683 @item text
1684 Set the text to speak.
1685
1686 @item voice, v
1687 Set the voice to use for the speech synthesis. Default value is
1688 @code{kal}. See also the @var{list_voices} option.
1689 @end table
1690
1691 @subsection Examples
1692
1693 @itemize
1694 @item
1695 Read from file @file{speech.txt}, and synthetize the text using the
1696 standard flite voice:
1697 @example
1698 flite=textfile=speech.txt
1699 @end example
1700
1701 @item
1702 Read the specified text selecting the @code{slt} voice:
1703 @example
1704 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
1705 @end example
1706
1707 @item
1708 Input text to ffmpeg:
1709 @example
1710 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
1711 @end example
1712
1713 @item
1714 Make @file{ffplay} speak the specified text, using @code{flite} and
1715 the @code{lavfi} device:
1716 @example
1717 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
1718 @end example
1719 @end itemize
1720
1721 For more information about libflite, check:
1722 @url{http://www.speech.cs.cmu.edu/flite/}
1723
1724 @section sine
1725
1726 Generate an audio signal made of a sine wave with amplitude 1/8.
1727
1728 The audio signal is bit-exact.
1729
1730 The filter accepts the following options:
1731
1732 @table @option
1733
1734 @item frequency, f
1735 Set the carrier frequency. Default is 440 Hz.
1736
1737 @item beep_factor, b
1738 Enable a periodic beep every second with frequency @var{beep_factor} times
1739 the carrier frequency. Default is 0, meaning the beep is disabled.
1740
1741 @item sample_rate, s
1742 Specify the sample rate, default is 44100.
1743
1744 @item duration, d
1745 Specify the duration of the generated audio stream.
1746
1747 @item samples_per_frame
1748 Set the number of samples per output frame, default is 1024.
1749 @end table
1750
1751 @subsection Examples
1752
1753 @itemize
1754
1755 @item
1756 Generate a simple 440 Hz sine wave:
1757 @example
1758 sine
1759 @end example
1760
1761 @item
1762 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
1763 @example
1764 sine=220:4:d=5
1765 sine=f=220:b=4:d=5
1766 sine=frequency=220:beep_factor=4:duration=5
1767 @end example
1768
1769 @end itemize
1770
1771 @c man end AUDIO SOURCES
1772
1773 @chapter Audio Sinks
1774 @c man begin AUDIO SINKS
1775
1776 Below is a description of the currently available audio sinks.
1777
1778 @section abuffersink
1779
1780 Buffer audio frames, and make them available to the end of filter chain.
1781
1782 This sink is mainly intended for programmatic use, in particular
1783 through the interface defined in @file{libavfilter/buffersink.h}.
1784
1785 It requires a pointer to an AVABufferSinkContext structure, which
1786 defines the incoming buffers' formats, to be passed as the opaque
1787 parameter to @code{avfilter_init_filter} for initialization.
1788
1789 @section anullsink
1790
1791 Null audio sink, do absolutely nothing with the input audio. It is
1792 mainly useful as a template and to be employed in analysis / debugging
1793 tools.
1794
1795 @section abuffersink
1796 This sink is intended for programmatic use. Frames that arrive on this sink can
1797 be retrieved by the calling program using the interface defined in
1798 @file{libavfilter/buffersink.h}.
1799
1800 This filter accepts no parameters.
1801
1802 @c man end AUDIO SINKS
1803
1804 @chapter Video Filters
1805 @c man begin VIDEO FILTERS
1806
1807 When you configure your FFmpeg build, you can disable any of the
1808 existing filters using @code{--disable-filters}.
1809 The configure output will show the video filters included in your
1810 build.
1811
1812 Below is a description of the currently available video filters.
1813
1814 @section alphaextract
1815
1816 Extract the alpha component from the input as a grayscale video. This
1817 is especially useful with the @var{alphamerge} filter.
1818
1819 @section alphamerge
1820
1821 Add or replace the alpha component of the primary input with the
1822 grayscale value of a second input. This is intended for use with
1823 @var{alphaextract} to allow the transmission or storage of frame
1824 sequences that have alpha in a format that doesn't support an alpha
1825 channel.
1826
1827 For example, to reconstruct full frames from a normal YUV-encoded video
1828 and a separate video created with @var{alphaextract}, you might use:
1829 @example
1830 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
1831 @end example
1832
1833 Since this filter is designed for reconstruction, it operates on frame
1834 sequences without considering timestamps, and terminates when either
1835 input reaches end of stream. This will cause problems if your encoding
1836 pipeline drops frames. If you're trying to apply an image as an
1837 overlay to a video stream, consider the @var{overlay} filter instead.
1838
1839 @section ass
1840
1841 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
1842 and libavformat to work. On the other hand, it is limited to ASS (Advanced
1843 Substation Alpha) subtitles files.
1844
1845 @section bbox
1846
1847 Compute the bounding box for the non-black pixels in the input frame
1848 luminance plane.
1849
1850 This filter computes the bounding box containing all the pixels with a
1851 luminance value greater than the minimum allowed value.
1852 The parameters describing the bounding box are printed on the filter
1853 log.
1854
1855 @section blackdetect
1856
1857 Detect video intervals that are (almost) completely black. Can be
1858 useful to detect chapter transitions, commercials, or invalid
1859 recordings. Output lines contains the time for the start, end and
1860 duration of the detected black interval expressed in seconds.
1861
1862 In order to display the output lines, you need to set the loglevel at
1863 least to the AV_LOG_INFO value.
1864
1865 The filter accepts the following options:
1866
1867 @table @option
1868 @item black_min_duration, d
1869 Set the minimum detected black duration expressed in seconds. It must
1870 be a non-negative floating point number.
1871
1872 Default value is 2.0.
1873
1874 @item picture_black_ratio_th, pic_th
1875 Set the threshold for considering a picture "black".
1876 Express the minimum value for the ratio:
1877 @example
1878 @var{nb_black_pixels} / @var{nb_pixels}
1879 @end example
1880
1881 for which a picture is considered black.
1882 Default value is 0.98.
1883
1884 @item pixel_black_th, pix_th
1885 Set the threshold for considering a pixel "black".
1886
1887 The threshold expresses the maximum pixel luminance value for which a
1888 pixel is considered "black". The provided value is scaled according to
1889 the following equation:
1890 @example
1891 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
1892 @end example
1893
1894 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
1895 the input video format, the range is [0-255] for YUV full-range
1896 formats and [16-235] for YUV non full-range formats.
1897
1898 Default value is 0.10.
1899 @end table
1900
1901 The following example sets the maximum pixel threshold to the minimum
1902 value, and detects only black intervals of 2 or more seconds:
1903 @example
1904 blackdetect=d=2:pix_th=0.00
1905 @end example
1906
1907 @section blackframe
1908
1909 Detect frames that are (almost) completely black. Can be useful to
1910 detect chapter transitions or commercials. Output lines consist of
1911 the frame number of the detected frame, the percentage of blackness,
1912 the position in the file if known or -1 and the timestamp in seconds.
1913
1914 In order to display the output lines, you need to set the loglevel at
1915 least to the AV_LOG_INFO value.
1916
1917 The filter accepts parameters as a list of @var{key}=@var{value}
1918 pairs, separated by ":". If the key of the first options is omitted,
1919 the arguments are interpreted according to the syntax
1920 blackframe[=@var{amount}[:@var{threshold}]].
1921
1922 The filter accepts the following options:
1923
1924 @table @option
1925
1926 @item amount
1927 The percentage of the pixels that have to be below the threshold, defaults to
1928 98.
1929
1930 @item threshold
1931 Threshold below which a pixel value is considered black, defaults to 32.
1932
1933 @end table
1934
1935 @section blend
1936
1937 Blend two video frames into each other.
1938
1939 It takes two input streams and outputs one stream, the first input is the
1940 "top" layer and second input is "bottom" layer.
1941 Output terminates when shortest input terminates.
1942
1943 A description of the accepted options follows.
1944
1945 @table @option
1946 @item c0_mode
1947 @item c1_mode
1948 @item c2_mode
1949 @item c3_mode
1950 @item all_mode
1951 Set blend mode for specific pixel component or all pixel components in case
1952 of @var{all_mode}. Default value is @code{normal}.
1953
1954 Available values for component modes are:
1955 @table @samp
1956 @item addition
1957 @item and
1958 @item average
1959 @item burn
1960 @item darken
1961 @item difference
1962 @item divide
1963 @item dodge
1964 @item exclusion
1965 @item hardlight
1966 @item lighten
1967 @item multiply
1968 @item negation
1969 @item normal
1970 @item or
1971 @item overlay
1972 @item phoenix
1973 @item pinlight
1974 @item reflect
1975 @item screen
1976 @item softlight
1977 @item subtract
1978 @item vividlight
1979 @item xor
1980 @end table
1981
1982 @item c0_opacity
1983 @item c1_opacity
1984 @item c2_opacity
1985 @item c3_opacity
1986 @item all_opacity
1987 Set blend opacity for specific pixel component or all pixel components in case
1988 of @var{all_opacity}. Only used in combination with pixel component blend modes.
1989
1990 @item c0_expr
1991 @item c1_expr
1992 @item c2_expr
1993 @item c3_expr
1994 @item all_expr
1995 Set blend expression for specific pixel component or all pixel components in case
1996 of @var{all_expr}. Note that related mode options will be ignored if those are set.
1997
1998 The expressions can use the following variables:
1999
2000 @table @option
2001 @item N
2002 The sequential number of the filtered frame, starting from @code{0}.
2003
2004 @item X
2005 @item Y
2006 the coordinates of the current sample
2007
2008 @item W
2009 @item H
2010 the width and height of currently filtered plane
2011
2012 @item SW
2013 @item SH
2014 Width and height scale depending on the currently filtered plane. It is the
2015 ratio between the corresponding luma plane number of pixels and the current
2016 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
2017 @code{0.5,0.5} for chroma planes.
2018
2019 @item T
2020 Time of the current frame, expressed in seconds.
2021
2022 @item TOP, A
2023 Value of pixel component at current location for first video frame (top layer).
2024
2025 @item BOTTOM, B
2026 Value of pixel component at current location for second video frame (bottom layer).
2027 @end table
2028 @end table
2029
2030 @subsection Examples
2031
2032 @itemize
2033 @item
2034 Apply transition from bottom layer to top layer in first 10 seconds:
2035 @example
2036 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
2037 @end example
2038
2039 @item
2040 Apply 1x1 checkerboard effect:
2041 @example
2042 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
2043 @end example
2044 @end itemize
2045
2046 @section boxblur
2047
2048 Apply boxblur algorithm to the input video.
2049
2050 The filter accepts parameters as a list of @var{key}=@var{value}
2051 pairs, separated by ":". If the key of the first options is omitted,
2052 the arguments are interpreted according to the syntax
2053 @option{luma_radius}:@option{luma_power}:@option{chroma_radius}:@option{chroma_power}:@option{alpha_radius}:@option{alpha_power}.
2054
2055 This filter accepts the following options:
2056
2057 @table @option
2058
2059 @item luma_radius
2060 @item luma_power
2061 @item chroma_radius
2062 @item chroma_power
2063 @item alpha_radius
2064 @item alpha_power
2065
2066 @end table
2067
2068 A description of the accepted options follows.
2069
2070 @table @option
2071 @item luma_radius, lr
2072 @item chroma_radius, cr
2073 @item alpha_radius, ar
2074 Set an expression for the box radius in pixels used for blurring the
2075 corresponding input plane.
2076
2077 The radius value must be a non-negative number, and must not be
2078 greater than the value of the expression @code{min(w,h)/2} for the
2079 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
2080 planes.
2081
2082 Default value for @option{luma_radius} is "2". If not specified,
2083 @option{chroma_radius} and @option{alpha_radius} default to the
2084 corresponding value set for @option{luma_radius}.
2085
2086 The expressions can contain the following constants:
2087 @table @option
2088 @item w, h
2089 the input width and height in pixels
2090
2091 @item cw, ch
2092 the input chroma image width and height in pixels
2093
2094 @item hsub, vsub
2095 horizontal and vertical chroma subsample values. For example for the
2096 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
2097 @end table
2098
2099 @item luma_power, lp
2100 @item chroma_power, cp
2101 @item alpha_power, ap
2102 Specify how many times the boxblur filter is applied to the
2103 corresponding plane.
2104
2105 Default value for @option{luma_power} is 2. If not specified,
2106 @option{chroma_power} and @option{alpha_power} default to the
2107 corresponding value set for @option{luma_power}.
2108
2109 A value of 0 will disable the effect.
2110 @end table
2111
2112 @subsection Examples
2113
2114 @itemize
2115 @item
2116 Apply a boxblur filter with luma, chroma, and alpha radius
2117 set to 2:
2118 @example
2119 boxblur=luma_radius=2:luma_power=1
2120 boxblur=2:1
2121 @end example
2122
2123 @item
2124 Set luma radius to 2, alpha and chroma radius to 0:
2125 @example
2126 boxblur=2:1:cr=0:ar=0
2127 @end example
2128
2129 @item
2130 Set luma and chroma radius to a fraction of the video dimension:
2131 @example
2132 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
2133 @end example
2134 @end itemize
2135
2136 @section colormatrix
2137
2138 Convert color matrix.
2139
2140 The filter accepts the following options:
2141
2142 @table @option
2143 @item src
2144 @item dst
2145 Specify the source and destination color matrix. Both values must be
2146 specified.
2147
2148 The accepted values are:
2149 @table @samp
2150 @item bt709
2151 BT.709
2152
2153 @item bt601
2154 BT.601
2155
2156 @item smpte240m
2157 SMPTE-240M
2158
2159 @item fcc
2160 FCC
2161 @end table
2162 @end table
2163
2164 For example to convert from BT.601 to SMPTE-240M, use the command:
2165 @example
2166 colormatrix=bt601:smpte240m
2167 @end example
2168
2169 @section copy
2170
2171 Copy the input source unchanged to the output. Mainly useful for
2172 testing purposes.
2173
2174 @section crop
2175
2176 Crop the input video to given dimensions.
2177
2178 This filter accepts a list of @var{key}=@var{value} pairs as argument,
2179 separated by ':'. If the key of the first options is omitted, the
2180 arguments are interpreted according to the syntax
2181 @var{out_w}:@var{out_h}:@var{x}:@var{y}:@var{keep_aspect}.
2182
2183 A description of the accepted options follows:
2184 @table @option
2185 @item w, out_w
2186 Width of the output video. It defaults to @code{iw}.
2187 This expression is evaluated only once during the filter
2188 configuration.
2189
2190 @item h, out_h
2191 Height of the output video. It defaults to @code{ih}.
2192 This expression is evaluated only once during the filter
2193 configuration.
2194
2195 @item x
2196 Horizontal position, in the input video, of the left edge of the output video.
2197 It defaults to @code{(in_w-out_w)/2}.
2198 This expression is evaluated per-frame.
2199
2200 @item y
2201 Vertical position, in the input video, of the top edge of the output video.
2202 It defaults to @code{(in_h-out_h)/2}.
2203 This expression is evaluated per-frame.
2204
2205 @item keep_aspect
2206 If set to 1 will force the output display aspect ratio
2207 to be the same of the input, by changing the output sample aspect
2208 ratio. It defaults to 0.
2209 @end table
2210
2211 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
2212 expressions containing the following constants:
2213
2214 @table @option
2215 @item x, y
2216 the computed values for @var{x} and @var{y}. They are evaluated for
2217 each new frame.
2218
2219 @item in_w, in_h
2220 the input width and height
2221
2222 @item iw, ih
2223 same as @var{in_w} and @var{in_h}
2224
2225 @item out_w, out_h
2226 the output (cropped) width and height
2227
2228 @item ow, oh
2229 same as @var{out_w} and @var{out_h}
2230
2231 @item a
2232 same as @var{iw} / @var{ih}
2233
2234 @item sar
2235 input sample aspect ratio
2236
2237 @item dar
2238 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
2239
2240 @item hsub, vsub
2241 horizontal and vertical chroma subsample values. For example for the
2242 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
2243
2244 @item n
2245 the number of input frame, starting from 0
2246
2247 @item t
2248 timestamp expressed in seconds, NAN if the input timestamp is unknown
2249
2250 @end table
2251
2252 The expression for @var{out_w} may depend on the value of @var{out_h},
2253 and the expression for @var{out_h} may depend on @var{out_w}, but they
2254 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
2255 evaluated after @var{out_w} and @var{out_h}.
2256
2257 The @var{x} and @var{y} parameters specify the expressions for the
2258 position of the top-left corner of the output (non-cropped) area. They
2259 are evaluated for each frame. If the evaluated value is not valid, it
2260 is approximated to the nearest valid value.
2261
2262 The expression for @var{x} may depend on @var{y}, and the expression
2263 for @var{y} may depend on @var{x}.
2264
2265 @subsection Examples
2266
2267 @itemize
2268 @item
2269 Crop area with size 100x100 at position (12,34).
2270 @example
2271 crop=100:100:12:34
2272 @end example
2273
2274 Using named options, the example above becomes:
2275 @example
2276 crop=w=100:h=100:x=12:y=34
2277 @end example
2278
2279 @item
2280 Crop the central input area with size 100x100:
2281 @example
2282 crop=100:100
2283 @end example
2284
2285 @item
2286 Crop the central input area with size 2/3 of the input video:
2287 @example
2288 crop=2/3*in_w:2/3*in_h
2289 @end example
2290
2291 @item
2292 Crop the input video central square:
2293 @example
2294 crop=out_w=in_h
2295 crop=in_h
2296 @end example
2297
2298 @item
2299 Delimit the rectangle with the top-left corner placed at position
2300 100:100 and the right-bottom corner corresponding to the right-bottom
2301 corner of the input image:
2302 @example
2303 crop=in_w-100:in_h-100:100:100
2304 @end example
2305
2306 @item
2307 Crop 10 pixels from the left and right borders, and 20 pixels from
2308 the top and bottom borders
2309 @example
2310 crop=in_w-2*10:in_h-2*20
2311 @end example
2312
2313 @item
2314 Keep only the bottom right quarter of the input image:
2315 @example
2316 crop=in_w/2:in_h/2:in_w/2:in_h/2
2317 @end example
2318
2319 @item
2320 Crop height for getting Greek harmony:
2321 @example
2322 crop=in_w:1/PHI*in_w
2323 @end example
2324
2325 @item
2326 Appply trembling effect:
2327 @example
2328 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)
2329 @end example
2330
2331 @item
2332 Apply erratic camera effect depending on timestamp:
2333 @example
2334 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)"
2335 @end example
2336
2337 @item
2338 Set x depending on the value of y:
2339 @example
2340 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
2341 @end example
2342 @end itemize
2343
2344 @section cropdetect
2345
2346 Auto-detect crop size.
2347
2348 Calculate necessary cropping parameters and prints the recommended
2349 parameters through the logging system. The detected dimensions
2350 correspond to the non-black area of the input video.
2351
2352 The filter accepts parameters as a list of @var{key}=@var{value}
2353 pairs, separated by ":". If the key of the first options is omitted,
2354 the arguments are interpreted according to the syntax
2355 [@option{limit}[:@option{round}[:@option{reset}]]].
2356
2357 A description of the accepted options follows.
2358
2359 @table @option
2360
2361 @item limit
2362 Set higher black value threshold, which can be optionally specified
2363 from nothing (0) to everything (255). An intensity value greater
2364 to the set value is considered non-black. Default value is 24.
2365
2366 @item round
2367 Set the value for which the width/height should be divisible by. The
2368 offset is automatically adjusted to center the video. Use 2 to get
2369 only even dimensions (needed for 4:2:2 video). 16 is best when
2370 encoding to most video codecs. Default value is 16.
2371
2372 @item reset
2373 Set the counter that determines after how many frames cropdetect will
2374 reset the previously detected largest video area and start over to
2375 detect the current optimal crop area. Default value is 0.
2376
2377 This can be useful when channel logos distort the video area. 0
2378 indicates never reset and return the largest area encountered during
2379 playback.
2380 @end table
2381
2382 @section curves
2383
2384 Apply color adjustments using curves.
2385
2386 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
2387 component (red, green and blue) has its values defined by @var{N} key points
2388 tied from each other using a smooth curve. The x-axis represents the pixel
2389 values from the input frame, and the y-axis the new pixel values to be set for
2390 the output frame.
2391
2392 By default, a component curve is defined by the two points @var{(0;0)} and
2393 @var{(1;1)}. This creates a straight line where each original pixel value is
2394 "adjusted" to its own value, which means no change to the image.
2395
2396 The filter allows you to redefine these two points and add some more. A new
2397 curve (using a natural cubic spline interpolation) will be define to pass
2398 smoothly through all these new coordinates. The new defined points needs to be
2399 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
2400 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
2401 the vector spaces, the values will be clipped accordingly.
2402
2403 If there is no key point defined in @code{x=0}, the filter will automatically
2404 insert a @var{(0;0)} point. In the same way, if there is no key point defined
2405 in @code{x=1}, the filter will automatically insert a @var{(1;1)} point.
2406
2407 The filter accepts the following options:
2408
2409 @table @option
2410 @item preset
2411 Select one of the available color presets. This option can be used in addition
2412 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
2413 options takes priority on the preset values.
2414 Available presets are:
2415 @table @samp
2416 @item none
2417 @item color_negative
2418 @item cross_process
2419 @item darker
2420 @item increase_contrast
2421 @item lighter
2422 @item linear_contrast
2423 @item medium_contrast
2424 @item negative
2425 @item strong_contrast
2426 @item vintage
2427 @end table
2428 Default is @code{none}.
2429 @item red, r
2430 Set the key points for the red component.
2431 @item green, g
2432 Set the key points for the green component.
2433 @item blue, b
2434 Set the key points for the blue component.
2435 @item all
2436 Set the key points for all components.
2437 Can be used in addition to the other key points component
2438 options. In this case, the unset component(s) will fallback on this
2439 @option{all} setting.
2440 @end table
2441
2442 To avoid some filtergraph syntax conflicts, each key points list need to be
2443 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
2444
2445 @subsection Examples
2446
2447 @itemize
2448 @item
2449 Increase slightly the middle level of blue:
2450 @example
2451 curves=blue='0.5/0.58'
2452 @end example
2453
2454 @item
2455 Vintage effect:
2456 @example
2457 curves=r='0/0.11 .42/.51 1/0.95':g='0.50/0.48':b='0/0.22 .49/.44 1/0.8'
2458 @end example
2459 Here we obtain the following coordinates for each components:
2460 @table @var
2461 @item red
2462 @code{(0;0.11) (0.42;0.51) (1;0.95)}
2463 @item green
2464 @code{(0;0) (0.50;0.48) (1;1)}
2465 @item blue
2466 @code{(0;0.22) (0.49;0.44) (1;0.80)}
2467 @end table
2468
2469 @item
2470 The previous example can also be achieved with the associated built-in preset:
2471 @example
2472 curves=preset=vintage
2473 @end example
2474
2475 @item
2476 Or simply:
2477 @example
2478 curves=vintage
2479 @end example
2480 @end itemize
2481
2482 @section decimate
2483
2484 Drop frames that do not differ greatly from the previous frame in
2485 order to reduce frame rate.
2486
2487 The main use of this filter is for very-low-bitrate encoding
2488 (e.g. streaming over dialup modem), but it could in theory be used for
2489 fixing movies that were inverse-telecined incorrectly.
2490
2491 A description of the accepted options follows.
2492
2493 @table @option
2494 @item max
2495 Set the maximum number of consecutive frames which can be dropped (if
2496 positive), or the minimum interval between dropped frames (if
2497 negative). If the value is 0, the frame is dropped unregarding the
2498 number of previous sequentially dropped frames.
2499
2500 Default value is 0.
2501
2502 @item hi
2503 @item lo
2504 @item frac
2505 Set the dropping threshold values.
2506
2507 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
2508 represent actual pixel value differences, so a threshold of 64
2509 corresponds to 1 unit of difference for each pixel, or the same spread
2510 out differently over the block.
2511
2512 A frame is a candidate for dropping if no 8x8 blocks differ by more
2513 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
2514 meaning the whole image) differ by more than a threshold of @option{lo}.
2515
2516 Default value for @option{hi} is 64*12, default value for @option{lo} is
2517 64*5, and default value for @option{frac} is 0.33.
2518 @end table
2519
2520 @section delogo
2521
2522 Suppress a TV station logo by a simple interpolation of the surrounding
2523 pixels. Just set a rectangle covering the logo and watch it disappear
2524 (and sometimes something even uglier appear - your mileage may vary).
2525
2526 This filter accepts the following options:
2527 @table @option
2528
2529 @item x, y
2530 Specify the top left corner coordinates of the logo. They must be
2531 specified.
2532
2533 @item w, h
2534 Specify the width and height of the logo to clear. They must be
2535 specified.
2536
2537 @item band, t
2538 Specify the thickness of the fuzzy edge of the rectangle (added to
2539 @var{w} and @var{h}). The default value is 4.
2540
2541 @item show
2542 When set to 1, a green rectangle is drawn on the screen to simplify
2543 finding the right @var{x}, @var{y}, @var{w}, @var{h} parameters, and
2544 @var{band} is set to 4. The default value is 0.
2545
2546 @end table
2547
2548 @subsection Examples
2549
2550 @itemize
2551 @item
2552 Set a rectangle covering the area with top left corner coordinates 0,0
2553 and size 100x77, setting a band of size 10:
2554 @example
2555 delogo=x=0:y=0:w=100:h=77:band=10
2556 @end example
2557
2558 @end itemize
2559
2560 @section deshake
2561
2562 Attempt to fix small changes in horizontal and/or vertical shift. This
2563 filter helps remove camera shake from hand-holding a camera, bumping a
2564 tripod, moving on a vehicle, etc.
2565
2566 The filter accepts the following options:
2567
2568 @table @option
2569
2570 @item x
2571 @item y
2572 @item w
2573 @item h
2574 Specify a rectangular area where to limit the search for motion
2575 vectors.
2576 If desired the search for motion vectors can be limited to a
2577 rectangular area of the frame defined by its top left corner, width
2578 and height. These parameters have the same meaning as the drawbox
2579 filter which can be used to visualise the position of the bounding
2580 box.
2581
2582 This is useful when simultaneous movement of subjects within the frame
2583 might be confused for camera motion by the motion vector search.
2584
2585 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
2586 then the full frame is used. This allows later options to be set
2587 without specifying the bounding box for the motion vector search.
2588
2589 Default - search the whole frame.
2590
2591 @item rx
2592 @item ry
2593 Specify the maximum extent of movement in x and y directions in the
2594 range 0-64 pixels. Default 16.
2595
2596 @item edge
2597 Specify how to generate pixels to fill blanks at the edge of the
2598 frame. Available values are:
2599 @table @samp
2600 @item blank, 0
2601 Fill zeroes at blank locations
2602 @item original, 1
2603 Original image at blank locations
2604 @item clamp, 2
2605 Extruded edge value at blank locations
2606 @item mirror, 3
2607 Mirrored edge at blank locations
2608 @end table
2609 Default value is @samp{mirror}.
2610
2611 @item blocksize
2612 Specify the blocksize to use for motion search. Range 4-128 pixels,
2613 default 8.
2614
2615 @item contrast
2616 Specify the contrast threshold for blocks. Only blocks with more than
2617 the specified contrast (difference between darkest and lightest
2618 pixels) will be considered. Range 1-255, default 125.
2619
2620 @item search
2621 Specify the search strategy. Available values are:
2622 @table @samp
2623 @item exhaustive, 0
2624 Set exhaustive search
2625 @item less, 1
2626 Set less exhaustive search.
2627 @end table
2628 Default value is @samp{exhaustive}.
2629
2630 @item filename
2631 If set then a detailed log of the motion search is written to the
2632 specified file.
2633
2634 @item opencl
2635 If set to 1, specify using OpenCL capabilities, only available if
2636 FFmpeg was configured with @code{--enable-opencl}. Default value is 0.
2637
2638 @end table
2639
2640 @section drawbox
2641
2642 Draw a colored box on the input image.
2643
2644 This filter accepts the following options:
2645
2646 @table @option
2647 @item x, y
2648 Specify the top left corner coordinates of the box. Default to 0.
2649
2650 @item width, w
2651 @item height, h
2652 Specify the width and height of the box, if 0 they are interpreted as
2653 the input width and height. Default to 0.
2654
2655 @item color, c
2656 Specify the color of the box to write, it can be the name of a color
2657 (case insensitive match) or a 0xRRGGBB[AA] sequence. If the special
2658 value @code{invert} is used, the box edge color is the same as the
2659 video with inverted luma.
2660
2661 @item thickness, t
2662 Set the thickness of the box edge. Default value is @code{4}.
2663 @end table
2664
2665 @subsection Examples
2666
2667 @itemize
2668 @item
2669 Draw a black box around the edge of the input image:
2670 @example
2671 drawbox
2672 @end example
2673
2674 @item
2675 Draw a box with color red and an opacity of 50%:
2676 @example
2677 drawbox=10:20:200:60:red@@0.5
2678 @end example
2679
2680 The previous example can be specified as:
2681 @example
2682 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
2683 @end example
2684
2685 @item
2686 Fill the box with pink color:
2687 @example
2688 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=max
2689 @end example
2690 @end itemize
2691
2692 @anchor{drawtext}
2693 @section drawtext
2694
2695 Draw text string or text from specified file on top of video using the
2696 libfreetype library.
2697
2698 To enable compilation of this filter you need to configure FFmpeg with
2699 @code{--enable-libfreetype}.
2700
2701 @subsection Syntax
2702
2703 The description of the accepted parameters follows.
2704
2705 @table @option
2706
2707 @item box
2708 Used to draw a box around text using background color.
2709 Value should be either 1 (enable) or 0 (disable).
2710 The default value of @var{box} is 0.
2711
2712 @item boxcolor
2713 The color to be used for drawing box around text.
2714 Either a string (e.g. "yellow") or in 0xRRGGBB[AA] format
2715 (e.g. "0xff00ff"), possibly followed by an alpha specifier.
2716 The default value of @var{boxcolor} is "white".
2717
2718 @item draw
2719 Set an expression which specifies if the text should be drawn. If the
2720 expression evaluates to 0, the text is not drawn. This is useful for
2721 specifying that the text should be drawn only when specific conditions
2722 are met.
2723
2724 Default value is "1".
2725
2726 See below for the list of accepted constants and functions.
2727
2728 @item expansion
2729 Select how the @var{text} is expanded. Can be either @code{none},
2730 @code{strftime} (deprecated) or
2731 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
2732 below for details.
2733
2734 @item fix_bounds
2735 If true, check and fix text coords to avoid clipping.
2736
2737 @item fontcolor
2738 The color to be used for drawing fonts.
2739 Either a string (e.g. "red") or in 0xRRGGBB[AA] format
2740 (e.g. "0xff000033"), possibly followed by an alpha specifier.
2741 The default value of @var{fontcolor} is "black".
2742
2743 @item fontfile
2744 The font file to be used for drawing text. Path must be included.
2745 This parameter is mandatory.
2746
2747 @item fontsize
2748 The font size to be used for drawing text.
2749 The default value of @var{fontsize} is 16.
2750
2751 @item ft_load_flags
2752 Flags to be used for loading the fonts.
2753
2754 The flags map the corresponding flags supported by libfreetype, and are
2755 a combination of the following values:
2756 @table @var
2757 @item default
2758 @item no_scale
2759 @item no_hinting
2760 @item render
2761 @item no_bitmap
2762 @item vertical_layout
2763 @item force_autohint
2764 @item crop_bitmap
2765 @item pedantic
2766 @item ignore_global_advance_width
2767 @item no_recurse
2768 @item ignore_transform
2769 @item monochrome
2770 @item linear_design
2771 @item no_autohint
2772 @item end table
2773 @end table
2774
2775 Default value is "render".
2776
2777 For more information consult the documentation for the FT_LOAD_*
2778 libfreetype flags.
2779
2780 @item shadowcolor
2781 The color to be used for drawing a shadow behind the drawn text.  It
2782 can be a color name (e.g. "yellow") or a string in the 0xRRGGBB[AA]
2783 form (e.g. "0xff00ff"), possibly followed by an alpha specifier.
2784 The default value of @var{shadowcolor} is "black".
2785
2786 @item shadowx, shadowy
2787 The x and y offsets for the text shadow position with respect to the
2788 position of the text. They can be either positive or negative
2789 values. Default value for both is "0".
2790
2791 @item tabsize
2792 The size in number of spaces to use for rendering the tab.
2793 Default value is 4.
2794
2795 @item timecode
2796 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
2797 format. It can be used with or without text parameter. @var{timecode_rate}
2798 option must be specified.
2799
2800 @item timecode_rate, rate, r
2801 Set the timecode frame rate (timecode only).
2802
2803 @item text
2804 The text string to be drawn. The text must be a sequence of UTF-8
2805 encoded characters.
2806 This parameter is mandatory if no file is specified with the parameter
2807 @var{textfile}.
2808
2809 @item textfile
2810 A text file containing text to be drawn. The text must be a sequence
2811 of UTF-8 encoded characters.
2812
2813 This parameter is mandatory if no text string is specified with the
2814 parameter @var{text}.
2815
2816 If both @var{text} and @var{textfile} are specified, an error is thrown.
2817
2818 @item reload
2819 If set to 1, the @var{textfile} will be reloaded before each frame.
2820 Be sure to update it atomically, or it may be read partially, or even fail.
2821
2822 @item x, y
2823 The expressions which specify the offsets where text will be drawn
2824 within the video frame. They are relative to the top/left border of the
2825 output image.
2826
2827 The default value of @var{x} and @var{y} is "0".
2828
2829 See below for the list of accepted constants and functions.
2830 @end table
2831
2832 The parameters for @var{x} and @var{y} are expressions containing the
2833 following constants and functions:
2834
2835 @table @option
2836 @item dar
2837 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
2838
2839 @item hsub, vsub
2840 horizontal and vertical chroma subsample values. For example for the
2841 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
2842
2843 @item line_h, lh
2844 the height of each text line
2845
2846 @item main_h, h, H
2847 the input height
2848
2849 @item main_w, w, W
2850 the input width
2851
2852 @item max_glyph_a, ascent
2853 the maximum distance from the baseline to the highest/upper grid
2854 coordinate used to place a glyph outline point, for all the rendered
2855 glyphs.
2856 It is a positive value, due to the grid's orientation with the Y axis
2857 upwards.
2858
2859 @item max_glyph_d, descent
2860 the maximum distance from the baseline to the lowest grid coordinate
2861 used to place a glyph outline point, for all the rendered glyphs.
2862 This is a negative value, due to the grid's orientation, with the Y axis
2863 upwards.
2864
2865 @item max_glyph_h
2866 maximum glyph height, that is the maximum height for all the glyphs
2867 contained in the rendered text, it is equivalent to @var{ascent} -
2868 @var{descent}.
2869
2870 @item max_glyph_w
2871 maximum glyph width, that is the maximum width for all the glyphs
2872 contained in the rendered text
2873
2874 @item n
2875 the number of input frame, starting from 0
2876
2877 @item rand(min, max)
2878 return a random number included between @var{min} and @var{max}
2879
2880 @item sar
2881 input sample aspect ratio
2882
2883 @item t
2884 timestamp expressed in seconds, NAN if the input timestamp is unknown
2885
2886 @item text_h, th
2887 the height of the rendered text
2888
2889 @item text_w, tw
2890 the width of the rendered text
2891
2892 @item x, y
2893 the x and y offset coordinates where the text is drawn.
2894
2895 These parameters allow the @var{x} and @var{y} expressions to refer
2896 each other, so you can for example specify @code{y=x/dar}.
2897 @end table
2898
2899 If libavfilter was built with @code{--enable-fontconfig}, then
2900 @option{fontfile} can be a fontconfig pattern or omitted.
2901
2902 @anchor{drawtext_expansion}
2903 @subsection Text expansion
2904
2905 If @option{expansion} is set to @code{strftime},
2906 the filter recognizes strftime() sequences in the provided text and
2907 expands them accordingly. Check the documentation of strftime(). This
2908 feature is deprecated.
2909
2910 If @option{expansion} is set to @code{none}, the text is printed verbatim.
2911
2912 If @option{expansion} is set to @code{normal} (which is the default),
2913 the following expansion mechanism is used.
2914
2915 The backslash character '\', followed by any character, always expands to
2916 the second character.
2917
2918 Sequence of the form @code{%@{...@}} are expanded. The text between the
2919 braces is a function name, possibly followed by arguments separated by ':'.
2920 If the arguments contain special characters or delimiters (':' or '@}'),
2921 they should be escaped.
2922
2923 Note that they probably must also be escaped as the value for the
2924 @option{text} option in the filter argument string and as the filter
2925 argument in the filtergraph description, and possibly also for the shell,
2926 that makes up to four levels of escaping; using a text file avoids these
2927 problems.
2928
2929 The following functions are available:
2930
2931 @table @command
2932
2933 @item expr, e
2934 The expression evaluation result.
2935
2936 It must take one argument specifying the expression to be evaluated,
2937 which accepts the same constants and functions as the @var{x} and
2938 @var{y} values. Note that not all constants should be used, for
2939 example the text size is not known when evaluating the expression, so
2940 the constants @var{text_w} and @var{text_h} will have an undefined
2941 value.
2942
2943 @item gmtime
2944 The time at which the filter is running, expressed in UTC.
2945 It can accept an argument: a strftime() format string.
2946
2947 @item localtime
2948 The time at which the filter is running, expressed in the local time zone.
2949 It can accept an argument: a strftime() format string.
2950
2951 @item n, frame_num
2952 The frame number, starting from 0.
2953
2954 @item pts
2955 The timestamp of the current frame, in seconds, with microsecond accuracy.
2956
2957 @end table
2958
2959 @subsection Examples
2960
2961 @itemize
2962 @item
2963 Draw "Test Text" with font FreeSerif, using the default values for the
2964 optional parameters.
2965
2966 @example
2967 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
2968 @end example
2969
2970 @item
2971 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
2972 and y=50 (counting from the top-left corner of the screen), text is
2973 yellow with a red box around it. Both the text and the box have an
2974 opacity of 20%.
2975
2976 @example
2977 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
2978           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
2979 @end example
2980
2981 Note that the double quotes are not necessary if spaces are not used
2982 within the parameter list.
2983
2984 @item
2985 Show the text at the center of the video frame:
2986 @example
2987 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h-line_h)/2"
2988 @end example
2989
2990 @item
2991 Show a text line sliding from right to left in the last row of the video
2992 frame. The file @file{LONG_LINE} is assumed to contain a single line
2993 with no newlines.
2994 @example
2995 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
2996 @end example
2997
2998 @item
2999 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
3000 @example
3001 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
3002 @end example
3003
3004 @item
3005 Draw a single green letter "g", at the center of the input video.
3006 The glyph baseline is placed at half screen height.
3007 @example
3008 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
3009 @end example
3010
3011 @item
3012 Show text for 1 second every 3 seconds:
3013 @example
3014 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:draw=lt(mod(t\,3)\,1):text='blink'"
3015 @end example
3016
3017 @item
3018 Use fontconfig to set the font. Note that the colons need to be escaped.
3019 @example
3020 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
3021 @end example
3022
3023 @item
3024 Print the date of a real-time encoding (see strftime(3)):
3025 @example
3026 drawtext='fontfile=FreeSans.ttf:text=%@{localtime:%a %b %d %Y@}'
3027 @end example
3028
3029 @end itemize
3030
3031 For more information about libfreetype, check:
3032 @url{http://www.freetype.org/}.
3033
3034 For more information about fontconfig, check:
3035 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
3036
3037 @section edgedetect
3038
3039 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
3040
3041 The filter accepts the following options:
3042
3043 @table @option
3044 @item low, high
3045 Set low and high threshold values used by the Canny thresholding
3046 algorithm.
3047
3048 The high threshold selects the "strong" edge pixels, which are then
3049 connected through 8-connectivity with the "weak" edge pixels selected
3050 by the low threshold.
3051
3052 @var{low} and @var{high} threshold values must be choosen in the range
3053 [0,1], and @var{low} should be lesser or equal to @var{high}.
3054
3055 Default value for @var{low} is @code{20/255}, and default value for @var{high}
3056 is @code{50/255}.
3057 @end table
3058
3059 Example:
3060 @example
3061 edgedetect=low=0.1:high=0.4
3062 @end example
3063
3064 @section fade
3065
3066 Apply fade-in/out effect to input video.
3067
3068 This filter accepts the following options:
3069
3070 @table @option
3071 @item type, t
3072 The effect type -- can be either "in" for fade-in, or "out" for a fade-out
3073 effect.
3074 Default is @code{in}.
3075
3076 @item start_frame, s
3077 Specify the number of the start frame for starting to apply the fade
3078 effect. Default is 0.
3079
3080 @item nb_frames, n
3081 The number of frames for which the fade effect has to last. At the end of the
3082 fade-in effect the output video will have the same intensity as the input video,
3083 at the end of the fade-out transition the output video will be completely black.
3084 Default is 25.
3085
3086 @item alpha
3087 If set to 1, fade only alpha channel, if one exists on the input.
3088 Default value is 0.
3089 @end table
3090
3091 @subsection Examples
3092
3093 @itemize
3094 @item
3095 Fade in first 30 frames of video:
3096 @example
3097 fade=in:0:30
3098 @end example
3099
3100 The command above is equivalent to:
3101 @example
3102 fade=t=in:s=0:n=30
3103 @end example
3104
3105 @item
3106 Fade out last 45 frames of a 200-frame video:
3107 @example
3108 fade=out:155:45
3109 fade=type=out:start_frame=155:nb_frames=45
3110 @end example
3111
3112 @item
3113 Fade in first 25 frames and fade out last 25 frames of a 1000-frame video:
3114 @example
3115 fade=in:0:25, fade=out:975:25
3116 @end example
3117
3118 @item
3119 Make first 5 frames black, then fade in from frame 5-24:
3120 @example
3121 fade=in:5:20
3122 @end example
3123
3124 @item
3125 Fade in alpha over first 25 frames of video:
3126 @example
3127 fade=in:0:25:alpha=1
3128 @end example
3129 @end itemize
3130
3131 @section field
3132
3133 Extract a single field from an interlaced image using stride
3134 arithmetic to avoid wasting CPU time. The output frames are marked as
3135 non-interlaced.
3136
3137 The filter accepts the following options:
3138
3139 @table @option
3140 @item type
3141 Specify whether to extract the top (if the value is @code{0} or
3142 @code{top}) or the bottom field (if the value is @code{1} or
3143 @code{bottom}).
3144 @end table
3145
3146 @section fieldorder
3147
3148 Transform the field order of the input video.
3149
3150 This filter accepts the following options:
3151
3152 @table @option
3153
3154 @item order
3155 Output field order. Valid values are @var{tff} for top field first or @var{bff}
3156 for bottom field first.
3157 @end table
3158
3159 Default value is @samp{tff}.
3160
3161 Transformation is achieved by shifting the picture content up or down
3162 by one line, and filling the remaining line with appropriate picture content.
3163 This method is consistent with most broadcast field order converters.
3164
3165 If the input video is not flagged as being interlaced, or it is already
3166 flagged as being of the required output field order then this filter does
3167 not alter the incoming video.
3168
3169 This filter is very useful when converting to or from PAL DV material,
3170 which is bottom field first.
3171
3172 For example:
3173 @example
3174 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
3175 @end example
3176
3177 @section fifo
3178
3179 Buffer input images and send them when they are requested.
3180
3181 This filter is mainly useful when auto-inserted by the libavfilter
3182 framework.
3183
3184 The filter does not take parameters.
3185
3186 @anchor{format}
3187 @section format
3188
3189 Convert the input video to one of the specified pixel formats.
3190 Libavfilter will try to pick one that is supported for the input to
3191 the next filter.
3192
3193 This filter accepts the following parameters:
3194 @table @option
3195
3196 @item pix_fmts
3197 A '|'-separated list of pixel format names, for example
3198 "pix_fmts=yuv420p|monow|rgb24".
3199
3200 @end table
3201
3202 @subsection Examples
3203
3204 @itemize
3205 @item
3206 Convert the input video to the format @var{yuv420p}
3207 @example
3208 format=pix_fmts=yuv420p
3209 @end example
3210
3211 Convert the input video to any of the formats in the list
3212 @example
3213 format=pix_fmts=yuv420p|yuv444p|yuv410p
3214 @end example
3215 @end itemize
3216
3217 @section fps
3218
3219 Convert the video to specified constant frame rate by duplicating or dropping
3220 frames as necessary.
3221
3222 This filter accepts the following named parameters:
3223 @table @option
3224
3225 @item fps
3226 Desired output frame rate. The default is @code{25}.
3227
3228 @item round
3229 Rounding method.
3230
3231 Possible values are:
3232 @table @option
3233 @item zero
3234 zero round towards 0
3235 @item inf
3236 round away from 0
3237 @item down
3238 round towards -infinity
3239 @item up
3240 round towards +infinity
3241 @item near
3242 round to nearest
3243 @end table
3244 The default is @code{near}.
3245
3246 @end table
3247
3248 Alternatively, the options can be specified as a flat string:
3249 @var{fps}[:@var{round}].
3250
3251 See also the @ref{setpts} filter.
3252
3253 @section framestep
3254
3255 Select one frame every N-th frame.
3256
3257 This filter accepts the following option:
3258 @table @option
3259 @item step
3260 Select frame after every @code{step} frames.
3261 Allowed values are positive integers higher than 0. Default value is @code{1}.
3262 @end table
3263
3264 @anchor{frei0r}
3265 @section frei0r
3266
3267 Apply a frei0r effect to the input video.
3268
3269 To enable compilation of this filter you need to install the frei0r
3270 header and configure FFmpeg with @code{--enable-frei0r}.
3271
3272 This filter accepts the following options:
3273
3274 @table @option
3275
3276 @item filter_name
3277 The name to the frei0r effect to load. If the environment variable
3278 @env{FREI0R_PATH} is defined, the frei0r effect is searched in each one of the
3279 directories specified by the colon separated list in @env{FREIOR_PATH},
3280 otherwise in the standard frei0r paths, which are in this order:
3281 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
3282 @file{/usr/lib/frei0r-1/}.
3283
3284 @item filter_params
3285 A '|'-separated list of parameters to pass to the frei0r effect.
3286
3287 @end table
3288
3289 A frei0r effect parameter can be a boolean (whose values are specified
3290 with "y" and "n"), a double, a color (specified by the syntax
3291 @var{R}/@var{G}/@var{B}, @var{R}, @var{G}, and @var{B} being float
3292 numbers from 0.0 to 1.0) or by an @code{av_parse_color()} color
3293 description), a position (specified by the syntax @var{X}/@var{Y},
3294 @var{X} and @var{Y} being float numbers) and a string.
3295
3296 The number and kind of parameters depend on the loaded effect. If an
3297 effect parameter is not specified the default value is set.
3298
3299 @subsection Examples
3300
3301 @itemize
3302 @item
3303 Apply the distort0r effect, set the first two double parameters:
3304 @example
3305 frei0r=filter_name=distort0r:filter_params=0.5|0.01
3306 @end example
3307
3308 @item
3309 Apply the colordistance effect, take a color as first parameter:
3310 @example
3311 frei0r=colordistance:0.2/0.3/0.4
3312 frei0r=colordistance:violet
3313 frei0r=colordistance:0x112233
3314 @end example
3315
3316 @item
3317 Apply the perspective effect, specify the top left and top right image
3318 positions:
3319 @example
3320 frei0r=perspective:0.2/0.2|0.8/0.2
3321 @end example
3322 @end itemize
3323
3324 For more information see:
3325 @url{http://frei0r.dyne.org}
3326
3327 @section geq
3328
3329 The filter accepts the following options:
3330
3331 @table @option
3332 @item lum_expr
3333 the luminance expression
3334 @item cb_expr
3335 the chrominance blue expression
3336 @item cr_expr
3337 the chrominance red expression
3338 @item alpha_expr
3339 the alpha expression
3340 @end table
3341
3342 If one of the chrominance expression is not defined, it falls back on the other
3343 one. If no alpha expression is specified it will evaluate to opaque value.
3344 If none of chrominance expressions are
3345 specified, they will evaluate the luminance expression.
3346
3347 The expressions can use the following variables and functions:
3348
3349 @table @option
3350 @item N
3351 The sequential number of the filtered frame, starting from @code{0}.
3352
3353 @item X
3354 @item Y
3355 The coordinates of the current sample.
3356
3357 @item W
3358 @item H
3359 The width and height of the image.
3360
3361 @item SW
3362 @item SH
3363 Width and height scale depending on the currently filtered plane. It is the
3364 ratio between the corresponding luma plane number of pixels and the current
3365 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
3366 @code{0.5,0.5} for chroma planes.
3367
3368 @item T
3369 Time of the current frame, expressed in seconds.
3370
3371 @item p(x, y)
3372 Return the value of the pixel at location (@var{x},@var{y}) of the current
3373 plane.
3374
3375 @item lum(x, y)
3376 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
3377 plane.
3378
3379 @item cb(x, y)
3380 Return the value of the pixel at location (@var{x},@var{y}) of the
3381 blue-difference chroma plane. Returns 0 if there is no such plane.
3382
3383 @item cr(x, y)
3384 Return the value of the pixel at location (@var{x},@var{y}) of the
3385 red-difference chroma plane. Returns 0 if there is no such plane.
3386
3387 @item alpha(x, y)
3388 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
3389 plane. Returns 0 if there is no such plane.
3390 @end table
3391
3392 For functions, if @var{x} and @var{y} are outside the area, the value will be
3393 automatically clipped to the closer edge.
3394
3395 @subsection Examples
3396
3397 @itemize
3398 @item
3399 Flip the image horizontally:
3400 @example
3401 geq=p(W-X\,Y)
3402 @end example
3403
3404 @item
3405 Generate a bidimensional sine wave, with angle @code{PI/3} and a
3406 wavelength of 100 pixels:
3407 @example
3408 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
3409 @end example
3410
3411 @item
3412 Generate a fancy enigmatic moving light:
3413 @example
3414 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
3415 @end example
3416 @end itemize
3417
3418 @section gradfun
3419
3420 Fix the banding artifacts that are sometimes introduced into nearly flat
3421 regions by truncation to 8bit color depth.
3422 Interpolate the gradients that should go where the bands are, and
3423 dither them.
3424
3425 This filter is designed for playback only.  Do not use it prior to
3426 lossy compression, because compression tends to lose the dither and
3427 bring back the bands.
3428
3429 This filter accepts the following options:
3430
3431 @table @option
3432
3433 @item strength
3434 The maximum amount by which the filter will change any one pixel. Also the
3435 threshold for detecting nearly flat regions. Acceptable values range from .51 to
3436 64, default value is 1.2, out-of-range values will be clipped to the valid
3437 range.
3438
3439 @item radius
3440 The neighborhood to fit the gradient to. A larger radius makes for smoother
3441 gradients, but also prevents the filter from modifying the pixels near detailed
3442 regions. Acceptable values are 8-32, default value is 16, out-of-range values
3443 will be clipped to the valid range.
3444
3445 @end table
3446
3447 Alternatively, the options can be specified as a flat string:
3448 @var{strength}[:@var{radius}]
3449
3450 @subsection Examples
3451
3452 @itemize
3453 @item
3454 Apply the filter with a @code{3.5} strength and radius of @code{8}:
3455 @example
3456 gradfun=3.5:8
3457 @end example
3458
3459 @item
3460 Specify radius, omitting the strength (which will fall-back to the default
3461 value):
3462 @example
3463 gradfun=radius=8
3464 @end example
3465
3466 @end itemize
3467
3468 @section hflip
3469
3470 Flip the input video horizontally.
3471
3472 For example to horizontally flip the input video with @command{ffmpeg}:
3473 @example
3474 ffmpeg -i in.avi -vf "hflip" out.avi
3475 @end example
3476
3477 @section histeq
3478 This filter applies a global color histogram equalization on a
3479 per-frame basis.
3480
3481 It can be used to correct video that has a compressed range of pixel
3482 intensities.  The filter redistributes the pixel intensities to
3483 equalize their distribution across the intensity range. It may be
3484 viewed as an "automatically adjusting contrast filter". This filter is
3485 useful only for correcting degraded or poorly captured source
3486 video.
3487
3488 The filter accepts the following options:
3489
3490 @table @option
3491 @item strength
3492 Determine the amount of equalization to be applied.  As the strength
3493 is reduced, the distribution of pixel intensities more-and-more
3494 approaches that of the input frame. The value must be a float number
3495 in the range [0,1] and defaults to 0.200.
3496
3497 @item intensity
3498 Set the maximum intensity that can generated and scale the output
3499 values appropriately.  The strength should be set as desired and then
3500 the intensity can be limited if needed to avoid washing-out. The value
3501 must be a float number in the range [0,1] and defaults to 0.210.
3502
3503 @item antibanding
3504 Set the antibanding level. If enabled the filter will randomly vary
3505 the luminance of output pixels by a small amount to avoid banding of
3506 the histogram. Possible values are @code{none}, @code{weak} or
3507 @code{strong}. It defaults to @code{none}.
3508 @end table
3509
3510 @section histogram
3511
3512 Compute and draw a color distribution histogram for the input video.
3513
3514 The computed histogram is a representation of distribution of color components
3515 in an image.
3516
3517 The filter accepts the following options:
3518
3519 @table @option
3520 @item mode
3521 Set histogram mode.
3522
3523 It accepts the following values:
3524 @table @samp
3525 @item levels
3526 standard histogram that display color components distribution in an image.
3527 Displays color graph for each color component. Shows distribution
3528 of the Y, U, V, A or G, B, R components, depending on input format,
3529 in current frame. Bellow each graph is color component scale meter.
3530
3531 @item color
3532 chroma values in vectorscope, if brighter more such chroma values are
3533 distributed in an image.
3534 Displays chroma values (U/V color placement) in two dimensional graph
3535 (which is called a vectorscope). It can be used to read of the hue and
3536 saturation of the current frame. At a same time it is a histogram.
3537 The whiter a pixel in the vectorscope, the more pixels of the input frame
3538 correspond to that pixel (that is the more pixels have this chroma value).
3539 The V component is displayed on the horizontal (X) axis, with the leftmost
3540 side being V = 0 and the rightmost side being V = 255.
3541 The U component is displayed on the vertical (Y) axis, with the top
3542 representing U = 0 and the bottom representing U = 255.
3543
3544 The position of a white pixel in the graph corresponds to the chroma value
3545 of a pixel of the input clip. So the graph can be used to read of the
3546 hue (color flavor) and the saturation (the dominance of the hue in the color).
3547 As the hue of a color changes, it moves around the square. At the center of
3548 the square, the saturation is zero, which means that the corresponding pixel
3549 has no color. If you increase the amount of a specific color, while leaving
3550 the other colors unchanged, the saturation increases, and you move towards
3551 the edge of the square.
3552
3553 @item color2
3554 chroma values in vectorscope, similar as @code{color} but actual chroma values
3555 are displayed.
3556
3557 @item waveform
3558 per row/column color component graph. In row mode graph in the left side represents
3559 color component value 0 and right side represents value = 255. In column mode top
3560 side represents color component value = 0 and bottom side represents value = 255.
3561 @end table
3562 Default value is @code{levels}.
3563
3564 @item level_height
3565 Set height of level in @code{levels}. Default value is @code{200}.
3566 Allowed range is [50, 2048].
3567
3568 @item scale_height
3569 Set height of color scale in @code{levels}. Default value is @code{12}.
3570 Allowed range is [0, 40].
3571
3572 @item step
3573 Set step for @code{waveform} mode. Smaller values are useful to find out how much
3574 of same luminance values across input rows/columns are distributed.
3575 Default value is @code{10}. Allowed range is [1, 255].
3576
3577 @item waveform_mode
3578 Set mode for @code{waveform}. Can be either @code{row}, or @code{column}.
3579 Default is @code{row}.
3580
3581 @item display_mode
3582 Set display mode for @code{waveform} and @code{levels}.
3583 It accepts the following values:
3584 @table @samp
3585 @item parade
3586 Display separate graph for the color components side by side in
3587 @code{row} waveform mode or one below other in @code{column} waveform mode
3588 for @code{waveform} histogram mode. For @code{levels} histogram mode
3589 per color component graphs are placed one bellow other.
3590
3591 This display mode in @code{waveform} histogram mode makes it easy to spot
3592 color casts in the highlights and shadows of an image, by comparing the
3593 contours of the top and the bottom of each waveform.
3594 Since whites, grays, and blacks are characterized by
3595 exactly equal amounts of red, green, and blue, neutral areas of the
3596 picture should display three waveforms of roughly equal width/height.
3597 If not, the correction is easy to make by making adjustments to level the
3598 three waveforms.
3599
3600 @item overlay
3601 Presents information that's identical to that in the @code{parade}, except
3602 that the graphs representing color components are superimposed directly
3603 over one another.
3604
3605 This display mode in @code{waveform} histogram mode can make it easier to spot
3606 the relative differences or similarities in overlapping areas of the color
3607 components that are supposed to be identical, such as neutral whites, grays,
3608 or blacks.
3609 @end table
3610 Default is @code{parade}.
3611 @end table
3612
3613 @subsection Examples
3614
3615 @itemize
3616
3617 @item
3618 Calculate and draw histogram:
3619 @example
3620 ffplay -i input -vf histogram
3621 @end example
3622
3623 @end itemize
3624
3625 @section hqdn3d
3626
3627 High precision/quality 3d denoise filter. This filter aims to reduce
3628 image noise producing smooth images and making still images really
3629 still. It should enhance compressibility.
3630
3631 It accepts the following optional parameters:
3632
3633 @table @option
3634 @item luma_spatial
3635 a non-negative float number which specifies spatial luma strength,
3636 defaults to 4.0
3637
3638 @item chroma_spatial
3639 a non-negative float number which specifies spatial chroma strength,
3640 defaults to 3.0*@var{luma_spatial}/4.0
3641
3642 @item luma_tmp
3643 a float number which specifies luma temporal strength, defaults to
3644 6.0*@var{luma_spatial}/4.0
3645
3646 @item chroma_tmp
3647 a float number which specifies chroma temporal strength, defaults to
3648 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}
3649 @end table
3650
3651 @section hue
3652
3653 Modify the hue and/or the saturation of the input.
3654
3655 This filter accepts the following options:
3656
3657 @table @option
3658 @item h
3659 Specify the hue angle as a number of degrees. It accepts an expression,
3660 and defaults to "0".
3661
3662 @item s
3663 Specify the saturation in the [-10,10] range. It accepts a float number and
3664 defaults to "1".
3665
3666 @item H
3667 Specify the hue angle as a number of radians. It accepts a float
3668 number or an expression, and defaults to "0".
3669 @end table
3670
3671 @option{h} and @option{H} are mutually exclusive, and can't be
3672 specified at the same time.
3673
3674 The @option{h}, @option{H} and @option{s} option values are
3675 expressions containing the following constants:
3676
3677 @table @option
3678 @item n
3679 frame count of the input frame starting from 0
3680
3681 @item pts
3682 presentation timestamp of the input frame expressed in time base units
3683
3684 @item r
3685 frame rate of the input video, NAN if the input frame rate is unknown
3686
3687 @item t
3688 timestamp expressed in seconds, NAN if the input timestamp is unknown
3689
3690 @item tb
3691 time base of the input video
3692 @end table
3693
3694 @subsection Examples
3695
3696 @itemize
3697 @item
3698 Set the hue to 90 degrees and the saturation to 1.0:
3699 @example
3700 hue=h=90:s=1
3701 @end example
3702
3703 @item
3704 Same command but expressing the hue in radians:
3705 @example
3706 hue=H=PI/2:s=1
3707 @end example
3708
3709 @item
3710 Rotate hue and make the saturation swing between 0
3711 and 2 over a period of 1 second:
3712 @example
3713 hue="H=2*PI*t: s=sin(2*PI*t)+1"
3714 @end example
3715
3716 @item
3717 Apply a 3 seconds saturation fade-in effect starting at 0:
3718 @example
3719 hue="s=min(t/3\,1)"
3720 @end example
3721
3722 The general fade-in expression can be written as:
3723 @example
3724 hue="s=min(0\, max((t-START)/DURATION\, 1))"
3725 @end example
3726
3727 @item
3728 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
3729 @example
3730 hue="s=max(0\, min(1\, (8-t)/3))"
3731 @end example
3732
3733 The general fade-out expression can be written as:
3734 @example
3735 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
3736 @end example
3737
3738 @end itemize
3739
3740 @subsection Commands
3741
3742 This filter supports the following command:
3743 @table @option
3744 @item s
3745 @item h
3746 @item H
3747 Modify the hue and/or the saturation of the input video.
3748 The command accepts the same options and syntax of the corresponding
3749 options.
3750
3751 If the specified expression is not valid, it is kept at its current
3752 value.
3753 @end table
3754
3755 @section idet
3756
3757 Detect video interlacing type.
3758
3759 This filter tries to detect if the input is interlaced or progressive,
3760 top or bottom field first.
3761
3762 The filter accepts the following options:
3763
3764 @table @option
3765 @item intl_thres
3766 Set interlacing threshold.
3767 @item prog_thres
3768 Set progressive threshold.
3769 @end table
3770
3771 @section il
3772
3773 Deinterleave or interleave fields.
3774
3775 This filter allows to process interlaced images fields without
3776 deinterlacing them. Deinterleaving splits the input frame into 2
3777 fields (so called half pictures). Odd lines are moved to the top
3778 half of the output image, even lines to the bottom half.
3779 You can process (filter) them independently and then re-interleave them.
3780
3781 The filter accepts the following options:
3782
3783 @table @option
3784 @item luma_mode, l
3785 @item chroma_mode, s
3786 @item alpha_mode, a
3787 Available values for @var{luma_mode}, @var{chroma_mode} and
3788 @var{alpha_mode} are:
3789
3790 @table @samp
3791 @item none
3792 Do nothing.
3793
3794 @item deinterleave, d
3795 Deinterleave fields, placing one above the other.
3796
3797 @item interleave, i
3798 Interleave fields. Reverse the effect of deinterleaving.
3799 @end table
3800 Default value is @code{none}.
3801
3802 @item luma_swap, ls
3803 @item chroma_swap, cs
3804 @item alpha_swap, as
3805 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
3806 @end table
3807
3808 @section kerndeint
3809
3810 Deinterlace input video by applying Donald Graft's adaptive kernel
3811 deinterling. Work on interlaced parts of a video to produce
3812 progressive frames.
3813
3814 The description of the accepted parameters follows.
3815
3816 @table @option
3817 @item thresh
3818 Set the threshold which affects the filter's tolerance when
3819 determining if a pixel line must be processed. It must be an integer
3820 in the range [0,255] and defaults to 10. A value of 0 will result in
3821 applying the process on every pixels.
3822
3823 @item map
3824 Paint pixels exceeding the threshold value to white if set to 1.
3825 Default is 0.
3826
3827 @item order
3828 Set the fields order. Swap fields if set to 1, leave fields alone if
3829 0. Default is 0.
3830
3831 @item sharp
3832 Enable additional sharpening if set to 1. Default is 0.
3833
3834 @item twoway
3835 Enable twoway sharpening if set to 1. Default is 0.
3836 @end table
3837
3838 @subsection Examples
3839
3840 @itemize
3841 @item
3842 Apply default values:
3843 @example
3844 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
3845 @end example
3846
3847 @item
3848 Enable additional sharpening:
3849 @example
3850 kerndeint=sharp=1
3851 @end example
3852
3853 @item
3854 Paint processed pixels in white:
3855 @example
3856 kerndeint=map=1
3857 @end example
3858 @end itemize
3859
3860 @section lut, lutrgb, lutyuv
3861
3862 Compute a look-up table for binding each pixel component input value
3863 to an output value, and apply it to input video.
3864
3865 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
3866 to an RGB input video.
3867
3868 These filters accept the following options:
3869 @table @option
3870 @item c0
3871 set first pixel component expression
3872 @item c1
3873 set second pixel component expression
3874 @item c2
3875 set third pixel component expression
3876 @item c3
3877 set fourth pixel component expression, corresponds to the alpha component
3878
3879 @item r
3880 set red component expression
3881 @item g
3882 set green component expression
3883 @item b
3884 set blue component expression
3885 @item a
3886 alpha component expression
3887
3888 @item y
3889 set Y/luminance component expression
3890 @item u
3891 set U/Cb component expression
3892 @item v
3893 set V/Cr component expression
3894 @end table
3895
3896 Each of them specifies the expression to use for computing the lookup table for
3897 the corresponding pixel component values.
3898
3899 The exact component associated to each of the @var{c*} options depends on the
3900 format in input.
3901
3902 The @var{lut} filter requires either YUV or RGB pixel formats in input,
3903 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
3904
3905 The expressions can contain the following constants and functions:
3906
3907 @table @option
3908 @item w, h
3909 the input width and height
3910
3911 @item val
3912 input value for the pixel component
3913
3914 @item clipval
3915 the input value clipped in the @var{minval}-@var{maxval} range
3916
3917 @item maxval
3918 maximum value for the pixel component
3919
3920 @item minval
3921 minimum value for the pixel component
3922
3923 @item negval
3924 the negated value for the pixel component value clipped in the
3925 @var{minval}-@var{maxval} range , it corresponds to the expression
3926 "maxval-clipval+minval"
3927
3928 @item clip(val)
3929 the computed value in @var{val} clipped in the
3930 @var{minval}-@var{maxval} range
3931
3932 @item gammaval(gamma)
3933 the computed gamma correction value of the pixel component value
3934 clipped in the @var{minval}-@var{maxval} range, corresponds to the
3935 expression
3936 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
3937
3938 @end table
3939
3940 All expressions default to "val".
3941
3942 @subsection Examples
3943
3944 @itemize
3945 @item
3946 Negate input video:
3947 @example
3948 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
3949 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
3950 @end example
3951
3952 The above is the same as:
3953 @example
3954 lutrgb="r=negval:g=negval:b=negval"
3955 lutyuv="y=negval:u=negval:v=negval"
3956 @end example
3957
3958 @item
3959 Negate luminance:
3960 @example
3961 lutyuv=y=negval
3962 @end example
3963
3964 @item
3965 Remove chroma components, turns the video into a graytone image:
3966 @example
3967 lutyuv="u=128:v=128"
3968 @end example
3969
3970 @item
3971 Apply a luma burning effect:
3972 @example
3973 lutyuv="y=2*val"
3974 @end example
3975
3976 @item
3977 Remove green and blue components:
3978 @example
3979 lutrgb="g=0:b=0"
3980 @end example
3981
3982 @item
3983 Set a constant alpha channel value on input:
3984 @example
3985 format=rgba,lutrgb=a="maxval-minval/2"
3986 @end example
3987
3988 @item
3989 Correct luminance gamma by a 0.5 factor:
3990 @example
3991 lutyuv=y=gammaval(0.5)
3992 @end example
3993
3994 @item
3995 Discard least significant bits of luma:
3996 @example
3997 lutyuv=y='bitand(val, 128+64+32)'
3998 @end example
3999 @end itemize
4000
4001 @section mp
4002
4003 Apply an MPlayer filter to the input video.
4004
4005 This filter provides a wrapper around most of the filters of
4006 MPlayer/MEncoder.
4007
4008 This wrapper is considered experimental. Some of the wrapped filters
4009 may not work properly and we may drop support for them, as they will
4010 be implemented natively into FFmpeg. Thus you should avoid
4011 depending on them when writing portable scripts.
4012
4013 The filters accepts the parameters:
4014 @var{filter_name}[:=]@var{filter_params}
4015
4016 @var{filter_name} is the name of a supported MPlayer filter,
4017 @var{filter_params} is a string containing the parameters accepted by
4018 the named filter.
4019
4020 The list of the currently supported filters follows:
4021 @table @var
4022 @item detc
4023 @item dint
4024 @item divtc
4025 @item down3dright
4026 @item eq2
4027 @item eq
4028 @item fil
4029 @item fspp
4030 @item ilpack
4031 @item ivtc
4032 @item mcdeint
4033 @item ow
4034 @item perspective
4035 @item phase
4036 @item pp7
4037 @item pullup
4038 @item qp
4039 @item sab
4040 @item softpulldown
4041 @item spp
4042 @item telecine
4043 @item tinterlace
4044 @item uspp
4045 @end table
4046
4047 The parameter syntax and behavior for the listed filters are the same
4048 of the corresponding MPlayer filters. For detailed instructions check
4049 the "VIDEO FILTERS" section in the MPlayer manual.
4050
4051 @subsection Examples
4052
4053 @itemize
4054 @item
4055 Adjust gamma, brightness, contrast:
4056 @example
4057 mp=eq2=1.0:2:0.5
4058 @end example
4059 @end itemize
4060
4061 See also mplayer(1), @url{http://www.mplayerhq.hu/}.
4062
4063 @section negate
4064
4065 Negate input video.
4066
4067 This filter accepts an integer in input, if non-zero it negates the
4068 alpha component (if available). The default value in input is 0.
4069
4070 @section noformat
4071
4072 Force libavfilter not to use any of the specified pixel formats for the
4073 input to the next filter.
4074
4075 This filter accepts the following parameters:
4076 @table @option
4077
4078 @item pix_fmts
4079 A '|'-separated list of pixel format names, for example
4080 "pix_fmts=yuv420p|monow|rgb24".
4081
4082 @end table
4083
4084 @subsection Examples
4085
4086 @itemize
4087 @item
4088 Force libavfilter to use a format different from @var{yuv420p} for the
4089 input to the vflip filter:
4090 @example
4091 noformat=pix_fmts=yuv420p,vflip
4092 @end example
4093
4094 @item
4095 Convert the input video to any of the formats not contained in the list:
4096 @example
4097 noformat=yuv420p|yuv444p|yuv410p
4098 @end example
4099 @end itemize
4100
4101 @section noise
4102
4103 Add noise on video input frame.
4104
4105 The filter accepts the following options:
4106
4107 @table @option
4108 @item all_seed
4109 @item c0_seed
4110 @item c1_seed
4111 @item c2_seed
4112 @item c3_seed
4113 Set noise seed for specific pixel component or all pixel components in case
4114 of @var{all_seed}. Default value is @code{123457}.
4115
4116 @item all_strength, alls
4117 @item c0_strength, c0s
4118 @item c1_strength, c1s
4119 @item c2_strength, c2s
4120 @item c3_strength, c3s
4121 Set noise strength for specific pixel component or all pixel components in case
4122 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
4123
4124 @item all_flags, allf
4125 @item c0_flags, c0f
4126 @item c1_flags, c1f
4127 @item c2_flags, c2f
4128 @item c3_flags, c3f
4129 Set pixel component flags or set flags for all components if @var{all_flags}.
4130 Available values for component flags are:
4131 @table @samp
4132 @item a
4133 averaged temporal noise (smoother)
4134 @item p
4135 mix random noise with a (semi)regular pattern
4136 @item q
4137 higher quality (slightly better looking, slightly slower)
4138 @item t
4139 temporal noise (noise pattern changes between frames)
4140 @item u
4141 uniform noise (gaussian otherwise)
4142 @end table
4143 @end table
4144
4145 @subsection Examples
4146
4147 Add temporal and uniform noise to input video:
4148 @example
4149 noise=alls=20:allf=t+u
4150 @end example
4151
4152 @section null
4153
4154 Pass the video source unchanged to the output.
4155
4156 @section ocv
4157
4158 Apply video transform using libopencv.
4159
4160 To enable this filter install libopencv library and headers and
4161 configure FFmpeg with @code{--enable-libopencv}.
4162
4163 This filter accepts the following parameters:
4164
4165 @table @option
4166
4167 @item filter_name
4168 The name of the libopencv filter to apply.
4169
4170 @item filter_params
4171 The parameters to pass to the libopencv filter. If not specified the default
4172 values are assumed.
4173
4174 @end table
4175
4176 Refer to the official libopencv documentation for more precise
4177 information:
4178 @url{http://opencv.willowgarage.com/documentation/c/image_filtering.html}
4179
4180 Follows the list of supported libopencv filters.
4181
4182 @anchor{dilate}
4183 @subsection dilate
4184
4185 Dilate an image by using a specific structuring element.
4186 This filter corresponds to the libopencv function @code{cvDilate}.
4187
4188 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
4189
4190 @var{struct_el} represents a structuring element, and has the syntax:
4191 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
4192
4193 @var{cols} and @var{rows} represent the number of columns and rows of
4194 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
4195 point, and @var{shape} the shape for the structuring element, and
4196 can be one of the values "rect", "cross", "ellipse", "custom".
4197
4198 If the value for @var{shape} is "custom", it must be followed by a
4199 string of the form "=@var{filename}". The file with name
4200 @var{filename} is assumed to represent a binary image, with each
4201 printable character corresponding to a bright pixel. When a custom
4202 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
4203 or columns and rows of the read file are assumed instead.
4204
4205 The default value for @var{struct_el} is "3x3+0x0/rect".
4206
4207 @var{nb_iterations} specifies the number of times the transform is
4208 applied to the image, and defaults to 1.
4209
4210 Follow some example:
4211 @example
4212 # use the default values
4213 ocv=dilate
4214
4215 # dilate using a structuring element with a 5x5 cross, iterate two times
4216 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
4217
4218 # read the shape from the file diamond.shape, iterate two times
4219 # the file diamond.shape may contain a pattern of characters like this:
4220 #   *
4221 #  ***
4222 # *****
4223 #  ***
4224 #   *
4225 # the specified cols and rows are ignored (but not the anchor point coordinates)
4226 ocv=dilate:0x0+2x2/custom=diamond.shape|2
4227 @end example
4228
4229 @subsection erode
4230
4231 Erode an image by using a specific structuring element.
4232 This filter corresponds to the libopencv function @code{cvErode}.
4233
4234 The filter accepts the parameters: @var{struct_el}:@var{nb_iterations},
4235 with the same syntax and semantics as the @ref{dilate} filter.
4236
4237 @subsection smooth
4238
4239 Smooth the input video.
4240
4241 The filter takes the following parameters:
4242 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
4243
4244 @var{type} is the type of smooth filter to apply, and can be one of
4245 the following values: "blur", "blur_no_scale", "median", "gaussian",
4246 "bilateral". The default value is "gaussian".
4247
4248 @var{param1}, @var{param2}, @var{param3}, and @var{param4} are
4249 parameters whose meanings depend on smooth type. @var{param1} and
4250 @var{param2} accept integer positive values or 0, @var{param3} and
4251 @var{param4} accept float values.
4252
4253 The default value for @var{param1} is 3, the default value for the
4254 other parameters is 0.
4255
4256 These parameters correspond to the parameters assigned to the
4257 libopencv function @code{cvSmooth}.
4258
4259 @anchor{overlay}
4260 @section overlay
4261
4262 Overlay one video on top of another.
4263
4264 It takes two inputs and one output, the first input is the "main"
4265 video on which the second input is overlayed.
4266
4267 This filter accepts the following parameters:
4268
4269 A description of the accepted options follows.
4270
4271 @table @option
4272 @item x
4273 @item y
4274 Set the expression for the x and y coordinates of the overlayed video
4275 on the main video. Default value is "0" for both expressions. In case
4276 the expression is invalid, it is set to a huge value (meaning that the
4277 overlay will not be displayed within the output visible area).
4278
4279 @item enable
4280 Set the expression which enables the overlay. If the evaluation is
4281 different from 0, the overlay is displayed on top of the input
4282 frame. By default it is "1".
4283
4284 @item eval
4285 Set when the expressions for @option{x}, @option{y}, and
4286 @option{enable} are evaluated.
4287
4288 It accepts the following values:
4289 @table @samp
4290 @item init
4291 only evaluate expressions once during the filter initialization or
4292 when a command is processed
4293
4294 @item frame
4295 evaluate expressions for each incoming frame
4296 @end table
4297
4298 Default value is @samp{frame}.
4299
4300 @item shortest
4301 If set to 1, force the output to terminate when the shortest input
4302 terminates. Default value is 0.
4303
4304 @item format
4305 Set the format for the output video.
4306
4307 It accepts the following values:
4308 @table @samp
4309 @item yuv420
4310 force YUV420 output
4311
4312 @item yuv444
4313 force YUV444 output
4314
4315 @item rgb
4316 force RGB output
4317 @end table
4318
4319 Default value is @samp{yuv420}.
4320
4321 @item rgb @emph{(deprecated)}
4322 If set to 1, force the filter to accept inputs in the RGB
4323 color space. Default value is 0. This option is deprecated, use
4324 @option{format} instead.
4325 @end table
4326
4327 The @option{x}, @option{y}, and @option{enable} expressions can
4328 contain the following parameters.
4329
4330 @table @option
4331 @item main_w, W
4332 @item main_h, H
4333 main input width and height
4334
4335 @item overlay_w, w
4336 @item overlay_h, h
4337 overlay input width and height
4338
4339 @item x
4340 @item y
4341 the computed values for @var{x} and @var{y}. They are evaluated for
4342 each new frame.
4343
4344 @item hsub
4345 @item vsub
4346 horizontal and vertical chroma subsample values of the output
4347 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
4348 @var{vsub} is 1.
4349
4350 @item n
4351 the number of input frame, starting from 0
4352
4353 @item pos
4354 the position in the file of the input frame, NAN if unknown
4355
4356 @item t
4357 timestamp expressed in seconds, NAN if the input timestamp is unknown
4358 @end table
4359
4360 Note that the @var{n}, @var{pos}, @var{t} variables are available only
4361 when evaluation is done @emph{per frame}, and will evaluate to NAN
4362 when @option{eval} is set to @samp{init}.
4363
4364 Be aware that frames are taken from each input video in timestamp
4365 order, hence, if their initial timestamps differ, it is a a good idea
4366 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
4367 have them begin in the same zero timestamp, as it does the example for
4368 the @var{movie} filter.
4369
4370 You can chain together more overlays but you should test the
4371 efficiency of such approach.
4372
4373 @subsection Commands
4374
4375 This filter supports the following command:
4376 @table @option
4377 @item x
4378 Set the @option{x} option expression.
4379
4380 @item y
4381 Set the @option{y} option expression.
4382
4383 @item enable
4384 Set the @option{enable} option expression.
4385 @end table
4386
4387 @subsection Examples
4388
4389 @itemize
4390 @item
4391 Draw the overlay at 10 pixels from the bottom right corner of the main
4392 video:
4393 @example
4394 overlay=main_w-overlay_w-10:main_h-overlay_h-10
4395 @end example
4396
4397 Using named options the example above becomes:
4398 @example
4399 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
4400 @end example
4401
4402 @item
4403 Insert a transparent PNG logo in the bottom left corner of the input,
4404 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
4405 @example
4406 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
4407 @end example
4408
4409 @item
4410 Insert 2 different transparent PNG logos (second logo on bottom
4411 right corner) using the @command{ffmpeg} tool:
4412 @example
4413 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
4414 @end example
4415
4416 @item
4417 Add a transparent color layer on top of the main video, @code{WxH}
4418 must specify the size of the main input to the overlay filter:
4419 @example
4420 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
4421 @end example
4422
4423 @item
4424 Play an original video and a filtered version (here with the deshake
4425 filter) side by side using the @command{ffplay} tool:
4426 @example
4427 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
4428 @end example
4429
4430 The above command is the same as:
4431 @example
4432 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
4433 @end example
4434
4435 @item
4436 Make a sliding overlay appearing from the left to the right top part of the
4437 screen starting since time 2:
4438 @example
4439 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
4440 @end example
4441
4442 @item
4443 Compose output by putting two input videos side to side:
4444 @example
4445 ffmpeg -i left.avi -i right.avi -filter_complex "
4446 nullsrc=size=200x100 [background];
4447 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
4448 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
4449 [background][left]       overlay=shortest=1       [background+left];
4450 [background+left][right] overlay=shortest=1:x=100 [left+right]
4451 "
4452 @end example
4453
4454 @item
4455 Chain several overlays in cascade:
4456 @example
4457 nullsrc=s=200x200 [bg];
4458 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
4459 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
4460 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
4461 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
4462 [in3] null,       [mid2] overlay=100:100 [out0]
4463 @end example
4464
4465 @end itemize
4466
4467 @section pad
4468
4469 Add paddings to the input image, and place the original input at the
4470 given coordinates @var{x}, @var{y}.
4471
4472 This filter accepts the following parameters:
4473
4474 @table @option
4475 @item width, w
4476 @item height, h
4477 Specify an expression for the size of the output image with the
4478 paddings added. If the value for @var{width} or @var{height} is 0, the
4479 corresponding input size is used for the output.
4480
4481 The @var{width} expression can reference the value set by the
4482 @var{height} expression, and vice versa.
4483
4484 The default value of @var{width} and @var{height} is 0.
4485
4486 @item x
4487 @item y
4488 Specify an expression for the offsets where to place the input image
4489 in the padded area with respect to the top/left border of the output
4490 image.
4491
4492 The @var{x} expression can reference the value set by the @var{y}
4493 expression, and vice versa.
4494
4495 The default value of @var{x} and @var{y} is 0.
4496
4497 @item color
4498 Specify the color of the padded area, it can be the name of a color
4499 (case insensitive match) or a 0xRRGGBB[AA] sequence.
4500
4501 The default value of @var{color} is "black".
4502 @end table
4503
4504 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
4505 options are expressions containing the following constants:
4506
4507 @table @option
4508 @item in_w, in_h
4509 the input video width and height
4510
4511 @item iw, ih
4512 same as @var{in_w} and @var{in_h}
4513
4514 @item out_w, out_h
4515 the output width and height, that is the size of the padded area as
4516 specified by the @var{width} and @var{height} expressions
4517
4518 @item ow, oh
4519 same as @var{out_w} and @var{out_h}
4520
4521 @item x, y
4522 x and y offsets as specified by the @var{x} and @var{y}
4523 expressions, or NAN if not yet specified
4524
4525 @item a
4526 same as @var{iw} / @var{ih}
4527
4528 @item sar
4529 input sample aspect ratio
4530
4531 @item dar
4532 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
4533
4534 @item hsub, vsub
4535 horizontal and vertical chroma subsample values. For example for the
4536 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
4537 @end table
4538
4539 @subsection Examples
4540
4541 @itemize
4542 @item
4543 Add paddings with color "violet" to the input video. Output video
4544 size is 640x480, the top-left corner of the input video is placed at
4545 column 0, row 40:
4546 @example
4547 pad=640:480:0:40:violet
4548 @end example
4549
4550 The example above is equivalent to the following command:
4551 @example
4552 pad=width=640:height=480:x=0:y=40:color=violet
4553 @end example
4554
4555 @item
4556 Pad the input to get an output with dimensions increased by 3/2,
4557 and put the input video at the center of the padded area:
4558 @example
4559 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
4560 @end example
4561
4562 @item
4563 Pad the input to get a squared output with size equal to the maximum
4564 value between the input width and height, and put the input video at
4565 the center of the padded area:
4566 @example
4567 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
4568 @end example
4569
4570 @item
4571 Pad the input to get a final w/h ratio of 16:9:
4572 @example
4573 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
4574 @end example
4575
4576 @item
4577 In case of anamorphic video, in order to set the output display aspect
4578 correctly, it is necessary to use @var{sar} in the expression,
4579 according to the relation:
4580 @example
4581 (ih * X / ih) * sar = output_dar
4582 X = output_dar / sar
4583 @end example
4584
4585 Thus the previous example needs to be modified to:
4586 @example
4587 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
4588 @end example
4589
4590 @item
4591 Double output size and put the input video in the bottom-right
4592 corner of the output padded area:
4593 @example
4594 pad="2*iw:2*ih:ow-iw:oh-ih"
4595 @end example
4596 @end itemize
4597
4598 @section pixdesctest
4599
4600 Pixel format descriptor test filter, mainly useful for internal
4601 testing. The output video should be equal to the input video.
4602
4603 For example:
4604 @example
4605 format=monow, pixdesctest
4606 @end example
4607
4608 can be used to test the monowhite pixel format descriptor definition.
4609
4610 @section pp
4611
4612 Enable the specified chain of postprocessing subfilters using libpostproc. This
4613 library should be automatically selected with a GPL build (@code{--enable-gpl}).
4614 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
4615 Each subfilter and some options have a short and a long name that can be used
4616 interchangeably, i.e. dr/dering are the same.
4617
4618 The filters accept the following options:
4619
4620 @table @option
4621 @item subfilters
4622 Set postprocessing subfilters string.
4623 @end table
4624
4625 All subfilters share common options to determine their scope:
4626
4627 @table @option
4628 @item a/autoq
4629 Honor the quality commands for this subfilter.
4630
4631 @item c/chrom
4632 Do chrominance filtering, too (default).
4633
4634 @item y/nochrom
4635 Do luminance filtering only (no chrominance).
4636
4637 @item n/noluma
4638 Do chrominance filtering only (no luminance).
4639 @end table
4640
4641 These options can be appended after the subfilter name, separated by a '|'.
4642
4643 Available subfilters are:
4644
4645 @table @option
4646 @item hb/hdeblock[|difference[|flatness]]
4647 Horizontal deblocking filter
4648 @table @option
4649 @item difference
4650 Difference factor where higher values mean more deblocking (default: @code{32}).
4651 @item flatness
4652 Flatness threshold where lower values mean more deblocking (default: @code{39}).
4653 @end table
4654
4655 @item vb/vdeblock[|difference[|flatness]]
4656 Vertical deblocking filter
4657 @table @option
4658 @item difference
4659 Difference factor where higher values mean more deblocking (default: @code{32}).
4660 @item flatness
4661 Flatness threshold where lower values mean more deblocking (default: @code{39}).
4662 @end table
4663
4664 @item ha/hadeblock[|difference[|flatness]]
4665 Accurate horizontal deblocking filter
4666 @table @option
4667 @item difference
4668 Difference factor where higher values mean more deblocking (default: @code{32}).
4669 @item flatness
4670 Flatness threshold where lower values mean more deblocking (default: @code{39}).
4671 @end table
4672
4673 @item va/vadeblock[|difference[|flatness]]
4674 Accurate vertical deblocking filter
4675 @table @option
4676 @item difference
4677 Difference factor where higher values mean more deblocking (default: @code{32}).
4678 @item flatness
4679 Flatness threshold where lower values mean more deblocking (default: @code{39}).
4680 @end table
4681 @end table
4682
4683 The horizontal and vertical deblocking filters share the difference and
4684 flatness values so you cannot set different horizontal and vertical
4685 thresholds.
4686
4687 @table @option
4688 @item h1/x1hdeblock
4689 Experimental horizontal deblocking filter
4690
4691 @item v1/x1vdeblock
4692 Experimental vertical deblocking filter
4693
4694 @item dr/dering
4695 Deringing filter
4696
4697 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
4698 @table @option
4699 @item threshold1
4700 larger -> stronger filtering
4701 @item threshold2
4702 larger -> stronger filtering
4703 @item threshold3
4704 larger -> stronger filtering
4705 @end table
4706
4707 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
4708 @table @option
4709 @item f/fullyrange
4710 Stretch luminance to @code{0-255}.
4711 @end table
4712
4713 @item lb/linblenddeint
4714 Linear blend deinterlacing filter that deinterlaces the given block by
4715 filtering all lines with a @code{(1 2 1)} filter.
4716
4717 @item li/linipoldeint
4718 Linear interpolating deinterlacing filter that deinterlaces the given block by
4719 linearly interpolating every second line.
4720
4721 @item ci/cubicipoldeint
4722 Cubic interpolating deinterlacing filter deinterlaces the given block by
4723 cubically interpolating every second line.
4724
4725 @item md/mediandeint
4726 Median deinterlacing filter that deinterlaces the given block by applying a
4727 median filter to every second line.
4728
4729 @item fd/ffmpegdeint
4730 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
4731 second line with a @code{(-1 4 2 4 -1)} filter.
4732
4733 @item l5/lowpass5
4734 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
4735 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
4736
4737 @item fq/forceQuant[|quantizer]
4738 Overrides the quantizer table from the input with the constant quantizer you
4739 specify.
4740 @table @option
4741 @item quantizer
4742 Quantizer to use
4743 @end table
4744
4745 @item de/default
4746 Default pp filter combination (@code{hb|a,vb|a,dr|a})
4747
4748 @item fa/fast
4749 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
4750
4751 @item ac
4752 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
4753 @end table
4754
4755 @subsection Examples
4756
4757 @itemize
4758 @item
4759 Apply horizontal and vertical deblocking, deringing and automatic
4760 brightness/contrast:
4761 @example
4762 pp=hb/vb/dr/al
4763 @end example
4764
4765 @item
4766 Apply default filters without brightness/contrast correction:
4767 @example
4768 pp=de/-al
4769 @end example
4770
4771 @item
4772 Apply default filters and temporal denoiser:
4773 @example
4774 pp=default/tmpnoise|1|2|3
4775 @end example
4776
4777 @item
4778 Apply deblocking on luminance only, and switch vertical deblocking on or off
4779 automatically depending on available CPU time:
4780 @example
4781 pp=hb|y/vb|a
4782 @end example
4783 @end itemize
4784
4785 @section removelogo
4786
4787 Suppress a TV station logo, using an image file to determine which
4788 pixels comprise the logo. It works by filling in the pixels that
4789 comprise the logo with neighboring pixels.
4790
4791 The filters accept the following options:
4792
4793 @table @option
4794 @item filename, f
4795 Set the filter bitmap file, which can be any image format supported by
4796 libavformat. The width and height of the image file must match those of the
4797 video stream being processed.
4798 @end table
4799
4800 Pixels in the provided bitmap image with a value of zero are not
4801 considered part of the logo, non-zero pixels are considered part of
4802 the logo. If you use white (255) for the logo and black (0) for the
4803 rest, you will be safe. For making the filter bitmap, it is
4804 recommended to take a screen capture of a black frame with the logo
4805 visible, and then using a threshold filter followed by the erode
4806 filter once or twice.
4807
4808 If needed, little splotches can be fixed manually. Remember that if
4809 logo pixels are not covered, the filter quality will be much
4810 reduced. Marking too many pixels as part of the logo does not hurt as
4811 much, but it will increase the amount of blurring needed to cover over
4812 the image and will destroy more information than necessary, and extra
4813 pixels will slow things down on a large logo.
4814
4815 @section scale
4816
4817 Scale (resize) the input video, using the libswscale library.
4818
4819 The scale filter forces the output display aspect ratio to be the same
4820 of the input, by changing the output sample aspect ratio.
4821
4822 This filter accepts a list of named options in the form of
4823 @var{key}=@var{value} pairs separated by ":". If the key for the first
4824 two options is not specified, the assumed keys for the first two
4825 values are @code{w} and @code{h}. If the first option has no key and
4826 can be interpreted like a video size specification, it will be used
4827 to set the video size.
4828
4829 A description of the accepted options follows.
4830
4831 @table @option
4832 @item width, w
4833 Output video width.
4834 default value is @code{iw}. See below
4835 for the list of accepted constants.
4836
4837 @item height, h
4838 Output video height.
4839 default value is @code{ih}.
4840 See below for the list of accepted constants.
4841
4842 @item interl
4843 Set the interlacing. It accepts the following values:
4844
4845 @table @option
4846 @item 1
4847 force interlaced aware scaling
4848
4849 @item 0
4850 do not apply interlaced scaling
4851
4852 @item -1
4853 select interlaced aware scaling depending on whether the source frames
4854 are flagged as interlaced or not
4855 @end table
4856
4857 Default value is @code{0}.
4858
4859 @item flags
4860 Set libswscale scaling flags. If not explictly specified the filter
4861 applies a bilinear scaling algorithm.
4862
4863 @item size, s
4864 Set the video size, the value must be a valid abbreviation or in the
4865 form @var{width}x@var{height}.
4866 @end table
4867
4868 The values of the @var{w} and @var{h} options are expressions
4869 containing the following constants:
4870
4871 @table @option
4872 @item in_w, in_h
4873 the input width and height
4874
4875 @item iw, ih
4876 same as @var{in_w} and @var{in_h}
4877
4878 @item out_w, out_h
4879 the output (cropped) width and height
4880
4881 @item ow, oh
4882 same as @var{out_w} and @var{out_h}
4883
4884 @item a
4885 same as @var{iw} / @var{ih}
4886
4887 @item sar
4888 input sample aspect ratio
4889
4890 @item dar
4891 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
4892
4893 @item hsub, vsub
4894 horizontal and vertical chroma subsample values. For example for the
4895 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
4896 @end table
4897
4898 If the input image format is different from the format requested by
4899 the next filter, the scale filter will convert the input to the
4900 requested format.
4901
4902 If the value for @var{w} or @var{h} is 0, the respective input
4903 size is used for the output.
4904
4905 If the value for @var{w} or @var{h} is -1, the scale filter will use, for the
4906 respective output size, a value that maintains the aspect ratio of the input
4907 image.
4908
4909 @subsection Examples
4910
4911 @itemize
4912 @item
4913 Scale the input video to a size of 200x100:
4914 @example
4915 scale=w=200:h=100
4916 @end example
4917
4918 This is equivalent to:
4919 @example
4920 scale=w=200:h=100
4921 @end example
4922
4923 or:
4924 @example
4925 scale=200x100
4926 @end example
4927
4928 @item
4929 Specify a size abbreviation for the output size:
4930 @example
4931 scale=qcif
4932 @end example
4933
4934 which can also be written as:
4935 @example
4936 scale=size=qcif
4937 @end example
4938
4939 @item
4940 Scale the input to 2x:
4941 @example
4942 scale=w=2*iw:h=2*ih
4943 @end example
4944
4945 @item
4946 The above is the same as:
4947 @example
4948 scale=2*in_w:2*in_h
4949 @end example
4950
4951 @item
4952 Scale the input to 2x with forced interlaced scaling:
4953 @example
4954 scale=2*iw:2*ih:interl=1
4955 @end example
4956
4957 @item
4958 Scale the input to half size:
4959 @example
4960 scale=w=iw/2:h=ih/2
4961 @end example
4962
4963 @item
4964 Increase the width, and set the height to the same size:
4965 @example
4966 scale=3/2*iw:ow
4967 @end example
4968
4969 @item
4970 Seek for Greek harmony:
4971 @example
4972 scale=iw:1/PHI*iw
4973 scale=ih*PHI:ih
4974 @end example
4975
4976 @item
4977 Increase the height, and set the width to 3/2 of the height:
4978 @example
4979 scale=w=3/2*oh:h=3/5*ih
4980 @end example
4981
4982 @item
4983 Increase the size, but make the size a multiple of the chroma
4984 subsample values:
4985 @example
4986 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
4987 @end example
4988
4989 @item
4990 Increase the width to a maximum of 500 pixels, keep the same input
4991 aspect ratio:
4992 @example
4993 scale=w='min(500\, iw*3/2):h=-1'
4994 @end example
4995 @end itemize
4996
4997 @section separatefields
4998
4999 The @code{separatefields} takes a frame-based video input and splits
5000 each frame into its components fields, producing a new half height clip
5001 with twice the frame rate and twice the frame count.
5002
5003 This filter use field-dominance information in frame to decide which
5004 of each pair of fields to place first in the output.
5005 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
5006
5007 @section setdar, setsar
5008
5009 The @code{setdar} filter sets the Display Aspect Ratio for the filter
5010 output video.
5011
5012 This is done by changing the specified Sample (aka Pixel) Aspect
5013 Ratio, according to the following equation:
5014 @example
5015 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
5016 @end example
5017
5018 Keep in mind that the @code{setdar} filter does not modify the pixel
5019 dimensions of the video frame. Also the display aspect ratio set by
5020 this filter may be changed by later filters in the filterchain,
5021 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
5022 applied.
5023
5024 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
5025 the filter output video.
5026
5027 Note that as a consequence of the application of this filter, the
5028 output display aspect ratio will change according to the equation
5029 above.
5030
5031 Keep in mind that the sample aspect ratio set by the @code{setsar}
5032 filter may be changed by later filters in the filterchain, e.g. if
5033 another "setsar" or a "setdar" filter is applied.
5034
5035 The filters accept the following options:
5036
5037 @table @option
5038 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
5039 Set the aspect ratio used by the filter.
5040
5041 The parameter can be a floating point number string, an expression, or
5042 a string of the form @var{num}:@var{den}, where @var{num} and
5043 @var{den} are the numerator and denominator of the aspect ratio. If
5044 the parameter is not specified, it is assumed the value "0".
5045 In case the form "@var{num}:@var{den}" the @code{:} character should
5046 be escaped.
5047
5048 @item max
5049 Set the maximum integer value to use for expressing numerator and
5050 denominator when reducing the expressed aspect ratio to a rational.
5051 Default value is @code{100}.
5052
5053 @end table
5054
5055 @subsection Examples
5056
5057 @itemize
5058
5059 @item
5060 To change the display aspect ratio to 16:9, specify one of the following:
5061 @example
5062 setdar=dar=1.77777
5063 setdar=dar=16/9
5064 setdar=dar=1.77777
5065 @end example
5066
5067 @item
5068 To change the sample aspect ratio to 10:11, specify:
5069 @example
5070 setsar=sar=10/11
5071 @end example
5072
5073 @item
5074 To set a display aspect ratio of 16:9, and specify a maximum integer value of
5075 1000 in the aspect ratio reduction, use the command:
5076 @example
5077 setdar=ratio=16/9:max=1000
5078 @end example
5079
5080 @end itemize
5081
5082 @anchor{setfield}
5083 @section setfield
5084
5085 Force field for the output video frame.
5086
5087 The @code{setfield} filter marks the interlace type field for the
5088 output frames. It does not change the input frame, but only sets the
5089 corresponding property, which affects how the frame is treated by
5090 following filters (e.g. @code{fieldorder} or @code{yadif}).
5091
5092 The filter accepts the following options:
5093
5094 @table @option
5095
5096 @item mode
5097 Available values are:
5098
5099 @table @samp
5100 @item auto
5101 Keep the same field property.
5102
5103 @item bff
5104 Mark the frame as bottom-field-first.
5105
5106 @item tff
5107 Mark the frame as top-field-first.
5108
5109 @item prog
5110 Mark the frame as progressive.
5111 @end table
5112 @end table
5113
5114 @section showinfo
5115
5116 Show a line containing various information for each input video frame.
5117 The input video is not modified.
5118
5119 The shown line contains a sequence of key/value pairs of the form
5120 @var{key}:@var{value}.
5121
5122 A description of each shown parameter follows:
5123
5124 @table @option
5125 @item n
5126 sequential number of the input frame, starting from 0
5127
5128 @item pts
5129 Presentation TimeStamp of the input frame, expressed as a number of
5130 time base units. The time base unit depends on the filter input pad.
5131
5132 @item pts_time
5133 Presentation TimeStamp of the input frame, expressed as a number of
5134 seconds
5135
5136 @item pos
5137 position of the frame in the input stream, -1 if this information in
5138 unavailable and/or meaningless (for example in case of synthetic video)
5139
5140 @item fmt
5141 pixel format name
5142
5143 @item sar
5144 sample aspect ratio of the input frame, expressed in the form
5145 @var{num}/@var{den}
5146
5147 @item s
5148 size of the input frame, expressed in the form
5149 @var{width}x@var{height}
5150
5151 @item i
5152 interlaced mode ("P" for "progressive", "T" for top field first, "B"
5153 for bottom field first)
5154
5155 @item iskey
5156 1 if the frame is a key frame, 0 otherwise
5157
5158 @item type
5159 picture type of the input frame ("I" for an I-frame, "P" for a
5160 P-frame, "B" for a B-frame, "?" for unknown type).
5161 Check also the documentation of the @code{AVPictureType} enum and of
5162 the @code{av_get_picture_type_char} function defined in
5163 @file{libavutil/avutil.h}.
5164
5165 @item checksum
5166 Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame
5167
5168 @item plane_checksum
5169 Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
5170 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]"
5171 @end table
5172
5173 @section smartblur
5174
5175 Blur the input video without impacting the outlines.
5176
5177 The filter accepts the following options:
5178
5179 @table @option
5180 @item luma_radius, lr
5181 Set the luma radius. The option value must be a float number in
5182 the range [0.1,5.0] that specifies the variance of the gaussian filter
5183 used to blur the image (slower if larger). Default value is 1.0.
5184
5185 @item luma_strength, ls
5186 Set the luma strength. The option value must be a float number
5187 in the range [-1.0,1.0] that configures the blurring. A value included
5188 in [0.0,1.0] will blur the image whereas a value included in
5189 [-1.0,0.0] will sharpen the image. Default value is 1.0.
5190
5191 @item luma_threshold, lt
5192 Set the luma threshold used as a coefficient to determine
5193 whether a pixel should be blurred or not. The option value must be an
5194 integer in the range [-30,30]. A value of 0 will filter all the image,
5195 a value included in [0,30] will filter flat areas and a value included
5196 in [-30,0] will filter edges. Default value is 0.
5197
5198 @item chroma_radius, cr
5199 Set the chroma radius. The option value must be a float number in
5200 the range [0.1,5.0] that specifies the variance of the gaussian filter
5201 used to blur the image (slower if larger). Default value is 1.0.
5202
5203 @item chroma_strength, cs
5204 Set the chroma strength. The option value must be a float number
5205 in the range [-1.0,1.0] that configures the blurring. A value included
5206 in [0.0,1.0] will blur the image whereas a value included in
5207 [-1.0,0.0] will sharpen the image. Default value is 1.0.
5208
5209 @item chroma_threshold, ct
5210 Set the chroma threshold used as a coefficient to determine
5211 whether a pixel should be blurred or not. The option value must be an
5212 integer in the range [-30,30]. A value of 0 will filter all the image,
5213 a value included in [0,30] will filter flat areas and a value included
5214 in [-30,0] will filter edges. Default value is 0.
5215 @end table
5216
5217 If a chroma option is not explicitly set, the corresponding luma value
5218 is set.
5219
5220 @section stereo3d
5221
5222 Convert between different stereoscopic image formats.
5223
5224 The filters accept the following options:
5225
5226 @table @option
5227 @item in
5228 Set stereoscopic image format of input.
5229
5230 Available values for input image formats are:
5231 @table @samp
5232 @item sbsl
5233 side by side parallel (left eye left, right eye right)
5234
5235 @item sbsr
5236 side by side crosseye (right eye left, left eye right)
5237
5238 @item sbs2l
5239 side by side parallel with half width resolution
5240 (left eye left, right eye right)
5241
5242 @item sbs2r
5243 side by side crosseye with half width resolution
5244 (right eye left, left eye right)
5245
5246 @item abl
5247 above-below (left eye above, right eye below)
5248
5249 @item abr
5250 above-below (right eye above, left eye below)
5251
5252 @item ab2l
5253 above-below with half height resolution
5254 (left eye above, right eye below)
5255
5256 @item ab2r
5257 above-below with half height resolution
5258 (right eye above, left eye below)
5259
5260 Default value is @samp{sbsl}.
5261 @end table
5262
5263 @item out
5264 Set stereoscopic image format of output.
5265
5266 Available values for output image formats are all the input formats as well as:
5267 @table @samp
5268 @item arbg
5269 anaglyph red/blue gray
5270 (red filter on left eye, blue filter on right eye)
5271
5272 @item argg
5273 anaglyph red/green gray
5274 (red filter on left eye, green filter on right eye)
5275
5276 @item arcg
5277 anaglyph red/cyan gray
5278 (red filter on left eye, cyan filter on right eye)
5279
5280 @item arch
5281 anaglyph red/cyan half colored
5282 (red filter on left eye, cyan filter on right eye)
5283
5284 @item arcc
5285 anaglyph red/cyan color
5286 (red filter on left eye, cyan filter on right eye)
5287
5288 @item arcd
5289 anaglyph red/cyan color optimized with the least squares projection of dubois
5290 (red filter on left eye, cyan filter on right eye)
5291
5292 @item agmg
5293 anaglyph green/magenta gray
5294 (green filter on left eye, magenta filter on right eye)
5295
5296 @item agmh
5297 anaglyph green/magenta half colored
5298 (green filter on left eye, magenta filter on right eye)
5299
5300 @item agmc
5301 anaglyph green/magenta colored
5302 (green filter on left eye, magenta filter on right eye)
5303
5304 @item agmd
5305 anaglyph green/magenta color optimized with the least squares projection of dubois
5306 (green filter on left eye, magenta filter on right eye)
5307
5308 @item aybg
5309 anaglyph yellow/blue gray
5310 (yellow filter on left eye, blue filter on right eye)
5311
5312 @item aybh
5313 anaglyph yellow/blue half colored
5314 (yellow filter on left eye, blue filter on right eye)
5315
5316 @item aybc
5317 anaglyph yellow/blue colored
5318 (yellow filter on left eye, blue filter on right eye)
5319
5320 @item aybd
5321 anaglyph yellow/blue color optimized with the least squares projection of dubois
5322 (yellow filter on left eye, blue filter on right eye)
5323
5324 @item irl
5325 interleaved rows (left eye has top row, right eye starts on next row)
5326
5327 @item irr
5328 interleaved rows (right eye has top row, left eye starts on next row)
5329
5330 @item ml
5331 mono output (left eye only)
5332
5333 @item mr
5334 mono output (right eye only)
5335 @end table
5336
5337 Default value is @samp{arcd}.
5338 @end table
5339
5340 @anchor{subtitles}
5341 @section subtitles
5342
5343 Draw subtitles on top of input video using the libass library.
5344
5345 To enable compilation of this filter you need to configure FFmpeg with
5346 @code{--enable-libass}. This filter also requires a build with libavcodec and
5347 libavformat to convert the passed subtitles file to ASS (Advanced Substation
5348 Alpha) subtitles format.
5349
5350 The filter accepts the following options:
5351
5352 @table @option
5353 @item filename, f
5354 Set the filename of the subtitle file to read. It must be specified.
5355
5356 @item original_size
5357 Specify the size of the original video, the video for which the ASS file
5358 was composed. Due to a misdesign in ASS aspect ratio arithmetic, this is
5359 necessary to correctly scale the fonts if the aspect ratio has been changed.
5360
5361 @item charenc
5362 Set subtitles input character encoding. @code{subtitles} filter only. Only
5363 useful if not UTF-8.
5364 @end table
5365
5366 If the first key is not specified, it is assumed that the first value
5367 specifies the @option{filename}.
5368
5369 For example, to render the file @file{sub.srt} on top of the input
5370 video, use the command:
5371 @example
5372 subtitles=sub.srt
5373 @end example
5374
5375 which is equivalent to:
5376 @example
5377 subtitles=filename=sub.srt
5378 @end example
5379
5380 @section split
5381
5382 Split input video into several identical outputs.
5383
5384 The filter accepts a single parameter which specifies the number of outputs. If
5385 unspecified, it defaults to 2.
5386
5387 For example
5388 @example
5389 ffmpeg -i INPUT -filter_complex split=5 OUTPUT
5390 @end example
5391 will create 5 copies of the input video.
5392
5393 For example:
5394 @example
5395 [in] split [splitout1][splitout2];
5396 [splitout1] crop=100:100:0:0    [cropout];
5397 [splitout2] pad=200:200:100:100 [padout];
5398 @end example
5399
5400 will create two separate outputs from the same input, one cropped and
5401 one padded.
5402
5403 @section super2xsai
5404
5405 Scale the input by 2x and smooth using the Super2xSaI (Scale and
5406 Interpolate) pixel art scaling algorithm.
5407
5408 Useful for enlarging pixel art images without reducing sharpness.
5409
5410 @section swapuv
5411 Swap U & V plane.
5412
5413 @section thumbnail
5414 Select the most representative frame in a given sequence of consecutive frames.
5415
5416 The filter accepts the following options:
5417
5418 @table @option
5419 @item n
5420 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
5421 will pick one of them, and then handle the next batch of @var{n} frames until
5422 the end. Default is @code{100}.
5423 @end table
5424
5425 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
5426 value will result in a higher memory usage, so a high value is not recommended.
5427
5428 @subsection Examples
5429
5430 @itemize
5431 @item
5432 Extract one picture each 50 frames:
5433 @example
5434 thumbnail=50
5435 @end example
5436
5437 @item
5438 Complete example of a thumbnail creation with @command{ffmpeg}:
5439 @example
5440 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
5441 @end example
5442 @end itemize
5443
5444 @section tile
5445
5446 Tile several successive frames together.
5447
5448 The filter accepts the following options:
5449
5450 @table @option
5451
5452 @item layout
5453 Set the grid size (i.e. the number of lines and columns) in the form
5454 "@var{w}x@var{h}".
5455
5456 @item nb_frames
5457 Set the maximum number of frames to render in the given area. It must be less
5458 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
5459 the area will be used.
5460
5461 @item margin
5462 Set the outer border margin in pixels.
5463
5464 @item padding
5465 Set the inner border thickness (i.e. the number of pixels between frames). For
5466 more advanced padding options (such as having different values for the edges),
5467 refer to the pad video filter.
5468
5469 @end table
5470
5471 @subsection Examples
5472
5473 @itemize
5474 @item
5475 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
5476 @example
5477 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
5478 @end example
5479 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
5480 duplicating each output frame to accomodate the originally detected frame
5481 rate.
5482
5483 @item
5484 Display @code{5} pictures in an area of @code{3x2} frames,
5485 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
5486 mixed flat and named options:
5487 @example
5488 tile=3x2:nb_frames=5:padding=7:margin=2
5489 @end example
5490 @end itemize
5491
5492 @section tinterlace
5493
5494 Perform various types of temporal field interlacing.
5495
5496 Frames are counted starting from 1, so the first input frame is
5497 considered odd.
5498
5499 The filter accepts the following options:
5500
5501 @table @option
5502
5503 @item mode
5504 Specify the mode of the interlacing. This option can also be specified
5505 as a value alone. See below for a list of values for this option.
5506
5507 Available values are:
5508
5509 @table @samp
5510 @item merge, 0
5511 Move odd frames into the upper field, even into the lower field,
5512 generating a double height frame at half frame rate.
5513
5514 @item drop_odd, 1
5515 Only output even frames, odd frames are dropped, generating a frame with
5516 unchanged height at half frame rate.
5517
5518 @item drop_even, 2
5519 Only output odd frames, even frames are dropped, generating a frame with
5520 unchanged height at half frame rate.
5521
5522 @item pad, 3
5523 Expand each frame to full height, but pad alternate lines with black,
5524 generating a frame with double height at the same input frame rate.
5525
5526 @item interleave_top, 4
5527 Interleave the upper field from odd frames with the lower field from
5528 even frames, generating a frame with unchanged height at half frame rate.
5529
5530 @item interleave_bottom, 5
5531 Interleave the lower field from odd frames with the upper field from
5532 even frames, generating a frame with unchanged height at half frame rate.
5533
5534 @item interlacex2, 6
5535 Double frame rate with unchanged height. Frames are inserted each
5536 containing the second temporal field from the previous input frame and
5537 the first temporal field from the next input frame. This mode relies on
5538 the top_field_first flag. Useful for interlaced video displays with no
5539 field synchronisation.
5540 @end table
5541
5542 Numeric values are deprecated but are accepted for backward
5543 compatibility reasons.
5544
5545 Default mode is @code{merge}.
5546
5547 @item flags
5548 Specify flags influencing the filter process.
5549
5550 Available value for @var{flags} is:
5551
5552 @table @option
5553 @item low_pass_filter, vlfp
5554 Enable vertical low-pass filtering in the filter.
5555 Vertical low-pass filtering is required when creating an interlaced
5556 destination from a progressive source which contains high-frequency
5557 vertical detail. Filtering will reduce interlace 'twitter' and Moire
5558 patterning.
5559
5560 Vertical low-pass filtering can only be enabled for @option{mode}
5561 @var{interleave_top} and @var{interleave_bottom}.
5562
5563 @end table
5564 @end table
5565
5566 @section transpose
5567
5568 Transpose rows with columns in the input video and optionally flip it.
5569
5570 This filter accepts the following options:
5571
5572 @table @option
5573
5574 @item dir
5575 The direction of the transpose.
5576
5577 @table @samp
5578 @item 0, 4, cclock_flip
5579 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
5580 @example
5581 L.R     L.l
5582 . . ->  . .
5583 l.r     R.r
5584 @end example
5585
5586 @item 1, 5, clock
5587 Rotate by 90 degrees clockwise, that is:
5588 @example
5589 L.R     l.L
5590 . . ->  . .
5591 l.r     r.R
5592 @end example
5593
5594 @item 2, 6, cclock
5595 Rotate by 90 degrees counterclockwise, that is:
5596 @example
5597 L.R     R.r
5598 . . ->  . .
5599 l.r     L.l
5600 @end example
5601
5602 @item 3, 7, clock_flip
5603 Rotate by 90 degrees clockwise and vertically flip, that is:
5604 @example
5605 L.R     r.R
5606 . . ->  . .
5607 l.r     l.L
5608 @end example
5609 @end table
5610
5611 For values between 4-7, the transposition is only done if the input
5612 video geometry is portrait and not landscape. These values are
5613 deprecated, the @code{passthrough} option should be used instead.
5614
5615 @item passthrough
5616 Do not apply the transposition if the input geometry matches the one
5617 specified by the specified value. It accepts the following values:
5618 @table @samp
5619 @item none
5620 Always apply transposition.
5621 @item portrait
5622 Preserve portrait geometry (when @var{height} >= @var{width}).
5623 @item landscape
5624 Preserve landscape geometry (when @var{width} >= @var{height}).
5625 @end table
5626
5627 Default value is @code{none}.
5628 @end table
5629
5630 For example to rotate by 90 degrees clockwise and preserve portrait
5631 layout:
5632 @example
5633 transpose=dir=1:passthrough=portrait
5634 @end example
5635
5636 The command above can also be specified as:
5637 @example
5638 transpose=1:portrait
5639 @end example
5640
5641 @section unsharp
5642
5643 Sharpen or blur the input video.
5644
5645 It accepts the following parameters:
5646
5647 @table @option
5648 @item luma_msize_x, lx
5649 @item chroma_msize_x, cx
5650 Set the luma/chroma matrix horizontal size. It must be an odd integer
5651 between 3 and 63, default value is 5.
5652
5653 @item luma_msize_y, ly
5654 @item chroma_msize_y, cy
5655 Set the luma/chroma matrix vertical size. It must be an odd integer
5656 between 3 and 63, default value is 5.
5657
5658 @item luma_amount, la
5659 @item chroma_amount, ca
5660 Set the luma/chroma effect strength. It can be a float number,
5661 reasonable values lay between -1.5 and 1.5.
5662
5663 Negative values will blur the input video, while positive values will
5664 sharpen it, a value of zero will disable the effect.
5665
5666 Default value is 1.0 for @option{luma_amount}, 0.0 for
5667 @option{chroma_amount}.
5668 @end table
5669
5670 All parameters are optional and default to the
5671 equivalent of the string '5:5:1.0:5:5:0.0'.
5672
5673 @subsection Examples
5674
5675 @itemize
5676 @item
5677 Apply strong luma sharpen effect:
5678 @example
5679 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
5680 @end example
5681
5682 @item
5683 Apply strong blur of both luma and chroma parameters:
5684 @example
5685 unsharp=7:7:-2:7:7:-2
5686 @end example
5687 @end itemize
5688
5689 @section vflip
5690
5691 Flip the input video vertically.
5692
5693 @example
5694 ffmpeg -i in.avi -vf "vflip" out.avi
5695 @end example
5696
5697 @section yadif
5698
5699 Deinterlace the input video ("yadif" means "yet another deinterlacing
5700 filter").
5701
5702 This filter accepts the following options:
5703
5704
5705 @table @option
5706
5707 @item mode
5708 The interlacing mode to adopt, accepts one of the following values:
5709
5710 @table @option
5711 @item 0, send_frame
5712 output 1 frame for each frame
5713 @item 1, send_field
5714 output 1 frame for each field
5715 @item 2, send_frame_nospatial
5716 like @code{send_frame} but skip spatial interlacing check
5717 @item 3, send_field_nospatial
5718 like @code{send_field} but skip spatial interlacing check
5719 @end table
5720
5721 Default value is @code{send_frame}.
5722
5723 @item parity
5724 The picture field parity assumed for the input interlaced video, accepts one of
5725 the following values:
5726
5727 @table @option
5728 @item 0, tff
5729 assume top field first
5730 @item 1, bff
5731 assume bottom field first
5732 @item -1, auto
5733 enable automatic detection
5734 @end table
5735
5736 Default value is @code{auto}.
5737 If interlacing is unknown or decoder does not export this information,
5738 top field first will be assumed.
5739
5740 @item deint
5741 Specify which frames to deinterlace. Accept one of the following
5742 values:
5743
5744 @table @option
5745 @item 0, all
5746 deinterlace all frames
5747 @item 1, interlaced
5748 only deinterlace frames marked as interlaced
5749 @end table
5750
5751 Default value is @code{all}.
5752 @end table
5753
5754 @c man end VIDEO FILTERS
5755
5756 @chapter Video Sources
5757 @c man begin VIDEO SOURCES
5758
5759 Below is a description of the currently available video sources.
5760
5761 @section buffer
5762
5763 Buffer video frames, and make them available to the filter chain.
5764
5765 This source is mainly intended for a programmatic use, in particular
5766 through the interface defined in @file{libavfilter/vsrc_buffer.h}.
5767
5768 It accepts a list of options in the form of @var{key}=@var{value} pairs
5769 separated by ":". A description of the accepted options follows.
5770
5771 @table @option
5772
5773 @item video_size
5774 Specify the size (width and height) of the buffered video frames.
5775
5776 @item width
5777 Input video width.
5778
5779 @item height
5780 Input video height.
5781
5782 @item pix_fmt
5783 A string representing the pixel format of the buffered video frames.
5784 It may be a number corresponding to a pixel format, or a pixel format
5785 name.
5786
5787 @item time_base
5788 Specify the timebase assumed by the timestamps of the buffered frames.
5789
5790 @item frame_rate
5791 Specify the frame rate expected for the video stream.
5792
5793 @item pixel_aspect, sar
5794 Specify the sample aspect ratio assumed by the video frames.
5795
5796 @item sws_param
5797 Specify the optional parameters to be used for the scale filter which
5798 is automatically inserted when an input change is detected in the
5799 input size or format.
5800 @end table
5801
5802 For example:
5803 @example
5804 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
5805 @end example
5806
5807 will instruct the source to accept video frames with size 320x240 and
5808 with format "yuv410p", assuming 1/24 as the timestamps timebase and
5809 square pixels (1:1 sample aspect ratio).
5810 Since the pixel format with name "yuv410p" corresponds to the number 6
5811 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
5812 this example corresponds to:
5813 @example
5814 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
5815 @end example
5816
5817 Alternatively, the options can be specified as a flat string, but this
5818 syntax is deprecated:
5819
5820 @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}]
5821
5822 @section cellauto
5823
5824 Create a pattern generated by an elementary cellular automaton.
5825
5826 The initial state of the cellular automaton can be defined through the
5827 @option{filename}, and @option{pattern} options. If such options are
5828 not specified an initial state is created randomly.
5829
5830 At each new frame a new row in the video is filled with the result of
5831 the cellular automaton next generation. The behavior when the whole
5832 frame is filled is defined by the @option{scroll} option.
5833
5834 This source accepts the following options:
5835
5836 @table @option
5837 @item filename, f
5838 Read the initial cellular automaton state, i.e. the starting row, from
5839 the specified file.
5840 In the file, each non-whitespace character is considered an alive
5841 cell, a newline will terminate the row, and further characters in the
5842 file will be ignored.
5843
5844 @item pattern, p
5845 Read the initial cellular automaton state, i.e. the starting row, from
5846 the specified string.
5847
5848 Each non-whitespace character in the string is considered an alive
5849 cell, a newline will terminate the row, and further characters in the
5850 string will be ignored.
5851
5852 @item rate, r
5853 Set the video rate, that is the number of frames generated per second.
5854 Default is 25.
5855
5856 @item random_fill_ratio, ratio
5857 Set the random fill ratio for the initial cellular automaton row. It
5858 is a floating point number value ranging from 0 to 1, defaults to
5859 1/PHI.
5860
5861 This option is ignored when a file or a pattern is specified.
5862
5863 @item random_seed, seed
5864 Set the seed for filling randomly the initial row, must be an integer
5865 included between 0 and UINT32_MAX. If not specified, or if explicitly
5866 set to -1, the filter will try to use a good random seed on a best
5867 effort basis.
5868
5869 @item rule
5870 Set the cellular automaton rule, it is a number ranging from 0 to 255.
5871 Default value is 110.
5872
5873 @item size, s
5874 Set the size of the output video.
5875
5876 If @option{filename} or @option{pattern} is specified, the size is set
5877 by default to the width of the specified initial state row, and the
5878 height is set to @var{width} * PHI.
5879
5880 If @option{size} is set, it must contain the width of the specified
5881 pattern string, and the specified pattern will be centered in the
5882 larger row.
5883
5884 If a filename or a pattern string is not specified, the size value
5885 defaults to "320x518" (used for a randomly generated initial state).
5886
5887 @item scroll
5888 If set to 1, scroll the output upward when all the rows in the output
5889 have been already filled. If set to 0, the new generated row will be
5890 written over the top row just after the bottom row is filled.
5891 Defaults to 1.
5892
5893 @item start_full, full
5894 If set to 1, completely fill the output with generated rows before
5895 outputting the first frame.
5896 This is the default behavior, for disabling set the value to 0.
5897
5898 @item stitch
5899 If set to 1, stitch the left and right row edges together.
5900 This is the default behavior, for disabling set the value to 0.
5901 @end table
5902
5903 @subsection Examples
5904
5905 @itemize
5906 @item
5907 Read the initial state from @file{pattern}, and specify an output of
5908 size 200x400.
5909 @example
5910 cellauto=f=pattern:s=200x400
5911 @end example
5912
5913 @item
5914 Generate a random initial row with a width of 200 cells, with a fill
5915 ratio of 2/3:
5916 @example
5917 cellauto=ratio=2/3:s=200x200
5918 @end example
5919
5920 @item
5921 Create a pattern generated by rule 18 starting by a single alive cell
5922 centered on an initial row with width 100:
5923 @example
5924 cellauto=p=@@:s=100x400:full=0:rule=18
5925 @end example
5926
5927 @item
5928 Specify a more elaborated initial pattern:
5929 @example
5930 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
5931 @end example
5932
5933 @end itemize
5934
5935 @section mandelbrot
5936
5937 Generate a Mandelbrot set fractal, and progressively zoom towards the
5938 point specified with @var{start_x} and @var{start_y}.
5939
5940 This source accepts the following options:
5941
5942 @table @option
5943
5944 @item end_pts
5945 Set the terminal pts value. Default value is 400.
5946
5947 @item end_scale
5948 Set the terminal scale value.
5949 Must be a floating point value. Default value is 0.3.
5950
5951 @item inner
5952 Set the inner coloring mode, that is the algorithm used to draw the
5953 Mandelbrot fractal internal region.
5954
5955 It shall assume one of the following values:
5956 @table @option
5957 @item black
5958 Set black mode.
5959 @item convergence
5960 Show time until convergence.
5961 @item mincol
5962 Set color based on point closest to the origin of the iterations.
5963 @item period
5964 Set period mode.
5965 @end table
5966
5967 Default value is @var{mincol}.
5968
5969 @item bailout
5970 Set the bailout value. Default value is 10.0.
5971
5972 @item maxiter
5973 Set the maximum of iterations performed by the rendering
5974 algorithm. Default value is 7189.
5975
5976 @item outer
5977 Set outer coloring mode.
5978 It shall assume one of following values:
5979 @table @option
5980 @item iteration_count
5981 Set iteration cound mode.
5982 @item normalized_iteration_count
5983 set normalized iteration count mode.
5984 @end table
5985 Default value is @var{normalized_iteration_count}.
5986
5987 @item rate, r
5988 Set frame rate, expressed as number of frames per second. Default
5989 value is "25".
5990
5991 @item size, s
5992 Set frame size. Default value is "640x480".
5993
5994 @item start_scale
5995 Set the initial scale value. Default value is 3.0.
5996
5997 @item start_x
5998 Set the initial x position. Must be a floating point value between
5999 -100 and 100. Default value is -0.743643887037158704752191506114774.
6000
6001 @item start_y
6002 Set the initial y position. Must be a floating point value between
6003 -100 and 100. Default value is -0.131825904205311970493132056385139.
6004 @end table
6005
6006 @section mptestsrc
6007
6008 Generate various test patterns, as generated by the MPlayer test filter.
6009
6010 The size of the generated video is fixed, and is 256x256.
6011 This source is useful in particular for testing encoding features.
6012
6013 This source accepts the following options:
6014
6015 @table @option
6016
6017 @item rate, r
6018 Specify the frame rate of the sourced video, as the number of frames
6019 generated per second. It has to be a string in the format
6020 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a float
6021 number or a valid video frame rate abbreviation. The default value is
6022 "25".
6023
6024 @item duration, d
6025 Set the video duration of the sourced video. The accepted syntax is:
6026 @example
6027 [-]HH:MM:SS[.m...]
6028 [-]S+[.m...]
6029 @end example
6030 See also the function @code{av_parse_time()}.
6031
6032 If not specified, or the expressed duration is negative, the video is
6033 supposed to be generated forever.
6034
6035 @item test, t
6036
6037 Set the number or the name of the test to perform. Supported tests are:
6038 @table @option
6039 @item dc_luma
6040 @item dc_chroma
6041 @item freq_luma
6042 @item freq_chroma
6043 @item amp_luma
6044 @item amp_chroma
6045 @item cbp
6046 @item mv
6047 @item ring1
6048 @item ring2
6049 @item all
6050 @end table
6051
6052 Default value is "all", which will cycle through the list of all tests.
6053 @end table
6054
6055 For example the following:
6056 @example
6057 testsrc=t=dc_luma
6058 @end example
6059
6060 will generate a "dc_luma" test pattern.
6061
6062 @section frei0r_src
6063
6064 Provide a frei0r source.
6065
6066 To enable compilation of this filter you need to install the frei0r
6067 header and configure FFmpeg with @code{--enable-frei0r}.
6068
6069 This source accepts the following options:
6070
6071 @table @option
6072
6073 @item size
6074 The size of the video to generate, may be a string of the form
6075 @var{width}x@var{height} or a frame size abbreviation.
6076
6077 @item framerate
6078 Framerate of the generated video, may be a string of the form
6079 @var{num}/@var{den} or a frame rate abbreviation.
6080
6081 @item filter_name
6082 The name to the frei0r source to load. For more information regarding frei0r and
6083 how to set the parameters read the section @ref{frei0r} in the description of
6084 the video filters.
6085
6086 @item filter_params
6087 A '|'-separated list of parameters to pass to the frei0r source.
6088
6089 @end table
6090
6091 For example, to generate a frei0r partik0l source with size 200x200
6092 and frame rate 10 which is overlayed on the overlay filter main input:
6093 @example
6094 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
6095 @end example
6096
6097 @section life
6098
6099 Generate a life pattern.
6100
6101 This source is based on a generalization of John Conway's life game.
6102
6103 The sourced input represents a life grid, each pixel represents a cell
6104 which can be in one of two possible states, alive or dead. Every cell
6105 interacts with its eight neighbours, which are the cells that are
6106 horizontally, vertically, or diagonally adjacent.
6107
6108 At each interaction the grid evolves according to the adopted rule,
6109 which specifies the number of neighbor alive cells which will make a
6110 cell stay alive or born. The @option{rule} option allows to specify
6111 the rule to adopt.
6112
6113 This source accepts the following options:
6114
6115 @table @option
6116 @item filename, f
6117 Set the file from which to read the initial grid state. In the file,
6118 each non-whitespace character is considered an alive cell, and newline
6119 is used to delimit the end of each row.
6120
6121 If this option is not specified, the initial grid is generated
6122 randomly.
6123
6124 @item rate, r
6125 Set the video rate, that is the number of frames generated per second.
6126 Default is 25.
6127
6128 @item random_fill_ratio, ratio
6129 Set the random fill ratio for the initial random grid. It is a
6130 floating point number value ranging from 0 to 1, defaults to 1/PHI.
6131 It is ignored when a file is specified.
6132
6133 @item random_seed, seed
6134 Set the seed for filling the initial random grid, must be an integer
6135 included between 0 and UINT32_MAX. If not specified, or if explicitly
6136 set to -1, the filter will try to use a good random seed on a best
6137 effort basis.
6138
6139 @item rule
6140 Set the life rule.
6141
6142 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
6143 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
6144 @var{NS} specifies the number of alive neighbor cells which make a
6145 live cell stay alive, and @var{NB} the number of alive neighbor cells
6146 which make a dead cell to become alive (i.e. to "born").
6147 "s" and "b" can be used in place of "S" and "B", respectively.
6148
6149 Alternatively a rule can be specified by an 18-bits integer. The 9
6150 high order bits are used to encode the next cell state if it is alive
6151 for each number of neighbor alive cells, the low order bits specify
6152 the rule for "borning" new cells. Higher order bits encode for an
6153 higher number of neighbor cells.
6154 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
6155 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
6156
6157 Default value is "S23/B3", which is the original Conway's game of life
6158 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
6159 cells, and will born a new cell if there are three alive cells around
6160 a dead cell.
6161
6162 @item size, s
6163 Set the size of the output video.
6164
6165 If @option{filename} is specified, the size is set by default to the
6166 same size of the input file. If @option{size} is set, it must contain
6167 the size specified in the input file, and the initial grid defined in
6168 that file is centered in the larger resulting area.
6169
6170 If a filename is not specified, the size value defaults to "320x240"
6171 (used for a randomly generated initial grid).
6172
6173 @item stitch
6174 If set to 1, stitch the left and right grid edges together, and the
6175 top and bottom edges also. Defaults to 1.
6176
6177 @item mold
6178 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
6179 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
6180 value from 0 to 255.
6181
6182 @item life_color
6183 Set the color of living (or new born) cells.
6184
6185 @item death_color
6186 Set the color of dead cells. If @option{mold} is set, this is the first color
6187 used to represent a dead cell.
6188
6189 @item mold_color
6190 Set mold color, for definitely dead and moldy cells.
6191 @end table
6192
6193 @subsection Examples
6194
6195 @itemize
6196 @item
6197 Read a grid from @file{pattern}, and center it on a grid of size
6198 300x300 pixels:
6199 @example
6200 life=f=pattern:s=300x300
6201 @end example
6202
6203 @item
6204 Generate a random grid of size 200x200, with a fill ratio of 2/3:
6205 @example
6206 life=ratio=2/3:s=200x200
6207 @end example
6208
6209 @item
6210 Specify a custom rule for evolving a randomly generated grid:
6211 @example
6212 life=rule=S14/B34
6213 @end example
6214
6215 @item
6216 Full example with slow death effect (mold) using @command{ffplay}:
6217 @example
6218 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
6219 @end example
6220 @end itemize
6221
6222 @section color, nullsrc, rgbtestsrc, smptebars, testsrc
6223
6224 The @code{color} source provides an uniformly colored input.
6225
6226 The @code{nullsrc} source returns unprocessed video frames. It is
6227 mainly useful to be employed in analysis / debugging tools, or as the
6228 source for filters which ignore the input data.
6229
6230 The @code{rgbtestsrc} source generates an RGB test pattern useful for
6231 detecting RGB vs BGR issues. You should see a red, green and blue
6232 stripe from top to bottom.
6233
6234 The @code{smptebars} source generates a color bars pattern, based on
6235 the SMPTE Engineering Guideline EG 1-1990.
6236
6237 The @code{testsrc} source generates a test video pattern, showing a
6238 color pattern, a scrolling gradient and a timestamp. This is mainly
6239 intended for testing purposes.
6240
6241 The sources accept the following options:
6242
6243 @table @option
6244
6245 @item color, c
6246 Specify the color of the source, only used in the @code{color}
6247 source. It can be the name of a color (case insensitive match) or a
6248 0xRRGGBB[AA] sequence, possibly followed by an alpha specifier. The
6249 default value is "black".
6250
6251 @item size, s
6252 Specify the size of the sourced video, it may be a string of the form
6253 @var{width}x@var{height}, or the name of a size abbreviation. The
6254 default value is "320x240".
6255
6256 @item rate, r
6257 Specify the frame rate of the sourced video, as the number of frames
6258 generated per second. It has to be a string in the format
6259 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a float
6260 number or a valid video frame rate abbreviation. The default value is
6261 "25".
6262
6263 @item sar
6264 Set the sample aspect ratio of the sourced video.
6265
6266 @item duration, d
6267 Set the video duration of the sourced video. The accepted syntax is:
6268 @example
6269 [-]HH[:MM[:SS[.m...]]]
6270 [-]S+[.m...]
6271 @end example
6272 See also the function @code{av_parse_time()}.
6273
6274 If not specified, or the expressed duration is negative, the video is
6275 supposed to be generated forever.
6276
6277 @item decimals, n
6278 Set the number of decimals to show in the timestamp, only used in the
6279 @code{testsrc} source.
6280
6281 The displayed timestamp value will correspond to the original
6282 timestamp value multiplied by the power of 10 of the specified
6283 value. Default value is 0.
6284 @end table
6285
6286 For example the following:
6287 @example
6288 testsrc=duration=5.3:size=qcif:rate=10
6289 @end example
6290
6291 will generate a video with a duration of 5.3 seconds, with size
6292 176x144 and a frame rate of 10 frames per second.
6293
6294 The following graph description will generate a red source
6295 with an opacity of 0.2, with size "qcif" and a frame rate of 10
6296 frames per second.
6297 @example
6298 color=c=red@@0.2:s=qcif:r=10
6299 @end example
6300
6301 If the input content is to be ignored, @code{nullsrc} can be used. The
6302 following command generates noise in the luminance plane by employing
6303 the @code{geq} filter:
6304 @example
6305 nullsrc=s=256x256, geq=random(1)*255:128:128
6306 @end example
6307
6308 @c man end VIDEO SOURCES
6309
6310 @chapter Video Sinks
6311 @c man begin VIDEO SINKS
6312
6313 Below is a description of the currently available video sinks.
6314
6315 @section buffersink
6316
6317 Buffer video frames, and make them available to the end of the filter
6318 graph.
6319
6320 This sink is mainly intended for a programmatic use, in particular
6321 through the interface defined in @file{libavfilter/buffersink.h}.
6322
6323 It does not require a string parameter in input, but you need to
6324 specify a pointer to a list of supported pixel formats terminated by
6325 -1 in the opaque parameter provided to @code{avfilter_init_filter}
6326 when initializing this sink.
6327
6328 @section nullsink
6329
6330 Null video sink, do absolutely nothing with the input video. It is
6331 mainly useful as a template and to be employed in analysis / debugging
6332 tools.
6333
6334 @c man end VIDEO SINKS
6335
6336 @chapter Multimedia Filters
6337 @c man begin MULTIMEDIA FILTERS
6338
6339 Below is a description of the currently available multimedia filters.
6340
6341 @section aperms, perms
6342
6343 Set read/write permissions for the output frames.
6344
6345 These filters are mainly aimed at developers to test direct path in the
6346 following filter in the filtergraph.
6347
6348 The filters accept the following options:
6349
6350 @table @option
6351 @item mode
6352 Select the permissions mode.
6353
6354 It accepts the following values:
6355 @table @samp
6356 @item none
6357 Do nothing. This is the default.
6358 @item ro
6359 Set all the output frames read-only.
6360 @item rw
6361 Set all the output frames directly writable.
6362 @item toggle
6363 Make the frame read-only if writable, and writable if read-only.
6364 @item random
6365 Set each output frame read-only or writable randomly.
6366 @end table
6367
6368 @item seed
6369 Set the seed for the @var{random} mode, must be an integer included between
6370 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
6371 @code{-1}, the filter will try to use a good random seed on a best effort
6372 basis.
6373 @end table
6374
6375 Note: in case of auto-inserted filter between the permission filter and the
6376 following one, the permission might not be received as expected in that
6377 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
6378 perms/aperms filter can avoid this problem.
6379
6380 @section aphaser
6381 Add a phasing effect to the input audio.
6382
6383 A phaser filter creates series of peaks and troughs in the frequency spectrum.
6384 The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
6385
6386 A description of the accepted parameters follows.
6387
6388 @table @option
6389 @item in_gain
6390 Set input gain. Default is 0.4.
6391
6392 @item out_gain
6393 Set output gain. Default is 0.74
6394
6395 @item delay
6396 Set delay in milliseconds. Default is 3.0.
6397
6398 @item decay
6399 Set decay. Default is 0.4.
6400
6401 @item speed
6402 Set modulation speed in Hz. Default is 0.5.
6403
6404 @item type
6405 Set modulation type. Default is triangular.
6406
6407 It accepts the following values:
6408 @table @samp
6409 @item triangular, t
6410 @item sinusoidal, s
6411 @end table
6412 @end table
6413
6414 @section aselect, select
6415 Select frames to pass in output.
6416
6417 This filter accepts the following options:
6418
6419 @table @option
6420
6421 @item expr, e
6422 An expression, which is evaluated for each input frame. If the expression is
6423 evaluated to a non-zero value, the frame is selected and passed to the output,
6424 otherwise it is discarded.
6425
6426 @end table
6427
6428 The expression can contain the following constants:
6429
6430 @table @option
6431 @item n
6432 the sequential number of the filtered frame, starting from 0
6433
6434 @item selected_n
6435 the sequential number of the selected frame, starting from 0
6436
6437 @item prev_selected_n
6438 the sequential number of the last selected frame, NAN if undefined
6439
6440 @item TB
6441 timebase of the input timestamps
6442
6443 @item pts
6444 the PTS (Presentation TimeStamp) of the filtered video frame,
6445 expressed in @var{TB} units, NAN if undefined
6446
6447 @item t
6448 the PTS (Presentation TimeStamp) of the filtered video frame,
6449 expressed in seconds, NAN if undefined
6450
6451 @item prev_pts
6452 the PTS of the previously filtered video frame, NAN if undefined
6453
6454 @item prev_selected_pts
6455 the PTS of the last previously filtered video frame, NAN if undefined
6456
6457 @item prev_selected_t
6458 the PTS of the last previously selected video frame, NAN if undefined
6459
6460 @item start_pts
6461 the PTS of the first video frame in the video, NAN if undefined
6462
6463 @item start_t
6464 the time of the first video frame in the video, NAN if undefined
6465
6466 @item pict_type @emph{(video only)}
6467 the type of the filtered frame, can assume one of the following
6468 values:
6469 @table @option
6470 @item I
6471 @item P
6472 @item B
6473 @item S
6474 @item SI
6475 @item SP
6476 @item BI
6477 @end table
6478
6479 @item interlace_type @emph{(video only)}
6480 the frame interlace type, can assume one of the following values:
6481 @table @option
6482 @item PROGRESSIVE
6483 the frame is progressive (not interlaced)
6484 @item TOPFIRST
6485 the frame is top-field-first
6486 @item BOTTOMFIRST
6487 the frame is bottom-field-first
6488 @end table
6489
6490 @item consumed_sample_n @emph{(audio only)}
6491 the number of selected samples before the current frame
6492
6493 @item samples_n @emph{(audio only)}
6494 the number of samples in the current frame
6495
6496 @item sample_rate @emph{(audio only)}
6497 the input sample rate
6498
6499 @item key
6500 1 if the filtered frame is a key-frame, 0 otherwise
6501
6502 @item pos
6503 the position in the file of the filtered frame, -1 if the information
6504 is not available (e.g. for synthetic video)
6505
6506 @item scene @emph{(video only)}
6507 value between 0 and 1 to indicate a new scene; a low value reflects a low
6508 probability for the current frame to introduce a new scene, while a higher
6509 value means the current frame is more likely to be one (see the example below)
6510
6511 @end table
6512
6513 The default value of the select expression is "1".
6514
6515 @subsection Examples
6516
6517 @itemize
6518 @item
6519 Select all frames in input:
6520 @example
6521 select
6522 @end example
6523
6524 The example above is the same as:
6525 @example
6526 select=1
6527 @end example
6528
6529 @item
6530 Skip all frames:
6531 @example
6532 select=0
6533 @end example
6534
6535 @item
6536 Select only I-frames:
6537 @example
6538 select='eq(pict_type\,I)'
6539 @end example
6540
6541 @item
6542 Select one frame every 100:
6543 @example
6544 select='not(mod(n\,100))'
6545 @end example
6546
6547 @item
6548 Select only frames contained in the 10-20 time interval:
6549 @example
6550 select='gte(t\,10)*lte(t\,20)'
6551 @end example
6552
6553 @item
6554 Select only I frames contained in the 10-20 time interval:
6555 @example
6556 select='gte(t\,10)*lte(t\,20)*eq(pict_type\,I)'
6557 @end example
6558
6559 @item
6560 Select frames with a minimum distance of 10 seconds:
6561 @example
6562 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
6563 @end example
6564
6565 @item
6566 Use aselect to select only audio frames with samples number > 100:
6567 @example
6568 aselect='gt(samples_n\,100)'
6569 @end example
6570
6571 @item
6572 Create a mosaic of the first scenes:
6573 @example
6574 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
6575 @end example
6576
6577 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
6578 choice.
6579 @end itemize
6580
6581 @section asendcmd, sendcmd
6582
6583 Send commands to filters in the filtergraph.
6584
6585 These filters read commands to be sent to other filters in the
6586 filtergraph.
6587
6588 @code{asendcmd} must be inserted between two audio filters,
6589 @code{sendcmd} must be inserted between two video filters, but apart
6590 from that they act the same way.
6591
6592 The specification of commands can be provided in the filter arguments
6593 with the @var{commands} option, or in a file specified by the
6594 @var{filename} option.
6595
6596 These filters accept the following options:
6597 @table @option
6598 @item commands, c
6599 Set the commands to be read and sent to the other filters.
6600 @item filename, f
6601 Set the filename of the commands to be read and sent to the other
6602 filters.
6603 @end table
6604
6605 @subsection Commands syntax
6606
6607 A commands description consists of a sequence of interval
6608 specifications, comprising a list of commands to be executed when a
6609 particular event related to that interval occurs. The occurring event
6610 is typically the current frame time entering or leaving a given time
6611 interval.
6612
6613 An interval is specified by the following syntax:
6614 @example
6615 @var{START}[-@var{END}] @var{COMMANDS};
6616 @end example
6617
6618 The time interval is specified by the @var{START} and @var{END} times.
6619 @var{END} is optional and defaults to the maximum time.
6620
6621 The current frame time is considered within the specified interval if
6622 it is included in the interval [@var{START}, @var{END}), that is when
6623 the time is greater or equal to @var{START} and is lesser than
6624 @var{END}.
6625
6626 @var{COMMANDS} consists of a sequence of one or more command
6627 specifications, separated by ",", relating to that interval.  The
6628 syntax of a command specification is given by:
6629 @example
6630 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
6631 @end example
6632
6633 @var{FLAGS} is optional and specifies the type of events relating to
6634 the time interval which enable sending the specified command, and must
6635 be a non-null sequence of identifier flags separated by "+" or "|" and
6636 enclosed between "[" and "]".
6637
6638 The following flags are recognized:
6639 @table @option
6640 @item enter
6641 The command is sent when the current frame timestamp enters the
6642 specified interval. In other words, the command is sent when the
6643 previous frame timestamp was not in the given interval, and the
6644 current is.
6645
6646 @item leave
6647 The command is sent when the current frame timestamp leaves the
6648 specified interval. In other words, the command is sent when the
6649 previous frame timestamp was in the given interval, and the
6650 current is not.
6651 @end table
6652
6653 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
6654 assumed.
6655
6656 @var{TARGET} specifies the target of the command, usually the name of
6657 the filter class or a specific filter instance name.
6658
6659 @var{COMMAND} specifies the name of the command for the target filter.
6660
6661 @var{ARG} is optional and specifies the optional list of argument for
6662 the given @var{COMMAND}.
6663
6664 Between one interval specification and another, whitespaces, or
6665 sequences of characters starting with @code{#} until the end of line,
6666 are ignored and can be used to annotate comments.
6667
6668 A simplified BNF description of the commands specification syntax
6669 follows:
6670 @example
6671 @var{COMMAND_FLAG}  ::= "enter" | "leave"
6672 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
6673 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
6674 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
6675 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
6676 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
6677 @end example
6678
6679 @subsection Examples
6680
6681 @itemize
6682 @item
6683 Specify audio tempo change at second 4:
6684 @example
6685 asendcmd=c='4.0 atempo tempo 1.5',atempo
6686 @end example
6687
6688 @item
6689 Specify a list of drawtext and hue commands in a file.
6690 @example
6691 # show text in the interval 5-10
6692 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
6693          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
6694
6695 # desaturate the image in the interval 15-20
6696 15.0-20.0 [enter] hue s 0,
6697           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
6698           [leave] hue s 1,
6699           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
6700
6701 # apply an exponential saturation fade-out effect, starting from time 25
6702 25 [enter] hue s exp(t-25)
6703 @end example
6704
6705 A filtergraph allowing to read and process the above command list
6706 stored in a file @file{test.cmd}, can be specified with:
6707 @example
6708 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
6709 @end example
6710 @end itemize
6711
6712 @anchor{setpts}
6713 @section asetpts, setpts
6714
6715 Change the PTS (presentation timestamp) of the input frames.
6716
6717 @code{asetpts} works on audio frames, @code{setpts} on video frames.
6718
6719 This filter accepts the following options:
6720
6721 @table @option
6722
6723 @item expr
6724 The expression which is evaluated for each frame to construct its timestamp.
6725
6726 @end table
6727
6728 The expression is evaluated through the eval API and can contain the following
6729 constants:
6730
6731 @table @option
6732 @item FRAME_RATE
6733 frame rate, only defined for constant frame-rate video
6734
6735 @item PTS
6736 the presentation timestamp in input
6737
6738 @item N
6739 the count of the input frame, starting from 0.
6740
6741 @item NB_CONSUMED_SAMPLES
6742 the number of consumed samples, not including the current frame (only
6743 audio)
6744
6745 @item NB_SAMPLES
6746 the number of samples in the current frame (only audio)
6747
6748 @item SAMPLE_RATE
6749 audio sample rate
6750
6751 @item STARTPTS
6752 the PTS of the first frame
6753
6754 @item STARTT
6755 the time in seconds of the first frame
6756
6757 @item INTERLACED
6758 tell if the current frame is interlaced
6759
6760 @item T
6761 the time in seconds of the current frame
6762
6763 @item TB
6764 the time base
6765
6766 @item POS
6767 original position in the file of the frame, or undefined if undefined
6768 for the current frame
6769
6770 @item PREV_INPTS
6771 previous input PTS
6772
6773 @item PREV_INT
6774 previous input time in seconds
6775
6776 @item PREV_OUTPTS
6777 previous output PTS
6778
6779 @item PREV_OUTT
6780 previous output time in seconds
6781
6782 @item RTCTIME
6783 wallclock (RTC) time in microseconds. This is deprecated, use time(0)
6784 instead.
6785
6786 @item RTCSTART
6787 wallclock (RTC) time at the start of the movie in microseconds
6788 @end table
6789
6790 @subsection Examples
6791
6792 @itemize
6793 @item
6794 Start counting PTS from zero
6795 @example
6796 setpts=PTS-STARTPTS
6797 @end example
6798
6799 @item
6800 Apply fast motion effect:
6801 @example
6802 setpts=0.5*PTS
6803 @end example
6804
6805 @item
6806 Apply slow motion effect:
6807 @example
6808 setpts=2.0*PTS
6809 @end example
6810
6811 @item
6812 Set fixed rate of 25 frames per second:
6813 @example
6814 setpts=N/(25*TB)
6815 @end example
6816
6817 @item
6818 Set fixed rate 25 fps with some jitter:
6819 @example
6820 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
6821 @end example
6822
6823 @item
6824 Apply an offset of 10 seconds to the input PTS:
6825 @example
6826 setpts=PTS+10/TB
6827 @end example
6828
6829 @item
6830 Generate timestamps from a "live source" and rebase onto the current timebase:
6831 @example
6832 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
6833 @end example
6834 @end itemize
6835
6836 @section ebur128
6837
6838 EBU R128 scanner filter. This filter takes an audio stream as input and outputs
6839 it unchanged. By default, it logs a message at a frequency of 10Hz with the
6840 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
6841 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
6842
6843 The filter also has a video output (see the @var{video} option) with a real
6844 time graph to observe the loudness evolution. The graphic contains the logged
6845 message mentioned above, so it is not printed anymore when this option is set,
6846 unless the verbose logging is set. The main graphing area contains the
6847 short-term loudness (3 seconds of analysis), and the gauge on the right is for
6848 the momentary loudness (400 milliseconds).
6849
6850 More information about the Loudness Recommendation EBU R128 on
6851 @url{http://tech.ebu.ch/loudness}.
6852
6853 The filter accepts the following options:
6854
6855 @table @option
6856
6857 @item video
6858 Activate the video output. The audio stream is passed unchanged whether this
6859 option is set or no. The video stream will be the first output stream if
6860 activated. Default is @code{0}.
6861
6862 @item size
6863 Set the video size. This option is for video only. Default and minimum
6864 resolution is @code{640x480}.
6865
6866 @item meter
6867 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
6868 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
6869 other integer value between this range is allowed.
6870
6871 @item metadata
6872 Set metadata injection. If set to @code{1}, the audio input will be segmented
6873 into 100ms output frames, each of them containing various loudness information
6874 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
6875
6876 Default is @code{0}.
6877
6878 @item framelog
6879 Force the frame logging level.
6880
6881 Available values are:
6882 @table @samp
6883 @item info
6884 information logging level
6885 @item verbose
6886 verbose logging level
6887 @end table
6888
6889 By default, the logging level is set to @var{info}. If the @option{video} or
6890 the @option{metadata} options are set, it switches to @var{verbose}.
6891 @end table
6892
6893 @subsection Examples
6894
6895 @itemize
6896 @item
6897 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
6898 @example
6899 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
6900 @end example
6901
6902 @item
6903 Run an analysis with @command{ffmpeg}:
6904 @example
6905 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
6906 @end example
6907 @end itemize
6908
6909 @section settb, asettb
6910
6911 Set the timebase to use for the output frames timestamps.
6912 It is mainly useful for testing timebase configuration.
6913
6914 This filter accepts the following options:
6915
6916 @table @option
6917
6918 @item expr, tb
6919 The expression which is evaluated into the output timebase.
6920
6921 @end table
6922
6923 The value for @option{tb} is an arithmetic expression representing a
6924 rational. The expression can contain the constants "AVTB" (the default
6925 timebase), "intb" (the input timebase) and "sr" (the sample rate,
6926 audio only). Default value is "intb".
6927
6928 @subsection Examples
6929
6930 @itemize
6931 @item
6932 Set the timebase to 1/25:
6933 @example
6934 settb=expr=1/25
6935 @end example
6936
6937 @item
6938 Set the timebase to 1/10:
6939 @example
6940 settb=expr=0.1
6941 @end example
6942
6943 @item
6944 Set the timebase to 1001/1000:
6945 @example
6946 settb=1+0.001
6947 @end example
6948
6949 @item
6950 Set the timebase to 2*intb:
6951 @example
6952 settb=2*intb
6953 @end example
6954
6955 @item
6956 Set the default timebase value:
6957 @example
6958 settb=AVTB
6959 @end example
6960 @end itemize
6961
6962 @section concat
6963
6964 Concatenate audio and video streams, joining them together one after the
6965 other.
6966
6967 The filter works on segments of synchronized video and audio streams. All
6968 segments must have the same number of streams of each type, and that will
6969 also be the number of streams at output.
6970
6971 The filter accepts the following options:
6972
6973 @table @option
6974
6975 @item n
6976 Set the number of segments. Default is 2.
6977
6978 @item v
6979 Set the number of output video streams, that is also the number of video
6980 streams in each segment. Default is 1.
6981
6982 @item a
6983 Set the number of output audio streams, that is also the number of video
6984 streams in each segment. Default is 0.
6985
6986 @item unsafe
6987 Activate unsafe mode: do not fail if segments have a different format.
6988
6989 @end table
6990
6991 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
6992 @var{a} audio outputs.
6993
6994 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
6995 segment, in the same order as the outputs, then the inputs for the second
6996 segment, etc.
6997
6998 Related streams do not always have exactly the same duration, for various
6999 reasons including codec frame size or sloppy authoring. For that reason,
7000 related synchronized streams (e.g. a video and its audio track) should be
7001 concatenated at once. The concat filter will use the duration of the longest
7002 stream in each segment (except the last one), and if necessary pad shorter
7003 audio streams with silence.
7004
7005 For this filter to work correctly, all segments must start at timestamp 0.
7006
7007 All corresponding streams must have the same parameters in all segments; the
7008 filtering system will automatically select a common pixel format for video
7009 streams, and a common sample format, sample rate and channel layout for
7010 audio streams, but other settings, such as resolution, must be converted
7011 explicitly by the user.
7012
7013 Different frame rates are acceptable but will result in variable frame rate
7014 at output; be sure to configure the output file to handle it.
7015
7016 @subsection Examples
7017
7018 @itemize
7019 @item
7020 Concatenate an opening, an episode and an ending, all in bilingual version
7021 (video in stream 0, audio in streams 1 and 2):
7022 @example
7023 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
7024   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
7025    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
7026   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
7027 @end example
7028
7029 @item
7030 Concatenate two parts, handling audio and video separately, using the
7031 (a)movie sources, and adjusting the resolution:
7032 @example
7033 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
7034 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
7035 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
7036 @end example
7037 Note that a desync will happen at the stitch if the audio and video streams
7038 do not have exactly the same duration in the first file.
7039
7040 @end itemize
7041
7042 @section showspectrum
7043
7044 Convert input audio to a video output, representing the audio frequency
7045 spectrum.
7046
7047 The filter accepts the following options:
7048
7049 @table @option
7050 @item size, s
7051 Specify the video size for the output. Default value is @code{640x512}.
7052
7053 @item slide
7054 Specify if the spectrum should slide along the window. Default value is
7055 @code{0}.
7056
7057 @item mode
7058 Specify display mode.
7059
7060 It accepts the following values:
7061 @table @samp
7062 @item combined
7063 all channels are displayed in the same row
7064 @item separate
7065 all channels are displayed in separate rows
7066 @end table
7067
7068 Default value is @samp{combined}.
7069
7070 @item color
7071 Specify display color mode.
7072
7073 It accepts the following values:
7074 @table @samp
7075 @item channel
7076 each channel is displayed in a separate color
7077 @item intensity
7078 each channel is is displayed using the same color scheme
7079 @end table
7080
7081 Default value is @samp{channel}.
7082
7083 @item scale
7084 Specify scale used for calculating intensity color values.
7085
7086 It accepts the following values:
7087 @table @samp
7088 @item lin
7089 linear
7090 @item sqrt
7091 square root, default
7092 @item cbrt
7093 cubic root
7094 @item log
7095 logarithmic
7096 @end table
7097
7098 Default value is @samp{sqrt}.
7099
7100 @item saturation
7101 Set saturation modifier for displayed colors. Negative values provide
7102 alternative color scheme. @code{0} is no saturation at all.
7103 Saturation must be in [-10.0, 10.0] range.
7104 Default value is @code{1}.
7105 @end table
7106
7107 The usage is very similar to the showwaves filter; see the examples in that
7108 section.
7109
7110 @subsection Examples
7111
7112 @itemize
7113 @item
7114 Large window with logarithmic color scaling:
7115 @example
7116 showspectrum=s=1280x480:scale=log
7117 @end example
7118
7119 @item
7120 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
7121 @example
7122 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
7123              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
7124 @end example
7125 @end itemize
7126
7127 @section showwaves
7128
7129 Convert input audio to a video output, representing the samples waves.
7130
7131 The filter accepts the following options:
7132
7133 @table @option
7134 @item size, s
7135 Specify the video size for the output. Default value is "600x240".
7136
7137 @item mode
7138 Set display mode.
7139
7140 Available values are:
7141 @table @samp
7142 @item point
7143 Draw a point for each sample.
7144
7145 @item line
7146 Draw a vertical line for each sample.
7147 @end table
7148
7149 Default value is @code{point}.
7150
7151 @item n
7152 Set the number of samples which are printed on the same column. A
7153 larger value will decrease the frame rate. Must be a positive
7154 integer. This option can be set only if the value for @var{rate}
7155 is not explicitly specified.
7156
7157 @item rate, r
7158 Set the (approximate) output frame rate. This is done by setting the
7159 option @var{n}. Default value is "25".
7160
7161 @end table
7162
7163 @subsection Examples
7164
7165 @itemize
7166 @item
7167 Output the input file audio and the corresponding video representation
7168 at the same time:
7169 @example
7170 amovie=a.mp3,asplit[out0],showwaves[out1]
7171 @end example
7172
7173 @item
7174 Create a synthetic signal and show it with showwaves, forcing a
7175 frame rate of 30 frames per second:
7176 @example
7177 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
7178 @end example
7179 @end itemize
7180
7181 @c man end MULTIMEDIA FILTERS
7182
7183 @chapter Multimedia Sources
7184 @c man begin MULTIMEDIA SOURCES
7185
7186 Below is a description of the currently available multimedia sources.
7187
7188 @section amovie
7189
7190 This is the same as @ref{movie} source, except it selects an audio
7191 stream by default.
7192
7193 @anchor{movie}
7194 @section movie
7195
7196 Read audio and/or video stream(s) from a movie container.
7197
7198 This filter accepts the following options:
7199
7200 @table @option
7201 @item filename
7202 The name of the resource to read (not necessarily a file but also a device or a
7203 stream accessed through some protocol).
7204
7205 @item format_name, f
7206 Specifies the format assumed for the movie to read, and can be either
7207 the name of a container or an input device. If not specified the
7208 format is guessed from @var{movie_name} or by probing.
7209
7210 @item seek_point, sp
7211 Specifies the seek point in seconds, the frames will be output
7212 starting from this seek point, the parameter is evaluated with
7213 @code{av_strtod} so the numerical value may be suffixed by an IS
7214 postfix. Default value is "0".
7215
7216 @item streams, s
7217 Specifies the streams to read. Several streams can be specified,
7218 separated by "+". The source will then have as many outputs, in the
7219 same order. The syntax is explained in the ``Stream specifiers''
7220 section in the ffmpeg manual. Two special names, "dv" and "da" specify
7221 respectively the default (best suited) video and audio stream. Default
7222 is "dv", or "da" if the filter is called as "amovie".
7223
7224 @item stream_index, si
7225 Specifies the index of the video stream to read. If the value is -1,
7226 the best suited video stream will be automatically selected. Default
7227 value is "-1". Deprecated. If the filter is called "amovie", it will select
7228 audio instead of video.
7229
7230 @item loop
7231 Specifies how many times to read the stream in sequence.
7232 If the value is less than 1, the stream will be read again and again.
7233 Default value is "1".
7234
7235 Note that when the movie is looped the source timestamps are not
7236 changed, so it will generate non monotonically increasing timestamps.
7237 @end table
7238
7239 This filter allows to overlay a second video on top of main input of
7240 a filtergraph as shown in this graph:
7241 @example
7242 input -----------> deltapts0 --> overlay --> output
7243                                     ^
7244                                     |
7245 movie --> scale--> deltapts1 -------+
7246 @end example
7247
7248 @subsection Examples
7249
7250 @itemize
7251 @item
7252 Skip 3.2 seconds from the start of the avi file in.avi, and overlay it
7253 on top of the input labelled as "in":
7254 @example
7255 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
7256 [in] setpts=PTS-STARTPTS [main];
7257 [main][over] overlay=16:16 [out]
7258 @end example
7259
7260 @item
7261 Read from a video4linux2 device, and overlay it on top of the input
7262 labelled as "in":
7263 @example
7264 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
7265 [in] setpts=PTS-STARTPTS [main];
7266 [main][over] overlay=16:16 [out]
7267 @end example
7268
7269 @item
7270 Read the first video stream and the audio stream with id 0x81 from
7271 dvd.vob; the video is connected to the pad named "video" and the audio is
7272 connected to the pad named "audio":
7273 @example
7274 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
7275 @end example
7276 @end itemize
7277
7278 @c man end MULTIMEDIA SOURCES