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