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