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