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