Statistics
| Branch: | Revision:

ffmpeg / doc / filters.texi @ 1ebe5c4c

History | View | Annotate | Download (28.8 KB)

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 crop
187

    
188
Crop the input video to @var{out_w}:@var{out_h}:@var{x}:@var{y}.
189

    
190
The parameters are expressions containing the following constants:
191

    
192
@table @option
193
@item E, PI, PHI
194
the corresponding mathematical approximated values for e
195
(euler number), pi (greek PI), PHI (golden ratio)
196

    
197
@item x, y
198
the computed values for @var{x} and @var{y}. They are evaluated for
199
each new frame.
200

    
201
@item in_w, in_h
202
the input width and heigth
203

    
204
@item iw, ih
205
same as @var{in_w} and @var{in_h}
206

    
207
@item out_w, out_h
208
the output (cropped) width and heigth
209

    
210
@item ow, oh
211
same as @var{out_w} and @var{out_h}
212

    
213
@item n
214
the number of input frame, starting from 0
215

    
216
@item pos
217
the position in the file of the input frame, NAN if unknown
218

    
219
@item t
220
timestamp expressed in seconds, NAN if the input timestamp is unknown
221

    
222
@end table
223

    
224
The @var{out_w} and @var{out_h} parameters specify the expressions for
225
the width and height of the output (cropped) video. They are
226
evaluated just at the configuration of the filter.
227

    
228
The default value of @var{out_w} is "in_w", and the default value of
229
@var{out_h} is "in_h".
230

    
231
The expression for @var{out_w} may depend on the value of @var{out_h},
232
and the expression for @var{out_h} may depend on @var{out_w}, but they
233
cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
234
evaluated after @var{out_w} and @var{out_h}.
235

    
236
The @var{x} and @var{y} parameters specify the expressions for the
237
position of the top-left corner of the output (non-cropped) area. They
238
are evaluated for each frame. If the evaluated value is not valid, it
239
is approximated to the nearest valid value.
240

    
241
The default value of @var{x} is "(in_w-out_w)/2", and the default
242
value for @var{y} is "(in_h-out_h)/2", which set the cropped area at
243
the center of the input image.
244

    
245
The expression for @var{x} may depend on @var{y}, and the expression
246
for @var{y} may depend on @var{x}.
247

    
248
Follow some examples:
249
@example
250
# crop the central input area with size 100x100
251
crop=100:100
252

    
253
# crop the central input area with size 2/3 of the input video
254
"crop=2/3*in_w:2/3*in_h"
255

    
256
# crop the input video central square
257
crop=in_h
258

    
259
# delimit the rectangle with the top-left corner placed at position
260
# 100:100 and the right-bottom corner corresponding to the right-bottom
261
# corner of the input image.
262
crop=in_w-100:in_h-100:100:100
263

    
264
# crop 10 pixels from the lefth and right borders, and 20 pixels from
265
# the top and bottom borders
266
"crop=in_w-2*10:in_h-2*20"
267

    
268
# keep only the bottom right quarter of the input image
269
"crop=in_w/2:in_h/2:in_w/2:in_h/2"
270

    
271
# crop height for getting Greek harmony
272
"crop=in_w:1/PHI*in_w"
273

    
274
# trembling effect
275
"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)"
276

    
277
# erratic camera effect depending on timestamp and position
278
"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)"
279

    
280
# set x depending on the value of y
281
"crop=in_w/2:in_h/2:y:10+10*sin(n/10)"
282
@end example
283

    
284
@section cropdetect
285

    
286
Auto-detect crop size.
287

    
288
Calculate necessary cropping parameters and prints the recommended
289
parameters through the logging system. The detected dimensions
290
correspond to the non-black area of the input video.
291

    
292
It accepts the syntax:
293
@example
294
cropdetect[=@var{limit}[:@var{round}[:@var{reset}]]]
295
@end example
296

    
297
@table @option
298

    
299
@item limit
300
Threshold, which can be optionally specified from nothing (0) to
301
everything (255), defaults to 24.
302

    
303
@item round
304
Value which the width/height should be divisible by, defaults to
305
16. The offset is automatically adjusted to center the video. Use 2 to
306
get only even dimensions (needed for 4:2:2 video). 16 is best when
307
encoding to most video codecs.
308

    
309
@item reset
310
Counter that determines after how many frames cropdetect will reset
311
the previously detected largest video area and start over to detect
312
the current optimal crop area. Defaults to 0.
313

    
314
This can be useful when channel logos distort the video area. 0
315
indicates never reset and return the largest area encountered during
316
playback.
317
@end table
318

    
319
@section drawbox
320

    
321
Draw a colored box on the input image.
322

    
323
It accepts the syntax:
324
@example
325
drawbox=@var{x}:@var{y}:@var{width}:@var{height}:@var{color}
326
@end example
327

    
328
@table @option
329

    
330
@item x, y
331
Specify the top left corner coordinates of the box. Default to 0.
332

    
333
@item width, height
334
Specify the width and height of the box, if 0 they are interpreted as
335
the input width and height. Default to 0.
336

    
337
@item color
338
Specify the color of the box to write, it can be the name of a color
339
(case insensitive match) or a 0xRRGGBB[AA] sequence.
340
@end table
341

    
342
Follow some examples:
343
@example
344
# draw a black box around the edge of the input image
345
drawbox
346

    
347
# draw a box with color red and an opacity of 50%
348
drawbox=10:20:200:60:red@@0.5"
349
@end example
350

    
351
@section fifo
352

    
353
Buffer input images and send them when they are requested.
354

    
355
This filter is mainly useful when auto-inserted by the libavfilter
356
framework.
357

    
358
The filter does not take parameters.
359

    
360
@section format
361

    
362
Convert the input video to one of the specified pixel formats.
363
Libavfilter will try to pick one that is supported for the input to
364
the next filter.
365

    
366
The filter accepts a list of pixel format names, separated by ":",
367
for example "yuv420p:monow:rgb24".
368

    
369
The following command:
370

    
371
@example
372
./ffmpeg -i in.avi -vf "format=yuv420p" out.avi
373
@end example
374

    
375
will convert the input video to the format "yuv420p".
376

    
377
@anchor{frei0r}
378
@section frei0r
379

    
380
Apply a frei0r effect to the input video.
381

    
382
To enable compilation of this filter you need to install the frei0r
383
header and configure FFmpeg with --enable-frei0r.
384

    
385
The filter supports the syntax:
386
@example
387
@var{filter_name}[@{:|=@}@var{param1}:@var{param2}:...:@var{paramN}]
388
@end example
389

    
390
@var{filter_name} is the name to the frei0r effect to load. If the
391
environment variable @env{FREI0R_PATH} is defined, the frei0r effect
392
is searched in each one of the directories specified by the colon
393
separated list in @env{FREIOR_PATH}, otherwise in the standard frei0r
394
paths, which are in this order: @file{HOME/.frei0r-1/lib/},
395
@file{/usr/local/lib/frei0r-1/}, @file{/usr/lib/frei0r-1/}.
396

    
397
@var{param1}, @var{param2}, ... , @var{paramN} specify the parameters
398
for the frei0r effect.
399

    
400
A frei0r effect parameter can be a boolean (whose values are specified
401
with "y" and "n"), a double, a color (specified by the syntax
402
@var{R}/@var{G}/@var{B}, @var{R}, @var{G}, and @var{B} being float
403
numbers from 0.0 to 1.0) or by an @code{av_parse_color()} color
404
description), a position (specified by the syntax @var{X}/@var{Y},
405
@var{X} and @var{Y} being float numbers) and a string.
406

    
407
The number and kind of parameters depend on the loaded effect. If an
408
effect parameter is not specified the default value is set.
409

    
410
Some examples follow:
411
@example
412
# apply the distort0r effect, set the first two double parameters
413
frei0r=distort0r:0.5:0.01
414

    
415
# apply the colordistance effect, takes a color as first parameter
416
frei0r=colordistance:0.2/0.3/0.4
417
frei0r=colordistance:violet
418
frei0r=colordistance:0x112233
419

    
420
# apply the perspective effect, specify the top left and top right
421
# image positions
422
frei0r=perspective:0.2/0.2:0.8/0.2
423
@end example
424

    
425
For more information see:
426
@url{http://piksel.org/frei0r}
427

    
428
@section hflip
429

    
430
Flip the input video horizontally.
431

    
432
For example to horizontally flip the video in input with
433
@file{ffmpeg}:
434
@example
435
ffmpeg -i in.avi -vf "hflip" out.avi
436
@end example
437

    
438
@section hqdn3d
439

    
440
High precision/quality 3d denoise filter. This filter aims to reduce
441
image noise producing smooth images and making still images really
442
still. It should enhance compressibility.
443

    
444
It accepts the following optional parameters:
445
@var{luma_spatial}:@var{chroma_spatial}:@var{luma_tmp}:@var{chroma_tmp}
446

    
447
@table @option
448
@item luma_spatial
449
a non-negative float number which specifies spatial luma strength,
450
defaults to 4.0
451

    
452
@item chroma_spatial
453
a non-negative float number which specifies spatial chroma strength,
454
defaults to 3.0*@var{luma_spatial}/4.0
455

    
456
@item luma_tmp
457
a float number which specifies luma temporal strength, defaults to
458
6.0*@var{luma_spatial}/4.0
459

    
460
@item chroma_tmp
461
a float number which specifies chroma temporal strength, defaults to
462
@var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}
463
@end table
464

    
465
@section noformat
466

    
467
Force libavfilter not to use any of the specified pixel formats for the
468
input to the next filter.
469

    
470
The filter accepts a list of pixel format names, separated by ":",
471
for example "yuv420p:monow:rgb24".
472

    
473
The following command:
474

    
475
@example
476
./ffmpeg -i in.avi -vf "noformat=yuv420p, vflip" out.avi
477
@end example
478

    
479
will make libavfilter use a format different from "yuv420p" for the
480
input to the vflip filter.
481

    
482
@section null
483

    
484
Pass the video source unchanged to the output.
485

    
486
@section ocv_smooth
487

    
488
Apply smooth transform using libopencv.
489

    
490
To enable this filter install libopencv library and headers and
491
configure FFmpeg with --enable-libopencv.
492

    
493
The filter accepts the following parameters:
494
@var{type}:@var{param1}:@var{param2}:@var{param3}:@var{param4}.
495

    
496
@var{type} is the type of smooth filter to apply, and can be one of
497
the following values: "blur", "blur_no_scale", "median", "gaussian",
498
"bilateral". The default value is "gaussian".
499

    
500
@var{param1}, @var{param2}, @var{param3}, and @var{param4} are
501
parameters whose meanings depend on smooth type. @var{param1} and
502
@var{param2} accept integer positive values or 0, @var{param3} and
503
@var{param4} accept float values.
504

    
505
The default value for @var{param1} is 3, the default value for the
506
other parameters is 0.
507

    
508
These parameters correspond to the parameters assigned to the
509
libopencv function @code{cvSmooth}. Refer to the official libopencv
510
documentation for the exact meaning of the parameters:
511
@url{http://opencv.willowgarage.com/documentation/c/image_filtering.html}
512

    
513
@section overlay
514

    
515
Overlay one video on top of another.
516

    
517
It takes two inputs and one output, the first input is the "main"
518
video on which the second input is overlayed.
519

    
520
It accepts the parameters: @var{x}:@var{y}.
521

    
522
@var{x} is the x coordinate of the overlayed video on the main video,
523
@var{y} is the y coordinate. The parameters are expressions containing
524
the following parameters:
525

    
526
@table @option
527
@item main_w, main_h
528
main input width and height
529

    
530
@item W, H
531
same as @var{main_w} and @var{main_h}
532

    
533
@item overlay_w, overlay_h
534
overlay input width and height
535

    
536
@item w, h
537
same as @var{overlay_w} and @var{overlay_h}
538
@end table
539

    
540
Be aware that frames are taken from each input video in timestamp
541
order, hence, if their initial timestamps differ, it is a a good idea
542
to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
543
have them begin in the same zero timestamp, as it does the example for
544
the @var{movie} filter.
545

    
546
Follow some examples:
547
@example
548
# draw the overlay at 10 pixels from the bottom right
549
# corner of the main video.
550
overlay=main_w-overlay_w-10:main_h-overlay_h-10
551

    
552
# insert a transparent PNG logo in the bottom left corner of the input
553
movie=0:png:logo.png [logo];
554
[in][logo] overlay=10:main_h-overlay_h-10 [out]
555

    
556
# insert 2 different transparent PNG logos (second logo on bottom
557
# right corner):
558
movie=0:png:logo1.png [logo1];
559
movie=0:png:logo2.png [logo2];
560
[in][logo1]       overlay=10:H-h-10 [in+logo1];
561
[in+logo1][logo2] overlay=W-w-10:H-h-10 [out]
562

    
563
# add a transparent color layer on top of the main video,
564
# WxH specifies the size of the main input to the overlay filter
565
color=red@.3:WxH [over]; [in][over] overlay [out]
566
@end example
567

    
568
You can chain togheter more overlays but the efficiency of such
569
approach is yet to be tested.
570

    
571
@section pad
572

    
573
Add paddings to the input image, and places the original input at the
574
given coordinates @var{x}, @var{y}.
575

    
576
It accepts the following parameters:
577
@var{width}:@var{height}:@var{x}:@var{y}:@var{color}.
578

    
579
Follows the description of the accepted parameters.
580

    
581
@table @option
582
@item width, height
583

    
584
Specify the size of the output image with the paddings added. If the
585
value for @var{width} or @var{height} is 0, the corresponding input size
586
is used for the output.
587

    
588
The default value of @var{width} and @var{height} is 0.
589

    
590
@item x, y
591

    
592
Specify the offsets where to place the input image in the padded area
593
with respect to the top/left border of the output image.
594

    
595
The default value of @var{x} and @var{y} is 0.
596

    
597
@item color
598

    
599
Specify the color of the padded area, it can be the name of a color
600
(case insensitive match) or a 0xRRGGBB[AA] sequence.
601

    
602
The default value of @var{color} is "black".
603

    
604
@end table
605

    
606
For example:
607

    
608
@example
609
# Add paddings with color "violet" to the input video. Output video
610
# size is 640x480, the top-left corner of the input video is placed at
611
# row 0, column 40.
612
pad=640:480:0:40:violet
613
@end example
614

    
615
@section pixdesctest
616

    
617
Pixel format descriptor test filter, mainly useful for internal
618
testing. The output video should be equal to the input video.
619

    
620
For example:
621
@example
622
format=monow, pixdesctest
623
@end example
624

    
625
can be used to test the monowhite pixel format descriptor definition.
626

    
627
@section scale
628

    
629
Scale the input video to @var{width}:@var{height} and/or convert the image format.
630

    
631
For example the command:
632

    
633
@example
634
./ffmpeg -i in.avi -vf "scale=200:100" out.avi
635
@end example
636

    
637
will scale the input video to a size of 200x100.
638

    
639
If the input image format is different from the format requested by
640
the next filter, the scale filter will convert the input to the
641
requested format.
642

    
643
If the value for @var{width} or @var{height} is 0, the respective input
644
size is used for the output.
645

    
646
If the value for @var{width} or @var{height} is -1, the scale filter will
647
use, for the respective output size, a value that maintains the aspect
648
ratio of the input image.
649

    
650
The default value of @var{width} and @var{height} is 0.
651

    
652
@section setpts
653

    
654
Change the PTS (presentation timestamp) of the input video frames.
655

    
656
Accept in input an expression evaluated through the eval API, which
657
can contain the following constants:
658

    
659
@table @option
660
@item PTS
661
the presentation timestamp in input
662

    
663
@item PI
664
Greek PI
665

    
666
@item PHI
667
golden ratio
668

    
669
@item E
670
Euler number
671

    
672
@item N
673
the count of the input frame, starting from 0.
674

    
675
@item STARTPTS
676
the PTS of the first video frame
677

    
678
@item INTERLACED
679
tell if the current frame is interlaced
680

    
681
@item POS
682
original position in the file of the frame, or undefined if undefined
683
for the current frame
684

    
685
@item PREV_INPTS
686
previous input PTS
687

    
688
@item PREV_OUTPTS
689
previous output PTS
690

    
691
@end table
692

    
693
Some examples follow:
694

    
695
@example
696
# start counting PTS from zero
697
setpts=PTS-STARTPTS
698

    
699
# fast motion
700
setpts=0.5*PTS
701

    
702
# slow motion
703
setpts=2.0*PTS
704

    
705
# fixed rate 25 fps
706
setpts=N/(25*TB)
707

    
708
# fixed rate 25 fps with some jitter
709
setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
710
@end example
711

    
712
@section settb
713

    
714
Set the timebase to use for the output frames timestamps.
715
It is mainly useful for testing timebase configuration.
716

    
717
It accepts in input an arithmetic expression representing a rational.
718
The expression can contain the constants "PI", "E", "PHI", "AVTB" (the
719
default timebase), and "intb" (the input timebase).
720

    
721
The default value for the input is "intb".
722

    
723
Follow some examples.
724

    
725
@example
726
# set the timebase to 1/25
727
settb=1/25
728

    
729
# set the timebase to 1/10
730
settb=0.1
731

    
732
#set the timebase to 1001/1000
733
settb=1+0.001
734

    
735
#set the timebase to 2*intb
736
settb=2*intb
737

    
738
#set the default timebase value
739
settb=AVTB
740
@end example
741

    
742
@section slicify
743

    
744
Pass the images of input video on to next video filter as multiple
745
slices.
746

    
747
@example
748
./ffmpeg -i in.avi -vf "slicify=32" out.avi
749
@end example
750

    
751
The filter accepts the slice height as parameter. If the parameter is
752
not specified it will use the default value of 16.
753

    
754
Adding this in the beginning of filter chains should make filtering
755
faster due to better use of the memory cache.
756

    
757
@section transpose
758

    
759
Transpose rows with columns in the input video and optionally flip it.
760

    
761
It accepts a parameter representing an integer, which can assume the
762
values:
763

    
764
@table @samp
765
@item 0
766
Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
767
@example
768
L.R     L.l
769
. . ->  . .
770
l.r     R.r
771
@end example
772

    
773
@item 1
774
Rotate by 90 degrees clockwise, that is:
775
@example
776
L.R     l.L
777
. . ->  . .
778
l.r     r.R
779
@end example
780

    
781
@item 2
782
Rotate by 90 degrees counterclockwise, that is:
783
@example
784
L.R     R.r
785
. . ->  . .
786
l.r     L.l
787
@end example
788

    
789
@item 3
790
Rotate by 90 degrees clockwise and vertically flip, that is:
791
@example
792
L.R     r.R
793
. . ->  . .
794
l.r     l.L
795
@end example
796
@end table
797

    
798
@section unsharp
799

    
800
Sharpen or blur the input video.
801

    
802
It accepts the following parameters:
803
@var{luma_msize_x}:@var{luma_msize_y}:@var{luma_amount}:@var{chroma_msize_x}:@var{chroma_msize_y}:@var{chroma_amount}
804

    
805
Negative values for the amount will blur the input video, while positive
806
values will sharpen. All parameters are optional and default to the
807
equivalent of the string '5:5:1.0:0:0:0.0'.
808

    
809
@table @option
810

    
811
@item luma_msize_x
812
Set the luma matrix horizontal size. It can be an integer between 3
813
and 13, default value is 5.
814

    
815
@item luma_msize_y
816
Set the luma matrix vertical size. It can be an integer between 3
817
and 13, default value is 5.
818

    
819
@item luma_amount
820
Set the luma effect strength. It can be a float number between -2.0
821
and 5.0, default value is 1.0.
822

    
823
@item chroma_msize_x
824
Set the chroma matrix horizontal size. It can be an integer between 3
825
and 13, default value is 0.
826

    
827
@item chroma_msize_y
828
Set the chroma matrix vertical size. It can be an integer between 3
829
and 13, default value is 0.
830

    
831
@item luma_amount
832
Set the chroma effect strength. It can be a float number between -2.0
833
and 5.0, default value is 0.0.
834

    
835
@end table
836

    
837
@example
838
# Strong luma sharpen effect parameters
839
unsharp=7:7:2.5
840

    
841
# Strong blur of both luma and chroma parameters
842
unsharp=7:7:-2:7:7:-2
843

    
844
# Use the default values with @command{ffmpeg}
845
./ffmpeg -i in.avi -vf "unsharp" out.mp4
846
@end example
847

    
848
@section vflip
849

    
850
Flip the input video vertically.
851

    
852
@example
853
./ffmpeg -i in.avi -vf "vflip" out.avi
854
@end example
855

    
856
@section yadif
857

    
858
yadif is "yet another deinterlacing filter".
859

    
860
It accepts the syntax:
861
@example
862
yadif=[@var{mode}[:@var{parity}]]
863
@end example
864

    
865
@table @option
866

    
867
@item mode
868
Specify the interlacing mode to adopt, accepts one of the following values.
869

    
870
0: Output 1 frame for each frame.
871

    
872
1: Output 1 frame for each field.
873

    
874
2: Like 0 but skips spatial interlacing check.
875

    
876
3: Like 1 but skips spatial interlacing check.
877

    
878
Default value is 0.
879

    
880
@item parity
881
0 if is bottom field first, 1 if the interlaced video is top field
882
first, -1 to enable automatic detection.
883

    
884
@end table
885

    
886
@c man end VIDEO FILTERS
887

    
888
@chapter Video Sources
889
@c man begin VIDEO SOURCES
890

    
891
Below is a description of the currently available video sources.
892

    
893
@section buffer
894

    
895
Buffer video frames, and make them available to the filter chain.
896

    
897
This source is mainly intended for a programmatic use, in particular
898
through the interface defined in @file{libavfilter/vsrc_buffer.h}.
899

    
900
It accepts the following parameters:
901
@var{width}:@var{height}:@var{pix_fmt_string}:@var{timebase_num}:@var{timebase_den}
902

    
903
All the parameters need to be explicitely defined.
904

    
905
Follows the list of the accepted parameters.
906

    
907
@table @option
908

    
909
@item width, height
910
Specify the width and height of the buffered video frames.
911

    
912
@item pix_fmt_string
913
A string representing the pixel format of the buffered video frames.
914
It may be a number corresponding to a pixel format, or a pixel format
915
name.
916

    
917
@item timebase_num, timebase_den
918
Specify numerator and denomitor of the timebase assumed by the
919
timestamps of the buffered frames.
920
@end table
921

    
922
For example:
923
@example
924
buffer=320:240:yuv410p:1:24
925
@end example
926

    
927
will instruct the source to accept video frames with size 320x240 and
928
with format "yuv410p" and assuming 1/24 as the timestamps timebase.
929
Since the pixel format with name "yuv410p" corresponds to the number 6
930
(check the enum PixelFormat definition in @file{libavutil/pixfmt.h}),
931
this example corresponds to:
932
@example
933
buffer=320:240:6:1:24
934
@end example
935

    
936
@section color
937

    
938
Provide an uniformly colored input.
939

    
940
It accepts the following parameters:
941
@var{color}:@var{frame_size}:@var{frame_rate}
942

    
943
Follows the description of the accepted parameters.
944

    
945
@table @option
946

    
947
@item color
948
Specify the color of the source. It can be the name of a color (case
949
insensitive match) or a 0xRRGGBB[AA] sequence, possibly followed by an
950
alpha specifier. The default value is "black".
951

    
952
@item frame_size
953
Specify the size of the sourced video, it may be a string of the form
954
@var{width}x@var{heigth}, or the name of a size abbreviation. The
955
default value is "320x240".
956

    
957
@item frame_rate
958
Specify the frame rate of the sourced video, as the number of frames
959
generated per second. It has to be a string in the format
960
@var{frame_rate_num}/@var{frame_rate_den}, an integer number, a float
961
number or a valid video frame rate abbreviation. The default value is
962
"25".
963

    
964
@end table
965

    
966
For example the following graph description will generate a red source
967
with an opacity of 0.2, with size "qcif" and a frame rate of 10
968
frames per second, which will be overlayed over the source connected
969
to the pad with identifier "in".
970

    
971
@example
972
"color=red@@0.2:qcif:10 [color]; [in][color] overlay [out]"
973
@end example
974

    
975
@section nullsrc
976

    
977
Null video source, never return images. It is mainly useful as a
978
template and to be employed in analysis / debugging tools.
979

    
980
It accepts as optional parameter a string of the form
981
@var{width}:@var{height}:@var{timebase}.
982

    
983
@var{width} and @var{height} specify the size of the configured
984
source. The default values of @var{width} and @var{height} are
985
respectively 352 and 288 (corresponding to the CIF size format).
986

    
987
@var{timebase} specifies an arithmetic expression representing a
988
timebase. The expression can contain the constants "PI", "E", "PHI",
989
"AVTB" (the default timebase), and defaults to the value "AVTB".
990

    
991
@section frei0r_src
992

    
993
Provide a frei0r source.
994

    
995
To enable compilation of this filter you need to install the frei0r
996
header and configure FFmpeg with --enable-frei0r.
997

    
998
The source supports the syntax:
999
@example
1000
@var{size}:@var{rate}:@var{src_name}[@{=|:@}@var{param1}:@var{param2}:...:@var{paramN}]
1001
@end example
1002

    
1003
@var{size} is the size of the video to generate, may be a string of the
1004
form @var{width}x@var{height} or a frame size abbreviation.
1005
@var{rate} is the rate of the video to generate, may be a string of
1006
the form @var{num}/@var{den} or a frame rate abbreviation.
1007
@var{src_name} is the name to the frei0r source to load. For more
1008
information regarding frei0r and how to set the parameters read the
1009
section "frei0r" (@pxref{frei0r}) in the description of the video
1010
filters.
1011

    
1012
Some examples follow:
1013
@example
1014
# generate a frei0r partik0l source with size 200x200 and framerate 10
1015
# which is overlayed on the overlay filter main input
1016
frei0r_src=200x200:10:partik0l=1234 [overlay]; [in][overlay] overlay
1017
@end example
1018

    
1019
@c man end VIDEO SOURCES
1020

    
1021
@chapter Video Sinks
1022
@c man begin VIDEO SINKS
1023

    
1024
Below is a description of the currently available video sinks.
1025

    
1026
@section nullsink
1027

    
1028
Null video sink, do absolutely nothing with the input video. It is
1029
mainly useful as a template and to be employed in analysis / debugging
1030
tools.
1031

    
1032
@c man end VIDEO SINKS
1033