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