]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
Merge commit '65b8b6c476454d201348737527a1d9471f689278'
[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                 [main]
13 input --> split ---------------------> overlay --> output
14             |                             ^
15             |[tmp]                  [flip]|
16             +-----> crop --> vflip -------+
17 @end example
18
19 This filtergraph splits the input stream in two streams, then sends one
20 stream through the crop filter and the vflip filter, before merging it
21 back with the other stream by overlaying it on top. You can use the
22 following command to achieve this:
23
24 @example
25 ffmpeg -i INPUT -vf "split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2" OUTPUT
26 @end example
27
28 The result will be that the top half of the video is mirrored
29 onto the bottom half of the output video.
30
31 Filters in the same linear chain are separated by commas, and distinct
32 linear chains of filters are separated by semicolons. In our example,
33 @var{crop,vflip} are in one linear chain, @var{split} and
34 @var{overlay} are separately in another. The points where the linear
35 chains join are labelled by names enclosed in square brackets. In the
36 example, the split filter generates two outputs that are associated to
37 the labels @var{[main]} and @var{[tmp]}.
38
39 The stream sent to the second output of @var{split}, labelled as
40 @var{[tmp]}, is processed through the @var{crop} filter, which crops
41 away the lower half part of the video, and then vertically flipped. The
42 @var{overlay} filter takes in input the first unchanged output of the
43 split filter (which was labelled as @var{[main]}), and overlay on its
44 lower half the output generated by the @var{crop,vflip} filterchain.
45
46 Some filters take in input a list of parameters: they are specified
47 after the filter name and an equal sign, and are separated from each other
48 by a colon.
49
50 There exist so-called @var{source filters} that do not have an
51 audio/video input, and @var{sink filters} that will not have audio/video
52 output.
53
54 @c man end FILTERING INTRODUCTION
55
56 @chapter graph2dot
57 @c man begin GRAPH2DOT
58
59 The @file{graph2dot} program included in the FFmpeg @file{tools}
60 directory can be used to parse a filtergraph description and issue a
61 corresponding textual representation in the dot language.
62
63 Invoke the command:
64 @example
65 graph2dot -h
66 @end example
67
68 to see how to use @file{graph2dot}.
69
70 You can then pass the dot description to the @file{dot} program (from
71 the graphviz suite of programs) and obtain a graphical representation
72 of the filtergraph.
73
74 For example the sequence of commands:
75 @example
76 echo @var{GRAPH_DESCRIPTION} | \
77 tools/graph2dot -o graph.tmp && \
78 dot -Tpng graph.tmp -o graph.png && \
79 display graph.png
80 @end example
81
82 can be used to create and display an image representing the graph
83 described by the @var{GRAPH_DESCRIPTION} string. Note that this string must be
84 a complete self-contained graph, with its inputs and outputs explicitly defined.
85 For example if your command line is of the form:
86 @example
87 ffmpeg -i infile -vf scale=640:360 outfile
88 @end example
89 your @var{GRAPH_DESCRIPTION} string will need to be of the form:
90 @example
91 nullsrc,scale=640:360,nullsink
92 @end example
93 you may also need to set the @var{nullsrc} parameters and add a @var{format}
94 filter in order to simulate a specific input file.
95
96 @c man end GRAPH2DOT
97
98 @chapter Filtergraph description
99 @c man begin FILTERGRAPH DESCRIPTION
100
101 A filtergraph is a directed graph of connected filters. It can contain
102 cycles, and there can be multiple links between a pair of
103 filters. Each link has one input pad on one side connecting it to one
104 filter from which it takes its input, and one output pad on the other
105 side connecting it to one filter accepting its output.
106
107 Each filter in a filtergraph is an instance of a filter class
108 registered in the application, which defines the features and the
109 number of input and output pads of the filter.
110
111 A filter with no input pads is called a "source", and a filter with no
112 output pads is called a "sink".
113
114 @anchor{Filtergraph syntax}
115 @section Filtergraph syntax
116
117 A filtergraph has a textual representation, which is
118 recognized by the @option{-filter}/@option{-vf} and @option{-filter_complex}
119 options in @command{ffmpeg} and @option{-vf} in @command{ffplay}, and by the
120 @code{avfilter_graph_parse()}/@code{avfilter_graph_parse2()} functions defined in
121 @file{libavfilter/avfilter.h}.
122
123 A filterchain consists of a sequence of connected filters, each one
124 connected to the previous one in the sequence. A filterchain is
125 represented by a list of ","-separated filter descriptions.
126
127 A filtergraph consists of a sequence of filterchains. A sequence of
128 filterchains is represented by a list of ";"-separated filterchain
129 descriptions.
130
131 A filter is represented by a string of the form:
132 [@var{in_link_1}]...[@var{in_link_N}]@var{filter_name}=@var{arguments}[@var{out_link_1}]...[@var{out_link_M}]
133
134 @var{filter_name} is the name of the filter class of which the
135 described filter is an instance of, and has to be the name of one of
136 the filter classes registered in the program.
137 The name of the filter class is optionally followed by a string
138 "=@var{arguments}".
139
140 @var{arguments} is a string which contains the parameters used to
141 initialize the filter instance. It may have one of two forms:
142 @itemize
143
144 @item
145 A ':'-separated list of @var{key=value} pairs.
146
147 @item
148 A ':'-separated list of @var{value}. In this case, the keys are assumed to be
149 the option names in the order they are declared. E.g. the @code{fade} filter
150 declares three options in this order -- @option{type}, @option{start_frame} and
151 @option{nb_frames}. Then the parameter list @var{in:0:30} means that the value
152 @var{in} is assigned to the option @option{type}, @var{0} to
153 @option{start_frame} and @var{30} to @option{nb_frames}.
154
155 @item
156 A ':'-separated list of mixed direct @var{value} and long @var{key=value}
157 pairs. The direct @var{value} must precede the @var{key=value} pairs, and
158 follow the same constraints order of the previous point. The following
159 @var{key=value} pairs can be set in any preferred order.
160
161 @end itemize
162
163 If the option value itself is a list of items (e.g. the @code{format} filter
164 takes a list of pixel formats), the items in the list are usually separated by
165 '|'.
166
167 The list of arguments can be quoted using the character "'" as initial
168 and ending mark, and the character '\' for escaping the characters
169 within the quoted text; otherwise the argument string is considered
170 terminated when the next special character (belonging to the set
171 "[]=;,") is encountered.
172
173 The name and arguments of the filter are optionally preceded and
174 followed by a list of link labels.
175 A link label allows one to name a link and associate it to a filter output
176 or input pad. The preceding labels @var{in_link_1}
177 ... @var{in_link_N}, are associated to the filter input pads,
178 the following labels @var{out_link_1} ... @var{out_link_M}, are
179 associated to the output pads.
180
181 When two link labels with the same name are found in the
182 filtergraph, a link between the corresponding input and output pad is
183 created.
184
185 If an output pad is not labelled, it is linked by default to the first
186 unlabelled input pad of the next filter in the filterchain.
187 For example in the filterchain
188 @example
189 nullsrc, split[L1], [L2]overlay, nullsink
190 @end example
191 the split filter instance has two output pads, and the overlay filter
192 instance two input pads. The first output pad of split is labelled
193 "L1", the first input pad of overlay is labelled "L2", and the second
194 output pad of split is linked to the second input pad of overlay,
195 which are both unlabelled.
196
197 In a complete filterchain all the unlabelled filter input and output
198 pads must be connected. A filtergraph is considered valid if all the
199 filter input and output pads of all the filterchains are connected.
200
201 Libavfilter will automatically insert @ref{scale} filters where format
202 conversion is required. It is possible to specify swscale flags
203 for those automatically inserted scalers by prepending
204 @code{sws_flags=@var{flags};}
205 to the filtergraph description.
206
207 Here is a BNF description of the filtergraph syntax:
208 @example
209 @var{NAME}             ::= sequence of alphanumeric characters and '_'
210 @var{LINKLABEL}        ::= "[" @var{NAME} "]"
211 @var{LINKLABELS}       ::= @var{LINKLABEL} [@var{LINKLABELS}]
212 @var{FILTER_ARGUMENTS} ::= sequence of chars (possibly quoted)
213 @var{FILTER}           ::= [@var{LINKLABELS}] @var{NAME} ["=" @var{FILTER_ARGUMENTS}] [@var{LINKLABELS}]
214 @var{FILTERCHAIN}      ::= @var{FILTER} [,@var{FILTERCHAIN}]
215 @var{FILTERGRAPH}      ::= [sws_flags=@var{flags};] @var{FILTERCHAIN} [;@var{FILTERGRAPH}]
216 @end example
217
218 @section Notes on filtergraph escaping
219
220 Filtergraph description composition entails several levels of
221 escaping. See @ref{quoting_and_escaping,,the "Quoting and escaping"
222 section in the ffmpeg-utils(1) manual,ffmpeg-utils} for more
223 information about the employed escaping procedure.
224
225 A first level escaping affects the content of each filter option
226 value, which may contain the special character @code{:} used to
227 separate values, or one of the escaping characters @code{\'}.
228
229 A second level escaping affects the whole filter description, which
230 may contain the escaping characters @code{\'} or the special
231 characters @code{[],;} used by the filtergraph description.
232
233 Finally, when you specify a filtergraph on a shell commandline, you
234 need to perform a third level escaping for the shell special
235 characters contained within it.
236
237 For example, consider the following string to be embedded in
238 the @ref{drawtext} filter description @option{text} value:
239 @example
240 this is a 'string': may contain one, or more, special characters
241 @end example
242
243 This string contains the @code{'} special escaping character, and the
244 @code{:} special character, so it needs to be escaped in this way:
245 @example
246 text=this is a \'string\'\: may contain one, or more, special characters
247 @end example
248
249 A second level of escaping is required when embedding the filter
250 description in a filtergraph description, in order to escape all the
251 filtergraph special characters. Thus the example above becomes:
252 @example
253 drawtext=text=this is a \\\'string\\\'\\: may contain one\, or more\, special characters
254 @end example
255 (note that in addition to the @code{\'} escaping special characters,
256 also @code{,} needs to be escaped).
257
258 Finally an additional level of escaping is needed when writing the
259 filtergraph description in a shell command, which depends on the
260 escaping rules of the adopted shell. For example, assuming that
261 @code{\} is special and needs to be escaped with another @code{\}, the
262 previous string will finally result in:
263 @example
264 -vf "drawtext=text=this is a \\\\\\'string\\\\\\'\\\\: may contain one\\, or more\\, special characters"
265 @end example
266
267 @chapter Timeline editing
268
269 Some filters support a generic @option{enable} option. For the filters
270 supporting timeline editing, this option can be set to an expression which is
271 evaluated before sending a frame to the filter. If the evaluation is non-zero,
272 the filter will be enabled, otherwise the frame will be sent unchanged to the
273 next filter in the filtergraph.
274
275 The expression accepts the following values:
276 @table @samp
277 @item t
278 timestamp expressed in seconds, NAN if the input timestamp is unknown
279
280 @item n
281 sequential number of the input frame, starting from 0
282
283 @item pos
284 the position in the file of the input frame, NAN if unknown
285 @end table
286
287 Additionally, these filters support an @option{enable} command that can be used
288 to re-define the expression.
289
290 Like any other filtering option, the @option{enable} option follows the same
291 rules.
292
293 For example, to enable a blur filter (@ref{smartblur}) from 10 seconds to 3
294 minutes, and a @ref{curves} filter starting at 3 seconds:
295 @example
296 smartblur = enable='between(t,10,3*60)',
297 curves    = enable='gte(t,3)' : preset=cross_process
298 @end example
299
300 @c man end FILTERGRAPH DESCRIPTION
301
302 @chapter Audio Filters
303 @c man begin AUDIO FILTERS
304
305 When you configure your FFmpeg build, you can disable any of the
306 existing filters using @code{--disable-filters}.
307 The configure output will show the audio filters included in your
308 build.
309
310 Below is a description of the currently available audio filters.
311
312 @section aconvert
313
314 Convert the input audio format to the specified formats.
315
316 @emph{This filter is deprecated. Use @ref{aformat} instead.}
317
318 The filter accepts a string of the form:
319 "@var{sample_format}:@var{channel_layout}".
320
321 @var{sample_format} specifies the sample format, and can be a string or the
322 corresponding numeric value defined in @file{libavutil/samplefmt.h}. Use 'p'
323 suffix for a planar sample format.
324
325 @var{channel_layout} specifies the channel layout, and can be a string
326 or the corresponding number value defined in @file{libavutil/channel_layout.h}.
327
328 The special parameter "auto", signifies that the filter will
329 automatically select the output format depending on the output filter.
330
331 @subsection Examples
332
333 @itemize
334 @item
335 Convert input to float, planar, stereo:
336 @example
337 aconvert=fltp:stereo
338 @end example
339
340 @item
341 Convert input to unsigned 8-bit, automatically select out channel layout:
342 @example
343 aconvert=u8:auto
344 @end example
345 @end itemize
346
347 @section adelay
348
349 Delay one or more audio channels.
350
351 Samples in delayed channel are filled with silence.
352
353 The filter accepts the following option:
354
355 @table @option
356 @item delays
357 Set list of delays in milliseconds for each channel separated by '|'.
358 At least one delay greater than 0 should be provided.
359 Unused delays will be silently ignored. If number of given delays is
360 smaller than number of channels all remaining channels will not be delayed.
361 @end table
362
363 @subsection Examples
364
365 @itemize
366 @item
367 Delay first channel by 1.5 seconds, the third channel by 0.5 seconds and leave
368 the second channel (and any other channels that may be present) unchanged.
369 @example
370 adelay=1500|0|500
371 @end example
372 @end itemize
373
374 @section aecho
375
376 Apply echoing to the input audio.
377
378 Echoes are reflected sound and can occur naturally amongst mountains
379 (and sometimes large buildings) when talking or shouting; digital echo
380 effects emulate this behaviour and are often used to help fill out the
381 sound of a single instrument or vocal. The time difference between the
382 original signal and the reflection is the @code{delay}, and the
383 loudness of the reflected signal is the @code{decay}.
384 Multiple echoes can have different delays and decays.
385
386 A description of the accepted parameters follows.
387
388 @table @option
389 @item in_gain
390 Set input gain of reflected signal. Default is @code{0.6}.
391
392 @item out_gain
393 Set output gain of reflected signal. Default is @code{0.3}.
394
395 @item delays
396 Set list of time intervals in milliseconds between original signal and reflections
397 separated by '|'. Allowed range for each @code{delay} is @code{(0 - 90000.0]}.
398 Default is @code{1000}.
399
400 @item decays
401 Set list of loudnesses of reflected signals separated by '|'.
402 Allowed range for each @code{decay} is @code{(0 - 1.0]}.
403 Default is @code{0.5}.
404 @end table
405
406 @subsection Examples
407
408 @itemize
409 @item
410 Make it sound as if there are twice as many instruments as are actually playing:
411 @example
412 aecho=0.8:0.88:60:0.4
413 @end example
414
415 @item
416 If delay is very short, then it sound like a (metallic) robot playing music:
417 @example
418 aecho=0.8:0.88:6:0.4
419 @end example
420
421 @item
422 A longer delay will sound like an open air concert in the mountains:
423 @example
424 aecho=0.8:0.9:1000:0.3
425 @end example
426
427 @item
428 Same as above but with one more mountain:
429 @example
430 aecho=0.8:0.9:1000|1800:0.3|0.25
431 @end example
432 @end itemize
433
434 @section aeval
435
436 Modify an audio signal according to the specified expressions.
437
438 This filter accepts one or more expressions (one for each channel),
439 which are evaluated and used to modify a corresponding audio signal.
440
441 It accepts the following parameters:
442
443 @table @option
444 @item exprs
445 Set the '|'-separated expressions list for each separate channel. If
446 the number of input channels is greater than the number of
447 expressions, the last specified expression is used for the remaining
448 output channels.
449
450 @item channel_layout, c
451 Set output channel layout. If not specified, the channel layout is
452 specified by the number of expressions. If set to @samp{same}, it will
453 use by default the same input channel layout.
454 @end table
455
456 Each expression in @var{exprs} can contain the following constants and functions:
457
458 @table @option
459 @item ch
460 channel number of the current expression
461
462 @item n
463 number of the evaluated sample, starting from 0
464
465 @item s
466 sample rate
467
468 @item t
469 time of the evaluated sample expressed in seconds
470
471 @item nb_in_channels
472 @item nb_out_channels
473 input and output number of channels
474
475 @item val(CH)
476 the value of input channel with number @var{CH}
477 @end table
478
479 Note: this filter is slow. For faster processing you should use a
480 dedicated filter.
481
482 @subsection Examples
483
484 @itemize
485 @item
486 Half volume:
487 @example
488 aeval=val(ch)/2:c=same
489 @end example
490
491 @item
492 Invert phase of the second channel:
493 @example
494 eval=val(0)|-val(1)
495 @end example
496 @end itemize
497
498 @section afade
499
500 Apply fade-in/out effect to input audio.
501
502 A description of the accepted parameters follows.
503
504 @table @option
505 @item type, t
506 Specify the effect type, can be either @code{in} for fade-in, or
507 @code{out} for a fade-out effect. Default is @code{in}.
508
509 @item start_sample, ss
510 Specify the number of the start sample for starting to apply the fade
511 effect. Default is 0.
512
513 @item nb_samples, ns
514 Specify the number of samples for which the fade effect has to last. At
515 the end of the fade-in effect the output audio will have the same
516 volume as the input audio, at the end of the fade-out transition
517 the output audio will be silence. Default is 44100.
518
519 @item start_time, st
520 Specify time for starting to apply the fade effect. Default is 0.
521 The accepted syntax is:
522 @example
523 [-]HH[:MM[:SS[.m...]]]
524 [-]S+[.m...]
525 @end example
526 See also the function @code{av_parse_time()}.
527 If set this option is used instead of @var{start_sample} one.
528
529 @item duration, d
530 Specify the duration for which the fade effect has to last. Default is 0.
531 The accepted syntax is:
532 @example
533 [-]HH[:MM[:SS[.m...]]]
534 [-]S+[.m...]
535 @end example
536 See also the function @code{av_parse_time()}.
537 At the end of the fade-in effect the output audio will have the same
538 volume as the input audio, at the end of the fade-out transition
539 the output audio will be silence.
540 If set this option is used instead of @var{nb_samples} one.
541
542 @item curve
543 Set curve for fade transition.
544
545 It accepts the following values:
546 @table @option
547 @item tri
548 select triangular, linear slope (default)
549 @item qsin
550 select quarter of sine wave
551 @item hsin
552 select half of sine wave
553 @item esin
554 select exponential sine wave
555 @item log
556 select logarithmic
557 @item par
558 select inverted parabola
559 @item qua
560 select quadratic
561 @item cub
562 select cubic
563 @item squ
564 select square root
565 @item cbr
566 select cubic root
567 @end table
568 @end table
569
570 @subsection Examples
571
572 @itemize
573 @item
574 Fade in first 15 seconds of audio:
575 @example
576 afade=t=in:ss=0:d=15
577 @end example
578
579 @item
580 Fade out last 25 seconds of a 900 seconds audio:
581 @example
582 afade=t=out:st=875:d=25
583 @end example
584 @end itemize
585
586 @anchor{aformat}
587 @section aformat
588
589 Set output format constraints for the input audio. The framework will
590 negotiate the most appropriate format to minimize conversions.
591
592 It accepts the following parameters:
593 @table @option
594
595 @item sample_fmts
596 A '|'-separated list of requested sample formats.
597
598 @item sample_rates
599 A '|'-separated list of requested sample rates.
600
601 @item channel_layouts
602 A '|'-separated list of requested channel layouts.
603
604 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
605 for the required syntax.
606 @end table
607
608 If a parameter is omitted, all values are allowed.
609
610 Force the output to either unsigned 8-bit or signed 16-bit stereo
611 @example
612 aformat=sample_fmts=u8|s16:channel_layouts=stereo
613 @end example
614
615 @section allpass
616
617 Apply a two-pole all-pass filter with central frequency (in Hz)
618 @var{frequency}, and filter-width @var{width}.
619 An all-pass filter changes the audio's frequency to phase relationship
620 without changing its frequency to amplitude relationship.
621
622 The filter accepts the following options:
623
624 @table @option
625 @item frequency, f
626 Set frequency in Hz.
627
628 @item width_type
629 Set method to specify band-width of filter.
630 @table @option
631 @item h
632 Hz
633 @item q
634 Q-Factor
635 @item o
636 octave
637 @item s
638 slope
639 @end table
640
641 @item width, w
642 Specify the band-width of a filter in width_type units.
643 @end table
644
645 @section amerge
646
647 Merge two or more audio streams into a single multi-channel stream.
648
649 The filter accepts the following options:
650
651 @table @option
652
653 @item inputs
654 Set the number of inputs. Default is 2.
655
656 @end table
657
658 If the channel layouts of the inputs are disjoint, and therefore compatible,
659 the channel layout of the output will be set accordingly and the channels
660 will be reordered as necessary. If the channel layouts of the inputs are not
661 disjoint, the output will have all the channels of the first input then all
662 the channels of the second input, in that order, and the channel layout of
663 the output will be the default value corresponding to the total number of
664 channels.
665
666 For example, if the first input is in 2.1 (FL+FR+LF) and the second input
667 is FC+BL+BR, then the output will be in 5.1, with the channels in the
668 following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
669 first input, b1 is the first channel of the second input).
670
671 On the other hand, if both input are in stereo, the output channels will be
672 in the default order: a1, a2, b1, b2, and the channel layout will be
673 arbitrarily set to 4.0, which may or may not be the expected value.
674
675 All inputs must have the same sample rate, and format.
676
677 If inputs do not have the same duration, the output will stop with the
678 shortest.
679
680 @subsection Examples
681
682 @itemize
683 @item
684 Merge two mono files into a stereo stream:
685 @example
686 amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
687 @end example
688
689 @item
690 Multiple merges assuming 1 video stream and 6 audio streams in @file{input.mkv}:
691 @example
692 ffmpeg -i input.mkv -filter_complex "[0:1][0:2][0:3][0:4][0:5][0:6] amerge=inputs=6" -c:a pcm_s16le output.mkv
693 @end example
694 @end itemize
695
696 @section amix
697
698 Mixes multiple audio inputs into a single output.
699
700 Note that this filter only supports float samples (the @var{amerge}
701 and @var{pan} audio filters support many formats). If the @var{amix}
702 input has integer samples then @ref{aresample} will be automatically
703 inserted to perform the conversion to float samples.
704
705 For example
706 @example
707 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
708 @end example
709 will mix 3 input audio streams to a single output with the same duration as the
710 first input and a dropout transition time of 3 seconds.
711
712 It accepts the following parameters:
713 @table @option
714
715 @item inputs
716 The number of inputs. If unspecified, it defaults to 2.
717
718 @item duration
719 How to determine the end-of-stream.
720 @table @option
721
722 @item longest
723 The duration of the longest input. (default)
724
725 @item shortest
726 The duration of the shortest input.
727
728 @item first
729 The duration of the first input.
730
731 @end table
732
733 @item dropout_transition
734 The transition time, in seconds, for volume renormalization when an input
735 stream ends. The default value is 2 seconds.
736
737 @end table
738
739 @section anull
740
741 Pass the audio source unchanged to the output.
742
743 @section apad
744
745 Pad the end of a audio stream with silence, this can be used together with
746 -shortest to extend audio streams to the same length as the video stream.
747
748 @section aphaser
749 Add a phasing effect to the input audio.
750
751 A phaser filter creates series of peaks and troughs in the frequency spectrum.
752 The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
753
754 A description of the accepted parameters follows.
755
756 @table @option
757 @item in_gain
758 Set input gain. Default is 0.4.
759
760 @item out_gain
761 Set output gain. Default is 0.74
762
763 @item delay
764 Set delay in milliseconds. Default is 3.0.
765
766 @item decay
767 Set decay. Default is 0.4.
768
769 @item speed
770 Set modulation speed in Hz. Default is 0.5.
771
772 @item type
773 Set modulation type. Default is triangular.
774
775 It accepts the following values:
776 @table @samp
777 @item triangular, t
778 @item sinusoidal, s
779 @end table
780 @end table
781
782 @anchor{aresample}
783 @section aresample
784
785 Resample the input audio to the specified parameters, using the
786 libswresample library. If none are specified then the filter will
787 automatically convert between its input and output.
788
789 This filter is also able to stretch/squeeze the audio data to make it match
790 the timestamps or to inject silence / cut out audio to make it match the
791 timestamps, do a combination of both or do neither.
792
793 The filter accepts the syntax
794 [@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
795 expresses a sample rate and @var{resampler_options} is a list of
796 @var{key}=@var{value} pairs, separated by ":". See the
797 ffmpeg-resampler manual for the complete list of supported options.
798
799 @subsection Examples
800
801 @itemize
802 @item
803 Resample the input audio to 44100Hz:
804 @example
805 aresample=44100
806 @end example
807
808 @item
809 Stretch/squeeze samples to the given timestamps, with a maximum of 1000
810 samples per second compensation:
811 @example
812 aresample=async=1000
813 @end example
814 @end itemize
815
816 @section asetnsamples
817
818 Set the number of samples per each output audio frame.
819
820 The last output packet may contain a different number of samples, as
821 the filter will flush all the remaining samples when the input audio
822 signal its end.
823
824 The filter accepts the following options:
825
826 @table @option
827
828 @item nb_out_samples, n
829 Set the number of frames per each output audio frame. The number is
830 intended as the number of samples @emph{per each channel}.
831 Default value is 1024.
832
833 @item pad, p
834 If set to 1, the filter will pad the last audio frame with zeroes, so
835 that the last frame will contain the same number of samples as the
836 previous ones. Default value is 1.
837 @end table
838
839 For example, to set the number of per-frame samples to 1234 and
840 disable padding for the last frame, use:
841 @example
842 asetnsamples=n=1234:p=0
843 @end example
844
845 @section asetrate
846
847 Set the sample rate without altering the PCM data.
848 This will result in a change of speed and pitch.
849
850 The filter accepts the following options:
851
852 @table @option
853 @item sample_rate, r
854 Set the output sample rate. Default is 44100 Hz.
855 @end table
856
857 @section ashowinfo
858
859 Show a line containing various information for each input audio frame.
860 The input audio is not modified.
861
862 The shown line contains a sequence of key/value pairs of the form
863 @var{key}:@var{value}.
864
865 It accepts the following parameters:
866
867 @table @option
868 @item n
869 The (sequential) number of the input frame, starting from 0.
870
871 @item pts
872 The presentation timestamp of the input frame, in time base units; the time base
873 depends on the filter input pad, and is usually 1/@var{sample_rate}.
874
875 @item pts_time
876 The presentation timestamp of the input frame in seconds.
877
878 @item pos
879 position of the frame in the input stream, -1 if this information in
880 unavailable and/or meaningless (for example in case of synthetic audio)
881
882 @item fmt
883 The sample format.
884
885 @item chlayout
886 The channel layout.
887
888 @item rate
889 The sample rate for the audio frame.
890
891 @item nb_samples
892 The number of samples (per channel) in the frame.
893
894 @item checksum
895 The Adler-32 checksum (printed in hexadecimal) of the audio data. For planar
896 audio, the data is treated as if all the planes were concatenated.
897
898 @item plane_checksums
899 A list of Adler-32 checksums for each data plane.
900 @end table
901
902 @section astats
903
904 Display time domain statistical information about the audio channels.
905 Statistics are calculated and displayed for each audio channel and,
906 where applicable, an overall figure is also given.
907
908 It accepts the following option:
909 @table @option
910 @item length
911 Short window length in seconds, used for peak and trough RMS measurement.
912 Default is @code{0.05} (50 miliseconds). Allowed range is @code{[0.1 - 10]}.
913 @end table
914
915 A description of each shown parameter follows:
916
917 @table @option
918 @item DC offset
919 Mean amplitude displacement from zero.
920
921 @item Min level
922 Minimal sample level.
923
924 @item Max level
925 Maximal sample level.
926
927 @item Peak level dB
928 @item RMS level dB
929 Standard peak and RMS level measured in dBFS.
930
931 @item RMS peak dB
932 @item RMS trough dB
933 Peak and trough values for RMS level measured over a short window.
934
935 @item Crest factor
936 Standard ratio of peak to RMS level (note: not in dB).
937
938 @item Flat factor
939 Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
940 (i.e. either @var{Min level} or @var{Max level}).
941
942 @item Peak count
943 Number of occasions (not the number of samples) that the signal attained either
944 @var{Min level} or @var{Max level}.
945 @end table
946
947 @section astreamsync
948
949 Forward two audio streams and control the order the buffers are forwarded.
950
951 The filter accepts the following options:
952
953 @table @option
954 @item expr, e
955 Set the expression deciding which stream should be
956 forwarded next: if the result is negative, the first stream is forwarded; if
957 the result is positive or zero, the second stream is forwarded. It can use
958 the following variables:
959
960 @table @var
961 @item b1 b2
962 number of buffers forwarded so far on each stream
963 @item s1 s2
964 number of samples forwarded so far on each stream
965 @item t1 t2
966 current timestamp of each stream
967 @end table
968
969 The default value is @code{t1-t2}, which means to always forward the stream
970 that has a smaller timestamp.
971 @end table
972
973 @subsection Examples
974
975 Stress-test @code{amerge} by randomly sending buffers on the wrong
976 input, while avoiding too much of a desynchronization:
977 @example
978 amovie=file.ogg [a] ; amovie=file.mp3 [b] ;
979 [a] [b] astreamsync=(2*random(1))-1+tanh(5*(t1-t2)) [a2] [b2] ;
980 [a2] [b2] amerge
981 @end example
982
983 @section asyncts
984
985 Synchronize audio data with timestamps by squeezing/stretching it and/or
986 dropping samples/adding silence when needed.
987
988 This filter is not built by default, please use @ref{aresample} to do squeezing/stretching.
989
990 It accepts the following parameters:
991 @table @option
992
993 @item compensate
994 Enable stretching/squeezing the data to make it match the timestamps. Disabled
995 by default. When disabled, time gaps are covered with silence.
996
997 @item min_delta
998 The minimum difference between timestamps and audio data (in seconds) to trigger
999 adding/dropping samples. The default value is 0.1. If you get an imperfect
1000 sync with this filter, try setting this parameter to 0.
1001
1002 @item max_comp
1003 The maximum compensation in samples per second. Only relevant with compensate=1.
1004 The default value is 500.
1005
1006 @item first_pts
1007 Assume that the first PTS should be this value. The time base is 1 / sample
1008 rate. This allows for padding/trimming at the start of the stream. By default,
1009 no assumption is made about the first frame's expected PTS, so no padding or
1010 trimming is done. For example, this could be set to 0 to pad the beginning with
1011 silence if an audio stream starts after the video stream or to trim any samples
1012 with a negative PTS due to encoder delay.
1013
1014 @end table
1015
1016 @section atempo
1017
1018 Adjust audio tempo.
1019
1020 The filter accepts exactly one parameter, the audio tempo. If not
1021 specified then the filter will assume nominal 1.0 tempo. Tempo must
1022 be in the [0.5, 2.0] range.
1023
1024 @subsection Examples
1025
1026 @itemize
1027 @item
1028 Slow down audio to 80% tempo:
1029 @example
1030 atempo=0.8
1031 @end example
1032
1033 @item
1034 To speed up audio to 125% tempo:
1035 @example
1036 atempo=1.25
1037 @end example
1038 @end itemize
1039
1040 @section atrim
1041
1042 Trim the input so that the output contains one continuous subpart of the input.
1043
1044 It accepts the following parameters:
1045 @table @option
1046 @item start
1047 Timestamp (in seconds) of the start of the section to keep. I.e. the audio
1048 sample with the timestamp @var{start} will be the first sample in the output.
1049
1050 @item end
1051 Specify time of the first audio sample that will be dropped, i.e. the
1052 audio sample immediately preceding the one with the timestamp @var{end} will be
1053 the last sample in the output.
1054
1055 @item start_pts
1056 Same as @var{start}, except this option sets the start timestamp in samples
1057 instead of seconds.
1058
1059 @item end_pts
1060 Same as @var{end}, except this option sets the end timestamp in samples instead
1061 of seconds.
1062
1063 @item duration
1064 The maximum duration of the output in seconds.
1065
1066 @item start_sample
1067 The number of the first sample that should be output.
1068
1069 @item end_sample
1070 The number of the first sample that should be dropped.
1071 @end table
1072
1073 @option{start}, @option{end}, @option{duration} are expressed as time
1074 duration specifications, check the "Time duration" section in the
1075 ffmpeg-utils manual.
1076
1077 Note that the first two sets of the start/end options and the @option{duration}
1078 option look at the frame timestamp, while the _sample options simply count the
1079 samples that pass through the filter. So start/end_pts and start/end_sample will
1080 give different results when the timestamps are wrong, inexact or do not start at
1081 zero. Also note that this filter does not modify the timestamps. If you wish
1082 to have the output timestamps start at zero, insert the asetpts filter after the
1083 atrim filter.
1084
1085 If multiple start or end options are set, this filter tries to be greedy and
1086 keep all samples that match at least one of the specified constraints. To keep
1087 only the part that matches all the constraints at once, chain multiple atrim
1088 filters.
1089
1090 The defaults are such that all the input is kept. So it is possible to set e.g.
1091 just the end values to keep everything before the specified time.
1092
1093 Examples:
1094 @itemize
1095 @item
1096 Drop everything except the second minute of input:
1097 @example
1098 ffmpeg -i INPUT -af atrim=60:120
1099 @end example
1100
1101 @item
1102 Keep only the first 1000 samples:
1103 @example
1104 ffmpeg -i INPUT -af atrim=end_sample=1000
1105 @end example
1106
1107 @end itemize
1108
1109 @section bandpass
1110
1111 Apply a two-pole Butterworth band-pass filter with central
1112 frequency @var{frequency}, and (3dB-point) band-width width.
1113 The @var{csg} option selects a constant skirt gain (peak gain = Q)
1114 instead of the default: constant 0dB peak gain.
1115 The filter roll off at 6dB per octave (20dB per decade).
1116
1117 The filter accepts the following options:
1118
1119 @table @option
1120 @item frequency, f
1121 Set the filter's central frequency. Default is @code{3000}.
1122
1123 @item csg
1124 Constant skirt gain if set to 1. Defaults to 0.
1125
1126 @item width_type
1127 Set method to specify band-width of filter.
1128 @table @option
1129 @item h
1130 Hz
1131 @item q
1132 Q-Factor
1133 @item o
1134 octave
1135 @item s
1136 slope
1137 @end table
1138
1139 @item width, w
1140 Specify the band-width of a filter in width_type units.
1141 @end table
1142
1143 @section bandreject
1144
1145 Apply a two-pole Butterworth band-reject filter with central
1146 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
1147 The filter roll off at 6dB per octave (20dB per decade).
1148
1149 The filter accepts the following options:
1150
1151 @table @option
1152 @item frequency, f
1153 Set the filter's central frequency. Default is @code{3000}.
1154
1155 @item width_type
1156 Set method to specify band-width of filter.
1157 @table @option
1158 @item h
1159 Hz
1160 @item q
1161 Q-Factor
1162 @item o
1163 octave
1164 @item s
1165 slope
1166 @end table
1167
1168 @item width, w
1169 Specify the band-width of a filter in width_type units.
1170 @end table
1171
1172 @section bass
1173
1174 Boost or cut the bass (lower) frequencies of the audio using a two-pole
1175 shelving filter with a response similar to that of a standard
1176 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
1177
1178 The filter accepts the following options:
1179
1180 @table @option
1181 @item gain, g
1182 Give the gain at 0 Hz. Its useful range is about -20
1183 (for a large cut) to +20 (for a large boost).
1184 Beware of clipping when using a positive gain.
1185
1186 @item frequency, f
1187 Set the filter's central frequency and so can be used
1188 to extend or reduce the frequency range to be boosted or cut.
1189 The default value is @code{100} Hz.
1190
1191 @item width_type
1192 Set method to specify band-width of filter.
1193 @table @option
1194 @item h
1195 Hz
1196 @item q
1197 Q-Factor
1198 @item o
1199 octave
1200 @item s
1201 slope
1202 @end table
1203
1204 @item width, w
1205 Determine how steep is the filter's shelf transition.
1206 @end table
1207
1208 @section biquad
1209
1210 Apply a biquad IIR filter with the given coefficients.
1211 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
1212 are the numerator and denominator coefficients respectively.
1213
1214 @section bs2b
1215 Bauer stereo to binaural transformation, which improves headphone listening of
1216 stereo audio records.
1217
1218 It accepts the following parameters:
1219 @table @option
1220
1221 @item profile
1222 Pre-defined crossfeed level.
1223 @table @option
1224
1225 @item default
1226 Default level (fcut=700, feed=50).
1227
1228 @item cmoy
1229 Chu Moy circuit (fcut=700, feed=60).
1230
1231 @item jmeier
1232 Jan Meier circuit (fcut=650, feed=95).
1233
1234 @end table
1235
1236 @item fcut
1237 Cut frequency (in Hz).
1238
1239 @item feed
1240 Feed level (in Hz).
1241
1242 @end table
1243
1244 @section channelmap
1245
1246 Remap input channels to new locations.
1247
1248 It accepts the following parameters:
1249 @table @option
1250 @item channel_layout
1251 The channel layout of the output stream.
1252
1253 @item map
1254 Map channels from input to output. The argument is a '|'-separated list of
1255 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
1256 @var{in_channel} form. @var{in_channel} can be either the name of the input
1257 channel (e.g. FL for front left) or its index in the input channel layout.
1258 @var{out_channel} is the name of the output channel or its index in the output
1259 channel layout. If @var{out_channel} is not given then it is implicitly an
1260 index, starting with zero and increasing by one for each mapping.
1261 @end table
1262
1263 If no mapping is present, the filter will implicitly map input channels to
1264 output channels, preserving indices.
1265
1266 For example, assuming a 5.1+downmix input MOV file,
1267 @example
1268 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
1269 @end example
1270 will create an output WAV file tagged as stereo from the downmix channels of
1271 the input.
1272
1273 To fix a 5.1 WAV improperly encoded in AAC's native channel order
1274 @example
1275 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:channel_layout=5.1' out.wav
1276 @end example
1277
1278 @section channelsplit
1279
1280 Split each channel from an input audio stream into a separate output stream.
1281
1282 It accepts the following parameters:
1283 @table @option
1284 @item channel_layout
1285 The channel layout of the input stream. The default is "stereo".
1286 @end table
1287
1288 For example, assuming a stereo input MP3 file,
1289 @example
1290 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
1291 @end example
1292 will create an output Matroska file with two audio streams, one containing only
1293 the left channel and the other the right channel.
1294
1295 Split a 5.1 WAV file into per-channel files:
1296 @example
1297 ffmpeg -i in.wav -filter_complex
1298 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
1299 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
1300 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
1301 side_right.wav
1302 @end example
1303
1304 @section compand
1305 Compress or expand the audio's dynamic range.
1306
1307 It accepts the following parameters:
1308
1309 @table @option
1310
1311 @item attacks
1312 @item decays
1313 A list of times in seconds for each channel over which the instantaneous level
1314 of the input signal is averaged to determine its volume. @var{attacks} refers to
1315 increase of volume and @var{decays} refers to decrease of volume. For most
1316 situations, the attack time (response to the audio getting louder) should be
1317 shorter than the decay time, because the human ear is more sensitive to sudden
1318 loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
1319 a typical value for decay is 0.8 seconds.
1320
1321 @item points
1322 A list of points for the transfer function, specified in dB relative to the
1323 maximum possible signal amplitude. Each key points list must be defined using
1324 the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
1325 @code{x0/y0 x1/y1 x2/y2 ....}
1326
1327 The input values must be in strictly increasing order but the transfer function
1328 does not have to be monotonically rising. The point @code{0/0} is assumed but
1329 may be overridden (by @code{0/out-dBn}). Typical values for the transfer
1330 function are @code{-70/-70|-60/-20}.
1331
1332 @item soft-knee
1333 Set the curve radius in dB for all joints. It defaults to 0.01.
1334
1335 @item gain
1336 Set the additional gain in dB to be applied at all points on the transfer
1337 function. This allows for easy adjustment of the overall gain.
1338 It defaults to 0.
1339
1340 @item volume
1341 Set an initial volume, in dB, to be assumed for each channel when filtering
1342 starts. This permits the user to supply a nominal level initially, so that, for
1343 example, a very large gain is not applied to initial signal levels before the
1344 companding has begun to operate. A typical value for audio which is initially
1345 quiet is -90 dB. It defaults to 0.
1346
1347 @item delay
1348 Set a delay, in seconds. The input audio is analyzed immediately, but audio is
1349 delayed before being fed to the volume adjuster. Specifying a delay
1350 approximately equal to the attack/decay times allows the filter to effectively
1351 operate in predictive rather than reactive mode. It defaults to 0.
1352
1353 @end table
1354
1355 @subsection Examples
1356
1357 @itemize
1358 @item
1359 Make music with both quiet and loud passages suitable for listening to in a
1360 noisy environment:
1361 @example
1362 compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
1363 @end example
1364
1365 @item
1366 A noise gate for when the noise is at a lower level than the signal:
1367 @example
1368 compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
1369 @end example
1370
1371 @item
1372 Here is another noise gate, this time for when the noise is at a higher level
1373 than the signal (making it, in some ways, similar to squelch):
1374 @example
1375 compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
1376 @end example
1377 @end itemize
1378
1379 @section earwax
1380
1381 Make audio easier to listen to on headphones.
1382
1383 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
1384 so that when listened to on headphones the stereo image is moved from
1385 inside your head (standard for headphones) to outside and in front of
1386 the listener (standard for speakers).
1387
1388 Ported from SoX.
1389
1390 @section equalizer
1391
1392 Apply a two-pole peaking equalisation (EQ) filter. With this
1393 filter, the signal-level at and around a selected frequency can
1394 be increased or decreased, whilst (unlike bandpass and bandreject
1395 filters) that at all other frequencies is unchanged.
1396
1397 In order to produce complex equalisation curves, this filter can
1398 be given several times, each with a different central frequency.
1399
1400 The filter accepts the following options:
1401
1402 @table @option
1403 @item frequency, f
1404 Set the filter's central frequency in Hz.
1405
1406 @item width_type
1407 Set method to specify band-width of filter.
1408 @table @option
1409 @item h
1410 Hz
1411 @item q
1412 Q-Factor
1413 @item o
1414 octave
1415 @item s
1416 slope
1417 @end table
1418
1419 @item width, w
1420 Specify the band-width of a filter in width_type units.
1421
1422 @item gain, g
1423 Set the required gain or attenuation in dB.
1424 Beware of clipping when using a positive gain.
1425 @end table
1426
1427 @subsection Examples
1428 @itemize
1429 @item
1430 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
1431 @example
1432 equalizer=f=1000:width_type=h:width=200:g=-10
1433 @end example
1434
1435 @item
1436 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
1437 @example
1438 equalizer=f=1000:width_type=q:width=1:g=2,equalizer=f=100:width_type=q:width=2:g=-5
1439 @end example
1440 @end itemize
1441
1442 @section flanger
1443 Apply a flanging effect to the audio.
1444
1445 The filter accepts the following options:
1446
1447 @table @option
1448 @item delay
1449 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
1450
1451 @item depth
1452 Set added swep delay in milliseconds. Range from 0 to 10. Default value is 2.
1453
1454 @item regen
1455 Set percentage regeneneration (delayed signal feedback). Range from -95 to 95.
1456 Default value is 0.
1457
1458 @item width
1459 Set percentage of delayed signal mixed with original. Range from 0 to 100.
1460 Default valu is 71.
1461
1462 @item speed
1463 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
1464
1465 @item shape
1466 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
1467 Default value is @var{sinusoidal}.
1468
1469 @item phase
1470 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
1471 Default value is 25.
1472
1473 @item interp
1474 Set delay-line interpolation, @var{linear} or @var{quadratic}.
1475 Default is @var{linear}.
1476 @end table
1477
1478 @section highpass
1479
1480 Apply a high-pass filter with 3dB point frequency.
1481 The filter can be either single-pole, or double-pole (the default).
1482 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
1483
1484 The filter accepts the following options:
1485
1486 @table @option
1487 @item frequency, f
1488 Set frequency in Hz. Default is 3000.
1489
1490 @item poles, p
1491 Set number of poles. Default is 2.
1492
1493 @item width_type
1494 Set method to specify band-width of filter.
1495 @table @option
1496 @item h
1497 Hz
1498 @item q
1499 Q-Factor
1500 @item o
1501 octave
1502 @item s
1503 slope
1504 @end table
1505
1506 @item width, w
1507 Specify the band-width of a filter in width_type units.
1508 Applies only to double-pole filter.
1509 The default is 0.707q and gives a Butterworth response.
1510 @end table
1511
1512 @section join
1513
1514 Join multiple input streams into one multi-channel stream.
1515
1516 It accepts the following parameters:
1517 @table @option
1518
1519 @item inputs
1520 The number of input streams. It defaults to 2.
1521
1522 @item channel_layout
1523 The desired output channel layout. It defaults to stereo.
1524
1525 @item map
1526 Map channels from inputs to output. The argument is a '|'-separated list of
1527 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
1528 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
1529 can be either the name of the input channel (e.g. FL for front left) or its
1530 index in the specified input stream. @var{out_channel} is the name of the output
1531 channel.
1532 @end table
1533
1534 The filter will attempt to guess the mappings when they are not specified
1535 explicitly. It does so by first trying to find an unused matching input channel
1536 and if that fails it picks the first unused input channel.
1537
1538 Join 3 inputs (with properly set channel layouts):
1539 @example
1540 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
1541 @end example
1542
1543 Build a 5.1 output from 6 single-channel streams:
1544 @example
1545 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
1546 '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'
1547 out
1548 @end example
1549
1550 @section ladspa
1551
1552 Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
1553
1554 To enable compilation of this filter you need to configure FFmpeg with
1555 @code{--enable-ladspa}.
1556
1557 @table @option
1558 @item file, f
1559 Specifies the name of LADSPA plugin library to load. If the environment
1560 variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
1561 each one of the directories specified by the colon separated list in
1562 @env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
1563 this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
1564 @file{/usr/lib/ladspa/}.
1565
1566 @item plugin, p
1567 Specifies the plugin within the library. Some libraries contain only
1568 one plugin, but others contain many of them. If this is not set filter
1569 will list all available plugins within the specified library.
1570
1571 @item controls, c
1572 Set the '|' separated list of controls which are zero or more floating point
1573 values that determine the behavior of the loaded plugin (for example delay,
1574 threshold or gain).
1575 Controls need to be defined using the following syntax:
1576 c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
1577 @var{valuei} is the value set on the @var{i}-th control.
1578 If @option{controls} is set to @code{help}, all available controls and
1579 their valid ranges are printed.
1580
1581 @item sample_rate, s
1582 Specify the sample rate, default to 44100. Only used if plugin have
1583 zero inputs.
1584
1585 @item nb_samples, n
1586 Set the number of samples per channel per each output frame, default
1587 is 1024. Only used if plugin have zero inputs.
1588
1589 @item duration, d
1590 Set the minimum duration of the sourced audio. See the function
1591 @code{av_parse_time()} for the accepted format, also check the "Time duration"
1592 section in the ffmpeg-utils manual.
1593 Note that the resulting duration may be greater than the specified duration,
1594 as the generated audio is always cut at the end of a complete frame.
1595 If not specified, or the expressed duration is negative, the audio is
1596 supposed to be generated forever.
1597 Only used if plugin have zero inputs.
1598
1599 @end table
1600
1601 @subsection Examples
1602
1603 @itemize
1604 @item
1605 List all available plugins within amp (LADSPA example plugin) library:
1606 @example
1607 ladspa=file=amp
1608 @end example
1609
1610 @item
1611 List all available controls and their valid ranges for @code{vcf_notch}
1612 plugin from @code{VCF} library:
1613 @example
1614 ladspa=f=vcf:p=vcf_notch:c=help
1615 @end example
1616
1617 @item
1618 Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
1619 plugin library:
1620 @example
1621 ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
1622 @end example
1623
1624 @item
1625 Add reverberation to the audio using TAP-plugins
1626 (Tom's Audio Processing plugins):
1627 @example
1628 ladspa=file=tap_reverb:tap_reverb
1629 @end example
1630
1631 @item
1632 Generate white noise, with 0.2 amplitude:
1633 @example
1634 ladspa=file=cmt:noise_source_white:c=c0=.2
1635 @end example
1636
1637 @item
1638 Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
1639 @code{C* Audio Plugin Suite} (CAPS) library:
1640 @example
1641 ladspa=file=caps:Click:c=c1=20'
1642 @end example
1643
1644 @item
1645 Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
1646 @example
1647 ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
1648 @end example
1649 @end itemize
1650
1651 @subsection Commands
1652
1653 This filter supports the following commands:
1654 @table @option
1655 @item cN
1656 Modify the @var{N}-th control value.
1657
1658 If the specified value is not valid, it is ignored and prior one is kept.
1659 @end table
1660
1661 @section lowpass
1662
1663 Apply a low-pass filter with 3dB point frequency.
1664 The filter can be either single-pole or double-pole (the default).
1665 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
1666
1667 The filter accepts the following options:
1668
1669 @table @option
1670 @item frequency, f
1671 Set frequency in Hz. Default is 500.
1672
1673 @item poles, p
1674 Set number of poles. Default is 2.
1675
1676 @item width_type
1677 Set method to specify band-width of filter.
1678 @table @option
1679 @item h
1680 Hz
1681 @item q
1682 Q-Factor
1683 @item o
1684 octave
1685 @item s
1686 slope
1687 @end table
1688
1689 @item width, w
1690 Specify the band-width of a filter in width_type units.
1691 Applies only to double-pole filter.
1692 The default is 0.707q and gives a Butterworth response.
1693 @end table
1694
1695 @section pan
1696
1697 Mix channels with specific gain levels. The filter accepts the output
1698 channel layout followed by a set of channels definitions.
1699
1700 This filter is also designed to remap efficiently the channels of an audio
1701 stream.
1702
1703 The filter accepts parameters of the form:
1704 "@var{l}:@var{outdef}:@var{outdef}:..."
1705
1706 @table @option
1707 @item l
1708 output channel layout or number of channels
1709
1710 @item outdef
1711 output channel specification, of the form:
1712 "@var{out_name}=[@var{gain}*]@var{in_name}[+[@var{gain}*]@var{in_name}...]"
1713
1714 @item out_name
1715 output channel to define, either a channel name (FL, FR, etc.) or a channel
1716 number (c0, c1, etc.)
1717
1718 @item gain
1719 multiplicative coefficient for the channel, 1 leaving the volume unchanged
1720
1721 @item in_name
1722 input channel to use, see out_name for details; it is not possible to mix
1723 named and numbered input channels
1724 @end table
1725
1726 If the `=' in a channel specification is replaced by `<', then the gains for
1727 that specification will be renormalized so that the total is 1, thus
1728 avoiding clipping noise.
1729
1730 @subsection Mixing examples
1731
1732 For example, if you want to down-mix from stereo to mono, but with a bigger
1733 factor for the left channel:
1734 @example
1735 pan=1:c0=0.9*c0+0.1*c1
1736 @end example
1737
1738 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
1739 7-channels surround:
1740 @example
1741 pan=stereo: FL < FL + 0.5*FC + 0.6*BL + 0.6*SL : FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
1742 @end example
1743
1744 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
1745 that should be preferred (see "-ac" option) unless you have very specific
1746 needs.
1747
1748 @subsection Remapping examples
1749
1750 The channel remapping will be effective if, and only if:
1751
1752 @itemize
1753 @item gain coefficients are zeroes or ones,
1754 @item only one input per channel output,
1755 @end itemize
1756
1757 If all these conditions are satisfied, the filter will notify the user ("Pure
1758 channel mapping detected"), and use an optimized and lossless method to do the
1759 remapping.
1760
1761 For example, if you have a 5.1 source and want a stereo audio stream by
1762 dropping the extra channels:
1763 @example
1764 pan="stereo: c0=FL : c1=FR"
1765 @end example
1766
1767 Given the same source, you can also switch front left and front right channels
1768 and keep the input channel layout:
1769 @example
1770 pan="5.1: c0=c1 : c1=c0 : c2=c2 : c3=c3 : c4=c4 : c5=c5"
1771 @end example
1772
1773 If the input is a stereo audio stream, you can mute the front left channel (and
1774 still keep the stereo channel layout) with:
1775 @example
1776 pan="stereo:c1=c1"
1777 @end example
1778
1779 Still with a stereo audio stream input, you can copy the right channel in both
1780 front left and right:
1781 @example
1782 pan="stereo: c0=FR : c1=FR"
1783 @end example
1784
1785 @section replaygain
1786
1787 ReplayGain scanner filter. This filter takes an audio stream as an input and
1788 outputs it unchanged.
1789 At end of filtering it displays @code{track_gain} and @code{track_peak}.
1790
1791 @section resample
1792
1793 Convert the audio sample format, sample rate and channel layout. It is
1794 not meant to be used directly.
1795
1796 @section silencedetect
1797
1798 Detect silence in an audio stream.
1799
1800 This filter logs a message when it detects that the input audio volume is less
1801 or equal to a noise tolerance value for a duration greater or equal to the
1802 minimum detected noise duration.
1803
1804 The printed times and duration are expressed in seconds.
1805
1806 The filter accepts the following options:
1807
1808 @table @option
1809 @item duration, d
1810 Set silence duration until notification (default is 2 seconds).
1811
1812 @item noise, n
1813 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
1814 specified value) or amplitude ratio. Default is -60dB, or 0.001.
1815 @end table
1816
1817 @subsection Examples
1818
1819 @itemize
1820 @item
1821 Detect 5 seconds of silence with -50dB noise tolerance:
1822 @example
1823 silencedetect=n=-50dB:d=5
1824 @end example
1825
1826 @item
1827 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
1828 tolerance in @file{silence.mp3}:
1829 @example
1830 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
1831 @end example
1832 @end itemize
1833
1834 @section treble
1835
1836 Boost or cut treble (upper) frequencies of the audio using a two-pole
1837 shelving filter with a response similar to that of a standard
1838 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
1839
1840 The filter accepts the following options:
1841
1842 @table @option
1843 @item gain, g
1844 Give the gain at whichever is the lower of ~22 kHz and the
1845 Nyquist frequency. Its useful range is about -20 (for a large cut)
1846 to +20 (for a large boost). Beware of clipping when using a positive gain.
1847
1848 @item frequency, f
1849 Set the filter's central frequency and so can be used
1850 to extend or reduce the frequency range to be boosted or cut.
1851 The default value is @code{3000} Hz.
1852
1853 @item width_type
1854 Set method to specify band-width of filter.
1855 @table @option
1856 @item h
1857 Hz
1858 @item q
1859 Q-Factor
1860 @item o
1861 octave
1862 @item s
1863 slope
1864 @end table
1865
1866 @item width, w
1867 Determine how steep is the filter's shelf transition.
1868 @end table
1869
1870 @section volume
1871
1872 Adjust the input audio volume.
1873
1874 It accepts the following parameters:
1875 @table @option
1876
1877 @item volume
1878 Set audio volume expression.
1879
1880 Output values are clipped to the maximum value.
1881
1882 The output audio volume is given by the relation:
1883 @example
1884 @var{output_volume} = @var{volume} * @var{input_volume}
1885 @end example
1886
1887 The default value for @var{volume} is "1.0".
1888
1889 @item precision
1890 This parameter represents the mathematical precision.
1891
1892 It determines which input sample formats will be allowed, which affects the
1893 precision of the volume scaling.
1894
1895 @table @option
1896 @item fixed
1897 8-bit fixed-point; this limits input sample format to U8, S16, and S32.
1898 @item float
1899 32-bit floating-point; this limits input sample format to FLT. (default)
1900 @item double
1901 64-bit floating-point; this limits input sample format to DBL.
1902 @end table
1903
1904 @item replaygain
1905 Choose the behaviour on encountering ReplayGain side data in input frames.
1906
1907 @table @option
1908 @item drop
1909 Remove ReplayGain side data, ignoring its contents (the default).
1910
1911 @item ignore
1912 Ignore ReplayGain side data, but leave it in the frame.
1913
1914 @item track
1915 Prefer the track gain, if present.
1916
1917 @item album
1918 Prefer the album gain, if present.
1919 @end table
1920
1921 @item replaygain_preamp
1922 Pre-amplification gain in dB to apply to the selected replaygain gain.
1923
1924 Default value for @var{replaygain_preamp} is 0.0.
1925
1926 @item eval
1927 Set when the volume expression is evaluated.
1928
1929 It accepts the following values:
1930 @table @samp
1931 @item once
1932 only evaluate expression once during the filter initialization, or
1933 when the @samp{volume} command is sent
1934
1935 @item frame
1936 evaluate expression for each incoming frame
1937 @end table
1938
1939 Default value is @samp{once}.
1940 @end table
1941
1942 The volume expression can contain the following parameters.
1943
1944 @table @option
1945 @item n
1946 frame number (starting at zero)
1947 @item nb_channels
1948 number of channels
1949 @item nb_consumed_samples
1950 number of samples consumed by the filter
1951 @item nb_samples
1952 number of samples in the current frame
1953 @item pos
1954 original frame position in the file
1955 @item pts
1956 frame PTS
1957 @item sample_rate
1958 sample rate
1959 @item startpts
1960 PTS at start of stream
1961 @item startt
1962 time at start of stream
1963 @item t
1964 frame time
1965 @item tb
1966 timestamp timebase
1967 @item volume
1968 last set volume value
1969 @end table
1970
1971 Note that when @option{eval} is set to @samp{once} only the
1972 @var{sample_rate} and @var{tb} variables are available, all other
1973 variables will evaluate to NAN.
1974
1975 @subsection Commands
1976
1977 This filter supports the following commands:
1978 @table @option
1979 @item volume
1980 Modify the volume expression.
1981 The command accepts the same syntax of the corresponding option.
1982
1983 If the specified expression is not valid, it is kept at its current
1984 value.
1985 @item replaygain_noclip
1986 Prevent clipping by limiting the gain applied.
1987
1988 Default value for @var{replaygain_noclip} is 1.
1989
1990 @end table
1991
1992 @subsection Examples
1993
1994 @itemize
1995 @item
1996 Halve the input audio volume:
1997 @example
1998 volume=volume=0.5
1999 volume=volume=1/2
2000 volume=volume=-6.0206dB
2001 @end example
2002
2003 In all the above example the named key for @option{volume} can be
2004 omitted, for example like in:
2005 @example
2006 volume=0.5
2007 @end example
2008
2009 @item
2010 Increase input audio power by 6 decibels using fixed-point precision:
2011 @example
2012 volume=volume=6dB:precision=fixed
2013 @end example
2014
2015 @item
2016 Fade volume after time 10 with an annihilation period of 5 seconds:
2017 @example
2018 volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
2019 @end example
2020 @end itemize
2021
2022 @section volumedetect
2023
2024 Detect the volume of the input video.
2025
2026 The filter has no parameters. The input is not modified. Statistics about
2027 the volume will be printed in the log when the input stream end is reached.
2028
2029 In particular it will show the mean volume (root mean square), maximum
2030 volume (on a per-sample basis), and the beginning of a histogram of the
2031 registered volume values (from the maximum value to a cumulated 1/1000 of
2032 the samples).
2033
2034 All volumes are in decibels relative to the maximum PCM value.
2035
2036 @subsection Examples
2037
2038 Here is an excerpt of the output:
2039 @example
2040 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
2041 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
2042 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
2043 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
2044 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
2045 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
2046 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
2047 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
2048 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
2049 @end example
2050
2051 It means that:
2052 @itemize
2053 @item
2054 The mean square energy is approximately -27 dB, or 10^-2.7.
2055 @item
2056 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
2057 @item
2058 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
2059 @end itemize
2060
2061 In other words, raising the volume by +4 dB does not cause any clipping,
2062 raising it by +5 dB causes clipping for 6 samples, etc.
2063
2064 @c man end AUDIO FILTERS
2065
2066 @chapter Audio Sources
2067 @c man begin AUDIO SOURCES
2068
2069 Below is a description of the currently available audio sources.
2070
2071 @section abuffer
2072
2073 Buffer audio frames, and make them available to the filter chain.
2074
2075 This source is mainly intended for a programmatic use, in particular
2076 through the interface defined in @file{libavfilter/asrc_abuffer.h}.
2077
2078 It accepts the following parameters:
2079 @table @option
2080
2081 @item time_base
2082 The timebase which will be used for timestamps of submitted frames. It must be
2083 either a floating-point number or in @var{numerator}/@var{denominator} form.
2084
2085 @item sample_rate
2086 The sample rate of the incoming audio buffers.
2087
2088 @item sample_fmt
2089 The sample format of the incoming audio buffers.
2090 Either a sample format name or its corresponging integer representation from
2091 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
2092
2093 @item channel_layout
2094 The channel layout of the incoming audio buffers.
2095 Either a channel layout name from channel_layout_map in
2096 @file{libavutil/channel_layout.c} or its corresponding integer representation
2097 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
2098
2099 @item channels
2100 The number of channels of the incoming audio buffers.
2101 If both @var{channels} and @var{channel_layout} are specified, then they
2102 must be consistent.
2103
2104 @end table
2105
2106 @subsection Examples
2107
2108 @example
2109 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
2110 @end example
2111
2112 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
2113 Since the sample format with name "s16p" corresponds to the number
2114 6 and the "stereo" channel layout corresponds to the value 0x3, this is
2115 equivalent to:
2116 @example
2117 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
2118 @end example
2119
2120 @section aevalsrc
2121
2122 Generate an audio signal specified by an expression.
2123
2124 This source accepts in input one or more expressions (one for each
2125 channel), which are evaluated and used to generate a corresponding
2126 audio signal.
2127
2128 This source accepts the following options:
2129
2130 @table @option
2131 @item exprs
2132 Set the '|'-separated expressions list for each separate channel. In case the
2133 @option{channel_layout} option is not specified, the selected channel layout
2134 depends on the number of provided expressions. Otherwise the last
2135 specified expression is applied to the remaining output channels.
2136
2137 @item channel_layout, c
2138 Set the channel layout. The number of channels in the specified layout
2139 must be equal to the number of specified expressions.
2140
2141 @item duration, d
2142 Set the minimum duration of the sourced audio. See the function
2143 @code{av_parse_time()} for the accepted format.
2144 Note that the resulting duration may be greater than the specified
2145 duration, as the generated audio is always cut at the end of a
2146 complete frame.
2147
2148 If not specified, or the expressed duration is negative, the audio is
2149 supposed to be generated forever.
2150
2151 @item nb_samples, n
2152 Set the number of samples per channel per each output frame,
2153 default to 1024.
2154
2155 @item sample_rate, s
2156 Specify the sample rate, default to 44100.
2157 @end table
2158
2159 Each expression in @var{exprs} can contain the following constants:
2160
2161 @table @option
2162 @item n
2163 number of the evaluated sample, starting from 0
2164
2165 @item t
2166 time of the evaluated sample expressed in seconds, starting from 0
2167
2168 @item s
2169 sample rate
2170
2171 @end table
2172
2173 @subsection Examples
2174
2175 @itemize
2176 @item
2177 Generate silence:
2178 @example
2179 aevalsrc=0
2180 @end example
2181
2182 @item
2183 Generate a sin signal with frequency of 440 Hz, set sample rate to
2184 8000 Hz:
2185 @example
2186 aevalsrc="sin(440*2*PI*t):s=8000"
2187 @end example
2188
2189 @item
2190 Generate a two channels signal, specify the channel layout (Front
2191 Center + Back Center) explicitly:
2192 @example
2193 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
2194 @end example
2195
2196 @item
2197 Generate white noise:
2198 @example
2199 aevalsrc="-2+random(0)"
2200 @end example
2201
2202 @item
2203 Generate an amplitude modulated signal:
2204 @example
2205 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
2206 @end example
2207
2208 @item
2209 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
2210 @example
2211 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
2212 @end example
2213
2214 @end itemize
2215
2216 @section anullsrc
2217
2218 The null audio source, return unprocessed audio frames. It is mainly useful
2219 as a template and to be employed in analysis / debugging tools, or as
2220 the source for filters which ignore the input data (for example the sox
2221 synth filter).
2222
2223 This source accepts the following options:
2224
2225 @table @option
2226
2227 @item channel_layout, cl
2228
2229 Specifies the channel layout, and can be either an integer or a string
2230 representing a channel layout. The default value of @var{channel_layout}
2231 is "stereo".
2232
2233 Check the channel_layout_map definition in
2234 @file{libavutil/channel_layout.c} for the mapping between strings and
2235 channel layout values.
2236
2237 @item sample_rate, r
2238 Specifies the sample rate, and defaults to 44100.
2239
2240 @item nb_samples, n
2241 Set the number of samples per requested frames.
2242
2243 @end table
2244
2245 @subsection Examples
2246
2247 @itemize
2248 @item
2249 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
2250 @example
2251 anullsrc=r=48000:cl=4
2252 @end example
2253
2254 @item
2255 Do the same operation with a more obvious syntax:
2256 @example
2257 anullsrc=r=48000:cl=mono
2258 @end example
2259 @end itemize
2260
2261 All the parameters need to be explicitly defined.
2262
2263 @section flite
2264
2265 Synthesize a voice utterance using the libflite library.
2266
2267 To enable compilation of this filter you need to configure FFmpeg with
2268 @code{--enable-libflite}.
2269
2270 Note that the flite library is not thread-safe.
2271
2272 The filter accepts the following options:
2273
2274 @table @option
2275
2276 @item list_voices
2277 If set to 1, list the names of the available voices and exit
2278 immediately. Default value is 0.
2279
2280 @item nb_samples, n
2281 Set the maximum number of samples per frame. Default value is 512.
2282
2283 @item textfile
2284 Set the filename containing the text to speak.
2285
2286 @item text
2287 Set the text to speak.
2288
2289 @item voice, v
2290 Set the voice to use for the speech synthesis. Default value is
2291 @code{kal}. See also the @var{list_voices} option.
2292 @end table
2293
2294 @subsection Examples
2295
2296 @itemize
2297 @item
2298 Read from file @file{speech.txt}, and synthetize the text using the
2299 standard flite voice:
2300 @example
2301 flite=textfile=speech.txt
2302 @end example
2303
2304 @item
2305 Read the specified text selecting the @code{slt} voice:
2306 @example
2307 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
2308 @end example
2309
2310 @item
2311 Input text to ffmpeg:
2312 @example
2313 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
2314 @end example
2315
2316 @item
2317 Make @file{ffplay} speak the specified text, using @code{flite} and
2318 the @code{lavfi} device:
2319 @example
2320 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
2321 @end example
2322 @end itemize
2323
2324 For more information about libflite, check:
2325 @url{http://www.speech.cs.cmu.edu/flite/}
2326
2327 @section sine
2328
2329 Generate an audio signal made of a sine wave with amplitude 1/8.
2330
2331 The audio signal is bit-exact.
2332
2333 The filter accepts the following options:
2334
2335 @table @option
2336
2337 @item frequency, f
2338 Set the carrier frequency. Default is 440 Hz.
2339
2340 @item beep_factor, b
2341 Enable a periodic beep every second with frequency @var{beep_factor} times
2342 the carrier frequency. Default is 0, meaning the beep is disabled.
2343
2344 @item sample_rate, r
2345 Specify the sample rate, default is 44100.
2346
2347 @item duration, d
2348 Specify the duration of the generated audio stream.
2349
2350 @item samples_per_frame
2351 Set the number of samples per output frame, default is 1024.
2352 @end table
2353
2354 @subsection Examples
2355
2356 @itemize
2357
2358 @item
2359 Generate a simple 440 Hz sine wave:
2360 @example
2361 sine
2362 @end example
2363
2364 @item
2365 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
2366 @example
2367 sine=220:4:d=5
2368 sine=f=220:b=4:d=5
2369 sine=frequency=220:beep_factor=4:duration=5
2370 @end example
2371
2372 @end itemize
2373
2374 @c man end AUDIO SOURCES
2375
2376 @chapter Audio Sinks
2377 @c man begin AUDIO SINKS
2378
2379 Below is a description of the currently available audio sinks.
2380
2381 @section abuffersink
2382
2383 Buffer audio frames, and make them available to the end of filter chain.
2384
2385 This sink is mainly intended for programmatic use, in particular
2386 through the interface defined in @file{libavfilter/buffersink.h}
2387 or the options system.
2388
2389 It accepts a pointer to an AVABufferSinkContext structure, which
2390 defines the incoming buffers' formats, to be passed as the opaque
2391 parameter to @code{avfilter_init_filter} for initialization.
2392 @section anullsink
2393
2394 Null audio sink; do absolutely nothing with the input audio. It is
2395 mainly useful as a template and for use in analysis / debugging
2396 tools.
2397
2398 @c man end AUDIO SINKS
2399
2400 @chapter Video Filters
2401 @c man begin VIDEO FILTERS
2402
2403 When you configure your FFmpeg build, you can disable any of the
2404 existing filters using @code{--disable-filters}.
2405 The configure output will show the video filters included in your
2406 build.
2407
2408 Below is a description of the currently available video filters.
2409
2410 @section alphaextract
2411
2412 Extract the alpha component from the input as a grayscale video. This
2413 is especially useful with the @var{alphamerge} filter.
2414
2415 @section alphamerge
2416
2417 Add or replace the alpha component of the primary input with the
2418 grayscale value of a second input. This is intended for use with
2419 @var{alphaextract} to allow the transmission or storage of frame
2420 sequences that have alpha in a format that doesn't support an alpha
2421 channel.
2422
2423 For example, to reconstruct full frames from a normal YUV-encoded video
2424 and a separate video created with @var{alphaextract}, you might use:
2425 @example
2426 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
2427 @end example
2428
2429 Since this filter is designed for reconstruction, it operates on frame
2430 sequences without considering timestamps, and terminates when either
2431 input reaches end of stream. This will cause problems if your encoding
2432 pipeline drops frames. If you're trying to apply an image as an
2433 overlay to a video stream, consider the @var{overlay} filter instead.
2434
2435 @section ass
2436
2437 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
2438 and libavformat to work. On the other hand, it is limited to ASS (Advanced
2439 Substation Alpha) subtitles files.
2440
2441 @section bbox
2442
2443 Compute the bounding box for the non-black pixels in the input frame
2444 luminance plane.
2445
2446 This filter computes the bounding box containing all the pixels with a
2447 luminance value greater than the minimum allowed value.
2448 The parameters describing the bounding box are printed on the filter
2449 log.
2450
2451 The filter accepts the following option:
2452
2453 @table @option
2454 @item min_val
2455 Set the minimal luminance value. Default is @code{16}.
2456 @end table
2457
2458 @section blackdetect
2459
2460 Detect video intervals that are (almost) completely black. Can be
2461 useful to detect chapter transitions, commercials, or invalid
2462 recordings. Output lines contains the time for the start, end and
2463 duration of the detected black interval expressed in seconds.
2464
2465 In order to display the output lines, you need to set the loglevel at
2466 least to the AV_LOG_INFO value.
2467
2468 The filter accepts the following options:
2469
2470 @table @option
2471 @item black_min_duration, d
2472 Set the minimum detected black duration expressed in seconds. It must
2473 be a non-negative floating point number.
2474
2475 Default value is 2.0.
2476
2477 @item picture_black_ratio_th, pic_th
2478 Set the threshold for considering a picture "black".
2479 Express the minimum value for the ratio:
2480 @example
2481 @var{nb_black_pixels} / @var{nb_pixels}
2482 @end example
2483
2484 for which a picture is considered black.
2485 Default value is 0.98.
2486
2487 @item pixel_black_th, pix_th
2488 Set the threshold for considering a pixel "black".
2489
2490 The threshold expresses the maximum pixel luminance value for which a
2491 pixel is considered "black". The provided value is scaled according to
2492 the following equation:
2493 @example
2494 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
2495 @end example
2496
2497 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
2498 the input video format, the range is [0-255] for YUV full-range
2499 formats and [16-235] for YUV non full-range formats.
2500
2501 Default value is 0.10.
2502 @end table
2503
2504 The following example sets the maximum pixel threshold to the minimum
2505 value, and detects only black intervals of 2 or more seconds:
2506 @example
2507 blackdetect=d=2:pix_th=0.00
2508 @end example
2509
2510 @section blackframe
2511
2512 Detect frames that are (almost) completely black. Can be useful to
2513 detect chapter transitions or commercials. Output lines consist of
2514 the frame number of the detected frame, the percentage of blackness,
2515 the position in the file if known or -1 and the timestamp in seconds.
2516
2517 In order to display the output lines, you need to set the loglevel at
2518 least to the AV_LOG_INFO value.
2519
2520 It accepts the following parameters:
2521
2522 @table @option
2523
2524 @item amount
2525 The percentage of the pixels that have to be below the threshold; it defaults to
2526 @code{98}.
2527
2528 @item threshold, thresh
2529 The threshold below which a pixel value is considered black; it defaults to
2530 @code{32}.
2531
2532 @end table
2533
2534 @section blend
2535
2536 Blend two video frames into each other.
2537
2538 It takes two input streams and outputs one stream, the first input is the
2539 "top" layer and second input is "bottom" layer.
2540 Output terminates when shortest input terminates.
2541
2542 A description of the accepted options follows.
2543
2544 @table @option
2545 @item c0_mode
2546 @item c1_mode
2547 @item c2_mode
2548 @item c3_mode
2549 @item all_mode
2550 Set blend mode for specific pixel component or all pixel components in case
2551 of @var{all_mode}. Default value is @code{normal}.
2552
2553 Available values for component modes are:
2554 @table @samp
2555 @item addition
2556 @item and
2557 @item average
2558 @item burn
2559 @item darken
2560 @item difference
2561 @item divide
2562 @item dodge
2563 @item exclusion
2564 @item hardlight
2565 @item lighten
2566 @item multiply
2567 @item negation
2568 @item normal
2569 @item or
2570 @item overlay
2571 @item phoenix
2572 @item pinlight
2573 @item reflect
2574 @item screen
2575 @item softlight
2576 @item subtract
2577 @item vividlight
2578 @item xor
2579 @end table
2580
2581 @item c0_opacity
2582 @item c1_opacity
2583 @item c2_opacity
2584 @item c3_opacity
2585 @item all_opacity
2586 Set blend opacity for specific pixel component or all pixel components in case
2587 of @var{all_opacity}. Only used in combination with pixel component blend modes.
2588
2589 @item c0_expr
2590 @item c1_expr
2591 @item c2_expr
2592 @item c3_expr
2593 @item all_expr
2594 Set blend expression for specific pixel component or all pixel components in case
2595 of @var{all_expr}. Note that related mode options will be ignored if those are set.
2596
2597 The expressions can use the following variables:
2598
2599 @table @option
2600 @item N
2601 The sequential number of the filtered frame, starting from @code{0}.
2602
2603 @item X
2604 @item Y
2605 the coordinates of the current sample
2606
2607 @item W
2608 @item H
2609 the width and height of currently filtered plane
2610
2611 @item SW
2612 @item SH
2613 Width and height scale depending on the currently filtered plane. It is the
2614 ratio between the corresponding luma plane number of pixels and the current
2615 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
2616 @code{0.5,0.5} for chroma planes.
2617
2618 @item T
2619 Time of the current frame, expressed in seconds.
2620
2621 @item TOP, A
2622 Value of pixel component at current location for first video frame (top layer).
2623
2624 @item BOTTOM, B
2625 Value of pixel component at current location for second video frame (bottom layer).
2626 @end table
2627
2628 @item shortest
2629 Force termination when the shortest input terminates. Default is @code{0}.
2630 @item repeatlast
2631 Continue applying the last bottom frame after the end of the stream. A value of
2632 @code{0} disable the filter after the last frame of the bottom layer is reached.
2633 Default is @code{1}.
2634 @end table
2635
2636 @subsection Examples
2637
2638 @itemize
2639 @item
2640 Apply transition from bottom layer to top layer in first 10 seconds:
2641 @example
2642 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
2643 @end example
2644
2645 @item
2646 Apply 1x1 checkerboard effect:
2647 @example
2648 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
2649 @end example
2650
2651 @item
2652 Apply uncover left effect:
2653 @example
2654 blend=all_expr='if(gte(N*SW+X,W),A,B)'
2655 @end example
2656
2657 @item
2658 Apply uncover down effect:
2659 @example
2660 blend=all_expr='if(gte(Y-N*SH,0),A,B)'
2661 @end example
2662
2663 @item
2664 Apply uncover up-left effect:
2665 @example
2666 blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
2667 @end example
2668 @end itemize
2669
2670 @section boxblur
2671
2672 Apply a boxblur algorithm to the input video.
2673
2674 It accepts the following parameters:
2675
2676 @table @option
2677
2678 @item luma_radius, lr
2679 @item luma_power, lp
2680 @item chroma_radius, cr
2681 @item chroma_power, cp
2682 @item alpha_radius, ar
2683 @item alpha_power, ap
2684
2685 @end table
2686
2687 A description of the accepted options follows.
2688
2689 @table @option
2690 @item luma_radius, lr
2691 @item chroma_radius, cr
2692 @item alpha_radius, ar
2693 Set an expression for the box radius in pixels used for blurring the
2694 corresponding input plane.
2695
2696 The radius value must be a non-negative number, and must not be
2697 greater than the value of the expression @code{min(w,h)/2} for the
2698 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
2699 planes.
2700
2701 Default value for @option{luma_radius} is "2". If not specified,
2702 @option{chroma_radius} and @option{alpha_radius} default to the
2703 corresponding value set for @option{luma_radius}.
2704
2705 The expressions can contain the following constants:
2706 @table @option
2707 @item w
2708 @item h
2709 The input width and height in pixels.
2710
2711 @item cw
2712 @item ch
2713 The input chroma image width and height in pixels.
2714
2715 @item hsub
2716 @item vsub
2717 The horizontal and vertical chroma subsample values. For example, for the
2718 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
2719 @end table
2720
2721 @item luma_power, lp
2722 @item chroma_power, cp
2723 @item alpha_power, ap
2724 Specify how many times the boxblur filter is applied to the
2725 corresponding plane.
2726
2727 Default value for @option{luma_power} is 2. If not specified,
2728 @option{chroma_power} and @option{alpha_power} default to the
2729 corresponding value set for @option{luma_power}.
2730
2731 A value of 0 will disable the effect.
2732 @end table
2733
2734 @subsection Examples
2735
2736 @itemize
2737 @item
2738 Apply a boxblur filter with the luma, chroma, and alpha radii
2739 set to 2:
2740 @example
2741 boxblur=luma_radius=2:luma_power=1
2742 boxblur=2:1
2743 @end example
2744
2745 @item
2746 Set the luma radius to 2, and alpha and chroma radius to 0:
2747 @example
2748 boxblur=2:1:cr=0:ar=0
2749 @end example
2750
2751 @item
2752 Set the luma and chroma radii to a fraction of the video dimension:
2753 @example
2754 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
2755 @end example
2756 @end itemize
2757
2758 @section colorbalance
2759 Modify intensity of primary colors (red, green and blue) of input frames.
2760
2761 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
2762 regions for the red-cyan, green-magenta or blue-yellow balance.
2763
2764 A positive adjustment value shifts the balance towards the primary color, a negative
2765 value towards the complementary color.
2766
2767 The filter accepts the following options:
2768
2769 @table @option
2770 @item rs
2771 @item gs
2772 @item bs
2773 Adjust red, green and blue shadows (darkest pixels).
2774
2775 @item rm
2776 @item gm
2777 @item bm
2778 Adjust red, green and blue midtones (medium pixels).
2779
2780 @item rh
2781 @item gh
2782 @item bh
2783 Adjust red, green and blue highlights (brightest pixels).
2784
2785 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
2786 @end table
2787
2788 @subsection Examples
2789
2790 @itemize
2791 @item
2792 Add red color cast to shadows:
2793 @example
2794 colorbalance=rs=.3
2795 @end example
2796 @end itemize
2797
2798 @section colorchannelmixer
2799
2800 Adjust video input frames by re-mixing color channels.
2801
2802 This filter modifies a color channel by adding the values associated to
2803 the other channels of the same pixels. For example if the value to
2804 modify is red, the output value will be:
2805 @example
2806 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
2807 @end example
2808
2809 The filter accepts the following options:
2810
2811 @table @option
2812 @item rr
2813 @item rg
2814 @item rb
2815 @item ra
2816 Adjust contribution of input red, green, blue and alpha channels for output red channel.
2817 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
2818
2819 @item gr
2820 @item gg
2821 @item gb
2822 @item ga
2823 Adjust contribution of input red, green, blue and alpha channels for output green channel.
2824 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
2825
2826 @item br
2827 @item bg
2828 @item bb
2829 @item ba
2830 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
2831 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
2832
2833 @item ar
2834 @item ag
2835 @item ab
2836 @item aa
2837 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
2838 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
2839
2840 Allowed ranges for options are @code{[-2.0, 2.0]}.
2841 @end table
2842
2843 @subsection Examples
2844
2845 @itemize
2846 @item
2847 Convert source to grayscale:
2848 @example
2849 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
2850 @end example
2851 @item
2852 Simulate sepia tones:
2853 @example
2854 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
2855 @end example
2856 @end itemize
2857
2858 @section colormatrix
2859
2860 Convert color matrix.
2861
2862 The filter accepts the following options:
2863
2864 @table @option
2865 @item src
2866 @item dst
2867 Specify the source and destination color matrix. Both values must be
2868 specified.
2869
2870 The accepted values are:
2871 @table @samp
2872 @item bt709
2873 BT.709
2874
2875 @item bt601
2876 BT.601
2877
2878 @item smpte240m
2879 SMPTE-240M
2880
2881 @item fcc
2882 FCC
2883 @end table
2884 @end table
2885
2886 For example to convert from BT.601 to SMPTE-240M, use the command:
2887 @example
2888 colormatrix=bt601:smpte240m
2889 @end example
2890
2891 @section copy
2892
2893 Copy the input source unchanged to the output. This is mainly useful for
2894 testing purposes.
2895
2896 @section crop
2897
2898 Crop the input video to given dimensions.
2899
2900 It accepts the following parameters:
2901
2902 @table @option
2903 @item w, out_w
2904 The width of the output video. It defaults to @code{iw}.
2905 This expression is evaluated only once during the filter
2906 configuration.
2907
2908 @item h, out_h
2909 The height of the output video. It defaults to @code{ih}.
2910 This expression is evaluated only once during the filter
2911 configuration.
2912
2913 @item x
2914 The horizontal position, in the input video, of the left edge of the output
2915 video. It defaults to @code{(in_w-out_w)/2}.
2916 This expression is evaluated per-frame.
2917
2918 @item y
2919 The vertical position, in the input video, of the top edge of the output video.
2920 It defaults to @code{(in_h-out_h)/2}.
2921 This expression is evaluated per-frame.
2922
2923 @item keep_aspect
2924 If set to 1 will force the output display aspect ratio
2925 to be the same of the input, by changing the output sample aspect
2926 ratio. It defaults to 0.
2927 @end table
2928
2929 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
2930 expressions containing the following constants:
2931
2932 @table @option
2933 @item x
2934 @item y
2935 The computed values for @var{x} and @var{y}. They are evaluated for
2936 each new frame.
2937
2938 @item in_w
2939 @item in_h
2940 The input width and height.
2941
2942 @item iw
2943 @item ih
2944 These are the same as @var{in_w} and @var{in_h}.
2945
2946 @item out_w
2947 @item out_h
2948 The output (cropped) width and height.
2949
2950 @item ow
2951 @item oh
2952 These are the same as @var{out_w} and @var{out_h}.
2953
2954 @item a
2955 same as @var{iw} / @var{ih}
2956
2957 @item sar
2958 input sample aspect ratio
2959
2960 @item dar
2961 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
2962
2963 @item hsub
2964 @item vsub
2965 horizontal and vertical chroma subsample values. For example for the
2966 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
2967
2968 @item n
2969 The number of the input frame, starting from 0.
2970
2971 @item pos
2972 the position in the file of the input frame, NAN if unknown
2973
2974 @item t
2975 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
2976
2977 @end table
2978
2979 The expression for @var{out_w} may depend on the value of @var{out_h},
2980 and the expression for @var{out_h} may depend on @var{out_w}, but they
2981 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
2982 evaluated after @var{out_w} and @var{out_h}.
2983
2984 The @var{x} and @var{y} parameters specify the expressions for the
2985 position of the top-left corner of the output (non-cropped) area. They
2986 are evaluated for each frame. If the evaluated value is not valid, it
2987 is approximated to the nearest valid value.
2988
2989 The expression for @var{x} may depend on @var{y}, and the expression
2990 for @var{y} may depend on @var{x}.
2991
2992 @subsection Examples
2993
2994 @itemize
2995 @item
2996 Crop area with size 100x100 at position (12,34).
2997 @example
2998 crop=100:100:12:34
2999 @end example
3000
3001 Using named options, the example above becomes:
3002 @example
3003 crop=w=100:h=100:x=12:y=34
3004 @end example
3005
3006 @item
3007 Crop the central input area with size 100x100:
3008 @example
3009 crop=100:100
3010 @end example
3011
3012 @item
3013 Crop the central input area with size 2/3 of the input video:
3014 @example
3015 crop=2/3*in_w:2/3*in_h
3016 @end example
3017
3018 @item
3019 Crop the input video central square:
3020 @example
3021 crop=out_w=in_h
3022 crop=in_h
3023 @end example
3024
3025 @item
3026 Delimit the rectangle with the top-left corner placed at position
3027 100:100 and the right-bottom corner corresponding to the right-bottom
3028 corner of the input image.
3029 @example
3030 crop=in_w-100:in_h-100:100:100
3031 @end example
3032
3033 @item
3034 Crop 10 pixels from the left and right borders, and 20 pixels from
3035 the top and bottom borders
3036 @example
3037 crop=in_w-2*10:in_h-2*20
3038 @end example
3039
3040 @item
3041 Keep only the bottom right quarter of the input image:
3042 @example
3043 crop=in_w/2:in_h/2:in_w/2:in_h/2
3044 @end example
3045
3046 @item
3047 Crop height for getting Greek harmony:
3048 @example
3049 crop=in_w:1/PHI*in_w
3050 @end example
3051
3052 @item
3053 Appply trembling effect:
3054 @example
3055 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)
3056 @end example
3057
3058 @item
3059 Apply erratic camera effect depending on timestamp:
3060 @example
3061 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)"
3062 @end example
3063
3064 @item
3065 Set x depending on the value of y:
3066 @example
3067 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
3068 @end example
3069 @end itemize
3070
3071 @section cropdetect
3072
3073 Auto-detect the crop size.
3074
3075 It calculates the necessary cropping parameters and prints the
3076 recommended parameters via the logging system. The detected dimensions
3077 correspond to the non-black area of the input video.
3078
3079 It accepts the following parameters:
3080
3081 @table @option
3082
3083 @item limit
3084 Set higher black value threshold, which can be optionally specified
3085 from nothing (0) to everything (255). An intensity value greater
3086 to the set value is considered non-black. It defaults to 24.
3087
3088 @item round
3089 The value which the width/height should be divisible by. It defaults to
3090 16. The offset is automatically adjusted to center the video. Use 2 to
3091 get only even dimensions (needed for 4:2:2 video). 16 is best when
3092 encoding to most video codecs.
3093
3094 @item reset_count, reset
3095 Set the counter that determines after how many frames cropdetect will
3096 reset the previously detected largest video area and start over to
3097 detect the current optimal crop area. Default value is 0.
3098
3099 This can be useful when channel logos distort the video area. 0
3100 indicates 'never reset', and returns the largest area encountered during
3101 playback.
3102 @end table
3103
3104 @anchor{curves}
3105 @section curves
3106
3107 Apply color adjustments using curves.
3108
3109 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
3110 component (red, green and blue) has its values defined by @var{N} key points
3111 tied from each other using a smooth curve. The x-axis represents the pixel
3112 values from the input frame, and the y-axis the new pixel values to be set for
3113 the output frame.
3114
3115 By default, a component curve is defined by the two points @var{(0;0)} and
3116 @var{(1;1)}. This creates a straight line where each original pixel value is
3117 "adjusted" to its own value, which means no change to the image.
3118
3119 The filter allows you to redefine these two points and add some more. A new
3120 curve (using a natural cubic spline interpolation) will be define to pass
3121 smoothly through all these new coordinates. The new defined points needs to be
3122 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
3123 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
3124 the vector spaces, the values will be clipped accordingly.
3125
3126 If there is no key point defined in @code{x=0}, the filter will automatically
3127 insert a @var{(0;0)} point. In the same way, if there is no key point defined
3128 in @code{x=1}, the filter will automatically insert a @var{(1;1)} point.
3129
3130 The filter accepts the following options:
3131
3132 @table @option
3133 @item preset
3134 Select one of the available color presets. This option can be used in addition
3135 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
3136 options takes priority on the preset values.
3137 Available presets are:
3138 @table @samp
3139 @item none
3140 @item color_negative
3141 @item cross_process
3142 @item darker
3143 @item increase_contrast
3144 @item lighter
3145 @item linear_contrast
3146 @item medium_contrast
3147 @item negative
3148 @item strong_contrast
3149 @item vintage
3150 @end table
3151 Default is @code{none}.
3152 @item master, m
3153 Set the master key points. These points will define a second pass mapping. It
3154 is sometimes called a "luminance" or "value" mapping. It can be used with
3155 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
3156 post-processing LUT.
3157 @item red, r
3158 Set the key points for the red component.
3159 @item green, g
3160 Set the key points for the green component.
3161 @item blue, b
3162 Set the key points for the blue component.
3163 @item all
3164 Set the key points for all components (not including master).
3165 Can be used in addition to the other key points component
3166 options. In this case, the unset component(s) will fallback on this
3167 @option{all} setting.
3168 @item psfile
3169 Specify a Photoshop curves file (@code{.asv}) to import the settings from.
3170 @end table
3171
3172 To avoid some filtergraph syntax conflicts, each key points list need to be
3173 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
3174
3175 @subsection Examples
3176
3177 @itemize
3178 @item
3179 Increase slightly the middle level of blue:
3180 @example
3181 curves=blue='0.5/0.58'
3182 @end example
3183
3184 @item
3185 Vintage effect:
3186 @example
3187 curves=r='0/0.11 .42/.51 1/0.95':g='0.50/0.48':b='0/0.22 .49/.44 1/0.8'
3188 @end example
3189 Here we obtain the following coordinates for each components:
3190 @table @var
3191 @item red
3192 @code{(0;0.11) (0.42;0.51) (1;0.95)}
3193 @item green
3194 @code{(0;0) (0.50;0.48) (1;1)}
3195 @item blue
3196 @code{(0;0.22) (0.49;0.44) (1;0.80)}
3197 @end table
3198
3199 @item
3200 The previous example can also be achieved with the associated built-in preset:
3201 @example
3202 curves=preset=vintage
3203 @end example
3204
3205 @item
3206 Or simply:
3207 @example
3208 curves=vintage
3209 @end example
3210
3211 @item
3212 Use a Photoshop preset and redefine the points of the green component:
3213 @example
3214 curves=psfile='MyCurvesPresets/purple.asv':green='0.45/0.53'
3215 @end example
3216 @end itemize
3217
3218 @section dctdnoiz
3219
3220 Denoise frames using 2D DCT (frequency domain filtering).
3221
3222 This filter is not designed for real time.
3223
3224 The filter accepts the following options:
3225
3226 @table @option
3227 @item sigma, s
3228 Set the noise sigma constant.
3229
3230 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
3231 coefficient (absolute value) below this threshold with be dropped.
3232
3233 If you need a more advanced filtering, see @option{expr}.
3234
3235 Default is @code{0}.
3236
3237 @item overlap
3238 Set number overlapping pixels for each block. Since the filter can be slow, you
3239 may want to reduce this value, at the cost of a less effective filter and the
3240 risk of various artefacts.
3241
3242 If the overlapping value doesn't allow to process the whole input width or
3243 height, a warning will be displayed and according borders won't be denoised.
3244
3245 Default value is @var{blocksize}-1, which is the best possible setting.
3246
3247 @item expr, e
3248 Set the coefficient factor expression.
3249
3250 For each coefficient of a DCT block, this expression will be evaluated as a
3251 multiplier value for the coefficient.
3252
3253 If this is option is set, the @option{sigma} option will be ignored.
3254
3255 The absolute value of the coefficient can be accessed through the @var{c}
3256 variable.
3257
3258 @item n
3259 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
3260 @var{blocksize}, which is the width and height of the processed blocks.
3261
3262 The default value is @var{3} (8x8) and can be raised to @var{4} for a
3263 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
3264 on the speed processing. Also, a larger block size does not necessarily means a
3265 better de-noising.
3266 @end table
3267
3268 @subsection Examples
3269
3270 Apply a denoise with a @option{sigma} of @code{4.5}:
3271 @example
3272 dctdnoiz=4.5
3273 @end example
3274
3275 The same operation can be achieved using the expression system:
3276 @example
3277 dctdnoiz=e='gte(c, 4.5*3)'
3278 @end example
3279
3280 Violent denoise using a block size of @code{16x16}:
3281 @example
3282 dctdnoiz=15:n=4
3283 @end example
3284
3285 @anchor{decimate}
3286 @section decimate
3287
3288 Drop duplicated frames at regular intervals.
3289
3290 The filter accepts the following options:
3291
3292 @table @option
3293 @item cycle
3294 Set the number of frames from which one will be dropped. Setting this to
3295 @var{N} means one frame in every batch of @var{N} frames will be dropped.
3296 Default is @code{5}.
3297
3298 @item dupthresh
3299 Set the threshold for duplicate detection. If the difference metric for a frame
3300 is less than or equal to this value, then it is declared as duplicate. Default
3301 is @code{1.1}
3302
3303 @item scthresh
3304 Set scene change threshold. Default is @code{15}.
3305
3306 @item blockx
3307 @item blocky
3308 Set the size of the x and y-axis blocks used during metric calculations.
3309 Larger blocks give better noise suppression, but also give worse detection of
3310 small movements. Must be a power of two. Default is @code{32}.
3311
3312 @item ppsrc
3313 Mark main input as a pre-processed input and activate clean source input
3314 stream. This allows the input to be pre-processed with various filters to help
3315 the metrics calculation while keeping the frame selection lossless. When set to
3316 @code{1}, the first stream is for the pre-processed input, and the second
3317 stream is the clean source from where the kept frames are chosen. Default is
3318 @code{0}.
3319
3320 @item chroma
3321 Set whether or not chroma is considered in the metric calculations. Default is
3322 @code{1}.
3323 @end table
3324
3325 @section dejudder
3326
3327 Remove judder produced by partially interlaced telecined content.
3328
3329 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
3330 source was partially telecined content then the output of @code{pullup,dejudder}
3331 will have a variable frame rate. May change the recorded frame rate of the
3332 container. Aside from that change, this filter will not affect constant frame
3333 rate video.
3334
3335 The option available in this filter is:
3336 @table @option
3337
3338 @item cycle
3339 Specify the length of the window over which the judder repeats.
3340
3341 Accepts any integer greater than 1. Useful values are:
3342 @table @samp
3343
3344 @item 4
3345 If the original was telecined from 24 to 30 fps (Film to NTSC).
3346
3347 @item 5
3348 If the original was telecined from 25 to 30 fps (PAL to NTSC).
3349
3350 @item 20
3351 If a mixture of the two.
3352 @end table
3353
3354 The default is @samp{4}.
3355 @end table
3356
3357 @section delogo
3358
3359 Suppress a TV station logo by a simple interpolation of the surrounding
3360 pixels. Just set a rectangle covering the logo and watch it disappear
3361 (and sometimes something even uglier appear - your mileage may vary).
3362
3363 It accepts the following parameters:
3364 @table @option
3365
3366 @item x
3367 @item y
3368 Specify the top left corner coordinates of the logo. They must be
3369 specified.
3370
3371 @item w
3372 @item h
3373 Specify the width and height of the logo to clear. They must be
3374 specified.
3375
3376 @item band, t
3377 Specify the thickness of the fuzzy edge of the rectangle (added to
3378 @var{w} and @var{h}). The default value is 4.
3379
3380 @item show
3381 When set to 1, a green rectangle is drawn on the screen to simplify
3382 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
3383 The default value is 0.
3384
3385 The rectangle is drawn on the outermost pixels which will be (partly)
3386 replaced with interpolated values. The values of the next pixels
3387 immediately outside this rectangle in each direction will be used to
3388 compute the interpolated pixel values inside the rectangle.
3389
3390 @end table
3391
3392 @subsection Examples
3393
3394 @itemize
3395 @item
3396 Set a rectangle covering the area with top left corner coordinates 0,0
3397 and size 100x77, and a band of size 10:
3398 @example
3399 delogo=x=0:y=0:w=100:h=77:band=10
3400 @end example
3401
3402 @end itemize
3403
3404 @section deshake
3405
3406 Attempt to fix small changes in horizontal and/or vertical shift. This
3407 filter helps remove camera shake from hand-holding a camera, bumping a
3408 tripod, moving on a vehicle, etc.
3409
3410 The filter accepts the following options:
3411
3412 @table @option
3413
3414 @item x
3415 @item y
3416 @item w
3417 @item h
3418 Specify a rectangular area where to limit the search for motion
3419 vectors.
3420 If desired the search for motion vectors can be limited to a
3421 rectangular area of the frame defined by its top left corner, width
3422 and height. These parameters have the same meaning as the drawbox
3423 filter which can be used to visualise the position of the bounding
3424 box.
3425
3426 This is useful when simultaneous movement of subjects within the frame
3427 might be confused for camera motion by the motion vector search.
3428
3429 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
3430 then the full frame is used. This allows later options to be set
3431 without specifying the bounding box for the motion vector search.
3432
3433 Default - search the whole frame.
3434
3435 @item rx
3436 @item ry
3437 Specify the maximum extent of movement in x and y directions in the
3438 range 0-64 pixels. Default 16.
3439
3440 @item edge
3441 Specify how to generate pixels to fill blanks at the edge of the
3442 frame. Available values are:
3443 @table @samp
3444 @item blank, 0
3445 Fill zeroes at blank locations
3446 @item original, 1
3447 Original image at blank locations
3448 @item clamp, 2
3449 Extruded edge value at blank locations
3450 @item mirror, 3
3451 Mirrored edge at blank locations
3452 @end table
3453 Default value is @samp{mirror}.
3454
3455 @item blocksize
3456 Specify the blocksize to use for motion search. Range 4-128 pixels,
3457 default 8.
3458
3459 @item contrast
3460 Specify the contrast threshold for blocks. Only blocks with more than
3461 the specified contrast (difference between darkest and lightest
3462 pixels) will be considered. Range 1-255, default 125.
3463
3464 @item search
3465 Specify the search strategy. Available values are:
3466 @table @samp
3467 @item exhaustive, 0
3468 Set exhaustive search
3469 @item less, 1
3470 Set less exhaustive search.
3471 @end table
3472 Default value is @samp{exhaustive}.
3473
3474 @item filename
3475 If set then a detailed log of the motion search is written to the
3476 specified file.
3477
3478 @item opencl
3479 If set to 1, specify using OpenCL capabilities, only available if
3480 FFmpeg was configured with @code{--enable-opencl}. Default value is 0.
3481
3482 @end table
3483
3484 @section drawbox
3485
3486 Draw a colored box on the input image.
3487
3488 It accepts the following parameters:
3489
3490 @table @option
3491 @item x
3492 @item y
3493 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
3494
3495 @item width, w
3496 @item height, h
3497 The expressions which specify the width and height of the box; if 0 they are interpreted as
3498 the input width and height. It defaults to 0.
3499
3500 @item color, c
3501 Specify the color of the box to write. For the general syntax of this option,
3502 check the "Color" section in the ffmpeg-utils manual. If the special
3503 value @code{invert} is used, the box edge color is the same as the
3504 video with inverted luma.
3505
3506 @item thickness, t
3507 The expression which sets the thickness of the box edge. Default value is @code{3}.
3508
3509 See below for the list of accepted constants.
3510 @end table
3511
3512 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
3513 following constants:
3514
3515 @table @option
3516 @item dar
3517 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
3518
3519 @item hsub
3520 @item vsub
3521 horizontal and vertical chroma subsample values. For example for the
3522 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
3523
3524 @item in_h, ih
3525 @item in_w, iw
3526 The input width and height.
3527
3528 @item sar
3529 The input sample aspect ratio.
3530
3531 @item x
3532 @item y
3533 The x and y offset coordinates where the box is drawn.
3534
3535 @item w
3536 @item h
3537 The width and height of the drawn box.
3538
3539 @item t
3540 The thickness of the drawn box.
3541
3542 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
3543 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
3544
3545 @end table
3546
3547 @subsection Examples
3548
3549 @itemize
3550 @item
3551 Draw a black box around the edge of the input image:
3552 @example
3553 drawbox
3554 @end example
3555
3556 @item
3557 Draw a box with color red and an opacity of 50%:
3558 @example
3559 drawbox=10:20:200:60:red@@0.5
3560 @end example
3561
3562 The previous example can be specified as:
3563 @example
3564 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
3565 @end example
3566
3567 @item
3568 Fill the box with pink color:
3569 @example
3570 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=max
3571 @end example
3572
3573 @item
3574 Draw a 2-pixel red 2.40:1 mask:
3575 @example
3576 drawbox=x=-t:y=0.5*(ih-iw/2.4)-t:w=iw+t*2:h=iw/2.4+t*2:t=2:c=red
3577 @end example
3578 @end itemize
3579
3580 @section drawgrid
3581
3582 Draw a grid on the input image.
3583
3584 It accepts the following parameters:
3585
3586 @table @option
3587 @item x
3588 @item y
3589 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
3590
3591 @item width, w
3592 @item height, h
3593 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
3594 input width and height, respectively, minus @code{thickness}, so image gets
3595 framed. Default to 0.
3596
3597 @item color, c
3598 Specify the color of the grid. For the general syntax of this option,
3599 check the "Color" section in the ffmpeg-utils manual. If the special
3600 value @code{invert} is used, the grid color is the same as the
3601 video with inverted luma.
3602
3603 @item thickness, t
3604 The expression which sets the thickness of the grid line. Default value is @code{1}.
3605
3606 See below for the list of accepted constants.
3607 @end table
3608
3609 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
3610 following constants:
3611
3612 @table @option
3613 @item dar
3614 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
3615
3616 @item hsub
3617 @item vsub
3618 horizontal and vertical chroma subsample values. For example for the
3619 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
3620
3621 @item in_h, ih
3622 @item in_w, iw
3623 The input grid cell width and height.
3624
3625 @item sar
3626 The input sample aspect ratio.
3627
3628 @item x
3629 @item y
3630 The x and y coordinates of some point of grid intersection (meant to configure offset).
3631
3632 @item w
3633 @item h
3634 The width and height of the drawn cell.
3635
3636 @item t
3637 The thickness of the drawn cell.
3638
3639 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
3640 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
3641
3642 @end table
3643
3644 @subsection Examples
3645
3646 @itemize
3647 @item
3648 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
3649 @example
3650 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
3651 @end example
3652
3653 @item
3654 Draw a white 3x3 grid with an opacity of 50%:
3655 @example
3656 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
3657 @end example
3658 @end itemize
3659
3660 @anchor{drawtext}
3661 @section drawtext
3662
3663 Draw a text string or text from a specified file on top of a video, using the
3664 libfreetype library.
3665
3666 To enable compilation of this filter, you need to configure FFmpeg with
3667 @code{--enable-libfreetype}.
3668 To enable default font fallback and the @var{font} option you need to
3669 configure FFmpeg with @code{--enable-libfontconfig}.
3670 To enable the @var{text_shaping} option, you need to configure FFmpeg with
3671 @code{--enable-libfribidi}.
3672
3673 @subsection Syntax
3674
3675 It accepts the following parameters:
3676
3677 @table @option
3678
3679 @item box
3680 Used to draw a box around text using the background color.
3681 The value must be either 1 (enable) or 0 (disable).
3682 The default value of @var{box} is 0.
3683
3684 @item boxcolor
3685 The color to be used for drawing box around text. For the syntax of this
3686 option, check the "Color" section in the ffmpeg-utils manual.
3687
3688 The default value of @var{boxcolor} is "white".
3689
3690 @item borderw
3691 Set the width of the border to be drawn around the text using @var{bordercolor}.
3692 The default value of @var{borderw} is 0.
3693
3694 @item bordercolor
3695 Set the color to be used for drawing border around text. For the syntax of this
3696 option, check the "Color" section in the ffmpeg-utils manual.
3697
3698 The default value of @var{bordercolor} is "black".
3699
3700 @item expansion
3701 Select how the @var{text} is expanded. Can be either @code{none},
3702 @code{strftime} (deprecated) or
3703 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
3704 below for details.
3705
3706 @item fix_bounds
3707 If true, check and fix text coords to avoid clipping.
3708
3709 @item fontcolor
3710 The color to be used for drawing fonts. For the syntax of this option, check
3711 the "Color" section in the ffmpeg-utils manual.
3712
3713 The default value of @var{fontcolor} is "black".
3714
3715 @item fontcolor_expr
3716 String which is expanded the same way as @var{text} to obtain dynamic
3717 @var{fontcolor} value. By default this option has empty value and is not
3718 processed. When this option is set, it overrides @var{fontcolor} option.
3719
3720 @item font
3721 The font family to be used for drawing text. By default Sans.
3722
3723 @item fontfile
3724 The font file to be used for drawing text. The path must be included.
3725 This parameter is mandatory if the fontconfig support is disabled.
3726
3727 @item fontsize
3728 The font size to be used for drawing text.
3729 The default value of @var{fontsize} is 16.
3730
3731 @item text_shaping
3732 If set to 1, attempt to shape the text (for example, reverse the order of
3733 right-to-left text and join Arabic characters) before drawing it.
3734 Otherwise, just draw the text exactly as given.
3735 By default 1 (if supported).
3736
3737 @item ft_load_flags
3738 The flags to be used for loading the fonts.
3739
3740 The flags map the corresponding flags supported by libfreetype, and are
3741 a combination of the following values:
3742 @table @var
3743 @item default
3744 @item no_scale
3745 @item no_hinting
3746 @item render
3747 @item no_bitmap
3748 @item vertical_layout
3749 @item force_autohint
3750 @item crop_bitmap
3751 @item pedantic
3752 @item ignore_global_advance_width
3753 @item no_recurse
3754 @item ignore_transform
3755 @item monochrome
3756 @item linear_design
3757 @item no_autohint
3758 @end table
3759
3760 Default value is "default".
3761
3762 For more information consult the documentation for the FT_LOAD_*
3763 libfreetype flags.
3764
3765 @item shadowcolor
3766 The color to be used for drawing a shadow behind the drawn text. For the
3767 syntax of this option, check the "Color" section in the ffmpeg-utils manual.
3768
3769 The default value of @var{shadowcolor} is "black".
3770
3771 @item shadowx
3772 @item shadowy
3773 The x and y offsets for the text shadow position with respect to the
3774 position of the text. They can be either positive or negative
3775 values. The default value for both is "0".
3776
3777 @item start_number
3778 The starting frame number for the n/frame_num variable. The default value
3779 is "0".
3780
3781 @item tabsize
3782 The size in number of spaces to use for rendering the tab.
3783 Default value is 4.
3784
3785 @item timecode
3786 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
3787 format. It can be used with or without text parameter. @var{timecode_rate}
3788 option must be specified.
3789
3790 @item timecode_rate, rate, r
3791 Set the timecode frame rate (timecode only).
3792
3793 @item text
3794 The text string to be drawn. The text must be a sequence of UTF-8
3795 encoded characters.
3796 This parameter is mandatory if no file is specified with the parameter
3797 @var{textfile}.
3798
3799 @item textfile
3800 A text file containing text to be drawn. The text must be a sequence
3801 of UTF-8 encoded characters.
3802
3803 This parameter is mandatory if no text string is specified with the
3804 parameter @var{text}.
3805
3806 If both @var{text} and @var{textfile} are specified, an error is thrown.
3807
3808 @item reload
3809 If set to 1, the @var{textfile} will be reloaded before each frame.
3810 Be sure to update it atomically, or it may be read partially, or even fail.
3811
3812 @item x
3813 @item y
3814 The expressions which specify the offsets where text will be drawn
3815 within the video frame. They are relative to the top/left border of the
3816 output image.
3817
3818 The default value of @var{x} and @var{y} is "0".
3819
3820 See below for the list of accepted constants and functions.
3821 @end table
3822
3823 The parameters for @var{x} and @var{y} are expressions containing the
3824 following constants and functions:
3825
3826 @table @option
3827 @item dar
3828 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
3829
3830 @item hsub
3831 @item vsub
3832 horizontal and vertical chroma subsample values. For example for the
3833 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
3834
3835 @item line_h, lh
3836 the height of each text line
3837
3838 @item main_h, h, H
3839 the input height
3840
3841 @item main_w, w, W
3842 the input width
3843
3844 @item max_glyph_a, ascent
3845 the maximum distance from the baseline to the highest/upper grid
3846 coordinate used to place a glyph outline point, for all the rendered
3847 glyphs.
3848 It is a positive value, due to the grid's orientation with the Y axis
3849 upwards.
3850
3851 @item max_glyph_d, descent
3852 the maximum distance from the baseline to the lowest grid coordinate
3853 used to place a glyph outline point, for all the rendered glyphs.
3854 This is a negative value, due to the grid's orientation, with the Y axis
3855 upwards.
3856
3857 @item max_glyph_h
3858 maximum glyph height, that is the maximum height for all the glyphs
3859 contained in the rendered text, it is equivalent to @var{ascent} -
3860 @var{descent}.
3861
3862 @item max_glyph_w
3863 maximum glyph width, that is the maximum width for all the glyphs
3864 contained in the rendered text
3865
3866 @item n
3867 the number of input frame, starting from 0
3868
3869 @item rand(min, max)
3870 return a random number included between @var{min} and @var{max}
3871
3872 @item sar
3873 The input sample aspect ratio.
3874
3875 @item t
3876 timestamp expressed in seconds, NAN if the input timestamp is unknown
3877
3878 @item text_h, th
3879 the height of the rendered text
3880
3881 @item text_w, tw
3882 the width of the rendered text
3883
3884 @item x
3885 @item y
3886 the x and y offset coordinates where the text is drawn.
3887
3888 These parameters allow the @var{x} and @var{y} expressions to refer
3889 each other, so you can for example specify @code{y=x/dar}.
3890 @end table
3891
3892 @anchor{drawtext_expansion}
3893 @subsection Text expansion
3894
3895 If @option{expansion} is set to @code{strftime},
3896 the filter recognizes strftime() sequences in the provided text and
3897 expands them accordingly. Check the documentation of strftime(). This
3898 feature is deprecated.
3899
3900 If @option{expansion} is set to @code{none}, the text is printed verbatim.
3901
3902 If @option{expansion} is set to @code{normal} (which is the default),
3903 the following expansion mechanism is used.
3904
3905 The backslash character '\', followed by any character, always expands to
3906 the second character.
3907
3908 Sequence of the form @code{%@{...@}} are expanded. The text between the
3909 braces is a function name, possibly followed by arguments separated by ':'.
3910 If the arguments contain special characters or delimiters (':' or '@}'),
3911 they should be escaped.
3912
3913 Note that they probably must also be escaped as the value for the
3914 @option{text} option in the filter argument string and as the filter
3915 argument in the filtergraph description, and possibly also for the shell,
3916 that makes up to four levels of escaping; using a text file avoids these
3917 problems.
3918
3919 The following functions are available:
3920
3921 @table @command
3922
3923 @item expr, e
3924 The expression evaluation result.
3925
3926 It must take one argument specifying the expression to be evaluated,
3927 which accepts the same constants and functions as the @var{x} and
3928 @var{y} values. Note that not all constants should be used, for
3929 example the text size is not known when evaluating the expression, so
3930 the constants @var{text_w} and @var{text_h} will have an undefined
3931 value.
3932
3933 @item expr_int_format, eif
3934 Evaluate the expression's value and output as formatted integer.
3935
3936 First argument is expression to be evaluated, same as for @var{expr} function.
3937 Second argument specifies output format. Allowed values are 'x', 'X', 'd' and
3938 'u', they are treated exactly as in printf function.
3939 Third parameter is optional and sets the number of positions taken by output.
3940 Effectively this allows to add padding with zeros from the left.
3941
3942 @item gmtime
3943 The time at which the filter is running, expressed in UTC.
3944 It can accept an argument: a strftime() format string.
3945
3946 @item localtime
3947 The time at which the filter is running, expressed in the local time zone.
3948 It can accept an argument: a strftime() format string.
3949
3950 @item metadata
3951 Frame metadata. It must take one argument specifying metadata key.
3952
3953 @item n, frame_num
3954 The frame number, starting from 0.
3955
3956 @item pict_type
3957 A 1 character description of the current picture type.
3958
3959 @item pts
3960 The timestamp of the current frame.
3961 It can take up to two arguments.
3962
3963 The first argument is the format of the timestamp; it defaults to @code{flt}
3964 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
3965 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
3966
3967 The second argument is an offset added to the timestamp.
3968
3969 @end table
3970
3971 @subsection Examples
3972
3973 @itemize
3974 @item
3975 Draw "Test Text" with font FreeSerif, using the default values for the
3976 optional parameters.
3977
3978 @example
3979 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
3980 @end example
3981
3982 @item
3983 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
3984 and y=50 (counting from the top-left corner of the screen), text is
3985 yellow with a red box around it. Both the text and the box have an
3986 opacity of 20%.
3987
3988 @example
3989 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
3990           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
3991 @end example
3992
3993 Note that the double quotes are not necessary if spaces are not used
3994 within the parameter list.
3995
3996 @item
3997 Show the text at the center of the video frame:
3998 @example
3999 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h-line_h)/2"
4000 @end example
4001
4002 @item
4003 Show a text line sliding from right to left in the last row of the video
4004 frame. The file @file{LONG_LINE} is assumed to contain a single line
4005 with no newlines.
4006 @example
4007 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
4008 @end example
4009
4010 @item
4011 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
4012 @example
4013 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
4014 @end example
4015
4016 @item
4017 Draw a single green letter "g", at the center of the input video.
4018 The glyph baseline is placed at half screen height.
4019 @example
4020 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
4021 @end example
4022
4023 @item
4024 Show text for 1 second every 3 seconds:
4025 @example
4026 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
4027 @end example
4028
4029 @item
4030 Use fontconfig to set the font. Note that the colons need to be escaped.
4031 @example
4032 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
4033 @end example
4034
4035 @item
4036 Print the date of a real-time encoding (see strftime(3)):
4037 @example
4038 drawtext='fontfile=FreeSans.ttf:text=%@{localtime:%a %b %d %Y@}'
4039 @end example
4040
4041 @item
4042 Shwo text fading in and out (appearing/disappearing):
4043 @example
4044 #!/bin/sh
4045 DS=1.0 # display start
4046 DE=10.0 # display end
4047 FID=1.5 # fade in duration
4048 FOD=5 # fade out duration
4049 ffplay -f lavfi "color,drawtext=text=TEST:fontsize=50:fontfile=FreeSerif.ttf:fontcolor_expr=ff0000%@{eif\\\\: clip(255*(1*between(t\\, $DS + $FID\\, $DE - $FOD) + ((t - $DS)/$FID)*between(t\\, $DS\\, $DS + $FID) + (-(t - $DE)/$FOD)*between(t\\, $DE - $FOD\\, $DE) )\\, 0\\, 255) \\\\: x\\\\: 2 @}"
4050 @end example
4051
4052 @end itemize
4053
4054 For more information about libfreetype, check:
4055 @url{http://www.freetype.org/}.
4056
4057 For more information about fontconfig, check:
4058 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
4059
4060 For more information about libfribidi, check:
4061 @url{http://fribidi.org/}.
4062
4063 @section edgedetect
4064
4065 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
4066
4067 The filter accepts the following options:
4068
4069 @table @option
4070 @item low
4071 @item high
4072 Set low and high threshold values used by the Canny thresholding
4073 algorithm.
4074
4075 The high threshold selects the "strong" edge pixels, which are then
4076 connected through 8-connectivity with the "weak" edge pixels selected
4077 by the low threshold.
4078
4079 @var{low} and @var{high} threshold values must be chosen in the range
4080 [0,1], and @var{low} should be lesser or equal to @var{high}.
4081
4082 Default value for @var{low} is @code{20/255}, and default value for @var{high}
4083 is @code{50/255}.
4084
4085 @item mode
4086 Define the drawing mode.
4087
4088 @table @samp
4089 @item wires
4090 Draw white/gray wires on black background.
4091
4092 @item colormix
4093 Mix the colors to create a paint/cartoon effect.
4094 @end table
4095
4096 Default value is @var{wires}.
4097 @end table
4098
4099 @subsection Examples
4100
4101 @itemize
4102 @item
4103 Standard edge detection with custom values for the hysteresis thresholding:
4104 @example
4105 edgedetect=low=0.1:high=0.4
4106 @end example
4107
4108 @item
4109 Painting effect without thresholding:
4110 @example
4111 edgedetect=mode=colormix:high=0
4112 @end example
4113 @end itemize
4114
4115 @section extractplanes
4116
4117 Extract color channel components from input video stream into
4118 separate grayscale video streams.
4119
4120 The filter accepts the following option:
4121
4122 @table @option
4123 @item planes
4124 Set plane(s) to extract.
4125
4126 Available values for planes are:
4127 @table @samp
4128 @item y
4129 @item u
4130 @item v
4131 @item a
4132 @item r
4133 @item g
4134 @item b
4135 @end table
4136
4137 Choosing planes not available in the input will result in an error.
4138 That means you cannot select @code{r}, @code{g}, @code{b} planes
4139 with @code{y}, @code{u}, @code{v} planes at same time.
4140 @end table
4141
4142 @subsection Examples
4143
4144 @itemize
4145 @item
4146 Extract luma, u and v color channel component from input video frame
4147 into 3 grayscale outputs:
4148 @example
4149 ffmpeg -i video.avi -filter_complex 'extractplanes=y+u+v[y][u][v]' -map '[y]' y.avi -map '[u]' u.avi -map '[v]' v.avi
4150 @end example
4151 @end itemize
4152
4153 @section elbg
4154
4155 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
4156
4157 For each input image, the filter will compute the optimal mapping from
4158 the input to the output given the codebook length, that is the number
4159 of distinct output colors.
4160
4161 This filter accepts the following options.
4162
4163 @table @option
4164 @item codebook_length, l
4165 Set codebook length. The value must be a positive integer, and
4166 represents the number of distinct output colors. Default value is 256.
4167
4168 @item nb_steps, n
4169 Set the maximum number of iterations to apply for computing the optimal
4170 mapping. The higher the value the better the result and the higher the
4171 computation time. Default value is 1.
4172
4173 @item seed, s
4174 Set a random seed, must be an integer included between 0 and
4175 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
4176 will try to use a good random seed on a best effort basis.
4177 @end table
4178
4179 @section fade
4180
4181 Apply a fade-in/out effect to the input video.
4182
4183 It accepts the following parameters:
4184
4185 @table @option
4186 @item type, t
4187 The effect type can be either "in" for a fade-in, or "out" for a fade-out
4188 effect.
4189 Default is @code{in}.
4190
4191 @item start_frame, s
4192 Specify the number of the frame to start applying the fade
4193 effect at. Default is 0.
4194
4195 @item nb_frames, n
4196 The number of frames that the fade effect lasts. At the end of the
4197 fade-in effect, the output video will have the same intensity as the input video.
4198 At the end of the fade-out transition, the output video will be filled with the
4199 selected @option{color}.
4200 Default is 25.
4201
4202 @item alpha
4203 If set to 1, fade only alpha channel, if one exists on the input.
4204 Default value is 0.
4205
4206 @item start_time, st
4207 Specify the timestamp (in seconds) of the frame to start to apply the fade
4208 effect. If both start_frame and start_time are specified, the fade will start at
4209 whichever comes last.  Default is 0.
4210
4211 @item duration, d
4212 The number of seconds for which the fade effect has to last. At the end of the
4213 fade-in effect the output video will have the same intensity as the input video,
4214 at the end of the fade-out transition the output video will be filled with the
4215 selected @option{color}.
4216 If both duration and nb_frames are specified, duration is used. Default is 0.
4217
4218 @item color, c
4219 Specify the color of the fade. Default is "black".
4220 @end table
4221
4222 @subsection Examples
4223
4224 @itemize
4225 @item
4226 Fade in the first 30 frames of video:
4227 @example
4228 fade=in:0:30
4229 @end example
4230
4231 The command above is equivalent to:
4232 @example
4233 fade=t=in:s=0:n=30
4234 @end example
4235
4236 @item
4237 Fade out the last 45 frames of a 200-frame video:
4238 @example
4239 fade=out:155:45
4240 fade=type=out:start_frame=155:nb_frames=45
4241 @end example
4242
4243 @item
4244 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
4245 @example
4246 fade=in:0:25, fade=out:975:25
4247 @end example
4248
4249 @item
4250 Make the first 5 frames yellow, then fade in from frame 5-24:
4251 @example
4252 fade=in:5:20:color=yellow
4253 @end example
4254
4255 @item
4256 Fade in alpha over first 25 frames of video:
4257 @example
4258 fade=in:0:25:alpha=1
4259 @end example
4260
4261 @item
4262 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
4263 @example
4264 fade=t=in:st=5.5:d=0.5
4265 @end example
4266
4267 @end itemize
4268
4269 @section field
4270
4271 Extract a single field from an interlaced image using stride
4272 arithmetic to avoid wasting CPU time. The output frames are marked as
4273 non-interlaced.
4274
4275 The filter accepts the following options:
4276
4277 @table @option
4278 @item type
4279 Specify whether to extract the top (if the value is @code{0} or
4280 @code{top}) or the bottom field (if the value is @code{1} or
4281 @code{bottom}).
4282 @end table
4283
4284 @section fieldmatch
4285
4286 Field matching filter for inverse telecine. It is meant to reconstruct the
4287 progressive frames from a telecined stream. The filter does not drop duplicated
4288 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
4289 followed by a decimation filter such as @ref{decimate} in the filtergraph.
4290
4291 The separation of the field matching and the decimation is notably motivated by
4292 the possibility of inserting a de-interlacing filter fallback between the two.
4293 If the source has mixed telecined and real interlaced content,
4294 @code{fieldmatch} will not be able to match fields for the interlaced parts.
4295 But these remaining combed frames will be marked as interlaced, and thus can be
4296 de-interlaced by a later filter such as @ref{yadif} before decimation.
4297
4298 In addition to the various configuration options, @code{fieldmatch} can take an
4299 optional second stream, activated through the @option{ppsrc} option. If
4300 enabled, the frames reconstruction will be based on the fields and frames from
4301 this second stream. This allows the first input to be pre-processed in order to
4302 help the various algorithms of the filter, while keeping the output lossless
4303 (assuming the fields are matched properly). Typically, a field-aware denoiser,
4304 or brightness/contrast adjustments can help.
4305
4306 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
4307 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
4308 which @code{fieldmatch} is based on. While the semantic and usage are very
4309 close, some behaviour and options names can differ.
4310
4311 The filter accepts the following options:
4312
4313 @table @option
4314 @item order
4315 Specify the assumed field order of the input stream. Available values are:
4316
4317 @table @samp
4318 @item auto
4319 Auto detect parity (use FFmpeg's internal parity value).
4320 @item bff
4321 Assume bottom field first.
4322 @item tff
4323 Assume top field first.
4324 @end table
4325
4326 Note that it is sometimes recommended not to trust the parity announced by the
4327 stream.
4328
4329 Default value is @var{auto}.
4330
4331 @item mode
4332 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
4333 sense that it won't risk creating jerkiness due to duplicate frames when
4334 possible, but if there are bad edits or blended fields it will end up
4335 outputting combed frames when a good match might actually exist. On the other
4336 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
4337 but will almost always find a good frame if there is one. The other values are
4338 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
4339 jerkiness and creating duplicate frames versus finding good matches in sections
4340 with bad edits, orphaned fields, blended fields, etc.
4341
4342 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
4343
4344 Available values are:
4345
4346 @table @samp
4347 @item pc
4348 2-way matching (p/c)
4349 @item pc_n
4350 2-way matching, and trying 3rd match if still combed (p/c + n)
4351 @item pc_u
4352 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
4353 @item pc_n_ub
4354 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
4355 still combed (p/c + n + u/b)
4356 @item pcn
4357 3-way matching (p/c/n)
4358 @item pcn_ub
4359 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
4360 detected as combed (p/c/n + u/b)
4361 @end table
4362
4363 The parenthesis at the end indicate the matches that would be used for that
4364 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
4365 @var{top}).
4366
4367 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
4368 the slowest.
4369
4370 Default value is @var{pc_n}.
4371
4372 @item ppsrc
4373 Mark the main input stream as a pre-processed input, and enable the secondary
4374 input stream as the clean source to pick the fields from. See the filter
4375 introduction for more details. It is similar to the @option{clip2} feature from
4376 VFM/TFM.
4377
4378 Default value is @code{0} (disabled).
4379
4380 @item field
4381 Set the field to match from. It is recommended to set this to the same value as
4382 @option{order} unless you experience matching failures with that setting. In
4383 certain circumstances changing the field that is used to match from can have a
4384 large impact on matching performance. Available values are:
4385
4386 @table @samp
4387 @item auto
4388 Automatic (same value as @option{order}).
4389 @item bottom
4390 Match from the bottom field.
4391 @item top
4392 Match from the top field.
4393 @end table
4394
4395 Default value is @var{auto}.
4396
4397 @item mchroma
4398 Set whether or not chroma is included during the match comparisons. In most
4399 cases it is recommended to leave this enabled. You should set this to @code{0}
4400 only if your clip has bad chroma problems such as heavy rainbowing or other
4401 artifacts. Setting this to @code{0} could also be used to speed things up at
4402 the cost of some accuracy.
4403
4404 Default value is @code{1}.
4405
4406 @item y0
4407 @item y1
4408 These define an exclusion band which excludes the lines between @option{y0} and
4409 @option{y1} from being included in the field matching decision. An exclusion
4410 band can be used to ignore subtitles, a logo, or other things that may
4411 interfere with the matching. @option{y0} sets the starting scan line and
4412 @option{y1} sets the ending line; all lines in between @option{y0} and
4413 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
4414 @option{y0} and @option{y1} to the same value will disable the feature.
4415 @option{y0} and @option{y1} defaults to @code{0}.
4416
4417 @item scthresh
4418 Set the scene change detection threshold as a percentage of maximum change on
4419 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
4420 detection is only relevant in case @option{combmatch}=@var{sc}.  The range for
4421 @option{scthresh} is @code{[0.0, 100.0]}.
4422
4423 Default value is @code{12.0}.
4424
4425 @item combmatch
4426 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
4427 account the combed scores of matches when deciding what match to use as the
4428 final match. Available values are:
4429
4430 @table @samp
4431 @item none
4432 No final matching based on combed scores.
4433 @item sc
4434 Combed scores are only used when a scene change is detected.
4435 @item full
4436 Use combed scores all the time.
4437 @end table
4438
4439 Default is @var{sc}.
4440
4441 @item combdbg
4442 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
4443 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
4444 Available values are:
4445
4446 @table @samp
4447 @item none
4448 No forced calculation.
4449 @item pcn
4450 Force p/c/n calculations.
4451 @item pcnub
4452 Force p/c/n/u/b calculations.
4453 @end table
4454
4455 Default value is @var{none}.
4456
4457 @item cthresh
4458 This is the area combing threshold used for combed frame detection. This
4459 essentially controls how "strong" or "visible" combing must be to be detected.
4460 Larger values mean combing must be more visible and smaller values mean combing
4461 can be less visible or strong and still be detected. Valid settings are from
4462 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
4463 be detected as combed). This is basically a pixel difference value. A good
4464 range is @code{[8, 12]}.
4465
4466 Default value is @code{9}.
4467
4468 @item chroma
4469 Sets whether or not chroma is considered in the combed frame decision.  Only
4470 disable this if your source has chroma problems (rainbowing, etc.) that are
4471 causing problems for the combed frame detection with chroma enabled. Actually,
4472 using @option{chroma}=@var{0} is usually more reliable, except for the case
4473 where there is chroma only combing in the source.
4474
4475 Default value is @code{0}.
4476
4477 @item blockx
4478 @item blocky
4479 Respectively set the x-axis and y-axis size of the window used during combed
4480 frame detection. This has to do with the size of the area in which
4481 @option{combpel} pixels are required to be detected as combed for a frame to be
4482 declared combed. See the @option{combpel} parameter description for more info.
4483 Possible values are any number that is a power of 2 starting at 4 and going up
4484 to 512.
4485
4486 Default value is @code{16}.
4487
4488 @item combpel
4489 The number of combed pixels inside any of the @option{blocky} by
4490 @option{blockx} size blocks on the frame for the frame to be detected as
4491 combed. While @option{cthresh} controls how "visible" the combing must be, this
4492 setting controls "how much" combing there must be in any localized area (a
4493 window defined by the @option{blockx} and @option{blocky} settings) on the
4494 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
4495 which point no frames will ever be detected as combed). This setting is known
4496 as @option{MI} in TFM/VFM vocabulary.
4497
4498 Default value is @code{80}.
4499 @end table
4500
4501 @anchor{p/c/n/u/b meaning}
4502 @subsection p/c/n/u/b meaning
4503
4504 @subsubsection p/c/n
4505
4506 We assume the following telecined stream:
4507
4508 @example
4509 Top fields:     1 2 2 3 4
4510 Bottom fields:  1 2 3 4 4
4511 @end example
4512
4513 The numbers correspond to the progressive frame the fields relate to. Here, the
4514 first two frames are progressive, the 3rd and 4th are combed, and so on.
4515
4516 When @code{fieldmatch} is configured to run a matching from bottom
4517 (@option{field}=@var{bottom}) this is how this input stream get transformed:
4518
4519 @example
4520 Input stream:
4521                 T     1 2 2 3 4
4522                 B     1 2 3 4 4   <-- matching reference
4523
4524 Matches:              c c n n c
4525
4526 Output stream:
4527                 T     1 2 3 4 4
4528                 B     1 2 3 4 4
4529 @end example
4530
4531 As a result of the field matching, we can see that some frames get duplicated.
4532 To perform a complete inverse telecine, you need to rely on a decimation filter
4533 after this operation. See for instance the @ref{decimate} filter.
4534
4535 The same operation now matching from top fields (@option{field}=@var{top})
4536 looks like this:
4537
4538 @example
4539 Input stream:
4540                 T     1 2 2 3 4   <-- matching reference
4541                 B     1 2 3 4 4
4542
4543 Matches:              c c p p c
4544
4545 Output stream:
4546                 T     1 2 2 3 4
4547                 B     1 2 2 3 4
4548 @end example
4549
4550 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
4551 basically, they refer to the frame and field of the opposite parity:
4552
4553 @itemize
4554 @item @var{p} matches the field of the opposite parity in the previous frame
4555 @item @var{c} matches the field of the opposite parity in the current frame
4556 @item @var{n} matches the field of the opposite parity in the next frame
4557 @end itemize
4558
4559 @subsubsection u/b
4560
4561 The @var{u} and @var{b} matching are a bit special in the sense that they match
4562 from the opposite parity flag. In the following examples, we assume that we are
4563 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
4564 'x' is placed above and below each matched fields.
4565
4566 With bottom matching (@option{field}=@var{bottom}):
4567 @example
4568 Match:           c         p           n          b          u
4569
4570                  x       x               x        x          x
4571   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
4572   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
4573                  x         x           x        x              x
4574
4575 Output frames:
4576                  2          1          2          2          2
4577                  2          2          2          1          3
4578 @end example
4579
4580 With top matching (@option{field}=@var{top}):
4581 @example
4582 Match:           c         p           n          b          u
4583
4584                  x         x           x        x              x
4585   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
4586   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
4587                  x       x               x        x          x
4588
4589 Output frames:
4590                  2          2          2          1          2
4591                  2          1          3          2          2
4592 @end example
4593
4594 @subsection Examples
4595
4596 Simple IVTC of a top field first telecined stream:
4597 @example
4598 fieldmatch=order=tff:combmatch=none, decimate
4599 @end example
4600
4601 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
4602 @example
4603 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
4604 @end example
4605
4606 @section fieldorder
4607
4608 Transform the field order of the input video.
4609
4610 It accepts the following parameters:
4611
4612 @table @option
4613
4614 @item order
4615 The output field order. Valid values are @var{tff} for top field first or @var{bff}
4616 for bottom field first.
4617 @end table
4618
4619 The default value is @samp{tff}.
4620
4621 The transformation is done by shifting the picture content up or down
4622 by one line, and filling the remaining line with appropriate picture content.
4623 This method is consistent with most broadcast field order converters.
4624
4625 If the input video is not flagged as being interlaced, or it is already
4626 flagged as being of the required output field order, then this filter does
4627 not alter the incoming video.
4628
4629 It is very useful when converting to or from PAL DV material,
4630 which is bottom field first.
4631
4632 For example:
4633 @example
4634 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
4635 @end example
4636
4637 @section fifo
4638
4639 Buffer input images and send them when they are requested.
4640
4641 It is mainly useful when auto-inserted by the libavfilter
4642 framework.
4643
4644 It does not take parameters.
4645
4646 @anchor{format}
4647 @section format
4648
4649 Convert the input video to one of the specified pixel formats.
4650 Libavfilter will try to pick one that is suitable as input to
4651 the next filter.
4652
4653 It accepts the following parameters:
4654 @table @option
4655
4656 @item pix_fmts
4657 A '|'-separated list of pixel format names, such as
4658 "pix_fmts=yuv420p|monow|rgb24".
4659
4660 @end table
4661
4662 @subsection Examples
4663
4664 @itemize
4665 @item
4666 Convert the input video to the @var{yuv420p} format
4667 @example
4668 format=pix_fmts=yuv420p
4669 @end example
4670
4671 Convert the input video to any of the formats in the list
4672 @example
4673 format=pix_fmts=yuv420p|yuv444p|yuv410p
4674 @end example
4675 @end itemize
4676
4677 @anchor{fps}
4678 @section fps
4679
4680 Convert the video to specified constant frame rate by duplicating or dropping
4681 frames as necessary.
4682
4683 It accepts the following parameters:
4684 @table @option
4685
4686 @item fps
4687 The desired output frame rate. The default is @code{25}.
4688
4689 @item round
4690 Rounding method.
4691
4692 Possible values are:
4693 @table @option
4694 @item zero
4695 zero round towards 0
4696 @item inf
4697 round away from 0
4698 @item down
4699 round towards -infinity
4700 @item up
4701 round towards +infinity
4702 @item near
4703 round to nearest
4704 @end table
4705 The default is @code{near}.
4706
4707 @item start_time
4708 Assume the first PTS should be the given value, in seconds. This allows for
4709 padding/trimming at the start of stream. By default, no assumption is made
4710 about the first frame's expected PTS, so no padding or trimming is done.
4711 For example, this could be set to 0 to pad the beginning with duplicates of
4712 the first frame if a video stream starts after the audio stream or to trim any
4713 frames with a negative PTS.
4714
4715 @end table
4716
4717 Alternatively, the options can be specified as a flat string:
4718 @var{fps}[:@var{round}].
4719
4720 See also the @ref{setpts} filter.
4721
4722 @subsection Examples
4723
4724 @itemize
4725 @item
4726 A typical usage in order to set the fps to 25:
4727 @example
4728 fps=fps=25
4729 @end example
4730
4731 @item
4732 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
4733 @example
4734 fps=fps=film:round=near
4735 @end example
4736 @end itemize
4737
4738 @section framepack
4739
4740 Pack two different video streams into a stereoscopic video, setting proper
4741 metadata on supported codecs. The two views should have the same size and
4742 framerate and processing will stop when the shorter video ends. Please note
4743 that you may conveniently adjust view properties with the @ref{scale} and
4744 @ref{fps} filters.
4745
4746 It accepts the following parameters:
4747 @table @option
4748
4749 @item format
4750 The desired packing format. Supported values are:
4751
4752 @table @option
4753
4754 @item sbs
4755 The views are next to each other (default).
4756
4757 @item tab
4758 The views are on top of each other.
4759
4760 @item lines
4761 The views are packed by line.
4762
4763 @item columns
4764 The views are packed by column.
4765
4766 @item frameseq
4767 The views are temporally interleaved.
4768
4769 @end table
4770
4771 @end table
4772
4773 Some examples:
4774
4775 @example
4776 # Convert left and right views into a frame-sequential video
4777 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
4778
4779 # Convert views into a side-by-side video with the same output resolution as the input
4780 ffmpeg -i LEFT -i RIGHT -filter_complex [0:v]scale=w=iw/2[left],[1:v]scale=w=iw/2[right],[left][right]framepack=sbs OUTPUT
4781 @end example
4782
4783 @section framestep
4784
4785 Select one frame every N-th frame.
4786
4787 This filter accepts the following option:
4788 @table @option
4789 @item step
4790 Select frame after every @code{step} frames.
4791 Allowed values are positive integers higher than 0. Default value is @code{1}.
4792 @end table
4793
4794 @anchor{frei0r}
4795 @section frei0r
4796
4797 Apply a frei0r effect to the input video.
4798
4799 To enable the compilation of this filter, you need to install the frei0r
4800 header and configure FFmpeg with @code{--enable-frei0r}.
4801
4802 It accepts the following parameters:
4803
4804 @table @option
4805
4806 @item filter_name
4807 The name of the frei0r effect to load. If the environment variable
4808 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
4809 directories specified by the colon-separated list in @env{FREIOR_PATH}.
4810 Otherwise, the standard frei0r paths are searched, in this order:
4811 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
4812 @file{/usr/lib/frei0r-1/}.
4813
4814 @item filter_params
4815 A '|'-separated list of parameters to pass to the frei0r effect.
4816
4817 @end table
4818
4819 A frei0r effect parameter can be a boolean (its value is either
4820 "y" or "n"), a double, a color (specified as
4821 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
4822 numbers between 0.0 and 1.0, inclusive) or by a color description specified in the "Color"
4823 section in the ffmpeg-utils manual), a position (specified as @var{X}/@var{Y}, where
4824 @var{X} and @var{Y} are floating point numbers) and/or a string.
4825
4826 The number and types of parameters depend on the loaded effect. If an
4827 effect parameter is not specified, the default value is set.
4828
4829 @subsection Examples
4830
4831 @itemize
4832 @item
4833 Apply the distort0r effect, setting the first two double parameters:
4834 @example
4835 frei0r=filter_name=distort0r:filter_params=0.5|0.01
4836 @end example
4837
4838 @item
4839 Apply the colordistance effect, taking a color as the first parameter:
4840 @example
4841 frei0r=colordistance:0.2/0.3/0.4
4842 frei0r=colordistance:violet
4843 frei0r=colordistance:0x112233
4844 @end example
4845
4846 @item
4847 Apply the perspective effect, specifying the top left and top right image
4848 positions:
4849 @example
4850 frei0r=perspective:0.2/0.2|0.8/0.2
4851 @end example
4852 @end itemize
4853
4854 For more information, see
4855 @url{http://frei0r.dyne.org}
4856
4857 @section geq
4858
4859 The filter accepts the following options:
4860
4861 @table @option
4862 @item lum_expr, lum
4863 Set the luminance expression.
4864 @item cb_expr, cb
4865 Set the chrominance blue expression.
4866 @item cr_expr, cr
4867 Set the chrominance red expression.
4868 @item alpha_expr, a
4869 Set the alpha expression.
4870 @item red_expr, r
4871 Set the red expression.
4872 @item green_expr, g
4873 Set the green expression.
4874 @item blue_expr, b
4875 Set the blue expression.
4876 @end table
4877
4878 The colorspace is selected according to the specified options. If one
4879 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
4880 options is specified, the filter will automatically select a YCbCr
4881 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
4882 @option{blue_expr} options is specified, it will select an RGB
4883 colorspace.
4884
4885 If one of the chrominance expression is not defined, it falls back on the other
4886 one. If no alpha expression is specified it will evaluate to opaque value.
4887 If none of chrominance expressions are specified, they will evaluate
4888 to the luminance expression.
4889
4890 The expressions can use the following variables and functions:
4891
4892 @table @option
4893 @item N
4894 The sequential number of the filtered frame, starting from @code{0}.
4895
4896 @item X
4897 @item Y
4898 The coordinates of the current sample.
4899
4900 @item W
4901 @item H
4902 The width and height of the image.
4903
4904 @item SW
4905 @item SH
4906 Width and height scale depending on the currently filtered plane. It is the
4907 ratio between the corresponding luma plane number of pixels and the current
4908 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
4909 @code{0.5,0.5} for chroma planes.
4910
4911 @item T
4912 Time of the current frame, expressed in seconds.
4913
4914 @item p(x, y)
4915 Return the value of the pixel at location (@var{x},@var{y}) of the current
4916 plane.
4917
4918 @item lum(x, y)
4919 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
4920 plane.
4921
4922 @item cb(x, y)
4923 Return the value of the pixel at location (@var{x},@var{y}) of the
4924 blue-difference chroma plane. Return 0 if there is no such plane.
4925
4926 @item cr(x, y)
4927 Return the value of the pixel at location (@var{x},@var{y}) of the
4928 red-difference chroma plane. Return 0 if there is no such plane.
4929
4930 @item r(x, y)
4931 @item g(x, y)
4932 @item b(x, y)
4933 Return the value of the pixel at location (@var{x},@var{y}) of the
4934 red/green/blue component. Return 0 if there is no such component.
4935
4936 @item alpha(x, y)
4937 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
4938 plane. Return 0 if there is no such plane.
4939 @end table
4940
4941 For functions, if @var{x} and @var{y} are outside the area, the value will be
4942 automatically clipped to the closer edge.
4943
4944 @subsection Examples
4945
4946 @itemize
4947 @item
4948 Flip the image horizontally:
4949 @example
4950 geq=p(W-X\,Y)
4951 @end example
4952
4953 @item
4954 Generate a bidimensional sine wave, with angle @code{PI/3} and a
4955 wavelength of 100 pixels:
4956 @example
4957 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
4958 @end example
4959
4960 @item
4961 Generate a fancy enigmatic moving light:
4962 @example
4963 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
4964 @end example
4965
4966 @item
4967 Generate a quick emboss effect:
4968 @example
4969 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
4970 @end example
4971
4972 @item
4973 Modify RGB components depending on pixel position:
4974 @example
4975 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
4976 @end example
4977 @end itemize
4978
4979 @section gradfun
4980
4981 Fix the banding artifacts that are sometimes introduced into nearly flat
4982 regions by truncation to 8bit color depth.
4983 Interpolate the gradients that should go where the bands are, and
4984 dither them.
4985
4986 It is designed for playback only.  Do not use it prior to
4987 lossy compression, because compression tends to lose the dither and
4988 bring back the bands.
4989
4990 It accepts the following parameters:
4991
4992 @table @option
4993
4994 @item strength
4995 The maximum amount by which the filter will change any one pixel. This is also
4996 the threshold for detecting nearly flat regions. Acceptable values range from
4997 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
4998 valid range.
4999
5000 @item radius
5001 The neighborhood to fit the gradient to. A larger radius makes for smoother
5002 gradients, but also prevents the filter from modifying the pixels near detailed
5003 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
5004 values will be clipped to the valid range.
5005
5006 @end table
5007
5008 Alternatively, the options can be specified as a flat string:
5009 @var{strength}[:@var{radius}]
5010
5011 @subsection Examples
5012
5013 @itemize
5014 @item
5015 Apply the filter with a @code{3.5} strength and radius of @code{8}:
5016 @example
5017 gradfun=3.5:8
5018 @end example
5019
5020 @item
5021 Specify radius, omitting the strength (which will fall-back to the default
5022 value):
5023 @example
5024 gradfun=radius=8
5025 @end example
5026
5027 @end itemize
5028
5029 @anchor{haldclut}
5030 @section haldclut
5031
5032 Apply a Hald CLUT to a video stream.
5033
5034 First input is the video stream to process, and second one is the Hald CLUT.
5035 The Hald CLUT input can be a simple picture or a complete video stream.
5036
5037 The filter accepts the following options:
5038
5039 @table @option
5040 @item shortest
5041 Force termination when the shortest input terminates. Default is @code{0}.
5042 @item repeatlast
5043 Continue applying the last CLUT after the end of the stream. A value of
5044 @code{0} disable the filter after the last frame of the CLUT is reached.
5045 Default is @code{1}.
5046 @end table
5047
5048 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
5049 filters share the same internals).
5050
5051 More information about the Hald CLUT can be found on Eskil Steenberg's website
5052 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
5053
5054 @subsection Workflow examples
5055
5056 @subsubsection Hald CLUT video stream
5057
5058 Generate an identity Hald CLUT stream altered with various effects:
5059 @example
5060 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "hue=H=2*PI*t:s=sin(2*PI*t)+1, curves=cross_process" -t 10 -c:v ffv1 clut.nut
5061 @end example
5062
5063 Note: make sure you use a lossless codec.
5064
5065 Then use it with @code{haldclut} to apply it on some random stream:
5066 @example
5067 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
5068 @end example
5069
5070 The Hald CLUT will be applied to the 10 first seconds (duration of
5071 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
5072 to the remaining frames of the @code{mandelbrot} stream.
5073
5074 @subsubsection Hald CLUT with preview
5075
5076 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
5077 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
5078 biggest possible square starting at the top left of the picture. The remaining
5079 padding pixels (bottom or right) will be ignored. This area can be used to add
5080 a preview of the Hald CLUT.
5081
5082 Typically, the following generated Hald CLUT will be supported by the
5083 @code{haldclut} filter:
5084
5085 @example
5086 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
5087    pad=iw+320 [padded_clut];
5088    smptebars=s=320x256, split [a][b];
5089    [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
5090    [main][b] overlay=W-320" -frames:v 1 clut.png
5091 @end example
5092
5093 It contains the original and a preview of the effect of the CLUT: SMPTE color
5094 bars are displayed on the right-top, and below the same color bars processed by
5095 the color changes.
5096
5097 Then, the effect of this Hald CLUT can be visualized with:
5098 @example
5099 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
5100 @end example
5101
5102 @section hflip
5103
5104 Flip the input video horizontally.
5105
5106 For example, to horizontally flip the input video with @command{ffmpeg}:
5107 @example
5108 ffmpeg -i in.avi -vf "hflip" out.avi
5109 @end example
5110
5111 @section histeq
5112 This filter applies a global color histogram equalization on a
5113 per-frame basis.
5114
5115 It can be used to correct video that has a compressed range of pixel
5116 intensities.  The filter redistributes the pixel intensities to
5117 equalize their distribution across the intensity range. It may be
5118 viewed as an "automatically adjusting contrast filter". This filter is
5119 useful only for correcting degraded or poorly captured source
5120 video.
5121
5122 The filter accepts the following options:
5123
5124 @table @option
5125 @item strength
5126 Determine the amount of equalization to be applied.  As the strength
5127 is reduced, the distribution of pixel intensities more-and-more
5128 approaches that of the input frame. The value must be a float number
5129 in the range [0,1] and defaults to 0.200.
5130
5131 @item intensity
5132 Set the maximum intensity that can generated and scale the output
5133 values appropriately.  The strength should be set as desired and then
5134 the intensity can be limited if needed to avoid washing-out. The value
5135 must be a float number in the range [0,1] and defaults to 0.210.
5136
5137 @item antibanding
5138 Set the antibanding level. If enabled the filter will randomly vary
5139 the luminance of output pixels by a small amount to avoid banding of
5140 the histogram. Possible values are @code{none}, @code{weak} or
5141 @code{strong}. It defaults to @code{none}.
5142 @end table
5143
5144 @section histogram
5145
5146 Compute and draw a color distribution histogram for the input video.
5147
5148 The computed histogram is a representation of the color component
5149 distribution in an image.
5150
5151 The filter accepts the following options:
5152
5153 @table @option
5154 @item mode
5155 Set histogram mode.
5156
5157 It accepts the following values:
5158 @table @samp
5159 @item levels
5160 Standard histogram that displays the color components distribution in an
5161 image. Displays color graph for each color component. Shows distribution of
5162 the Y, U, V, A or R, G, B components, depending on input format, in the
5163 current frame. Below each graph a color component scale meter is shown.
5164
5165 @item color
5166 Displays chroma values (U/V color placement) in a two dimensional
5167 graph (which is called a vectorscope). The brighter a pixel in the
5168 vectorscope, the more pixels of the input frame correspond to that pixel
5169 (i.e., more pixels have this chroma value). The V component is displayed on
5170 the horizontal (X) axis, with the leftmost side being V = 0 and the rightmost
5171 side being V = 255. The U component is displayed on the vertical (Y) axis,
5172 with the top representing U = 0 and the bottom representing U = 255.
5173
5174 The position of a white pixel in the graph corresponds to the chroma value of
5175 a pixel of the input clip. The graph can therefore be used to read the hue
5176 (color flavor) and the saturation (the dominance of the hue in the color). As
5177 the hue of a color changes, it moves around the square. At the center of the
5178 square the saturation is zero, which means that the corresponding pixel has no
5179 color. If the amount of a specific color is increased (while leaving the other
5180 colors unchanged) the saturation increases, and the indicator moves towards
5181 the edge of the square.
5182
5183 @item color2
5184 Chroma values in vectorscope, similar as @code{color} but actual chroma values
5185 are displayed.
5186
5187 @item waveform
5188 Per row/column color component graph. In row mode, the graph on the left side
5189 represents color component value 0 and the right side represents value = 255.
5190 In column mode, the top side represents color component value = 0 and bottom
5191 side represents value = 255.
5192 @end table
5193 Default value is @code{levels}.
5194
5195 @item level_height
5196 Set height of level in @code{levels}. Default value is @code{200}.
5197 Allowed range is [50, 2048].
5198
5199 @item scale_height
5200 Set height of color scale in @code{levels}. Default value is @code{12}.
5201 Allowed range is [0, 40].
5202
5203 @item step
5204 Set step for @code{waveform} mode. Smaller values are useful to find out how
5205 many values of the same luminance are distributed across input rows/columns.
5206 Default value is @code{10}. Allowed range is [1, 255].
5207
5208 @item waveform_mode
5209 Set mode for @code{waveform}. Can be either @code{row}, or @code{column}.
5210 Default is @code{row}.
5211
5212 @item waveform_mirror
5213 Set mirroring mode for @code{waveform}. @code{0} means unmirrored, @code{1}
5214 means mirrored. In mirrored mode, higher values will be represented on the left
5215 side for @code{row} mode and at the top for @code{column} mode. Default is
5216 @code{0} (unmirrored).
5217
5218 @item display_mode
5219 Set display mode for @code{waveform} and @code{levels}.
5220 It accepts the following values:
5221 @table @samp
5222 @item parade
5223 Display separate graph for the color components side by side in
5224 @code{row} waveform mode or one below the other in @code{column} waveform mode
5225 for @code{waveform} histogram mode. For @code{levels} histogram mode,
5226 per color component graphs are placed below each other.
5227
5228 Using this display mode in @code{waveform} histogram mode makes it easy to
5229 spot color casts in the highlights and shadows of an image, by comparing the
5230 contours of the top and the bottom graphs of each waveform. Since whites,
5231 grays, and blacks are characterized by exactly equal amounts of red, green,
5232 and blue, neutral areas of the picture should display three waveforms of
5233 roughly equal width/height. If not, the correction is easy to perform by
5234 making level adjustments the three waveforms.
5235
5236 @item overlay
5237 Presents information identical to that in the @code{parade}, except
5238 that the graphs representing color components are superimposed directly
5239 over one another.
5240
5241 This display mode in @code{waveform} histogram mode makes it easier to spot
5242 relative differences or similarities in overlapping areas of the color
5243 components that are supposed to be identical, such as neutral whites, grays,
5244 or blacks.
5245 @end table
5246 Default is @code{parade}.
5247
5248 @item levels_mode
5249 Set mode for @code{levels}. Can be either @code{linear}, or @code{logarithmic}.
5250 Default is @code{linear}.
5251 @end table
5252
5253 @subsection Examples
5254
5255 @itemize
5256
5257 @item
5258 Calculate and draw histogram:
5259 @example
5260 ffplay -i input -vf histogram
5261 @end example
5262
5263 @end itemize
5264
5265 @anchor{hqdn3d}
5266 @section hqdn3d
5267
5268 This is a high precision/quality 3d denoise filter. It aims to reduce
5269 image noise, producing smooth images and making still images really
5270 still. It should enhance compressibility.
5271
5272 It accepts the following optional parameters:
5273
5274 @table @option
5275 @item luma_spatial
5276 A non-negative floating point number which specifies spatial luma strength.
5277 It defaults to 4.0.
5278
5279 @item chroma_spatial
5280 A non-negative floating point number which specifies spatial chroma strength.
5281 It defaults to 3.0*@var{luma_spatial}/4.0.
5282
5283 @item luma_tmp
5284 A floating point number which specifies luma temporal strength. It defaults to
5285 6.0*@var{luma_spatial}/4.0.
5286
5287 @item chroma_tmp
5288 A floating point number which specifies chroma temporal strength. It defaults to
5289 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
5290 @end table
5291
5292 @section hqx
5293
5294 Apply a high-quality magnification filter designed for pixel art. This filter
5295 was originally created by Maxim Stepin.
5296
5297 It accepts the following option:
5298
5299 @table @option
5300 @item n
5301 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
5302 @code{hq3x} and @code{4} for @code{hq4x}.
5303 Default is @code{3}.
5304 @end table
5305
5306 @section hue
5307
5308 Modify the hue and/or the saturation of the input.
5309
5310 It accepts the following parameters:
5311
5312 @table @option
5313 @item h
5314 Specify the hue angle as a number of degrees. It accepts an expression,
5315 and defaults to "0".
5316
5317 @item s
5318 Specify the saturation in the [-10,10] range. It accepts an expression and
5319 defaults to "1".
5320
5321 @item H
5322 Specify the hue angle as a number of radians. It accepts an
5323 expression, and defaults to "0".
5324
5325 @item b
5326 Specify the brightness in the [-10,10] range. It accepts an expression and
5327 defaults to "0".
5328 @end table
5329
5330 @option{h} and @option{H} are mutually exclusive, and can't be
5331 specified at the same time.
5332
5333 The @option{b}, @option{h}, @option{H} and @option{s} option values are
5334 expressions containing the following constants:
5335
5336 @table @option
5337 @item n
5338 frame count of the input frame starting from 0
5339
5340 @item pts
5341 presentation timestamp of the input frame expressed in time base units
5342
5343 @item r
5344 frame rate of the input video, NAN if the input frame rate is unknown
5345
5346 @item t
5347 timestamp expressed in seconds, NAN if the input timestamp is unknown
5348
5349 @item tb
5350 time base of the input video
5351 @end table
5352
5353 @subsection Examples
5354
5355 @itemize
5356 @item
5357 Set the hue to 90 degrees and the saturation to 1.0:
5358 @example
5359 hue=h=90:s=1
5360 @end example
5361
5362 @item
5363 Same command but expressing the hue in radians:
5364 @example
5365 hue=H=PI/2:s=1
5366 @end example
5367
5368 @item
5369 Rotate hue and make the saturation swing between 0
5370 and 2 over a period of 1 second:
5371 @example
5372 hue="H=2*PI*t: s=sin(2*PI*t)+1"
5373 @end example
5374
5375 @item
5376 Apply a 3 seconds saturation fade-in effect starting at 0:
5377 @example
5378 hue="s=min(t/3\,1)"
5379 @end example
5380
5381 The general fade-in expression can be written as:
5382 @example
5383 hue="s=min(0\, max((t-START)/DURATION\, 1))"
5384 @end example
5385
5386 @item
5387 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
5388 @example
5389 hue="s=max(0\, min(1\, (8-t)/3))"
5390 @end example
5391
5392 The general fade-out expression can be written as:
5393 @example
5394 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
5395 @end example
5396
5397 @end itemize
5398
5399 @subsection Commands
5400
5401 This filter supports the following commands:
5402 @table @option
5403 @item b
5404 @item s
5405 @item h
5406 @item H
5407 Modify the hue and/or the saturation and/or brightness of the input video.
5408 The command accepts the same syntax of the corresponding option.
5409
5410 If the specified expression is not valid, it is kept at its current
5411 value.
5412 @end table
5413
5414 @section idet
5415
5416 Detect video interlacing type.
5417
5418 This filter tries to detect if the input is interlaced or progressive,
5419 top or bottom field first.
5420
5421 The filter accepts the following options:
5422
5423 @table @option
5424 @item intl_thres
5425 Set interlacing threshold.
5426 @item prog_thres
5427 Set progressive threshold.
5428 @end table
5429
5430 @section il
5431
5432 Deinterleave or interleave fields.
5433
5434 This filter allows one to process interlaced images fields without
5435 deinterlacing them. Deinterleaving splits the input frame into 2
5436 fields (so called half pictures). Odd lines are moved to the top
5437 half of the output image, even lines to the bottom half.
5438 You can process (filter) them independently and then re-interleave them.
5439
5440 The filter accepts the following options:
5441
5442 @table @option
5443 @item luma_mode, l
5444 @item chroma_mode, c
5445 @item alpha_mode, a
5446 Available values for @var{luma_mode}, @var{chroma_mode} and
5447 @var{alpha_mode} are:
5448
5449 @table @samp
5450 @item none
5451 Do nothing.
5452
5453 @item deinterleave, d
5454 Deinterleave fields, placing one above the other.
5455
5456 @item interleave, i
5457 Interleave fields. Reverse the effect of deinterleaving.
5458 @end table
5459 Default value is @code{none}.
5460
5461 @item luma_swap, ls
5462 @item chroma_swap, cs
5463 @item alpha_swap, as
5464 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
5465 @end table
5466
5467 @section interlace
5468
5469 Simple interlacing filter from progressive contents. This interleaves upper (or
5470 lower) lines from odd frames with lower (or upper) lines from even frames,
5471 halving the frame rate and preserving image height.
5472
5473 @example
5474    Original        Original             New Frame
5475    Frame 'j'      Frame 'j+1'             (tff)
5476   ==========      ===========       ==================
5477     Line 0  -------------------->    Frame 'j' Line 0
5478     Line 1          Line 1  ---->   Frame 'j+1' Line 1
5479     Line 2 --------------------->    Frame 'j' Line 2
5480     Line 3          Line 3  ---->   Frame 'j+1' Line 3
5481      ...             ...                   ...
5482 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
5483 @end example
5484
5485 It accepts the following optional parameters:
5486
5487 @table @option
5488 @item scan
5489 This determines whether the interlaced frame is taken from the even
5490 (tff - default) or odd (bff) lines of the progressive frame.
5491
5492 @item lowpass
5493 Enable (default) or disable the vertical lowpass filter to avoid twitter
5494 interlacing and reduce moire patterns.
5495 @end table
5496
5497 @section kerndeint
5498
5499 Deinterlace input video by applying Donald Graft's adaptive kernel
5500 deinterling. Work on interlaced parts of a video to produce
5501 progressive frames.
5502
5503 The description of the accepted parameters follows.
5504
5505 @table @option
5506 @item thresh
5507 Set the threshold which affects the filter's tolerance when
5508 determining if a pixel line must be processed. It must be an integer
5509 in the range [0,255] and defaults to 10. A value of 0 will result in
5510 applying the process on every pixels.
5511
5512 @item map
5513 Paint pixels exceeding the threshold value to white if set to 1.
5514 Default is 0.
5515
5516 @item order
5517 Set the fields order. Swap fields if set to 1, leave fields alone if
5518 0. Default is 0.
5519
5520 @item sharp
5521 Enable additional sharpening if set to 1. Default is 0.
5522
5523 @item twoway
5524 Enable twoway sharpening if set to 1. Default is 0.
5525 @end table
5526
5527 @subsection Examples
5528
5529 @itemize
5530 @item
5531 Apply default values:
5532 @example
5533 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
5534 @end example
5535
5536 @item
5537 Enable additional sharpening:
5538 @example
5539 kerndeint=sharp=1
5540 @end example
5541
5542 @item
5543 Paint processed pixels in white:
5544 @example
5545 kerndeint=map=1
5546 @end example
5547 @end itemize
5548
5549 @anchor{lut3d}
5550 @section lut3d
5551
5552 Apply a 3D LUT to an input video.
5553
5554 The filter accepts the following options:
5555
5556 @table @option
5557 @item file
5558 Set the 3D LUT file name.
5559
5560 Currently supported formats:
5561 @table @samp
5562 @item 3dl
5563 AfterEffects
5564 @item cube
5565 Iridas
5566 @item dat
5567 DaVinci
5568 @item m3d
5569 Pandora
5570 @end table
5571 @item interp
5572 Select interpolation mode.
5573
5574 Available values are:
5575
5576 @table @samp
5577 @item nearest
5578 Use values from the nearest defined point.
5579 @item trilinear
5580 Interpolate values using the 8 points defining a cube.
5581 @item tetrahedral
5582 Interpolate values using a tetrahedron.
5583 @end table
5584 @end table
5585
5586 @section lut, lutrgb, lutyuv
5587
5588 Compute a look-up table for binding each pixel component input value
5589 to an output value, and apply it to the input video.
5590
5591 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
5592 to an RGB input video.
5593
5594 These filters accept the following parameters:
5595 @table @option
5596 @item c0
5597 set first pixel component expression
5598 @item c1
5599 set second pixel component expression
5600 @item c2
5601 set third pixel component expression
5602 @item c3
5603 set fourth pixel component expression, corresponds to the alpha component
5604
5605 @item r
5606 set red component expression
5607 @item g
5608 set green component expression
5609 @item b
5610 set blue component expression
5611 @item a
5612 alpha component expression
5613
5614 @item y
5615 set Y/luminance component expression
5616 @item u
5617 set U/Cb component expression
5618 @item v
5619 set V/Cr component expression
5620 @end table
5621
5622 Each of them specifies the expression to use for computing the lookup table for
5623 the corresponding pixel component values.
5624
5625 The exact component associated to each of the @var{c*} options depends on the
5626 format in input.
5627
5628 The @var{lut} filter requires either YUV or RGB pixel formats in input,
5629 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
5630
5631 The expressions can contain the following constants and functions:
5632
5633 @table @option
5634 @item w
5635 @item h
5636 The input width and height.
5637
5638 @item val
5639 The input value for the pixel component.
5640
5641 @item clipval
5642 The input value, clipped to the @var{minval}-@var{maxval} range.
5643
5644 @item maxval
5645 The maximum value for the pixel component.
5646
5647 @item minval
5648 The minimum value for the pixel component.
5649
5650 @item negval
5651 The negated value for the pixel component value, clipped to the
5652 @var{minval}-@var{maxval} range; it corresponds to the expression
5653 "maxval-clipval+minval".
5654
5655 @item clip(val)
5656 The computed value in @var{val}, clipped to the
5657 @var{minval}-@var{maxval} range.
5658
5659 @item gammaval(gamma)
5660 The computed gamma correction value of the pixel component value,
5661 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
5662 expression
5663 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
5664
5665 @end table
5666
5667 All expressions default to "val".
5668
5669 @subsection Examples
5670
5671 @itemize
5672 @item
5673 Negate input video:
5674 @example
5675 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
5676 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
5677 @end example
5678
5679 The above is the same as:
5680 @example
5681 lutrgb="r=negval:g=negval:b=negval"
5682 lutyuv="y=negval:u=negval:v=negval"
5683 @end example
5684
5685 @item
5686 Negate luminance:
5687 @example
5688 lutyuv=y=negval
5689 @end example
5690
5691 @item
5692 Remove chroma components, turning the video into a graytone image:
5693 @example
5694 lutyuv="u=128:v=128"
5695 @end example
5696
5697 @item
5698 Apply a luma burning effect:
5699 @example
5700 lutyuv="y=2*val"
5701 @end example
5702
5703 @item
5704 Remove green and blue components:
5705 @example
5706 lutrgb="g=0:b=0"
5707 @end example
5708
5709 @item
5710 Set a constant alpha channel value on input:
5711 @example
5712 format=rgba,lutrgb=a="maxval-minval/2"
5713 @end example
5714
5715 @item
5716 Correct luminance gamma by a factor of 0.5:
5717 @example
5718 lutyuv=y=gammaval(0.5)
5719 @end example
5720
5721 @item
5722 Discard least significant bits of luma:
5723 @example
5724 lutyuv=y='bitand(val, 128+64+32)'
5725 @end example
5726 @end itemize
5727
5728 @section mergeplanes
5729
5730 Merge color channel components from several video streams.
5731
5732 The filter accepts up to 4 input streams, and merge selected input
5733 planes to the output video.
5734
5735 This filter accepts the following options:
5736 @table @option
5737 @item mapping
5738 Set input to output plane mapping. Default is @code{0}.
5739
5740 The mappings is specified as a bitmap. It should be specified as a
5741 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
5742 mapping for the first plane of the output stream. 'A' sets the number of
5743 the input stream to use (from 0 to 3), and 'a' the plane number of the
5744 corresponding input to use (from 0 to 3). The rest of the mappings is
5745 similar, 'Bb' describes the mapping for the output stream second
5746 plane, 'Cc' describes the mapping for the output stream third plane and
5747 'Dd' describes the mapping for the output stream fourth plane.
5748
5749 @item format
5750 Set output pixel format. Default is @code{yuva444p}.
5751 @end table
5752
5753 @subsection Examples
5754
5755 @itemize
5756 @item
5757 Merge three gray video streams of same width and height into single video stream:
5758 @example
5759 [a0][a1][a2]mergeplanes=0x001020:yuv444p
5760 @end example
5761
5762 @item
5763 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
5764 @example
5765 [a0][a1]mergeplanes=0x00010210:yuva444p
5766 @end example
5767
5768 @item
5769 Swap Y and A plane in yuva444p stream:
5770 @example
5771 format=yuva444p,mergeplanes=0x03010200:yuva444p
5772 @end example
5773
5774 @item
5775 Swap U and V plane in yuv420p stream:
5776 @example
5777 format=yuv420p,mergeplanes=0x000201:yuv420p
5778 @end example
5779
5780 @item
5781 Cast a rgb24 clip to yuv444p:
5782 @example
5783 format=rgb24,mergeplanes=0x000102:yuv444p
5784 @end example
5785 @end itemize
5786
5787 @section mcdeint
5788
5789 Apply motion-compensation deinterlacing.
5790
5791 It needs one field per frame as input and must thus be used together
5792 with yadif=1/3 or equivalent.
5793
5794 This filter accepts the following options:
5795 @table @option
5796 @item mode
5797 Set the deinterlacing mode.
5798
5799 It accepts one of the following values:
5800 @table @samp
5801 @item fast
5802 @item medium
5803 @item slow
5804 use iterative motion estimation
5805 @item extra_slow
5806 like @samp{slow}, but use multiple reference frames.
5807 @end table
5808 Default value is @samp{fast}.
5809
5810 @item parity
5811 Set the picture field parity assumed for the input video. It must be
5812 one of the following values:
5813
5814 @table @samp
5815 @item 0, tff
5816 assume top field first
5817 @item 1, bff
5818 assume bottom field first
5819 @end table
5820
5821 Default value is @samp{bff}.
5822
5823 @item qp
5824 Set per-block quantization parameter (QP) used by the internal
5825 encoder.
5826
5827 Higher values should result in a smoother motion vector field but less
5828 optimal individual vectors. Default value is 1.
5829 @end table
5830
5831 @section mp
5832
5833 Apply an MPlayer filter to the input video.
5834
5835 This filter provides a wrapper around some of the filters of
5836 MPlayer/MEncoder.
5837
5838 This wrapper is considered experimental. Some of the wrapped filters
5839 may not work properly and we may drop support for them, as they will
5840 be implemented natively into FFmpeg. Thus you should avoid
5841 depending on them when writing portable scripts.
5842
5843 The filter accepts the parameters:
5844 @var{filter_name}[:=]@var{filter_params}
5845
5846 @var{filter_name} is the name of a supported MPlayer filter,
5847 @var{filter_params} is a string containing the parameters accepted by
5848 the named filter.
5849
5850 The list of the currently supported filters follows:
5851 @table @var
5852 @item eq2
5853 @item eq
5854 @item fspp
5855 @item ilpack
5856 @item pp7
5857 @item softpulldown
5858 @item uspp
5859 @end table
5860
5861 The parameter syntax and behavior for the listed filters are the same
5862 of the corresponding MPlayer filters. For detailed instructions check
5863 the "VIDEO FILTERS" section in the MPlayer manual.
5864
5865 @subsection Examples
5866
5867 @itemize
5868 @item
5869 Adjust gamma, brightness, contrast:
5870 @example
5871 mp=eq2=1.0:2:0.5
5872 @end example
5873 @end itemize
5874
5875 See also mplayer(1), @url{http://www.mplayerhq.hu/}.
5876
5877 @section mpdecimate
5878
5879 Drop frames that do not differ greatly from the previous frame in
5880 order to reduce frame rate.
5881
5882 The main use of this filter is for very-low-bitrate encoding
5883 (e.g. streaming over dialup modem), but it could in theory be used for
5884 fixing movies that were inverse-telecined incorrectly.
5885
5886 A description of the accepted options follows.
5887
5888 @table @option
5889 @item max
5890 Set the maximum number of consecutive frames which can be dropped (if
5891 positive), or the minimum interval between dropped frames (if
5892 negative). If the value is 0, the frame is dropped unregarding the
5893 number of previous sequentially dropped frames.
5894
5895 Default value is 0.
5896
5897 @item hi
5898 @item lo
5899 @item frac
5900 Set the dropping threshold values.
5901
5902 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
5903 represent actual pixel value differences, so a threshold of 64
5904 corresponds to 1 unit of difference for each pixel, or the same spread
5905 out differently over the block.
5906
5907 A frame is a candidate for dropping if no 8x8 blocks differ by more
5908 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
5909 meaning the whole image) differ by more than a threshold of @option{lo}.
5910
5911 Default value for @option{hi} is 64*12, default value for @option{lo} is
5912 64*5, and default value for @option{frac} is 0.33.
5913 @end table
5914
5915
5916 @section negate
5917
5918 Negate input video.
5919
5920 It accepts an integer in input; if non-zero it negates the
5921 alpha component (if available). The default value in input is 0.
5922
5923 @section noformat
5924
5925 Force libavfilter not to use any of the specified pixel formats for the
5926 input to the next filter.
5927
5928 It accepts the following parameters:
5929 @table @option
5930
5931 @item pix_fmts
5932 A '|'-separated list of pixel format names, such as
5933 apix_fmts=yuv420p|monow|rgb24".
5934
5935 @end table
5936
5937 @subsection Examples
5938
5939 @itemize
5940 @item
5941 Force libavfilter to use a format different from @var{yuv420p} for the
5942 input to the vflip filter:
5943 @example
5944 noformat=pix_fmts=yuv420p,vflip
5945 @end example
5946
5947 @item
5948 Convert the input video to any of the formats not contained in the list:
5949 @example
5950 noformat=yuv420p|yuv444p|yuv410p
5951 @end example
5952 @end itemize
5953
5954 @section noise
5955
5956 Add noise on video input frame.
5957
5958 The filter accepts the following options:
5959
5960 @table @option
5961 @item all_seed
5962 @item c0_seed
5963 @item c1_seed
5964 @item c2_seed
5965 @item c3_seed
5966 Set noise seed for specific pixel component or all pixel components in case
5967 of @var{all_seed}. Default value is @code{123457}.
5968
5969 @item all_strength, alls
5970 @item c0_strength, c0s
5971 @item c1_strength, c1s
5972 @item c2_strength, c2s
5973 @item c3_strength, c3s
5974 Set noise strength for specific pixel component or all pixel components in case
5975 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
5976
5977 @item all_flags, allf
5978 @item c0_flags, c0f
5979 @item c1_flags, c1f
5980 @item c2_flags, c2f
5981 @item c3_flags, c3f
5982 Set pixel component flags or set flags for all components if @var{all_flags}.
5983 Available values for component flags are:
5984 @table @samp
5985 @item a
5986 averaged temporal noise (smoother)
5987 @item p
5988 mix random noise with a (semi)regular pattern
5989 @item t
5990 temporal noise (noise pattern changes between frames)
5991 @item u
5992 uniform noise (gaussian otherwise)
5993 @end table
5994 @end table
5995
5996 @subsection Examples
5997
5998 Add temporal and uniform noise to input video:
5999 @example
6000 noise=alls=20:allf=t+u
6001 @end example
6002
6003 @section null
6004
6005 Pass the video source unchanged to the output.
6006
6007 @section ocv
6008
6009 Apply a video transform using libopencv.
6010
6011 To enable this filter, install the libopencv library and headers and
6012 configure FFmpeg with @code{--enable-libopencv}.
6013
6014 It accepts the following parameters:
6015
6016 @table @option
6017
6018 @item filter_name
6019 The name of the libopencv filter to apply.
6020
6021 @item filter_params
6022 The parameters to pass to the libopencv filter. If not specified, the default
6023 values are assumed.
6024
6025 @end table
6026
6027 Refer to the official libopencv documentation for more precise
6028 information:
6029 @url{http://opencv.willowgarage.com/documentation/c/image_filtering.html}
6030
6031 Several libopencv filters are supported; see the following subsections.
6032
6033 @anchor{dilate}
6034 @subsection dilate
6035
6036 Dilate an image by using a specific structuring element.
6037 It corresponds to the libopencv function @code{cvDilate}.
6038
6039 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
6040
6041 @var{struct_el} represents a structuring element, and has the syntax:
6042 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
6043
6044 @var{cols} and @var{rows} represent the number of columns and rows of
6045 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
6046 point, and @var{shape} the shape for the structuring element. @var{shape}
6047 must be "rect", "cross", "ellipse", or "custom".
6048
6049 If the value for @var{shape} is "custom", it must be followed by a
6050 string of the form "=@var{filename}". The file with name
6051 @var{filename} is assumed to represent a binary image, with each
6052 printable character corresponding to a bright pixel. When a custom
6053 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
6054 or columns and rows of the read file are assumed instead.
6055
6056 The default value for @var{struct_el} is "3x3+0x0/rect".
6057
6058 @var{nb_iterations} specifies the number of times the transform is
6059 applied to the image, and defaults to 1.
6060
6061 Some examples:
6062 @example
6063 # Use the default values
6064 ocv=dilate
6065
6066 # Dilate using a structuring element with a 5x5 cross, iterating two times
6067 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
6068
6069 # Read the shape from the file diamond.shape, iterating two times.
6070 # The file diamond.shape may contain a pattern of characters like this
6071 #   *
6072 #  ***
6073 # *****
6074 #  ***
6075 #   *
6076 # The specified columns and rows are ignored
6077 # but the anchor point coordinates are not
6078 ocv=dilate:0x0+2x2/custom=diamond.shape|2
6079 @end example
6080
6081 @subsection erode
6082
6083 Erode an image by using a specific structuring element.
6084 It corresponds to the libopencv function @code{cvErode}.
6085
6086 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
6087 with the same syntax and semantics as the @ref{dilate} filter.
6088
6089 @subsection smooth
6090
6091 Smooth the input video.
6092
6093 The filter takes the following parameters:
6094 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
6095
6096 @var{type} is the type of smooth filter to apply, and must be one of
6097 the following values: "blur", "blur_no_scale", "median", "gaussian",
6098 or "bilateral". The default value is "gaussian".
6099
6100 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
6101 depend on the smooth type. @var{param1} and
6102 @var{param2} accept integer positive values or 0. @var{param3} and
6103 @var{param4} accept floating point values.
6104
6105 The default value for @var{param1} is 3. The default value for the
6106 other parameters is 0.
6107
6108 These parameters correspond to the parameters assigned to the
6109 libopencv function @code{cvSmooth}.
6110
6111 @anchor{overlay}
6112 @section overlay
6113
6114 Overlay one video on top of another.
6115
6116 It takes two inputs and has one output. The first input is the "main"
6117 video on which the second input is overlayed.
6118
6119 It accepts the following parameters:
6120
6121 A description of the accepted options follows.
6122
6123 @table @option
6124 @item x
6125 @item y
6126 Set the expression for the x and y coordinates of the overlayed video
6127 on the main video. Default value is "0" for both expressions. In case
6128 the expression is invalid, it is set to a huge value (meaning that the
6129 overlay will not be displayed within the output visible area).
6130
6131 @item eof_action
6132 The action to take when EOF is encountered on the secondary input; it accepts
6133 one of the following values:
6134
6135 @table @option
6136 @item repeat
6137 Repeat the last frame (the default).
6138 @item endall
6139 End both streams.
6140 @item pass
6141 Pass the main input through.
6142 @end table
6143
6144 @item eval
6145 Set when the expressions for @option{x}, and @option{y} are evaluated.
6146
6147 It accepts the following values:
6148 @table @samp
6149 @item init
6150 only evaluate expressions once during the filter initialization or
6151 when a command is processed
6152
6153 @item frame
6154 evaluate expressions for each incoming frame
6155 @end table
6156
6157 Default value is @samp{frame}.
6158
6159 @item shortest
6160 If set to 1, force the output to terminate when the shortest input
6161 terminates. Default value is 0.
6162
6163 @item format
6164 Set the format for the output video.
6165
6166 It accepts the following values:
6167 @table @samp
6168 @item yuv420
6169 force YUV420 output
6170
6171 @item yuv422
6172 force YUV422 output
6173
6174 @item yuv444
6175 force YUV444 output
6176
6177 @item rgb
6178 force RGB output
6179 @end table
6180
6181 Default value is @samp{yuv420}.
6182
6183 @item rgb @emph{(deprecated)}
6184 If set to 1, force the filter to accept inputs in the RGB
6185 color space. Default value is 0. This option is deprecated, use
6186 @option{format} instead.
6187
6188 @item repeatlast
6189 If set to 1, force the filter to draw the last overlay frame over the
6190 main input until the end of the stream. A value of 0 disables this
6191 behavior. Default value is 1.
6192 @end table
6193
6194 The @option{x}, and @option{y} expressions can contain the following
6195 parameters.
6196
6197 @table @option
6198 @item main_w, W
6199 @item main_h, H
6200 The main input width and height.
6201
6202 @item overlay_w, w
6203 @item overlay_h, h
6204 The overlay input width and height.
6205
6206 @item x
6207 @item y
6208 The computed values for @var{x} and @var{y}. They are evaluated for
6209 each new frame.
6210
6211 @item hsub
6212 @item vsub
6213 horizontal and vertical chroma subsample values of the output
6214 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
6215 @var{vsub} is 1.
6216
6217 @item n
6218 the number of input frame, starting from 0
6219
6220 @item pos
6221 the position in the file of the input frame, NAN if unknown
6222
6223 @item t
6224 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
6225
6226 @end table
6227
6228 Note that the @var{n}, @var{pos}, @var{t} variables are available only
6229 when evaluation is done @emph{per frame}, and will evaluate to NAN
6230 when @option{eval} is set to @samp{init}.
6231
6232 Be aware that frames are taken from each input video in timestamp
6233 order, hence, if their initial timestamps differ, it is a good idea
6234 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
6235 have them begin in the same zero timestamp, as the example for
6236 the @var{movie} filter does.
6237
6238 You can chain together more overlays but you should test the
6239 efficiency of such approach.
6240
6241 @subsection Commands
6242
6243 This filter supports the following commands:
6244 @table @option
6245 @item x
6246 @item y
6247 Modify the x and y of the overlay input.
6248 The command accepts the same syntax of the corresponding option.
6249
6250 If the specified expression is not valid, it is kept at its current
6251 value.
6252 @end table
6253
6254 @subsection Examples
6255
6256 @itemize
6257 @item
6258 Draw the overlay at 10 pixels from the bottom right corner of the main
6259 video:
6260 @example
6261 overlay=main_w-overlay_w-10:main_h-overlay_h-10
6262 @end example
6263
6264 Using named options the example above becomes:
6265 @example
6266 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
6267 @end example
6268
6269 @item
6270 Insert a transparent PNG logo in the bottom left corner of the input,
6271 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
6272 @example
6273 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
6274 @end example
6275
6276 @item
6277 Insert 2 different transparent PNG logos (second logo on bottom
6278 right corner) using the @command{ffmpeg} tool:
6279 @example
6280 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
6281 @end example
6282
6283 @item
6284 Add a transparent color layer on top of the main video; @code{WxH}
6285 must specify the size of the main input to the overlay filter:
6286 @example
6287 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
6288 @end example
6289
6290 @item
6291 Play an original video and a filtered version (here with the deshake
6292 filter) side by side using the @command{ffplay} tool:
6293 @example
6294 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
6295 @end example
6296
6297 The above command is the same as:
6298 @example
6299 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
6300 @end example
6301
6302 @item
6303 Make a sliding overlay appearing from the left to the right top part of the
6304 screen starting since time 2:
6305 @example
6306 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
6307 @end example
6308
6309 @item
6310 Compose output by putting two input videos side to side:
6311 @example
6312 ffmpeg -i left.avi -i right.avi -filter_complex "
6313 nullsrc=size=200x100 [background];
6314 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
6315 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
6316 [background][left]       overlay=shortest=1       [background+left];
6317 [background+left][right] overlay=shortest=1:x=100 [left+right]
6318 "
6319 @end example
6320
6321 @item
6322 Mask 10-20 seconds of a video by applying the delogo filter to a section
6323 @example
6324 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
6325 -vf '[in]split[split_main][split_delogo];[split_delogo]trim=start=360:end=371,delogo=0:0:640:480[delogoed];[split_main][delogoed]overlay=eof_action=pass[out]'
6326 masked.avi
6327 @end example
6328
6329 @item
6330 Chain several overlays in cascade:
6331 @example
6332 nullsrc=s=200x200 [bg];
6333 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
6334 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
6335 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
6336 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
6337 [in3] null,       [mid2] overlay=100:100 [out0]
6338 @end example
6339
6340 @end itemize
6341
6342 @section owdenoise
6343
6344 Apply Overcomplete Wavelet denoiser.
6345
6346 The filter accepts the following options:
6347
6348 @table @option
6349 @item depth
6350 Set depth.
6351
6352 Larger depth values will denoise lower frequency components more, but
6353 slow down filtering.
6354
6355 Must be an int in the range 8-16, default is @code{8}.
6356
6357 @item luma_strength, ls
6358 Set luma strength.
6359
6360 Must be a double value in the range 0-1000, default is @code{1.0}.
6361
6362 @item chroma_strength, cs
6363 Set chroma strength.
6364
6365 Must be a double value in the range 0-1000, default is @code{1.0}.
6366 @end table
6367
6368 @section pad
6369
6370 Add paddings to the input image, and place the original input at the
6371 provided @var{x}, @var{y} coordinates.
6372
6373 It accepts the following parameters:
6374
6375 @table @option
6376 @item width, w
6377 @item height, h
6378 Specify an expression for the size of the output image with the
6379 paddings added. If the value for @var{width} or @var{height} is 0, the
6380 corresponding input size is used for the output.
6381
6382 The @var{width} expression can reference the value set by the
6383 @var{height} expression, and vice versa.
6384
6385 The default value of @var{width} and @var{height} is 0.
6386
6387 @item x
6388 @item y
6389 Specify the offsets to place the input image at within the padded area,
6390 with respect to the top/left border of the output image.
6391
6392 The @var{x} expression can reference the value set by the @var{y}
6393 expression, and vice versa.
6394
6395 The default value of @var{x} and @var{y} is 0.
6396
6397 @item color
6398 Specify the color of the padded area. For the syntax of this option,
6399 check the "Color" section in the ffmpeg-utils manual.
6400
6401 The default value of @var{color} is "black".
6402 @end table
6403
6404 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
6405 options are expressions containing the following constants:
6406
6407 @table @option
6408 @item in_w
6409 @item in_h
6410 The input video width and height.
6411
6412 @item iw
6413 @item ih
6414 These are the same as @var{in_w} and @var{in_h}.
6415
6416 @item out_w
6417 @item out_h
6418 The output width and height (the size of the padded area), as
6419 specified by the @var{width} and @var{height} expressions.
6420
6421 @item ow
6422 @item oh
6423 These are the same as @var{out_w} and @var{out_h}.
6424
6425 @item x
6426 @item y
6427 The x and y offsets as specified by the @var{x} and @var{y}
6428 expressions, or NAN if not yet specified.
6429
6430 @item a
6431 same as @var{iw} / @var{ih}
6432
6433 @item sar
6434 input sample aspect ratio
6435
6436 @item dar
6437 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
6438
6439 @item hsub
6440 @item vsub
6441 The horizontal and vertical chroma subsample values. For example for the
6442 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
6443 @end table
6444
6445 @subsection Examples
6446
6447 @itemize
6448 @item
6449 Add paddings with the color "violet" to the input video. The output video
6450 size is 640x480, and the top-left corner of the input video is placed at
6451 column 0, row 40
6452 @example
6453 pad=640:480:0:40:violet
6454 @end example
6455
6456 The example above is equivalent to the following command:
6457 @example
6458 pad=width=640:height=480:x=0:y=40:color=violet
6459 @end example
6460
6461 @item
6462 Pad the input to get an output with dimensions increased by 3/2,
6463 and put the input video at the center of the padded area:
6464 @example
6465 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
6466 @end example
6467
6468 @item
6469 Pad the input to get a squared output with size equal to the maximum
6470 value between the input width and height, and put the input video at
6471 the center of the padded area:
6472 @example
6473 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
6474 @end example
6475
6476 @item
6477 Pad the input to get a final w/h ratio of 16:9:
6478 @example
6479 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
6480 @end example
6481
6482 @item
6483 In case of anamorphic video, in order to set the output display aspect
6484 correctly, it is necessary to use @var{sar} in the expression,
6485 according to the relation:
6486 @example
6487 (ih * X / ih) * sar = output_dar
6488 X = output_dar / sar
6489 @end example
6490
6491 Thus the previous example needs to be modified to:
6492 @example
6493 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
6494 @end example
6495
6496 @item
6497 Double the output size and put the input video in the bottom-right
6498 corner of the output padded area:
6499 @example
6500 pad="2*iw:2*ih:ow-iw:oh-ih"
6501 @end example
6502 @end itemize
6503
6504 @section perspective
6505
6506 Correct perspective of video not recorded perpendicular to the screen.
6507
6508 A description of the accepted parameters follows.
6509
6510 @table @option
6511 @item x0
6512 @item y0
6513 @item x1
6514 @item y1
6515 @item x2
6516 @item y2
6517 @item x3
6518 @item y3
6519 Set coordinates expression for top left, top right, bottom left and bottom right corners.
6520 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
6521
6522 The expressions can use the following variables:
6523
6524 @table @option
6525 @item W
6526 @item H
6527 the width and height of video frame.
6528 @end table
6529
6530 @item interpolation
6531 Set interpolation for perspective correction.
6532
6533 It accepts the following values:
6534 @table @samp
6535 @item linear
6536 @item cubic
6537 @end table
6538
6539 Default value is @samp{linear}.
6540 @end table
6541
6542 @section phase
6543
6544 Delay interlaced video by one field time so that the field order changes.
6545
6546 The intended use is to fix PAL movies that have been captured with the
6547 opposite field order to the film-to-video transfer.
6548
6549 A description of the accepted parameters follows.
6550
6551 @table @option
6552 @item mode
6553 Set phase mode.
6554
6555 It accepts the following values:
6556 @table @samp
6557 @item t
6558 Capture field order top-first, transfer bottom-first.
6559 Filter will delay the bottom field.
6560
6561 @item b
6562 Capture field order bottom-first, transfer top-first.
6563 Filter will delay the top field.
6564
6565 @item p
6566 Capture and transfer with the same field order. This mode only exists
6567 for the documentation of the other options to refer to, but if you
6568 actually select it, the filter will faithfully do nothing.
6569
6570 @item a
6571 Capture field order determined automatically by field flags, transfer
6572 opposite.
6573 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
6574 basis using field flags. If no field information is available,
6575 then this works just like @samp{u}.
6576
6577 @item u
6578 Capture unknown or varying, transfer opposite.
6579 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
6580 analyzing the images and selecting the alternative that produces best
6581 match between the fields.
6582
6583 @item T
6584 Capture top-first, transfer unknown or varying.
6585 Filter selects among @samp{t} and @samp{p} using image analysis.
6586
6587 @item B
6588 Capture bottom-first, transfer unknown or varying.
6589 Filter selects among @samp{b} and @samp{p} using image analysis.
6590
6591 @item A
6592 Capture determined by field flags, transfer unknown or varying.
6593 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
6594 image analysis. If no field information is available, then this works just
6595 like @samp{U}. This is the default mode.
6596
6597 @item U
6598 Both capture and transfer unknown or varying.
6599 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
6600 @end table
6601 @end table
6602
6603 @section pixdesctest
6604
6605 Pixel format descriptor test filter, mainly useful for internal
6606 testing. The output video should be equal to the input video.
6607
6608 For example:
6609 @example
6610 format=monow, pixdesctest
6611 @end example
6612
6613 can be used to test the monowhite pixel format descriptor definition.
6614
6615 @section pp
6616
6617 Enable the specified chain of postprocessing subfilters using libpostproc. This
6618 library should be automatically selected with a GPL build (@code{--enable-gpl}).
6619 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
6620 Each subfilter and some options have a short and a long name that can be used
6621 interchangeably, i.e. dr/dering are the same.
6622
6623 The filters accept the following options:
6624
6625 @table @option
6626 @item subfilters
6627 Set postprocessing subfilters string.
6628 @end table
6629
6630 All subfilters share common options to determine their scope:
6631
6632 @table @option
6633 @item a/autoq
6634 Honor the quality commands for this subfilter.
6635
6636 @item c/chrom
6637 Do chrominance filtering, too (default).
6638
6639 @item y/nochrom
6640 Do luminance filtering only (no chrominance).
6641
6642 @item n/noluma
6643 Do chrominance filtering only (no luminance).
6644 @end table
6645
6646 These options can be appended after the subfilter name, separated by a '|'.
6647
6648 Available subfilters are:
6649
6650 @table @option
6651 @item hb/hdeblock[|difference[|flatness]]
6652 Horizontal deblocking filter
6653 @table @option
6654 @item difference
6655 Difference factor where higher values mean more deblocking (default: @code{32}).
6656 @item flatness
6657 Flatness threshold where lower values mean more deblocking (default: @code{39}).
6658 @end table
6659
6660 @item vb/vdeblock[|difference[|flatness]]
6661 Vertical deblocking filter
6662 @table @option
6663 @item difference
6664 Difference factor where higher values mean more deblocking (default: @code{32}).
6665 @item flatness
6666 Flatness threshold where lower values mean more deblocking (default: @code{39}).
6667 @end table
6668
6669 @item ha/hadeblock[|difference[|flatness]]
6670 Accurate horizontal deblocking filter
6671 @table @option
6672 @item difference
6673 Difference factor where higher values mean more deblocking (default: @code{32}).
6674 @item flatness
6675 Flatness threshold where lower values mean more deblocking (default: @code{39}).
6676 @end table
6677
6678 @item va/vadeblock[|difference[|flatness]]
6679 Accurate vertical deblocking filter
6680 @table @option
6681 @item difference
6682 Difference factor where higher values mean more deblocking (default: @code{32}).
6683 @item flatness
6684 Flatness threshold where lower values mean more deblocking (default: @code{39}).
6685 @end table
6686 @end table
6687
6688 The horizontal and vertical deblocking filters share the difference and
6689 flatness values so you cannot set different horizontal and vertical
6690 thresholds.
6691
6692 @table @option
6693 @item h1/x1hdeblock
6694 Experimental horizontal deblocking filter
6695
6696 @item v1/x1vdeblock
6697 Experimental vertical deblocking filter
6698
6699 @item dr/dering
6700 Deringing filter
6701
6702 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
6703 @table @option
6704 @item threshold1
6705 larger -> stronger filtering
6706 @item threshold2
6707 larger -> stronger filtering
6708 @item threshold3
6709 larger -> stronger filtering
6710 @end table
6711
6712 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
6713 @table @option
6714 @item f/fullyrange
6715 Stretch luminance to @code{0-255}.
6716 @end table
6717
6718 @item lb/linblenddeint
6719 Linear blend deinterlacing filter that deinterlaces the given block by
6720 filtering all lines with a @code{(1 2 1)} filter.
6721
6722 @item li/linipoldeint
6723 Linear interpolating deinterlacing filter that deinterlaces the given block by
6724 linearly interpolating every second line.
6725
6726 @item ci/cubicipoldeint
6727 Cubic interpolating deinterlacing filter deinterlaces the given block by
6728 cubically interpolating every second line.
6729
6730 @item md/mediandeint
6731 Median deinterlacing filter that deinterlaces the given block by applying a
6732 median filter to every second line.
6733
6734 @item fd/ffmpegdeint
6735 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
6736 second line with a @code{(-1 4 2 4 -1)} filter.
6737
6738 @item l5/lowpass5
6739 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
6740 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
6741
6742 @item fq/forceQuant[|quantizer]
6743 Overrides the quantizer table from the input with the constant quantizer you
6744 specify.
6745 @table @option
6746 @item quantizer
6747 Quantizer to use
6748 @end table
6749
6750 @item de/default
6751 Default pp filter combination (@code{hb|a,vb|a,dr|a})
6752
6753 @item fa/fast
6754 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
6755
6756 @item ac
6757 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
6758 @end table
6759
6760 @subsection Examples
6761
6762 @itemize
6763 @item
6764 Apply horizontal and vertical deblocking, deringing and automatic
6765 brightness/contrast:
6766 @example
6767 pp=hb/vb/dr/al
6768 @end example
6769
6770 @item
6771 Apply default filters without brightness/contrast correction:
6772 @example
6773 pp=de/-al
6774 @end example
6775
6776 @item
6777 Apply default filters and temporal denoiser:
6778 @example
6779 pp=default/tmpnoise|1|2|3
6780 @end example
6781
6782 @item
6783 Apply deblocking on luminance only, and switch vertical deblocking on or off
6784 automatically depending on available CPU time:
6785 @example
6786 pp=hb|y/vb|a
6787 @end example
6788 @end itemize
6789
6790 @section psnr
6791
6792 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
6793 Ratio) between two input videos.
6794
6795 This filter takes in input two input videos, the first input is
6796 considered the "main" source and is passed unchanged to the
6797 output. The second input is used as a "reference" video for computing
6798 the PSNR.
6799
6800 Both video inputs must have the same resolution and pixel format for
6801 this filter to work correctly. Also it assumes that both inputs
6802 have the same number of frames, which are compared one by one.
6803
6804 The obtained average PSNR is printed through the logging system.
6805
6806 The filter stores the accumulated MSE (mean squared error) of each
6807 frame, and at the end of the processing it is averaged across all frames
6808 equally, and the following formula is applied to obtain the PSNR:
6809
6810 @example
6811 PSNR = 10*log10(MAX^2/MSE)
6812 @end example
6813
6814 Where MAX is the average of the maximum values of each component of the
6815 image.
6816
6817 The description of the accepted parameters follows.
6818
6819 @table @option
6820 @item stats_file, f
6821 If specified the filter will use the named file to save the PSNR of
6822 each individual frame.
6823 @end table
6824
6825 The file printed if @var{stats_file} is selected, contains a sequence of
6826 key/value pairs of the form @var{key}:@var{value} for each compared
6827 couple of frames.
6828
6829 A description of each shown parameter follows:
6830
6831 @table @option
6832 @item n
6833 sequential number of the input frame, starting from 1
6834
6835 @item mse_avg
6836 Mean Square Error pixel-by-pixel average difference of the compared
6837 frames, averaged over all the image components.
6838
6839 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_g, mse_a
6840 Mean Square Error pixel-by-pixel average difference of the compared
6841 frames for the component specified by the suffix.
6842
6843 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
6844 Peak Signal to Noise ratio of the compared frames for the component
6845 specified by the suffix.
6846 @end table
6847
6848 For example:
6849 @example
6850 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
6851 [main][ref] psnr="stats_file=stats.log" [out]
6852 @end example
6853
6854 On this example the input file being processed is compared with the
6855 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
6856 is stored in @file{stats.log}.
6857
6858 @anchor{pullup}
6859 @section pullup
6860
6861 Pulldown reversal (inverse telecine) filter, capable of handling mixed
6862 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
6863 content.
6864
6865 The pullup filter is designed to take advantage of future context in making
6866 its decisions. This filter is stateless in the sense that it does not lock
6867 onto a pattern to follow, but it instead looks forward to the following
6868 fields in order to identify matches and rebuild progressive frames.
6869
6870 To produce content with an even framerate, insert the fps filter after
6871 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
6872 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
6873
6874 The filter accepts the following options:
6875
6876 @table @option
6877 @item jl
6878 @item jr
6879 @item jt
6880 @item jb
6881 These options set the amount of "junk" to ignore at the left, right, top, and
6882 bottom of the image, respectively. Left and right are in units of 8 pixels,
6883 while top and bottom are in units of 2 lines.
6884 The default is 8 pixels on each side.
6885
6886 @item sb
6887 Set the strict breaks. Setting this option to 1 will reduce the chances of
6888 filter generating an occasional mismatched frame, but it may also cause an
6889 excessive number of frames to be dropped during high motion sequences.
6890 Conversely, setting it to -1 will make filter match fields more easily.
6891 This may help processing of video where there is slight blurring between
6892 the fields, but may also cause there to be interlaced frames in the output.
6893 Default value is @code{0}.
6894
6895 @item mp
6896 Set the metric plane to use. It accepts the following values:
6897 @table @samp
6898 @item l
6899 Use luma plane.
6900
6901 @item u
6902 Use chroma blue plane.
6903
6904 @item v
6905 Use chroma red plane.
6906 @end table
6907
6908 This option may be set to use chroma plane instead of the default luma plane
6909 for doing filter's computations. This may improve accuracy on very clean
6910 source material, but more likely will decrease accuracy, especially if there
6911 is chroma noise (rainbow effect) or any grayscale video.
6912 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
6913 load and make pullup usable in realtime on slow machines.
6914 @end table
6915
6916 For best results (without duplicated frames in the output file) it is
6917 necessary to change the output frame rate. For example, to inverse
6918 telecine NTSC input:
6919 @example
6920 ffmpeg -i input -vf pullup -r 24000/1001 ...
6921 @end example
6922
6923 @section removelogo
6924
6925 Suppress a TV station logo, using an image file to determine which
6926 pixels comprise the logo. It works by filling in the pixels that
6927 comprise the logo with neighboring pixels.
6928
6929 The filter accepts the following options:
6930
6931 @table @option
6932 @item filename, f
6933 Set the filter bitmap file, which can be any image format supported by
6934 libavformat. The width and height of the image file must match those of the
6935 video stream being processed.
6936 @end table
6937
6938 Pixels in the provided bitmap image with a value of zero are not
6939 considered part of the logo, non-zero pixels are considered part of
6940 the logo. If you use white (255) for the logo and black (0) for the
6941 rest, you will be safe. For making the filter bitmap, it is
6942 recommended to take a screen capture of a black frame with the logo
6943 visible, and then using a threshold filter followed by the erode
6944 filter once or twice.
6945
6946 If needed, little splotches can be fixed manually. Remember that if
6947 logo pixels are not covered, the filter quality will be much
6948 reduced. Marking too many pixels as part of the logo does not hurt as
6949 much, but it will increase the amount of blurring needed to cover over
6950 the image and will destroy more information than necessary, and extra
6951 pixels will slow things down on a large logo.
6952
6953 @section rotate
6954
6955 Rotate video by an arbitrary angle expressed in radians.
6956
6957 The filter accepts the following options:
6958
6959 A description of the optional parameters follows.
6960 @table @option
6961 @item angle, a
6962 Set an expression for the angle by which to rotate the input video
6963 clockwise, expressed as a number of radians. A negative value will
6964 result in a counter-clockwise rotation. By default it is set to "0".
6965
6966 This expression is evaluated for each frame.
6967
6968 @item out_w, ow
6969 Set the output width expression, default value is "iw".
6970 This expression is evaluated just once during configuration.
6971
6972 @item out_h, oh
6973 Set the output height expression, default value is "ih".
6974 This expression is evaluated just once during configuration.
6975
6976 @item bilinear
6977 Enable bilinear interpolation if set to 1, a value of 0 disables
6978 it. Default value is 1.
6979
6980 @item fillcolor, c
6981 Set the color used to fill the output area not covered by the rotated
6982 image. For the generalsyntax of this option, check the "Color" section in the
6983 ffmpeg-utils manual. If the special value "none" is selected then no
6984 background is printed (useful for example if the background is never shown).
6985
6986 Default value is "black".
6987 @end table
6988
6989 The expressions for the angle and the output size can contain the
6990 following constants and functions:
6991
6992 @table @option
6993 @item n
6994 sequential number of the input frame, starting from 0. It is always NAN
6995 before the first frame is filtered.
6996
6997 @item t
6998 time in seconds of the input frame, it is set to 0 when the filter is
6999 configured. It is always NAN before the first frame is filtered.
7000
7001 @item hsub
7002 @item vsub
7003 horizontal and vertical chroma subsample values. For example for the
7004 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
7005
7006 @item in_w, iw
7007 @item in_h, ih
7008 the input video width and height
7009
7010 @item out_w, ow
7011 @item out_h, oh
7012 the output width and height, that is the size of the padded area as
7013 specified by the @var{width} and @var{height} expressions
7014
7015 @item rotw(a)
7016 @item roth(a)
7017 the minimal width/height required for completely containing the input
7018 video rotated by @var{a} radians.
7019
7020 These are only available when computing the @option{out_w} and
7021 @option{out_h} expressions.
7022 @end table
7023
7024 @subsection Examples
7025
7026 @itemize
7027 @item
7028 Rotate the input by PI/6 radians clockwise:
7029 @example
7030 rotate=PI/6
7031 @end example
7032
7033 @item
7034 Rotate the input by PI/6 radians counter-clockwise:
7035 @example
7036 rotate=-PI/6
7037 @end example
7038
7039 @item
7040 Rotate the input by 45 degrees clockwise:
7041 @example
7042 rotate=45*PI/180
7043 @end example
7044
7045 @item
7046 Apply a constant rotation with period T, starting from an angle of PI/3:
7047 @example
7048 rotate=PI/3+2*PI*t/T
7049 @end example
7050
7051 @item
7052 Make the input video rotation oscillating with a period of T
7053 seconds and an amplitude of A radians:
7054 @example
7055 rotate=A*sin(2*PI/T*t)
7056 @end example
7057
7058 @item
7059 Rotate the video, output size is chosen so that the whole rotating
7060 input video is always completely contained in the output:
7061 @example
7062 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
7063 @end example
7064
7065 @item
7066 Rotate the video, reduce the output size so that no background is ever
7067 shown:
7068 @example
7069 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
7070 @end example
7071 @end itemize
7072
7073 @subsection Commands
7074
7075 The filter supports the following commands:
7076
7077 @table @option
7078 @item a, angle
7079 Set the angle expression.
7080 The command accepts the same syntax of the corresponding option.
7081
7082 If the specified expression is not valid, it is kept at its current
7083 value.
7084 @end table
7085
7086 @section sab
7087
7088 Apply Shape Adaptive Blur.
7089
7090 The filter accepts the following options:
7091
7092 @table @option
7093 @item luma_radius, lr
7094 Set luma blur filter strength, must be a value in range 0.1-4.0, default
7095 value is 1.0. A greater value will result in a more blurred image, and
7096 in slower processing.
7097
7098 @item luma_pre_filter_radius, lpfr
7099 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
7100 value is 1.0.
7101
7102 @item luma_strength, ls
7103 Set luma maximum difference between pixels to still be considered, must
7104 be a value in the 0.1-100.0 range, default value is 1.0.
7105
7106 @item chroma_radius, cr
7107 Set chroma blur filter strength, must be a value in range 0.1-4.0. A
7108 greater value will result in a more blurred image, and in slower
7109 processing.
7110
7111 @item chroma_pre_filter_radius, cpfr
7112 Set chroma pre-filter radius, must be a value in the 0.1-2.0 range.
7113
7114 @item chroma_strength, cs
7115 Set chroma maximum difference between pixels to still be considered,
7116 must be a value in the 0.1-100.0 range.
7117 @end table
7118
7119 Each chroma option value, if not explicitly specified, is set to the
7120 corresponding luma option value.
7121
7122 @anchor{scale}
7123 @section scale
7124
7125 Scale (resize) the input video, using the libswscale library.
7126
7127 The scale filter forces the output display aspect ratio to be the same
7128 of the input, by changing the output sample aspect ratio.
7129
7130 If the input image format is different from the format requested by
7131 the next filter, the scale filter will convert the input to the
7132 requested format.
7133
7134 @subsection Options
7135 The filter accepts the following options, or any of the options
7136 supported by the libswscale scaler.
7137
7138 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
7139 the complete list of scaler options.
7140
7141 @table @option
7142 @item width, w
7143 @item height, h
7144 Set the output video dimension expression. Default value is the input
7145 dimension.
7146
7147 If the value is 0, the input width is used for the output.
7148
7149 If one of the values is -1, the scale filter will use a value that
7150 maintains the aspect ratio of the input image, calculated from the
7151 other specified dimension. If both of them are -1, the input size is
7152 used
7153
7154 If one of the values is -n with n > 1, the scale filter will also use a value
7155 that maintains the aspect ratio of the input image, calculated from the other
7156 specified dimension. After that it will, however, make sure that the calculated
7157 dimension is divisible by n and adjust the value if necessary.
7158
7159 See below for the list of accepted constants for use in the dimension
7160 expression.
7161
7162 @item interl
7163 Set the interlacing mode. It accepts the following values:
7164
7165 @table @samp
7166 @item 1
7167 Force interlaced aware scaling.
7168
7169 @item 0
7170 Do not apply interlaced scaling.
7171
7172 @item -1
7173 Select interlaced aware scaling depending on whether the source frames
7174 are flagged as interlaced or not.
7175 @end table
7176
7177 Default value is @samp{0}.
7178
7179 @item flags
7180 Set libswscale scaling flags. See
7181 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
7182 complete list of values. If not explicitly specified the filter applies
7183 the default flags.
7184
7185 @item size, s
7186 Set the video size. For the syntax of this option, check the "Video size"
7187 section in the ffmpeg-utils manual.
7188
7189 @item in_color_matrix
7190 @item out_color_matrix
7191 Set in/output YCbCr color space type.
7192
7193 This allows the autodetected value to be overridden as well as allows forcing
7194 a specific value used for the output and encoder.
7195
7196 If not specified, the color space type depends on the pixel format.
7197
7198 Possible values:
7199
7200 @table @samp
7201 @item auto
7202 Choose automatically.
7203
7204 @item bt709
7205 Format conforming to International Telecommunication Union (ITU)
7206 Recommendation BT.709.
7207
7208 @item fcc
7209 Set color space conforming to the United States Federal Communications
7210 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
7211
7212 @item bt601
7213 Set color space conforming to:
7214
7215 @itemize
7216 @item
7217 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
7218
7219 @item
7220 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
7221
7222 @item
7223 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
7224
7225 @end itemize
7226
7227 @item smpte240m
7228 Set color space conforming to SMPTE ST 240:1999.
7229 @end table
7230
7231 @item in_range
7232 @item out_range
7233 Set in/output YCbCr sample range.
7234
7235 This allows the autodetected value to be overridden as well as allows forcing
7236 a specific value used for the output and encoder. If not specified, the
7237 range depends on the pixel format. Possible values:
7238
7239 @table @samp
7240 @item auto
7241 Choose automatically.
7242
7243 @item jpeg/full/pc
7244 Set full range (0-255 in case of 8-bit luma).
7245
7246 @item mpeg/tv
7247 Set "MPEG" range (16-235 in case of 8-bit luma).
7248 @end table
7249
7250 @item force_original_aspect_ratio
7251 Enable decreasing or increasing output video width or height if necessary to
7252 keep the original aspect ratio. Possible values:
7253
7254 @table @samp
7255 @item disable
7256 Scale the video as specified and disable this feature.
7257
7258 @item decrease
7259 The output video dimensions will automatically be decreased if needed.
7260
7261 @item increase
7262 The output video dimensions will automatically be increased if needed.
7263
7264 @end table
7265
7266 One useful instance of this option is that when you know a specific device's
7267 maximum allowed resolution, you can use this to limit the output video to
7268 that, while retaining the aspect ratio. For example, device A allows
7269 1280x720 playback, and your video is 1920x800. Using this option (set it to
7270 decrease) and specifying 1280x720 to the command line makes the output
7271 1280x533.
7272
7273 Please note that this is a different thing than specifying -1 for @option{w}
7274 or @option{h}, you still need to specify the output resolution for this option
7275 to work.
7276
7277 @end table
7278
7279 The values of the @option{w} and @option{h} options are expressions
7280 containing the following constants:
7281
7282 @table @var
7283 @item in_w
7284 @item in_h
7285 The input width and height
7286
7287 @item iw
7288 @item ih
7289 These are the same as @var{in_w} and @var{in_h}.
7290
7291 @item out_w
7292 @item out_h
7293 The output (scaled) width and height
7294
7295 @item ow
7296 @item oh
7297 These are the same as @var{out_w} and @var{out_h}
7298
7299 @item a
7300 The same as @var{iw} / @var{ih}
7301
7302 @item sar
7303 input sample aspect ratio
7304
7305 @item dar
7306 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
7307
7308 @item hsub
7309 @item vsub
7310 horizontal and vertical input chroma subsample values. For example for the
7311 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
7312
7313 @item ohsub
7314 @item ovsub
7315 horizontal and vertical output chroma subsample values. For example for the
7316 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
7317 @end table
7318
7319 @subsection Examples
7320
7321 @itemize
7322 @item
7323 Scale the input video to a size of 200x100
7324 @example
7325 scale=w=200:h=100
7326 @end example
7327
7328 This is equivalent to:
7329 @example
7330 scale=200:100
7331 @end example
7332
7333 or:
7334 @example
7335 scale=200x100
7336 @end example
7337
7338 @item
7339 Specify a size abbreviation for the output size:
7340 @example
7341 scale=qcif
7342 @end example
7343
7344 which can also be written as:
7345 @example
7346 scale=size=qcif
7347 @end example
7348
7349 @item
7350 Scale the input to 2x:
7351 @example
7352 scale=w=2*iw:h=2*ih
7353 @end example
7354
7355 @item
7356 The above is the same as:
7357 @example
7358 scale=2*in_w:2*in_h
7359 @end example
7360
7361 @item
7362 Scale the input to 2x with forced interlaced scaling:
7363 @example
7364 scale=2*iw:2*ih:interl=1
7365 @end example
7366
7367 @item
7368 Scale the input to half size:
7369 @example
7370 scale=w=iw/2:h=ih/2
7371 @end example
7372
7373 @item
7374 Increase the width, and set the height to the same size:
7375 @example
7376 scale=3/2*iw:ow
7377 @end example
7378
7379 @item
7380 Seek Greek harmony:
7381 @example
7382 scale=iw:1/PHI*iw
7383 scale=ih*PHI:ih
7384 @end example
7385
7386 @item
7387 Increase the height, and set the width to 3/2 of the height:
7388 @example
7389 scale=w=3/2*oh:h=3/5*ih
7390 @end example
7391
7392 @item
7393 Increase the size, making the size a multiple of the chroma
7394 subsample values:
7395 @example
7396 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
7397 @end example
7398
7399 @item
7400 Increase the width to a maximum of 500 pixels,
7401 keeping the same aspect ratio as the input:
7402 @example
7403 scale=w='min(500\, iw*3/2):h=-1'
7404 @end example
7405 @end itemize
7406
7407 @section separatefields
7408
7409 The @code{separatefields} takes a frame-based video input and splits
7410 each frame into its components fields, producing a new half height clip
7411 with twice the frame rate and twice the frame count.
7412
7413 This filter use field-dominance information in frame to decide which
7414 of each pair of fields to place first in the output.
7415 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
7416
7417 @section setdar, setsar
7418
7419 The @code{setdar} filter sets the Display Aspect Ratio for the filter
7420 output video.
7421
7422 This is done by changing the specified Sample (aka Pixel) Aspect
7423 Ratio, according to the following equation:
7424 @example
7425 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
7426 @end example
7427
7428 Keep in mind that the @code{setdar} filter does not modify the pixel
7429 dimensions of the video frame. Also, the display aspect ratio set by
7430 this filter may be changed by later filters in the filterchain,
7431 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
7432 applied.
7433
7434 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
7435 the filter output video.
7436
7437 Note that as a consequence of the application of this filter, the
7438 output display aspect ratio will change according to the equation
7439 above.
7440
7441 Keep in mind that the sample aspect ratio set by the @code{setsar}
7442 filter may be changed by later filters in the filterchain, e.g. if
7443 another "setsar" or a "setdar" filter is applied.
7444
7445 It accepts the following parameters:
7446
7447 @table @option
7448 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
7449 Set the aspect ratio used by the filter.
7450
7451 The parameter can be a floating point number string, an expression, or
7452 a string of the form @var{num}:@var{den}, where @var{num} and
7453 @var{den} are the numerator and denominator of the aspect ratio. If
7454 the parameter is not specified, it is assumed the value "0".
7455 In case the form "@var{num}:@var{den}" is used, the @code{:} character
7456 should be escaped.
7457
7458 @item max
7459 Set the maximum integer value to use for expressing numerator and
7460 denominator when reducing the expressed aspect ratio to a rational.
7461 Default value is @code{100}.
7462
7463 @end table
7464
7465 The parameter @var{sar} is an expression containing
7466 the following constants:
7467
7468 @table @option
7469 @item E, PI, PHI
7470 These are approximated values for the mathematical constants e
7471 (Euler's number), pi (Greek pi), and phi (the golden ratio).
7472
7473 @item w, h
7474 The input width and height.
7475
7476 @item a
7477 These are the same as @var{w} / @var{h}.
7478
7479 @item sar
7480 The input sample aspect ratio.
7481
7482 @item dar
7483 The input display aspect ratio. It is the same as
7484 (@var{w} / @var{h}) * @var{sar}.
7485
7486 @item hsub, vsub
7487 Horizontal and vertical chroma subsample values. For example, for the
7488 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
7489 @end table
7490
7491 @subsection Examples
7492
7493 @itemize
7494
7495 @item
7496 To change the display aspect ratio to 16:9, specify one of the following:
7497 @example
7498 setdar=dar=1.77777
7499 setdar=dar=16/9
7500 setdar=dar=1.77777
7501 @end example
7502
7503 @item
7504 To change the sample aspect ratio to 10:11, specify:
7505 @example
7506 setsar=sar=10/11
7507 @end example
7508
7509 @item
7510 To set a display aspect ratio of 16:9, and specify a maximum integer value of
7511 1000 in the aspect ratio reduction, use the command:
7512 @example
7513 setdar=ratio=16/9:max=1000
7514 @end example
7515
7516 @end itemize
7517
7518 @anchor{setfield}
7519 @section setfield
7520
7521 Force field for the output video frame.
7522
7523 The @code{setfield} filter marks the interlace type field for the
7524 output frames. It does not change the input frame, but only sets the
7525 corresponding property, which affects how the frame is treated by
7526 following filters (e.g. @code{fieldorder} or @code{yadif}).
7527
7528 The filter accepts the following options:
7529
7530 @table @option
7531
7532 @item mode
7533 Available values are:
7534
7535 @table @samp
7536 @item auto
7537 Keep the same field property.
7538
7539 @item bff
7540 Mark the frame as bottom-field-first.
7541
7542 @item tff
7543 Mark the frame as top-field-first.
7544
7545 @item prog
7546 Mark the frame as progressive.
7547 @end table
7548 @end table
7549
7550 @section showinfo
7551
7552 Show a line containing various information for each input video frame.
7553 The input video is not modified.
7554
7555 The shown line contains a sequence of key/value pairs of the form
7556 @var{key}:@var{value}.
7557
7558 It accepts the following parameters:
7559
7560 @table @option
7561 @item n
7562 The (sequential) number of the input frame, starting from 0.
7563
7564 @item pts
7565 The Presentation TimeStamp of the input frame, expressed as a number of
7566 time base units. The time base unit depends on the filter input pad.
7567
7568 @item pts_time
7569 The Presentation TimeStamp of the input frame, expressed as a number of
7570 seconds.
7571
7572 @item pos
7573 The position of the frame in the input stream, or -1 if this information is
7574 unavailable and/or meaningless (for example in case of synthetic video).
7575
7576 @item fmt
7577 The pixel format name.
7578
7579 @item sar
7580 The sample aspect ratio of the input frame, expressed in the form
7581 @var{num}/@var{den}.
7582
7583 @item s
7584 The size of the input frame. For the syntax of this option, check the "Video size"
7585 section in the ffmpeg-utils manual.
7586
7587 @item i
7588 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
7589 for bottom field first).
7590
7591 @item iskey
7592 This is 1 if the frame is a key frame, 0 otherwise.
7593
7594 @item type
7595 The picture type of the input frame ("I" for an I-frame, "P" for a
7596 P-frame, "B" for a B-frame, or "?" for an unknown type).
7597 Also refer to the documentation of the @code{AVPictureType} enum and of
7598 the @code{av_get_picture_type_char} function defined in
7599 @file{libavutil/avutil.h}.
7600
7601 @item checksum
7602 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
7603
7604 @item plane_checksum
7605 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
7606 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
7607 @end table
7608
7609 @section shuffleplanes
7610
7611 Reorder and/or duplicate video planes.
7612
7613 It accepts the following parameters:
7614
7615 @table @option
7616
7617 @item map0
7618 The index of the input plane to be used as the first output plane.
7619
7620 @item map1
7621 The index of the input plane to be used as the second output plane.
7622
7623 @item map2
7624 The index of the input plane to be used as the third output plane.
7625
7626 @item map3
7627 The index of the input plane to be used as the fourth output plane.
7628
7629 @end table
7630
7631 The first plane has the index 0. The default is to keep the input unchanged.
7632
7633 Swap the second and third planes of the input:
7634 @example
7635 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
7636 @end example
7637
7638 @section signalstats
7639 Evaluate various visual metrics that assist in determining issues associated
7640 with the digitization of analog video media.
7641
7642 By default the filter will log these metadata values:
7643
7644 @table @option
7645 @item YMIN
7646 Display the minimal Y value contained within the input frame. Expressed in
7647 range of [0-255].
7648
7649 @item YLOW
7650 Display the Y value at the 10% percentile within the input frame. Expressed in
7651 range of [0-255].
7652
7653 @item YAVG
7654 Display the average Y value within the input frame. Expressed in range of
7655 [0-255].
7656
7657 @item YHIGH
7658 Display the Y value at the 90% percentile within the input frame. Expressed in
7659 range of [0-255].
7660
7661 @item YMAX
7662 Display the maximum Y value contained within the input frame. Expressed in
7663 range of [0-255].
7664
7665 @item UMIN
7666 Display the minimal U value contained within the input frame. Expressed in
7667 range of [0-255].
7668
7669 @item ULOW
7670 Display the U value at the 10% percentile within the input frame. Expressed in
7671 range of [0-255].
7672
7673 @item UAVG
7674 Display the average U value within the input frame. Expressed in range of
7675 [0-255].
7676
7677 @item UHIGH
7678 Display the U value at the 90% percentile within the input frame. Expressed in
7679 range of [0-255].
7680
7681 @item UMAX
7682 Display the maximum U value contained within the input frame. Expressed in
7683 range of [0-255].
7684
7685 @item VMIN
7686 Display the minimal V value contained within the input frame. Expressed in
7687 range of [0-255].
7688
7689 @item VLOW
7690 Display the V value at the 10% percentile within the input frame. Expressed in
7691 range of [0-255].
7692
7693 @item VAVG
7694 Display the average V value within the input frame. Expressed in range of
7695 [0-255].
7696
7697 @item VHIGH
7698 Display the V value at the 90% percentile within the input frame. Expressed in
7699 range of [0-255].
7700
7701 @item VMAX
7702 Display the maximum V value contained within the input frame. Expressed in
7703 range of [0-255].
7704
7705 @item SATMIN
7706 Display the minimal saturation value contained within the input frame.
7707 Expressed in range of [0-~181.02].
7708
7709 @item SATLOW
7710 Display the saturation value at the 10% percentile within the input frame.
7711 Expressed in range of [0-~181.02].
7712
7713 @item SATAVG
7714 Display the average saturation value within the input frame. Expressed in range
7715 of [0-~181.02].
7716
7717 @item SATHIGH
7718 Display the saturation value at the 90% percentile within the input frame.
7719 Expressed in range of [0-~181.02].
7720
7721 @item SATMAX
7722 Display the maximum saturation value contained within the input frame.
7723 Expressed in range of [0-~181.02].
7724
7725 @item HUEMED
7726 Display the median value for hue within the input frame. Expressed in range of
7727 [0-360].
7728
7729 @item HUEAVG
7730 Display the average value for hue within the input frame. Expressed in range of
7731 [0-360].
7732
7733 @item YDIF
7734 Display the average of sample value difference between all values of the Y
7735 plane in the current frame and corresponding values of the previous input frame.
7736 Expressed in range of [0-255].
7737
7738 @item UDIF
7739 Display the average of sample value difference between all values of the U
7740 plane in the current frame and corresponding values of the previous input frame.
7741 Expressed in range of [0-255].
7742
7743 @item VDIF
7744 Display the average of sample value difference between all values of the V
7745 plane in the current frame and corresponding values of the previous input frame.
7746 Expressed in range of [0-255].
7747 @end table
7748
7749 The filter accepts the following options:
7750
7751 @table @option
7752 @item stat
7753 @item out
7754
7755 @option{stat} specify an additional form of image analysis.
7756 @option{out} output video with the specified type of pixel highlighted.
7757
7758 Both options accept the following values:
7759
7760 @table @samp
7761 @item tout
7762 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
7763 unlike the neighboring pixels of the same field. Examples of temporal outliers
7764 include the results of video dropouts, head clogs, or tape tracking issues.
7765
7766 @item vrep
7767 Identify @var{vertical line repetition}. Vertical line repetition includes
7768 similar rows of pixels within a frame. In born-digital video vertical line
7769 repetition is common, but this pattern is uncommon in video digitized from an
7770 analog source. When it occurs in video that results from the digitization of an
7771 analog source it can indicate concealment from a dropout compensator.
7772
7773 @item brng
7774 Identify pixels that fall outside of legal broadcast range.
7775 @end table
7776
7777 @item color, c
7778 Set the highlight color for the @option{out} option. The default color is
7779 yellow.
7780 @end table
7781
7782 @subsection Examples
7783
7784 @itemize
7785 @item
7786 Output data of various video metrics:
7787 @example
7788 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
7789 @end example
7790
7791 @item
7792 Output specific data about the minimum and maximum values of the Y plane per frame:
7793 @example
7794 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
7795 @end example
7796
7797 @item
7798 Playback video while highlighting pixels that are outside of broadcast range in red.
7799 @example
7800 ffplay example.mov -vf signalstats="out=brng:color=red"
7801 @end example
7802
7803 @item
7804 Playback video with signalstats metadata drawn over the frame.
7805 @example
7806 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
7807 @end example
7808
7809 The contents of signalstat_drawtext.txt used in the command are:
7810 @example
7811 time %@{pts:hms@}
7812 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
7813 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
7814 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
7815 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
7816
7817 @end example
7818 @end itemize
7819
7820 @anchor{smartblur}
7821 @section smartblur
7822
7823 Blur the input video without impacting the outlines.
7824
7825 It accepts the following options:
7826
7827 @table @option
7828 @item luma_radius, lr
7829 Set the luma radius. The option value must be a float number in
7830 the range [0.1,5.0] that specifies the variance of the gaussian filter
7831 used to blur the image (slower if larger). Default value is 1.0.
7832
7833 @item luma_strength, ls
7834 Set the luma strength. The option value must be a float number
7835 in the range [-1.0,1.0] that configures the blurring. A value included
7836 in [0.0,1.0] will blur the image whereas a value included in
7837 [-1.0,0.0] will sharpen the image. Default value is 1.0.
7838
7839 @item luma_threshold, lt
7840 Set the luma threshold used as a coefficient to determine
7841 whether a pixel should be blurred or not. The option value must be an
7842 integer in the range [-30,30]. A value of 0 will filter all the image,
7843 a value included in [0,30] will filter flat areas and a value included
7844 in [-30,0] will filter edges. Default value is 0.
7845
7846 @item chroma_radius, cr
7847 Set the chroma radius. The option value must be a float number in
7848 the range [0.1,5.0] that specifies the variance of the gaussian filter
7849 used to blur the image (slower if larger). Default value is 1.0.
7850
7851 @item chroma_strength, cs
7852 Set the chroma strength. The option value must be a float number
7853 in the range [-1.0,1.0] that configures the blurring. A value included
7854 in [0.0,1.0] will blur the image whereas a value included in
7855 [-1.0,0.0] will sharpen the image. Default value is 1.0.
7856
7857 @item chroma_threshold, ct
7858 Set the chroma threshold used as a coefficient to determine
7859 whether a pixel should be blurred or not. The option value must be an
7860 integer in the range [-30,30]. A value of 0 will filter all the image,
7861 a value included in [0,30] will filter flat areas and a value included
7862 in [-30,0] will filter edges. Default value is 0.
7863 @end table
7864
7865 If a chroma option is not explicitly set, the corresponding luma value
7866 is set.
7867
7868 @section stereo3d
7869
7870 Convert between different stereoscopic image formats.
7871
7872 The filters accept the following options:
7873
7874 @table @option
7875 @item in
7876 Set stereoscopic image format of input.
7877
7878 Available values for input image formats are:
7879 @table @samp
7880 @item sbsl
7881 side by side parallel (left eye left, right eye right)
7882
7883 @item sbsr
7884 side by side crosseye (right eye left, left eye right)
7885
7886 @item sbs2l
7887 side by side parallel with half width resolution
7888 (left eye left, right eye right)
7889
7890 @item sbs2r
7891 side by side crosseye with half width resolution
7892 (right eye left, left eye right)
7893
7894 @item abl
7895 above-below (left eye above, right eye below)
7896
7897 @item abr
7898 above-below (right eye above, left eye below)
7899
7900 @item ab2l
7901 above-below with half height resolution
7902 (left eye above, right eye below)
7903
7904 @item ab2r
7905 above-below with half height resolution
7906 (right eye above, left eye below)
7907
7908 @item al
7909 alternating frames (left eye first, right eye second)
7910
7911 @item ar
7912 alternating frames (right eye first, left eye second)
7913
7914 Default value is @samp{sbsl}.
7915 @end table
7916
7917 @item out
7918 Set stereoscopic image format of output.
7919
7920 Available values for output image formats are all the input formats as well as:
7921 @table @samp
7922 @item arbg
7923 anaglyph red/blue gray
7924 (red filter on left eye, blue filter on right eye)
7925
7926 @item argg
7927 anaglyph red/green gray
7928 (red filter on left eye, green filter on right eye)
7929
7930 @item arcg
7931 anaglyph red/cyan gray
7932 (red filter on left eye, cyan filter on right eye)
7933
7934 @item arch
7935 anaglyph red/cyan half colored
7936 (red filter on left eye, cyan filter on right eye)
7937
7938 @item arcc
7939 anaglyph red/cyan color
7940 (red filter on left eye, cyan filter on right eye)
7941
7942 @item arcd
7943 anaglyph red/cyan color optimized with the least squares projection of dubois
7944 (red filter on left eye, cyan filter on right eye)
7945
7946 @item agmg
7947 anaglyph green/magenta gray
7948 (green filter on left eye, magenta filter on right eye)
7949
7950 @item agmh
7951 anaglyph green/magenta half colored
7952 (green filter on left eye, magenta filter on right eye)
7953
7954 @item agmc
7955 anaglyph green/magenta colored
7956 (green filter on left eye, magenta filter on right eye)
7957
7958 @item agmd
7959 anaglyph green/magenta color optimized with the least squares projection of dubois
7960 (green filter on left eye, magenta filter on right eye)
7961
7962 @item aybg
7963 anaglyph yellow/blue gray
7964 (yellow filter on left eye, blue filter on right eye)
7965
7966 @item aybh
7967 anaglyph yellow/blue half colored
7968 (yellow filter on left eye, blue filter on right eye)
7969
7970 @item aybc
7971 anaglyph yellow/blue colored
7972 (yellow filter on left eye, blue filter on right eye)
7973
7974 @item aybd
7975 anaglyph yellow/blue color optimized with the least squares projection of dubois
7976 (yellow filter on left eye, blue filter on right eye)
7977
7978 @item irl
7979 interleaved rows (left eye has top row, right eye starts on next row)
7980
7981 @item irr
7982 interleaved rows (right eye has top row, left eye starts on next row)
7983
7984 @item ml
7985 mono output (left eye only)
7986
7987 @item mr
7988 mono output (right eye only)
7989 @end table
7990
7991 Default value is @samp{arcd}.
7992 @end table
7993
7994 @subsection Examples
7995
7996 @itemize
7997 @item
7998 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
7999 @example
8000 stereo3d=sbsl:aybd
8001 @end example
8002
8003 @item
8004 Convert input video from above bellow (left eye above, right eye below) to side by side crosseye.
8005 @example
8006 stereo3d=abl:sbsr
8007 @end example
8008 @end itemize
8009
8010 @section spp
8011
8012 Apply a simple postprocessing filter that compresses and decompresses the image
8013 at several (or - in the case of @option{quality} level @code{6} - all) shifts
8014 and average the results.
8015
8016 The filter accepts the following options:
8017
8018 @table @option
8019 @item quality
8020 Set quality. This option defines the number of levels for averaging. It accepts
8021 an integer in the range 0-6. If set to @code{0}, the filter will have no
8022 effect. A value of @code{6} means the higher quality. For each increment of
8023 that value the speed drops by a factor of approximately 2.  Default value is
8024 @code{3}.
8025
8026 @item qp
8027 Force a constant quantization parameter. If not set, the filter will use the QP
8028 from the video stream (if available).
8029
8030 @item mode
8031 Set thresholding mode. Available modes are:
8032
8033 @table @samp
8034 @item hard
8035 Set hard thresholding (default).
8036 @item soft
8037 Set soft thresholding (better de-ringing effect, but likely blurrier).
8038 @end table
8039
8040 @item use_bframe_qp
8041 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
8042 option may cause flicker since the B-Frames have often larger QP. Default is
8043 @code{0} (not enabled).
8044 @end table
8045
8046 @anchor{subtitles}
8047 @section subtitles
8048
8049 Draw subtitles on top of input video using the libass library.
8050
8051 To enable compilation of this filter you need to configure FFmpeg with
8052 @code{--enable-libass}. This filter also requires a build with libavcodec and
8053 libavformat to convert the passed subtitles file to ASS (Advanced Substation
8054 Alpha) subtitles format.
8055
8056 The filter accepts the following options:
8057
8058 @table @option
8059 @item filename, f
8060 Set the filename of the subtitle file to read. It must be specified.
8061
8062 @item original_size
8063 Specify the size of the original video, the video for which the ASS file
8064 was composed. For the syntax of this option, check the "Video size" section in
8065 the ffmpeg-utils manual. Due to a misdesign in ASS aspect ratio arithmetic,
8066 this is necessary to correctly scale the fonts if the aspect ratio has been
8067 changed.
8068
8069 @item charenc
8070 Set subtitles input character encoding. @code{subtitles} filter only. Only
8071 useful if not UTF-8.
8072
8073 @item stream_index, si
8074 Set subtitles stream index. @code{subtitles} filter only.
8075 @end table
8076
8077 If the first key is not specified, it is assumed that the first value
8078 specifies the @option{filename}.
8079
8080 For example, to render the file @file{sub.srt} on top of the input
8081 video, use the command:
8082 @example
8083 subtitles=sub.srt
8084 @end example
8085
8086 which is equivalent to:
8087 @example
8088 subtitles=filename=sub.srt
8089 @end example
8090
8091 To render the default subtitles stream from file @file{video.mkv}, use:
8092 @example
8093 subtitles=video.mkv
8094 @end example
8095
8096 To render the second subtitles stream from that file, use:
8097 @example
8098 subtitles=video.mkv:si=1
8099 @end example
8100
8101 @section super2xsai
8102
8103 Scale the input by 2x and smooth using the Super2xSaI (Scale and
8104 Interpolate) pixel art scaling algorithm.
8105
8106 Useful for enlarging pixel art images without reducing sharpness.
8107
8108 @section swapuv
8109 Swap U & V plane.
8110
8111 @section telecine
8112
8113 Apply telecine process to the video.
8114
8115 This filter accepts the following options:
8116
8117 @table @option
8118 @item first_field
8119 @table @samp
8120 @item top, t
8121 top field first
8122 @item bottom, b
8123 bottom field first
8124 The default value is @code{top}.
8125 @end table
8126
8127 @item pattern
8128 A string of numbers representing the pulldown pattern you wish to apply.
8129 The default value is @code{23}.
8130 @end table
8131
8132 @example
8133 Some typical patterns:
8134
8135 NTSC output (30i):
8136 27.5p: 32222
8137 24p: 23 (classic)
8138 24p: 2332 (preferred)
8139 20p: 33
8140 18p: 334
8141 16p: 3444
8142
8143 PAL output (25i):
8144 27.5p: 12222
8145 24p: 222222222223 ("Euro pulldown")
8146 16.67p: 33
8147 16p: 33333334
8148 @end example
8149
8150 @section thumbnail
8151 Select the most representative frame in a given sequence of consecutive frames.
8152
8153 The filter accepts the following options:
8154
8155 @table @option
8156 @item n
8157 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
8158 will pick one of them, and then handle the next batch of @var{n} frames until
8159 the end. Default is @code{100}.
8160 @end table
8161
8162 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
8163 value will result in a higher memory usage, so a high value is not recommended.
8164
8165 @subsection Examples
8166
8167 @itemize
8168 @item
8169 Extract one picture each 50 frames:
8170 @example
8171 thumbnail=50
8172 @end example
8173
8174 @item
8175 Complete example of a thumbnail creation with @command{ffmpeg}:
8176 @example
8177 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
8178 @end example
8179 @end itemize
8180
8181 @section tile
8182
8183 Tile several successive frames together.
8184
8185 The filter accepts the following options:
8186
8187 @table @option
8188
8189 @item layout
8190 Set the grid size (i.e. the number of lines and columns). For the syntax of
8191 this option, check the "Video size" section in the ffmpeg-utils manual.
8192
8193 @item nb_frames
8194 Set the maximum number of frames to render in the given area. It must be less
8195 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
8196 the area will be used.
8197
8198 @item margin
8199 Set the outer border margin in pixels.
8200
8201 @item padding
8202 Set the inner border thickness (i.e. the number of pixels between frames). For
8203 more advanced padding options (such as having different values for the edges),
8204 refer to the pad video filter.
8205
8206 @item color
8207 Specify the color of the unused areaFor the syntax of this option, check the
8208 "Color" section in the ffmpeg-utils manual. The default value of @var{color}
8209 is "black".
8210 @end table
8211
8212 @subsection Examples
8213
8214 @itemize
8215 @item
8216 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
8217 @example
8218 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
8219 @end example
8220 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
8221 duplicating each output frame to accommodate the originally detected frame
8222 rate.
8223
8224 @item
8225 Display @code{5} pictures in an area of @code{3x2} frames,
8226 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
8227 mixed flat and named options:
8228 @example
8229 tile=3x2:nb_frames=5:padding=7:margin=2
8230 @end example
8231 @end itemize
8232
8233 @section tinterlace
8234
8235 Perform various types of temporal field interlacing.
8236
8237 Frames are counted starting from 1, so the first input frame is
8238 considered odd.
8239
8240 The filter accepts the following options:
8241
8242 @table @option
8243
8244 @item mode
8245 Specify the mode of the interlacing. This option can also be specified
8246 as a value alone. See below for a list of values for this option.
8247
8248 Available values are:
8249
8250 @table @samp
8251 @item merge, 0
8252 Move odd frames into the upper field, even into the lower field,
8253 generating a double height frame at half frame rate.
8254
8255 @item drop_odd, 1
8256 Only output even frames, odd frames are dropped, generating a frame with
8257 unchanged height at half frame rate.
8258
8259 @item drop_even, 2
8260 Only output odd frames, even frames are dropped, generating a frame with
8261 unchanged height at half frame rate.
8262
8263 @item pad, 3
8264 Expand each frame to full height, but pad alternate lines with black,
8265 generating a frame with double height at the same input frame rate.
8266
8267 @item interleave_top, 4
8268 Interleave the upper field from odd frames with the lower field from
8269 even frames, generating a frame with unchanged height at half frame rate.
8270
8271 @item interleave_bottom, 5
8272 Interleave the lower field from odd frames with the upper field from
8273 even frames, generating a frame with unchanged height at half frame rate.
8274
8275 @item interlacex2, 6
8276 Double frame rate with unchanged height. Frames are inserted each
8277 containing the second temporal field from the previous input frame and
8278 the first temporal field from the next input frame. This mode relies on
8279 the top_field_first flag. Useful for interlaced video displays with no
8280 field synchronisation.
8281 @end table
8282
8283 Numeric values are deprecated but are accepted for backward
8284 compatibility reasons.
8285
8286 Default mode is @code{merge}.
8287
8288 @item flags
8289 Specify flags influencing the filter process.
8290
8291 Available value for @var{flags} is:
8292
8293 @table @option
8294 @item low_pass_filter, vlfp
8295 Enable vertical low-pass filtering in the filter.
8296 Vertical low-pass filtering is required when creating an interlaced
8297 destination from a progressive source which contains high-frequency
8298 vertical detail. Filtering will reduce interlace 'twitter' and Moire
8299 patterning.
8300
8301 Vertical low-pass filtering can only be enabled for @option{mode}
8302 @var{interleave_top} and @var{interleave_bottom}.
8303
8304 @end table
8305 @end table
8306
8307 @section transpose
8308
8309 Transpose rows with columns in the input video and optionally flip it.
8310
8311 It accepts the following parameters:
8312
8313 @table @option
8314
8315 @item dir
8316 Specify the transposition direction.
8317
8318 Can assume the following values:
8319 @table @samp
8320 @item 0, 4, cclock_flip
8321 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
8322 @example
8323 L.R     L.l
8324 . . ->  . .
8325 l.r     R.r
8326 @end example
8327
8328 @item 1, 5, clock
8329 Rotate by 90 degrees clockwise, that is:
8330 @example
8331 L.R     l.L
8332 . . ->  . .
8333 l.r     r.R
8334 @end example
8335
8336 @item 2, 6, cclock
8337 Rotate by 90 degrees counterclockwise, that is:
8338 @example
8339 L.R     R.r
8340 . . ->  . .
8341 l.r     L.l
8342 @end example
8343
8344 @item 3, 7, clock_flip
8345 Rotate by 90 degrees clockwise and vertically flip, that is:
8346 @example
8347 L.R     r.R
8348 . . ->  . .
8349 l.r     l.L
8350 @end example
8351 @end table
8352
8353 For values between 4-7, the transposition is only done if the input
8354 video geometry is portrait and not landscape. These values are
8355 deprecated, the @code{passthrough} option should be used instead.
8356
8357 Numerical values are deprecated, and should be dropped in favor of
8358 symbolic constants.
8359
8360 @item passthrough
8361 Do not apply the transposition if the input geometry matches the one
8362 specified by the specified value. It accepts the following values:
8363 @table @samp
8364 @item none
8365 Always apply transposition.
8366 @item portrait
8367 Preserve portrait geometry (when @var{height} >= @var{width}).
8368 @item landscape
8369 Preserve landscape geometry (when @var{width} >= @var{height}).
8370 @end table
8371
8372 Default value is @code{none}.
8373 @end table
8374
8375 For example to rotate by 90 degrees clockwise and preserve portrait
8376 layout:
8377 @example
8378 transpose=dir=1:passthrough=portrait
8379 @end example
8380
8381 The command above can also be specified as:
8382 @example
8383 transpose=1:portrait
8384 @end example
8385
8386 @section trim
8387 Trim the input so that the output contains one continuous subpart of the input.
8388
8389 It accepts the following parameters:
8390 @table @option
8391 @item start
8392 Specify the time of the start of the kept section, i.e. the frame with the
8393 timestamp @var{start} will be the first frame in the output.
8394
8395 @item end
8396 Specify the time of the first frame that will be dropped, i.e. the frame
8397 immediately preceding the one with the timestamp @var{end} will be the last
8398 frame in the output.
8399
8400 @item start_pts
8401 This is the same as @var{start}, except this option sets the start timestamp
8402 in timebase units instead of seconds.
8403
8404 @item end_pts
8405 This is the same as @var{end}, except this option sets the end timestamp
8406 in timebase units instead of seconds.
8407
8408 @item duration
8409 The maximum duration of the output in seconds.
8410
8411 @item start_frame
8412 The number of the first frame that should be passed to the output.
8413
8414 @item end_frame
8415 The number of the first frame that should be dropped.
8416 @end table
8417
8418 @option{start}, @option{end}, @option{duration} are expressed as time
8419 duration specifications, check the "Time duration" section in the
8420 ffmpeg-utils manual.
8421
8422 Note that the first two sets of the start/end options and the @option{duration}
8423 option look at the frame timestamp, while the _frame variants simply count the
8424 frames that pass through the filter. Also note that this filter does not modify
8425 the timestamps. If you wish for the output timestamps to start at zero, insert a
8426 setpts filter after the trim filter.
8427
8428 If multiple start or end options are set, this filter tries to be greedy and
8429 keep all the frames that match at least one of the specified constraints. To keep
8430 only the part that matches all the constraints at once, chain multiple trim
8431 filters.
8432
8433 The defaults are such that all the input is kept. So it is possible to set e.g.
8434 just the end values to keep everything before the specified time.
8435
8436 Examples:
8437 @itemize
8438 @item
8439 Drop everything except the second minute of input:
8440 @example
8441 ffmpeg -i INPUT -vf trim=60:120
8442 @end example
8443
8444 @item
8445 Keep only the first second:
8446 @example
8447 ffmpeg -i INPUT -vf trim=duration=1
8448 @end example
8449
8450 @end itemize
8451
8452
8453 @section unsharp
8454
8455 Sharpen or blur the input video.
8456
8457 It accepts the following parameters:
8458
8459 @table @option
8460 @item luma_msize_x, lx
8461 Set the luma matrix horizontal size. It must be an odd integer between
8462 3 and 63. The default value is 5.
8463
8464 @item luma_msize_y, ly
8465 Set the luma matrix vertical size. It must be an odd integer between 3
8466 and 63. The default value is 5.
8467
8468 @item luma_amount, la
8469 Set the luma effect strength. It must be a floating point number, reasonable
8470 values lay between -1.5 and 1.5.
8471
8472 Negative values will blur the input video, while positive values will
8473 sharpen it, a value of zero will disable the effect.
8474
8475 Default value is 1.0.
8476
8477 @item chroma_msize_x, cx
8478 Set the chroma matrix horizontal size. It must be an odd integer
8479 between 3 and 63. The default value is 5.
8480
8481 @item chroma_msize_y, cy
8482 Set the chroma matrix vertical size. It must be an odd integer
8483 between 3 and 63. The default value is 5.
8484
8485 @item chroma_amount, ca
8486 Set the chroma effect strength. It must be a floating point number, reasonable
8487 values lay between -1.5 and 1.5.
8488
8489 Negative values will blur the input video, while positive values will
8490 sharpen it, a value of zero will disable the effect.
8491
8492 Default value is 0.0.
8493
8494 @item opencl
8495 If set to 1, specify using OpenCL capabilities, only available if
8496 FFmpeg was configured with @code{--enable-opencl}. Default value is 0.
8497
8498 @end table
8499
8500 All parameters are optional and default to the equivalent of the
8501 string '5:5:1.0:5:5:0.0'.
8502
8503 @subsection Examples
8504
8505 @itemize
8506 @item
8507 Apply strong luma sharpen effect:
8508 @example
8509 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
8510 @end example
8511
8512 @item
8513 Apply a strong blur of both luma and chroma parameters:
8514 @example
8515 unsharp=7:7:-2:7:7:-2
8516 @end example
8517 @end itemize
8518
8519 @anchor{vidstabdetect}
8520 @section vidstabdetect
8521
8522 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
8523 @ref{vidstabtransform} for pass 2.
8524
8525 This filter generates a file with relative translation and rotation
8526 transform information about subsequent frames, which is then used by
8527 the @ref{vidstabtransform} filter.
8528
8529 To enable compilation of this filter you need to configure FFmpeg with
8530 @code{--enable-libvidstab}.
8531
8532 This filter accepts the following options:
8533
8534 @table @option
8535 @item result
8536 Set the path to the file used to write the transforms information.
8537 Default value is @file{transforms.trf}.
8538
8539 @item shakiness
8540 Set how shaky the video is and how quick the camera is. It accepts an
8541 integer in the range 1-10, a value of 1 means little shakiness, a
8542 value of 10 means strong shakiness. Default value is 5.
8543
8544 @item accuracy
8545 Set the accuracy of the detection process. It must be a value in the
8546 range 1-15. A value of 1 means low accuracy, a value of 15 means high
8547 accuracy. Default value is 15.
8548
8549 @item stepsize
8550 Set stepsize of the search process. The region around minimum is
8551 scanned with 1 pixel resolution. Default value is 6.
8552
8553 @item mincontrast
8554 Set minimum contrast. Below this value a local measurement field is
8555 discarded. Must be a floating point value in the range 0-1. Default
8556 value is 0.3.
8557
8558 @item tripod
8559 Set reference frame number for tripod mode.
8560
8561 If enabled, the motion of the frames is compared to a reference frame
8562 in the filtered stream, identified by the specified number. The idea
8563 is to compensate all movements in a more-or-less static scene and keep
8564 the camera view absolutely still.
8565
8566 If set to 0, it is disabled. The frames are counted starting from 1.
8567
8568 @item show
8569 Show fields and transforms in the resulting frames. It accepts an
8570 integer in the range 0-2. Default value is 0, which disables any
8571 visualization.
8572 @end table
8573
8574 @subsection Examples
8575
8576 @itemize
8577 @item
8578 Use default values:
8579 @example
8580 vidstabdetect
8581 @end example
8582
8583 @item
8584 Analyze strongly shaky movie and put the results in file
8585 @file{mytransforms.trf}:
8586 @example
8587 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
8588 @end example
8589
8590 @item
8591 Visualize the result of internal transformations in the resulting
8592 video:
8593 @example
8594 vidstabdetect=show=1
8595 @end example
8596
8597 @item
8598 Analyze a video with medium shakiness using @command{ffmpeg}:
8599 @example
8600 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
8601 @end example
8602 @end itemize
8603
8604 @anchor{vidstabtransform}
8605 @section vidstabtransform
8606
8607 Video stabilization/deshaking: pass 2 of 2,
8608 see @ref{vidstabdetect} for pass 1.
8609
8610 Read a file with transform information for each frame and
8611 apply/compensate them. Together with the @ref{vidstabdetect}
8612 filter this can be used to deshake videos. See also
8613 @url{http://public.hronopik.de/vid.stab}. It is important to also use
8614 the unsharp filter, see below.
8615
8616 To enable compilation of this filter you need to configure FFmpeg with
8617 @code{--enable-libvidstab}.
8618
8619 @subsection Options
8620
8621 @table @option
8622 @item input
8623 Set path to the file used to read the transforms. Default value is
8624 @file{transforms.trf}).
8625
8626 @item smoothing
8627 Set the number of frames (value*2 + 1) used for lowpass filtering the
8628 camera movements. Default value is 10.
8629
8630 For example a number of 10 means that 21 frames are used (10 in the
8631 past and 10 in the future) to smoothen the motion in the video. A
8632 larger values leads to a smoother video, but limits the acceleration
8633 of the camera (pan/tilt movements). 0 is a special case where a
8634 static camera is simulated.
8635
8636 @item optalgo
8637 Set the camera path optimization algorithm.
8638
8639 Accepted values are:
8640 @table @samp
8641 @item gauss
8642 gaussian kernel low-pass filter on camera motion (default)
8643 @item avg
8644 averaging on transformations
8645 @end table
8646
8647 @item maxshift
8648 Set maximal number of pixels to translate frames. Default value is -1,
8649 meaning no limit.
8650
8651 @item maxangle
8652 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
8653 value is -1, meaning no limit.
8654
8655 @item crop
8656 Specify how to deal with borders that may be visible due to movement
8657 compensation.
8658
8659 Available values are:
8660 @table @samp
8661 @item keep
8662 keep image information from previous frame (default)
8663 @item black
8664 fill the border black
8665 @end table
8666
8667 @item invert
8668 Invert transforms if set to 1. Default value is 0.
8669
8670 @item relative
8671 Consider transforms as relative to previsou frame if set to 1,
8672 absolute if set to 0. Default value is 0.
8673
8674 @item zoom
8675 Set percentage to zoom. A positive value will result in a zoom-in
8676 effect, a negative value in a zoom-out effect. Default value is 0 (no
8677 zoom).
8678
8679 @item optzoom
8680 Set optimal zooming to avoid borders.
8681
8682 Accepted values are:
8683 @table @samp
8684 @item 0
8685 disabled
8686 @item 1
8687 optimal static zoom value is determined (only very strong movements
8688 will lead to visible borders) (default)
8689 @item 2
8690 optimal adaptive zoom value is determined (no borders will be
8691 visible), see @option{zoomspeed}
8692 @end table
8693
8694 Note that the value given at zoom is added to the one calculated here.
8695
8696 @item zoomspeed
8697 Set percent to zoom maximally each frame (enabled when
8698 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
8699 0.25.
8700
8701 @item interpol
8702 Specify type of interpolation.
8703
8704 Available values are:
8705 @table @samp
8706 @item no
8707 no interpolation
8708 @item linear
8709 linear only horizontal
8710 @item bilinear
8711 linear in both directions (default)
8712 @item bicubic
8713 cubic in both directions (slow)
8714 @end table
8715
8716 @item tripod
8717 Enable virtual tripod mode if set to 1, which is equivalent to
8718 @code{relative=0:smoothing=0}. Default value is 0.
8719
8720 Use also @code{tripod} option of @ref{vidstabdetect}.
8721
8722 @item debug
8723 Increase log verbosity if set to 1. Also the detected global motions
8724 are written to the temporary file @file{global_motions.trf}. Default
8725 value is 0.
8726 @end table
8727
8728 @subsection Examples
8729
8730 @itemize
8731 @item
8732 Use @command{ffmpeg} for a typical stabilization with default values:
8733 @example
8734 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
8735 @end example
8736
8737 Note the use of the unsharp filter which is always recommended.
8738
8739 @item
8740 Zoom in a bit more and load transform data from a given file:
8741 @example
8742 vidstabtransform=zoom=5:input="mytransforms.trf"
8743 @end example
8744
8745 @item
8746 Smoothen the video even more:
8747 @example
8748 vidstabtransform=smoothing=30
8749 @end example
8750 @end itemize
8751
8752 @section vflip
8753
8754 Flip the input video vertically.
8755
8756 For example, to vertically flip a video with @command{ffmpeg}:
8757 @example
8758 ffmpeg -i in.avi -vf "vflip" out.avi
8759 @end example
8760
8761 @section vignette
8762
8763 Make or reverse a natural vignetting effect.
8764
8765 The filter accepts the following options:
8766
8767 @table @option
8768 @item angle, a
8769 Set lens angle expression as a number of radians.
8770
8771 The value is clipped in the @code{[0,PI/2]} range.
8772
8773 Default value: @code{"PI/5"}
8774
8775 @item x0
8776 @item y0
8777 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
8778 by default.
8779
8780 @item mode
8781 Set forward/backward mode.
8782
8783 Available modes are:
8784 @table @samp
8785 @item forward
8786 The larger the distance from the central point, the darker the image becomes.
8787
8788 @item backward
8789 The larger the distance from the central point, the brighter the image becomes.
8790 This can be used to reverse a vignette effect, though there is no automatic
8791 detection to extract the lens @option{angle} and other settings (yet). It can
8792 also be used to create a burning effect.
8793 @end table
8794
8795 Default value is @samp{forward}.
8796
8797 @item eval
8798 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
8799
8800 It accepts the following values:
8801 @table @samp
8802 @item init
8803 Evaluate expressions only once during the filter initialization.
8804
8805 @item frame
8806 Evaluate expressions for each incoming frame. This is way slower than the
8807 @samp{init} mode since it requires all the scalers to be re-computed, but it
8808 allows advanced dynamic expressions.
8809 @end table
8810
8811 Default value is @samp{init}.
8812
8813 @item dither
8814 Set dithering to reduce the circular banding effects. Default is @code{1}
8815 (enabled).
8816
8817 @item aspect
8818 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
8819 Setting this value to the SAR of the input will make a rectangular vignetting
8820 following the dimensions of the video.
8821
8822 Default is @code{1/1}.
8823 @end table
8824
8825 @subsection Expressions
8826
8827 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
8828 following parameters.
8829
8830 @table @option
8831 @item w
8832 @item h
8833 input width and height
8834
8835 @item n
8836 the number of input frame, starting from 0
8837
8838 @item pts
8839 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
8840 @var{TB} units, NAN if undefined
8841
8842 @item r
8843 frame rate of the input video, NAN if the input frame rate is unknown
8844
8845 @item t
8846 the PTS (Presentation TimeStamp) of the filtered video frame,
8847 expressed in seconds, NAN if undefined
8848
8849 @item tb
8850 time base of the input video
8851 @end table
8852
8853
8854 @subsection Examples
8855
8856 @itemize
8857 @item
8858 Apply simple strong vignetting effect:
8859 @example
8860 vignette=PI/4
8861 @end example
8862
8863 @item
8864 Make a flickering vignetting:
8865 @example
8866 vignette='PI/4+random(1)*PI/50':eval=frame
8867 @end example
8868
8869 @end itemize
8870
8871 @section w3fdif
8872
8873 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
8874 Deinterlacing Filter").
8875
8876 Based on the process described by Martin Weston for BBC R&D, and
8877 implemented based on the de-interlace algorithm written by Jim
8878 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
8879 uses filter coefficients calculated by BBC R&D.
8880
8881 There are two sets of filter coefficients, so called "simple":
8882 and "complex". Which set of filter coefficients is used can
8883 be set by passing an optional parameter:
8884
8885 @table @option
8886 @item filter
8887 Set the interlacing filter coefficients. Accepts one of the following values:
8888
8889 @table @samp
8890 @item simple
8891 Simple filter coefficient set.
8892 @item complex
8893 More-complex filter coefficient set.
8894 @end table
8895 Default value is @samp{complex}.
8896
8897 @item deint
8898 Specify which frames to deinterlace. Accept one of the following values:
8899
8900 @table @samp
8901 @item all
8902 Deinterlace all frames,
8903 @item interlaced
8904 Only deinterlace frames marked as interlaced.
8905 @end table
8906
8907 Default value is @samp{all}.
8908 @end table
8909
8910 @anchor{yadif}
8911 @section yadif
8912
8913 Deinterlace the input video ("yadif" means "yet another deinterlacing
8914 filter").
8915
8916 It accepts the following parameters:
8917
8918
8919 @table @option
8920
8921 @item mode
8922 The interlacing mode to adopt. It accepts one of the following values:
8923
8924 @table @option
8925 @item 0, send_frame
8926 Output one frame for each frame.
8927 @item 1, send_field
8928 Output one frame for each field.
8929 @item 2, send_frame_nospatial
8930 Like @code{send_frame}, but it skips the spatial interlacing check.
8931 @item 3, send_field_nospatial
8932 Like @code{send_field}, but it skips the spatial interlacing check.
8933 @end table
8934
8935 The default value is @code{send_frame}.
8936
8937 @item parity
8938 The picture field parity assumed for the input interlaced video. It accepts one
8939 of the following values:
8940
8941 @table @option
8942 @item 0, tff
8943 Assume the top field is first.
8944 @item 1, bff
8945 Assume the bottom field is first.
8946 @item -1, auto
8947 Enable automatic detection of field parity.
8948 @end table
8949
8950 The default value is @code{auto}.
8951 If the interlacing is unknown or the decoder does not export this information,
8952 top field first will be assumed.
8953
8954 @item deint
8955 Specify which frames to deinterlace. Accept one of the following
8956 values:
8957
8958 @table @option
8959 @item 0, all
8960 Deinterlace all frames.
8961 @item 1, interlaced
8962 Only deinterlace frames marked as interlaced.
8963 @end table
8964
8965 The default value is @code{all}.
8966 @end table
8967
8968 @section zoompan
8969
8970 Apply Zoom & Pan effect.
8971
8972 This filter accepts the following options:
8973
8974 @table @option
8975 @item zoom, z
8976 Set the zoom expression. Default is 1.
8977
8978 @item x
8979 @item y
8980 Set the x and y expression. Default is 0.
8981
8982 @item d
8983 Set the duration expression in number of frames.
8984 This sets for how many number of frames effect will last for
8985 single input image.
8986
8987 @item s
8988 Set the output image size, default is 'hd720'.
8989 @end table
8990
8991 Each expression can contain the following constants:
8992
8993 @table @option
8994 @item in_w, iw
8995 Input width.
8996
8997 @item in_h, ih
8998 Input height.
8999
9000 @item out_w, ow
9001 Output width.
9002
9003 @item out_h, oh
9004 Output height.
9005
9006 @item in
9007 Input frame count.
9008
9009 @item on
9010 Output frame count.
9011
9012 @item x
9013 @item y
9014 Last calculated 'x' and 'y' position from 'x' and 'y' expression
9015 for current input frame.
9016
9017 @item px
9018 @item py
9019 'x' and 'y' of last output frame of previous input frame or 0 when there was
9020 not yet such frame (first input frame).
9021
9022 @item zoom
9023 Last calculated zoom from 'z' expression for current input frame.
9024
9025 @item pzoom
9026 Last calculated zoom of last output frame of previous input frame.
9027
9028 @item duration
9029 Number of output frames for current input frame. Calculated from 'd' expression
9030 for each input frame.
9031
9032 @item pduration
9033 number of output frames created for previous input frame
9034
9035 @item a
9036 Rational number: input width / input height
9037
9038 @item sar
9039 sample aspect ratio
9040
9041 @item dar
9042 display aspect ratio
9043
9044 @end table
9045
9046 @subsection Examples
9047
9048 @itemize
9049 @item
9050 Zoom-in up to 1.5 and pan at same time to some spot near center of picture:
9051 @example
9052 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='if(gte(zoom,1.5),x,x+1/a)':y='if(gte(zoom,1.5),y,y+1)':s=640x360
9053 @end example
9054 @end itemize
9055
9056 @c man end VIDEO FILTERS
9057
9058 @chapter Video Sources
9059 @c man begin VIDEO SOURCES
9060
9061 Below is a description of the currently available video sources.
9062
9063 @section buffer
9064
9065 Buffer video frames, and make them available to the filter chain.
9066
9067 This source is mainly intended for a programmatic use, in particular
9068 through the interface defined in @file{libavfilter/vsrc_buffer.h}.
9069
9070 It accepts the following parameters:
9071
9072 @table @option
9073
9074 @item video_size
9075 Specify the size (width and height) of the buffered video frames. For the
9076 syntax of this option, check the "Video size" section in the ffmpeg-utils
9077 manual.
9078
9079 @item width
9080 The input video width.
9081
9082 @item height
9083 The input video height.
9084
9085 @item pix_fmt
9086 A string representing the pixel format of the buffered video frames.
9087 It may be a number corresponding to a pixel format, or a pixel format
9088 name.
9089
9090 @item time_base
9091 Specify the timebase assumed by the timestamps of the buffered frames.
9092
9093 @item frame_rate
9094 Specify the frame rate expected for the video stream.
9095
9096 @item pixel_aspect, sar
9097 The sample (pixel) aspect ratio of the input video.
9098
9099 @item sws_param
9100 Specify the optional parameters to be used for the scale filter which
9101 is automatically inserted when an input change is detected in the
9102 input size or format.
9103 @end table
9104
9105 For example:
9106 @example
9107 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
9108 @end example
9109
9110 will instruct the source to accept video frames with size 320x240 and
9111 with format "yuv410p", assuming 1/24 as the timestamps timebase and
9112 square pixels (1:1 sample aspect ratio).
9113 Since the pixel format with name "yuv410p" corresponds to the number 6
9114 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
9115 this example corresponds to:
9116 @example
9117 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
9118 @end example
9119
9120 Alternatively, the options can be specified as a flat string, but this
9121 syntax is deprecated:
9122
9123 @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}]
9124
9125 @section cellauto
9126
9127 Create a pattern generated by an elementary cellular automaton.
9128
9129 The initial state of the cellular automaton can be defined through the
9130 @option{filename}, and @option{pattern} options. If such options are
9131 not specified an initial state is created randomly.
9132
9133 At each new frame a new row in the video is filled with the result of
9134 the cellular automaton next generation. The behavior when the whole
9135 frame is filled is defined by the @option{scroll} option.
9136
9137 This source accepts the following options:
9138
9139 @table @option
9140 @item filename, f
9141 Read the initial cellular automaton state, i.e. the starting row, from
9142 the specified file.
9143 In the file, each non-whitespace character is considered an alive
9144 cell, a newline will terminate the row, and further characters in the
9145 file will be ignored.
9146
9147 @item pattern, p
9148 Read the initial cellular automaton state, i.e. the starting row, from
9149 the specified string.
9150
9151 Each non-whitespace character in the string is considered an alive
9152 cell, a newline will terminate the row, and further characters in the
9153 string will be ignored.
9154
9155 @item rate, r
9156 Set the video rate, that is the number of frames generated per second.
9157 Default is 25.
9158
9159 @item random_fill_ratio, ratio
9160 Set the random fill ratio for the initial cellular automaton row. It
9161 is a floating point number value ranging from 0 to 1, defaults to
9162 1/PHI.
9163
9164 This option is ignored when a file or a pattern is specified.
9165
9166 @item random_seed, seed
9167 Set the seed for filling randomly the initial row, must be an integer
9168 included between 0 and UINT32_MAX. If not specified, or if explicitly
9169 set to -1, the filter will try to use a good random seed on a best
9170 effort basis.
9171
9172 @item rule
9173 Set the cellular automaton rule, it is a number ranging from 0 to 255.
9174 Default value is 110.
9175
9176 @item size, s
9177 Set the size of the output video. For the syntax of this option, check
9178 the "Video size" section in the ffmpeg-utils manual.
9179
9180 If @option{filename} or @option{pattern} is specified, the size is set
9181 by default to the width of the specified initial state row, and the
9182 height is set to @var{width} * PHI.
9183
9184 If @option{size} is set, it must contain the width of the specified
9185 pattern string, and the specified pattern will be centered in the
9186 larger row.
9187
9188 If a filename or a pattern string is not specified, the size value
9189 defaults to "320x518" (used for a randomly generated initial state).
9190
9191 @item scroll
9192 If set to 1, scroll the output upward when all the rows in the output
9193 have been already filled. If set to 0, the new generated row will be
9194 written over the top row just after the bottom row is filled.
9195 Defaults to 1.
9196
9197 @item start_full, full
9198 If set to 1, completely fill the output with generated rows before
9199 outputting the first frame.
9200 This is the default behavior, for disabling set the value to 0.
9201
9202 @item stitch
9203 If set to 1, stitch the left and right row edges together.
9204 This is the default behavior, for disabling set the value to 0.
9205 @end table
9206
9207 @subsection Examples
9208
9209 @itemize
9210 @item
9211 Read the initial state from @file{pattern}, and specify an output of
9212 size 200x400.
9213 @example
9214 cellauto=f=pattern:s=200x400
9215 @end example
9216
9217 @item
9218 Generate a random initial row with a width of 200 cells, with a fill
9219 ratio of 2/3:
9220 @example
9221 cellauto=ratio=2/3:s=200x200
9222 @end example
9223
9224 @item
9225 Create a pattern generated by rule 18 starting by a single alive cell
9226 centered on an initial row with width 100:
9227 @example
9228 cellauto=p=@@:s=100x400:full=0:rule=18
9229 @end example
9230
9231 @item
9232 Specify a more elaborated initial pattern:
9233 @example
9234 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
9235 @end example
9236
9237 @end itemize
9238
9239 @section mandelbrot
9240
9241 Generate a Mandelbrot set fractal, and progressively zoom towards the
9242 point specified with @var{start_x} and @var{start_y}.
9243
9244 This source accepts the following options:
9245
9246 @table @option
9247
9248 @item end_pts
9249 Set the terminal pts value. Default value is 400.
9250
9251 @item end_scale
9252 Set the terminal scale value.
9253 Must be a floating point value. Default value is 0.3.
9254
9255 @item inner
9256 Set the inner coloring mode, that is the algorithm used to draw the
9257 Mandelbrot fractal internal region.
9258
9259 It shall assume one of the following values:
9260 @table @option
9261 @item black
9262 Set black mode.
9263 @item convergence
9264 Show time until convergence.
9265 @item mincol
9266 Set color based on point closest to the origin of the iterations.
9267 @item period
9268 Set period mode.
9269 @end table
9270
9271 Default value is @var{mincol}.
9272
9273 @item bailout
9274 Set the bailout value. Default value is 10.0.
9275
9276 @item maxiter
9277 Set the maximum of iterations performed by the rendering
9278 algorithm. Default value is 7189.
9279
9280 @item outer
9281 Set outer coloring mode.
9282 It shall assume one of following values:
9283 @table @option
9284 @item iteration_count
9285 Set iteration cound mode.
9286 @item normalized_iteration_count
9287 set normalized iteration count mode.
9288 @end table
9289 Default value is @var{normalized_iteration_count}.
9290
9291 @item rate, r
9292 Set frame rate, expressed as number of frames per second. Default
9293 value is "25".
9294
9295 @item size, s
9296 Set frame size. For the syntax of this option, check the "Video
9297 size" section in the ffmpeg-utils manual. Default value is "640x480".
9298
9299 @item start_scale
9300 Set the initial scale value. Default value is 3.0.
9301
9302 @item start_x
9303 Set the initial x position. Must be a floating point value between
9304 -100 and 100. Default value is -0.743643887037158704752191506114774.
9305
9306 @item start_y
9307 Set the initial y position. Must be a floating point value between
9308 -100 and 100. Default value is -0.131825904205311970493132056385139.
9309 @end table
9310
9311 @section mptestsrc
9312
9313 Generate various test patterns, as generated by the MPlayer test filter.
9314
9315 The size of the generated video is fixed, and is 256x256.
9316 This source is useful in particular for testing encoding features.
9317
9318 This source accepts the following options:
9319
9320 @table @option
9321
9322 @item rate, r
9323 Specify the frame rate of the sourced video, as the number of frames
9324 generated per second. It has to be a string in the format
9325 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
9326 number or a valid video frame rate abbreviation. The default value is
9327 "25".
9328
9329 @item duration, d
9330 Set the video duration of the sourced video. The accepted syntax is:
9331 @example
9332 [-]HH:MM:SS[.m...]
9333 [-]S+[.m...]
9334 @end example
9335 See also the function @code{av_parse_time()}.
9336
9337 If not specified, or the expressed duration is negative, the video is
9338 supposed to be generated forever.
9339
9340 @item test, t
9341
9342 Set the number or the name of the test to perform. Supported tests are:
9343 @table @option
9344 @item dc_luma
9345 @item dc_chroma
9346 @item freq_luma
9347 @item freq_chroma
9348 @item amp_luma
9349 @item amp_chroma
9350 @item cbp
9351 @item mv
9352 @item ring1
9353 @item ring2
9354 @item all
9355
9356 @end table
9357
9358 Default value is "all", which will cycle through the list of all tests.
9359 @end table
9360
9361 Some examples:
9362 @example
9363 testsrc=t=dc_luma
9364 @end example
9365
9366 will generate a "dc_luma" test pattern.
9367
9368 @section frei0r_src
9369
9370 Provide a frei0r source.
9371
9372 To enable compilation of this filter you need to install the frei0r
9373 header and configure FFmpeg with @code{--enable-frei0r}.
9374
9375 This source accepts the following parameters:
9376
9377 @table @option
9378
9379 @item size
9380 The size of the video to generate. For the syntax of this option, check the
9381 "Video size" section in the ffmpeg-utils manual.
9382
9383 @item framerate
9384 The framerate of the generated video. It may be a string of the form
9385 @var{num}/@var{den} or a frame rate abbreviation.
9386
9387 @item filter_name
9388 The name to the frei0r source to load. For more information regarding frei0r and
9389 how to set the parameters, read the @ref{frei0r} section in the video filters
9390 documentation.
9391
9392 @item filter_params
9393 A '|'-separated list of parameters to pass to the frei0r source.
9394
9395 @end table
9396
9397 For example, to generate a frei0r partik0l source with size 200x200
9398 and frame rate 10 which is overlayed on the overlay filter main input:
9399 @example
9400 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
9401 @end example
9402
9403 @section life
9404
9405 Generate a life pattern.
9406
9407 This source is based on a generalization of John Conway's life game.
9408
9409 The sourced input represents a life grid, each pixel represents a cell
9410 which can be in one of two possible states, alive or dead. Every cell
9411 interacts with its eight neighbours, which are the cells that are
9412 horizontally, vertically, or diagonally adjacent.
9413
9414 At each interaction the grid evolves according to the adopted rule,
9415 which specifies the number of neighbor alive cells which will make a
9416 cell stay alive or born. The @option{rule} option allows one to specify
9417 the rule to adopt.
9418
9419 This source accepts the following options:
9420
9421 @table @option
9422 @item filename, f
9423 Set the file from which to read the initial grid state. In the file,
9424 each non-whitespace character is considered an alive cell, and newline
9425 is used to delimit the end of each row.
9426
9427 If this option is not specified, the initial grid is generated
9428 randomly.
9429
9430 @item rate, r
9431 Set the video rate, that is the number of frames generated per second.
9432 Default is 25.
9433
9434 @item random_fill_ratio, ratio
9435 Set the random fill ratio for the initial random grid. It is a
9436 floating point number value ranging from 0 to 1, defaults to 1/PHI.
9437 It is ignored when a file is specified.
9438
9439 @item random_seed, seed
9440 Set the seed for filling the initial random grid, must be an integer
9441 included between 0 and UINT32_MAX. If not specified, or if explicitly
9442 set to -1, the filter will try to use a good random seed on a best
9443 effort basis.
9444
9445 @item rule
9446 Set the life rule.
9447
9448 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
9449 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
9450 @var{NS} specifies the number of alive neighbor cells which make a
9451 live cell stay alive, and @var{NB} the number of alive neighbor cells
9452 which make a dead cell to become alive (i.e. to "born").
9453 "s" and "b" can be used in place of "S" and "B", respectively.
9454
9455 Alternatively a rule can be specified by an 18-bits integer. The 9
9456 high order bits are used to encode the next cell state if it is alive
9457 for each number of neighbor alive cells, the low order bits specify
9458 the rule for "borning" new cells. Higher order bits encode for an
9459 higher number of neighbor cells.
9460 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
9461 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
9462
9463 Default value is "S23/B3", which is the original Conway's game of life
9464 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
9465 cells, and will born a new cell if there are three alive cells around
9466 a dead cell.
9467
9468 @item size, s
9469 Set the size of the output video. For the syntax of this option, check the
9470 "Video size" section in the ffmpeg-utils manual.
9471
9472 If @option{filename} is specified, the size is set by default to the
9473 same size of the input file. If @option{size} is set, it must contain
9474 the size specified in the input file, and the initial grid defined in
9475 that file is centered in the larger resulting area.
9476
9477 If a filename is not specified, the size value defaults to "320x240"
9478 (used for a randomly generated initial grid).
9479
9480 @item stitch
9481 If set to 1, stitch the left and right grid edges together, and the
9482 top and bottom edges also. Defaults to 1.
9483
9484 @item mold
9485 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
9486 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
9487 value from 0 to 255.
9488
9489 @item life_color
9490 Set the color of living (or new born) cells.
9491
9492 @item death_color
9493 Set the color of dead cells. If @option{mold} is set, this is the first color
9494 used to represent a dead cell.
9495
9496 @item mold_color
9497 Set mold color, for definitely dead and moldy cells.
9498
9499 For the syntax of these 3 color options, check the "Color" section in the
9500 ffmpeg-utils manual.
9501 @end table
9502
9503 @subsection Examples
9504
9505 @itemize
9506 @item
9507 Read a grid from @file{pattern}, and center it on a grid of size
9508 300x300 pixels:
9509 @example
9510 life=f=pattern:s=300x300
9511 @end example
9512
9513 @item
9514 Generate a random grid of size 200x200, with a fill ratio of 2/3:
9515 @example
9516 life=ratio=2/3:s=200x200
9517 @end example
9518
9519 @item
9520 Specify a custom rule for evolving a randomly generated grid:
9521 @example
9522 life=rule=S14/B34
9523 @end example
9524
9525 @item
9526 Full example with slow death effect (mold) using @command{ffplay}:
9527 @example
9528 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
9529 @end example
9530 @end itemize
9531
9532 @anchor{color}
9533 @anchor{haldclutsrc}
9534 @anchor{nullsrc}
9535 @anchor{rgbtestsrc}
9536 @anchor{smptebars}
9537 @anchor{smptehdbars}
9538 @anchor{testsrc}
9539 @section color, haldclutsrc, nullsrc, rgbtestsrc, smptebars, smptehdbars, testsrc
9540
9541 The @code{color} source provides an uniformly colored input.
9542
9543 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
9544 @ref{haldclut} filter.
9545
9546 The @code{nullsrc} source returns unprocessed video frames. It is
9547 mainly useful to be employed in analysis / debugging tools, or as the
9548 source for filters which ignore the input data.
9549
9550 The @code{rgbtestsrc} source generates an RGB test pattern useful for
9551 detecting RGB vs BGR issues. You should see a red, green and blue
9552 stripe from top to bottom.
9553
9554 The @code{smptebars} source generates a color bars pattern, based on
9555 the SMPTE Engineering Guideline EG 1-1990.
9556
9557 The @code{smptehdbars} source generates a color bars pattern, based on
9558 the SMPTE RP 219-2002.
9559
9560 The @code{testsrc} source generates a test video pattern, showing a
9561 color pattern, a scrolling gradient and a timestamp. This is mainly
9562 intended for testing purposes.
9563
9564 The sources accept the following parameters:
9565
9566 @table @option
9567
9568 @item color, c
9569 Specify the color of the source, only available in the @code{color}
9570 source. For the syntax of this option, check the "Color" section in the
9571 ffmpeg-utils manual.
9572
9573 @item level
9574 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
9575 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
9576 pixels to be used as identity matrix for 3D lookup tables. Each component is
9577 coded on a @code{1/(N*N)} scale.
9578
9579 @item size, s
9580 Specify the size of the sourced video. For the syntax of this option, check the
9581 "Video size" section in the ffmpeg-utils manual. The default value is
9582 "320x240".
9583
9584 This option is not available with the @code{haldclutsrc} filter.
9585
9586 @item rate, r
9587 Specify the frame rate of the sourced video, as the number of frames
9588 generated per second. It has to be a string in the format
9589 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
9590 number or a valid video frame rate abbreviation. The default value is
9591 "25".
9592
9593 @item sar
9594 Set the sample aspect ratio of the sourced video.
9595
9596 @item duration, d
9597 Set the video duration of the sourced video. The accepted syntax is:
9598 @example
9599 [-]HH[:MM[:SS[.m...]]]
9600 [-]S+[.m...]
9601 @end example
9602 Also see the the @code{av_parse_time()} function.
9603
9604 If not specified, or the expressed duration is negative, the video is
9605 supposed to be generated forever.
9606
9607 @item decimals, n
9608 Set the number of decimals to show in the timestamp, only available in the
9609 @code{testsrc} source.
9610
9611 The displayed timestamp value will correspond to the original
9612 timestamp value multiplied by the power of 10 of the specified
9613 value. Default value is 0.
9614 @end table
9615
9616 For example the following:
9617 @example
9618 testsrc=duration=5.3:size=qcif:rate=10
9619 @end example
9620
9621 will generate a video with a duration of 5.3 seconds, with size
9622 176x144 and a frame rate of 10 frames per second.
9623
9624 The following graph description will generate a red source
9625 with an opacity of 0.2, with size "qcif" and a frame rate of 10
9626 frames per second.
9627 @example
9628 color=c=red@@0.2:s=qcif:r=10
9629 @end example
9630
9631 If the input content is to be ignored, @code{nullsrc} can be used. The
9632 following command generates noise in the luminance plane by employing
9633 the @code{geq} filter:
9634 @example
9635 nullsrc=s=256x256, geq=random(1)*255:128:128
9636 @end example
9637
9638 @subsection Commands
9639
9640 The @code{color} source supports the following commands:
9641
9642 @table @option
9643 @item c, color
9644 Set the color of the created image. Accepts the same syntax of the
9645 corresponding @option{color} option.
9646 @end table
9647
9648 @c man end VIDEO SOURCES
9649
9650 @chapter Video Sinks
9651 @c man begin VIDEO SINKS
9652
9653 Below is a description of the currently available video sinks.
9654
9655 @section buffersink
9656
9657 Buffer video frames, and make them available to the end of the filter
9658 graph.
9659
9660 This sink is mainly intended for programmatic use, in particular
9661 through the interface defined in @file{libavfilter/buffersink.h}
9662 or the options system.
9663
9664 It accepts a pointer to an AVBufferSinkContext structure, which
9665 defines the incoming buffers' formats, to be passed as the opaque
9666 parameter to @code{avfilter_init_filter} for initialization.
9667
9668 @section nullsink
9669
9670 Null video sink: do absolutely nothing with the input video. It is
9671 mainly useful as a template and for use in analysis / debugging
9672 tools.
9673
9674 @c man end VIDEO SINKS
9675
9676 @chapter Multimedia Filters
9677 @c man begin MULTIMEDIA FILTERS
9678
9679 Below is a description of the currently available multimedia filters.
9680
9681 @section avectorscope
9682
9683 Convert input audio to a video output, representing the audio vector
9684 scope.
9685
9686 The filter is used to measure the difference between channels of stereo
9687 audio stream. A monoaural signal, consisting of identical left and right
9688 signal, results in straight vertical line. Any stereo separation is visible
9689 as a deviation from this line, creating a Lissajous figure.
9690 If the straight (or deviation from it) but horizontal line appears this
9691 indicates that the left and right channels are out of phase.
9692
9693 The filter accepts the following options:
9694
9695 @table @option
9696 @item mode, m
9697 Set the vectorscope mode.
9698
9699 Available values are:
9700 @table @samp
9701 @item lissajous
9702 Lissajous rotated by 45 degrees.
9703
9704 @item lissajous_xy
9705 Same as above but not rotated.
9706 @end table
9707
9708 Default value is @samp{lissajous}.
9709
9710 @item size, s
9711 Set the video size for the output. For the syntax of this option, check the "Video size"
9712 section in the ffmpeg-utils manual. Default value is @code{400x400}.
9713
9714 @item rate, r
9715 Set the output frame rate. Default value is @code{25}.
9716
9717 @item rc
9718 @item gc
9719 @item bc
9720 Specify the red, green and blue contrast. Default values are @code{40}, @code{160} and @code{80}.
9721 Allowed range is @code{[0, 255]}.
9722
9723 @item rf
9724 @item gf
9725 @item bf
9726 Specify the red, green and blue fade. Default values are @code{15}, @code{10} and @code{5}.
9727 Allowed range is @code{[0, 255]}.
9728
9729 @item zoom
9730 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[1, 10]}.
9731 @end table
9732
9733 @subsection Examples
9734
9735 @itemize
9736 @item
9737 Complete example using @command{ffplay}:
9738 @example
9739 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
9740              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
9741 @end example
9742 @end itemize
9743
9744 @section concat
9745
9746 Concatenate audio and video streams, joining them together one after the
9747 other.
9748
9749 The filter works on segments of synchronized video and audio streams. All
9750 segments must have the same number of streams of each type, and that will
9751 also be the number of streams at output.
9752
9753 The filter accepts the following options:
9754
9755 @table @option
9756
9757 @item n
9758 Set the number of segments. Default is 2.
9759
9760 @item v
9761 Set the number of output video streams, that is also the number of video
9762 streams in each segment. Default is 1.
9763
9764 @item a
9765 Set the number of output audio streams, that is also the number of audio
9766 streams in each segment. Default is 0.
9767
9768 @item unsafe
9769 Activate unsafe mode: do not fail if segments have a different format.
9770
9771 @end table
9772
9773 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
9774 @var{a} audio outputs.
9775
9776 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
9777 segment, in the same order as the outputs, then the inputs for the second
9778 segment, etc.
9779
9780 Related streams do not always have exactly the same duration, for various
9781 reasons including codec frame size or sloppy authoring. For that reason,
9782 related synchronized streams (e.g. a video and its audio track) should be
9783 concatenated at once. The concat filter will use the duration of the longest
9784 stream in each segment (except the last one), and if necessary pad shorter
9785 audio streams with silence.
9786
9787 For this filter to work correctly, all segments must start at timestamp 0.
9788
9789 All corresponding streams must have the same parameters in all segments; the
9790 filtering system will automatically select a common pixel format for video
9791 streams, and a common sample format, sample rate and channel layout for
9792 audio streams, but other settings, such as resolution, must be converted
9793 explicitly by the user.
9794
9795 Different frame rates are acceptable but will result in variable frame rate
9796 at output; be sure to configure the output file to handle it.
9797
9798 @subsection Examples
9799
9800 @itemize
9801 @item
9802 Concatenate an opening, an episode and an ending, all in bilingual version
9803 (video in stream 0, audio in streams 1 and 2):
9804 @example
9805 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
9806   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
9807    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
9808   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
9809 @end example
9810
9811 @item
9812 Concatenate two parts, handling audio and video separately, using the
9813 (a)movie sources, and adjusting the resolution:
9814 @example
9815 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
9816 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
9817 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
9818 @end example
9819 Note that a desync will happen at the stitch if the audio and video streams
9820 do not have exactly the same duration in the first file.
9821
9822 @end itemize
9823
9824 @section ebur128
9825
9826 EBU R128 scanner filter. This filter takes an audio stream as input and outputs
9827 it unchanged. By default, it logs a message at a frequency of 10Hz with the
9828 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
9829 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
9830
9831 The filter also has a video output (see the @var{video} option) with a real
9832 time graph to observe the loudness evolution. The graphic contains the logged
9833 message mentioned above, so it is not printed anymore when this option is set,
9834 unless the verbose logging is set. The main graphing area contains the
9835 short-term loudness (3 seconds of analysis), and the gauge on the right is for
9836 the momentary loudness (400 milliseconds).
9837
9838 More information about the Loudness Recommendation EBU R128 on
9839 @url{http://tech.ebu.ch/loudness}.
9840
9841 The filter accepts the following options:
9842
9843 @table @option
9844
9845 @item video
9846 Activate the video output. The audio stream is passed unchanged whether this
9847 option is set or no. The video stream will be the first output stream if
9848 activated. Default is @code{0}.
9849
9850 @item size
9851 Set the video size. This option is for video only. For the syntax of this
9852 option, check the "Video size" section in the ffmpeg-utils manual. Default
9853 and minimum resolution is @code{640x480}.
9854
9855 @item meter
9856 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
9857 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
9858 other integer value between this range is allowed.
9859
9860 @item metadata
9861 Set metadata injection. If set to @code{1}, the audio input will be segmented
9862 into 100ms output frames, each of them containing various loudness information
9863 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
9864
9865 Default is @code{0}.
9866
9867 @item framelog
9868 Force the frame logging level.
9869
9870 Available values are:
9871 @table @samp
9872 @item info
9873 information logging level
9874 @item verbose
9875 verbose logging level
9876 @end table
9877
9878 By default, the logging level is set to @var{info}. If the @option{video} or
9879 the @option{metadata} options are set, it switches to @var{verbose}.
9880
9881 @item peak
9882 Set peak mode(s).
9883
9884 Available modes can be cumulated (the option is a @code{flag} type). Possible
9885 values are:
9886 @table @samp
9887 @item none
9888 Disable any peak mode (default).
9889 @item sample
9890 Enable sample-peak mode.
9891
9892 Simple peak mode looking for the higher sample value. It logs a message
9893 for sample-peak (identified by @code{SPK}).
9894 @item true
9895 Enable true-peak mode.
9896
9897 If enabled, the peak lookup is done on an over-sampled version of the input
9898 stream for better peak accuracy. It logs a message for true-peak.
9899 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
9900 This mode requires a build with @code{libswresample}.
9901 @end table
9902
9903 @end table
9904
9905 @subsection Examples
9906
9907 @itemize
9908 @item
9909 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
9910 @example
9911 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
9912 @end example
9913
9914 @item
9915 Run an analysis with @command{ffmpeg}:
9916 @example
9917 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
9918 @end example
9919 @end itemize
9920
9921 @section interleave, ainterleave
9922
9923 Temporally interleave frames from several inputs.
9924
9925 @code{interleave} works with video inputs, @code{ainterleave} with audio.
9926
9927 These filters read frames from several inputs and send the oldest
9928 queued frame to the output.
9929
9930 Input streams must have a well defined, monotonically increasing frame
9931 timestamp values.
9932
9933 In order to submit one frame to output, these filters need to enqueue
9934 at least one frame for each input, so they cannot work in case one
9935 input is not yet terminated and will not receive incoming frames.
9936
9937 For example consider the case when one input is a @code{select} filter
9938 which always drop input frames. The @code{interleave} filter will keep
9939 reading from that input, but it will never be able to send new frames
9940 to output until the input will send an end-of-stream signal.
9941
9942 Also, depending on inputs synchronization, the filters will drop
9943 frames in case one input receives more frames than the other ones, and
9944 the queue is already filled.
9945
9946 These filters accept the following options:
9947
9948 @table @option
9949 @item nb_inputs, n
9950 Set the number of different inputs, it is 2 by default.
9951 @end table
9952
9953 @subsection Examples
9954
9955 @itemize
9956 @item
9957 Interleave frames belonging to different streams using @command{ffmpeg}:
9958 @example
9959 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
9960 @end example
9961
9962 @item
9963 Add flickering blur effect:
9964 @example
9965 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
9966 @end example
9967 @end itemize
9968
9969 @section perms, aperms
9970
9971 Set read/write permissions for the output frames.
9972
9973 These filters are mainly aimed at developers to test direct path in the
9974 following filter in the filtergraph.
9975
9976 The filters accept the following options:
9977
9978 @table @option
9979 @item mode
9980 Select the permissions mode.
9981
9982 It accepts the following values:
9983 @table @samp
9984 @item none
9985 Do nothing. This is the default.
9986 @item ro
9987 Set all the output frames read-only.
9988 @item rw
9989 Set all the output frames directly writable.
9990 @item toggle
9991 Make the frame read-only if writable, and writable if read-only.
9992 @item random
9993 Set each output frame read-only or writable randomly.
9994 @end table
9995
9996 @item seed
9997 Set the seed for the @var{random} mode, must be an integer included between
9998 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
9999 @code{-1}, the filter will try to use a good random seed on a best effort
10000 basis.
10001 @end table
10002
10003 Note: in case of auto-inserted filter between the permission filter and the
10004 following one, the permission might not be received as expected in that
10005 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
10006 perms/aperms filter can avoid this problem.
10007
10008 @section select, aselect
10009
10010 Select frames to pass in output.
10011
10012 This filter accepts the following options:
10013
10014 @table @option
10015
10016 @item expr, e
10017 Set expression, which is evaluated for each input frame.
10018
10019 If the expression is evaluated to zero, the frame is discarded.
10020
10021 If the evaluation result is negative or NaN, the frame is sent to the
10022 first output; otherwise it is sent to the output with index
10023 @code{ceil(val)-1}, assuming that the input index starts from 0.
10024
10025 For example a value of @code{1.2} corresponds to the output with index
10026 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
10027
10028 @item outputs, n
10029 Set the number of outputs. The output to which to send the selected
10030 frame is based on the result of the evaluation. Default value is 1.
10031 @end table
10032
10033 The expression can contain the following constants:
10034
10035 @table @option
10036 @item n
10037 The (sequential) number of the filtered frame, starting from 0.
10038
10039 @item selected_n
10040 The (sequential) number of the selected frame, starting from 0.
10041
10042 @item prev_selected_n
10043 The sequential number of the last selected frame. It's NAN if undefined.
10044
10045 @item TB
10046 The timebase of the input timestamps.
10047
10048 @item pts
10049 The PTS (Presentation TimeStamp) of the filtered video frame,
10050 expressed in @var{TB} units. It's NAN if undefined.
10051
10052 @item t
10053 The PTS of the filtered video frame,
10054 expressed in seconds. It's NAN if undefined.
10055
10056 @item prev_pts
10057 The PTS of the previously filtered video frame. It's NAN if undefined.
10058
10059 @item prev_selected_pts
10060 The PTS of the last previously filtered video frame. It's NAN if undefined.
10061
10062 @item prev_selected_t
10063 The PTS of the last previously selected video frame. It's NAN if undefined.
10064
10065 @item start_pts
10066 The PTS of the first video frame in the video. It's NAN if undefined.
10067
10068 @item start_t
10069 The time of the first video frame in the video. It's NAN if undefined.
10070
10071 @item pict_type @emph{(video only)}
10072 The type of the filtered frame. It can assume one of the following
10073 values:
10074 @table @option
10075 @item I
10076 @item P
10077 @item B
10078 @item S
10079 @item SI
10080 @item SP
10081 @item BI
10082 @end table
10083
10084 @item interlace_type @emph{(video only)}
10085 The frame interlace type. It can assume one of the following values:
10086 @table @option
10087 @item PROGRESSIVE
10088 The frame is progressive (not interlaced).
10089 @item TOPFIRST
10090 The frame is top-field-first.
10091 @item BOTTOMFIRST
10092 The frame is bottom-field-first.
10093 @end table
10094
10095 @item consumed_sample_n @emph{(audio only)}
10096 the number of selected samples before the current frame
10097
10098 @item samples_n @emph{(audio only)}
10099 the number of samples in the current frame
10100
10101 @item sample_rate @emph{(audio only)}
10102 the input sample rate
10103
10104 @item key
10105 This is 1 if the filtered frame is a key-frame, 0 otherwise.
10106
10107 @item pos
10108 the position in the file of the filtered frame, -1 if the information
10109 is not available (e.g. for synthetic video)
10110
10111 @item scene @emph{(video only)}
10112 value between 0 and 1 to indicate a new scene; a low value reflects a low
10113 probability for the current frame to introduce a new scene, while a higher
10114 value means the current frame is more likely to be one (see the example below)
10115
10116 @end table
10117
10118 The default value of the select expression is "1".
10119
10120 @subsection Examples
10121
10122 @itemize
10123 @item
10124 Select all frames in input:
10125 @example
10126 select
10127 @end example
10128
10129 The example above is the same as:
10130 @example
10131 select=1
10132 @end example
10133
10134 @item
10135 Skip all frames:
10136 @example
10137 select=0
10138 @end example
10139
10140 @item
10141 Select only I-frames:
10142 @example
10143 select='eq(pict_type\,I)'
10144 @end example
10145
10146 @item
10147 Select one frame every 100:
10148 @example
10149 select='not(mod(n\,100))'
10150 @end example
10151
10152 @item
10153 Select only frames contained in the 10-20 time interval:
10154 @example
10155 select=between(t\,10\,20)
10156 @end example
10157
10158 @item
10159 Select only I frames contained in the 10-20 time interval:
10160 @example
10161 select=between(t\,10\,20)*eq(pict_type\,I)
10162 @end example
10163
10164 @item
10165 Select frames with a minimum distance of 10 seconds:
10166 @example
10167 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
10168 @end example
10169
10170 @item
10171 Use aselect to select only audio frames with samples number > 100:
10172 @example
10173 aselect='gt(samples_n\,100)'
10174 @end example
10175
10176 @item
10177 Create a mosaic of the first scenes:
10178 @example
10179 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
10180 @end example
10181
10182 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
10183 choice.
10184
10185 @item
10186 Send even and odd frames to separate outputs, and compose them:
10187 @example
10188 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
10189 @end example
10190 @end itemize
10191
10192 @section sendcmd, asendcmd
10193
10194 Send commands to filters in the filtergraph.
10195
10196 These filters read commands to be sent to other filters in the
10197 filtergraph.
10198
10199 @code{sendcmd} must be inserted between two video filters,
10200 @code{asendcmd} must be inserted between two audio filters, but apart
10201 from that they act the same way.
10202
10203 The specification of commands can be provided in the filter arguments
10204 with the @var{commands} option, or in a file specified by the
10205 @var{filename} option.
10206
10207 These filters accept the following options:
10208 @table @option
10209 @item commands, c
10210 Set the commands to be read and sent to the other filters.
10211 @item filename, f
10212 Set the filename of the commands to be read and sent to the other
10213 filters.
10214 @end table
10215
10216 @subsection Commands syntax
10217
10218 A commands description consists of a sequence of interval
10219 specifications, comprising a list of commands to be executed when a
10220 particular event related to that interval occurs. The occurring event
10221 is typically the current frame time entering or leaving a given time
10222 interval.
10223
10224 An interval is specified by the following syntax:
10225 @example
10226 @var{START}[-@var{END}] @var{COMMANDS};
10227 @end example
10228
10229 The time interval is specified by the @var{START} and @var{END} times.
10230 @var{END} is optional and defaults to the maximum time.
10231
10232 The current frame time is considered within the specified interval if
10233 it is included in the interval [@var{START}, @var{END}), that is when
10234 the time is greater or equal to @var{START} and is lesser than
10235 @var{END}.
10236
10237 @var{COMMANDS} consists of a sequence of one or more command
10238 specifications, separated by ",", relating to that interval.  The
10239 syntax of a command specification is given by:
10240 @example
10241 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
10242 @end example
10243
10244 @var{FLAGS} is optional and specifies the type of events relating to
10245 the time interval which enable sending the specified command, and must
10246 be a non-null sequence of identifier flags separated by "+" or "|" and
10247 enclosed between "[" and "]".
10248
10249 The following flags are recognized:
10250 @table @option
10251 @item enter
10252 The command is sent when the current frame timestamp enters the
10253 specified interval. In other words, the command is sent when the
10254 previous frame timestamp was not in the given interval, and the
10255 current is.
10256
10257 @item leave
10258 The command is sent when the current frame timestamp leaves the
10259 specified interval. In other words, the command is sent when the
10260 previous frame timestamp was in the given interval, and the
10261 current is not.
10262 @end table
10263
10264 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
10265 assumed.
10266
10267 @var{TARGET} specifies the target of the command, usually the name of
10268 the filter class or a specific filter instance name.
10269
10270 @var{COMMAND} specifies the name of the command for the target filter.
10271
10272 @var{ARG} is optional and specifies the optional list of argument for
10273 the given @var{COMMAND}.
10274
10275 Between one interval specification and another, whitespaces, or
10276 sequences of characters starting with @code{#} until the end of line,
10277 are ignored and can be used to annotate comments.
10278
10279 A simplified BNF description of the commands specification syntax
10280 follows:
10281 @example
10282 @var{COMMAND_FLAG}  ::= "enter" | "leave"
10283 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
10284 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
10285 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
10286 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
10287 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
10288 @end example
10289
10290 @subsection Examples
10291
10292 @itemize
10293 @item
10294 Specify audio tempo change at second 4:
10295 @example
10296 asendcmd=c='4.0 atempo tempo 1.5',atempo
10297 @end example
10298
10299 @item
10300 Specify a list of drawtext and hue commands in a file.
10301 @example
10302 # show text in the interval 5-10
10303 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
10304          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
10305
10306 # desaturate the image in the interval 15-20
10307 15.0-20.0 [enter] hue s 0,
10308           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
10309           [leave] hue s 1,
10310           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
10311
10312 # apply an exponential saturation fade-out effect, starting from time 25
10313 25 [enter] hue s exp(25-t)
10314 @end example
10315
10316 A filtergraph allowing to read and process the above command list
10317 stored in a file @file{test.cmd}, can be specified with:
10318 @example
10319 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
10320 @end example
10321 @end itemize
10322
10323 @anchor{setpts}
10324 @section setpts, asetpts
10325
10326 Change the PTS (presentation timestamp) of the input frames.
10327
10328 @code{setpts} works on video frames, @code{asetpts} on audio frames.
10329
10330 This filter accepts the following options:
10331
10332 @table @option
10333
10334 @item expr
10335 The expression which is evaluated for each frame to construct its timestamp.
10336
10337 @end table
10338
10339 The expression is evaluated through the eval API and can contain the following
10340 constants:
10341
10342 @table @option
10343 @item FRAME_RATE
10344 frame rate, only defined for constant frame-rate video
10345
10346 @item PTS
10347 The presentation timestamp in input
10348
10349 @item N
10350 The count of the input frame for video or the number of consumed samples,
10351 not including the current frame for audio, starting from 0.
10352
10353 @item NB_CONSUMED_SAMPLES
10354 The number of consumed samples, not including the current frame (only
10355 audio)
10356
10357 @item NB_SAMPLES, S
10358 The number of samples in the current frame (only audio)
10359
10360 @item SAMPLE_RATE, SR
10361 The audio sample rate.
10362
10363 @item STARTPTS
10364 The PTS of the first frame.
10365
10366 @item STARTT
10367 the time in seconds of the first frame
10368
10369 @item INTERLACED
10370 State whether the current frame is interlaced.
10371
10372 @item T
10373 the time in seconds of the current frame
10374
10375 @item POS
10376 original position in the file of the frame, or undefined if undefined
10377 for the current frame
10378
10379 @item PREV_INPTS
10380 The previous input PTS.
10381
10382 @item PREV_INT
10383 previous input time in seconds
10384
10385 @item PREV_OUTPTS
10386 The previous output PTS.
10387
10388 @item PREV_OUTT
10389 previous output time in seconds
10390
10391 @item RTCTIME
10392 The wallclock (RTC) time in microseconds.. This is deprecated, use time(0)
10393 instead.
10394
10395 @item RTCSTART
10396 The wallclock (RTC) time at the start of the movie in microseconds.
10397
10398 @item TB
10399 The timebase of the input timestamps.
10400
10401 @end table
10402
10403 @subsection Examples
10404
10405 @itemize
10406 @item
10407 Start counting PTS from zero
10408 @example
10409 setpts=PTS-STARTPTS
10410 @end example
10411
10412 @item
10413 Apply fast motion effect:
10414 @example
10415 setpts=0.5*PTS
10416 @end example
10417
10418 @item
10419 Apply slow motion effect:
10420 @example
10421 setpts=2.0*PTS
10422 @end example
10423
10424 @item
10425 Set fixed rate of 25 frames per second:
10426 @example
10427 setpts=N/(25*TB)
10428 @end example
10429
10430 @item
10431 Set fixed rate 25 fps with some jitter:
10432 @example
10433 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
10434 @end example
10435
10436 @item
10437 Apply an offset of 10 seconds to the input PTS:
10438 @example
10439 setpts=PTS+10/TB
10440 @end example
10441
10442 @item
10443 Generate timestamps from a "live source" and rebase onto the current timebase:
10444 @example
10445 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
10446 @end example
10447
10448 @item
10449 Generate timestamps by counting samples:
10450 @example
10451 asetpts=N/SR/TB
10452 @end example
10453
10454 @end itemize
10455
10456 @section settb, asettb
10457
10458 Set the timebase to use for the output frames timestamps.
10459 It is mainly useful for testing timebase configuration.
10460
10461 It accepts the following parameters:
10462
10463 @table @option
10464
10465 @item expr, tb
10466 The expression which is evaluated into the output timebase.
10467
10468 @end table
10469
10470 The value for @option{tb} is an arithmetic expression representing a
10471 rational. The expression can contain the constants "AVTB" (the default
10472 timebase), "intb" (the input timebase) and "sr" (the sample rate,
10473 audio only). Default value is "intb".
10474
10475 @subsection Examples
10476
10477 @itemize
10478 @item
10479 Set the timebase to 1/25:
10480 @example
10481 settb=expr=1/25
10482 @end example
10483
10484 @item
10485 Set the timebase to 1/10:
10486 @example
10487 settb=expr=0.1
10488 @end example
10489
10490 @item
10491 Set the timebase to 1001/1000:
10492 @example
10493 settb=1+0.001
10494 @end example
10495
10496 @item
10497 Set the timebase to 2*intb:
10498 @example
10499 settb=2*intb
10500 @end example
10501
10502 @item
10503 Set the default timebase value:
10504 @example
10505 settb=AVTB
10506 @end example
10507 @end itemize
10508
10509 @section showcqt
10510 Convert input audio to a video output representing
10511 frequency spectrum logarithmically (using constant Q transform with
10512 Brown-Puckette algorithm), with musical tone scale, from E0 to D#10 (10 octaves).
10513
10514 The filter accepts the following options:
10515
10516 @table @option
10517 @item volume
10518 Specify transform volume (multiplier) expression. The expression can contain
10519 variables:
10520 @table @option
10521 @item frequency, freq, f
10522 the frequency where transform is evaluated
10523 @item timeclamp, tc
10524 value of timeclamp option
10525 @end table
10526 and functions:
10527 @table @option
10528 @item a_weighting(f)
10529 A-weighting of equal loudness
10530 @item b_weighting(f)
10531 B-weighting of equal loudness
10532 @item c_weighting(f)
10533 C-weighting of equal loudness
10534 @end table
10535 Default value is @code{16}.
10536
10537 @item tlength
10538 Specify transform length expression. The expression can contain variables:
10539 @table @option
10540 @item frequency, freq, f
10541 the frequency where transform is evaluated
10542 @item timeclamp, tc
10543 value of timeclamp option
10544 @end table
10545 Default value is @code{384/f*tc/(384/f+tc)}.
10546
10547 @item timeclamp
10548 Specify the transform timeclamp. At low frequency, there is trade-off between
10549 accuracy in time domain and frequency domain. If timeclamp is lower,
10550 event in time domain is represented more accurately (such as fast bass drum),
10551 otherwise event in frequency domain is represented more accurately
10552 (such as bass guitar). Acceptable value is [0.1, 1.0]. Default value is @code{0.17}.
10553
10554 @item coeffclamp
10555 Specify the transform coeffclamp. If coeffclamp is lower, transform is
10556 more accurate, otherwise transform is faster. Acceptable value is [0.1, 10.0].
10557 Default value is @code{1.0}.
10558
10559 @item gamma
10560 Specify gamma. Lower gamma makes the spectrum more contrast, higher gamma
10561 makes the spectrum having more range. Acceptable value is [1.0, 7.0].
10562 Default value is @code{3.0}.
10563
10564 @item fontfile
10565 Specify font file for use with freetype. If not specified, use embedded font.
10566
10567 @item fullhd
10568 If set to 1 (the default), the video size is 1920x1080 (full HD),
10569 if set to 0, the video size is 960x540. Use this option to make CPU usage lower.
10570
10571 @item fps
10572 Specify video fps. Default value is @code{25}.
10573
10574 @item count
10575 Specify number of transform per frame, so there are fps*count transforms
10576 per second. Note that audio data rate must be divisible by fps*count.
10577 Default value is @code{6}.
10578
10579 @end table
10580
10581 @subsection Examples
10582
10583 @itemize
10584 @item
10585 Playing audio while showing the spectrum:
10586 @example
10587 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
10588 @end example
10589
10590 @item
10591 Same as above, but with frame rate 30 fps:
10592 @example
10593 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
10594 @end example
10595
10596 @item
10597 Playing at 960x540 and lower CPU usage:
10598 @example
10599 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fullhd=0:count=3 [out0]'
10600 @end example
10601
10602 @item
10603 A1 and its harmonics: A1, A2, (near)E3, A3:
10604 @example
10605 ffplay -f lavfi 'aevalsrc=0.1*sin(2*PI*55*t)+0.1*sin(4*PI*55*t)+0.1*sin(6*PI*55*t)+0.1*sin(8*PI*55*t),
10606                  asplit[a][out1]; [a] showcqt [out0]'
10607 @end example
10608
10609 @item
10610 Same as above, but with more accuracy in frequency domain (and slower):
10611 @example
10612 ffplay -f lavfi 'aevalsrc=0.1*sin(2*PI*55*t)+0.1*sin(4*PI*55*t)+0.1*sin(6*PI*55*t)+0.1*sin(8*PI*55*t),
10613                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
10614 @end example
10615
10616 @item
10617 B-weighting of equal loudness
10618 @example
10619 volume=16*b_weighting(f)
10620 @end example
10621
10622 @item
10623 Lower Q factor
10624 @example
10625 tlength=100/f*tc/(100/f+tc)
10626 @end example
10627
10628 @end itemize
10629
10630 @section showspectrum
10631
10632 Convert input audio to a video output, representing the audio frequency
10633 spectrum.
10634
10635 The filter accepts the following options:
10636
10637 @table @option
10638 @item size, s
10639 Specify the video size for the output. For the syntax of this option, check
10640 the "Video size" section in the ffmpeg-utils manual. Default value is
10641 @code{640x512}.
10642
10643 @item slide
10644 Specify if the spectrum should slide along the window. Default value is
10645 @code{0}.
10646
10647 @item mode
10648 Specify display mode.
10649
10650 It accepts the following values:
10651 @table @samp
10652 @item combined
10653 all channels are displayed in the same row
10654 @item separate
10655 all channels are displayed in separate rows
10656 @end table
10657
10658 Default value is @samp{combined}.
10659
10660 @item color
10661 Specify display color mode.
10662
10663 It accepts the following values:
10664 @table @samp
10665 @item channel
10666 each channel is displayed in a separate color
10667 @item intensity
10668 each channel is is displayed using the same color scheme
10669 @end table
10670
10671 Default value is @samp{channel}.
10672
10673 @item scale
10674 Specify scale used for calculating intensity color values.
10675
10676 It accepts the following values:
10677 @table @samp
10678 @item lin
10679 linear
10680 @item sqrt
10681 square root, default
10682 @item cbrt
10683 cubic root
10684 @item log
10685 logarithmic
10686 @end table
10687
10688 Default value is @samp{sqrt}.
10689
10690 @item saturation
10691 Set saturation modifier for displayed colors. Negative values provide
10692 alternative color scheme. @code{0} is no saturation at all.
10693 Saturation must be in [-10.0, 10.0] range.
10694 Default value is @code{1}.
10695
10696 @item win_func
10697 Set window function.
10698
10699 It accepts the following values:
10700 @table @samp
10701 @item none
10702 No samples pre-processing (do not expect this to be faster)
10703 @item hann
10704 Hann window
10705 @item hamming
10706 Hamming window
10707 @item blackman
10708 Blackman window
10709 @end table
10710
10711 Default value is @code{hann}.
10712 @end table
10713
10714 The usage is very similar to the showwaves filter; see the examples in that
10715 section.
10716
10717 @subsection Examples
10718
10719 @itemize
10720 @item
10721 Large window with logarithmic color scaling:
10722 @example
10723 showspectrum=s=1280x480:scale=log
10724 @end example
10725
10726 @item
10727 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
10728 @example
10729 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
10730              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
10731 @end example
10732 @end itemize
10733
10734 @section showwaves
10735
10736 Convert input audio to a video output, representing the samples waves.
10737
10738 The filter accepts the following options:
10739
10740 @table @option
10741 @item size, s
10742 Specify the video size for the output. For the syntax of this option, check
10743 the "Video size" section in the ffmpeg-utils manual. Default value
10744 is "600x240".
10745
10746 @item mode
10747 Set display mode.
10748
10749 Available values are:
10750 @table @samp
10751 @item point
10752 Draw a point for each sample.
10753
10754 @item line
10755 Draw a vertical line for each sample.
10756
10757 @item p2p
10758 Draw a point for each sample and a line between them.
10759 @end table
10760
10761 Default value is @code{point}.
10762
10763 @item n
10764 Set the number of samples which are printed on the same column. A
10765 larger value will decrease the frame rate. Must be a positive
10766 integer. This option can be set only if the value for @var{rate}
10767 is not explicitly specified.
10768
10769 @item rate, r
10770 Set the (approximate) output frame rate. This is done by setting the
10771 option @var{n}. Default value is "25".
10772
10773 @end table
10774
10775 @subsection Examples
10776
10777 @itemize
10778 @item
10779 Output the input file audio and the corresponding video representation
10780 at the same time:
10781 @example
10782 amovie=a.mp3,asplit[out0],showwaves[out1]
10783 @end example
10784
10785 @item
10786 Create a synthetic signal and show it with showwaves, forcing a
10787 frame rate of 30 frames per second:
10788 @example
10789 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
10790 @end example
10791 @end itemize
10792
10793 @section split, asplit
10794
10795 Split input into several identical outputs.
10796
10797 @code{asplit} works with audio input, @code{split} with video.
10798
10799 The filter accepts a single parameter which specifies the number of outputs. If
10800 unspecified, it defaults to 2.
10801
10802 @subsection Examples
10803
10804 @itemize
10805 @item
10806 Create two separate outputs from the same input:
10807 @example
10808 [in] split [out0][out1]
10809 @end example
10810
10811 @item
10812 To create 3 or more outputs, you need to specify the number of
10813 outputs, like in:
10814 @example
10815 [in] asplit=3 [out0][out1][out2]
10816 @end example
10817
10818 @item
10819 Create two separate outputs from the same input, one cropped and
10820 one padded:
10821 @example
10822 [in] split [splitout1][splitout2];
10823 [splitout1] crop=100:100:0:0    [cropout];
10824 [splitout2] pad=200:200:100:100 [padout];
10825 @end example
10826
10827 @item
10828 Create 5 copies of the input audio with @command{ffmpeg}:
10829 @example
10830 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
10831 @end example
10832 @end itemize
10833
10834 @section zmq, azmq
10835
10836 Receive commands sent through a libzmq client, and forward them to
10837 filters in the filtergraph.
10838
10839 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
10840 must be inserted between two video filters, @code{azmq} between two
10841 audio filters.
10842
10843 To enable these filters you need to install the libzmq library and
10844 headers and configure FFmpeg with @code{--enable-libzmq}.
10845
10846 For more information about libzmq see:
10847 @url{http://www.zeromq.org/}
10848
10849 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
10850 receives messages sent through a network interface defined by the
10851 @option{bind_address} option.
10852
10853 The received message must be in the form:
10854 @example
10855 @var{TARGET} @var{COMMAND} [@var{ARG}]
10856 @end example
10857
10858 @var{TARGET} specifies the target of the command, usually the name of
10859 the filter class or a specific filter instance name.
10860
10861 @var{COMMAND} specifies the name of the command for the target filter.
10862
10863 @var{ARG} is optional and specifies the optional argument list for the
10864 given @var{COMMAND}.
10865
10866 Upon reception, the message is processed and the corresponding command
10867 is injected into the filtergraph. Depending on the result, the filter
10868 will send a reply to the client, adopting the format:
10869 @example
10870 @var{ERROR_CODE} @var{ERROR_REASON}
10871 @var{MESSAGE}
10872 @end example
10873
10874 @var{MESSAGE} is optional.
10875
10876 @subsection Examples
10877
10878 Look at @file{tools/zmqsend} for an example of a zmq client which can
10879 be used to send commands processed by these filters.
10880
10881 Consider the following filtergraph generated by @command{ffplay}
10882 @example
10883 ffplay -dumpgraph 1 -f lavfi "
10884 color=s=100x100:c=red  [l];
10885 color=s=100x100:c=blue [r];
10886 nullsrc=s=200x100, zmq [bg];
10887 [bg][l]   overlay      [bg+l];
10888 [bg+l][r] overlay=x=100 "
10889 @end example
10890
10891 To change the color of the left side of the video, the following
10892 command can be used:
10893 @example
10894 echo Parsed_color_0 c yellow | tools/zmqsend
10895 @end example
10896
10897 To change the right side:
10898 @example
10899 echo Parsed_color_1 c pink | tools/zmqsend
10900 @end example
10901
10902 @c man end MULTIMEDIA FILTERS
10903
10904 @chapter Multimedia Sources
10905 @c man begin MULTIMEDIA SOURCES
10906
10907 Below is a description of the currently available multimedia sources.
10908
10909 @section amovie
10910
10911 This is the same as @ref{movie} source, except it selects an audio
10912 stream by default.
10913
10914 @anchor{movie}
10915 @section movie
10916
10917 Read audio and/or video stream(s) from a movie container.
10918
10919 It accepts the following parameters:
10920
10921 @table @option
10922 @item filename
10923 The name of the resource to read (not necessarily a file; it can also be a
10924 device or a stream accessed through some protocol).
10925
10926 @item format_name, f
10927 Specifies the format assumed for the movie to read, and can be either
10928 the name of a container or an input device. If not specified, the
10929 format is guessed from @var{movie_name} or by probing.
10930
10931 @item seek_point, sp
10932 Specifies the seek point in seconds. The frames will be output
10933 starting from this seek point. The parameter is evaluated with
10934 @code{av_strtod}, so the numerical value may be suffixed by an IS
10935 postfix. The default value is "0".
10936
10937 @item streams, s
10938 Specifies the streams to read. Several streams can be specified,
10939 separated by "+". The source will then have as many outputs, in the
10940 same order. The syntax is explained in the ``Stream specifiers''
10941 section in the ffmpeg manual. Two special names, "dv" and "da" specify
10942 respectively the default (best suited) video and audio stream. Default
10943 is "dv", or "da" if the filter is called as "amovie".
10944
10945 @item stream_index, si
10946 Specifies the index of the video stream to read. If the value is -1,
10947 the most suitable video stream will be automatically selected. The default
10948 value is "-1". Deprecated. If the filter is called "amovie", it will select
10949 audio instead of video.
10950
10951 @item loop
10952 Specifies how many times to read the stream in sequence.
10953 If the value is less than 1, the stream will be read again and again.
10954 Default value is "1".
10955
10956 Note that when the movie is looped the source timestamps are not
10957 changed, so it will generate non monotonically increasing timestamps.
10958 @end table
10959
10960 It allows overlaying a second video on top of the main input of
10961 a filtergraph, as shown in this graph:
10962 @example
10963 input -----------> deltapts0 --> overlay --> output
10964                                     ^
10965                                     |
10966 movie --> scale--> deltapts1 -------+
10967 @end example
10968 @subsection Examples
10969
10970 @itemize
10971 @item
10972 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
10973 on top of the input labelled "in":
10974 @example
10975 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
10976 [in] setpts=PTS-STARTPTS [main];
10977 [main][over] overlay=16:16 [out]
10978 @end example
10979
10980 @item
10981 Read from a video4linux2 device, and overlay it on top of the input
10982 labelled "in":
10983 @example
10984 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
10985 [in] setpts=PTS-STARTPTS [main];
10986 [main][over] overlay=16:16 [out]
10987 @end example
10988
10989 @item
10990 Read the first video stream and the audio stream with id 0x81 from
10991 dvd.vob; the video is connected to the pad named "video" and the audio is
10992 connected to the pad named "audio":
10993 @example
10994 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
10995 @end example
10996 @end itemize
10997
10998 @c man end MULTIMEDIA SOURCES