]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
Merge commit '913fa85a2c1fcd71802f7decdef5f355e0d9c757'
[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 and can be extremely slow.
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. Each block is of size
3239 @code{16x16}. Since the filter can be slow, you may want to reduce this value,
3240 at the cost of a less effective filter and the 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 @code{15}.
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 @end table
3258
3259 @subsection Examples
3260
3261 Apply a denoise with a @option{sigma} of @code{4.5}:
3262 @example
3263 dctdnoiz=4.5
3264 @end example
3265
3266 The same operation can be achieved using the expression system:
3267 @example
3268 dctdnoiz=e='gte(c, 4.5*3)'
3269 @end example
3270
3271 @anchor{decimate}
3272 @section decimate
3273
3274 Drop duplicated frames at regular intervals.
3275
3276 The filter accepts the following options:
3277
3278 @table @option
3279 @item cycle
3280 Set the number of frames from which one will be dropped. Setting this to
3281 @var{N} means one frame in every batch of @var{N} frames will be dropped.
3282 Default is @code{5}.
3283
3284 @item dupthresh
3285 Set the threshold for duplicate detection. If the difference metric for a frame
3286 is less than or equal to this value, then it is declared as duplicate. Default
3287 is @code{1.1}
3288
3289 @item scthresh
3290 Set scene change threshold. Default is @code{15}.
3291
3292 @item blockx
3293 @item blocky
3294 Set the size of the x and y-axis blocks used during metric calculations.
3295 Larger blocks give better noise suppression, but also give worse detection of
3296 small movements. Must be a power of two. Default is @code{32}.
3297
3298 @item ppsrc
3299 Mark main input as a pre-processed input and activate clean source input
3300 stream. This allows the input to be pre-processed with various filters to help
3301 the metrics calculation while keeping the frame selection lossless. When set to
3302 @code{1}, the first stream is for the pre-processed input, and the second
3303 stream is the clean source from where the kept frames are chosen. Default is
3304 @code{0}.
3305
3306 @item chroma
3307 Set whether or not chroma is considered in the metric calculations. Default is
3308 @code{1}.
3309 @end table
3310
3311 @section dejudder
3312
3313 Remove judder produced by partially interlaced telecined content.
3314
3315 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
3316 source was partially telecined content then the output of @code{pullup,dejudder}
3317 will have a variable frame rate. May change the recorded frame rate of the
3318 container. Aside from that change, this filter will not affect constant frame
3319 rate video.
3320
3321 The option available in this filter is:
3322 @table @option
3323
3324 @item cycle
3325 Specify the length of the window over which the judder repeats.
3326
3327 Accepts any integer greater than 1. Useful values are:
3328 @table @samp
3329
3330 @item 4
3331 If the original was telecined from 24 to 30 fps (Film to NTSC).
3332
3333 @item 5
3334 If the original was telecined from 25 to 30 fps (PAL to NTSC).
3335
3336 @item 20
3337 If a mixture of the two.
3338 @end table
3339
3340 The default is @samp{4}.
3341 @end table
3342
3343 @section delogo
3344
3345 Suppress a TV station logo by a simple interpolation of the surrounding
3346 pixels. Just set a rectangle covering the logo and watch it disappear
3347 (and sometimes something even uglier appear - your mileage may vary).
3348
3349 It accepts the following parameters:
3350 @table @option
3351
3352 @item x
3353 @item y
3354 Specify the top left corner coordinates of the logo. They must be
3355 specified.
3356
3357 @item w
3358 @item h
3359 Specify the width and height of the logo to clear. They must be
3360 specified.
3361
3362 @item band, t
3363 Specify the thickness of the fuzzy edge of the rectangle (added to
3364 @var{w} and @var{h}). The default value is 4.
3365
3366 @item show
3367 When set to 1, a green rectangle is drawn on the screen to simplify
3368 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
3369 The default value is 0.
3370
3371 The rectangle is drawn on the outermost pixels which will be (partly)
3372 replaced with interpolated values. The values of the next pixels
3373 immediately outside this rectangle in each direction will be used to
3374 compute the interpolated pixel values inside the rectangle.
3375
3376 @end table
3377
3378 @subsection Examples
3379
3380 @itemize
3381 @item
3382 Set a rectangle covering the area with top left corner coordinates 0,0
3383 and size 100x77, and a band of size 10:
3384 @example
3385 delogo=x=0:y=0:w=100:h=77:band=10
3386 @end example
3387
3388 @end itemize
3389
3390 @section deshake
3391
3392 Attempt to fix small changes in horizontal and/or vertical shift. This
3393 filter helps remove camera shake from hand-holding a camera, bumping a
3394 tripod, moving on a vehicle, etc.
3395
3396 The filter accepts the following options:
3397
3398 @table @option
3399
3400 @item x
3401 @item y
3402 @item w
3403 @item h
3404 Specify a rectangular area where to limit the search for motion
3405 vectors.
3406 If desired the search for motion vectors can be limited to a
3407 rectangular area of the frame defined by its top left corner, width
3408 and height. These parameters have the same meaning as the drawbox
3409 filter which can be used to visualise the position of the bounding
3410 box.
3411
3412 This is useful when simultaneous movement of subjects within the frame
3413 might be confused for camera motion by the motion vector search.
3414
3415 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
3416 then the full frame is used. This allows later options to be set
3417 without specifying the bounding box for the motion vector search.
3418
3419 Default - search the whole frame.
3420
3421 @item rx
3422 @item ry
3423 Specify the maximum extent of movement in x and y directions in the
3424 range 0-64 pixels. Default 16.
3425
3426 @item edge
3427 Specify how to generate pixels to fill blanks at the edge of the
3428 frame. Available values are:
3429 @table @samp
3430 @item blank, 0
3431 Fill zeroes at blank locations
3432 @item original, 1
3433 Original image at blank locations
3434 @item clamp, 2
3435 Extruded edge value at blank locations
3436 @item mirror, 3
3437 Mirrored edge at blank locations
3438 @end table
3439 Default value is @samp{mirror}.
3440
3441 @item blocksize
3442 Specify the blocksize to use for motion search. Range 4-128 pixels,
3443 default 8.
3444
3445 @item contrast
3446 Specify the contrast threshold for blocks. Only blocks with more than
3447 the specified contrast (difference between darkest and lightest
3448 pixels) will be considered. Range 1-255, default 125.
3449
3450 @item search
3451 Specify the search strategy. Available values are:
3452 @table @samp
3453 @item exhaustive, 0
3454 Set exhaustive search
3455 @item less, 1
3456 Set less exhaustive search.
3457 @end table
3458 Default value is @samp{exhaustive}.
3459
3460 @item filename
3461 If set then a detailed log of the motion search is written to the
3462 specified file.
3463
3464 @item opencl
3465 If set to 1, specify using OpenCL capabilities, only available if
3466 FFmpeg was configured with @code{--enable-opencl}. Default value is 0.
3467
3468 @end table
3469
3470 @section drawbox
3471
3472 Draw a colored box on the input image.
3473
3474 It accepts the following parameters:
3475
3476 @table @option
3477 @item x
3478 @item y
3479 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
3480
3481 @item width, w
3482 @item height, h
3483 The expressions which specify the width and height of the box; if 0 they are interpreted as
3484 the input width and height. It defaults to 0.
3485
3486 @item color, c
3487 Specify the color of the box to write. For the general syntax of this option,
3488 check the "Color" section in the ffmpeg-utils manual. If the special
3489 value @code{invert} is used, the box edge color is the same as the
3490 video with inverted luma.
3491
3492 @item thickness, t
3493 The expression which sets the thickness of the box edge. Default value is @code{3}.
3494
3495 See below for the list of accepted constants.
3496 @end table
3497
3498 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
3499 following constants:
3500
3501 @table @option
3502 @item dar
3503 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
3504
3505 @item hsub
3506 @item vsub
3507 horizontal and vertical chroma subsample values. For example for the
3508 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
3509
3510 @item in_h, ih
3511 @item in_w, iw
3512 The input width and height.
3513
3514 @item sar
3515 The input sample aspect ratio.
3516
3517 @item x
3518 @item y
3519 The x and y offset coordinates where the box is drawn.
3520
3521 @item w
3522 @item h
3523 The width and height of the drawn box.
3524
3525 @item t
3526 The thickness of the drawn box.
3527
3528 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
3529 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
3530
3531 @end table
3532
3533 @subsection Examples
3534
3535 @itemize
3536 @item
3537 Draw a black box around the edge of the input image:
3538 @example
3539 drawbox
3540 @end example
3541
3542 @item
3543 Draw a box with color red and an opacity of 50%:
3544 @example
3545 drawbox=10:20:200:60:red@@0.5
3546 @end example
3547
3548 The previous example can be specified as:
3549 @example
3550 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
3551 @end example
3552
3553 @item
3554 Fill the box with pink color:
3555 @example
3556 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=max
3557 @end example
3558
3559 @item
3560 Draw a 2-pixel red 2.40:1 mask:
3561 @example
3562 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
3563 @end example
3564 @end itemize
3565
3566 @section drawgrid
3567
3568 Draw a grid on the input image.
3569
3570 It accepts the following parameters:
3571
3572 @table @option
3573 @item x
3574 @item y
3575 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
3576
3577 @item width, w
3578 @item height, h
3579 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
3580 input width and height, respectively, minus @code{thickness}, so image gets
3581 framed. Default to 0.
3582
3583 @item color, c
3584 Specify the color of the grid. For the general syntax of this option,
3585 check the "Color" section in the ffmpeg-utils manual. If the special
3586 value @code{invert} is used, the grid color is the same as the
3587 video with inverted luma.
3588
3589 @item thickness, t
3590 The expression which sets the thickness of the grid line. Default value is @code{1}.
3591
3592 See below for the list of accepted constants.
3593 @end table
3594
3595 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
3596 following constants:
3597
3598 @table @option
3599 @item dar
3600 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
3601
3602 @item hsub
3603 @item vsub
3604 horizontal and vertical chroma subsample values. For example for the
3605 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
3606
3607 @item in_h, ih
3608 @item in_w, iw
3609 The input grid cell width and height.
3610
3611 @item sar
3612 The input sample aspect ratio.
3613
3614 @item x
3615 @item y
3616 The x and y coordinates of some point of grid intersection (meant to configure offset).
3617
3618 @item w
3619 @item h
3620 The width and height of the drawn cell.
3621
3622 @item t
3623 The thickness of the drawn cell.
3624
3625 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
3626 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
3627
3628 @end table
3629
3630 @subsection Examples
3631
3632 @itemize
3633 @item
3634 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
3635 @example
3636 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
3637 @end example
3638
3639 @item
3640 Draw a white 3x3 grid with an opacity of 50%:
3641 @example
3642 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
3643 @end example
3644 @end itemize
3645
3646 @anchor{drawtext}
3647 @section drawtext
3648
3649 Draw a text string or text from a specified file on top of a video, using the
3650 libfreetype library.
3651
3652 To enable compilation of this filter, you need to configure FFmpeg with
3653 @code{--enable-libfreetype}.
3654 To enable default font fallback and the @var{font} option you need to
3655 configure FFmpeg with @code{--enable-libfontconfig}.
3656 To enable the @var{text_shaping} option, you need to configure FFmpeg with
3657 @code{--enable-libfribidi}.
3658
3659 @subsection Syntax
3660
3661 It accepts the following parameters:
3662
3663 @table @option
3664
3665 @item box
3666 Used to draw a box around text using the background color.
3667 The value must be either 1 (enable) or 0 (disable).
3668 The default value of @var{box} is 0.
3669
3670 @item boxcolor
3671 The color to be used for drawing box around text. For the syntax of this
3672 option, check the "Color" section in the ffmpeg-utils manual.
3673
3674 The default value of @var{boxcolor} is "white".
3675
3676 @item borderw
3677 Set the width of the border to be drawn around the text using @var{bordercolor}.
3678 The default value of @var{borderw} is 0.
3679
3680 @item bordercolor
3681 Set the color to be used for drawing border around text. For the syntax of this
3682 option, check the "Color" section in the ffmpeg-utils manual.
3683
3684 The default value of @var{bordercolor} is "black".
3685
3686 @item expansion
3687 Select how the @var{text} is expanded. Can be either @code{none},
3688 @code{strftime} (deprecated) or
3689 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
3690 below for details.
3691
3692 @item fix_bounds
3693 If true, check and fix text coords to avoid clipping.
3694
3695 @item fontcolor
3696 The color to be used for drawing fonts. For the syntax of this option, check
3697 the "Color" section in the ffmpeg-utils manual.
3698
3699 The default value of @var{fontcolor} is "black".
3700
3701 @item fontcolor_expr
3702 String which is expanded the same way as @var{text} to obtain dynamic
3703 @var{fontcolor} value. By default this option has empty value and is not
3704 processed. When this option is set, it overrides @var{fontcolor} option.
3705
3706 @item font
3707 The font family to be used for drawing text. By default Sans.
3708
3709 @item fontfile
3710 The font file to be used for drawing text. The path must be included.
3711 This parameter is mandatory if the fontconfig support is disabled.
3712
3713 @item fontsize
3714 The font size to be used for drawing text.
3715 The default value of @var{fontsize} is 16.
3716
3717 @item text_shaping
3718 If set to 1, attempt to shape the text (for example, reverse the order of
3719 right-to-left text and join Arabic characters) before drawing it.
3720 Otherwise, just draw the text exactly as given.
3721 By default 1 (if supported).
3722
3723 @item ft_load_flags
3724 The flags to be used for loading the fonts.
3725
3726 The flags map the corresponding flags supported by libfreetype, and are
3727 a combination of the following values:
3728 @table @var
3729 @item default
3730 @item no_scale
3731 @item no_hinting
3732 @item render
3733 @item no_bitmap
3734 @item vertical_layout
3735 @item force_autohint
3736 @item crop_bitmap
3737 @item pedantic
3738 @item ignore_global_advance_width
3739 @item no_recurse
3740 @item ignore_transform
3741 @item monochrome
3742 @item linear_design
3743 @item no_autohint
3744 @end table
3745
3746 Default value is "default".
3747
3748 For more information consult the documentation for the FT_LOAD_*
3749 libfreetype flags.
3750
3751 @item shadowcolor
3752 The color to be used for drawing a shadow behind the drawn text. For the
3753 syntax of this option, check the "Color" section in the ffmpeg-utils manual.
3754
3755 The default value of @var{shadowcolor} is "black".
3756
3757 @item shadowx
3758 @item shadowy
3759 The x and y offsets for the text shadow position with respect to the
3760 position of the text. They can be either positive or negative
3761 values. The default value for both is "0".
3762
3763 @item start_number
3764 The starting frame number for the n/frame_num variable. The default value
3765 is "0".
3766
3767 @item tabsize
3768 The size in number of spaces to use for rendering the tab.
3769 Default value is 4.
3770
3771 @item timecode
3772 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
3773 format. It can be used with or without text parameter. @var{timecode_rate}
3774 option must be specified.
3775
3776 @item timecode_rate, rate, r
3777 Set the timecode frame rate (timecode only).
3778
3779 @item text
3780 The text string to be drawn. The text must be a sequence of UTF-8
3781 encoded characters.
3782 This parameter is mandatory if no file is specified with the parameter
3783 @var{textfile}.
3784
3785 @item textfile
3786 A text file containing text to be drawn. The text must be a sequence
3787 of UTF-8 encoded characters.
3788
3789 This parameter is mandatory if no text string is specified with the
3790 parameter @var{text}.
3791
3792 If both @var{text} and @var{textfile} are specified, an error is thrown.
3793
3794 @item reload
3795 If set to 1, the @var{textfile} will be reloaded before each frame.
3796 Be sure to update it atomically, or it may be read partially, or even fail.
3797
3798 @item x
3799 @item y
3800 The expressions which specify the offsets where text will be drawn
3801 within the video frame. They are relative to the top/left border of the
3802 output image.
3803
3804 The default value of @var{x} and @var{y} is "0".
3805
3806 See below for the list of accepted constants and functions.
3807 @end table
3808
3809 The parameters for @var{x} and @var{y} are expressions containing the
3810 following constants and functions:
3811
3812 @table @option
3813 @item dar
3814 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
3815
3816 @item hsub
3817 @item vsub
3818 horizontal and vertical chroma subsample values. For example for the
3819 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
3820
3821 @item line_h, lh
3822 the height of each text line
3823
3824 @item main_h, h, H
3825 the input height
3826
3827 @item main_w, w, W
3828 the input width
3829
3830 @item max_glyph_a, ascent
3831 the maximum distance from the baseline to the highest/upper grid
3832 coordinate used to place a glyph outline point, for all the rendered
3833 glyphs.
3834 It is a positive value, due to the grid's orientation with the Y axis
3835 upwards.
3836
3837 @item max_glyph_d, descent
3838 the maximum distance from the baseline to the lowest grid coordinate
3839 used to place a glyph outline point, for all the rendered glyphs.
3840 This is a negative value, due to the grid's orientation, with the Y axis
3841 upwards.
3842
3843 @item max_glyph_h
3844 maximum glyph height, that is the maximum height for all the glyphs
3845 contained in the rendered text, it is equivalent to @var{ascent} -
3846 @var{descent}.
3847
3848 @item max_glyph_w
3849 maximum glyph width, that is the maximum width for all the glyphs
3850 contained in the rendered text
3851
3852 @item n
3853 the number of input frame, starting from 0
3854
3855 @item rand(min, max)
3856 return a random number included between @var{min} and @var{max}
3857
3858 @item sar
3859 The input sample aspect ratio.
3860
3861 @item t
3862 timestamp expressed in seconds, NAN if the input timestamp is unknown
3863
3864 @item text_h, th
3865 the height of the rendered text
3866
3867 @item text_w, tw
3868 the width of the rendered text
3869
3870 @item x
3871 @item y
3872 the x and y offset coordinates where the text is drawn.
3873
3874 These parameters allow the @var{x} and @var{y} expressions to refer
3875 each other, so you can for example specify @code{y=x/dar}.
3876 @end table
3877
3878 @anchor{drawtext_expansion}
3879 @subsection Text expansion
3880
3881 If @option{expansion} is set to @code{strftime},
3882 the filter recognizes strftime() sequences in the provided text and
3883 expands them accordingly. Check the documentation of strftime(). This
3884 feature is deprecated.
3885
3886 If @option{expansion} is set to @code{none}, the text is printed verbatim.
3887
3888 If @option{expansion} is set to @code{normal} (which is the default),
3889 the following expansion mechanism is used.
3890
3891 The backslash character '\', followed by any character, always expands to
3892 the second character.
3893
3894 Sequence of the form @code{%@{...@}} are expanded. The text between the
3895 braces is a function name, possibly followed by arguments separated by ':'.
3896 If the arguments contain special characters or delimiters (':' or '@}'),
3897 they should be escaped.
3898
3899 Note that they probably must also be escaped as the value for the
3900 @option{text} option in the filter argument string and as the filter
3901 argument in the filtergraph description, and possibly also for the shell,
3902 that makes up to four levels of escaping; using a text file avoids these
3903 problems.
3904
3905 The following functions are available:
3906
3907 @table @command
3908
3909 @item expr, e
3910 The expression evaluation result.
3911
3912 It must take one argument specifying the expression to be evaluated,
3913 which accepts the same constants and functions as the @var{x} and
3914 @var{y} values. Note that not all constants should be used, for
3915 example the text size is not known when evaluating the expression, so
3916 the constants @var{text_w} and @var{text_h} will have an undefined
3917 value.
3918
3919 @item expr_int_format, eif
3920 Evaluate the expression's value and output as formatted integer.
3921
3922 First argument is expression to be evaluated, same as for @var{expr} function.
3923 Second argument specifies output format. Allowed values are 'x', 'X', 'd' and
3924 'u', they are treated exactly as in printf function.
3925 Third parameter is optional and sets the number of positions taken by output.
3926 Effectively this allows to add padding with zeros from the left.
3927
3928 @item gmtime
3929 The time at which the filter is running, expressed in UTC.
3930 It can accept an argument: a strftime() format string.
3931
3932 @item localtime
3933 The time at which the filter is running, expressed in the local time zone.
3934 It can accept an argument: a strftime() format string.
3935
3936 @item metadata
3937 Frame metadata. It must take one argument specifying metadata key.
3938
3939 @item n, frame_num
3940 The frame number, starting from 0.
3941
3942 @item pict_type
3943 A 1 character description of the current picture type.
3944
3945 @item pts
3946 The timestamp of the current frame.
3947 It can take up to two arguments.
3948
3949 The first argument is the format of the timestamp; it defaults to @code{flt}
3950 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
3951 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
3952
3953 The second argument is an offset added to the timestamp.
3954
3955 @end table
3956
3957 @subsection Examples
3958
3959 @itemize
3960 @item
3961 Draw "Test Text" with font FreeSerif, using the default values for the
3962 optional parameters.
3963
3964 @example
3965 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
3966 @end example
3967
3968 @item
3969 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
3970 and y=50 (counting from the top-left corner of the screen), text is
3971 yellow with a red box around it. Both the text and the box have an
3972 opacity of 20%.
3973
3974 @example
3975 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
3976           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
3977 @end example
3978
3979 Note that the double quotes are not necessary if spaces are not used
3980 within the parameter list.
3981
3982 @item
3983 Show the text at the center of the video frame:
3984 @example
3985 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h-line_h)/2"
3986 @end example
3987
3988 @item
3989 Show a text line sliding from right to left in the last row of the video
3990 frame. The file @file{LONG_LINE} is assumed to contain a single line
3991 with no newlines.
3992 @example
3993 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
3994 @end example
3995
3996 @item
3997 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
3998 @example
3999 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
4000 @end example
4001
4002 @item
4003 Draw a single green letter "g", at the center of the input video.
4004 The glyph baseline is placed at half screen height.
4005 @example
4006 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
4007 @end example
4008
4009 @item
4010 Show text for 1 second every 3 seconds:
4011 @example
4012 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
4013 @end example
4014
4015 @item
4016 Use fontconfig to set the font. Note that the colons need to be escaped.
4017 @example
4018 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
4019 @end example
4020
4021 @item
4022 Print the date of a real-time encoding (see strftime(3)):
4023 @example
4024 drawtext='fontfile=FreeSans.ttf:text=%@{localtime:%a %b %d %Y@}'
4025 @end example
4026
4027 @item
4028 Shwo text fading in and out (appearing/disappearing):
4029 @example
4030 #!/bin/sh
4031 DS=1.0 # display start
4032 DE=10.0 # display end
4033 FID=1.5 # fade in duration
4034 FOD=5 # fade out duration
4035 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 @}"
4036 @end example
4037
4038 @end itemize
4039
4040 For more information about libfreetype, check:
4041 @url{http://www.freetype.org/}.
4042
4043 For more information about fontconfig, check:
4044 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
4045
4046 For more information about libfribidi, check:
4047 @url{http://fribidi.org/}.
4048
4049 @section edgedetect
4050
4051 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
4052
4053 The filter accepts the following options:
4054
4055 @table @option
4056 @item low
4057 @item high
4058 Set low and high threshold values used by the Canny thresholding
4059 algorithm.
4060
4061 The high threshold selects the "strong" edge pixels, which are then
4062 connected through 8-connectivity with the "weak" edge pixels selected
4063 by the low threshold.
4064
4065 @var{low} and @var{high} threshold values must be chosen in the range
4066 [0,1], and @var{low} should be lesser or equal to @var{high}.
4067
4068 Default value for @var{low} is @code{20/255}, and default value for @var{high}
4069 is @code{50/255}.
4070
4071 @item mode
4072 Define the drawing mode.
4073
4074 @table @samp
4075 @item wires
4076 Draw white/gray wires on black background.
4077
4078 @item colormix
4079 Mix the colors to create a paint/cartoon effect.
4080 @end table
4081
4082 Default value is @var{wires}.
4083 @end table
4084
4085 @subsection Examples
4086
4087 @itemize
4088 @item
4089 Standard edge detection with custom values for the hysteresis thresholding:
4090 @example
4091 edgedetect=low=0.1:high=0.4
4092 @end example
4093
4094 @item
4095 Painting effect without thresholding:
4096 @example
4097 edgedetect=mode=colormix:high=0
4098 @end example
4099 @end itemize
4100
4101 @section extractplanes
4102
4103 Extract color channel components from input video stream into
4104 separate grayscale video streams.
4105
4106 The filter accepts the following option:
4107
4108 @table @option
4109 @item planes
4110 Set plane(s) to extract.
4111
4112 Available values for planes are:
4113 @table @samp
4114 @item y
4115 @item u
4116 @item v
4117 @item a
4118 @item r
4119 @item g
4120 @item b
4121 @end table
4122
4123 Choosing planes not available in the input will result in an error.
4124 That means you cannot select @code{r}, @code{g}, @code{b} planes
4125 with @code{y}, @code{u}, @code{v} planes at same time.
4126 @end table
4127
4128 @subsection Examples
4129
4130 @itemize
4131 @item
4132 Extract luma, u and v color channel component from input video frame
4133 into 3 grayscale outputs:
4134 @example
4135 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
4136 @end example
4137 @end itemize
4138
4139 @section elbg
4140
4141 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
4142
4143 For each input image, the filter will compute the optimal mapping from
4144 the input to the output given the codebook length, that is the number
4145 of distinct output colors.
4146
4147 This filter accepts the following options.
4148
4149 @table @option
4150 @item codebook_length, l
4151 Set codebook length. The value must be a positive integer, and
4152 represents the number of distinct output colors. Default value is 256.
4153
4154 @item nb_steps, n
4155 Set the maximum number of iterations to apply for computing the optimal
4156 mapping. The higher the value the better the result and the higher the
4157 computation time. Default value is 1.
4158
4159 @item seed, s
4160 Set a random seed, must be an integer included between 0 and
4161 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
4162 will try to use a good random seed on a best effort basis.
4163 @end table
4164
4165 @section fade
4166
4167 Apply a fade-in/out effect to the input video.
4168
4169 It accepts the following parameters:
4170
4171 @table @option
4172 @item type, t
4173 The effect type can be either "in" for a fade-in, or "out" for a fade-out
4174 effect.
4175 Default is @code{in}.
4176
4177 @item start_frame, s
4178 Specify the number of the frame to start applying the fade
4179 effect at. Default is 0.
4180
4181 @item nb_frames, n
4182 The number of frames that the fade effect lasts. At the end of the
4183 fade-in effect, the output video will have the same intensity as the input video.
4184 At the end of the fade-out transition, the output video will be filled with the
4185 selected @option{color}.
4186 Default is 25.
4187
4188 @item alpha
4189 If set to 1, fade only alpha channel, if one exists on the input.
4190 Default value is 0.
4191
4192 @item start_time, st
4193 Specify the timestamp (in seconds) of the frame to start to apply the fade
4194 effect. If both start_frame and start_time are specified, the fade will start at
4195 whichever comes last.  Default is 0.
4196
4197 @item duration, d
4198 The number of seconds for which the fade effect has to last. At the end of the
4199 fade-in effect the output video will have the same intensity as the input video,
4200 at the end of the fade-out transition the output video will be filled with the
4201 selected @option{color}.
4202 If both duration and nb_frames are specified, duration is used. Default is 0.
4203
4204 @item color, c
4205 Specify the color of the fade. Default is "black".
4206 @end table
4207
4208 @subsection Examples
4209
4210 @itemize
4211 @item
4212 Fade in the first 30 frames of video:
4213 @example
4214 fade=in:0:30
4215 @end example
4216
4217 The command above is equivalent to:
4218 @example
4219 fade=t=in:s=0:n=30
4220 @end example
4221
4222 @item
4223 Fade out the last 45 frames of a 200-frame video:
4224 @example
4225 fade=out:155:45
4226 fade=type=out:start_frame=155:nb_frames=45
4227 @end example
4228
4229 @item
4230 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
4231 @example
4232 fade=in:0:25, fade=out:975:25
4233 @end example
4234
4235 @item
4236 Make the first 5 frames yellow, then fade in from frame 5-24:
4237 @example
4238 fade=in:5:20:color=yellow
4239 @end example
4240
4241 @item
4242 Fade in alpha over first 25 frames of video:
4243 @example
4244 fade=in:0:25:alpha=1
4245 @end example
4246
4247 @item
4248 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
4249 @example
4250 fade=t=in:st=5.5:d=0.5
4251 @end example
4252
4253 @end itemize
4254
4255 @section field
4256
4257 Extract a single field from an interlaced image using stride
4258 arithmetic to avoid wasting CPU time. The output frames are marked as
4259 non-interlaced.
4260
4261 The filter accepts the following options:
4262
4263 @table @option
4264 @item type
4265 Specify whether to extract the top (if the value is @code{0} or
4266 @code{top}) or the bottom field (if the value is @code{1} or
4267 @code{bottom}).
4268 @end table
4269
4270 @section fieldmatch
4271
4272 Field matching filter for inverse telecine. It is meant to reconstruct the
4273 progressive frames from a telecined stream. The filter does not drop duplicated
4274 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
4275 followed by a decimation filter such as @ref{decimate} in the filtergraph.
4276
4277 The separation of the field matching and the decimation is notably motivated by
4278 the possibility of inserting a de-interlacing filter fallback between the two.
4279 If the source has mixed telecined and real interlaced content,
4280 @code{fieldmatch} will not be able to match fields for the interlaced parts.
4281 But these remaining combed frames will be marked as interlaced, and thus can be
4282 de-interlaced by a later filter such as @ref{yadif} before decimation.
4283
4284 In addition to the various configuration options, @code{fieldmatch} can take an
4285 optional second stream, activated through the @option{ppsrc} option. If
4286 enabled, the frames reconstruction will be based on the fields and frames from
4287 this second stream. This allows the first input to be pre-processed in order to
4288 help the various algorithms of the filter, while keeping the output lossless
4289 (assuming the fields are matched properly). Typically, a field-aware denoiser,
4290 or brightness/contrast adjustments can help.
4291
4292 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
4293 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
4294 which @code{fieldmatch} is based on. While the semantic and usage are very
4295 close, some behaviour and options names can differ.
4296
4297 The filter accepts the following options:
4298
4299 @table @option
4300 @item order
4301 Specify the assumed field order of the input stream. Available values are:
4302
4303 @table @samp
4304 @item auto
4305 Auto detect parity (use FFmpeg's internal parity value).
4306 @item bff
4307 Assume bottom field first.
4308 @item tff
4309 Assume top field first.
4310 @end table
4311
4312 Note that it is sometimes recommended not to trust the parity announced by the
4313 stream.
4314
4315 Default value is @var{auto}.
4316
4317 @item mode
4318 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
4319 sense that it won't risk creating jerkiness due to duplicate frames when
4320 possible, but if there are bad edits or blended fields it will end up
4321 outputting combed frames when a good match might actually exist. On the other
4322 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
4323 but will almost always find a good frame if there is one. The other values are
4324 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
4325 jerkiness and creating duplicate frames versus finding good matches in sections
4326 with bad edits, orphaned fields, blended fields, etc.
4327
4328 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
4329
4330 Available values are:
4331
4332 @table @samp
4333 @item pc
4334 2-way matching (p/c)
4335 @item pc_n
4336 2-way matching, and trying 3rd match if still combed (p/c + n)
4337 @item pc_u
4338 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
4339 @item pc_n_ub
4340 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
4341 still combed (p/c + n + u/b)
4342 @item pcn
4343 3-way matching (p/c/n)
4344 @item pcn_ub
4345 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
4346 detected as combed (p/c/n + u/b)
4347 @end table
4348
4349 The parenthesis at the end indicate the matches that would be used for that
4350 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
4351 @var{top}).
4352
4353 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
4354 the slowest.
4355
4356 Default value is @var{pc_n}.
4357
4358 @item ppsrc
4359 Mark the main input stream as a pre-processed input, and enable the secondary
4360 input stream as the clean source to pick the fields from. See the filter
4361 introduction for more details. It is similar to the @option{clip2} feature from
4362 VFM/TFM.
4363
4364 Default value is @code{0} (disabled).
4365
4366 @item field
4367 Set the field to match from. It is recommended to set this to the same value as
4368 @option{order} unless you experience matching failures with that setting. In
4369 certain circumstances changing the field that is used to match from can have a
4370 large impact on matching performance. Available values are:
4371
4372 @table @samp
4373 @item auto
4374 Automatic (same value as @option{order}).
4375 @item bottom
4376 Match from the bottom field.
4377 @item top
4378 Match from the top field.
4379 @end table
4380
4381 Default value is @var{auto}.
4382
4383 @item mchroma
4384 Set whether or not chroma is included during the match comparisons. In most
4385 cases it is recommended to leave this enabled. You should set this to @code{0}
4386 only if your clip has bad chroma problems such as heavy rainbowing or other
4387 artifacts. Setting this to @code{0} could also be used to speed things up at
4388 the cost of some accuracy.
4389
4390 Default value is @code{1}.
4391
4392 @item y0
4393 @item y1
4394 These define an exclusion band which excludes the lines between @option{y0} and
4395 @option{y1} from being included in the field matching decision. An exclusion
4396 band can be used to ignore subtitles, a logo, or other things that may
4397 interfere with the matching. @option{y0} sets the starting scan line and
4398 @option{y1} sets the ending line; all lines in between @option{y0} and
4399 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
4400 @option{y0} and @option{y1} to the same value will disable the feature.
4401 @option{y0} and @option{y1} defaults to @code{0}.
4402
4403 @item scthresh
4404 Set the scene change detection threshold as a percentage of maximum change on
4405 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
4406 detection is only relevant in case @option{combmatch}=@var{sc}.  The range for
4407 @option{scthresh} is @code{[0.0, 100.0]}.
4408
4409 Default value is @code{12.0}.
4410
4411 @item combmatch
4412 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
4413 account the combed scores of matches when deciding what match to use as the
4414 final match. Available values are:
4415
4416 @table @samp
4417 @item none
4418 No final matching based on combed scores.
4419 @item sc
4420 Combed scores are only used when a scene change is detected.
4421 @item full
4422 Use combed scores all the time.
4423 @end table
4424
4425 Default is @var{sc}.
4426
4427 @item combdbg
4428 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
4429 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
4430 Available values are:
4431
4432 @table @samp
4433 @item none
4434 No forced calculation.
4435 @item pcn
4436 Force p/c/n calculations.
4437 @item pcnub
4438 Force p/c/n/u/b calculations.
4439 @end table
4440
4441 Default value is @var{none}.
4442
4443 @item cthresh
4444 This is the area combing threshold used for combed frame detection. This
4445 essentially controls how "strong" or "visible" combing must be to be detected.
4446 Larger values mean combing must be more visible and smaller values mean combing
4447 can be less visible or strong and still be detected. Valid settings are from
4448 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
4449 be detected as combed). This is basically a pixel difference value. A good
4450 range is @code{[8, 12]}.
4451
4452 Default value is @code{9}.
4453
4454 @item chroma
4455 Sets whether or not chroma is considered in the combed frame decision.  Only
4456 disable this if your source has chroma problems (rainbowing, etc.) that are
4457 causing problems for the combed frame detection with chroma enabled. Actually,
4458 using @option{chroma}=@var{0} is usually more reliable, except for the case
4459 where there is chroma only combing in the source.
4460
4461 Default value is @code{0}.
4462
4463 @item blockx
4464 @item blocky
4465 Respectively set the x-axis and y-axis size of the window used during combed
4466 frame detection. This has to do with the size of the area in which
4467 @option{combpel} pixels are required to be detected as combed for a frame to be
4468 declared combed. See the @option{combpel} parameter description for more info.
4469 Possible values are any number that is a power of 2 starting at 4 and going up
4470 to 512.
4471
4472 Default value is @code{16}.
4473
4474 @item combpel
4475 The number of combed pixels inside any of the @option{blocky} by
4476 @option{blockx} size blocks on the frame for the frame to be detected as
4477 combed. While @option{cthresh} controls how "visible" the combing must be, this
4478 setting controls "how much" combing there must be in any localized area (a
4479 window defined by the @option{blockx} and @option{blocky} settings) on the
4480 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
4481 which point no frames will ever be detected as combed). This setting is known
4482 as @option{MI} in TFM/VFM vocabulary.
4483
4484 Default value is @code{80}.
4485 @end table
4486
4487 @anchor{p/c/n/u/b meaning}
4488 @subsection p/c/n/u/b meaning
4489
4490 @subsubsection p/c/n
4491
4492 We assume the following telecined stream:
4493
4494 @example
4495 Top fields:     1 2 2 3 4
4496 Bottom fields:  1 2 3 4 4
4497 @end example
4498
4499 The numbers correspond to the progressive frame the fields relate to. Here, the
4500 first two frames are progressive, the 3rd and 4th are combed, and so on.
4501
4502 When @code{fieldmatch} is configured to run a matching from bottom
4503 (@option{field}=@var{bottom}) this is how this input stream get transformed:
4504
4505 @example
4506 Input stream:
4507                 T     1 2 2 3 4
4508                 B     1 2 3 4 4   <-- matching reference
4509
4510 Matches:              c c n n c
4511
4512 Output stream:
4513                 T     1 2 3 4 4
4514                 B     1 2 3 4 4
4515 @end example
4516
4517 As a result of the field matching, we can see that some frames get duplicated.
4518 To perform a complete inverse telecine, you need to rely on a decimation filter
4519 after this operation. See for instance the @ref{decimate} filter.
4520
4521 The same operation now matching from top fields (@option{field}=@var{top})
4522 looks like this:
4523
4524 @example
4525 Input stream:
4526                 T     1 2 2 3 4   <-- matching reference
4527                 B     1 2 3 4 4
4528
4529 Matches:              c c p p c
4530
4531 Output stream:
4532                 T     1 2 2 3 4
4533                 B     1 2 2 3 4
4534 @end example
4535
4536 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
4537 basically, they refer to the frame and field of the opposite parity:
4538
4539 @itemize
4540 @item @var{p} matches the field of the opposite parity in the previous frame
4541 @item @var{c} matches the field of the opposite parity in the current frame
4542 @item @var{n} matches the field of the opposite parity in the next frame
4543 @end itemize
4544
4545 @subsubsection u/b
4546
4547 The @var{u} and @var{b} matching are a bit special in the sense that they match
4548 from the opposite parity flag. In the following examples, we assume that we are
4549 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
4550 'x' is placed above and below each matched fields.
4551
4552 With bottom matching (@option{field}=@var{bottom}):
4553 @example
4554 Match:           c         p           n          b          u
4555
4556                  x       x               x        x          x
4557   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
4558   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
4559                  x         x           x        x              x
4560
4561 Output frames:
4562                  2          1          2          2          2
4563                  2          2          2          1          3
4564 @end example
4565
4566 With top matching (@option{field}=@var{top}):
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          2          2          1          2
4577                  2          1          3          2          2
4578 @end example
4579
4580 @subsection Examples
4581
4582 Simple IVTC of a top field first telecined stream:
4583 @example
4584 fieldmatch=order=tff:combmatch=none, decimate
4585 @end example
4586
4587 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
4588 @example
4589 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
4590 @end example
4591
4592 @section fieldorder
4593
4594 Transform the field order of the input video.
4595
4596 It accepts the following parameters:
4597
4598 @table @option
4599
4600 @item order
4601 The output field order. Valid values are @var{tff} for top field first or @var{bff}
4602 for bottom field first.
4603 @end table
4604
4605 The default value is @samp{tff}.
4606
4607 The transformation is done by shifting the picture content up or down
4608 by one line, and filling the remaining line with appropriate picture content.
4609 This method is consistent with most broadcast field order converters.
4610
4611 If the input video is not flagged as being interlaced, or it is already
4612 flagged as being of the required output field order, then this filter does
4613 not alter the incoming video.
4614
4615 It is very useful when converting to or from PAL DV material,
4616 which is bottom field first.
4617
4618 For example:
4619 @example
4620 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
4621 @end example
4622
4623 @section fifo
4624
4625 Buffer input images and send them when they are requested.
4626
4627 It is mainly useful when auto-inserted by the libavfilter
4628 framework.
4629
4630 It does not take parameters.
4631
4632 @anchor{format}
4633 @section format
4634
4635 Convert the input video to one of the specified pixel formats.
4636 Libavfilter will try to pick one that is suitable as input to
4637 the next filter.
4638
4639 It accepts the following parameters:
4640 @table @option
4641
4642 @item pix_fmts
4643 A '|'-separated list of pixel format names, such as
4644 "pix_fmts=yuv420p|monow|rgb24".
4645
4646 @end table
4647
4648 @subsection Examples
4649
4650 @itemize
4651 @item
4652 Convert the input video to the @var{yuv420p} format
4653 @example
4654 format=pix_fmts=yuv420p
4655 @end example
4656
4657 Convert the input video to any of the formats in the list
4658 @example
4659 format=pix_fmts=yuv420p|yuv444p|yuv410p
4660 @end example
4661 @end itemize
4662
4663 @anchor{fps}
4664 @section fps
4665
4666 Convert the video to specified constant frame rate by duplicating or dropping
4667 frames as necessary.
4668
4669 It accepts the following parameters:
4670 @table @option
4671
4672 @item fps
4673 The desired output frame rate. The default is @code{25}.
4674
4675 @item round
4676 Rounding method.
4677
4678 Possible values are:
4679 @table @option
4680 @item zero
4681 zero round towards 0
4682 @item inf
4683 round away from 0
4684 @item down
4685 round towards -infinity
4686 @item up
4687 round towards +infinity
4688 @item near
4689 round to nearest
4690 @end table
4691 The default is @code{near}.
4692
4693 @item start_time
4694 Assume the first PTS should be the given value, in seconds. This allows for
4695 padding/trimming at the start of stream. By default, no assumption is made
4696 about the first frame's expected PTS, so no padding or trimming is done.
4697 For example, this could be set to 0 to pad the beginning with duplicates of
4698 the first frame if a video stream starts after the audio stream or to trim any
4699 frames with a negative PTS.
4700
4701 @end table
4702
4703 Alternatively, the options can be specified as a flat string:
4704 @var{fps}[:@var{round}].
4705
4706 See also the @ref{setpts} filter.
4707
4708 @subsection Examples
4709
4710 @itemize
4711 @item
4712 A typical usage in order to set the fps to 25:
4713 @example
4714 fps=fps=25
4715 @end example
4716
4717 @item
4718 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
4719 @example
4720 fps=fps=film:round=near
4721 @end example
4722 @end itemize
4723
4724 @section framepack
4725
4726 Pack two different video streams into a stereoscopic video, setting proper
4727 metadata on supported codecs. The two views should have the same size and
4728 framerate and processing will stop when the shorter video ends. Please note
4729 that you may conveniently adjust view properties with the @ref{scale} and
4730 @ref{fps} filters.
4731
4732 It accepts the following parameters:
4733 @table @option
4734
4735 @item format
4736 The desired packing format. Supported values are:
4737
4738 @table @option
4739
4740 @item sbs
4741 The views are next to each other (default).
4742
4743 @item tab
4744 The views are on top of each other.
4745
4746 @item lines
4747 The views are packed by line.
4748
4749 @item columns
4750 The views are packed by column.
4751
4752 @item frameseq
4753 The views are temporally interleaved.
4754
4755 @end table
4756
4757 @end table
4758
4759 Some examples:
4760
4761 @example
4762 # Convert left and right views into a frame-sequential video
4763 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
4764
4765 # Convert views into a side-by-side video with the same output resolution as the input
4766 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
4767 @end example
4768
4769 @section framestep
4770
4771 Select one frame every N-th frame.
4772
4773 This filter accepts the following option:
4774 @table @option
4775 @item step
4776 Select frame after every @code{step} frames.
4777 Allowed values are positive integers higher than 0. Default value is @code{1}.
4778 @end table
4779
4780 @anchor{frei0r}
4781 @section frei0r
4782
4783 Apply a frei0r effect to the input video.
4784
4785 To enable the compilation of this filter, you need to install the frei0r
4786 header and configure FFmpeg with @code{--enable-frei0r}.
4787
4788 It accepts the following parameters:
4789
4790 @table @option
4791
4792 @item filter_name
4793 The name of the frei0r effect to load. If the environment variable
4794 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
4795 directories specified by the colon-separated list in @env{FREIOR_PATH}.
4796 Otherwise, the standard frei0r paths are searched, in this order:
4797 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
4798 @file{/usr/lib/frei0r-1/}.
4799
4800 @item filter_params
4801 A '|'-separated list of parameters to pass to the frei0r effect.
4802
4803 @end table
4804
4805 A frei0r effect parameter can be a boolean (its value is either
4806 "y" or "n"), a double, a color (specified as
4807 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
4808 numbers between 0.0 and 1.0, inclusive) or by a color description specified in the "Color"
4809 section in the ffmpeg-utils manual), a position (specified as @var{X}/@var{Y}, where
4810 @var{X} and @var{Y} are floating point numbers) and/or a string.
4811
4812 The number and types of parameters depend on the loaded effect. If an
4813 effect parameter is not specified, the default value is set.
4814
4815 @subsection Examples
4816
4817 @itemize
4818 @item
4819 Apply the distort0r effect, setting the first two double parameters:
4820 @example
4821 frei0r=filter_name=distort0r:filter_params=0.5|0.01
4822 @end example
4823
4824 @item
4825 Apply the colordistance effect, taking a color as the first parameter:
4826 @example
4827 frei0r=colordistance:0.2/0.3/0.4
4828 frei0r=colordistance:violet
4829 frei0r=colordistance:0x112233
4830 @end example
4831
4832 @item
4833 Apply the perspective effect, specifying the top left and top right image
4834 positions:
4835 @example
4836 frei0r=perspective:0.2/0.2|0.8/0.2
4837 @end example
4838 @end itemize
4839
4840 For more information, see
4841 @url{http://frei0r.dyne.org}
4842
4843 @section geq
4844
4845 The filter accepts the following options:
4846
4847 @table @option
4848 @item lum_expr, lum
4849 Set the luminance expression.
4850 @item cb_expr, cb
4851 Set the chrominance blue expression.
4852 @item cr_expr, cr
4853 Set the chrominance red expression.
4854 @item alpha_expr, a
4855 Set the alpha expression.
4856 @item red_expr, r
4857 Set the red expression.
4858 @item green_expr, g
4859 Set the green expression.
4860 @item blue_expr, b
4861 Set the blue expression.
4862 @end table
4863
4864 The colorspace is selected according to the specified options. If one
4865 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
4866 options is specified, the filter will automatically select a YCbCr
4867 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
4868 @option{blue_expr} options is specified, it will select an RGB
4869 colorspace.
4870
4871 If one of the chrominance expression is not defined, it falls back on the other
4872 one. If no alpha expression is specified it will evaluate to opaque value.
4873 If none of chrominance expressions are specified, they will evaluate
4874 to the luminance expression.
4875
4876 The expressions can use the following variables and functions:
4877
4878 @table @option
4879 @item N
4880 The sequential number of the filtered frame, starting from @code{0}.
4881
4882 @item X
4883 @item Y
4884 The coordinates of the current sample.
4885
4886 @item W
4887 @item H
4888 The width and height of the image.
4889
4890 @item SW
4891 @item SH
4892 Width and height scale depending on the currently filtered plane. It is the
4893 ratio between the corresponding luma plane number of pixels and the current
4894 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
4895 @code{0.5,0.5} for chroma planes.
4896
4897 @item T
4898 Time of the current frame, expressed in seconds.
4899
4900 @item p(x, y)
4901 Return the value of the pixel at location (@var{x},@var{y}) of the current
4902 plane.
4903
4904 @item lum(x, y)
4905 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
4906 plane.
4907
4908 @item cb(x, y)
4909 Return the value of the pixel at location (@var{x},@var{y}) of the
4910 blue-difference chroma plane. Return 0 if there is no such plane.
4911
4912 @item cr(x, y)
4913 Return the value of the pixel at location (@var{x},@var{y}) of the
4914 red-difference chroma plane. Return 0 if there is no such plane.
4915
4916 @item r(x, y)
4917 @item g(x, y)
4918 @item b(x, y)
4919 Return the value of the pixel at location (@var{x},@var{y}) of the
4920 red/green/blue component. Return 0 if there is no such component.
4921
4922 @item alpha(x, y)
4923 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
4924 plane. Return 0 if there is no such plane.
4925 @end table
4926
4927 For functions, if @var{x} and @var{y} are outside the area, the value will be
4928 automatically clipped to the closer edge.
4929
4930 @subsection Examples
4931
4932 @itemize
4933 @item
4934 Flip the image horizontally:
4935 @example
4936 geq=p(W-X\,Y)
4937 @end example
4938
4939 @item
4940 Generate a bidimensional sine wave, with angle @code{PI/3} and a
4941 wavelength of 100 pixels:
4942 @example
4943 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
4944 @end example
4945
4946 @item
4947 Generate a fancy enigmatic moving light:
4948 @example
4949 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
4950 @end example
4951
4952 @item
4953 Generate a quick emboss effect:
4954 @example
4955 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
4956 @end example
4957
4958 @item
4959 Modify RGB components depending on pixel position:
4960 @example
4961 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
4962 @end example
4963 @end itemize
4964
4965 @section gradfun
4966
4967 Fix the banding artifacts that are sometimes introduced into nearly flat
4968 regions by truncation to 8bit color depth.
4969 Interpolate the gradients that should go where the bands are, and
4970 dither them.
4971
4972 It is designed for playback only.  Do not use it prior to
4973 lossy compression, because compression tends to lose the dither and
4974 bring back the bands.
4975
4976 It accepts the following parameters:
4977
4978 @table @option
4979
4980 @item strength
4981 The maximum amount by which the filter will change any one pixel. This is also
4982 the threshold for detecting nearly flat regions. Acceptable values range from
4983 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
4984 valid range.
4985
4986 @item radius
4987 The neighborhood to fit the gradient to. A larger radius makes for smoother
4988 gradients, but also prevents the filter from modifying the pixels near detailed
4989 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
4990 values will be clipped to the valid range.
4991
4992 @end table
4993
4994 Alternatively, the options can be specified as a flat string:
4995 @var{strength}[:@var{radius}]
4996
4997 @subsection Examples
4998
4999 @itemize
5000 @item
5001 Apply the filter with a @code{3.5} strength and radius of @code{8}:
5002 @example
5003 gradfun=3.5:8
5004 @end example
5005
5006 @item
5007 Specify radius, omitting the strength (which will fall-back to the default
5008 value):
5009 @example
5010 gradfun=radius=8
5011 @end example
5012
5013 @end itemize
5014
5015 @anchor{haldclut}
5016 @section haldclut
5017
5018 Apply a Hald CLUT to a video stream.
5019
5020 First input is the video stream to process, and second one is the Hald CLUT.
5021 The Hald CLUT input can be a simple picture or a complete video stream.
5022
5023 The filter accepts the following options:
5024
5025 @table @option
5026 @item shortest
5027 Force termination when the shortest input terminates. Default is @code{0}.
5028 @item repeatlast
5029 Continue applying the last CLUT after the end of the stream. A value of
5030 @code{0} disable the filter after the last frame of the CLUT is reached.
5031 Default is @code{1}.
5032 @end table
5033
5034 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
5035 filters share the same internals).
5036
5037 More information about the Hald CLUT can be found on Eskil Steenberg's website
5038 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
5039
5040 @subsection Workflow examples
5041
5042 @subsubsection Hald CLUT video stream
5043
5044 Generate an identity Hald CLUT stream altered with various effects:
5045 @example
5046 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
5047 @end example
5048
5049 Note: make sure you use a lossless codec.
5050
5051 Then use it with @code{haldclut} to apply it on some random stream:
5052 @example
5053 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
5054 @end example
5055
5056 The Hald CLUT will be applied to the 10 first seconds (duration of
5057 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
5058 to the remaining frames of the @code{mandelbrot} stream.
5059
5060 @subsubsection Hald CLUT with preview
5061
5062 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
5063 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
5064 biggest possible square starting at the top left of the picture. The remaining
5065 padding pixels (bottom or right) will be ignored. This area can be used to add
5066 a preview of the Hald CLUT.
5067
5068 Typically, the following generated Hald CLUT will be supported by the
5069 @code{haldclut} filter:
5070
5071 @example
5072 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
5073    pad=iw+320 [padded_clut];
5074    smptebars=s=320x256, split [a][b];
5075    [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
5076    [main][b] overlay=W-320" -frames:v 1 clut.png
5077 @end example
5078
5079 It contains the original and a preview of the effect of the CLUT: SMPTE color
5080 bars are displayed on the right-top, and below the same color bars processed by
5081 the color changes.
5082
5083 Then, the effect of this Hald CLUT can be visualized with:
5084 @example
5085 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
5086 @end example
5087
5088 @section hflip
5089
5090 Flip the input video horizontally.
5091
5092 For example, to horizontally flip the input video with @command{ffmpeg}:
5093 @example
5094 ffmpeg -i in.avi -vf "hflip" out.avi
5095 @end example
5096
5097 @section histeq
5098 This filter applies a global color histogram equalization on a
5099 per-frame basis.
5100
5101 It can be used to correct video that has a compressed range of pixel
5102 intensities.  The filter redistributes the pixel intensities to
5103 equalize their distribution across the intensity range. It may be
5104 viewed as an "automatically adjusting contrast filter". This filter is
5105 useful only for correcting degraded or poorly captured source
5106 video.
5107
5108 The filter accepts the following options:
5109
5110 @table @option
5111 @item strength
5112 Determine the amount of equalization to be applied.  As the strength
5113 is reduced, the distribution of pixel intensities more-and-more
5114 approaches that of the input frame. The value must be a float number
5115 in the range [0,1] and defaults to 0.200.
5116
5117 @item intensity
5118 Set the maximum intensity that can generated and scale the output
5119 values appropriately.  The strength should be set as desired and then
5120 the intensity can be limited if needed to avoid washing-out. The value
5121 must be a float number in the range [0,1] and defaults to 0.210.
5122
5123 @item antibanding
5124 Set the antibanding level. If enabled the filter will randomly vary
5125 the luminance of output pixels by a small amount to avoid banding of
5126 the histogram. Possible values are @code{none}, @code{weak} or
5127 @code{strong}. It defaults to @code{none}.
5128 @end table
5129
5130 @section histogram
5131
5132 Compute and draw a color distribution histogram for the input video.
5133
5134 The computed histogram is a representation of the color component
5135 distribution in an image.
5136
5137 The filter accepts the following options:
5138
5139 @table @option
5140 @item mode
5141 Set histogram mode.
5142
5143 It accepts the following values:
5144 @table @samp
5145 @item levels
5146 Standard histogram that displays the color components distribution in an
5147 image. Displays color graph for each color component. Shows distribution of
5148 the Y, U, V, A or R, G, B components, depending on input format, in the
5149 current frame. Below each graph a color component scale meter is shown.
5150
5151 @item color
5152 Displays chroma values (U/V color placement) in a two dimensional
5153 graph (which is called a vectorscope). The brighter a pixel in the
5154 vectorscope, the more pixels of the input frame correspond to that pixel
5155 (i.e., more pixels have this chroma value). The V component is displayed on
5156 the horizontal (X) axis, with the leftmost side being V = 0 and the rightmost
5157 side being V = 255. The U component is displayed on the vertical (Y) axis,
5158 with the top representing U = 0 and the bottom representing U = 255.
5159
5160 The position of a white pixel in the graph corresponds to the chroma value of
5161 a pixel of the input clip. The graph can therefore be used to read the hue
5162 (color flavor) and the saturation (the dominance of the hue in the color). As
5163 the hue of a color changes, it moves around the square. At the center of the
5164 square the saturation is zero, which means that the corresponding pixel has no
5165 color. If the amount of a specific color is increased (while leaving the other
5166 colors unchanged) the saturation increases, and the indicator moves towards
5167 the edge of the square.
5168
5169 @item color2
5170 Chroma values in vectorscope, similar as @code{color} but actual chroma values
5171 are displayed.
5172
5173 @item waveform
5174 Per row/column color component graph. In row mode, the graph on the left side
5175 represents color component value 0 and the right side represents value = 255.
5176 In column mode, the top side represents color component value = 0 and bottom
5177 side represents value = 255.
5178 @end table
5179 Default value is @code{levels}.
5180
5181 @item level_height
5182 Set height of level in @code{levels}. Default value is @code{200}.
5183 Allowed range is [50, 2048].
5184
5185 @item scale_height
5186 Set height of color scale in @code{levels}. Default value is @code{12}.
5187 Allowed range is [0, 40].
5188
5189 @item step
5190 Set step for @code{waveform} mode. Smaller values are useful to find out how
5191 many values of the same luminance are distributed across input rows/columns.
5192 Default value is @code{10}. Allowed range is [1, 255].
5193
5194 @item waveform_mode
5195 Set mode for @code{waveform}. Can be either @code{row}, or @code{column}.
5196 Default is @code{row}.
5197
5198 @item waveform_mirror
5199 Set mirroring mode for @code{waveform}. @code{0} means unmirrored, @code{1}
5200 means mirrored. In mirrored mode, higher values will be represented on the left
5201 side for @code{row} mode and at the top for @code{column} mode. Default is
5202 @code{0} (unmirrored).
5203
5204 @item display_mode
5205 Set display mode for @code{waveform} and @code{levels}.
5206 It accepts the following values:
5207 @table @samp
5208 @item parade
5209 Display separate graph for the color components side by side in
5210 @code{row} waveform mode or one below the other in @code{column} waveform mode
5211 for @code{waveform} histogram mode. For @code{levels} histogram mode,
5212 per color component graphs are placed below each other.
5213
5214 Using this display mode in @code{waveform} histogram mode makes it easy to
5215 spot color casts in the highlights and shadows of an image, by comparing the
5216 contours of the top and the bottom graphs of each waveform. Since whites,
5217 grays, and blacks are characterized by exactly equal amounts of red, green,
5218 and blue, neutral areas of the picture should display three waveforms of
5219 roughly equal width/height. If not, the correction is easy to perform by
5220 making level adjustments the three waveforms.
5221
5222 @item overlay
5223 Presents information identical to that in the @code{parade}, except
5224 that the graphs representing color components are superimposed directly
5225 over one another.
5226
5227 This display mode in @code{waveform} histogram mode makes it easier to spot
5228 relative differences or similarities in overlapping areas of the color
5229 components that are supposed to be identical, such as neutral whites, grays,
5230 or blacks.
5231 @end table
5232 Default is @code{parade}.
5233
5234 @item levels_mode
5235 Set mode for @code{levels}. Can be either @code{linear}, or @code{logarithmic}.
5236 Default is @code{linear}.
5237 @end table
5238
5239 @subsection Examples
5240
5241 @itemize
5242
5243 @item
5244 Calculate and draw histogram:
5245 @example
5246 ffplay -i input -vf histogram
5247 @end example
5248
5249 @end itemize
5250
5251 @anchor{hqdn3d}
5252 @section hqdn3d
5253
5254 This is a high precision/quality 3d denoise filter. It aims to reduce
5255 image noise, producing smooth images and making still images really
5256 still. It should enhance compressibility.
5257
5258 It accepts the following optional parameters:
5259
5260 @table @option
5261 @item luma_spatial
5262 A non-negative floating point number which specifies spatial luma strength.
5263 It defaults to 4.0.
5264
5265 @item chroma_spatial
5266 A non-negative floating point number which specifies spatial chroma strength.
5267 It defaults to 3.0*@var{luma_spatial}/4.0.
5268
5269 @item luma_tmp
5270 A floating point number which specifies luma temporal strength. It defaults to
5271 6.0*@var{luma_spatial}/4.0.
5272
5273 @item chroma_tmp
5274 A floating point number which specifies chroma temporal strength. It defaults to
5275 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
5276 @end table
5277
5278 @section hqx
5279
5280 Apply a high-quality magnification filter designed for pixel art. This filter
5281 was originally created by Maxim Stepin.
5282
5283 It accepts the following option:
5284
5285 @table @option
5286 @item n
5287 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
5288 @code{hq3x} and @code{4} for @code{hq4x}.
5289 Default is @code{3}.
5290 @end table
5291
5292 @section hue
5293
5294 Modify the hue and/or the saturation of the input.
5295
5296 It accepts the following parameters:
5297
5298 @table @option
5299 @item h
5300 Specify the hue angle as a number of degrees. It accepts an expression,
5301 and defaults to "0".
5302
5303 @item s
5304 Specify the saturation in the [-10,10] range. It accepts an expression and
5305 defaults to "1".
5306
5307 @item H
5308 Specify the hue angle as a number of radians. It accepts an
5309 expression, and defaults to "0".
5310
5311 @item b
5312 Specify the brightness in the [-10,10] range. It accepts an expression and
5313 defaults to "0".
5314 @end table
5315
5316 @option{h} and @option{H} are mutually exclusive, and can't be
5317 specified at the same time.
5318
5319 The @option{b}, @option{h}, @option{H} and @option{s} option values are
5320 expressions containing the following constants:
5321
5322 @table @option
5323 @item n
5324 frame count of the input frame starting from 0
5325
5326 @item pts
5327 presentation timestamp of the input frame expressed in time base units
5328
5329 @item r
5330 frame rate of the input video, NAN if the input frame rate is unknown
5331
5332 @item t
5333 timestamp expressed in seconds, NAN if the input timestamp is unknown
5334
5335 @item tb
5336 time base of the input video
5337 @end table
5338
5339 @subsection Examples
5340
5341 @itemize
5342 @item
5343 Set the hue to 90 degrees and the saturation to 1.0:
5344 @example
5345 hue=h=90:s=1
5346 @end example
5347
5348 @item
5349 Same command but expressing the hue in radians:
5350 @example
5351 hue=H=PI/2:s=1
5352 @end example
5353
5354 @item
5355 Rotate hue and make the saturation swing between 0
5356 and 2 over a period of 1 second:
5357 @example
5358 hue="H=2*PI*t: s=sin(2*PI*t)+1"
5359 @end example
5360
5361 @item
5362 Apply a 3 seconds saturation fade-in effect starting at 0:
5363 @example
5364 hue="s=min(t/3\,1)"
5365 @end example
5366
5367 The general fade-in expression can be written as:
5368 @example
5369 hue="s=min(0\, max((t-START)/DURATION\, 1))"
5370 @end example
5371
5372 @item
5373 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
5374 @example
5375 hue="s=max(0\, min(1\, (8-t)/3))"
5376 @end example
5377
5378 The general fade-out expression can be written as:
5379 @example
5380 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
5381 @end example
5382
5383 @end itemize
5384
5385 @subsection Commands
5386
5387 This filter supports the following commands:
5388 @table @option
5389 @item b
5390 @item s
5391 @item h
5392 @item H
5393 Modify the hue and/or the saturation and/or brightness of the input video.
5394 The command accepts the same syntax of the corresponding option.
5395
5396 If the specified expression is not valid, it is kept at its current
5397 value.
5398 @end table
5399
5400 @section idet
5401
5402 Detect video interlacing type.
5403
5404 This filter tries to detect if the input is interlaced or progressive,
5405 top or bottom field first.
5406
5407 The filter accepts the following options:
5408
5409 @table @option
5410 @item intl_thres
5411 Set interlacing threshold.
5412 @item prog_thres
5413 Set progressive threshold.
5414 @end table
5415
5416 @section il
5417
5418 Deinterleave or interleave fields.
5419
5420 This filter allows one to process interlaced images fields without
5421 deinterlacing them. Deinterleaving splits the input frame into 2
5422 fields (so called half pictures). Odd lines are moved to the top
5423 half of the output image, even lines to the bottom half.
5424 You can process (filter) them independently and then re-interleave them.
5425
5426 The filter accepts the following options:
5427
5428 @table @option
5429 @item luma_mode, l
5430 @item chroma_mode, c
5431 @item alpha_mode, a
5432 Available values for @var{luma_mode}, @var{chroma_mode} and
5433 @var{alpha_mode} are:
5434
5435 @table @samp
5436 @item none
5437 Do nothing.
5438
5439 @item deinterleave, d
5440 Deinterleave fields, placing one above the other.
5441
5442 @item interleave, i
5443 Interleave fields. Reverse the effect of deinterleaving.
5444 @end table
5445 Default value is @code{none}.
5446
5447 @item luma_swap, ls
5448 @item chroma_swap, cs
5449 @item alpha_swap, as
5450 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
5451 @end table
5452
5453 @section interlace
5454
5455 Simple interlacing filter from progressive contents. This interleaves upper (or
5456 lower) lines from odd frames with lower (or upper) lines from even frames,
5457 halving the frame rate and preserving image height. A vertical lowpass filter
5458 is always applied in order to avoid twitter effects and reduce moiré patterns.
5459
5460 @example
5461    Original        Original             New Frame
5462    Frame 'j'      Frame 'j+1'             (tff)
5463   ==========      ===========       ==================
5464     Line 0  -------------------->    Frame 'j' Line 0
5465     Line 1          Line 1  ---->   Frame 'j+1' Line 1
5466     Line 2 --------------------->    Frame 'j' Line 2
5467     Line 3          Line 3  ---->   Frame 'j+1' Line 3
5468      ...             ...                   ...
5469 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
5470 @end example
5471
5472 It accepts the following optional parameters:
5473
5474 @table @option
5475 @item scan
5476 This determines whether the interlaced frame is taken from the even
5477 (tff - default) or odd (bff) lines of the progressive frame.
5478 @end table
5479
5480 @section kerndeint
5481
5482 Deinterlace input video by applying Donald Graft's adaptive kernel
5483 deinterling. Work on interlaced parts of a video to produce
5484 progressive frames.
5485
5486 The description of the accepted parameters follows.
5487
5488 @table @option
5489 @item thresh
5490 Set the threshold which affects the filter's tolerance when
5491 determining if a pixel line must be processed. It must be an integer
5492 in the range [0,255] and defaults to 10. A value of 0 will result in
5493 applying the process on every pixels.
5494
5495 @item map
5496 Paint pixels exceeding the threshold value to white if set to 1.
5497 Default is 0.
5498
5499 @item order
5500 Set the fields order. Swap fields if set to 1, leave fields alone if
5501 0. Default is 0.
5502
5503 @item sharp
5504 Enable additional sharpening if set to 1. Default is 0.
5505
5506 @item twoway
5507 Enable twoway sharpening if set to 1. Default is 0.
5508 @end table
5509
5510 @subsection Examples
5511
5512 @itemize
5513 @item
5514 Apply default values:
5515 @example
5516 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
5517 @end example
5518
5519 @item
5520 Enable additional sharpening:
5521 @example
5522 kerndeint=sharp=1
5523 @end example
5524
5525 @item
5526 Paint processed pixels in white:
5527 @example
5528 kerndeint=map=1
5529 @end example
5530 @end itemize
5531
5532 @anchor{lut3d}
5533 @section lut3d
5534
5535 Apply a 3D LUT to an input video.
5536
5537 The filter accepts the following options:
5538
5539 @table @option
5540 @item file
5541 Set the 3D LUT file name.
5542
5543 Currently supported formats:
5544 @table @samp
5545 @item 3dl
5546 AfterEffects
5547 @item cube
5548 Iridas
5549 @item dat
5550 DaVinci
5551 @item m3d
5552 Pandora
5553 @end table
5554 @item interp
5555 Select interpolation mode.
5556
5557 Available values are:
5558
5559 @table @samp
5560 @item nearest
5561 Use values from the nearest defined point.
5562 @item trilinear
5563 Interpolate values using the 8 points defining a cube.
5564 @item tetrahedral
5565 Interpolate values using a tetrahedron.
5566 @end table
5567 @end table
5568
5569 @section lut, lutrgb, lutyuv
5570
5571 Compute a look-up table for binding each pixel component input value
5572 to an output value, and apply it to the input video.
5573
5574 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
5575 to an RGB input video.
5576
5577 These filters accept the following parameters:
5578 @table @option
5579 @item c0
5580 set first pixel component expression
5581 @item c1
5582 set second pixel component expression
5583 @item c2
5584 set third pixel component expression
5585 @item c3
5586 set fourth pixel component expression, corresponds to the alpha component
5587
5588 @item r
5589 set red component expression
5590 @item g
5591 set green component expression
5592 @item b
5593 set blue component expression
5594 @item a
5595 alpha component expression
5596
5597 @item y
5598 set Y/luminance component expression
5599 @item u
5600 set U/Cb component expression
5601 @item v
5602 set V/Cr component expression
5603 @end table
5604
5605 Each of them specifies the expression to use for computing the lookup table for
5606 the corresponding pixel component values.
5607
5608 The exact component associated to each of the @var{c*} options depends on the
5609 format in input.
5610
5611 The @var{lut} filter requires either YUV or RGB pixel formats in input,
5612 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
5613
5614 The expressions can contain the following constants and functions:
5615
5616 @table @option
5617 @item w
5618 @item h
5619 The input width and height.
5620
5621 @item val
5622 The input value for the pixel component.
5623
5624 @item clipval
5625 The input value, clipped to the @var{minval}-@var{maxval} range.
5626
5627 @item maxval
5628 The maximum value for the pixel component.
5629
5630 @item minval
5631 The minimum value for the pixel component.
5632
5633 @item negval
5634 The negated value for the pixel component value, clipped to the
5635 @var{minval}-@var{maxval} range; it corresponds to the expression
5636 "maxval-clipval+minval".
5637
5638 @item clip(val)
5639 The computed value in @var{val}, clipped to the
5640 @var{minval}-@var{maxval} range.
5641
5642 @item gammaval(gamma)
5643 The computed gamma correction value of the pixel component value,
5644 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
5645 expression
5646 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
5647
5648 @end table
5649
5650 All expressions default to "val".
5651
5652 @subsection Examples
5653
5654 @itemize
5655 @item
5656 Negate input video:
5657 @example
5658 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
5659 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
5660 @end example
5661
5662 The above is the same as:
5663 @example
5664 lutrgb="r=negval:g=negval:b=negval"
5665 lutyuv="y=negval:u=negval:v=negval"
5666 @end example
5667
5668 @item
5669 Negate luminance:
5670 @example
5671 lutyuv=y=negval
5672 @end example
5673
5674 @item
5675 Remove chroma components, turning the video into a graytone image:
5676 @example
5677 lutyuv="u=128:v=128"
5678 @end example
5679
5680 @item
5681 Apply a luma burning effect:
5682 @example
5683 lutyuv="y=2*val"
5684 @end example
5685
5686 @item
5687 Remove green and blue components:
5688 @example
5689 lutrgb="g=0:b=0"
5690 @end example
5691
5692 @item
5693 Set a constant alpha channel value on input:
5694 @example
5695 format=rgba,lutrgb=a="maxval-minval/2"
5696 @end example
5697
5698 @item
5699 Correct luminance gamma by a factor of 0.5:
5700 @example
5701 lutyuv=y=gammaval(0.5)
5702 @end example
5703
5704 @item
5705 Discard least significant bits of luma:
5706 @example
5707 lutyuv=y='bitand(val, 128+64+32)'
5708 @end example
5709 @end itemize
5710
5711 @section mergeplanes
5712
5713 Merge color channel components from several video streams.
5714
5715 The filter accepts up to 4 input streams, and merge selected input
5716 planes to the output video.
5717
5718 This filter accepts the following options:
5719 @table @option
5720 @item mapping
5721 Set input to output plane mapping. Default is @code{0}.
5722
5723 The mappings is specified as a bitmap. It should be specified as a
5724 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
5725 mapping for the first plane of the output stream. 'A' sets the number of
5726 the input stream to use (from 0 to 3), and 'a' the plane number of the
5727 corresponding input to use (from 0 to 3). The rest of the mappings is
5728 similar, 'Bb' describes the mapping for the output stream second
5729 plane, 'Cc' describes the mapping for the output stream third plane and
5730 'Dd' describes the mapping for the output stream fourth plane.
5731
5732 @item format
5733 Set output pixel format. Default is @code{yuva444p}.
5734 @end table
5735
5736 @subsection Examples
5737
5738 @itemize
5739 @item
5740 Merge three gray video streams of same width and height into single video stream:
5741 @example
5742 [a0][a1][a2]mergeplanes=0x001020:yuv444p
5743 @end example
5744
5745 @item
5746 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
5747 @example
5748 [a0][a1]mergeplanes=0x00010210:yuva444p
5749 @end example
5750
5751 @item
5752 Swap Y and A plane in yuva444p stream:
5753 @example
5754 format=yuva444p,mergeplanes=0x03010200:yuva444p
5755 @end example
5756
5757 @item
5758 Swap U and V plane in yuv420p stream:
5759 @example
5760 format=yuv420p,mergeplanes=0x000201:yuv420p
5761 @end example
5762
5763 @item
5764 Cast a rgb24 clip to yuv444p:
5765 @example
5766 format=rgb24,mergeplanes=0x000102:yuv444p
5767 @end example
5768 @end itemize
5769
5770 @section mcdeint
5771
5772 Apply motion-compensation deinterlacing.
5773
5774 It needs one field per frame as input and must thus be used together
5775 with yadif=1/3 or equivalent.
5776
5777 This filter accepts the following options:
5778 @table @option
5779 @item mode
5780 Set the deinterlacing mode.
5781
5782 It accepts one of the following values:
5783 @table @samp
5784 @item fast
5785 @item medium
5786 @item slow
5787 use iterative motion estimation
5788 @item extra_slow
5789 like @samp{slow}, but use multiple reference frames.
5790 @end table
5791 Default value is @samp{fast}.
5792
5793 @item parity
5794 Set the picture field parity assumed for the input video. It must be
5795 one of the following values:
5796
5797 @table @samp
5798 @item 0, tff
5799 assume top field first
5800 @item 1, bff
5801 assume bottom field first
5802 @end table
5803
5804 Default value is @samp{bff}.
5805
5806 @item qp
5807 Set per-block quantization parameter (QP) used by the internal
5808 encoder.
5809
5810 Higher values should result in a smoother motion vector field but less
5811 optimal individual vectors. Default value is 1.
5812 @end table
5813
5814 @section mp
5815
5816 Apply an MPlayer filter to the input video.
5817
5818 This filter provides a wrapper around some of the filters of
5819 MPlayer/MEncoder.
5820
5821 This wrapper is considered experimental. Some of the wrapped filters
5822 may not work properly and we may drop support for them, as they will
5823 be implemented natively into FFmpeg. Thus you should avoid
5824 depending on them when writing portable scripts.
5825
5826 The filter accepts the parameters:
5827 @var{filter_name}[:=]@var{filter_params}
5828
5829 @var{filter_name} is the name of a supported MPlayer filter,
5830 @var{filter_params} is a string containing the parameters accepted by
5831 the named filter.
5832
5833 The list of the currently supported filters follows:
5834 @table @var
5835 @item eq2
5836 @item eq
5837 @item fspp
5838 @item ilpack
5839 @item pp7
5840 @item softpulldown
5841 @item uspp
5842 @end table
5843
5844 The parameter syntax and behavior for the listed filters are the same
5845 of the corresponding MPlayer filters. For detailed instructions check
5846 the "VIDEO FILTERS" section in the MPlayer manual.
5847
5848 @subsection Examples
5849
5850 @itemize
5851 @item
5852 Adjust gamma, brightness, contrast:
5853 @example
5854 mp=eq2=1.0:2:0.5
5855 @end example
5856 @end itemize
5857
5858 See also mplayer(1), @url{http://www.mplayerhq.hu/}.
5859
5860 @section mpdecimate
5861
5862 Drop frames that do not differ greatly from the previous frame in
5863 order to reduce frame rate.
5864
5865 The main use of this filter is for very-low-bitrate encoding
5866 (e.g. streaming over dialup modem), but it could in theory be used for
5867 fixing movies that were inverse-telecined incorrectly.
5868
5869 A description of the accepted options follows.
5870
5871 @table @option
5872 @item max
5873 Set the maximum number of consecutive frames which can be dropped (if
5874 positive), or the minimum interval between dropped frames (if
5875 negative). If the value is 0, the frame is dropped unregarding the
5876 number of previous sequentially dropped frames.
5877
5878 Default value is 0.
5879
5880 @item hi
5881 @item lo
5882 @item frac
5883 Set the dropping threshold values.
5884
5885 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
5886 represent actual pixel value differences, so a threshold of 64
5887 corresponds to 1 unit of difference for each pixel, or the same spread
5888 out differently over the block.
5889
5890 A frame is a candidate for dropping if no 8x8 blocks differ by more
5891 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
5892 meaning the whole image) differ by more than a threshold of @option{lo}.
5893
5894 Default value for @option{hi} is 64*12, default value for @option{lo} is
5895 64*5, and default value for @option{frac} is 0.33.
5896 @end table
5897
5898
5899 @section negate
5900
5901 Negate input video.
5902
5903 It accepts an integer in input; if non-zero it negates the
5904 alpha component (if available). The default value in input is 0.
5905
5906 @section noformat
5907
5908 Force libavfilter not to use any of the specified pixel formats for the
5909 input to the next filter.
5910
5911 It accepts the following parameters:
5912 @table @option
5913
5914 @item pix_fmts
5915 A '|'-separated list of pixel format names, such as
5916 apix_fmts=yuv420p|monow|rgb24".
5917
5918 @end table
5919
5920 @subsection Examples
5921
5922 @itemize
5923 @item
5924 Force libavfilter to use a format different from @var{yuv420p} for the
5925 input to the vflip filter:
5926 @example
5927 noformat=pix_fmts=yuv420p,vflip
5928 @end example
5929
5930 @item
5931 Convert the input video to any of the formats not contained in the list:
5932 @example
5933 noformat=yuv420p|yuv444p|yuv410p
5934 @end example
5935 @end itemize
5936
5937 @section noise
5938
5939 Add noise on video input frame.
5940
5941 The filter accepts the following options:
5942
5943 @table @option
5944 @item all_seed
5945 @item c0_seed
5946 @item c1_seed
5947 @item c2_seed
5948 @item c3_seed
5949 Set noise seed for specific pixel component or all pixel components in case
5950 of @var{all_seed}. Default value is @code{123457}.
5951
5952 @item all_strength, alls
5953 @item c0_strength, c0s
5954 @item c1_strength, c1s
5955 @item c2_strength, c2s
5956 @item c3_strength, c3s
5957 Set noise strength for specific pixel component or all pixel components in case
5958 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
5959
5960 @item all_flags, allf
5961 @item c0_flags, c0f
5962 @item c1_flags, c1f
5963 @item c2_flags, c2f
5964 @item c3_flags, c3f
5965 Set pixel component flags or set flags for all components if @var{all_flags}.
5966 Available values for component flags are:
5967 @table @samp
5968 @item a
5969 averaged temporal noise (smoother)
5970 @item p
5971 mix random noise with a (semi)regular pattern
5972 @item t
5973 temporal noise (noise pattern changes between frames)
5974 @item u
5975 uniform noise (gaussian otherwise)
5976 @end table
5977 @end table
5978
5979 @subsection Examples
5980
5981 Add temporal and uniform noise to input video:
5982 @example
5983 noise=alls=20:allf=t+u
5984 @end example
5985
5986 @section null
5987
5988 Pass the video source unchanged to the output.
5989
5990 @section ocv
5991
5992 Apply a video transform using libopencv.
5993
5994 To enable this filter, install the libopencv library and headers and
5995 configure FFmpeg with @code{--enable-libopencv}.
5996
5997 It accepts the following parameters:
5998
5999 @table @option
6000
6001 @item filter_name
6002 The name of the libopencv filter to apply.
6003
6004 @item filter_params
6005 The parameters to pass to the libopencv filter. If not specified, the default
6006 values are assumed.
6007
6008 @end table
6009
6010 Refer to the official libopencv documentation for more precise
6011 information:
6012 @url{http://opencv.willowgarage.com/documentation/c/image_filtering.html}
6013
6014 Several libopencv filters are supported; see the following subsections.
6015
6016 @anchor{dilate}
6017 @subsection dilate
6018
6019 Dilate an image by using a specific structuring element.
6020 It corresponds to the libopencv function @code{cvDilate}.
6021
6022 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
6023
6024 @var{struct_el} represents a structuring element, and has the syntax:
6025 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
6026
6027 @var{cols} and @var{rows} represent the number of columns and rows of
6028 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
6029 point, and @var{shape} the shape for the structuring element. @var{shape}
6030 must be "rect", "cross", "ellipse", or "custom".
6031
6032 If the value for @var{shape} is "custom", it must be followed by a
6033 string of the form "=@var{filename}". The file with name
6034 @var{filename} is assumed to represent a binary image, with each
6035 printable character corresponding to a bright pixel. When a custom
6036 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
6037 or columns and rows of the read file are assumed instead.
6038
6039 The default value for @var{struct_el} is "3x3+0x0/rect".
6040
6041 @var{nb_iterations} specifies the number of times the transform is
6042 applied to the image, and defaults to 1.
6043
6044 Some examples:
6045 @example
6046 # Use the default values
6047 ocv=dilate
6048
6049 # Dilate using a structuring element with a 5x5 cross, iterating two times
6050 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
6051
6052 # Read the shape from the file diamond.shape, iterating two times.
6053 # The file diamond.shape may contain a pattern of characters like this
6054 #   *
6055 #  ***
6056 # *****
6057 #  ***
6058 #   *
6059 # The specified columns and rows are ignored
6060 # but the anchor point coordinates are not
6061 ocv=dilate:0x0+2x2/custom=diamond.shape|2
6062 @end example
6063
6064 @subsection erode
6065
6066 Erode an image by using a specific structuring element.
6067 It corresponds to the libopencv function @code{cvErode}.
6068
6069 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
6070 with the same syntax and semantics as the @ref{dilate} filter.
6071
6072 @subsection smooth
6073
6074 Smooth the input video.
6075
6076 The filter takes the following parameters:
6077 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
6078
6079 @var{type} is the type of smooth filter to apply, and must be one of
6080 the following values: "blur", "blur_no_scale", "median", "gaussian",
6081 or "bilateral". The default value is "gaussian".
6082
6083 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
6084 depend on the smooth type. @var{param1} and
6085 @var{param2} accept integer positive values or 0. @var{param3} and
6086 @var{param4} accept floating point values.
6087
6088 The default value for @var{param1} is 3. The default value for the
6089 other parameters is 0.
6090
6091 These parameters correspond to the parameters assigned to the
6092 libopencv function @code{cvSmooth}.
6093
6094 @anchor{overlay}
6095 @section overlay
6096
6097 Overlay one video on top of another.
6098
6099 It takes two inputs and has one output. The first input is the "main"
6100 video on which the second input is overlayed.
6101
6102 It accepts the following parameters:
6103
6104 A description of the accepted options follows.
6105
6106 @table @option
6107 @item x
6108 @item y
6109 Set the expression for the x and y coordinates of the overlayed video
6110 on the main video. Default value is "0" for both expressions. In case
6111 the expression is invalid, it is set to a huge value (meaning that the
6112 overlay will not be displayed within the output visible area).
6113
6114 @item eof_action
6115 The action to take when EOF is encountered on the secondary input; it accepts
6116 one of the following values:
6117
6118 @table @option
6119 @item repeat
6120 Repeat the last frame (the default).
6121 @item endall
6122 End both streams.
6123 @item pass
6124 Pass the main input through.
6125 @end table
6126
6127 @item eval
6128 Set when the expressions for @option{x}, and @option{y} are evaluated.
6129
6130 It accepts the following values:
6131 @table @samp
6132 @item init
6133 only evaluate expressions once during the filter initialization or
6134 when a command is processed
6135
6136 @item frame
6137 evaluate expressions for each incoming frame
6138 @end table
6139
6140 Default value is @samp{frame}.
6141
6142 @item shortest
6143 If set to 1, force the output to terminate when the shortest input
6144 terminates. Default value is 0.
6145
6146 @item format
6147 Set the format for the output video.
6148
6149 It accepts the following values:
6150 @table @samp
6151 @item yuv420
6152 force YUV420 output
6153
6154 @item yuv422
6155 force YUV422 output
6156
6157 @item yuv444
6158 force YUV444 output
6159
6160 @item rgb
6161 force RGB output
6162 @end table
6163
6164 Default value is @samp{yuv420}.
6165
6166 @item rgb @emph{(deprecated)}
6167 If set to 1, force the filter to accept inputs in the RGB
6168 color space. Default value is 0. This option is deprecated, use
6169 @option{format} instead.
6170
6171 @item repeatlast
6172 If set to 1, force the filter to draw the last overlay frame over the
6173 main input until the end of the stream. A value of 0 disables this
6174 behavior. Default value is 1.
6175 @end table
6176
6177 The @option{x}, and @option{y} expressions can contain the following
6178 parameters.
6179
6180 @table @option
6181 @item main_w, W
6182 @item main_h, H
6183 The main input width and height.
6184
6185 @item overlay_w, w
6186 @item overlay_h, h
6187 The overlay input width and height.
6188
6189 @item x
6190 @item y
6191 The computed values for @var{x} and @var{y}. They are evaluated for
6192 each new frame.
6193
6194 @item hsub
6195 @item vsub
6196 horizontal and vertical chroma subsample values of the output
6197 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
6198 @var{vsub} is 1.
6199
6200 @item n
6201 the number of input frame, starting from 0
6202
6203 @item pos
6204 the position in the file of the input frame, NAN if unknown
6205
6206 @item t
6207 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
6208
6209 @end table
6210
6211 Note that the @var{n}, @var{pos}, @var{t} variables are available only
6212 when evaluation is done @emph{per frame}, and will evaluate to NAN
6213 when @option{eval} is set to @samp{init}.
6214
6215 Be aware that frames are taken from each input video in timestamp
6216 order, hence, if their initial timestamps differ, it is a good idea
6217 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
6218 have them begin in the same zero timestamp, as the example for
6219 the @var{movie} filter does.
6220
6221 You can chain together more overlays but you should test the
6222 efficiency of such approach.
6223
6224 @subsection Commands
6225
6226 This filter supports the following commands:
6227 @table @option
6228 @item x
6229 @item y
6230 Modify the x and y of the overlay input.
6231 The command accepts the same syntax of the corresponding option.
6232
6233 If the specified expression is not valid, it is kept at its current
6234 value.
6235 @end table
6236
6237 @subsection Examples
6238
6239 @itemize
6240 @item
6241 Draw the overlay at 10 pixels from the bottom right corner of the main
6242 video:
6243 @example
6244 overlay=main_w-overlay_w-10:main_h-overlay_h-10
6245 @end example
6246
6247 Using named options the example above becomes:
6248 @example
6249 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
6250 @end example
6251
6252 @item
6253 Insert a transparent PNG logo in the bottom left corner of the input,
6254 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
6255 @example
6256 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
6257 @end example
6258
6259 @item
6260 Insert 2 different transparent PNG logos (second logo on bottom
6261 right corner) using the @command{ffmpeg} tool:
6262 @example
6263 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
6264 @end example
6265
6266 @item
6267 Add a transparent color layer on top of the main video; @code{WxH}
6268 must specify the size of the main input to the overlay filter:
6269 @example
6270 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
6271 @end example
6272
6273 @item
6274 Play an original video and a filtered version (here with the deshake
6275 filter) side by side using the @command{ffplay} tool:
6276 @example
6277 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
6278 @end example
6279
6280 The above command is the same as:
6281 @example
6282 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
6283 @end example
6284
6285 @item
6286 Make a sliding overlay appearing from the left to the right top part of the
6287 screen starting since time 2:
6288 @example
6289 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
6290 @end example
6291
6292 @item
6293 Compose output by putting two input videos side to side:
6294 @example
6295 ffmpeg -i left.avi -i right.avi -filter_complex "
6296 nullsrc=size=200x100 [background];
6297 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
6298 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
6299 [background][left]       overlay=shortest=1       [background+left];
6300 [background+left][right] overlay=shortest=1:x=100 [left+right]
6301 "
6302 @end example
6303
6304 @item
6305 Mask 10-20 seconds of a video by applying the delogo filter to a section
6306 @example
6307 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
6308 -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]'
6309 masked.avi
6310 @end example
6311
6312 @item
6313 Chain several overlays in cascade:
6314 @example
6315 nullsrc=s=200x200 [bg];
6316 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
6317 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
6318 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
6319 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
6320 [in3] null,       [mid2] overlay=100:100 [out0]
6321 @end example
6322
6323 @end itemize
6324
6325 @section owdenoise
6326
6327 Apply Overcomplete Wavelet denoiser.
6328
6329 The filter accepts the following options:
6330
6331 @table @option
6332 @item depth
6333 Set depth.
6334
6335 Larger depth values will denoise lower frequency components more, but
6336 slow down filtering.
6337
6338 Must be an int in the range 8-16, default is @code{8}.
6339
6340 @item luma_strength, ls
6341 Set luma strength.
6342
6343 Must be a double value in the range 0-1000, default is @code{1.0}.
6344
6345 @item chroma_strength, cs
6346 Set chroma strength.
6347
6348 Must be a double value in the range 0-1000, default is @code{1.0}.
6349 @end table
6350
6351 @section pad
6352
6353 Add paddings to the input image, and place the original input at the
6354 provided @var{x}, @var{y} coordinates.
6355
6356 It accepts the following parameters:
6357
6358 @table @option
6359 @item width, w
6360 @item height, h
6361 Specify an expression for the size of the output image with the
6362 paddings added. If the value for @var{width} or @var{height} is 0, the
6363 corresponding input size is used for the output.
6364
6365 The @var{width} expression can reference the value set by the
6366 @var{height} expression, and vice versa.
6367
6368 The default value of @var{width} and @var{height} is 0.
6369
6370 @item x
6371 @item y
6372 Specify the offsets to place the input image at within the padded area,
6373 with respect to the top/left border of the output image.
6374
6375 The @var{x} expression can reference the value set by the @var{y}
6376 expression, and vice versa.
6377
6378 The default value of @var{x} and @var{y} is 0.
6379
6380 @item color
6381 Specify the color of the padded area. For the syntax of this option,
6382 check the "Color" section in the ffmpeg-utils manual.
6383
6384 The default value of @var{color} is "black".
6385 @end table
6386
6387 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
6388 options are expressions containing the following constants:
6389
6390 @table @option
6391 @item in_w
6392 @item in_h
6393 The input video width and height.
6394
6395 @item iw
6396 @item ih
6397 These are the same as @var{in_w} and @var{in_h}.
6398
6399 @item out_w
6400 @item out_h
6401 The output width and height (the size of the padded area), as
6402 specified by the @var{width} and @var{height} expressions.
6403
6404 @item ow
6405 @item oh
6406 These are the same as @var{out_w} and @var{out_h}.
6407
6408 @item x
6409 @item y
6410 The x and y offsets as specified by the @var{x} and @var{y}
6411 expressions, or NAN if not yet specified.
6412
6413 @item a
6414 same as @var{iw} / @var{ih}
6415
6416 @item sar
6417 input sample aspect ratio
6418
6419 @item dar
6420 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
6421
6422 @item hsub
6423 @item vsub
6424 The horizontal and vertical chroma subsample values. For example for the
6425 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
6426 @end table
6427
6428 @subsection Examples
6429
6430 @itemize
6431 @item
6432 Add paddings with the color "violet" to the input video. The output video
6433 size is 640x480, and the top-left corner of the input video is placed at
6434 column 0, row 40
6435 @example
6436 pad=640:480:0:40:violet
6437 @end example
6438
6439 The example above is equivalent to the following command:
6440 @example
6441 pad=width=640:height=480:x=0:y=40:color=violet
6442 @end example
6443
6444 @item
6445 Pad the input to get an output with dimensions increased by 3/2,
6446 and put the input video at the center of the padded area:
6447 @example
6448 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
6449 @end example
6450
6451 @item
6452 Pad the input to get a squared output with size equal to the maximum
6453 value between the input width and height, and put the input video at
6454 the center of the padded area:
6455 @example
6456 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
6457 @end example
6458
6459 @item
6460 Pad the input to get a final w/h ratio of 16:9:
6461 @example
6462 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
6463 @end example
6464
6465 @item
6466 In case of anamorphic video, in order to set the output display aspect
6467 correctly, it is necessary to use @var{sar} in the expression,
6468 according to the relation:
6469 @example
6470 (ih * X / ih) * sar = output_dar
6471 X = output_dar / sar
6472 @end example
6473
6474 Thus the previous example needs to be modified to:
6475 @example
6476 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
6477 @end example
6478
6479 @item
6480 Double the output size and put the input video in the bottom-right
6481 corner of the output padded area:
6482 @example
6483 pad="2*iw:2*ih:ow-iw:oh-ih"
6484 @end example
6485 @end itemize
6486
6487 @section perspective
6488
6489 Correct perspective of video not recorded perpendicular to the screen.
6490
6491 A description of the accepted parameters follows.
6492
6493 @table @option
6494 @item x0
6495 @item y0
6496 @item x1
6497 @item y1
6498 @item x2
6499 @item y2
6500 @item x3
6501 @item y3
6502 Set coordinates expression for top left, top right, bottom left and bottom right corners.
6503 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
6504
6505 The expressions can use the following variables:
6506
6507 @table @option
6508 @item W
6509 @item H
6510 the width and height of video frame.
6511 @end table
6512
6513 @item interpolation
6514 Set interpolation for perspective correction.
6515
6516 It accepts the following values:
6517 @table @samp
6518 @item linear
6519 @item cubic
6520 @end table
6521
6522 Default value is @samp{linear}.
6523 @end table
6524
6525 @section phase
6526
6527 Delay interlaced video by one field time so that the field order changes.
6528
6529 The intended use is to fix PAL movies that have been captured with the
6530 opposite field order to the film-to-video transfer.
6531
6532 A description of the accepted parameters follows.
6533
6534 @table @option
6535 @item mode
6536 Set phase mode.
6537
6538 It accepts the following values:
6539 @table @samp
6540 @item t
6541 Capture field order top-first, transfer bottom-first.
6542 Filter will delay the bottom field.
6543
6544 @item b
6545 Capture field order bottom-first, transfer top-first.
6546 Filter will delay the top field.
6547
6548 @item p
6549 Capture and transfer with the same field order. This mode only exists
6550 for the documentation of the other options to refer to, but if you
6551 actually select it, the filter will faithfully do nothing.
6552
6553 @item a
6554 Capture field order determined automatically by field flags, transfer
6555 opposite.
6556 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
6557 basis using field flags. If no field information is available,
6558 then this works just like @samp{u}.
6559
6560 @item u
6561 Capture unknown or varying, transfer opposite.
6562 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
6563 analyzing the images and selecting the alternative that produces best
6564 match between the fields.
6565
6566 @item T
6567 Capture top-first, transfer unknown or varying.
6568 Filter selects among @samp{t} and @samp{p} using image analysis.
6569
6570 @item B
6571 Capture bottom-first, transfer unknown or varying.
6572 Filter selects among @samp{b} and @samp{p} using image analysis.
6573
6574 @item A
6575 Capture determined by field flags, transfer unknown or varying.
6576 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
6577 image analysis. If no field information is available, then this works just
6578 like @samp{U}. This is the default mode.
6579
6580 @item U
6581 Both capture and transfer unknown or varying.
6582 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
6583 @end table
6584 @end table
6585
6586 @section pixdesctest
6587
6588 Pixel format descriptor test filter, mainly useful for internal
6589 testing. The output video should be equal to the input video.
6590
6591 For example:
6592 @example
6593 format=monow, pixdesctest
6594 @end example
6595
6596 can be used to test the monowhite pixel format descriptor definition.
6597
6598 @section pp
6599
6600 Enable the specified chain of postprocessing subfilters using libpostproc. This
6601 library should be automatically selected with a GPL build (@code{--enable-gpl}).
6602 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
6603 Each subfilter and some options have a short and a long name that can be used
6604 interchangeably, i.e. dr/dering are the same.
6605
6606 The filters accept the following options:
6607
6608 @table @option
6609 @item subfilters
6610 Set postprocessing subfilters string.
6611 @end table
6612
6613 All subfilters share common options to determine their scope:
6614
6615 @table @option
6616 @item a/autoq
6617 Honor the quality commands for this subfilter.
6618
6619 @item c/chrom
6620 Do chrominance filtering, too (default).
6621
6622 @item y/nochrom
6623 Do luminance filtering only (no chrominance).
6624
6625 @item n/noluma
6626 Do chrominance filtering only (no luminance).
6627 @end table
6628
6629 These options can be appended after the subfilter name, separated by a '|'.
6630
6631 Available subfilters are:
6632
6633 @table @option
6634 @item hb/hdeblock[|difference[|flatness]]
6635 Horizontal deblocking filter
6636 @table @option
6637 @item difference
6638 Difference factor where higher values mean more deblocking (default: @code{32}).
6639 @item flatness
6640 Flatness threshold where lower values mean more deblocking (default: @code{39}).
6641 @end table
6642
6643 @item vb/vdeblock[|difference[|flatness]]
6644 Vertical deblocking filter
6645 @table @option
6646 @item difference
6647 Difference factor where higher values mean more deblocking (default: @code{32}).
6648 @item flatness
6649 Flatness threshold where lower values mean more deblocking (default: @code{39}).
6650 @end table
6651
6652 @item ha/hadeblock[|difference[|flatness]]
6653 Accurate horizontal deblocking filter
6654 @table @option
6655 @item difference
6656 Difference factor where higher values mean more deblocking (default: @code{32}).
6657 @item flatness
6658 Flatness threshold where lower values mean more deblocking (default: @code{39}).
6659 @end table
6660
6661 @item va/vadeblock[|difference[|flatness]]
6662 Accurate vertical deblocking filter
6663 @table @option
6664 @item difference
6665 Difference factor where higher values mean more deblocking (default: @code{32}).
6666 @item flatness
6667 Flatness threshold where lower values mean more deblocking (default: @code{39}).
6668 @end table
6669 @end table
6670
6671 The horizontal and vertical deblocking filters share the difference and
6672 flatness values so you cannot set different horizontal and vertical
6673 thresholds.
6674
6675 @table @option
6676 @item h1/x1hdeblock
6677 Experimental horizontal deblocking filter
6678
6679 @item v1/x1vdeblock
6680 Experimental vertical deblocking filter
6681
6682 @item dr/dering
6683 Deringing filter
6684
6685 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
6686 @table @option
6687 @item threshold1
6688 larger -> stronger filtering
6689 @item threshold2
6690 larger -> stronger filtering
6691 @item threshold3
6692 larger -> stronger filtering
6693 @end table
6694
6695 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
6696 @table @option
6697 @item f/fullyrange
6698 Stretch luminance to @code{0-255}.
6699 @end table
6700
6701 @item lb/linblenddeint
6702 Linear blend deinterlacing filter that deinterlaces the given block by
6703 filtering all lines with a @code{(1 2 1)} filter.
6704
6705 @item li/linipoldeint
6706 Linear interpolating deinterlacing filter that deinterlaces the given block by
6707 linearly interpolating every second line.
6708
6709 @item ci/cubicipoldeint
6710 Cubic interpolating deinterlacing filter deinterlaces the given block by
6711 cubically interpolating every second line.
6712
6713 @item md/mediandeint
6714 Median deinterlacing filter that deinterlaces the given block by applying a
6715 median filter to every second line.
6716
6717 @item fd/ffmpegdeint
6718 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
6719 second line with a @code{(-1 4 2 4 -1)} filter.
6720
6721 @item l5/lowpass5
6722 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
6723 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
6724
6725 @item fq/forceQuant[|quantizer]
6726 Overrides the quantizer table from the input with the constant quantizer you
6727 specify.
6728 @table @option
6729 @item quantizer
6730 Quantizer to use
6731 @end table
6732
6733 @item de/default
6734 Default pp filter combination (@code{hb|a,vb|a,dr|a})
6735
6736 @item fa/fast
6737 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
6738
6739 @item ac
6740 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
6741 @end table
6742
6743 @subsection Examples
6744
6745 @itemize
6746 @item
6747 Apply horizontal and vertical deblocking, deringing and automatic
6748 brightness/contrast:
6749 @example
6750 pp=hb/vb/dr/al
6751 @end example
6752
6753 @item
6754 Apply default filters without brightness/contrast correction:
6755 @example
6756 pp=de/-al
6757 @end example
6758
6759 @item
6760 Apply default filters and temporal denoiser:
6761 @example
6762 pp=default/tmpnoise|1|2|3
6763 @end example
6764
6765 @item
6766 Apply deblocking on luminance only, and switch vertical deblocking on or off
6767 automatically depending on available CPU time:
6768 @example
6769 pp=hb|y/vb|a
6770 @end example
6771 @end itemize
6772
6773 @section psnr
6774
6775 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
6776 Ratio) between two input videos.
6777
6778 This filter takes in input two input videos, the first input is
6779 considered the "main" source and is passed unchanged to the
6780 output. The second input is used as a "reference" video for computing
6781 the PSNR.
6782
6783 Both video inputs must have the same resolution and pixel format for
6784 this filter to work correctly. Also it assumes that both inputs
6785 have the same number of frames, which are compared one by one.
6786
6787 The obtained average PSNR is printed through the logging system.
6788
6789 The filter stores the accumulated MSE (mean squared error) of each
6790 frame, and at the end of the processing it is averaged across all frames
6791 equally, and the following formula is applied to obtain the PSNR:
6792
6793 @example
6794 PSNR = 10*log10(MAX^2/MSE)
6795 @end example
6796
6797 Where MAX is the average of the maximum values of each component of the
6798 image.
6799
6800 The description of the accepted parameters follows.
6801
6802 @table @option
6803 @item stats_file, f
6804 If specified the filter will use the named file to save the PSNR of
6805 each individual frame.
6806 @end table
6807
6808 The file printed if @var{stats_file} is selected, contains a sequence of
6809 key/value pairs of the form @var{key}:@var{value} for each compared
6810 couple of frames.
6811
6812 A description of each shown parameter follows:
6813
6814 @table @option
6815 @item n
6816 sequential number of the input frame, starting from 1
6817
6818 @item mse_avg
6819 Mean Square Error pixel-by-pixel average difference of the compared
6820 frames, averaged over all the image components.
6821
6822 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_g, mse_a
6823 Mean Square Error pixel-by-pixel average difference of the compared
6824 frames for the component specified by the suffix.
6825
6826 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
6827 Peak Signal to Noise ratio of the compared frames for the component
6828 specified by the suffix.
6829 @end table
6830
6831 For example:
6832 @example
6833 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
6834 [main][ref] psnr="stats_file=stats.log" [out]
6835 @end example
6836
6837 On this example the input file being processed is compared with the
6838 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
6839 is stored in @file{stats.log}.
6840
6841 @anchor{pullup}
6842 @section pullup
6843
6844 Pulldown reversal (inverse telecine) filter, capable of handling mixed
6845 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
6846 content.
6847
6848 The pullup filter is designed to take advantage of future context in making
6849 its decisions. This filter is stateless in the sense that it does not lock
6850 onto a pattern to follow, but it instead looks forward to the following
6851 fields in order to identify matches and rebuild progressive frames.
6852
6853 To produce content with an even framerate, insert the fps filter after
6854 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
6855 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
6856
6857 The filter accepts the following options:
6858
6859 @table @option
6860 @item jl
6861 @item jr
6862 @item jt
6863 @item jb
6864 These options set the amount of "junk" to ignore at the left, right, top, and
6865 bottom of the image, respectively. Left and right are in units of 8 pixels,
6866 while top and bottom are in units of 2 lines.
6867 The default is 8 pixels on each side.
6868
6869 @item sb
6870 Set the strict breaks. Setting this option to 1 will reduce the chances of
6871 filter generating an occasional mismatched frame, but it may also cause an
6872 excessive number of frames to be dropped during high motion sequences.
6873 Conversely, setting it to -1 will make filter match fields more easily.
6874 This may help processing of video where there is slight blurring between
6875 the fields, but may also cause there to be interlaced frames in the output.
6876 Default value is @code{0}.
6877
6878 @item mp
6879 Set the metric plane to use. It accepts the following values:
6880 @table @samp
6881 @item l
6882 Use luma plane.
6883
6884 @item u
6885 Use chroma blue plane.
6886
6887 @item v
6888 Use chroma red plane.
6889 @end table
6890
6891 This option may be set to use chroma plane instead of the default luma plane
6892 for doing filter's computations. This may improve accuracy on very clean
6893 source material, but more likely will decrease accuracy, especially if there
6894 is chroma noise (rainbow effect) or any grayscale video.
6895 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
6896 load and make pullup usable in realtime on slow machines.
6897 @end table
6898
6899 For best results (without duplicated frames in the output file) it is
6900 necessary to change the output frame rate. For example, to inverse
6901 telecine NTSC input:
6902 @example
6903 ffmpeg -i input -vf pullup -r 24000/1001 ...
6904 @end example
6905
6906 @section removelogo
6907
6908 Suppress a TV station logo, using an image file to determine which
6909 pixels comprise the logo. It works by filling in the pixels that
6910 comprise the logo with neighboring pixels.
6911
6912 The filter accepts the following options:
6913
6914 @table @option
6915 @item filename, f
6916 Set the filter bitmap file, which can be any image format supported by
6917 libavformat. The width and height of the image file must match those of the
6918 video stream being processed.
6919 @end table
6920
6921 Pixels in the provided bitmap image with a value of zero are not
6922 considered part of the logo, non-zero pixels are considered part of
6923 the logo. If you use white (255) for the logo and black (0) for the
6924 rest, you will be safe. For making the filter bitmap, it is
6925 recommended to take a screen capture of a black frame with the logo
6926 visible, and then using a threshold filter followed by the erode
6927 filter once or twice.
6928
6929 If needed, little splotches can be fixed manually. Remember that if
6930 logo pixels are not covered, the filter quality will be much
6931 reduced. Marking too many pixels as part of the logo does not hurt as
6932 much, but it will increase the amount of blurring needed to cover over
6933 the image and will destroy more information than necessary, and extra
6934 pixels will slow things down on a large logo.
6935
6936 @section rotate
6937
6938 Rotate video by an arbitrary angle expressed in radians.
6939
6940 The filter accepts the following options:
6941
6942 A description of the optional parameters follows.
6943 @table @option
6944 @item angle, a
6945 Set an expression for the angle by which to rotate the input video
6946 clockwise, expressed as a number of radians. A negative value will
6947 result in a counter-clockwise rotation. By default it is set to "0".
6948
6949 This expression is evaluated for each frame.
6950
6951 @item out_w, ow
6952 Set the output width expression, default value is "iw".
6953 This expression is evaluated just once during configuration.
6954
6955 @item out_h, oh
6956 Set the output height expression, default value is "ih".
6957 This expression is evaluated just once during configuration.
6958
6959 @item bilinear
6960 Enable bilinear interpolation if set to 1, a value of 0 disables
6961 it. Default value is 1.
6962
6963 @item fillcolor, c
6964 Set the color used to fill the output area not covered by the rotated
6965 image. For the generalsyntax of this option, check the "Color" section in the
6966 ffmpeg-utils manual. If the special value "none" is selected then no
6967 background is printed (useful for example if the background is never shown).
6968
6969 Default value is "black".
6970 @end table
6971
6972 The expressions for the angle and the output size can contain the
6973 following constants and functions:
6974
6975 @table @option
6976 @item n
6977 sequential number of the input frame, starting from 0. It is always NAN
6978 before the first frame is filtered.
6979
6980 @item t
6981 time in seconds of the input frame, it is set to 0 when the filter is
6982 configured. It is always NAN before the first frame is filtered.
6983
6984 @item hsub
6985 @item vsub
6986 horizontal and vertical chroma subsample values. For example for the
6987 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
6988
6989 @item in_w, iw
6990 @item in_h, ih
6991 the input video width and height
6992
6993 @item out_w, ow
6994 @item out_h, oh
6995 the output width and height, that is the size of the padded area as
6996 specified by the @var{width} and @var{height} expressions
6997
6998 @item rotw(a)
6999 @item roth(a)
7000 the minimal width/height required for completely containing the input
7001 video rotated by @var{a} radians.
7002
7003 These are only available when computing the @option{out_w} and
7004 @option{out_h} expressions.
7005 @end table
7006
7007 @subsection Examples
7008
7009 @itemize
7010 @item
7011 Rotate the input by PI/6 radians clockwise:
7012 @example
7013 rotate=PI/6
7014 @end example
7015
7016 @item
7017 Rotate the input by PI/6 radians counter-clockwise:
7018 @example
7019 rotate=-PI/6
7020 @end example
7021
7022 @item
7023 Rotate the input by 45 degrees clockwise:
7024 @example
7025 rotate=45*PI/180
7026 @end example
7027
7028 @item
7029 Apply a constant rotation with period T, starting from an angle of PI/3:
7030 @example
7031 rotate=PI/3+2*PI*t/T
7032 @end example
7033
7034 @item
7035 Make the input video rotation oscillating with a period of T
7036 seconds and an amplitude of A radians:
7037 @example
7038 rotate=A*sin(2*PI/T*t)
7039 @end example
7040
7041 @item
7042 Rotate the video, output size is chosen so that the whole rotating
7043 input video is always completely contained in the output:
7044 @example
7045 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
7046 @end example
7047
7048 @item
7049 Rotate the video, reduce the output size so that no background is ever
7050 shown:
7051 @example
7052 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
7053 @end example
7054 @end itemize
7055
7056 @subsection Commands
7057
7058 The filter supports the following commands:
7059
7060 @table @option
7061 @item a, angle
7062 Set the angle expression.
7063 The command accepts the same syntax of the corresponding option.
7064
7065 If the specified expression is not valid, it is kept at its current
7066 value.
7067 @end table
7068
7069 @section sab
7070
7071 Apply Shape Adaptive Blur.
7072
7073 The filter accepts the following options:
7074
7075 @table @option
7076 @item luma_radius, lr
7077 Set luma blur filter strength, must be a value in range 0.1-4.0, default
7078 value is 1.0. A greater value will result in a more blurred image, and
7079 in slower processing.
7080
7081 @item luma_pre_filter_radius, lpfr
7082 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
7083 value is 1.0.
7084
7085 @item luma_strength, ls
7086 Set luma maximum difference between pixels to still be considered, must
7087 be a value in the 0.1-100.0 range, default value is 1.0.
7088
7089 @item chroma_radius, cr
7090 Set chroma blur filter strength, must be a value in range 0.1-4.0. A
7091 greater value will result in a more blurred image, and in slower
7092 processing.
7093
7094 @item chroma_pre_filter_radius, cpfr
7095 Set chroma pre-filter radius, must be a value in the 0.1-2.0 range.
7096
7097 @item chroma_strength, cs
7098 Set chroma maximum difference between pixels to still be considered,
7099 must be a value in the 0.1-100.0 range.
7100 @end table
7101
7102 Each chroma option value, if not explicitly specified, is set to the
7103 corresponding luma option value.
7104
7105 @anchor{scale}
7106 @section scale
7107
7108 Scale (resize) the input video, using the libswscale library.
7109
7110 The scale filter forces the output display aspect ratio to be the same
7111 of the input, by changing the output sample aspect ratio.
7112
7113 If the input image format is different from the format requested by
7114 the next filter, the scale filter will convert the input to the
7115 requested format.
7116
7117 @subsection Options
7118 The filter accepts the following options, or any of the options
7119 supported by the libswscale scaler.
7120
7121 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
7122 the complete list of scaler options.
7123
7124 @table @option
7125 @item width, w
7126 @item height, h
7127 Set the output video dimension expression. Default value is the input
7128 dimension.
7129
7130 If the value is 0, the input width is used for the output.
7131
7132 If one of the values is -1, the scale filter will use a value that
7133 maintains the aspect ratio of the input image, calculated from the
7134 other specified dimension. If both of them are -1, the input size is
7135 used
7136
7137 If one of the values is -n with n > 1, the scale filter will also use a value
7138 that maintains the aspect ratio of the input image, calculated from the other
7139 specified dimension. After that it will, however, make sure that the calculated
7140 dimension is divisible by n and adjust the value if necessary.
7141
7142 See below for the list of accepted constants for use in the dimension
7143 expression.
7144
7145 @item interl
7146 Set the interlacing mode. It accepts the following values:
7147
7148 @table @samp
7149 @item 1
7150 Force interlaced aware scaling.
7151
7152 @item 0
7153 Do not apply interlaced scaling.
7154
7155 @item -1
7156 Select interlaced aware scaling depending on whether the source frames
7157 are flagged as interlaced or not.
7158 @end table
7159
7160 Default value is @samp{0}.
7161
7162 @item flags
7163 Set libswscale scaling flags. See
7164 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
7165 complete list of values. If not explicitly specified the filter applies
7166 the default flags.
7167
7168 @item size, s
7169 Set the video size. For the syntax of this option, check the "Video size"
7170 section in the ffmpeg-utils manual.
7171
7172 @item in_color_matrix
7173 @item out_color_matrix
7174 Set in/output YCbCr color space type.
7175
7176 This allows the autodetected value to be overridden as well as allows forcing
7177 a specific value used for the output and encoder.
7178
7179 If not specified, the color space type depends on the pixel format.
7180
7181 Possible values:
7182
7183 @table @samp
7184 @item auto
7185 Choose automatically.
7186
7187 @item bt709
7188 Format conforming to International Telecommunication Union (ITU)
7189 Recommendation BT.709.
7190
7191 @item fcc
7192 Set color space conforming to the United States Federal Communications
7193 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
7194
7195 @item bt601
7196 Set color space conforming to:
7197
7198 @itemize
7199 @item
7200 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
7201
7202 @item
7203 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
7204
7205 @item
7206 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
7207
7208 @end itemize
7209
7210 @item smpte240m
7211 Set color space conforming to SMPTE ST 240:1999.
7212 @end table
7213
7214 @item in_range
7215 @item out_range
7216 Set in/output YCbCr sample range.
7217
7218 This allows the autodetected value to be overridden as well as allows forcing
7219 a specific value used for the output and encoder. If not specified, the
7220 range depends on the pixel format. Possible values:
7221
7222 @table @samp
7223 @item auto
7224 Choose automatically.
7225
7226 @item jpeg/full/pc
7227 Set full range (0-255 in case of 8-bit luma).
7228
7229 @item mpeg/tv
7230 Set "MPEG" range (16-235 in case of 8-bit luma).
7231 @end table
7232
7233 @item force_original_aspect_ratio
7234 Enable decreasing or increasing output video width or height if necessary to
7235 keep the original aspect ratio. Possible values:
7236
7237 @table @samp
7238 @item disable
7239 Scale the video as specified and disable this feature.
7240
7241 @item decrease
7242 The output video dimensions will automatically be decreased if needed.
7243
7244 @item increase
7245 The output video dimensions will automatically be increased if needed.
7246
7247 @end table
7248
7249 One useful instance of this option is that when you know a specific device's
7250 maximum allowed resolution, you can use this to limit the output video to
7251 that, while retaining the aspect ratio. For example, device A allows
7252 1280x720 playback, and your video is 1920x800. Using this option (set it to
7253 decrease) and specifying 1280x720 to the command line makes the output
7254 1280x533.
7255
7256 Please note that this is a different thing than specifying -1 for @option{w}
7257 or @option{h}, you still need to specify the output resolution for this option
7258 to work.
7259
7260 @end table
7261
7262 The values of the @option{w} and @option{h} options are expressions
7263 containing the following constants:
7264
7265 @table @var
7266 @item in_w
7267 @item in_h
7268 The input width and height
7269
7270 @item iw
7271 @item ih
7272 These are the same as @var{in_w} and @var{in_h}.
7273
7274 @item out_w
7275 @item out_h
7276 The output (scaled) width and height
7277
7278 @item ow
7279 @item oh
7280 These are the same as @var{out_w} and @var{out_h}
7281
7282 @item a
7283 The same as @var{iw} / @var{ih}
7284
7285 @item sar
7286 input sample aspect ratio
7287
7288 @item dar
7289 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
7290
7291 @item hsub
7292 @item vsub
7293 horizontal and vertical input chroma subsample values. For example for the
7294 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
7295
7296 @item ohsub
7297 @item ovsub
7298 horizontal and vertical output chroma subsample values. For example for the
7299 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
7300 @end table
7301
7302 @subsection Examples
7303
7304 @itemize
7305 @item
7306 Scale the input video to a size of 200x100
7307 @example
7308 scale=w=200:h=100
7309 @end example
7310
7311 This is equivalent to:
7312 @example
7313 scale=200:100
7314 @end example
7315
7316 or:
7317 @example
7318 scale=200x100
7319 @end example
7320
7321 @item
7322 Specify a size abbreviation for the output size:
7323 @example
7324 scale=qcif
7325 @end example
7326
7327 which can also be written as:
7328 @example
7329 scale=size=qcif
7330 @end example
7331
7332 @item
7333 Scale the input to 2x:
7334 @example
7335 scale=w=2*iw:h=2*ih
7336 @end example
7337
7338 @item
7339 The above is the same as:
7340 @example
7341 scale=2*in_w:2*in_h
7342 @end example
7343
7344 @item
7345 Scale the input to 2x with forced interlaced scaling:
7346 @example
7347 scale=2*iw:2*ih:interl=1
7348 @end example
7349
7350 @item
7351 Scale the input to half size:
7352 @example
7353 scale=w=iw/2:h=ih/2
7354 @end example
7355
7356 @item
7357 Increase the width, and set the height to the same size:
7358 @example
7359 scale=3/2*iw:ow
7360 @end example
7361
7362 @item
7363 Seek Greek harmony:
7364 @example
7365 scale=iw:1/PHI*iw
7366 scale=ih*PHI:ih
7367 @end example
7368
7369 @item
7370 Increase the height, and set the width to 3/2 of the height:
7371 @example
7372 scale=w=3/2*oh:h=3/5*ih
7373 @end example
7374
7375 @item
7376 Increase the size, making the size a multiple of the chroma
7377 subsample values:
7378 @example
7379 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
7380 @end example
7381
7382 @item
7383 Increase the width to a maximum of 500 pixels,
7384 keeping the same aspect ratio as the input:
7385 @example
7386 scale=w='min(500\, iw*3/2):h=-1'
7387 @end example
7388 @end itemize
7389
7390 @section separatefields
7391
7392 The @code{separatefields} takes a frame-based video input and splits
7393 each frame into its components fields, producing a new half height clip
7394 with twice the frame rate and twice the frame count.
7395
7396 This filter use field-dominance information in frame to decide which
7397 of each pair of fields to place first in the output.
7398 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
7399
7400 @section setdar, setsar
7401
7402 The @code{setdar} filter sets the Display Aspect Ratio for the filter
7403 output video.
7404
7405 This is done by changing the specified Sample (aka Pixel) Aspect
7406 Ratio, according to the following equation:
7407 @example
7408 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
7409 @end example
7410
7411 Keep in mind that the @code{setdar} filter does not modify the pixel
7412 dimensions of the video frame. Also, the display aspect ratio set by
7413 this filter may be changed by later filters in the filterchain,
7414 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
7415 applied.
7416
7417 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
7418 the filter output video.
7419
7420 Note that as a consequence of the application of this filter, the
7421 output display aspect ratio will change according to the equation
7422 above.
7423
7424 Keep in mind that the sample aspect ratio set by the @code{setsar}
7425 filter may be changed by later filters in the filterchain, e.g. if
7426 another "setsar" or a "setdar" filter is applied.
7427
7428 It accepts the following parameters:
7429
7430 @table @option
7431 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
7432 Set the aspect ratio used by the filter.
7433
7434 The parameter can be a floating point number string, an expression, or
7435 a string of the form @var{num}:@var{den}, where @var{num} and
7436 @var{den} are the numerator and denominator of the aspect ratio. If
7437 the parameter is not specified, it is assumed the value "0".
7438 In case the form "@var{num}:@var{den}" is used, the @code{:} character
7439 should be escaped.
7440
7441 @item max
7442 Set the maximum integer value to use for expressing numerator and
7443 denominator when reducing the expressed aspect ratio to a rational.
7444 Default value is @code{100}.
7445
7446 @end table
7447
7448 The parameter @var{sar} is an expression containing
7449 the following constants:
7450
7451 @table @option
7452 @item E, PI, PHI
7453 These are approximated values for the mathematical constants e
7454 (Euler's number), pi (Greek pi), and phi (the golden ratio).
7455
7456 @item w, h
7457 The input width and height.
7458
7459 @item a
7460 These are the same as @var{w} / @var{h}.
7461
7462 @item sar
7463 The input sample aspect ratio.
7464
7465 @item dar
7466 The input display aspect ratio. It is the same as
7467 (@var{w} / @var{h}) * @var{sar}.
7468
7469 @item hsub, vsub
7470 Horizontal and vertical chroma subsample values. For example, for the
7471 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
7472 @end table
7473
7474 @subsection Examples
7475
7476 @itemize
7477
7478 @item
7479 To change the display aspect ratio to 16:9, specify one of the following:
7480 @example
7481 setdar=dar=1.77777
7482 setdar=dar=16/9
7483 setdar=dar=1.77777
7484 @end example
7485
7486 @item
7487 To change the sample aspect ratio to 10:11, specify:
7488 @example
7489 setsar=sar=10/11
7490 @end example
7491
7492 @item
7493 To set a display aspect ratio of 16:9, and specify a maximum integer value of
7494 1000 in the aspect ratio reduction, use the command:
7495 @example
7496 setdar=ratio=16/9:max=1000
7497 @end example
7498
7499 @end itemize
7500
7501 @anchor{setfield}
7502 @section setfield
7503
7504 Force field for the output video frame.
7505
7506 The @code{setfield} filter marks the interlace type field for the
7507 output frames. It does not change the input frame, but only sets the
7508 corresponding property, which affects how the frame is treated by
7509 following filters (e.g. @code{fieldorder} or @code{yadif}).
7510
7511 The filter accepts the following options:
7512
7513 @table @option
7514
7515 @item mode
7516 Available values are:
7517
7518 @table @samp
7519 @item auto
7520 Keep the same field property.
7521
7522 @item bff
7523 Mark the frame as bottom-field-first.
7524
7525 @item tff
7526 Mark the frame as top-field-first.
7527
7528 @item prog
7529 Mark the frame as progressive.
7530 @end table
7531 @end table
7532
7533 @section showinfo
7534
7535 Show a line containing various information for each input video frame.
7536 The input video is not modified.
7537
7538 The shown line contains a sequence of key/value pairs of the form
7539 @var{key}:@var{value}.
7540
7541 It accepts the following parameters:
7542
7543 @table @option
7544 @item n
7545 The (sequential) number of the input frame, starting from 0.
7546
7547 @item pts
7548 The Presentation TimeStamp of the input frame, expressed as a number of
7549 time base units. The time base unit depends on the filter input pad.
7550
7551 @item pts_time
7552 The Presentation TimeStamp of the input frame, expressed as a number of
7553 seconds.
7554
7555 @item pos
7556 The position of the frame in the input stream, or -1 if this information is
7557 unavailable and/or meaningless (for example in case of synthetic video).
7558
7559 @item fmt
7560 The pixel format name.
7561
7562 @item sar
7563 The sample aspect ratio of the input frame, expressed in the form
7564 @var{num}/@var{den}.
7565
7566 @item s
7567 The size of the input frame. For the syntax of this option, check the "Video size"
7568 section in the ffmpeg-utils manual.
7569
7570 @item i
7571 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
7572 for bottom field first).
7573
7574 @item iskey
7575 This is 1 if the frame is a key frame, 0 otherwise.
7576
7577 @item type
7578 The picture type of the input frame ("I" for an I-frame, "P" for a
7579 P-frame, "B" for a B-frame, or "?" for an unknown type).
7580 Also refer to the documentation of the @code{AVPictureType} enum and of
7581 the @code{av_get_picture_type_char} function defined in
7582 @file{libavutil/avutil.h}.
7583
7584 @item checksum
7585 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
7586
7587 @item plane_checksum
7588 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
7589 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
7590 @end table
7591
7592 @section shuffleplanes
7593
7594 Reorder and/or duplicate video planes.
7595
7596 It accepts the following parameters:
7597
7598 @table @option
7599
7600 @item map0
7601 The index of the input plane to be used as the first output plane.
7602
7603 @item map1
7604 The index of the input plane to be used as the second output plane.
7605
7606 @item map2
7607 The index of the input plane to be used as the third output plane.
7608
7609 @item map3
7610 The index of the input plane to be used as the fourth output plane.
7611
7612 @end table
7613
7614 The first plane has the index 0. The default is to keep the input unchanged.
7615
7616 Swap the second and third planes of the input:
7617 @example
7618 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
7619 @end example
7620
7621 @section signalstats
7622 Evaluate various visual metrics that assist in determining issues associated
7623 with the digitization of analog video media.
7624
7625 By default the filter will log these metadata values:
7626
7627 @table @option
7628 @item YMIN
7629 Display the minimal Y value contained within the input frame. Expressed in
7630 range of [0-255].
7631
7632 @item YLOW
7633 Display the Y value at the 10% percentile within the input frame. Expressed in
7634 range of [0-255].
7635
7636 @item YAVG
7637 Display the average Y value within the input frame. Expressed in range of
7638 [0-255].
7639
7640 @item YHIGH
7641 Display the Y value at the 90% percentile within the input frame. Expressed in
7642 range of [0-255].
7643
7644 @item YMAX
7645 Display the maximum Y value contained within the input frame. Expressed in
7646 range of [0-255].
7647
7648 @item UMIN
7649 Display the minimal U value contained within the input frame. Expressed in
7650 range of [0-255].
7651
7652 @item ULOW
7653 Display the U value at the 10% percentile within the input frame. Expressed in
7654 range of [0-255].
7655
7656 @item UAVG
7657 Display the average U value within the input frame. Expressed in range of
7658 [0-255].
7659
7660 @item UHIGH
7661 Display the U value at the 90% percentile within the input frame. Expressed in
7662 range of [0-255].
7663
7664 @item UMAX
7665 Display the maximum U value contained within the input frame. Expressed in
7666 range of [0-255].
7667
7668 @item VMIN
7669 Display the minimal V value contained within the input frame. Expressed in
7670 range of [0-255].
7671
7672 @item VLOW
7673 Display the V value at the 10% percentile within the input frame. Expressed in
7674 range of [0-255].
7675
7676 @item VAVG
7677 Display the average V value within the input frame. Expressed in range of
7678 [0-255].
7679
7680 @item VHIGH
7681 Display the V value at the 90% percentile within the input frame. Expressed in
7682 range of [0-255].
7683
7684 @item VMAX
7685 Display the maximum V value contained within the input frame. Expressed in
7686 range of [0-255].
7687
7688 @item SATMIN
7689 Display the minimal saturation value contained within the input frame.
7690 Expressed in range of [0-~181.02].
7691
7692 @item SATLOW
7693 Display the saturation value at the 10% percentile within the input frame.
7694 Expressed in range of [0-~181.02].
7695
7696 @item SATAVG
7697 Display the average saturation value within the input frame. Expressed in range
7698 of [0-~181.02].
7699
7700 @item SATHIGH
7701 Display the saturation value at the 90% percentile within the input frame.
7702 Expressed in range of [0-~181.02].
7703
7704 @item SATMAX
7705 Display the maximum saturation value contained within the input frame.
7706 Expressed in range of [0-~181.02].
7707
7708 @item HUEMED
7709 Display the median value for hue within the input frame. Expressed in range of
7710 [0-360].
7711
7712 @item HUEAVG
7713 Display the average value for hue within the input frame. Expressed in range of
7714 [0-360].
7715
7716 @item YDIF
7717 Display the average of sample value difference between all values of the Y
7718 plane in the current frame and corresponding values of the previous input frame.
7719 Expressed in range of [0-255].
7720
7721 @item UDIF
7722 Display the average of sample value difference between all values of the U
7723 plane in the current frame and corresponding values of the previous input frame.
7724 Expressed in range of [0-255].
7725
7726 @item VDIF
7727 Display the average of sample value difference between all values of the V
7728 plane in the current frame and corresponding values of the previous input frame.
7729 Expressed in range of [0-255].
7730 @end table
7731
7732 The filter accepts the following options:
7733
7734 @table @option
7735 @item stat
7736 @item out
7737
7738 @option{stat} specify an additional form of image analysis.
7739 @option{out} output video with the specified type of pixel highlighted.
7740
7741 Both options accept the following values:
7742
7743 @table @samp
7744 @item tout
7745 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
7746 unlike the neighboring pixels of the same field. Examples of temporal outliers
7747 include the results of video dropouts, head clogs, or tape tracking issues.
7748
7749 @item vrep
7750 Identify @var{vertical line repetition}. Vertical line repetition includes
7751 similar rows of pixels within a frame. In born-digital video vertical line
7752 repetition is common, but this pattern is uncommon in video digitized from an
7753 analog source. When it occurs in video that results from the digitization of an
7754 analog source it can indicate concealment from a dropout compensator.
7755
7756 @item brng
7757 Identify pixels that fall outside of legal broadcast range.
7758 @end table
7759
7760 @item color, c
7761 Set the highlight color for the @option{out} option. The default color is
7762 yellow.
7763 @end table
7764
7765 @subsection Examples
7766
7767 @itemize
7768 @item
7769 Output data of various video metrics:
7770 @example
7771 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
7772 @end example
7773
7774 @item
7775 Output specific data about the minimum and maximum values of the Y plane per frame:
7776 @example
7777 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
7778 @end example
7779
7780 @item
7781 Playback video while highlighting pixels that are outside of broadcast range in red.
7782 @example
7783 ffplay example.mov -vf signalstats="out=brng:color=red"
7784 @end example
7785
7786 @item
7787 Playback video with signalstats metadata drawn over the frame.
7788 @example
7789 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
7790 @end example
7791
7792 The contents of signalstat_drawtext.txt used in the command are:
7793 @example
7794 time %@{pts:hms@}
7795 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
7796 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
7797 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
7798 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
7799
7800 @end example
7801 @end itemize
7802
7803 @anchor{smartblur}
7804 @section smartblur
7805
7806 Blur the input video without impacting the outlines.
7807
7808 It accepts the following options:
7809
7810 @table @option
7811 @item luma_radius, lr
7812 Set the luma radius. The option value must be a float number in
7813 the range [0.1,5.0] that specifies the variance of the gaussian filter
7814 used to blur the image (slower if larger). Default value is 1.0.
7815
7816 @item luma_strength, ls
7817 Set the luma strength. The option value must be a float number
7818 in the range [-1.0,1.0] that configures the blurring. A value included
7819 in [0.0,1.0] will blur the image whereas a value included in
7820 [-1.0,0.0] will sharpen the image. Default value is 1.0.
7821
7822 @item luma_threshold, lt
7823 Set the luma threshold used as a coefficient to determine
7824 whether a pixel should be blurred or not. The option value must be an
7825 integer in the range [-30,30]. A value of 0 will filter all the image,
7826 a value included in [0,30] will filter flat areas and a value included
7827 in [-30,0] will filter edges. Default value is 0.
7828
7829 @item chroma_radius, cr
7830 Set the chroma radius. The option value must be a float number in
7831 the range [0.1,5.0] that specifies the variance of the gaussian filter
7832 used to blur the image (slower if larger). Default value is 1.0.
7833
7834 @item chroma_strength, cs
7835 Set the chroma strength. The option value must be a float number
7836 in the range [-1.0,1.0] that configures the blurring. A value included
7837 in [0.0,1.0] will blur the image whereas a value included in
7838 [-1.0,0.0] will sharpen the image. Default value is 1.0.
7839
7840 @item chroma_threshold, ct
7841 Set the chroma threshold used as a coefficient to determine
7842 whether a pixel should be blurred or not. The option value must be an
7843 integer in the range [-30,30]. A value of 0 will filter all the image,
7844 a value included in [0,30] will filter flat areas and a value included
7845 in [-30,0] will filter edges. Default value is 0.
7846 @end table
7847
7848 If a chroma option is not explicitly set, the corresponding luma value
7849 is set.
7850
7851 @section stereo3d
7852
7853 Convert between different stereoscopic image formats.
7854
7855 The filters accept the following options:
7856
7857 @table @option
7858 @item in
7859 Set stereoscopic image format of input.
7860
7861 Available values for input image formats are:
7862 @table @samp
7863 @item sbsl
7864 side by side parallel (left eye left, right eye right)
7865
7866 @item sbsr
7867 side by side crosseye (right eye left, left eye right)
7868
7869 @item sbs2l
7870 side by side parallel with half width resolution
7871 (left eye left, right eye right)
7872
7873 @item sbs2r
7874 side by side crosseye with half width resolution
7875 (right eye left, left eye right)
7876
7877 @item abl
7878 above-below (left eye above, right eye below)
7879
7880 @item abr
7881 above-below (right eye above, left eye below)
7882
7883 @item ab2l
7884 above-below with half height resolution
7885 (left eye above, right eye below)
7886
7887 @item ab2r
7888 above-below with half height resolution
7889 (right eye above, left eye below)
7890
7891 @item al
7892 alternating frames (left eye first, right eye second)
7893
7894 @item ar
7895 alternating frames (right eye first, left eye second)
7896
7897 Default value is @samp{sbsl}.
7898 @end table
7899
7900 @item out
7901 Set stereoscopic image format of output.
7902
7903 Available values for output image formats are all the input formats as well as:
7904 @table @samp
7905 @item arbg
7906 anaglyph red/blue gray
7907 (red filter on left eye, blue filter on right eye)
7908
7909 @item argg
7910 anaglyph red/green gray
7911 (red filter on left eye, green filter on right eye)
7912
7913 @item arcg
7914 anaglyph red/cyan gray
7915 (red filter on left eye, cyan filter on right eye)
7916
7917 @item arch
7918 anaglyph red/cyan half colored
7919 (red filter on left eye, cyan filter on right eye)
7920
7921 @item arcc
7922 anaglyph red/cyan color
7923 (red filter on left eye, cyan filter on right eye)
7924
7925 @item arcd
7926 anaglyph red/cyan color optimized with the least squares projection of dubois
7927 (red filter on left eye, cyan filter on right eye)
7928
7929 @item agmg
7930 anaglyph green/magenta gray
7931 (green filter on left eye, magenta filter on right eye)
7932
7933 @item agmh
7934 anaglyph green/magenta half colored
7935 (green filter on left eye, magenta filter on right eye)
7936
7937 @item agmc
7938 anaglyph green/magenta colored
7939 (green filter on left eye, magenta filter on right eye)
7940
7941 @item agmd
7942 anaglyph green/magenta color optimized with the least squares projection of dubois
7943 (green filter on left eye, magenta filter on right eye)
7944
7945 @item aybg
7946 anaglyph yellow/blue gray
7947 (yellow filter on left eye, blue filter on right eye)
7948
7949 @item aybh
7950 anaglyph yellow/blue half colored
7951 (yellow filter on left eye, blue filter on right eye)
7952
7953 @item aybc
7954 anaglyph yellow/blue colored
7955 (yellow filter on left eye, blue filter on right eye)
7956
7957 @item aybd
7958 anaglyph yellow/blue color optimized with the least squares projection of dubois
7959 (yellow filter on left eye, blue filter on right eye)
7960
7961 @item irl
7962 interleaved rows (left eye has top row, right eye starts on next row)
7963
7964 @item irr
7965 interleaved rows (right eye has top row, left eye starts on next row)
7966
7967 @item ml
7968 mono output (left eye only)
7969
7970 @item mr
7971 mono output (right eye only)
7972 @end table
7973
7974 Default value is @samp{arcd}.
7975 @end table
7976
7977 @subsection Examples
7978
7979 @itemize
7980 @item
7981 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
7982 @example
7983 stereo3d=sbsl:aybd
7984 @end example
7985
7986 @item
7987 Convert input video from above bellow (left eye above, right eye below) to side by side crosseye.
7988 @example
7989 stereo3d=abl:sbsr
7990 @end example
7991 @end itemize
7992
7993 @section spp
7994
7995 Apply a simple postprocessing filter that compresses and decompresses the image
7996 at several (or - in the case of @option{quality} level @code{6} - all) shifts
7997 and average the results.
7998
7999 The filter accepts the following options:
8000
8001 @table @option
8002 @item quality
8003 Set quality. This option defines the number of levels for averaging. It accepts
8004 an integer in the range 0-6. If set to @code{0}, the filter will have no
8005 effect. A value of @code{6} means the higher quality. For each increment of
8006 that value the speed drops by a factor of approximately 2.  Default value is
8007 @code{3}.
8008
8009 @item qp
8010 Force a constant quantization parameter. If not set, the filter will use the QP
8011 from the video stream (if available).
8012
8013 @item mode
8014 Set thresholding mode. Available modes are:
8015
8016 @table @samp
8017 @item hard
8018 Set hard thresholding (default).
8019 @item soft
8020 Set soft thresholding (better de-ringing effect, but likely blurrier).
8021 @end table
8022
8023 @item use_bframe_qp
8024 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
8025 option may cause flicker since the B-Frames have often larger QP. Default is
8026 @code{0} (not enabled).
8027 @end table
8028
8029 @anchor{subtitles}
8030 @section subtitles
8031
8032 Draw subtitles on top of input video using the libass library.
8033
8034 To enable compilation of this filter you need to configure FFmpeg with
8035 @code{--enable-libass}. This filter also requires a build with libavcodec and
8036 libavformat to convert the passed subtitles file to ASS (Advanced Substation
8037 Alpha) subtitles format.
8038
8039 The filter accepts the following options:
8040
8041 @table @option
8042 @item filename, f
8043 Set the filename of the subtitle file to read. It must be specified.
8044
8045 @item original_size
8046 Specify the size of the original video, the video for which the ASS file
8047 was composed. For the syntax of this option, check the "Video size" section in
8048 the ffmpeg-utils manual. Due to a misdesign in ASS aspect ratio arithmetic,
8049 this is necessary to correctly scale the fonts if the aspect ratio has been
8050 changed.
8051
8052 @item charenc
8053 Set subtitles input character encoding. @code{subtitles} filter only. Only
8054 useful if not UTF-8.
8055
8056 @item stream_index, si
8057 Set subtitles stream index. @code{subtitles} filter only.
8058 @end table
8059
8060 If the first key is not specified, it is assumed that the first value
8061 specifies the @option{filename}.
8062
8063 For example, to render the file @file{sub.srt} on top of the input
8064 video, use the command:
8065 @example
8066 subtitles=sub.srt
8067 @end example
8068
8069 which is equivalent to:
8070 @example
8071 subtitles=filename=sub.srt
8072 @end example
8073
8074 To render the default subtitles stream from file @file{video.mkv}, use:
8075 @example
8076 subtitles=video.mkv
8077 @end example
8078
8079 To render the second subtitles stream from that file, use:
8080 @example
8081 subtitles=video.mkv:si=1
8082 @end example
8083
8084 @section super2xsai
8085
8086 Scale the input by 2x and smooth using the Super2xSaI (Scale and
8087 Interpolate) pixel art scaling algorithm.
8088
8089 Useful for enlarging pixel art images without reducing sharpness.
8090
8091 @section swapuv
8092 Swap U & V plane.
8093
8094 @section telecine
8095
8096 Apply telecine process to the video.
8097
8098 This filter accepts the following options:
8099
8100 @table @option
8101 @item first_field
8102 @table @samp
8103 @item top, t
8104 top field first
8105 @item bottom, b
8106 bottom field first
8107 The default value is @code{top}.
8108 @end table
8109
8110 @item pattern
8111 A string of numbers representing the pulldown pattern you wish to apply.
8112 The default value is @code{23}.
8113 @end table
8114
8115 @example
8116 Some typical patterns:
8117
8118 NTSC output (30i):
8119 27.5p: 32222
8120 24p: 23 (classic)
8121 24p: 2332 (preferred)
8122 20p: 33
8123 18p: 334
8124 16p: 3444
8125
8126 PAL output (25i):
8127 27.5p: 12222
8128 24p: 222222222223 ("Euro pulldown")
8129 16.67p: 33
8130 16p: 33333334
8131 @end example
8132
8133 @section thumbnail
8134 Select the most representative frame in a given sequence of consecutive frames.
8135
8136 The filter accepts the following options:
8137
8138 @table @option
8139 @item n
8140 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
8141 will pick one of them, and then handle the next batch of @var{n} frames until
8142 the end. Default is @code{100}.
8143 @end table
8144
8145 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
8146 value will result in a higher memory usage, so a high value is not recommended.
8147
8148 @subsection Examples
8149
8150 @itemize
8151 @item
8152 Extract one picture each 50 frames:
8153 @example
8154 thumbnail=50
8155 @end example
8156
8157 @item
8158 Complete example of a thumbnail creation with @command{ffmpeg}:
8159 @example
8160 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
8161 @end example
8162 @end itemize
8163
8164 @section tile
8165
8166 Tile several successive frames together.
8167
8168 The filter accepts the following options:
8169
8170 @table @option
8171
8172 @item layout
8173 Set the grid size (i.e. the number of lines and columns). For the syntax of
8174 this option, check the "Video size" section in the ffmpeg-utils manual.
8175
8176 @item nb_frames
8177 Set the maximum number of frames to render in the given area. It must be less
8178 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
8179 the area will be used.
8180
8181 @item margin
8182 Set the outer border margin in pixels.
8183
8184 @item padding
8185 Set the inner border thickness (i.e. the number of pixels between frames). For
8186 more advanced padding options (such as having different values for the edges),
8187 refer to the pad video filter.
8188
8189 @item color
8190 Specify the color of the unused areaFor the syntax of this option, check the
8191 "Color" section in the ffmpeg-utils manual. The default value of @var{color}
8192 is "black".
8193 @end table
8194
8195 @subsection Examples
8196
8197 @itemize
8198 @item
8199 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
8200 @example
8201 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
8202 @end example
8203 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
8204 duplicating each output frame to accommodate the originally detected frame
8205 rate.
8206
8207 @item
8208 Display @code{5} pictures in an area of @code{3x2} frames,
8209 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
8210 mixed flat and named options:
8211 @example
8212 tile=3x2:nb_frames=5:padding=7:margin=2
8213 @end example
8214 @end itemize
8215
8216 @section tinterlace
8217
8218 Perform various types of temporal field interlacing.
8219
8220 Frames are counted starting from 1, so the first input frame is
8221 considered odd.
8222
8223 The filter accepts the following options:
8224
8225 @table @option
8226
8227 @item mode
8228 Specify the mode of the interlacing. This option can also be specified
8229 as a value alone. See below for a list of values for this option.
8230
8231 Available values are:
8232
8233 @table @samp
8234 @item merge, 0
8235 Move odd frames into the upper field, even into the lower field,
8236 generating a double height frame at half frame rate.
8237
8238 @item drop_odd, 1
8239 Only output even frames, odd frames are dropped, generating a frame with
8240 unchanged height at half frame rate.
8241
8242 @item drop_even, 2
8243 Only output odd frames, even frames are dropped, generating a frame with
8244 unchanged height at half frame rate.
8245
8246 @item pad, 3
8247 Expand each frame to full height, but pad alternate lines with black,
8248 generating a frame with double height at the same input frame rate.
8249
8250 @item interleave_top, 4
8251 Interleave the upper field from odd frames with the lower field from
8252 even frames, generating a frame with unchanged height at half frame rate.
8253
8254 @item interleave_bottom, 5
8255 Interleave the lower field from odd frames with the upper field from
8256 even frames, generating a frame with unchanged height at half frame rate.
8257
8258 @item interlacex2, 6
8259 Double frame rate with unchanged height. Frames are inserted each
8260 containing the second temporal field from the previous input frame and
8261 the first temporal field from the next input frame. This mode relies on
8262 the top_field_first flag. Useful for interlaced video displays with no
8263 field synchronisation.
8264 @end table
8265
8266 Numeric values are deprecated but are accepted for backward
8267 compatibility reasons.
8268
8269 Default mode is @code{merge}.
8270
8271 @item flags
8272 Specify flags influencing the filter process.
8273
8274 Available value for @var{flags} is:
8275
8276 @table @option
8277 @item low_pass_filter, vlfp
8278 Enable vertical low-pass filtering in the filter.
8279 Vertical low-pass filtering is required when creating an interlaced
8280 destination from a progressive source which contains high-frequency
8281 vertical detail. Filtering will reduce interlace 'twitter' and Moire
8282 patterning.
8283
8284 Vertical low-pass filtering can only be enabled for @option{mode}
8285 @var{interleave_top} and @var{interleave_bottom}.
8286
8287 @end table
8288 @end table
8289
8290 @section transpose
8291
8292 Transpose rows with columns in the input video and optionally flip it.
8293
8294 It accepts the following parameters:
8295
8296 @table @option
8297
8298 @item dir
8299 Specify the transposition direction.
8300
8301 Can assume the following values:
8302 @table @samp
8303 @item 0, 4, cclock_flip
8304 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
8305 @example
8306 L.R     L.l
8307 . . ->  . .
8308 l.r     R.r
8309 @end example
8310
8311 @item 1, 5, clock
8312 Rotate by 90 degrees clockwise, that is:
8313 @example
8314 L.R     l.L
8315 . . ->  . .
8316 l.r     r.R
8317 @end example
8318
8319 @item 2, 6, cclock
8320 Rotate by 90 degrees counterclockwise, that is:
8321 @example
8322 L.R     R.r
8323 . . ->  . .
8324 l.r     L.l
8325 @end example
8326
8327 @item 3, 7, clock_flip
8328 Rotate by 90 degrees clockwise and vertically flip, that is:
8329 @example
8330 L.R     r.R
8331 . . ->  . .
8332 l.r     l.L
8333 @end example
8334 @end table
8335
8336 For values between 4-7, the transposition is only done if the input
8337 video geometry is portrait and not landscape. These values are
8338 deprecated, the @code{passthrough} option should be used instead.
8339
8340 Numerical values are deprecated, and should be dropped in favor of
8341 symbolic constants.
8342
8343 @item passthrough
8344 Do not apply the transposition if the input geometry matches the one
8345 specified by the specified value. It accepts the following values:
8346 @table @samp
8347 @item none
8348 Always apply transposition.
8349 @item portrait
8350 Preserve portrait geometry (when @var{height} >= @var{width}).
8351 @item landscape
8352 Preserve landscape geometry (when @var{width} >= @var{height}).
8353 @end table
8354
8355 Default value is @code{none}.
8356 @end table
8357
8358 For example to rotate by 90 degrees clockwise and preserve portrait
8359 layout:
8360 @example
8361 transpose=dir=1:passthrough=portrait
8362 @end example
8363
8364 The command above can also be specified as:
8365 @example
8366 transpose=1:portrait
8367 @end example
8368
8369 @section trim
8370 Trim the input so that the output contains one continuous subpart of the input.
8371
8372 It accepts the following parameters:
8373 @table @option
8374 @item start
8375 Specify the time of the start of the kept section, i.e. the frame with the
8376 timestamp @var{start} will be the first frame in the output.
8377
8378 @item end
8379 Specify the time of the first frame that will be dropped, i.e. the frame
8380 immediately preceding the one with the timestamp @var{end} will be the last
8381 frame in the output.
8382
8383 @item start_pts
8384 This is the same as @var{start}, except this option sets the start timestamp
8385 in timebase units instead of seconds.
8386
8387 @item end_pts
8388 This is the same as @var{end}, except this option sets the end timestamp
8389 in timebase units instead of seconds.
8390
8391 @item duration
8392 The maximum duration of the output in seconds.
8393
8394 @item start_frame
8395 The number of the first frame that should be passed to the output.
8396
8397 @item end_frame
8398 The number of the first frame that should be dropped.
8399 @end table
8400
8401 @option{start}, @option{end}, @option{duration} are expressed as time
8402 duration specifications, check the "Time duration" section in the
8403 ffmpeg-utils manual.
8404
8405 Note that the first two sets of the start/end options and the @option{duration}
8406 option look at the frame timestamp, while the _frame variants simply count the
8407 frames that pass through the filter. Also note that this filter does not modify
8408 the timestamps. If you wish for the output timestamps to start at zero, insert a
8409 setpts filter after the trim filter.
8410
8411 If multiple start or end options are set, this filter tries to be greedy and
8412 keep all the frames that match at least one of the specified constraints. To keep
8413 only the part that matches all the constraints at once, chain multiple trim
8414 filters.
8415
8416 The defaults are such that all the input is kept. So it is possible to set e.g.
8417 just the end values to keep everything before the specified time.
8418
8419 Examples:
8420 @itemize
8421 @item
8422 Drop everything except the second minute of input:
8423 @example
8424 ffmpeg -i INPUT -vf trim=60:120
8425 @end example
8426
8427 @item
8428 Keep only the first second:
8429 @example
8430 ffmpeg -i INPUT -vf trim=duration=1
8431 @end example
8432
8433 @end itemize
8434
8435
8436 @section unsharp
8437
8438 Sharpen or blur the input video.
8439
8440 It accepts the following parameters:
8441
8442 @table @option
8443 @item luma_msize_x, lx
8444 Set the luma matrix horizontal size. It must be an odd integer between
8445 3 and 63. The default value is 5.
8446
8447 @item luma_msize_y, ly
8448 Set the luma matrix vertical size. It must be an odd integer between 3
8449 and 63. The default value is 5.
8450
8451 @item luma_amount, la
8452 Set the luma effect strength. It must be a floating point number, reasonable
8453 values lay between -1.5 and 1.5.
8454
8455 Negative values will blur the input video, while positive values will
8456 sharpen it, a value of zero will disable the effect.
8457
8458 Default value is 1.0.
8459
8460 @item chroma_msize_x, cx
8461 Set the chroma matrix horizontal size. It must be an odd integer
8462 between 3 and 63. The default value is 5.
8463
8464 @item chroma_msize_y, cy
8465 Set the chroma matrix vertical size. It must be an odd integer
8466 between 3 and 63. The default value is 5.
8467
8468 @item chroma_amount, ca
8469 Set the chroma 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 0.0.
8476
8477 @item opencl
8478 If set to 1, specify using OpenCL capabilities, only available if
8479 FFmpeg was configured with @code{--enable-opencl}. Default value is 0.
8480
8481 @end table
8482
8483 All parameters are optional and default to the equivalent of the
8484 string '5:5:1.0:5:5:0.0'.
8485
8486 @subsection Examples
8487
8488 @itemize
8489 @item
8490 Apply strong luma sharpen effect:
8491 @example
8492 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
8493 @end example
8494
8495 @item
8496 Apply a strong blur of both luma and chroma parameters:
8497 @example
8498 unsharp=7:7:-2:7:7:-2
8499 @end example
8500 @end itemize
8501
8502 @anchor{vidstabdetect}
8503 @section vidstabdetect
8504
8505 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
8506 @ref{vidstabtransform} for pass 2.
8507
8508 This filter generates a file with relative translation and rotation
8509 transform information about subsequent frames, which is then used by
8510 the @ref{vidstabtransform} filter.
8511
8512 To enable compilation of this filter you need to configure FFmpeg with
8513 @code{--enable-libvidstab}.
8514
8515 This filter accepts the following options:
8516
8517 @table @option
8518 @item result
8519 Set the path to the file used to write the transforms information.
8520 Default value is @file{transforms.trf}.
8521
8522 @item shakiness
8523 Set how shaky the video is and how quick the camera is. It accepts an
8524 integer in the range 1-10, a value of 1 means little shakiness, a
8525 value of 10 means strong shakiness. Default value is 5.
8526
8527 @item accuracy
8528 Set the accuracy of the detection process. It must be a value in the
8529 range 1-15. A value of 1 means low accuracy, a value of 15 means high
8530 accuracy. Default value is 15.
8531
8532 @item stepsize
8533 Set stepsize of the search process. The region around minimum is
8534 scanned with 1 pixel resolution. Default value is 6.
8535
8536 @item mincontrast
8537 Set minimum contrast. Below this value a local measurement field is
8538 discarded. Must be a floating point value in the range 0-1. Default
8539 value is 0.3.
8540
8541 @item tripod
8542 Set reference frame number for tripod mode.
8543
8544 If enabled, the motion of the frames is compared to a reference frame
8545 in the filtered stream, identified by the specified number. The idea
8546 is to compensate all movements in a more-or-less static scene and keep
8547 the camera view absolutely still.
8548
8549 If set to 0, it is disabled. The frames are counted starting from 1.
8550
8551 @item show
8552 Show fields and transforms in the resulting frames. It accepts an
8553 integer in the range 0-2. Default value is 0, which disables any
8554 visualization.
8555 @end table
8556
8557 @subsection Examples
8558
8559 @itemize
8560 @item
8561 Use default values:
8562 @example
8563 vidstabdetect
8564 @end example
8565
8566 @item
8567 Analyze strongly shaky movie and put the results in file
8568 @file{mytransforms.trf}:
8569 @example
8570 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
8571 @end example
8572
8573 @item
8574 Visualize the result of internal transformations in the resulting
8575 video:
8576 @example
8577 vidstabdetect=show=1
8578 @end example
8579
8580 @item
8581 Analyze a video with medium shakiness using @command{ffmpeg}:
8582 @example
8583 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
8584 @end example
8585 @end itemize
8586
8587 @anchor{vidstabtransform}
8588 @section vidstabtransform
8589
8590 Video stabilization/deshaking: pass 2 of 2,
8591 see @ref{vidstabdetect} for pass 1.
8592
8593 Read a file with transform information for each frame and
8594 apply/compensate them. Together with the @ref{vidstabdetect}
8595 filter this can be used to deshake videos. See also
8596 @url{http://public.hronopik.de/vid.stab}. It is important to also use
8597 the unsharp filter, see below.
8598
8599 To enable compilation of this filter you need to configure FFmpeg with
8600 @code{--enable-libvidstab}.
8601
8602 @subsection Options
8603
8604 @table @option
8605 @item input
8606 Set path to the file used to read the transforms. Default value is
8607 @file{transforms.trf}).
8608
8609 @item smoothing
8610 Set the number of frames (value*2 + 1) used for lowpass filtering the
8611 camera movements. Default value is 10.
8612
8613 For example a number of 10 means that 21 frames are used (10 in the
8614 past and 10 in the future) to smoothen the motion in the video. A
8615 larger values leads to a smoother video, but limits the acceleration
8616 of the camera (pan/tilt movements). 0 is a special case where a
8617 static camera is simulated.
8618
8619 @item optalgo
8620 Set the camera path optimization algorithm.
8621
8622 Accepted values are:
8623 @table @samp
8624 @item gauss
8625 gaussian kernel low-pass filter on camera motion (default)
8626 @item avg
8627 averaging on transformations
8628 @end table
8629
8630 @item maxshift
8631 Set maximal number of pixels to translate frames. Default value is -1,
8632 meaning no limit.
8633
8634 @item maxangle
8635 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
8636 value is -1, meaning no limit.
8637
8638 @item crop
8639 Specify how to deal with borders that may be visible due to movement
8640 compensation.
8641
8642 Available values are:
8643 @table @samp
8644 @item keep
8645 keep image information from previous frame (default)
8646 @item black
8647 fill the border black
8648 @end table
8649
8650 @item invert
8651 Invert transforms if set to 1. Default value is 0.
8652
8653 @item relative
8654 Consider transforms as relative to previsou frame if set to 1,
8655 absolute if set to 0. Default value is 0.
8656
8657 @item zoom
8658 Set percentage to zoom. A positive value will result in a zoom-in
8659 effect, a negative value in a zoom-out effect. Default value is 0 (no
8660 zoom).
8661
8662 @item optzoom
8663 Set optimal zooming to avoid borders.
8664
8665 Accepted values are:
8666 @table @samp
8667 @item 0
8668 disabled
8669 @item 1
8670 optimal static zoom value is determined (only very strong movements
8671 will lead to visible borders) (default)
8672 @item 2
8673 optimal adaptive zoom value is determined (no borders will be
8674 visible), see @option{zoomspeed}
8675 @end table
8676
8677 Note that the value given at zoom is added to the one calculated here.
8678
8679 @item zoomspeed
8680 Set percent to zoom maximally each frame (enabled when
8681 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
8682 0.25.
8683
8684 @item interpol
8685 Specify type of interpolation.
8686
8687 Available values are:
8688 @table @samp
8689 @item no
8690 no interpolation
8691 @item linear
8692 linear only horizontal
8693 @item bilinear
8694 linear in both directions (default)
8695 @item bicubic
8696 cubic in both directions (slow)
8697 @end table
8698
8699 @item tripod
8700 Enable virtual tripod mode if set to 1, which is equivalent to
8701 @code{relative=0:smoothing=0}. Default value is 0.
8702
8703 Use also @code{tripod} option of @ref{vidstabdetect}.
8704
8705 @item debug
8706 Increase log verbosity if set to 1. Also the detected global motions
8707 are written to the temporary file @file{global_motions.trf}. Default
8708 value is 0.
8709 @end table
8710
8711 @subsection Examples
8712
8713 @itemize
8714 @item
8715 Use @command{ffmpeg} for a typical stabilization with default values:
8716 @example
8717 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
8718 @end example
8719
8720 Note the use of the unsharp filter which is always recommended.
8721
8722 @item
8723 Zoom in a bit more and load transform data from a given file:
8724 @example
8725 vidstabtransform=zoom=5:input="mytransforms.trf"
8726 @end example
8727
8728 @item
8729 Smoothen the video even more:
8730 @example
8731 vidstabtransform=smoothing=30
8732 @end example
8733 @end itemize
8734
8735 @section vflip
8736
8737 Flip the input video vertically.
8738
8739 For example, to vertically flip a video with @command{ffmpeg}:
8740 @example
8741 ffmpeg -i in.avi -vf "vflip" out.avi
8742 @end example
8743
8744 @section vignette
8745
8746 Make or reverse a natural vignetting effect.
8747
8748 The filter accepts the following options:
8749
8750 @table @option
8751 @item angle, a
8752 Set lens angle expression as a number of radians.
8753
8754 The value is clipped in the @code{[0,PI/2]} range.
8755
8756 Default value: @code{"PI/5"}
8757
8758 @item x0
8759 @item y0
8760 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
8761 by default.
8762
8763 @item mode
8764 Set forward/backward mode.
8765
8766 Available modes are:
8767 @table @samp
8768 @item forward
8769 The larger the distance from the central point, the darker the image becomes.
8770
8771 @item backward
8772 The larger the distance from the central point, the brighter the image becomes.
8773 This can be used to reverse a vignette effect, though there is no automatic
8774 detection to extract the lens @option{angle} and other settings (yet). It can
8775 also be used to create a burning effect.
8776 @end table
8777
8778 Default value is @samp{forward}.
8779
8780 @item eval
8781 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
8782
8783 It accepts the following values:
8784 @table @samp
8785 @item init
8786 Evaluate expressions only once during the filter initialization.
8787
8788 @item frame
8789 Evaluate expressions for each incoming frame. This is way slower than the
8790 @samp{init} mode since it requires all the scalers to be re-computed, but it
8791 allows advanced dynamic expressions.
8792 @end table
8793
8794 Default value is @samp{init}.
8795
8796 @item dither
8797 Set dithering to reduce the circular banding effects. Default is @code{1}
8798 (enabled).
8799
8800 @item aspect
8801 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
8802 Setting this value to the SAR of the input will make a rectangular vignetting
8803 following the dimensions of the video.
8804
8805 Default is @code{1/1}.
8806 @end table
8807
8808 @subsection Expressions
8809
8810 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
8811 following parameters.
8812
8813 @table @option
8814 @item w
8815 @item h
8816 input width and height
8817
8818 @item n
8819 the number of input frame, starting from 0
8820
8821 @item pts
8822 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
8823 @var{TB} units, NAN if undefined
8824
8825 @item r
8826 frame rate of the input video, NAN if the input frame rate is unknown
8827
8828 @item t
8829 the PTS (Presentation TimeStamp) of the filtered video frame,
8830 expressed in seconds, NAN if undefined
8831
8832 @item tb
8833 time base of the input video
8834 @end table
8835
8836
8837 @subsection Examples
8838
8839 @itemize
8840 @item
8841 Apply simple strong vignetting effect:
8842 @example
8843 vignette=PI/4
8844 @end example
8845
8846 @item
8847 Make a flickering vignetting:
8848 @example
8849 vignette='PI/4+random(1)*PI/50':eval=frame
8850 @end example
8851
8852 @end itemize
8853
8854 @section w3fdif
8855
8856 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
8857 Deinterlacing Filter").
8858
8859 Based on the process described by Martin Weston for BBC R&D, and
8860 implemented based on the de-interlace algorithm written by Jim
8861 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
8862 uses filter coefficients calculated by BBC R&D.
8863
8864 There are two sets of filter coefficients, so called "simple":
8865 and "complex". Which set of filter coefficients is used can
8866 be set by passing an optional parameter:
8867
8868 @table @option
8869 @item filter
8870 Set the interlacing filter coefficients. Accepts one of the following values:
8871
8872 @table @samp
8873 @item simple
8874 Simple filter coefficient set.
8875 @item complex
8876 More-complex filter coefficient set.
8877 @end table
8878 Default value is @samp{complex}.
8879
8880 @item deint
8881 Specify which frames to deinterlace. Accept one of the following values:
8882
8883 @table @samp
8884 @item all
8885 Deinterlace all frames,
8886 @item interlaced
8887 Only deinterlace frames marked as interlaced.
8888 @end table
8889
8890 Default value is @samp{all}.
8891 @end table
8892
8893 @anchor{yadif}
8894 @section yadif
8895
8896 Deinterlace the input video ("yadif" means "yet another deinterlacing
8897 filter").
8898
8899 It accepts the following parameters:
8900
8901
8902 @table @option
8903
8904 @item mode
8905 The interlacing mode to adopt. It accepts one of the following values:
8906
8907 @table @option
8908 @item 0, send_frame
8909 Output one frame for each frame.
8910 @item 1, send_field
8911 Output one frame for each field.
8912 @item 2, send_frame_nospatial
8913 Like @code{send_frame}, but it skips the spatial interlacing check.
8914 @item 3, send_field_nospatial
8915 Like @code{send_field}, but it skips the spatial interlacing check.
8916 @end table
8917
8918 The default value is @code{send_frame}.
8919
8920 @item parity
8921 The picture field parity assumed for the input interlaced video. It accepts one
8922 of the following values:
8923
8924 @table @option
8925 @item 0, tff
8926 Assume the top field is first.
8927 @item 1, bff
8928 Assume the bottom field is first.
8929 @item -1, auto
8930 Enable automatic detection of field parity.
8931 @end table
8932
8933 The default value is @code{auto}.
8934 If the interlacing is unknown or the decoder does not export this information,
8935 top field first will be assumed.
8936
8937 @item deint
8938 Specify which frames to deinterlace. Accept one of the following
8939 values:
8940
8941 @table @option
8942 @item 0, all
8943 Deinterlace all frames.
8944 @item 1, interlaced
8945 Only deinterlace frames marked as interlaced.
8946 @end table
8947
8948 The default value is @code{all}.
8949 @end table
8950
8951 @section zoompan
8952
8953 Apply Zoom & Pan effect.
8954
8955 This filter accepts the following options:
8956
8957 @table @option
8958 @item zoom, z
8959 Set the zoom expression. Default is 1.
8960
8961 @item x
8962 @item y
8963 Set the x and y expression. Default is 0.
8964
8965 @item d
8966 Set the duration expression in number of frames.
8967 This sets for how many number of frames effect will last for
8968 single input image.
8969
8970 @item s
8971 Set the output image size, default is 'hd720'.
8972 @end table
8973
8974 Each expression can contain the following constants:
8975
8976 @table @option
8977 @item in_w, iw
8978 Input width.
8979
8980 @item in_h, ih
8981 Input height.
8982
8983 @item out_w, ow
8984 Output width.
8985
8986 @item out_h, oh
8987 Output height.
8988
8989 @item in
8990 Input frame count.
8991
8992 @item on
8993 Output frame count.
8994
8995 @item x
8996 @item y
8997 Last calculated 'x' and 'y' position from 'x' and 'y' expression
8998 for current input frame.
8999
9000 @item px
9001 @item py
9002 'x' and 'y' of last output frame of previous input frame or 0 when there was
9003 not yet such frame (first input frame).
9004
9005 @item zoom
9006 Last calculated zoom from 'z' expression for current input frame.
9007
9008 @item pzoom
9009 Last calculated zoom of last output frame of previous input frame.
9010
9011 @item duration
9012 Number of output frames for current input frame. Calculated from 'd' expression
9013 for each input frame.
9014
9015 @item pduration
9016 number of output frames created for previous input frame
9017
9018 @item a
9019 Rational number: input width / input height
9020
9021 @item sar
9022 sample aspect ratio
9023
9024 @item dar
9025 display aspect ratio
9026
9027 @end table
9028
9029 @subsection Examples
9030
9031 @itemize
9032 @item
9033 Zoom-in up to 1.5 and pan at same time to some spot near center of picture:
9034 @example
9035 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
9036 @end example
9037 @end itemize
9038
9039 @c man end VIDEO FILTERS
9040
9041 @chapter Video Sources
9042 @c man begin VIDEO SOURCES
9043
9044 Below is a description of the currently available video sources.
9045
9046 @section buffer
9047
9048 Buffer video frames, and make them available to the filter chain.
9049
9050 This source is mainly intended for a programmatic use, in particular
9051 through the interface defined in @file{libavfilter/vsrc_buffer.h}.
9052
9053 It accepts the following parameters:
9054
9055 @table @option
9056
9057 @item video_size
9058 Specify the size (width and height) of the buffered video frames. For the
9059 syntax of this option, check the "Video size" section in the ffmpeg-utils
9060 manual.
9061
9062 @item width
9063 The input video width.
9064
9065 @item height
9066 The input video height.
9067
9068 @item pix_fmt
9069 A string representing the pixel format of the buffered video frames.
9070 It may be a number corresponding to a pixel format, or a pixel format
9071 name.
9072
9073 @item time_base
9074 Specify the timebase assumed by the timestamps of the buffered frames.
9075
9076 @item frame_rate
9077 Specify the frame rate expected for the video stream.
9078
9079 @item pixel_aspect, sar
9080 The sample (pixel) aspect ratio of the input video.
9081
9082 @item sws_param
9083 Specify the optional parameters to be used for the scale filter which
9084 is automatically inserted when an input change is detected in the
9085 input size or format.
9086 @end table
9087
9088 For example:
9089 @example
9090 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
9091 @end example
9092
9093 will instruct the source to accept video frames with size 320x240 and
9094 with format "yuv410p", assuming 1/24 as the timestamps timebase and
9095 square pixels (1:1 sample aspect ratio).
9096 Since the pixel format with name "yuv410p" corresponds to the number 6
9097 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
9098 this example corresponds to:
9099 @example
9100 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
9101 @end example
9102
9103 Alternatively, the options can be specified as a flat string, but this
9104 syntax is deprecated:
9105
9106 @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}]
9107
9108 @section cellauto
9109
9110 Create a pattern generated by an elementary cellular automaton.
9111
9112 The initial state of the cellular automaton can be defined through the
9113 @option{filename}, and @option{pattern} options. If such options are
9114 not specified an initial state is created randomly.
9115
9116 At each new frame a new row in the video is filled with the result of
9117 the cellular automaton next generation. The behavior when the whole
9118 frame is filled is defined by the @option{scroll} option.
9119
9120 This source accepts the following options:
9121
9122 @table @option
9123 @item filename, f
9124 Read the initial cellular automaton state, i.e. the starting row, from
9125 the specified file.
9126 In the file, each non-whitespace character is considered an alive
9127 cell, a newline will terminate the row, and further characters in the
9128 file will be ignored.
9129
9130 @item pattern, p
9131 Read the initial cellular automaton state, i.e. the starting row, from
9132 the specified string.
9133
9134 Each non-whitespace character in the string is considered an alive
9135 cell, a newline will terminate the row, and further characters in the
9136 string will be ignored.
9137
9138 @item rate, r
9139 Set the video rate, that is the number of frames generated per second.
9140 Default is 25.
9141
9142 @item random_fill_ratio, ratio
9143 Set the random fill ratio for the initial cellular automaton row. It
9144 is a floating point number value ranging from 0 to 1, defaults to
9145 1/PHI.
9146
9147 This option is ignored when a file or a pattern is specified.
9148
9149 @item random_seed, seed
9150 Set the seed for filling randomly the initial row, must be an integer
9151 included between 0 and UINT32_MAX. If not specified, or if explicitly
9152 set to -1, the filter will try to use a good random seed on a best
9153 effort basis.
9154
9155 @item rule
9156 Set the cellular automaton rule, it is a number ranging from 0 to 255.
9157 Default value is 110.
9158
9159 @item size, s
9160 Set the size of the output video. For the syntax of this option, check
9161 the "Video size" section in the ffmpeg-utils manual.
9162
9163 If @option{filename} or @option{pattern} is specified, the size is set
9164 by default to the width of the specified initial state row, and the
9165 height is set to @var{width} * PHI.
9166
9167 If @option{size} is set, it must contain the width of the specified
9168 pattern string, and the specified pattern will be centered in the
9169 larger row.
9170
9171 If a filename or a pattern string is not specified, the size value
9172 defaults to "320x518" (used for a randomly generated initial state).
9173
9174 @item scroll
9175 If set to 1, scroll the output upward when all the rows in the output
9176 have been already filled. If set to 0, the new generated row will be
9177 written over the top row just after the bottom row is filled.
9178 Defaults to 1.
9179
9180 @item start_full, full
9181 If set to 1, completely fill the output with generated rows before
9182 outputting the first frame.
9183 This is the default behavior, for disabling set the value to 0.
9184
9185 @item stitch
9186 If set to 1, stitch the left and right row edges together.
9187 This is the default behavior, for disabling set the value to 0.
9188 @end table
9189
9190 @subsection Examples
9191
9192 @itemize
9193 @item
9194 Read the initial state from @file{pattern}, and specify an output of
9195 size 200x400.
9196 @example
9197 cellauto=f=pattern:s=200x400
9198 @end example
9199
9200 @item
9201 Generate a random initial row with a width of 200 cells, with a fill
9202 ratio of 2/3:
9203 @example
9204 cellauto=ratio=2/3:s=200x200
9205 @end example
9206
9207 @item
9208 Create a pattern generated by rule 18 starting by a single alive cell
9209 centered on an initial row with width 100:
9210 @example
9211 cellauto=p=@@:s=100x400:full=0:rule=18
9212 @end example
9213
9214 @item
9215 Specify a more elaborated initial pattern:
9216 @example
9217 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
9218 @end example
9219
9220 @end itemize
9221
9222 @section mandelbrot
9223
9224 Generate a Mandelbrot set fractal, and progressively zoom towards the
9225 point specified with @var{start_x} and @var{start_y}.
9226
9227 This source accepts the following options:
9228
9229 @table @option
9230
9231 @item end_pts
9232 Set the terminal pts value. Default value is 400.
9233
9234 @item end_scale
9235 Set the terminal scale value.
9236 Must be a floating point value. Default value is 0.3.
9237
9238 @item inner
9239 Set the inner coloring mode, that is the algorithm used to draw the
9240 Mandelbrot fractal internal region.
9241
9242 It shall assume one of the following values:
9243 @table @option
9244 @item black
9245 Set black mode.
9246 @item convergence
9247 Show time until convergence.
9248 @item mincol
9249 Set color based on point closest to the origin of the iterations.
9250 @item period
9251 Set period mode.
9252 @end table
9253
9254 Default value is @var{mincol}.
9255
9256 @item bailout
9257 Set the bailout value. Default value is 10.0.
9258
9259 @item maxiter
9260 Set the maximum of iterations performed by the rendering
9261 algorithm. Default value is 7189.
9262
9263 @item outer
9264 Set outer coloring mode.
9265 It shall assume one of following values:
9266 @table @option
9267 @item iteration_count
9268 Set iteration cound mode.
9269 @item normalized_iteration_count
9270 set normalized iteration count mode.
9271 @end table
9272 Default value is @var{normalized_iteration_count}.
9273
9274 @item rate, r
9275 Set frame rate, expressed as number of frames per second. Default
9276 value is "25".
9277
9278 @item size, s
9279 Set frame size. For the syntax of this option, check the "Video
9280 size" section in the ffmpeg-utils manual. Default value is "640x480".
9281
9282 @item start_scale
9283 Set the initial scale value. Default value is 3.0.
9284
9285 @item start_x
9286 Set the initial x position. Must be a floating point value between
9287 -100 and 100. Default value is -0.743643887037158704752191506114774.
9288
9289 @item start_y
9290 Set the initial y position. Must be a floating point value between
9291 -100 and 100. Default value is -0.131825904205311970493132056385139.
9292 @end table
9293
9294 @section mptestsrc
9295
9296 Generate various test patterns, as generated by the MPlayer test filter.
9297
9298 The size of the generated video is fixed, and is 256x256.
9299 This source is useful in particular for testing encoding features.
9300
9301 This source accepts the following options:
9302
9303 @table @option
9304
9305 @item rate, r
9306 Specify the frame rate of the sourced video, as the number of frames
9307 generated per second. It has to be a string in the format
9308 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
9309 number or a valid video frame rate abbreviation. The default value is
9310 "25".
9311
9312 @item duration, d
9313 Set the video duration of the sourced video. The accepted syntax is:
9314 @example
9315 [-]HH:MM:SS[.m...]
9316 [-]S+[.m...]
9317 @end example
9318 See also the function @code{av_parse_time()}.
9319
9320 If not specified, or the expressed duration is negative, the video is
9321 supposed to be generated forever.
9322
9323 @item test, t
9324
9325 Set the number or the name of the test to perform. Supported tests are:
9326 @table @option
9327 @item dc_luma
9328 @item dc_chroma
9329 @item freq_luma
9330 @item freq_chroma
9331 @item amp_luma
9332 @item amp_chroma
9333 @item cbp
9334 @item mv
9335 @item ring1
9336 @item ring2
9337 @item all
9338
9339 @end table
9340
9341 Default value is "all", which will cycle through the list of all tests.
9342 @end table
9343
9344 Some examples:
9345 @example
9346 testsrc=t=dc_luma
9347 @end example
9348
9349 will generate a "dc_luma" test pattern.
9350
9351 @section frei0r_src
9352
9353 Provide a frei0r source.
9354
9355 To enable compilation of this filter you need to install the frei0r
9356 header and configure FFmpeg with @code{--enable-frei0r}.
9357
9358 This source accepts the following parameters:
9359
9360 @table @option
9361
9362 @item size
9363 The size of the video to generate. For the syntax of this option, check the
9364 "Video size" section in the ffmpeg-utils manual.
9365
9366 @item framerate
9367 The framerate of the generated video. It may be a string of the form
9368 @var{num}/@var{den} or a frame rate abbreviation.
9369
9370 @item filter_name
9371 The name to the frei0r source to load. For more information regarding frei0r and
9372 how to set the parameters, read the @ref{frei0r} section in the video filters
9373 documentation.
9374
9375 @item filter_params
9376 A '|'-separated list of parameters to pass to the frei0r source.
9377
9378 @end table
9379
9380 For example, to generate a frei0r partik0l source with size 200x200
9381 and frame rate 10 which is overlayed on the overlay filter main input:
9382 @example
9383 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
9384 @end example
9385
9386 @section life
9387
9388 Generate a life pattern.
9389
9390 This source is based on a generalization of John Conway's life game.
9391
9392 The sourced input represents a life grid, each pixel represents a cell
9393 which can be in one of two possible states, alive or dead. Every cell
9394 interacts with its eight neighbours, which are the cells that are
9395 horizontally, vertically, or diagonally adjacent.
9396
9397 At each interaction the grid evolves according to the adopted rule,
9398 which specifies the number of neighbor alive cells which will make a
9399 cell stay alive or born. The @option{rule} option allows one to specify
9400 the rule to adopt.
9401
9402 This source accepts the following options:
9403
9404 @table @option
9405 @item filename, f
9406 Set the file from which to read the initial grid state. In the file,
9407 each non-whitespace character is considered an alive cell, and newline
9408 is used to delimit the end of each row.
9409
9410 If this option is not specified, the initial grid is generated
9411 randomly.
9412
9413 @item rate, r
9414 Set the video rate, that is the number of frames generated per second.
9415 Default is 25.
9416
9417 @item random_fill_ratio, ratio
9418 Set the random fill ratio for the initial random grid. It is a
9419 floating point number value ranging from 0 to 1, defaults to 1/PHI.
9420 It is ignored when a file is specified.
9421
9422 @item random_seed, seed
9423 Set the seed for filling the initial random grid, must be an integer
9424 included between 0 and UINT32_MAX. If not specified, or if explicitly
9425 set to -1, the filter will try to use a good random seed on a best
9426 effort basis.
9427
9428 @item rule
9429 Set the life rule.
9430
9431 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
9432 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
9433 @var{NS} specifies the number of alive neighbor cells which make a
9434 live cell stay alive, and @var{NB} the number of alive neighbor cells
9435 which make a dead cell to become alive (i.e. to "born").
9436 "s" and "b" can be used in place of "S" and "B", respectively.
9437
9438 Alternatively a rule can be specified by an 18-bits integer. The 9
9439 high order bits are used to encode the next cell state if it is alive
9440 for each number of neighbor alive cells, the low order bits specify
9441 the rule for "borning" new cells. Higher order bits encode for an
9442 higher number of neighbor cells.
9443 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
9444 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
9445
9446 Default value is "S23/B3", which is the original Conway's game of life
9447 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
9448 cells, and will born a new cell if there are three alive cells around
9449 a dead cell.
9450
9451 @item size, s
9452 Set the size of the output video. For the syntax of this option, check the
9453 "Video size" section in the ffmpeg-utils manual.
9454
9455 If @option{filename} is specified, the size is set by default to the
9456 same size of the input file. If @option{size} is set, it must contain
9457 the size specified in the input file, and the initial grid defined in
9458 that file is centered in the larger resulting area.
9459
9460 If a filename is not specified, the size value defaults to "320x240"
9461 (used for a randomly generated initial grid).
9462
9463 @item stitch
9464 If set to 1, stitch the left and right grid edges together, and the
9465 top and bottom edges also. Defaults to 1.
9466
9467 @item mold
9468 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
9469 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
9470 value from 0 to 255.
9471
9472 @item life_color
9473 Set the color of living (or new born) cells.
9474
9475 @item death_color
9476 Set the color of dead cells. If @option{mold} is set, this is the first color
9477 used to represent a dead cell.
9478
9479 @item mold_color
9480 Set mold color, for definitely dead and moldy cells.
9481
9482 For the syntax of these 3 color options, check the "Color" section in the
9483 ffmpeg-utils manual.
9484 @end table
9485
9486 @subsection Examples
9487
9488 @itemize
9489 @item
9490 Read a grid from @file{pattern}, and center it on a grid of size
9491 300x300 pixels:
9492 @example
9493 life=f=pattern:s=300x300
9494 @end example
9495
9496 @item
9497 Generate a random grid of size 200x200, with a fill ratio of 2/3:
9498 @example
9499 life=ratio=2/3:s=200x200
9500 @end example
9501
9502 @item
9503 Specify a custom rule for evolving a randomly generated grid:
9504 @example
9505 life=rule=S14/B34
9506 @end example
9507
9508 @item
9509 Full example with slow death effect (mold) using @command{ffplay}:
9510 @example
9511 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
9512 @end example
9513 @end itemize
9514
9515 @anchor{color}
9516 @anchor{haldclutsrc}
9517 @anchor{nullsrc}
9518 @anchor{rgbtestsrc}
9519 @anchor{smptebars}
9520 @anchor{smptehdbars}
9521 @anchor{testsrc}
9522 @section color, haldclutsrc, nullsrc, rgbtestsrc, smptebars, smptehdbars, testsrc
9523
9524 The @code{color} source provides an uniformly colored input.
9525
9526 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
9527 @ref{haldclut} filter.
9528
9529 The @code{nullsrc} source returns unprocessed video frames. It is
9530 mainly useful to be employed in analysis / debugging tools, or as the
9531 source for filters which ignore the input data.
9532
9533 The @code{rgbtestsrc} source generates an RGB test pattern useful for
9534 detecting RGB vs BGR issues. You should see a red, green and blue
9535 stripe from top to bottom.
9536
9537 The @code{smptebars} source generates a color bars pattern, based on
9538 the SMPTE Engineering Guideline EG 1-1990.
9539
9540 The @code{smptehdbars} source generates a color bars pattern, based on
9541 the SMPTE RP 219-2002.
9542
9543 The @code{testsrc} source generates a test video pattern, showing a
9544 color pattern, a scrolling gradient and a timestamp. This is mainly
9545 intended for testing purposes.
9546
9547 The sources accept the following parameters:
9548
9549 @table @option
9550
9551 @item color, c
9552 Specify the color of the source, only available in the @code{color}
9553 source. For the syntax of this option, check the "Color" section in the
9554 ffmpeg-utils manual.
9555
9556 @item level
9557 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
9558 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
9559 pixels to be used as identity matrix for 3D lookup tables. Each component is
9560 coded on a @code{1/(N*N)} scale.
9561
9562 @item size, s
9563 Specify the size of the sourced video. For the syntax of this option, check the
9564 "Video size" section in the ffmpeg-utils manual. The default value is
9565 "320x240".
9566
9567 This option is not available with the @code{haldclutsrc} filter.
9568
9569 @item rate, r
9570 Specify the frame rate of the sourced video, as the number of frames
9571 generated per second. It has to be a string in the format
9572 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
9573 number or a valid video frame rate abbreviation. The default value is
9574 "25".
9575
9576 @item sar
9577 Set the sample aspect ratio of the sourced video.
9578
9579 @item duration, d
9580 Set the video duration of the sourced video. The accepted syntax is:
9581 @example
9582 [-]HH[:MM[:SS[.m...]]]
9583 [-]S+[.m...]
9584 @end example
9585 Also see the the @code{av_parse_time()} function.
9586
9587 If not specified, or the expressed duration is negative, the video is
9588 supposed to be generated forever.
9589
9590 @item decimals, n
9591 Set the number of decimals to show in the timestamp, only available in the
9592 @code{testsrc} source.
9593
9594 The displayed timestamp value will correspond to the original
9595 timestamp value multiplied by the power of 10 of the specified
9596 value. Default value is 0.
9597 @end table
9598
9599 For example the following:
9600 @example
9601 testsrc=duration=5.3:size=qcif:rate=10
9602 @end example
9603
9604 will generate a video with a duration of 5.3 seconds, with size
9605 176x144 and a frame rate of 10 frames per second.
9606
9607 The following graph description will generate a red source
9608 with an opacity of 0.2, with size "qcif" and a frame rate of 10
9609 frames per second.
9610 @example
9611 color=c=red@@0.2:s=qcif:r=10
9612 @end example
9613
9614 If the input content is to be ignored, @code{nullsrc} can be used. The
9615 following command generates noise in the luminance plane by employing
9616 the @code{geq} filter:
9617 @example
9618 nullsrc=s=256x256, geq=random(1)*255:128:128
9619 @end example
9620
9621 @subsection Commands
9622
9623 The @code{color} source supports the following commands:
9624
9625 @table @option
9626 @item c, color
9627 Set the color of the created image. Accepts the same syntax of the
9628 corresponding @option{color} option.
9629 @end table
9630
9631 @c man end VIDEO SOURCES
9632
9633 @chapter Video Sinks
9634 @c man begin VIDEO SINKS
9635
9636 Below is a description of the currently available video sinks.
9637
9638 @section buffersink
9639
9640 Buffer video frames, and make them available to the end of the filter
9641 graph.
9642
9643 This sink is mainly intended for programmatic use, in particular
9644 through the interface defined in @file{libavfilter/buffersink.h}
9645 or the options system.
9646
9647 It accepts a pointer to an AVBufferSinkContext structure, which
9648 defines the incoming buffers' formats, to be passed as the opaque
9649 parameter to @code{avfilter_init_filter} for initialization.
9650
9651 @section nullsink
9652
9653 Null video sink: do absolutely nothing with the input video. It is
9654 mainly useful as a template and for use in analysis / debugging
9655 tools.
9656
9657 @c man end VIDEO SINKS
9658
9659 @chapter Multimedia Filters
9660 @c man begin MULTIMEDIA FILTERS
9661
9662 Below is a description of the currently available multimedia filters.
9663
9664 @section avectorscope
9665
9666 Convert input audio to a video output, representing the audio vector
9667 scope.
9668
9669 The filter is used to measure the difference between channels of stereo
9670 audio stream. A monoaural signal, consisting of identical left and right
9671 signal, results in straight vertical line. Any stereo separation is visible
9672 as a deviation from this line, creating a Lissajous figure.
9673 If the straight (or deviation from it) but horizontal line appears this
9674 indicates that the left and right channels are out of phase.
9675
9676 The filter accepts the following options:
9677
9678 @table @option
9679 @item mode, m
9680 Set the vectorscope mode.
9681
9682 Available values are:
9683 @table @samp
9684 @item lissajous
9685 Lissajous rotated by 45 degrees.
9686
9687 @item lissajous_xy
9688 Same as above but not rotated.
9689 @end table
9690
9691 Default value is @samp{lissajous}.
9692
9693 @item size, s
9694 Set the video size for the output. For the syntax of this option, check the "Video size"
9695 section in the ffmpeg-utils manual. Default value is @code{400x400}.
9696
9697 @item rate, r
9698 Set the output frame rate. Default value is @code{25}.
9699
9700 @item rc
9701 @item gc
9702 @item bc
9703 Specify the red, green and blue contrast. Default values are @code{40}, @code{160} and @code{80}.
9704 Allowed range is @code{[0, 255]}.
9705
9706 @item rf
9707 @item gf
9708 @item bf
9709 Specify the red, green and blue fade. Default values are @code{15}, @code{10} and @code{5}.
9710 Allowed range is @code{[0, 255]}.
9711
9712 @item zoom
9713 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[1, 10]}.
9714 @end table
9715
9716 @subsection Examples
9717
9718 @itemize
9719 @item
9720 Complete example using @command{ffplay}:
9721 @example
9722 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
9723              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
9724 @end example
9725 @end itemize
9726
9727 @section concat
9728
9729 Concatenate audio and video streams, joining them together one after the
9730 other.
9731
9732 The filter works on segments of synchronized video and audio streams. All
9733 segments must have the same number of streams of each type, and that will
9734 also be the number of streams at output.
9735
9736 The filter accepts the following options:
9737
9738 @table @option
9739
9740 @item n
9741 Set the number of segments. Default is 2.
9742
9743 @item v
9744 Set the number of output video streams, that is also the number of video
9745 streams in each segment. Default is 1.
9746
9747 @item a
9748 Set the number of output audio streams, that is also the number of audio
9749 streams in each segment. Default is 0.
9750
9751 @item unsafe
9752 Activate unsafe mode: do not fail if segments have a different format.
9753
9754 @end table
9755
9756 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
9757 @var{a} audio outputs.
9758
9759 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
9760 segment, in the same order as the outputs, then the inputs for the second
9761 segment, etc.
9762
9763 Related streams do not always have exactly the same duration, for various
9764 reasons including codec frame size or sloppy authoring. For that reason,
9765 related synchronized streams (e.g. a video and its audio track) should be
9766 concatenated at once. The concat filter will use the duration of the longest
9767 stream in each segment (except the last one), and if necessary pad shorter
9768 audio streams with silence.
9769
9770 For this filter to work correctly, all segments must start at timestamp 0.
9771
9772 All corresponding streams must have the same parameters in all segments; the
9773 filtering system will automatically select a common pixel format for video
9774 streams, and a common sample format, sample rate and channel layout for
9775 audio streams, but other settings, such as resolution, must be converted
9776 explicitly by the user.
9777
9778 Different frame rates are acceptable but will result in variable frame rate
9779 at output; be sure to configure the output file to handle it.
9780
9781 @subsection Examples
9782
9783 @itemize
9784 @item
9785 Concatenate an opening, an episode and an ending, all in bilingual version
9786 (video in stream 0, audio in streams 1 and 2):
9787 @example
9788 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
9789   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
9790    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
9791   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
9792 @end example
9793
9794 @item
9795 Concatenate two parts, handling audio and video separately, using the
9796 (a)movie sources, and adjusting the resolution:
9797 @example
9798 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
9799 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
9800 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
9801 @end example
9802 Note that a desync will happen at the stitch if the audio and video streams
9803 do not have exactly the same duration in the first file.
9804
9805 @end itemize
9806
9807 @section ebur128
9808
9809 EBU R128 scanner filter. This filter takes an audio stream as input and outputs
9810 it unchanged. By default, it logs a message at a frequency of 10Hz with the
9811 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
9812 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
9813
9814 The filter also has a video output (see the @var{video} option) with a real
9815 time graph to observe the loudness evolution. The graphic contains the logged
9816 message mentioned above, so it is not printed anymore when this option is set,
9817 unless the verbose logging is set. The main graphing area contains the
9818 short-term loudness (3 seconds of analysis), and the gauge on the right is for
9819 the momentary loudness (400 milliseconds).
9820
9821 More information about the Loudness Recommendation EBU R128 on
9822 @url{http://tech.ebu.ch/loudness}.
9823
9824 The filter accepts the following options:
9825
9826 @table @option
9827
9828 @item video
9829 Activate the video output. The audio stream is passed unchanged whether this
9830 option is set or no. The video stream will be the first output stream if
9831 activated. Default is @code{0}.
9832
9833 @item size
9834 Set the video size. This option is for video only. For the syntax of this
9835 option, check the "Video size" section in the ffmpeg-utils manual. Default
9836 and minimum resolution is @code{640x480}.
9837
9838 @item meter
9839 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
9840 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
9841 other integer value between this range is allowed.
9842
9843 @item metadata
9844 Set metadata injection. If set to @code{1}, the audio input will be segmented
9845 into 100ms output frames, each of them containing various loudness information
9846 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
9847
9848 Default is @code{0}.
9849
9850 @item framelog
9851 Force the frame logging level.
9852
9853 Available values are:
9854 @table @samp
9855 @item info
9856 information logging level
9857 @item verbose
9858 verbose logging level
9859 @end table
9860
9861 By default, the logging level is set to @var{info}. If the @option{video} or
9862 the @option{metadata} options are set, it switches to @var{verbose}.
9863
9864 @item peak
9865 Set peak mode(s).
9866
9867 Available modes can be cumulated (the option is a @code{flag} type). Possible
9868 values are:
9869 @table @samp
9870 @item none
9871 Disable any peak mode (default).
9872 @item sample
9873 Enable sample-peak mode.
9874
9875 Simple peak mode looking for the higher sample value. It logs a message
9876 for sample-peak (identified by @code{SPK}).
9877 @item true
9878 Enable true-peak mode.
9879
9880 If enabled, the peak lookup is done on an over-sampled version of the input
9881 stream for better peak accuracy. It logs a message for true-peak.
9882 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
9883 This mode requires a build with @code{libswresample}.
9884 @end table
9885
9886 @end table
9887
9888 @subsection Examples
9889
9890 @itemize
9891 @item
9892 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
9893 @example
9894 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
9895 @end example
9896
9897 @item
9898 Run an analysis with @command{ffmpeg}:
9899 @example
9900 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
9901 @end example
9902 @end itemize
9903
9904 @section interleave, ainterleave
9905
9906 Temporally interleave frames from several inputs.
9907
9908 @code{interleave} works with video inputs, @code{ainterleave} with audio.
9909
9910 These filters read frames from several inputs and send the oldest
9911 queued frame to the output.
9912
9913 Input streams must have a well defined, monotonically increasing frame
9914 timestamp values.
9915
9916 In order to submit one frame to output, these filters need to enqueue
9917 at least one frame for each input, so they cannot work in case one
9918 input is not yet terminated and will not receive incoming frames.
9919
9920 For example consider the case when one input is a @code{select} filter
9921 which always drop input frames. The @code{interleave} filter will keep
9922 reading from that input, but it will never be able to send new frames
9923 to output until the input will send an end-of-stream signal.
9924
9925 Also, depending on inputs synchronization, the filters will drop
9926 frames in case one input receives more frames than the other ones, and
9927 the queue is already filled.
9928
9929 These filters accept the following options:
9930
9931 @table @option
9932 @item nb_inputs, n
9933 Set the number of different inputs, it is 2 by default.
9934 @end table
9935
9936 @subsection Examples
9937
9938 @itemize
9939 @item
9940 Interleave frames belonging to different streams using @command{ffmpeg}:
9941 @example
9942 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
9943 @end example
9944
9945 @item
9946 Add flickering blur effect:
9947 @example
9948 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
9949 @end example
9950 @end itemize
9951
9952 @section perms, aperms
9953
9954 Set read/write permissions for the output frames.
9955
9956 These filters are mainly aimed at developers to test direct path in the
9957 following filter in the filtergraph.
9958
9959 The filters accept the following options:
9960
9961 @table @option
9962 @item mode
9963 Select the permissions mode.
9964
9965 It accepts the following values:
9966 @table @samp
9967 @item none
9968 Do nothing. This is the default.
9969 @item ro
9970 Set all the output frames read-only.
9971 @item rw
9972 Set all the output frames directly writable.
9973 @item toggle
9974 Make the frame read-only if writable, and writable if read-only.
9975 @item random
9976 Set each output frame read-only or writable randomly.
9977 @end table
9978
9979 @item seed
9980 Set the seed for the @var{random} mode, must be an integer included between
9981 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
9982 @code{-1}, the filter will try to use a good random seed on a best effort
9983 basis.
9984 @end table
9985
9986 Note: in case of auto-inserted filter between the permission filter and the
9987 following one, the permission might not be received as expected in that
9988 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
9989 perms/aperms filter can avoid this problem.
9990
9991 @section select, aselect
9992
9993 Select frames to pass in output.
9994
9995 This filter accepts the following options:
9996
9997 @table @option
9998
9999 @item expr, e
10000 Set expression, which is evaluated for each input frame.
10001
10002 If the expression is evaluated to zero, the frame is discarded.
10003
10004 If the evaluation result is negative or NaN, the frame is sent to the
10005 first output; otherwise it is sent to the output with index
10006 @code{ceil(val)-1}, assuming that the input index starts from 0.
10007
10008 For example a value of @code{1.2} corresponds to the output with index
10009 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
10010
10011 @item outputs, n
10012 Set the number of outputs. The output to which to send the selected
10013 frame is based on the result of the evaluation. Default value is 1.
10014 @end table
10015
10016 The expression can contain the following constants:
10017
10018 @table @option
10019 @item n
10020 The (sequential) number of the filtered frame, starting from 0.
10021
10022 @item selected_n
10023 The (sequential) number of the selected frame, starting from 0.
10024
10025 @item prev_selected_n
10026 The sequential number of the last selected frame. It's NAN if undefined.
10027
10028 @item TB
10029 The timebase of the input timestamps.
10030
10031 @item pts
10032 The PTS (Presentation TimeStamp) of the filtered video frame,
10033 expressed in @var{TB} units. It's NAN if undefined.
10034
10035 @item t
10036 The PTS of the filtered video frame,
10037 expressed in seconds. It's NAN if undefined.
10038
10039 @item prev_pts
10040 The PTS of the previously filtered video frame. It's NAN if undefined.
10041
10042 @item prev_selected_pts
10043 The PTS of the last previously filtered video frame. It's NAN if undefined.
10044
10045 @item prev_selected_t
10046 The PTS of the last previously selected video frame. It's NAN if undefined.
10047
10048 @item start_pts
10049 The PTS of the first video frame in the video. It's NAN if undefined.
10050
10051 @item start_t
10052 The time of the first video frame in the video. It's NAN if undefined.
10053
10054 @item pict_type @emph{(video only)}
10055 The type of the filtered frame. It can assume one of the following
10056 values:
10057 @table @option
10058 @item I
10059 @item P
10060 @item B
10061 @item S
10062 @item SI
10063 @item SP
10064 @item BI
10065 @end table
10066
10067 @item interlace_type @emph{(video only)}
10068 The frame interlace type. It can assume one of the following values:
10069 @table @option
10070 @item PROGRESSIVE
10071 The frame is progressive (not interlaced).
10072 @item TOPFIRST
10073 The frame is top-field-first.
10074 @item BOTTOMFIRST
10075 The frame is bottom-field-first.
10076 @end table
10077
10078 @item consumed_sample_n @emph{(audio only)}
10079 the number of selected samples before the current frame
10080
10081 @item samples_n @emph{(audio only)}
10082 the number of samples in the current frame
10083
10084 @item sample_rate @emph{(audio only)}
10085 the input sample rate
10086
10087 @item key
10088 This is 1 if the filtered frame is a key-frame, 0 otherwise.
10089
10090 @item pos
10091 the position in the file of the filtered frame, -1 if the information
10092 is not available (e.g. for synthetic video)
10093
10094 @item scene @emph{(video only)}
10095 value between 0 and 1 to indicate a new scene; a low value reflects a low
10096 probability for the current frame to introduce a new scene, while a higher
10097 value means the current frame is more likely to be one (see the example below)
10098
10099 @end table
10100
10101 The default value of the select expression is "1".
10102
10103 @subsection Examples
10104
10105 @itemize
10106 @item
10107 Select all frames in input:
10108 @example
10109 select
10110 @end example
10111
10112 The example above is the same as:
10113 @example
10114 select=1
10115 @end example
10116
10117 @item
10118 Skip all frames:
10119 @example
10120 select=0
10121 @end example
10122
10123 @item
10124 Select only I-frames:
10125 @example
10126 select='eq(pict_type\,I)'
10127 @end example
10128
10129 @item
10130 Select one frame every 100:
10131 @example
10132 select='not(mod(n\,100))'
10133 @end example
10134
10135 @item
10136 Select only frames contained in the 10-20 time interval:
10137 @example
10138 select=between(t\,10\,20)
10139 @end example
10140
10141 @item
10142 Select only I frames contained in the 10-20 time interval:
10143 @example
10144 select=between(t\,10\,20)*eq(pict_type\,I)
10145 @end example
10146
10147 @item
10148 Select frames with a minimum distance of 10 seconds:
10149 @example
10150 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
10151 @end example
10152
10153 @item
10154 Use aselect to select only audio frames with samples number > 100:
10155 @example
10156 aselect='gt(samples_n\,100)'
10157 @end example
10158
10159 @item
10160 Create a mosaic of the first scenes:
10161 @example
10162 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
10163 @end example
10164
10165 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
10166 choice.
10167
10168 @item
10169 Send even and odd frames to separate outputs, and compose them:
10170 @example
10171 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
10172 @end example
10173 @end itemize
10174
10175 @section sendcmd, asendcmd
10176
10177 Send commands to filters in the filtergraph.
10178
10179 These filters read commands to be sent to other filters in the
10180 filtergraph.
10181
10182 @code{sendcmd} must be inserted between two video filters,
10183 @code{asendcmd} must be inserted between two audio filters, but apart
10184 from that they act the same way.
10185
10186 The specification of commands can be provided in the filter arguments
10187 with the @var{commands} option, or in a file specified by the
10188 @var{filename} option.
10189
10190 These filters accept the following options:
10191 @table @option
10192 @item commands, c
10193 Set the commands to be read and sent to the other filters.
10194 @item filename, f
10195 Set the filename of the commands to be read and sent to the other
10196 filters.
10197 @end table
10198
10199 @subsection Commands syntax
10200
10201 A commands description consists of a sequence of interval
10202 specifications, comprising a list of commands to be executed when a
10203 particular event related to that interval occurs. The occurring event
10204 is typically the current frame time entering or leaving a given time
10205 interval.
10206
10207 An interval is specified by the following syntax:
10208 @example
10209 @var{START}[-@var{END}] @var{COMMANDS};
10210 @end example
10211
10212 The time interval is specified by the @var{START} and @var{END} times.
10213 @var{END} is optional and defaults to the maximum time.
10214
10215 The current frame time is considered within the specified interval if
10216 it is included in the interval [@var{START}, @var{END}), that is when
10217 the time is greater or equal to @var{START} and is lesser than
10218 @var{END}.
10219
10220 @var{COMMANDS} consists of a sequence of one or more command
10221 specifications, separated by ",", relating to that interval.  The
10222 syntax of a command specification is given by:
10223 @example
10224 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
10225 @end example
10226
10227 @var{FLAGS} is optional and specifies the type of events relating to
10228 the time interval which enable sending the specified command, and must
10229 be a non-null sequence of identifier flags separated by "+" or "|" and
10230 enclosed between "[" and "]".
10231
10232 The following flags are recognized:
10233 @table @option
10234 @item enter
10235 The command is sent when the current frame timestamp enters the
10236 specified interval. In other words, the command is sent when the
10237 previous frame timestamp was not in the given interval, and the
10238 current is.
10239
10240 @item leave
10241 The command is sent when the current frame timestamp leaves the
10242 specified interval. In other words, the command is sent when the
10243 previous frame timestamp was in the given interval, and the
10244 current is not.
10245 @end table
10246
10247 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
10248 assumed.
10249
10250 @var{TARGET} specifies the target of the command, usually the name of
10251 the filter class or a specific filter instance name.
10252
10253 @var{COMMAND} specifies the name of the command for the target filter.
10254
10255 @var{ARG} is optional and specifies the optional list of argument for
10256 the given @var{COMMAND}.
10257
10258 Between one interval specification and another, whitespaces, or
10259 sequences of characters starting with @code{#} until the end of line,
10260 are ignored and can be used to annotate comments.
10261
10262 A simplified BNF description of the commands specification syntax
10263 follows:
10264 @example
10265 @var{COMMAND_FLAG}  ::= "enter" | "leave"
10266 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
10267 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
10268 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
10269 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
10270 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
10271 @end example
10272
10273 @subsection Examples
10274
10275 @itemize
10276 @item
10277 Specify audio tempo change at second 4:
10278 @example
10279 asendcmd=c='4.0 atempo tempo 1.5',atempo
10280 @end example
10281
10282 @item
10283 Specify a list of drawtext and hue commands in a file.
10284 @example
10285 # show text in the interval 5-10
10286 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
10287          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
10288
10289 # desaturate the image in the interval 15-20
10290 15.0-20.0 [enter] hue s 0,
10291           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
10292           [leave] hue s 1,
10293           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
10294
10295 # apply an exponential saturation fade-out effect, starting from time 25
10296 25 [enter] hue s exp(25-t)
10297 @end example
10298
10299 A filtergraph allowing to read and process the above command list
10300 stored in a file @file{test.cmd}, can be specified with:
10301 @example
10302 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
10303 @end example
10304 @end itemize
10305
10306 @anchor{setpts}
10307 @section setpts, asetpts
10308
10309 Change the PTS (presentation timestamp) of the input frames.
10310
10311 @code{setpts} works on video frames, @code{asetpts} on audio frames.
10312
10313 This filter accepts the following options:
10314
10315 @table @option
10316
10317 @item expr
10318 The expression which is evaluated for each frame to construct its timestamp.
10319
10320 @end table
10321
10322 The expression is evaluated through the eval API and can contain the following
10323 constants:
10324
10325 @table @option
10326 @item FRAME_RATE
10327 frame rate, only defined for constant frame-rate video
10328
10329 @item PTS
10330 The presentation timestamp in input
10331
10332 @item N
10333 The count of the input frame for video or the number of consumed samples,
10334 not including the current frame for audio, starting from 0.
10335
10336 @item NB_CONSUMED_SAMPLES
10337 The number of consumed samples, not including the current frame (only
10338 audio)
10339
10340 @item NB_SAMPLES, S
10341 The number of samples in the current frame (only audio)
10342
10343 @item SAMPLE_RATE, SR
10344 The audio sample rate.
10345
10346 @item STARTPTS
10347 The PTS of the first frame.
10348
10349 @item STARTT
10350 the time in seconds of the first frame
10351
10352 @item INTERLACED
10353 State whether the current frame is interlaced.
10354
10355 @item T
10356 the time in seconds of the current frame
10357
10358 @item POS
10359 original position in the file of the frame, or undefined if undefined
10360 for the current frame
10361
10362 @item PREV_INPTS
10363 The previous input PTS.
10364
10365 @item PREV_INT
10366 previous input time in seconds
10367
10368 @item PREV_OUTPTS
10369 The previous output PTS.
10370
10371 @item PREV_OUTT
10372 previous output time in seconds
10373
10374 @item RTCTIME
10375 The wallclock (RTC) time in microseconds.. This is deprecated, use time(0)
10376 instead.
10377
10378 @item RTCSTART
10379 The wallclock (RTC) time at the start of the movie in microseconds.
10380
10381 @item TB
10382 The timebase of the input timestamps.
10383
10384 @end table
10385
10386 @subsection Examples
10387
10388 @itemize
10389 @item
10390 Start counting PTS from zero
10391 @example
10392 setpts=PTS-STARTPTS
10393 @end example
10394
10395 @item
10396 Apply fast motion effect:
10397 @example
10398 setpts=0.5*PTS
10399 @end example
10400
10401 @item
10402 Apply slow motion effect:
10403 @example
10404 setpts=2.0*PTS
10405 @end example
10406
10407 @item
10408 Set fixed rate of 25 frames per second:
10409 @example
10410 setpts=N/(25*TB)
10411 @end example
10412
10413 @item
10414 Set fixed rate 25 fps with some jitter:
10415 @example
10416 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
10417 @end example
10418
10419 @item
10420 Apply an offset of 10 seconds to the input PTS:
10421 @example
10422 setpts=PTS+10/TB
10423 @end example
10424
10425 @item
10426 Generate timestamps from a "live source" and rebase onto the current timebase:
10427 @example
10428 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
10429 @end example
10430
10431 @item
10432 Generate timestamps by counting samples:
10433 @example
10434 asetpts=N/SR/TB
10435 @end example
10436
10437 @end itemize
10438
10439 @section settb, asettb
10440
10441 Set the timebase to use for the output frames timestamps.
10442 It is mainly useful for testing timebase configuration.
10443
10444 It accepts the following parameters:
10445
10446 @table @option
10447
10448 @item expr, tb
10449 The expression which is evaluated into the output timebase.
10450
10451 @end table
10452
10453 The value for @option{tb} is an arithmetic expression representing a
10454 rational. The expression can contain the constants "AVTB" (the default
10455 timebase), "intb" (the input timebase) and "sr" (the sample rate,
10456 audio only). Default value is "intb".
10457
10458 @subsection Examples
10459
10460 @itemize
10461 @item
10462 Set the timebase to 1/25:
10463 @example
10464 settb=expr=1/25
10465 @end example
10466
10467 @item
10468 Set the timebase to 1/10:
10469 @example
10470 settb=expr=0.1
10471 @end example
10472
10473 @item
10474 Set the timebase to 1001/1000:
10475 @example
10476 settb=1+0.001
10477 @end example
10478
10479 @item
10480 Set the timebase to 2*intb:
10481 @example
10482 settb=2*intb
10483 @end example
10484
10485 @item
10486 Set the default timebase value:
10487 @example
10488 settb=AVTB
10489 @end example
10490 @end itemize
10491
10492 @section showcqt
10493 Convert input audio to a video output representing
10494 frequency spectrum logarithmically (using constant Q transform with
10495 Brown-Puckette algorithm), with musical tone scale, from E0 to D#10 (10 octaves).
10496
10497 The filter accepts the following options:
10498
10499 @table @option
10500 @item volume
10501 Specify the transform volume (multiplier). Acceptable value is [1.0, 100.0].
10502 Default value is @code{16.0}.
10503
10504 @item timeclamp
10505 Specify the transform timeclamp. At low frequency, there is trade-off between
10506 accuracy in time domain and frequency domain. If timeclamp is lower,
10507 event in time domain is represented more accurately (such as fast bass drum),
10508 otherwise event in frequency domain is represented more accurately
10509 (such as bass guitar). Acceptable value is [0.1, 1.0]. Default value is @code{0.17}.
10510
10511 @item coeffclamp
10512 Specify the transform coeffclamp. If coeffclamp is lower, transform is
10513 more accurate, otherwise transform is faster. Acceptable value is [0.1, 10.0].
10514 Default value is @code{1.0}.
10515
10516 @item gamma
10517 Specify gamma. Lower gamma makes the spectrum more contrast, higher gamma
10518 makes the spectrum having more range. Acceptable value is [1.0, 7.0].
10519 Default value is @code{3.0}.
10520
10521 @item fontfile
10522 Specify font file for use with freetype. If not specified, use embedded font.
10523
10524 @item fullhd
10525 If set to 1 (the default), the video size is 1920x1080 (full HD),
10526 if set to 0, the video size is 960x540. Use this option to make CPU usage lower.
10527
10528 @item fps
10529 Specify video fps. Default value is @code{25}.
10530
10531 @item count
10532 Specify number of transform per frame, so there are fps*count transforms
10533 per second. Note that audio data rate must be divisible by fps*count.
10534 Default value is @code{6}.
10535
10536 @end table
10537
10538 @subsection Examples
10539
10540 @itemize
10541 @item
10542 Playing audio while showing the spectrum:
10543 @example
10544 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
10545 @end example
10546
10547 @item
10548 Same as above, but with frame rate 30 fps:
10549 @example
10550 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
10551 @end example
10552
10553 @item
10554 Playing at 960x540 and lower CPU usage:
10555 @example
10556 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fullhd=0:count=3 [out0]'
10557 @end example
10558
10559 @item
10560 A1 and its harmonics: A1, A2, (near)E3, A3:
10561 @example
10562 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),
10563                  asplit[a][out1]; [a] showcqt [out0]'
10564 @end example
10565
10566 @item
10567 Same as above, but with more accuracy in frequency domain (and slower):
10568 @example
10569 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),
10570                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
10571 @end example
10572
10573 @end itemize
10574
10575 @section showspectrum
10576
10577 Convert input audio to a video output, representing the audio frequency
10578 spectrum.
10579
10580 The filter accepts the following options:
10581
10582 @table @option
10583 @item size, s
10584 Specify the video size for the output. For the syntax of this option, check
10585 the "Video size" section in the ffmpeg-utils manual. Default value is
10586 @code{640x512}.
10587
10588 @item slide
10589 Specify if the spectrum should slide along the window. Default value is
10590 @code{0}.
10591
10592 @item mode
10593 Specify display mode.
10594
10595 It accepts the following values:
10596 @table @samp
10597 @item combined
10598 all channels are displayed in the same row
10599 @item separate
10600 all channels are displayed in separate rows
10601 @end table
10602
10603 Default value is @samp{combined}.
10604
10605 @item color
10606 Specify display color mode.
10607
10608 It accepts the following values:
10609 @table @samp
10610 @item channel
10611 each channel is displayed in a separate color
10612 @item intensity
10613 each channel is is displayed using the same color scheme
10614 @end table
10615
10616 Default value is @samp{channel}.
10617
10618 @item scale
10619 Specify scale used for calculating intensity color values.
10620
10621 It accepts the following values:
10622 @table @samp
10623 @item lin
10624 linear
10625 @item sqrt
10626 square root, default
10627 @item cbrt
10628 cubic root
10629 @item log
10630 logarithmic
10631 @end table
10632
10633 Default value is @samp{sqrt}.
10634
10635 @item saturation
10636 Set saturation modifier for displayed colors. Negative values provide
10637 alternative color scheme. @code{0} is no saturation at all.
10638 Saturation must be in [-10.0, 10.0] range.
10639 Default value is @code{1}.
10640
10641 @item win_func
10642 Set window function.
10643
10644 It accepts the following values:
10645 @table @samp
10646 @item none
10647 No samples pre-processing (do not expect this to be faster)
10648 @item hann
10649 Hann window
10650 @item hamming
10651 Hamming window
10652 @item blackman
10653 Blackman window
10654 @end table
10655
10656 Default value is @code{hann}.
10657 @end table
10658
10659 The usage is very similar to the showwaves filter; see the examples in that
10660 section.
10661
10662 @subsection Examples
10663
10664 @itemize
10665 @item
10666 Large window with logarithmic color scaling:
10667 @example
10668 showspectrum=s=1280x480:scale=log
10669 @end example
10670
10671 @item
10672 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
10673 @example
10674 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
10675              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
10676 @end example
10677 @end itemize
10678
10679 @section showwaves
10680
10681 Convert input audio to a video output, representing the samples waves.
10682
10683 The filter accepts the following options:
10684
10685 @table @option
10686 @item size, s
10687 Specify the video size for the output. For the syntax of this option, check
10688 the "Video size" section in the ffmpeg-utils manual. Default value
10689 is "600x240".
10690
10691 @item mode
10692 Set display mode.
10693
10694 Available values are:
10695 @table @samp
10696 @item point
10697 Draw a point for each sample.
10698
10699 @item line
10700 Draw a vertical line for each sample.
10701 @end table
10702
10703 Default value is @code{point}.
10704
10705 @item n
10706 Set the number of samples which are printed on the same column. A
10707 larger value will decrease the frame rate. Must be a positive
10708 integer. This option can be set only if the value for @var{rate}
10709 is not explicitly specified.
10710
10711 @item rate, r
10712 Set the (approximate) output frame rate. This is done by setting the
10713 option @var{n}. Default value is "25".
10714
10715 @end table
10716
10717 @subsection Examples
10718
10719 @itemize
10720 @item
10721 Output the input file audio and the corresponding video representation
10722 at the same time:
10723 @example
10724 amovie=a.mp3,asplit[out0],showwaves[out1]
10725 @end example
10726
10727 @item
10728 Create a synthetic signal and show it with showwaves, forcing a
10729 frame rate of 30 frames per second:
10730 @example
10731 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
10732 @end example
10733 @end itemize
10734
10735 @section split, asplit
10736
10737 Split input into several identical outputs.
10738
10739 @code{asplit} works with audio input, @code{split} with video.
10740
10741 The filter accepts a single parameter which specifies the number of outputs. If
10742 unspecified, it defaults to 2.
10743
10744 @subsection Examples
10745
10746 @itemize
10747 @item
10748 Create two separate outputs from the same input:
10749 @example
10750 [in] split [out0][out1]
10751 @end example
10752
10753 @item
10754 To create 3 or more outputs, you need to specify the number of
10755 outputs, like in:
10756 @example
10757 [in] asplit=3 [out0][out1][out2]
10758 @end example
10759
10760 @item
10761 Create two separate outputs from the same input, one cropped and
10762 one padded:
10763 @example
10764 [in] split [splitout1][splitout2];
10765 [splitout1] crop=100:100:0:0    [cropout];
10766 [splitout2] pad=200:200:100:100 [padout];
10767 @end example
10768
10769 @item
10770 Create 5 copies of the input audio with @command{ffmpeg}:
10771 @example
10772 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
10773 @end example
10774 @end itemize
10775
10776 @section zmq, azmq
10777
10778 Receive commands sent through a libzmq client, and forward them to
10779 filters in the filtergraph.
10780
10781 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
10782 must be inserted between two video filters, @code{azmq} between two
10783 audio filters.
10784
10785 To enable these filters you need to install the libzmq library and
10786 headers and configure FFmpeg with @code{--enable-libzmq}.
10787
10788 For more information about libzmq see:
10789 @url{http://www.zeromq.org/}
10790
10791 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
10792 receives messages sent through a network interface defined by the
10793 @option{bind_address} option.
10794
10795 The received message must be in the form:
10796 @example
10797 @var{TARGET} @var{COMMAND} [@var{ARG}]
10798 @end example
10799
10800 @var{TARGET} specifies the target of the command, usually the name of
10801 the filter class or a specific filter instance name.
10802
10803 @var{COMMAND} specifies the name of the command for the target filter.
10804
10805 @var{ARG} is optional and specifies the optional argument list for the
10806 given @var{COMMAND}.
10807
10808 Upon reception, the message is processed and the corresponding command
10809 is injected into the filtergraph. Depending on the result, the filter
10810 will send a reply to the client, adopting the format:
10811 @example
10812 @var{ERROR_CODE} @var{ERROR_REASON}
10813 @var{MESSAGE}
10814 @end example
10815
10816 @var{MESSAGE} is optional.
10817
10818 @subsection Examples
10819
10820 Look at @file{tools/zmqsend} for an example of a zmq client which can
10821 be used to send commands processed by these filters.
10822
10823 Consider the following filtergraph generated by @command{ffplay}
10824 @example
10825 ffplay -dumpgraph 1 -f lavfi "
10826 color=s=100x100:c=red  [l];
10827 color=s=100x100:c=blue [r];
10828 nullsrc=s=200x100, zmq [bg];
10829 [bg][l]   overlay      [bg+l];
10830 [bg+l][r] overlay=x=100 "
10831 @end example
10832
10833 To change the color of the left side of the video, the following
10834 command can be used:
10835 @example
10836 echo Parsed_color_0 c yellow | tools/zmqsend
10837 @end example
10838
10839 To change the right side:
10840 @example
10841 echo Parsed_color_1 c pink | tools/zmqsend
10842 @end example
10843
10844 @c man end MULTIMEDIA FILTERS
10845
10846 @chapter Multimedia Sources
10847 @c man begin MULTIMEDIA SOURCES
10848
10849 Below is a description of the currently available multimedia sources.
10850
10851 @section amovie
10852
10853 This is the same as @ref{movie} source, except it selects an audio
10854 stream by default.
10855
10856 @anchor{movie}
10857 @section movie
10858
10859 Read audio and/or video stream(s) from a movie container.
10860
10861 It accepts the following parameters:
10862
10863 @table @option
10864 @item filename
10865 The name of the resource to read (not necessarily a file; it can also be a
10866 device or a stream accessed through some protocol).
10867
10868 @item format_name, f
10869 Specifies the format assumed for the movie to read, and can be either
10870 the name of a container or an input device. If not specified, the
10871 format is guessed from @var{movie_name} or by probing.
10872
10873 @item seek_point, sp
10874 Specifies the seek point in seconds. The frames will be output
10875 starting from this seek point. The parameter is evaluated with
10876 @code{av_strtod}, so the numerical value may be suffixed by an IS
10877 postfix. The default value is "0".
10878
10879 @item streams, s
10880 Specifies the streams to read. Several streams can be specified,
10881 separated by "+". The source will then have as many outputs, in the
10882 same order. The syntax is explained in the ``Stream specifiers''
10883 section in the ffmpeg manual. Two special names, "dv" and "da" specify
10884 respectively the default (best suited) video and audio stream. Default
10885 is "dv", or "da" if the filter is called as "amovie".
10886
10887 @item stream_index, si
10888 Specifies the index of the video stream to read. If the value is -1,
10889 the most suitable video stream will be automatically selected. The default
10890 value is "-1". Deprecated. If the filter is called "amovie", it will select
10891 audio instead of video.
10892
10893 @item loop
10894 Specifies how many times to read the stream in sequence.
10895 If the value is less than 1, the stream will be read again and again.
10896 Default value is "1".
10897
10898 Note that when the movie is looped the source timestamps are not
10899 changed, so it will generate non monotonically increasing timestamps.
10900 @end table
10901
10902 It allows overlaying a second video on top of the main input of
10903 a filtergraph, as shown in this graph:
10904 @example
10905 input -----------> deltapts0 --> overlay --> output
10906                                     ^
10907                                     |
10908 movie --> scale--> deltapts1 -------+
10909 @end example
10910 @subsection Examples
10911
10912 @itemize
10913 @item
10914 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
10915 on top of the input labelled "in":
10916 @example
10917 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
10918 [in] setpts=PTS-STARTPTS [main];
10919 [main][over] overlay=16:16 [out]
10920 @end example
10921
10922 @item
10923 Read from a video4linux2 device, and overlay it on top of the input
10924 labelled "in":
10925 @example
10926 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
10927 [in] setpts=PTS-STARTPTS [main];
10928 [main][over] overlay=16:16 [out]
10929 @end example
10930
10931 @item
10932 Read the first video stream and the audio stream with id 0x81 from
10933 dvd.vob; the video is connected to the pad named "video" and the audio is
10934 connected to the pad named "audio":
10935 @example
10936 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
10937 @end example
10938 @end itemize
10939
10940 @c man end MULTIMEDIA SOURCES