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