]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
lavfi: add audio convert filter
[ffmpeg] / doc / filters.texi
1 @chapter Filtergraph description
2 @c man begin FILTERGRAPH DESCRIPTION
3
4 A filtergraph is a directed graph of connected filters. It can contain
5 cycles, and there can be multiple links between a pair of
6 filters. Each link has one input pad on one side connecting it to one
7 filter from which it takes its input, and one output pad on the other
8 side connecting it to the one filter accepting its output.
9
10 Each filter in a filtergraph is an instance of a filter class
11 registered in the application, which defines the features and the
12 number of input and output pads of the filter.
13
14 A filter with no input pads is called a "source", a filter with no
15 output pads is called a "sink".
16
17 @section Filtergraph syntax
18
19 A filtergraph can be represented using a textual representation, which
20 is recognized by the @code{-vf} and @code{-af} options of the ff*
21 tools, and by the @code{avfilter_graph_parse()} function defined in
22 @file{libavfilter/avfiltergraph.h}.
23
24 A filterchain consists of a sequence of connected filters, each one
25 connected to the previous one in the sequence. A filterchain is
26 represented by a list of ","-separated filter descriptions.
27
28 A filtergraph consists of a sequence of filterchains. A sequence of
29 filterchains is represented by a list of ";"-separated filterchain
30 descriptions.
31
32 A filter is represented by a string of the form:
33 [@var{in_link_1}]...[@var{in_link_N}]@var{filter_name}=@var{arguments}[@var{out_link_1}]...[@var{out_link_M}]
34
35 @var{filter_name} is the name of the filter class of which the
36 described filter is an instance of, and has to be the name of one of
37 the filter classes registered in the program.
38 The name of the filter class is optionally followed by a string
39 "=@var{arguments}".
40
41 @var{arguments} is a string which contains the parameters used to
42 initialize the filter instance, and are described in the filter
43 descriptions below.
44
45 The list of arguments can be quoted using the character "'" as initial
46 and ending mark, and the character '\' for escaping the characters
47 within the quoted text; otherwise the argument string is considered
48 terminated when the next special character (belonging to the set
49 "[]=;,") is encountered.
50
51 The name and arguments of the filter are optionally preceded and
52 followed by a list of link labels.
53 A link label allows to name a link and associate it to a filter output
54 or input pad. The preceding labels @var{in_link_1}
55 ... @var{in_link_N}, are associated to the filter input pads,
56 the following labels @var{out_link_1} ... @var{out_link_M}, are
57 associated to the output pads.
58
59 When two link labels with the same name are found in the
60 filtergraph, a link between the corresponding input and output pad is
61 created.
62
63 If an output pad is not labelled, it is linked by default to the first
64 unlabelled input pad of the next filter in the filterchain.
65 For example in the filterchain:
66 @example
67 nullsrc, split[L1], [L2]overlay, nullsink
68 @end example
69 the split filter instance has two output pads, and the overlay filter
70 instance two input pads. The first output pad of split is labelled
71 "L1", the first input pad of overlay is labelled "L2", and the second
72 output pad of split is linked to the second input pad of overlay,
73 which are both unlabelled.
74
75 In a complete filterchain all the unlabelled filter input and output
76 pads must be connected. A filtergraph is considered valid if all the
77 filter input and output pads of all the filterchains are connected.
78
79 Follows a BNF description for the filtergraph syntax:
80 @example
81 @var{NAME}             ::= sequence of alphanumeric characters and '_'
82 @var{LINKLABEL}        ::= "[" @var{NAME} "]"
83 @var{LINKLABELS}       ::= @var{LINKLABEL} [@var{LINKLABELS}]
84 @var{FILTER_ARGUMENTS} ::= sequence of chars (eventually quoted)
85 @var{FILTER}           ::= [@var{LINKNAMES}] @var{NAME} ["=" @var{ARGUMENTS}] [@var{LINKNAMES}]
86 @var{FILTERCHAIN}      ::= @var{FILTER} [,@var{FILTERCHAIN}]
87 @var{FILTERGRAPH}      ::= @var{FILTERCHAIN} [;@var{FILTERGRAPH}]
88 @end example
89
90 @c man end FILTERGRAPH DESCRIPTION
91
92 @chapter Audio Filters
93 @c man begin AUDIO FILTERS
94
95 When you configure your FFmpeg build, you can disable any of the
96 existing filters using --disable-filters.
97 The configure output will show the audio filters included in your
98 build.
99
100 Below is a description of the currently available audio filters.
101
102 @section aconvert
103
104 Convert the input audio format to the specified formats.
105
106 The filter accepts a string of the form:
107 "@var{sample_format}:@var{channel_layout}:@var{packing_format}".
108
109 @var{sample_format} specifies the sample format, and can be a string or
110 the corresponding numeric value defined in @file{libavutil/samplefmt.h}.
111
112 @var{channel_layout} specifies the channel layout, and can be a string
113 or the corresponding numer value defined in @file{libavutil/chlayout.h}.
114
115 @var{packing_format} specifies the type of packing in output, can be one
116 of "planar" or "packed", or the corresponding numeric values "0" or "1".
117
118 The special parameter "auto", signifies that the filter will
119 automatically select the output format depending on the output filter.
120
121 Some examples follow.
122
123 @itemize
124 @item
125 Convert input to unsigned 8-bit, stereo, packed:
126 @example
127 aconvert=u8:stereo:packed
128 @end example
129
130 @item
131 Convert input to unsigned 8-bit, automatically select out channel layout
132 and packing format:
133 @example
134 aconvert=u8:auto:auto
135 @end example
136 @end itemize
137
138 @section aformat
139
140 Convert the input audio to one of the specified formats. The framework will
141 negotiate the most appropriate format to minimize conversions.
142
143 The filter accepts three lists of formats, separated by ":", in the form:
144 "@var{sample_formats}:@var{channel_layouts}:@var{packing_formats}".
145
146 Elements in each list are separated by "," which has to be escaped in the
147 filtergraph specification.
148
149 The special parameter "all", in place of a list of elements, signifies all
150 supported formats.
151
152 Some examples follow:
153 @example
154 aformat=u8\\,s16:mono:packed
155
156 aformat=s16:mono\\,stereo:all
157 @end example
158
159 @section anull
160
161 Pass the audio source unchanged to the output.
162
163 @section aresample
164
165 Resample the input audio to the specified sample rate.
166
167 The filter accepts exactly one parameter, the output sample rate. If not
168 specified then the filter will automatically convert between its input
169 and output sample rates.
170
171 For example, to resample the input audio to 44100Hz:
172 @example
173 aresample=44100
174 @end example
175
176 @section ashowinfo
177
178 Show a line containing various information for each input audio frame.
179 The input audio is not modified.
180
181 The shown line contains a sequence of key/value pairs of the form
182 @var{key}:@var{value}.
183
184 A description of each shown parameter follows:
185
186 @table @option
187 @item n
188 sequential number of the input frame, starting from 0
189
190 @item pts
191 presentation TimeStamp of the input frame, expressed as a number of
192 time base units. The time base unit depends on the filter input pad, and
193 is usually 1/@var{sample_rate}.
194
195 @item pts_time
196 presentation TimeStamp of the input frame, expressed as a number of
197 seconds
198
199 @item pos
200 position of the frame in the input stream, -1 if this information in
201 unavailable and/or meanigless (for example in case of synthetic audio)
202
203 @item fmt
204 sample format name
205
206 @item chlayout
207 channel layout description
208
209 @item nb_samples
210 number of samples (per each channel) contained in the filtered frame
211
212 @item rate
213 sample rate for the audio frame
214
215 @item planar
216 if the packing format is planar, 0 if packed
217
218 @item checksum
219 Adler-32 checksum of all the planes of the input frame
220
221 @item plane_checksum
222 Adler-32 checksum for each input frame plane, expressed in the form
223 "[@var{c0} @var{c1} @var{c2} @var{c3} @var{c4} @var{c5} @var{c6} @var{c7}]"
224 @end table
225
226 @c man end AUDIO FILTERS
227
228 @chapter Audio Sources
229 @c man begin AUDIO SOURCES
230
231 Below is a description of the currently available audio sources.
232
233 @section abuffer
234
235 Buffer audio frames, and make them available to the filter chain.
236
237 This source is mainly intended for a programmatic use, in particular
238 through the interface defined in @file{libavfilter/asrc_abuffer.h}.
239
240 It accepts the following mandatory parameters:
241 @var{sample_rate}:@var{sample_fmt}:@var{channel_layout}:@var{packing}
242
243 @table @option
244
245 @item sample_rate
246 The sample rate of the incoming audio buffers.
247
248 @item sample_fmt
249 The sample format of the incoming audio buffers.
250 Either a sample format name or its corresponging integer representation from
251 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
252
253 @item channel_layout
254 The channel layout of the incoming audio buffers.
255 Either a channel layout name from channel_layout_map in
256 @file{libavutil/audioconvert.c} or its corresponding integer representation
257 from the AV_CH_LAYOUT_* macros in @file{libavutil/audioconvert.h}
258
259 @item packing
260 Either "packed" or "planar", or their integer representation: 0 or 1
261 respectively.
262
263 @end table
264
265 For example:
266 @example
267 abuffer=44100:s16:stereo:planar
268 @end example
269
270 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
271 Since the sample format with name "s16" corresponds to the number
272 1 and the "stereo" channel layout corresponds to the value 3, this is
273 equivalent to:
274 @example
275 abuffer=44100:1:3:1
276 @end example
277
278 @section amovie
279
280 Read an audio stream from a movie container.
281
282 It accepts the syntax: @var{movie_name}[:@var{options}] where
283 @var{movie_name} is the name of the resource to read (not necessarily
284 a file but also a device or a stream accessed through some protocol),
285 and @var{options} is an optional sequence of @var{key}=@var{value}
286 pairs, separated by ":".
287
288 The description of the accepted options follows.
289
290 @table @option
291
292 @item format_name, f
293 Specify the format assumed for the movie to read, and can be either
294 the name of a container or an input device. If not specified the
295 format is guessed from @var{movie_name} or by probing.
296
297 @item seek_point, sp
298 Specify the seek point in seconds, the frames will be output
299 starting from this seek point, the parameter is evaluated with
300 @code{av_strtod} so the numerical value may be suffixed by an IS
301 postfix. Default value is "0".
302
303 @item stream_index, si
304 Specify the index of the audio stream to read. If the value is -1,
305 the best suited audio stream will be automatically selected. Default
306 value is "-1".
307
308 @end table
309
310 @section anullsrc
311
312 Null audio source, never return audio frames. It is mainly useful as a
313 template and to be employed in analysis / debugging tools.
314
315 It accepts as optional parameter a string of the form
316 @var{sample_rate}:@var{channel_layout}.
317
318 @var{sample_rate} specify the sample rate, and defaults to 44100.
319
320 @var{channel_layout} specify the channel layout, and can be either an
321 integer or a string representing a channel layout. The default value
322 of @var{channel_layout} is 3, which corresponds to CH_LAYOUT_STEREO.
323
324 Check the channel_layout_map definition in
325 @file{libavcodec/audioconvert.c} for the mapping between strings and
326 channel layout values.
327
328 Follow some examples:
329 @example
330 #  set the sample rate to 48000 Hz and the channel layout to CH_LAYOUT_MONO.
331 anullsrc=48000:4
332
333 # same as
334 anullsrc=48000:mono
335 @end example
336
337 @c man end AUDIO SOURCES
338
339 @chapter Audio Sinks
340 @c man begin AUDIO SINKS
341
342 Below is a description of the currently available audio sinks.
343
344 @section abuffersink
345
346 Buffer audio frames, and make them available to the end of filter chain.
347
348 This sink is mainly intended for programmatic use, in particular
349 through the interface defined in @file{libavfilter/buffersink.h}.
350
351 It requires a pointer to an AVABufferSinkContext structure, which
352 defines the incoming buffers' formats, to be passed as the opaque
353 parameter to @code{avfilter_init_filter} for initialization.
354
355 @section anullsink
356
357 Null audio sink, do absolutely nothing with the input audio. It is
358 mainly useful as a template and to be employed in analysis / debugging
359 tools.
360
361 @c man end AUDIO SINKS
362
363 @chapter Video Filters
364 @c man begin VIDEO FILTERS
365
366 When you configure your FFmpeg build, you can disable any of the
367 existing filters using --disable-filters.
368 The configure output will show the video filters included in your
369 build.
370
371 Below is a description of the currently available video filters.
372
373 @section blackframe
374
375 Detect frames that are (almost) completely black. Can be useful to
376 detect chapter transitions or commercials. Output lines consist of
377 the frame number of the detected frame, the percentage of blackness,
378 the position in the file if known or -1 and the timestamp in seconds.
379
380 In order to display the output lines, you need to set the loglevel at
381 least to the AV_LOG_INFO value.
382
383 The filter accepts the syntax:
384 @example
385 blackframe[=@var{amount}:[@var{threshold}]]
386 @end example
387
388 @var{amount} is the percentage of the pixels that have to be below the
389 threshold, and defaults to 98.
390
391 @var{threshold} is the threshold below which a pixel value is
392 considered black, and defaults to 32.
393
394 @section boxblur
395
396 Apply boxblur algorithm to the input video.
397
398 This filter accepts the parameters:
399 @var{luma_radius}:@var{luma_power}:@var{chroma_radius}:@var{chroma_power}:@var{alpha_radius}:@var{alpha_power}
400
401 Chroma and alpha parameters are optional, if not specified they default
402 to the corresponding values set for @var{luma_radius} and
403 @var{luma_power}.
404
405 @var{luma_radius}, @var{chroma_radius}, and @var{alpha_radius} represent
406 the radius in pixels of the box used for blurring the corresponding
407 input plane. They are expressions, and can contain the following
408 constants:
409 @table @option
410 @item w, h
411 the input width and heigth in pixels
412
413 @item cw, ch
414 the input chroma image width and height in pixels
415
416 @item hsub, vsub
417 horizontal and vertical chroma subsample values. For example for the
418 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
419 @end table
420
421 The radius must be a non-negative number, and must be not greater than
422 the value of the expression @code{min(w,h)/2} for the luma and alpha planes,
423 and of @code{min(cw,ch)/2} for the chroma planes.
424
425 @var{luma_power}, @var{chroma_power}, and @var{alpha_power} represent
426 how many times the boxblur filter is applied to the corresponding
427 plane.
428
429 Some examples follow:
430
431 @itemize
432
433 @item
434 Apply a boxblur filter with luma, chroma, and alpha radius
435 set to 2:
436 @example
437 boxblur=2:1
438 @end example
439
440 @item
441 Set luma radius to 2, alpha and chroma radius to 0
442 @example
443 boxblur=2:1:0:0:0:0
444 @end example
445
446 @item
447 Set luma and chroma radius to a fraction of the video dimension
448 @example
449 boxblur=min(h\,w)/10:1:min(cw\,ch)/10:1
450 @end example
451
452 @end itemize
453
454 @section copy
455
456 Copy the input source unchanged to the output. Mainly useful for
457 testing purposes.
458
459 @section crop
460
461 Crop the input video to @var{out_w}:@var{out_h}:@var{x}:@var{y}.
462
463 The parameters are expressions containing the following constants:
464
465 @table @option
466 @item E, PI, PHI
467 the corresponding mathematical approximated values for e
468 (euler number), pi (greek PI), PHI (golden ratio)
469
470 @item x, y
471 the computed values for @var{x} and @var{y}. They are evaluated for
472 each new frame.
473
474 @item in_w, in_h
475 the input width and heigth
476
477 @item iw, ih
478 same as @var{in_w} and @var{in_h}
479
480 @item out_w, out_h
481 the output (cropped) width and heigth
482
483 @item ow, oh
484 same as @var{out_w} and @var{out_h}
485
486 @item a
487 same as @var{iw} / @var{ih}
488
489 @item sar
490 input sample aspect ratio
491
492 @item dar
493 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
494
495 @item hsub, vsub
496 horizontal and vertical chroma subsample values. For example for the
497 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
498
499 @item n
500 the number of input frame, starting from 0
501
502 @item pos
503 the position in the file of the input frame, NAN if unknown
504
505 @item t
506 timestamp expressed in seconds, NAN if the input timestamp is unknown
507
508 @end table
509
510 The @var{out_w} and @var{out_h} parameters specify the expressions for
511 the width and height of the output (cropped) video. They are
512 evaluated just at the configuration of the filter.
513
514 The default value of @var{out_w} is "in_w", and the default value of
515 @var{out_h} is "in_h".
516
517 The expression for @var{out_w} may depend on the value of @var{out_h},
518 and the expression for @var{out_h} may depend on @var{out_w}, but they
519 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
520 evaluated after @var{out_w} and @var{out_h}.
521
522 The @var{x} and @var{y} parameters specify the expressions for the
523 position of the top-left corner of the output (non-cropped) area. They
524 are evaluated for each frame. If the evaluated value is not valid, it
525 is approximated to the nearest valid value.
526
527 The default value of @var{x} is "(in_w-out_w)/2", and the default
528 value for @var{y} is "(in_h-out_h)/2", which set the cropped area at
529 the center of the input image.
530
531 The expression for @var{x} may depend on @var{y}, and the expression
532 for @var{y} may depend on @var{x}.
533
534 Follow some examples:
535 @example
536 # crop the central input area with size 100x100
537 crop=100:100
538
539 # crop the central input area with size 2/3 of the input video
540 "crop=2/3*in_w:2/3*in_h"
541
542 # crop the input video central square
543 crop=in_h
544
545 # delimit the rectangle with the top-left corner placed at position
546 # 100:100 and the right-bottom corner corresponding to the right-bottom
547 # corner of the input image.
548 crop=in_w-100:in_h-100:100:100
549
550 # crop 10 pixels from the left and right borders, and 20 pixels from
551 # the top and bottom borders
552 "crop=in_w-2*10:in_h-2*20"
553
554 # keep only the bottom right quarter of the input image
555 "crop=in_w/2:in_h/2:in_w/2:in_h/2"
556
557 # crop height for getting Greek harmony
558 "crop=in_w:1/PHI*in_w"
559
560 # trembling effect
561 "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)"
562
563 # erratic camera effect depending on timestamp
564 "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)"
565
566 # set x depending on the value of y
567 "crop=in_w/2:in_h/2:y:10+10*sin(n/10)"
568 @end example
569
570 @section cropdetect
571
572 Auto-detect crop size.
573
574 Calculate necessary cropping parameters and prints the recommended
575 parameters through the logging system. The detected dimensions
576 correspond to the non-black area of the input video.
577
578 It accepts the syntax:
579 @example
580 cropdetect[=@var{limit}[:@var{round}[:@var{reset}]]]
581 @end example
582
583 @table @option
584
585 @item limit
586 Threshold, which can be optionally specified from nothing (0) to
587 everything (255), defaults to 24.
588
589 @item round
590 Value which the width/height should be divisible by, defaults to
591 16. The offset is automatically adjusted to center the video. Use 2 to
592 get only even dimensions (needed for 4:2:2 video). 16 is best when
593 encoding to most video codecs.
594
595 @item reset
596 Counter that determines after how many frames cropdetect will reset
597 the previously detected largest video area and start over to detect
598 the current optimal crop area. Defaults to 0.
599
600 This can be useful when channel logos distort the video area. 0
601 indicates never reset and return the largest area encountered during
602 playback.
603 @end table
604
605 @section delogo
606
607 Suppress a TV station logo by a simple interpolation of the surrounding
608 pixels. Just set a rectangle covering the logo and watch it disappear
609 (and sometimes something even uglier appear - your mileage may vary).
610
611 The filter accepts parameters as a string of the form
612 "@var{x}:@var{y}:@var{w}:@var{h}:@var{band}", or as a list of
613 @var{key}=@var{value} pairs, separated by ":".
614
615 The description of the accepted parameters follows.
616
617 @table @option
618
619 @item x, y
620 Specify the top left corner coordinates of the logo. They must be
621 specified.
622
623 @item w, h
624 Specify the width and height of the logo to clear. They must be
625 specified.
626
627 @item band, t
628 Specify the thickness of the fuzzy edge of the rectangle (added to
629 @var{w} and @var{h}). The default value is 4.
630
631 @item show
632 When set to 1, a green rectangle is drawn on the screen to simplify
633 finding the right @var{x}, @var{y}, @var{w}, @var{h} parameters, and
634 @var{band} is set to 4. The default value is 0.
635
636 @end table
637
638 Some examples follow.
639
640 @itemize
641
642 @item
643 Set a rectangle covering the area with top left corner coordinates 0,0
644 and size 100x77, setting a band of size 10:
645 @example
646 delogo=0:0:100:77:10
647 @end example
648
649 @item
650 As the previous example, but use named options:
651 @example
652 delogo=x=0:y=0:w=100:h=77:band=10
653 @end example
654
655 @end itemize
656
657 @section drawbox
658
659 Draw a colored box on the input image.
660
661 It accepts the syntax:
662 @example
663 drawbox=@var{x}:@var{y}:@var{width}:@var{height}:@var{color}
664 @end example
665
666 @table @option
667
668 @item x, y
669 Specify the top left corner coordinates of the box. Default to 0.
670
671 @item width, height
672 Specify the width and height of the box, if 0 they are interpreted as
673 the input width and height. Default to 0.
674
675 @item color
676 Specify the color of the box to write, it can be the name of a color
677 (case insensitive match) or a 0xRRGGBB[AA] sequence.
678 @end table
679
680 Follow some examples:
681 @example
682 # draw a black box around the edge of the input image
683 drawbox
684
685 # draw a box with color red and an opacity of 50%
686 drawbox=10:20:200:60:red@@0.5"
687 @end example
688
689 @section drawtext
690
691 Draw text string or text from specified file on top of video using the
692 libfreetype library.
693
694 To enable compilation of this filter you need to configure FFmpeg with
695 @code{--enable-libfreetype}.
696
697 The filter also recognizes strftime() sequences in the provided text
698 and expands them accordingly. Check the documentation of strftime().
699
700 The filter accepts parameters as a list of @var{key}=@var{value} pairs,
701 separated by ":".
702
703 The description of the accepted parameters follows.
704
705 @table @option
706
707 @item fontfile
708 The font file to be used for drawing text. Path must be included.
709 This parameter is mandatory.
710
711 @item text
712 The text string to be drawn. The text must be a sequence of UTF-8
713 encoded characters.
714 This parameter is mandatory if no file is specified with the parameter
715 @var{textfile}.
716
717 @item textfile
718 A text file containing text to be drawn. The text must be a sequence
719 of UTF-8 encoded characters.
720
721 This parameter is mandatory if no text string is specified with the
722 parameter @var{text}.
723
724 If both text and textfile are specified, an error is thrown.
725
726 @item x, y
727 The offsets where text will be drawn within the video frame.
728 Relative to the top/left border of the output image.
729
730 The default value of @var{x} and @var{y} is 0.
731
732 @item fontsize
733 The font size to be used for drawing text.
734 The default value of @var{fontsize} is 16.
735
736 @item fontcolor
737 The color to be used for drawing fonts.
738 Either a string (e.g. "red") or in 0xRRGGBB[AA] format
739 (e.g. "0xff000033"), possibly followed by an alpha specifier.
740 The default value of @var{fontcolor} is "black".
741
742 @item boxcolor
743 The color to be used for drawing box around text.
744 Either a string (e.g. "yellow") or in 0xRRGGBB[AA] format
745 (e.g. "0xff00ff"), possibly followed by an alpha specifier.
746 The default value of @var{boxcolor} is "white".
747
748 @item box
749 Used to draw a box around text using background color.
750 Value should be either 1 (enable) or 0 (disable).
751 The default value of @var{box} is 0.
752
753 @item shadowx, shadowy
754 The x and y offsets for the text shadow position with respect to the
755 position of the text. They can be either positive or negative
756 values. Default value for both is "0".
757
758 @item shadowcolor
759 The color to be used for drawing a shadow behind the drawn text.  It
760 can be a color name (e.g. "yellow") or a string in the 0xRRGGBB[AA]
761 form (e.g. "0xff00ff"), possibly followed by an alpha specifier.
762 The default value of @var{shadowcolor} is "black".
763
764 @item ft_load_flags
765 Flags to be used for loading the fonts.
766
767 The flags map the corresponding flags supported by libfreetype, and are
768 a combination of the following values:
769 @table @var
770 @item default
771 @item no_scale
772 @item no_hinting
773 @item render
774 @item no_bitmap
775 @item vertical_layout
776 @item force_autohint
777 @item crop_bitmap
778 @item pedantic
779 @item ignore_global_advance_width
780 @item no_recurse
781 @item ignore_transform
782 @item monochrome
783 @item linear_design
784 @item no_autohint
785 @item end table
786 @end table
787
788 Default value is "render".
789
790 For more information consult the documentation for the FT_LOAD_*
791 libfreetype flags.
792
793 @item tabsize
794 The size in number of spaces to use for rendering the tab.
795 Default value is 4.
796 @end table
797
798 For example the command:
799 @example
800 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
801 @end example
802
803 will draw "Test Text" with font FreeSerif, using the default values
804 for the optional parameters.
805
806 The command:
807 @example
808 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
809           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
810 @end example
811
812 will draw 'Test Text' with font FreeSerif of size 24 at position x=100
813 and y=50 (counting from the top-left corner of the screen), text is
814 yellow with a red box around it. Both the text and the box have an
815 opacity of 20%.
816
817 Note that the double quotes are not necessary if spaces are not used
818 within the parameter list.
819
820 For more information about libfreetype, check:
821 @url{http://www.freetype.org/}.
822
823 @section fade
824
825 Apply fade-in/out effect to input video.
826
827 It accepts the parameters:
828 @var{type}:@var{start_frame}:@var{nb_frames}
829
830 @var{type} specifies if the effect type, can be either "in" for
831 fade-in, or "out" for a fade-out effect.
832
833 @var{start_frame} specifies the number of the start frame for starting
834 to apply the fade effect.
835
836 @var{nb_frames} specifies the number of frames for which the fade
837 effect has to last. At the end of the fade-in effect the output video
838 will have the same intensity as the input video, at the end of the
839 fade-out transition the output video will be completely black.
840
841 A few usage examples follow, usable too as test scenarios.
842 @example
843 # fade in first 30 frames of video
844 fade=in:0:30
845
846 # fade out last 45 frames of a 200-frame video
847 fade=out:155:45
848
849 # fade in first 25 frames and fade out last 25 frames of a 1000-frame video
850 fade=in:0:25, fade=out:975:25
851
852 # make first 5 frames black, then fade in from frame 5-24
853 fade=in:5:20
854 @end example
855
856 @section fieldorder
857
858 Transform the field order of the input video.
859
860 It accepts one parameter which specifies the required field order that
861 the input interlaced video will be transformed to. The parameter can
862 assume one of the following values:
863
864 @table @option
865 @item 0 or bff
866 output bottom field first
867 @item 1 or tff
868 output top field first
869 @end table
870
871 Default value is "tff".
872
873 Transformation is achieved by shifting the picture content up or down
874 by one line, and filling the remaining line with appropriate picture content.
875 This method is consistent with most broadcast field order converters.
876
877 If the input video is not flagged as being interlaced, or it is already
878 flagged as being of the required output field order then this filter does
879 not alter the incoming video.
880
881 This filter is very useful when converting to or from PAL DV material,
882 which is bottom field first.
883
884 For example:
885 @example
886 ./ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
887 @end example
888
889 @section fifo
890
891 Buffer input images and send them when they are requested.
892
893 This filter is mainly useful when auto-inserted by the libavfilter
894 framework.
895
896 The filter does not take parameters.
897
898 @section format
899
900 Convert the input video to one of the specified pixel formats.
901 Libavfilter will try to pick one that is supported for the input to
902 the next filter.
903
904 The filter accepts a list of pixel format names, separated by ":",
905 for example "yuv420p:monow:rgb24".
906
907 Some examples follow:
908 @example
909 # convert the input video to the format "yuv420p"
910 format=yuv420p
911
912 # convert the input video to any of the formats in the list
913 format=yuv420p:yuv444p:yuv410p
914 @end example
915
916 @anchor{frei0r}
917 @section frei0r
918
919 Apply a frei0r effect to the input video.
920
921 To enable compilation of this filter you need to install the frei0r
922 header and configure FFmpeg with --enable-frei0r.
923
924 The filter supports the syntax:
925 @example
926 @var{filter_name}[@{:|=@}@var{param1}:@var{param2}:...:@var{paramN}]
927 @end example
928
929 @var{filter_name} is the name to the frei0r effect to load. If the
930 environment variable @env{FREI0R_PATH} is defined, the frei0r effect
931 is searched in each one of the directories specified by the colon
932 separated list in @env{FREIOR_PATH}, otherwise in the standard frei0r
933 paths, which are in this order: @file{HOME/.frei0r-1/lib/},
934 @file{/usr/local/lib/frei0r-1/}, @file{/usr/lib/frei0r-1/}.
935
936 @var{param1}, @var{param2}, ... , @var{paramN} specify the parameters
937 for the frei0r effect.
938
939 A frei0r effect parameter can be a boolean (whose values are specified
940 with "y" and "n"), a double, a color (specified by the syntax
941 @var{R}/@var{G}/@var{B}, @var{R}, @var{G}, and @var{B} being float
942 numbers from 0.0 to 1.0) or by an @code{av_parse_color()} color
943 description), a position (specified by the syntax @var{X}/@var{Y},
944 @var{X} and @var{Y} being float numbers) and a string.
945
946 The number and kind of parameters depend on the loaded effect. If an
947 effect parameter is not specified the default value is set.
948
949 Some examples follow:
950 @example
951 # apply the distort0r effect, set the first two double parameters
952 frei0r=distort0r:0.5:0.01
953
954 # apply the colordistance effect, takes a color as first parameter
955 frei0r=colordistance:0.2/0.3/0.4
956 frei0r=colordistance:violet
957 frei0r=colordistance:0x112233
958
959 # apply the perspective effect, specify the top left and top right
960 # image positions
961 frei0r=perspective:0.2/0.2:0.8/0.2
962 @end example
963
964 For more information see:
965 @url{http://piksel.org/frei0r}
966
967 @section gradfun
968
969 Fix the banding artifacts that are sometimes introduced into nearly flat
970 regions by truncation to 8bit colordepth.
971 Interpolate the gradients that should go where the bands are, and
972 dither them.
973
974 This filter is designed for playback only.  Do not use it prior to
975 lossy compression, because compression tends to lose the dither and
976 bring back the bands.
977
978 The filter takes two optional parameters, separated by ':':
979 @var{strength}:@var{radius}
980
981 @var{strength} is the maximum amount by which the filter will change
982 any one pixel. Also the threshold for detecting nearly flat
983 regions. Acceptable values range from .51 to 255, default value is
984 1.2, out-of-range values will be clipped to the valid range.
985
986 @var{radius} is the neighborhood to fit the gradient to. A larger
987 radius makes for smoother gradients, but also prevents the filter from
988 modifying the pixels near detailed regions. Acceptable values are
989 8-32, default value is 16, out-of-range values will be clipped to the
990 valid range.
991
992 @example
993 # default parameters
994 gradfun=1.2:16
995
996 # omitting radius
997 gradfun=1.2
998 @end example
999
1000 @section hflip
1001
1002 Flip the input video horizontally.
1003
1004 For example to horizontally flip the video in input with
1005 @file{ffmpeg}:
1006 @example
1007 ffmpeg -i in.avi -vf "hflip" out.avi
1008 @end example
1009
1010 @section hqdn3d
1011
1012 High precision/quality 3d denoise filter. This filter aims to reduce
1013 image noise producing smooth images and making still images really
1014 still. It should enhance compressibility.
1015
1016 It accepts the following optional parameters:
1017 @var{luma_spatial}:@var{chroma_spatial}:@var{luma_tmp}:@var{chroma_tmp}
1018
1019 @table @option
1020 @item luma_spatial
1021 a non-negative float number which specifies spatial luma strength,
1022 defaults to 4.0
1023
1024 @item chroma_spatial
1025 a non-negative float number which specifies spatial chroma strength,
1026 defaults to 3.0*@var{luma_spatial}/4.0
1027
1028 @item luma_tmp
1029 a float number which specifies luma temporal strength, defaults to
1030 6.0*@var{luma_spatial}/4.0
1031
1032 @item chroma_tmp
1033 a float number which specifies chroma temporal strength, defaults to
1034 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}
1035 @end table
1036
1037 @section lut, lutrgb, lutyuv
1038
1039 Compute a look-up table for binding each pixel component input value
1040 to an output value, and apply it to input video.
1041
1042 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
1043 to an RGB input video.
1044
1045 These filters accept in input a ":"-separated list of options, which
1046 specify the expressions used for computing the lookup table for the
1047 corresponding pixel component values.
1048
1049 The @var{lut} filter requires either YUV or RGB pixel formats in
1050 input, and accepts the options:
1051 @table @option
1052 @var{c0} (first  pixel component)
1053 @var{c1} (second pixel component)
1054 @var{c2} (third  pixel component)
1055 @var{c3} (fourth pixel component, corresponds to the alpha component)
1056 @end table
1057
1058 The exact component associated to each option depends on the format in
1059 input.
1060
1061 The @var{lutrgb} filter requires RGB pixel formats in input, and
1062 accepts the options:
1063 @table @option
1064 @var{r} (red component)
1065 @var{g} (green component)
1066 @var{b} (blue component)
1067 @var{a} (alpha component)
1068 @end table
1069
1070 The @var{lutyuv} filter requires YUV pixel formats in input, and
1071 accepts the options:
1072 @table @option
1073 @var{y} (Y/luminance component)
1074 @var{u} (U/Cb component)
1075 @var{v} (V/Cr component)
1076 @var{a} (alpha component)
1077 @end table
1078
1079 The expressions can contain the following constants and functions:
1080
1081 @table @option
1082 @item E, PI, PHI
1083 the corresponding mathematical approximated values for e
1084 (euler number), pi (greek PI), PHI (golden ratio)
1085
1086 @item w, h
1087 the input width and heigth
1088
1089 @item val
1090 input value for the pixel component
1091
1092 @item clipval
1093 the input value clipped in the @var{minval}-@var{maxval} range
1094
1095 @item maxval
1096 maximum value for the pixel component
1097
1098 @item minval
1099 minimum value for the pixel component
1100
1101 @item negval
1102 the negated value for the pixel component value clipped in the
1103 @var{minval}-@var{maxval} range , it corresponds to the expression
1104 "maxval-clipval+minval"
1105
1106 @item clip(val)
1107 the computed value in @var{val} clipped in the
1108 @var{minval}-@var{maxval} range
1109
1110 @item gammaval(gamma)
1111 the computed gamma correction value of the pixel component value
1112 clipped in the @var{minval}-@var{maxval} range, corresponds to the
1113 expression
1114 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
1115
1116 @end table
1117
1118 All expressions default to "val".
1119
1120 Some examples follow:
1121 @example
1122 # negate input video
1123 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
1124 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
1125
1126 # the above is the same as
1127 lutrgb="r=negval:g=negval:b=negval"
1128 lutyuv="y=negval:u=negval:v=negval"
1129
1130 # negate luminance
1131 lutyuv=negval
1132
1133 # remove chroma components, turns the video into a graytone image
1134 lutyuv="u=128:v=128"
1135
1136 # apply a luma burning effect
1137 lutyuv="y=2*val"
1138
1139 # remove green and blue components
1140 lutrgb="g=0:b=0"
1141
1142 # set a constant alpha channel value on input
1143 format=rgba,lutrgb=a="maxval-minval/2"
1144
1145 # correct luminance gamma by a 0.5 factor
1146 lutyuv=y=gammaval(0.5)
1147 @end example
1148
1149 @section mp
1150
1151 Apply an MPlayer filter to the input video.
1152
1153 This filter provides a wrapper around most of the filters of
1154 MPlayer/MEncoder.
1155
1156 This wrapper is considered experimental. Some of the wrapped filters
1157 may not work properly and we may drop support for them, as they will
1158 be implemented natively into FFmpeg. Thus you should avoid
1159 depending on them when writing portable scripts.
1160
1161 The filters accepts the parameters:
1162 @var{filter_name}[:=]@var{filter_params}
1163
1164 @var{filter_name} is the name of a supported MPlayer filter,
1165 @var{filter_params} is a string containing the parameters accepted by
1166 the named filter.
1167
1168 The list of the currently supported filters follows:
1169 @table @var
1170 @item 2xsai
1171 @item decimate
1172 @item denoise3d
1173 @item detc
1174 @item dint
1175 @item divtc
1176 @item down3dright
1177 @item dsize
1178 @item eq2
1179 @item eq
1180 @item field
1181 @item fil
1182 @item fixpts
1183 @item framestep
1184 @item fspp
1185 @item geq
1186 @item harddup
1187 @item hqdn3d
1188 @item hue
1189 @item il
1190 @item ilpack
1191 @item ivtc
1192 @item kerndeint
1193 @item mcdeint
1194 @item mirror
1195 @item noise
1196 @item ow
1197 @item palette
1198 @item perspective
1199 @item phase
1200 @item pp7
1201 @item pullup
1202 @item qp
1203 @item rectangle
1204 @item remove-logo
1205 @item rotate
1206 @item sab
1207 @item screenshot
1208 @item smartblur
1209 @item softpulldown
1210 @item softskip
1211 @item spp
1212 @item swapuv
1213 @item telecine
1214 @item tile
1215 @item tinterlace
1216 @item unsharp
1217 @item uspp
1218 @item yuvcsp
1219 @item yvu9
1220 @end table
1221
1222 The parameter syntax and behavior for the listed filters are the same
1223 of the corresponding MPlayer filters. For detailed instructions check
1224 the "VIDEO FILTERS" section in the MPlayer manual.
1225
1226 Some examples follow:
1227 @example
1228 # remove a logo by interpolating the surrounding pixels
1229 mp=delogo=200:200:80:20:1
1230
1231 # adjust gamma, brightness, contrast
1232 mp=eq2=1.0:2:0.5
1233
1234 # tweak hue and saturation
1235 mp=hue=100:-10
1236 @end example
1237
1238 See also mplayer(1), @url{http://www.mplayerhq.hu/}.
1239
1240 @section negate
1241
1242 Negate input video.
1243
1244 This filter accepts an integer in input, if non-zero it negates the
1245 alpha component (if available). The default value in input is 0.
1246
1247 @section noformat
1248
1249 Force libavfilter not to use any of the specified pixel formats for the
1250 input to the next filter.
1251
1252 The filter accepts a list of pixel format names, separated by ":",
1253 for example "yuv420p:monow:rgb24".
1254
1255 Some examples follow:
1256 @example
1257 # force libavfilter to use a format different from "yuv420p" for the
1258 # input to the vflip filter
1259 noformat=yuv420p,vflip
1260
1261 # convert the input video to any of the formats not contained in the list
1262 noformat=yuv420p:yuv444p:yuv410p
1263 @end example
1264
1265 @section null
1266
1267 Pass the video source unchanged to the output.
1268
1269 @section ocv
1270
1271 Apply video transform using libopencv.
1272
1273 To enable this filter install libopencv library and headers and
1274 configure FFmpeg with --enable-libopencv.
1275
1276 The filter takes the parameters: @var{filter_name}@{:=@}@var{filter_params}.
1277
1278 @var{filter_name} is the name of the libopencv filter to apply.
1279
1280 @var{filter_params} specifies the parameters to pass to the libopencv
1281 filter. If not specified the default values are assumed.
1282
1283 Refer to the official libopencv documentation for more precise
1284 informations:
1285 @url{http://opencv.willowgarage.com/documentation/c/image_filtering.html}
1286
1287 Follows the list of supported libopencv filters.
1288
1289 @anchor{dilate}
1290 @subsection dilate
1291
1292 Dilate an image by using a specific structuring element.
1293 This filter corresponds to the libopencv function @code{cvDilate}.
1294
1295 It accepts the parameters: @var{struct_el}:@var{nb_iterations}.
1296
1297 @var{struct_el} represents a structuring element, and has the syntax:
1298 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
1299
1300 @var{cols} and @var{rows} represent the number of colums and rows of
1301 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
1302 point, and @var{shape} the shape for the structuring element, and
1303 can be one of the values "rect", "cross", "ellipse", "custom".
1304
1305 If the value for @var{shape} is "custom", it must be followed by a
1306 string of the form "=@var{filename}". The file with name
1307 @var{filename} is assumed to represent a binary image, with each
1308 printable character corresponding to a bright pixel. When a custom
1309 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
1310 or columns and rows of the read file are assumed instead.
1311
1312 The default value for @var{struct_el} is "3x3+0x0/rect".
1313
1314 @var{nb_iterations} specifies the number of times the transform is
1315 applied to the image, and defaults to 1.
1316
1317 Follow some example:
1318 @example
1319 # use the default values
1320 ocv=dilate
1321
1322 # dilate using a structuring element with a 5x5 cross, iterate two times
1323 ocv=dilate=5x5+2x2/cross:2
1324
1325 # read the shape from the file diamond.shape, iterate two times
1326 # the file diamond.shape may contain a pattern of characters like this:
1327 #   *
1328 #  ***
1329 # *****
1330 #  ***
1331 #   *
1332 # the specified cols and rows are ignored (but not the anchor point coordinates)
1333 ocv=0x0+2x2/custom=diamond.shape:2
1334 @end example
1335
1336 @subsection erode
1337
1338 Erode an image by using a specific structuring element.
1339 This filter corresponds to the libopencv function @code{cvErode}.
1340
1341 The filter accepts the parameters: @var{struct_el}:@var{nb_iterations},
1342 with the same syntax and semantics as the @ref{dilate} filter.
1343
1344 @subsection smooth
1345
1346 Smooth the input video.
1347
1348 The filter takes the following parameters:
1349 @var{type}:@var{param1}:@var{param2}:@var{param3}:@var{param4}.
1350
1351 @var{type} is the type of smooth filter to apply, and can be one of
1352 the following values: "blur", "blur_no_scale", "median", "gaussian",
1353 "bilateral". The default value is "gaussian".
1354
1355 @var{param1}, @var{param2}, @var{param3}, and @var{param4} are
1356 parameters whose meanings depend on smooth type. @var{param1} and
1357 @var{param2} accept integer positive values or 0, @var{param3} and
1358 @var{param4} accept float values.
1359
1360 The default value for @var{param1} is 3, the default value for the
1361 other parameters is 0.
1362
1363 These parameters correspond to the parameters assigned to the
1364 libopencv function @code{cvSmooth}.
1365
1366 @section overlay
1367
1368 Overlay one video on top of another.
1369
1370 It takes two inputs and one output, the first input is the "main"
1371 video on which the second input is overlayed.
1372
1373 It accepts the parameters: @var{x}:@var{y}.
1374
1375 @var{x} is the x coordinate of the overlayed video on the main video,
1376 @var{y} is the y coordinate. The parameters are expressions containing
1377 the following parameters:
1378
1379 @table @option
1380 @item main_w, main_h
1381 main input width and height
1382
1383 @item W, H
1384 same as @var{main_w} and @var{main_h}
1385
1386 @item overlay_w, overlay_h
1387 overlay input width and height
1388
1389 @item w, h
1390 same as @var{overlay_w} and @var{overlay_h}
1391 @end table
1392
1393 Be aware that frames are taken from each input video in timestamp
1394 order, hence, if their initial timestamps differ, it is a a good idea
1395 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
1396 have them begin in the same zero timestamp, as it does the example for
1397 the @var{movie} filter.
1398
1399 Follow some examples:
1400 @example
1401 # draw the overlay at 10 pixels from the bottom right
1402 # corner of the main video.
1403 overlay=main_w-overlay_w-10:main_h-overlay_h-10
1404
1405 # insert a transparent PNG logo in the bottom left corner of the input
1406 movie=logo.png [logo];
1407 [in][logo] overlay=10:main_h-overlay_h-10 [out]
1408
1409 # insert 2 different transparent PNG logos (second logo on bottom
1410 # right corner):
1411 movie=logo1.png [logo1];
1412 movie=logo2.png [logo2];
1413 [in][logo1]       overlay=10:H-h-10 [in+logo1];
1414 [in+logo1][logo2] overlay=W-w-10:H-h-10 [out]
1415
1416 # add a transparent color layer on top of the main video,
1417 # WxH specifies the size of the main input to the overlay filter
1418 color=red@.3:WxH [over]; [in][over] overlay [out]
1419 @end example
1420
1421 You can chain togheter more overlays but the efficiency of such
1422 approach is yet to be tested.
1423
1424 @section pad
1425
1426 Add paddings to the input image, and places the original input at the
1427 given coordinates @var{x}, @var{y}.
1428
1429 It accepts the following parameters:
1430 @var{width}:@var{height}:@var{x}:@var{y}:@var{color}.
1431
1432 The parameters @var{width}, @var{height}, @var{x}, and @var{y} are
1433 expressions containing the following constants:
1434
1435 @table @option
1436 @item E, PI, PHI
1437 the corresponding mathematical approximated values for e
1438 (euler number), pi (greek PI), phi (golden ratio)
1439
1440 @item in_w, in_h
1441 the input video width and heigth
1442
1443 @item iw, ih
1444 same as @var{in_w} and @var{in_h}
1445
1446 @item out_w, out_h
1447 the output width and heigth, that is the size of the padded area as
1448 specified by the @var{width} and @var{height} expressions
1449
1450 @item ow, oh
1451 same as @var{out_w} and @var{out_h}
1452
1453 @item x, y
1454 x and y offsets as specified by the @var{x} and @var{y}
1455 expressions, or NAN if not yet specified
1456
1457 @item a
1458 same as @var{iw} / @var{ih}
1459
1460 @item sar
1461 input sample aspect ratio
1462
1463 @item dar
1464 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
1465
1466 @item hsub, vsub
1467 horizontal and vertical chroma subsample values. For example for the
1468 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
1469 @end table
1470
1471 Follows the description of the accepted parameters.
1472
1473 @table @option
1474 @item width, height
1475
1476 Specify the size of the output image with the paddings added. If the
1477 value for @var{width} or @var{height} is 0, the corresponding input size
1478 is used for the output.
1479
1480 The @var{width} expression can reference the value set by the
1481 @var{height} expression, and viceversa.
1482
1483 The default value of @var{width} and @var{height} is 0.
1484
1485 @item x, y
1486
1487 Specify the offsets where to place the input image in the padded area
1488 with respect to the top/left border of the output image.
1489
1490 The @var{x} expression can reference the value set by the @var{y}
1491 expression, and viceversa.
1492
1493 The default value of @var{x} and @var{y} is 0.
1494
1495 @item color
1496
1497 Specify the color of the padded area, it can be the name of a color
1498 (case insensitive match) or a 0xRRGGBB[AA] sequence.
1499
1500 The default value of @var{color} is "black".
1501
1502 @end table
1503
1504 Some examples follow:
1505
1506 @example
1507 # Add paddings with color "violet" to the input video. Output video
1508 # size is 640x480, the top-left corner of the input video is placed at
1509 # column 0, row 40.
1510 pad=640:480:0:40:violet
1511
1512 # pad the input to get an output with dimensions increased bt 3/2,
1513 # and put the input video at the center of the padded area
1514 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
1515
1516 # pad the input to get a squared output with size equal to the maximum
1517 # value between the input width and height, and put the input video at
1518 # the center of the padded area
1519 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
1520
1521 # pad the input to get a final w/h ratio of 16:9
1522 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
1523
1524 # for anamorphic video, in order to set the output display aspect ratio,
1525 # it is necessary to use sar in the expression, according to the relation:
1526 # (ih * X / ih) * sar = output_dar
1527 # X = output_dar / sar
1528 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
1529
1530 # double output size and put the input video in the bottom-right
1531 # corner of the output padded area
1532 pad="2*iw:2*ih:ow-iw:oh-ih"
1533 @end example
1534
1535 @section pixdesctest
1536
1537 Pixel format descriptor test filter, mainly useful for internal
1538 testing. The output video should be equal to the input video.
1539
1540 For example:
1541 @example
1542 format=monow, pixdesctest
1543 @end example
1544
1545 can be used to test the monowhite pixel format descriptor definition.
1546
1547 @section scale
1548
1549 Scale the input video to @var{width}:@var{height} and/or convert the image format.
1550
1551 The parameters @var{width} and @var{height} are expressions containing
1552 the following constants:
1553
1554 @table @option
1555 @item E, PI, PHI
1556 the corresponding mathematical approximated values for e
1557 (euler number), pi (greek PI), phi (golden ratio)
1558
1559 @item in_w, in_h
1560 the input width and heigth
1561
1562 @item iw, ih
1563 same as @var{in_w} and @var{in_h}
1564
1565 @item out_w, out_h
1566 the output (cropped) width and heigth
1567
1568 @item ow, oh
1569 same as @var{out_w} and @var{out_h}
1570
1571 @item a
1572 same as @var{iw} / @var{ih}
1573
1574 @item sar
1575 input sample aspect ratio
1576
1577 @item dar
1578 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
1579
1580 @item hsub, vsub
1581 horizontal and vertical chroma subsample values. For example for the
1582 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
1583 @end table
1584
1585 If the input image format is different from the format requested by
1586 the next filter, the scale filter will convert the input to the
1587 requested format.
1588
1589 If the value for @var{width} or @var{height} is 0, the respective input
1590 size is used for the output.
1591
1592 If the value for @var{width} or @var{height} is -1, the scale filter will
1593 use, for the respective output size, a value that maintains the aspect
1594 ratio of the input image.
1595
1596 The default value of @var{width} and @var{height} is 0.
1597
1598 Some examples follow:
1599 @example
1600 # scale the input video to a size of 200x100.
1601 scale=200:100
1602
1603 # scale the input to 2x
1604 scale=2*iw:2*ih
1605 # the above is the same as
1606 scale=2*in_w:2*in_h
1607
1608 # scale the input to half size
1609 scale=iw/2:ih/2
1610
1611 # increase the width, and set the height to the same size
1612 scale=3/2*iw:ow
1613
1614 # seek for Greek harmony
1615 scale=iw:1/PHI*iw
1616 scale=ih*PHI:ih
1617
1618 # increase the height, and set the width to 3/2 of the height
1619 scale=3/2*oh:3/5*ih
1620
1621 # increase the size, but make the size a multiple of the chroma
1622 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
1623
1624 # increase the width to a maximum of 500 pixels, keep the same input aspect ratio
1625 scale='min(500\, iw*3/2):-1'
1626 @end example
1627
1628 @section select
1629 Select frames to pass in output.
1630
1631 It accepts in input an expression, which is evaluated for each input
1632 frame. If the expression is evaluated to a non-zero value, the frame
1633 is selected and passed to the output, otherwise it is discarded.
1634
1635 The expression can contain the following constants:
1636
1637 @table @option
1638 @item PI
1639 Greek PI
1640
1641 @item PHI
1642 golden ratio
1643
1644 @item E
1645 Euler number
1646
1647 @item n
1648 the sequential number of the filtered frame, starting from 0
1649
1650 @item selected_n
1651 the sequential number of the selected frame, starting from 0
1652
1653 @item prev_selected_n
1654 the sequential number of the last selected frame, NAN if undefined
1655
1656 @item TB
1657 timebase of the input timestamps
1658
1659 @item pts
1660 the PTS (Presentation TimeStamp) of the filtered video frame,
1661 expressed in @var{TB} units, NAN if undefined
1662
1663 @item t
1664 the PTS (Presentation TimeStamp) of the filtered video frame,
1665 expressed in seconds, NAN if undefined
1666
1667 @item prev_pts
1668 the PTS of the previously filtered video frame, NAN if undefined
1669
1670 @item prev_selected_pts
1671 the PTS of the last previously filtered video frame, NAN if undefined
1672
1673 @item prev_selected_t
1674 the PTS of the last previously selected video frame, NAN if undefined
1675
1676 @item start_pts
1677 the PTS of the first video frame in the video, NAN if undefined
1678
1679 @item start_t
1680 the time of the first video frame in the video, NAN if undefined
1681
1682 @item pict_type
1683 the picture type of the filtered frame, can assume one of the following
1684 values:
1685 @table @option
1686 @item PICT_TYPE_I
1687 @item PICT_TYPE_P
1688 @item PICT_TYPE_B
1689 @item PICT_TYPE_S
1690 @item PICT_TYPE_SI
1691 @item PICT_TYPE_SP
1692 @item PICT_TYPE_BI
1693 @end table
1694
1695 @item interlace_type
1696 the frame interlace type, can assume one of the following values:
1697 @table @option
1698 @item INTERLACE_TYPE_P
1699 the frame is progressive (not interlaced)
1700 @item INTERLACE_TYPE_T
1701 the frame is top-field-first
1702 @item INTERLACE_TYPE_B
1703 the frame is bottom-field-first
1704 @end table
1705
1706 @item key
1707 1 if the filtered frame is a key-frame, 0 otherwise
1708
1709 @item pos
1710 the position in the file of the filtered frame, -1 if the information
1711 is not available (e.g. for synthetic video)
1712 @end table
1713
1714 The default value of the select expression is "1".
1715
1716 Some examples follow:
1717
1718 @example
1719 # select all frames in input
1720 select
1721
1722 # the above is the same as:
1723 select=1
1724
1725 # skip all frames:
1726 select=0
1727
1728 # select only I-frames
1729 select='eq(pict_type\,PICT_TYPE_I)'
1730
1731 # select one frame every 100
1732 select='not(mod(n\,100))'
1733
1734 # select only frames contained in the 10-20 time interval
1735 select='gte(t\,10)*lte(t\,20)'
1736
1737 # select only I frames contained in the 10-20 time interval
1738 select='gte(t\,10)*lte(t\,20)*eq(pict_type\,PICT_TYPE_I)'
1739
1740 # select frames with a minimum distance of 10 seconds
1741 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
1742 @end example
1743
1744 @anchor{setdar}
1745 @section setdar
1746
1747 Set the Display Aspect Ratio for the filter output video.
1748
1749 This is done by changing the specified Sample (aka Pixel) Aspect
1750 Ratio, according to the following equation:
1751 @math{DAR = HORIZONTAL_RESOLUTION / VERTICAL_RESOLUTION * SAR}
1752
1753 Keep in mind that this filter does not modify the pixel dimensions of
1754 the video frame. Also the display aspect ratio set by this filter may
1755 be changed by later filters in the filterchain, e.g. in case of
1756 scaling or if another "setdar" or a "setsar" filter is applied.
1757
1758 The filter accepts a parameter string which represents the wanted
1759 display aspect ratio.
1760 The parameter can be a floating point number string, or an expression
1761 of the form @var{num}:@var{den}, where @var{num} and @var{den} are the
1762 numerator and denominator of the aspect ratio.
1763 If the parameter is not specified, it is assumed the value "0:1".
1764
1765 For example to change the display aspect ratio to 16:9, specify:
1766 @example
1767 setdar=16:9
1768 # the above is equivalent to
1769 setdar=1.77777
1770 @end example
1771
1772 See also the @ref{setsar} filter documentation.
1773
1774 @section setpts
1775
1776 Change the PTS (presentation timestamp) of the input video frames.
1777
1778 Accept in input an expression evaluated through the eval API, which
1779 can contain the following constants:
1780
1781 @table @option
1782 @item PTS
1783 the presentation timestamp in input
1784
1785 @item PI
1786 Greek PI
1787
1788 @item PHI
1789 golden ratio
1790
1791 @item E
1792 Euler number
1793
1794 @item N
1795 the count of the input frame, starting from 0.
1796
1797 @item STARTPTS
1798 the PTS of the first video frame
1799
1800 @item INTERLACED
1801 tell if the current frame is interlaced
1802
1803 @item POS
1804 original position in the file of the frame, or undefined if undefined
1805 for the current frame
1806
1807 @item PREV_INPTS
1808 previous input PTS
1809
1810 @item PREV_OUTPTS
1811 previous output PTS
1812
1813 @end table
1814
1815 Some examples follow:
1816
1817 @example
1818 # start counting PTS from zero
1819 setpts=PTS-STARTPTS
1820
1821 # fast motion
1822 setpts=0.5*PTS
1823
1824 # slow motion
1825 setpts=2.0*PTS
1826
1827 # fixed rate 25 fps
1828 setpts=N/(25*TB)
1829
1830 # fixed rate 25 fps with some jitter
1831 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
1832 @end example
1833
1834 @anchor{setsar}
1835 @section setsar
1836
1837 Set the Sample (aka Pixel) Aspect Ratio for the filter output video.
1838
1839 Note that as a consequence of the application of this filter, the
1840 output display aspect ratio will change according to the following
1841 equation:
1842 @math{DAR = HORIZONTAL_RESOLUTION / VERTICAL_RESOLUTION * SAR}
1843
1844 Keep in mind that the sample aspect ratio set by this filter may be
1845 changed by later filters in the filterchain, e.g. if another "setsar"
1846 or a "setdar" filter is applied.
1847
1848 The filter accepts a parameter string which represents the wanted
1849 sample aspect ratio.
1850 The parameter can be a floating point number string, or an expression
1851 of the form @var{num}:@var{den}, where @var{num} and @var{den} are the
1852 numerator and denominator of the aspect ratio.
1853 If the parameter is not specified, it is assumed the value "0:1".
1854
1855 For example to change the sample aspect ratio to 10:11, specify:
1856 @example
1857 setsar=10:11
1858 @end example
1859
1860 @section settb
1861
1862 Set the timebase to use for the output frames timestamps.
1863 It is mainly useful for testing timebase configuration.
1864
1865 It accepts in input an arithmetic expression representing a rational.
1866 The expression can contain the constants "PI", "E", "PHI", "AVTB" (the
1867 default timebase), and "intb" (the input timebase).
1868
1869 The default value for the input is "intb".
1870
1871 Follow some examples.
1872
1873 @example
1874 # set the timebase to 1/25
1875 settb=1/25
1876
1877 # set the timebase to 1/10
1878 settb=0.1
1879
1880 #set the timebase to 1001/1000
1881 settb=1+0.001
1882
1883 #set the timebase to 2*intb
1884 settb=2*intb
1885
1886 #set the default timebase value
1887 settb=AVTB
1888 @end example
1889
1890 @section showinfo
1891
1892 Show a line containing various information for each input video frame.
1893 The input video is not modified.
1894
1895 The shown line contains a sequence of key/value pairs of the form
1896 @var{key}:@var{value}.
1897
1898 A description of each shown parameter follows:
1899
1900 @table @option
1901 @item n
1902 sequential number of the input frame, starting from 0
1903
1904 @item pts
1905 Presentation TimeStamp of the input frame, expressed as a number of
1906 time base units. The time base unit depends on the filter input pad.
1907
1908 @item pts_time
1909 Presentation TimeStamp of the input frame, expressed as a number of
1910 seconds
1911
1912 @item pos
1913 position of the frame in the input stream, -1 if this information in
1914 unavailable and/or meanigless (for example in case of synthetic video)
1915
1916 @item fmt
1917 pixel format name
1918
1919 @item sar
1920 sample aspect ratio of the input frame, expressed in the form
1921 @var{num}/@var{den}
1922
1923 @item s
1924 size of the input frame, expressed in the form
1925 @var{width}x@var{height}
1926
1927 @item i
1928 interlaced mode ("P" for "progressive", "T" for top field first, "B"
1929 for bottom field first)
1930
1931 @item iskey
1932 1 if the frame is a key frame, 0 otherwise
1933
1934 @item type
1935 picture type of the input frame ("I" for an I-frame, "P" for a
1936 P-frame, "B" for a B-frame, "?" for unknown type).
1937 Check also the documentation of the @code{AVPictureType} enum and of
1938 the @code{av_get_picture_type_char} function defined in
1939 @file{libavutil/avutil.h}.
1940
1941 @item checksum
1942 Adler-32 checksum of all the planes of the input frame
1943
1944 @item plane_checksum
1945 Adler-32 checksum of each plane of the input frame, expressed in the form
1946 "[@var{c0} @var{c1} @var{c2} @var{c3}]"
1947 @end table
1948
1949 @section slicify
1950
1951 Pass the images of input video on to next video filter as multiple
1952 slices.
1953
1954 @example
1955 ./ffmpeg -i in.avi -vf "slicify=32" out.avi
1956 @end example
1957
1958 The filter accepts the slice height as parameter. If the parameter is
1959 not specified it will use the default value of 16.
1960
1961 Adding this in the beginning of filter chains should make filtering
1962 faster due to better use of the memory cache.
1963
1964 @section split
1965
1966 Pass on the input video to two outputs. Both outputs are identical to
1967 the input video.
1968
1969 For example:
1970 @example
1971 [in] split [splitout1][splitout2];
1972 [splitout1] crop=100:100:0:0    [cropout];
1973 [splitout2] pad=200:200:100:100 [padout];
1974 @end example
1975
1976 will create two separate outputs from the same input, one cropped and
1977 one padded.
1978
1979 @section transpose
1980
1981 Transpose rows with columns in the input video and optionally flip it.
1982
1983 It accepts a parameter representing an integer, which can assume the
1984 values:
1985
1986 @table @samp
1987 @item 0
1988 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
1989 @example
1990 L.R     L.l
1991 . . ->  . .
1992 l.r     R.r
1993 @end example
1994
1995 @item 1
1996 Rotate by 90 degrees clockwise, that is:
1997 @example
1998 L.R     l.L
1999 . . ->  . .
2000 l.r     r.R
2001 @end example
2002
2003 @item 2
2004 Rotate by 90 degrees counterclockwise, that is:
2005 @example
2006 L.R     R.r
2007 . . ->  . .
2008 l.r     L.l
2009 @end example
2010
2011 @item 3
2012 Rotate by 90 degrees clockwise and vertically flip, that is:
2013 @example
2014 L.R     r.R
2015 . . ->  . .
2016 l.r     l.L
2017 @end example
2018 @end table
2019
2020 @section unsharp
2021
2022 Sharpen or blur the input video.
2023
2024 It accepts the following parameters:
2025 @var{luma_msize_x}:@var{luma_msize_y}:@var{luma_amount}:@var{chroma_msize_x}:@var{chroma_msize_y}:@var{chroma_amount}
2026
2027 Negative values for the amount will blur the input video, while positive
2028 values will sharpen. All parameters are optional and default to the
2029 equivalent of the string '5:5:1.0:5:5:0.0'.
2030
2031 @table @option
2032
2033 @item luma_msize_x
2034 Set the luma matrix horizontal size. It can be an integer between 3
2035 and 13, default value is 5.
2036
2037 @item luma_msize_y
2038 Set the luma matrix vertical size. It can be an integer between 3
2039 and 13, default value is 5.
2040
2041 @item luma_amount
2042 Set the luma effect strength. It can be a float number between -2.0
2043 and 5.0, default value is 1.0.
2044
2045 @item chroma_msize_x
2046 Set the chroma matrix horizontal size. It can be an integer between 3
2047 and 13, default value is 5.
2048
2049 @item chroma_msize_y
2050 Set the chroma matrix vertical size. It can be an integer between 3
2051 and 13, default value is 5.
2052
2053 @item chroma_amount
2054 Set the chroma effect strength. It can be a float number between -2.0
2055 and 5.0, default value is 0.0.
2056
2057 @end table
2058
2059 @example
2060 # Strong luma sharpen effect parameters
2061 unsharp=7:7:2.5
2062
2063 # Strong blur of both luma and chroma parameters
2064 unsharp=7:7:-2:7:7:-2
2065
2066 # Use the default values with @command{ffmpeg}
2067 ./ffmpeg -i in.avi -vf "unsharp" out.mp4
2068 @end example
2069
2070 @section vflip
2071
2072 Flip the input video vertically.
2073
2074 @example
2075 ./ffmpeg -i in.avi -vf "vflip" out.avi
2076 @end example
2077
2078 @section yadif
2079
2080 Deinterlace the input video ("yadif" means "yet another deinterlacing
2081 filter").
2082
2083 It accepts the optional parameters: @var{mode}:@var{parity}:@var{auto}.
2084
2085 @var{mode} specifies the interlacing mode to adopt, accepts one of the
2086 following values:
2087
2088 @table @option
2089 @item 0
2090 output 1 frame for each frame
2091 @item 1
2092 output 1 frame for each field
2093 @item 2
2094 like 0 but skips spatial interlacing check
2095 @item 3
2096 like 1 but skips spatial interlacing check
2097 @end table
2098
2099 Default value is 0.
2100
2101 @var{parity} specifies the picture field parity assumed for the input
2102 interlaced video, accepts one of the following values:
2103
2104 @table @option
2105 @item 0
2106 assume top field first
2107 @item 1
2108 assume bottom field first
2109 @item -1
2110 enable automatic detection
2111 @end table
2112
2113 Default value is -1.
2114 If interlacing is unknown or decoder does not export this information,
2115 top field first will be assumed.
2116
2117 @var{auto} specifies if deinterlacer should trust the interlaced flag
2118 and only deinterlace frames marked as interlaced
2119
2120 @table @option
2121 @item 0
2122 deinterlace all frames
2123 @item 1
2124 only deinterlace frames marked as interlaced
2125 @end table
2126
2127 Default value is 0.
2128
2129 @c man end VIDEO FILTERS
2130
2131 @chapter Video Sources
2132 @c man begin VIDEO SOURCES
2133
2134 Below is a description of the currently available video sources.
2135
2136 @section buffer
2137
2138 Buffer video frames, and make them available to the filter chain.
2139
2140 This source is mainly intended for a programmatic use, in particular
2141 through the interface defined in @file{libavfilter/vsrc_buffer.h}.
2142
2143 It accepts the following parameters:
2144 @var{width}:@var{height}:@var{pix_fmt_string}:@var{timebase_num}:@var{timebase_den}:@var{sample_aspect_ratio_num}:@var{sample_aspect_ratio.den}:@var{scale_params}
2145
2146 All the parameters but @var{scale_params} need to be explicitely
2147 defined.
2148
2149 Follows the list of the accepted parameters.
2150
2151 @table @option
2152
2153 @item width, height
2154 Specify the width and height of the buffered video frames.
2155
2156 @item pix_fmt_string
2157 A string representing the pixel format of the buffered video frames.
2158 It may be a number corresponding to a pixel format, or a pixel format
2159 name.
2160
2161 @item timebase_num, timebase_den
2162 Specify numerator and denomitor of the timebase assumed by the
2163 timestamps of the buffered frames.
2164
2165 @item sample_aspect_ratio.num, sample_aspect_ratio.den
2166 Specify numerator and denominator of the sample aspect ratio assumed
2167 by the video frames.
2168
2169 @item scale_params
2170 Specify the optional parameters to be used for the scale filter which
2171 is automatically inserted when an input change is detected in the
2172 input size or format.
2173 @end table
2174
2175 For example:
2176 @example
2177 buffer=320:240:yuv410p:1:24:1:1
2178 @end example
2179
2180 will instruct the source to accept video frames with size 320x240 and
2181 with format "yuv410p", assuming 1/24 as the timestamps timebase and
2182 square pixels (1:1 sample aspect ratio).
2183 Since the pixel format with name "yuv410p" corresponds to the number 6
2184 (check the enum PixelFormat definition in @file{libavutil/pixfmt.h}),
2185 this example corresponds to:
2186 @example
2187 buffer=320:240:6:1:24:1:1
2188 @end example
2189
2190 @section color
2191
2192 Provide an uniformly colored input.
2193
2194 It accepts the following parameters:
2195 @var{color}:@var{frame_size}:@var{frame_rate}
2196
2197 Follows the description of the accepted parameters.
2198
2199 @table @option
2200
2201 @item color
2202 Specify the color of the source. It can be the name of a color (case
2203 insensitive match) or a 0xRRGGBB[AA] sequence, possibly followed by an
2204 alpha specifier. The default value is "black".
2205
2206 @item frame_size
2207 Specify the size of the sourced video, it may be a string of the form
2208 @var{width}x@var{heigth}, or the name of a size abbreviation. The
2209 default value is "320x240".
2210
2211 @item frame_rate
2212 Specify the frame rate of the sourced video, as the number of frames
2213 generated per second. It has to be a string in the format
2214 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a float
2215 number or a valid video frame rate abbreviation. The default value is
2216 "25".
2217
2218 @end table
2219
2220 For example the following graph description will generate a red source
2221 with an opacity of 0.2, with size "qcif" and a frame rate of 10
2222 frames per second, which will be overlayed over the source connected
2223 to the pad with identifier "in".
2224
2225 @example
2226 "color=red@@0.2:qcif:10 [color]; [in][color] overlay [out]"
2227 @end example
2228
2229 @section movie
2230
2231 Read a video stream from a movie container.
2232
2233 It accepts the syntax: @var{movie_name}[:@var{options}] where
2234 @var{movie_name} is the name of the resource to read (not necessarily
2235 a file but also a device or a stream accessed through some protocol),
2236 and @var{options} is an optional sequence of @var{key}=@var{value}
2237 pairs, separated by ":".
2238
2239 The description of the accepted options follows.
2240
2241 @table @option
2242
2243 @item format_name, f
2244 Specifies the format assumed for the movie to read, and can be either
2245 the name of a container or an input device. If not specified the
2246 format is guessed from @var{movie_name} or by probing.
2247
2248 @item seek_point, sp
2249 Specifies the seek point in seconds, the frames will be output
2250 starting from this seek point, the parameter is evaluated with
2251 @code{av_strtod} so the numerical value may be suffixed by an IS
2252 postfix. Default value is "0".
2253
2254 @item stream_index, si
2255 Specifies the index of the video stream to read. If the value is -1,
2256 the best suited video stream will be automatically selected. Default
2257 value is "-1".
2258
2259 @end table
2260
2261 This filter allows to overlay a second video on top of main input of
2262 a filtergraph as shown in this graph:
2263 @example
2264 input -----------> deltapts0 --> overlay --> output
2265                                     ^
2266                                     |
2267 movie --> scale--> deltapts1 -------+
2268 @end example
2269
2270 Some examples follow:
2271 @example
2272 # skip 3.2 seconds from the start of the avi file in.avi, and overlay it
2273 # on top of the input labelled as "in".
2274 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [movie];
2275 [in] setpts=PTS-STARTPTS, [movie] overlay=16:16 [out]
2276
2277 # read from a video4linux2 device, and overlay it on top of the input
2278 # labelled as "in"
2279 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [movie];
2280 [in] setpts=PTS-STARTPTS, [movie] overlay=16:16 [out]
2281
2282 @end example
2283
2284 @section mptestsrc
2285
2286 Generate various test patterns, as generated by the MPlayer test filter.
2287
2288 The size of the generated video is fixed, and is 256x256.
2289 This source is useful in particular for testing encoding features.
2290
2291 This source accepts an optional sequence of @var{key}=@var{value} pairs,
2292 separated by ":". The description of the accepted options follows.
2293
2294 @table @option
2295
2296 @item rate, r
2297 Specify the frame rate of the sourced video, as the number of frames
2298 generated per second. It has to be a string in the format
2299 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a float
2300 number or a valid video frame rate abbreviation. The default value is
2301 "25".
2302
2303 @item duration, d
2304 Set the video duration of the sourced video. The accepted syntax is:
2305 @example
2306 [-]HH[:MM[:SS[.m...]]]
2307 [-]S+[.m...]
2308 @end example
2309 See also the function @code{av_parse_time()}.
2310
2311 If not specified, or the expressed duration is negative, the video is
2312 supposed to be generated forever.
2313
2314 @item test, t
2315
2316 Set the number or the name of the test to perform. Supported tests are:
2317 @table @option
2318 @item dc_luma
2319 @item dc_chroma
2320 @item freq_luma
2321 @item freq_chroma
2322 @item amp_luma
2323 @item amp_chroma
2324 @item cbp
2325 @item mv
2326 @item ring1
2327 @item ring2
2328 @item all
2329 @end table
2330
2331 Default value is "all", which will cycle through the list of all tests.
2332 @end table
2333
2334 For example the following:
2335 @example
2336 testsrc=t=dc_luma
2337 @end example
2338
2339 will generate a "dc_luma" test pattern.
2340
2341 @section nullsrc
2342
2343 Null video source, never return images. It is mainly useful as a
2344 template and to be employed in analysis / debugging tools.
2345
2346 It accepts as optional parameter a string of the form
2347 @var{width}:@var{height}:@var{timebase}.
2348
2349 @var{width} and @var{height} specify the size of the configured
2350 source. The default values of @var{width} and @var{height} are
2351 respectively 352 and 288 (corresponding to the CIF size format).
2352
2353 @var{timebase} specifies an arithmetic expression representing a
2354 timebase. The expression can contain the constants "PI", "E", "PHI",
2355 "AVTB" (the default timebase), and defaults to the value "AVTB".
2356
2357 @section frei0r_src
2358
2359 Provide a frei0r source.
2360
2361 To enable compilation of this filter you need to install the frei0r
2362 header and configure FFmpeg with --enable-frei0r.
2363
2364 The source supports the syntax:
2365 @example
2366 @var{size}:@var{rate}:@var{src_name}[@{=|:@}@var{param1}:@var{param2}:...:@var{paramN}]
2367 @end example
2368
2369 @var{size} is the size of the video to generate, may be a string of the
2370 form @var{width}x@var{height} or a frame size abbreviation.
2371 @var{rate} is the rate of the video to generate, may be a string of
2372 the form @var{num}/@var{den} or a frame rate abbreviation.
2373 @var{src_name} is the name to the frei0r source to load. For more
2374 information regarding frei0r and how to set the parameters read the
2375 section @ref{frei0r} in the description of the video filters.
2376
2377 Some examples follow:
2378 @example
2379 # generate a frei0r partik0l source with size 200x200 and framerate 10
2380 # which is overlayed on the overlay filter main input
2381 frei0r_src=200x200:10:partik0l=1234 [overlay]; [in][overlay] overlay
2382 @end example
2383
2384 @section rgbtestsrc, testsrc
2385
2386 The @code{rgbtestsrc} source generates an RGB test pattern useful for
2387 detecting RGB vs BGR issues. You should see a red, green and blue
2388 stripe from top to bottom.
2389
2390 The @code{testsrc} source generates a test video pattern, showing a
2391 color pattern, a scrolling gradient and a timestamp. This is mainly
2392 intended for testing purposes.
2393
2394 Both sources accept an optional sequence of @var{key}=@var{value} pairs,
2395 separated by ":". The description of the accepted options follows.
2396
2397 @table @option
2398
2399 @item size, s
2400 Specify the size of the sourced video, it may be a string of the form
2401 @var{width}x@var{heigth}, or the name of a size abbreviation. The
2402 default value is "320x240".
2403
2404 @item rate, r
2405 Specify the frame rate of the sourced video, as the number of frames
2406 generated per second. It has to be a string in the format
2407 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a float
2408 number or a valid video frame rate abbreviation. The default value is
2409 "25".
2410
2411 @item sar
2412 Set the sample aspect ratio of the sourced video.
2413
2414 @item duration
2415 Set the video duration of the sourced video. The accepted syntax is:
2416 @example
2417 [-]HH[:MM[:SS[.m...]]]
2418 [-]S+[.m...]
2419 @end example
2420 See also the function @code{av_parse_time()}.
2421
2422 If not specified, or the expressed duration is negative, the video is
2423 supposed to be generated forever.
2424 @end table
2425
2426 For example the following:
2427 @example
2428 testsrc=duration=5.3:size=qcif:rate=10
2429 @end example
2430
2431 will generate a video with a duration of 5.3 seconds, with size
2432 176x144 and a framerate of 10 frames per second.
2433
2434 @c man end VIDEO SOURCES
2435
2436 @chapter Video Sinks
2437 @c man begin VIDEO SINKS
2438
2439 Below is a description of the currently available video sinks.
2440
2441 @section buffersink
2442
2443 Buffer video frames, and make them available to the end of the filter
2444 graph.
2445
2446 This sink is mainly intended for a programmatic use, in particular
2447 through the interface defined in @file{libavfilter/buffersink.h}.
2448
2449 It does not require a string parameter in input, but you need to
2450 specify a pointer to a list of supported pixel formats terminated by
2451 -1 in the opaque parameter provided to @code{avfilter_init_filter}
2452 when initializing this sink.
2453
2454 @section nullsink
2455
2456 Null video sink, do absolutely nothing with the input video. It is
2457 mainly useful as a template and to be employed in analysis / debugging
2458 tools.
2459
2460 @c man end VIDEO SINKS
2461