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