Commit 3dc494f8 authored by Stefano Sabatini's avatar Stefano Sabatini

lavfi/vidstabtransform: apply various documentation/option minor fixes

Improve consistency with the rest of the documentation.
parent 676a395a
......@@ -8136,23 +8136,27 @@ the unsharp filter, see below.
To enable compilation of this filter you need to configure FFmpeg with
@code{--enable-libvidstab}.
This filter accepts the following options:
@subsection Options
@table @option
@item input
path to the file used to read the transforms (default: @file{transforms.trf})
Set path to the file used to read the transforms. Default value is
@file{transforms.trf}).
@item smoothing
Set the number of frames (value*2 + 1) used for lowpass filtering the camera movements
(default: 10). For example a number of 10 means that 21 frames are used
(10 in the past and 10 in the future) to smoothen the motion in the
video. A larger values leads to a smoother video, but limits the
acceleration of the camera (pan/tilt movements).
0 is a special case where a static camera is simulated.
Set the number of frames (value*2 + 1) used for lowpass filtering the
camera movements. Default value is 10.
For example a number of 10 means that 21 frames are used (10 in the
past and 10 in the future) to smoothen the motion in the video. A
larger values leads to a smoother video, but limits the acceleration
of the camera (pan/tilt movements). 0 is a special case where a
static camera is simulated.
@item optalgo
Set the camera path optimization algorithm:
Set the camera path optimization algorithm.
Accepted values are:
@table @samp
@item gauss
gaussian kernel low-pass filter on camera motion (default)
......@@ -8161,16 +8165,18 @@ averaging on transformations
@end table
@item maxshift
maximal number of pixels to translate frames (default: -1 no limit)
Set maximal number of pixels to translate frames. Default value is -1,
meaning no limit.
@item maxangle
maximal angle in radians (degree*PI/180) to rotate frames (default: -1
no limit)
Set maximal angle in radians (degree*PI/180) to rotate frames. Default
value is -1, meaning no limit.
@item crop
How to deal with borders that may be visible due to movement
compensation. Available values are:
Specify how to deal with borders that may be visible due to movement
compensation.
Available values are:
@table @samp
@item keep
keep image information from previous frame (default)
......@@ -8179,49 +8185,41 @@ fill the border black
@end table
@item invert
@table @samp
@item 0
keep transforms normal (default)
@item 1
invert transforms
@end table
Invert transforms if set to 1. Default value is 0.
@item relative
consider transforms as
@table @samp
@item 0
absolute
@item 1
relative to previous frame (default)
@end table
Consider transforms as relative to previsou frame if set to 1,
absolute if set to 0. Default value is 0.
@item zoom
Set percentage to zoom (default: 0)
@table @samp
@item >0
zoom in
@item <0
zoom out
@end table
Set percentage to zoom. A positive value will result in a zoom-in
effect, a negative value in a zoom-out effect. Default value is 0 (no
zoom).
@item optzoom
Set optimal zooming to avoid borders
Set optimal zooming to avoid borders.
Accepted values are:
@table @samp
@item 0
disabled
@item 1
optimal static zoom value is determined (only very strong movements will lead to visible borders) (default)
optimal static zoom value is determined (only very strong movements
will lead to visible borders) (default)
@item 2
optimal adaptive zoom value is determined (no borders will be visible), see @option{zoomspeed}
optimal adaptive zoom value is determined (no borders will be
visible), see @option{zoomspeed}
@end table
Note that the value given at zoom is added to the one calculated
here.
Note that the value given at zoom is added to the one calculated here.
@item zoomspeed
Set percent to zoom maximally each frame (for @option{optzoom=2}). Range is from 0 to 5, default value is 0.2
Set percent to zoom maximally each frame (enabled when
@option{optzoom} is set to 2). Range is from 0 to 5, default value is
0.25.
@item interpol
type of interpolation
Specify type of interpolation.
Available values are:
@table @samp
......@@ -8236,49 +8234,39 @@ cubic in both directions (slow)
@end table
@item tripod
virtual tripod mode means that the video is stabilized such that the
camera stays stationary. Use also @code{tripod} option of
@ref{vidstabdetect}.
@table @samp
@item 0
off (default)
@item 1
virtual tripod mode: equivalent to @code{relative=0:smoothing=0}
@end table
Enable virtual tripod mode if set to 1, which is equivalent to
@code{relative=0:smoothing=0}. Default value is 0.
@item debug
Increase log verbosity of set to 1. Also the detected global motions are written to the temporary file @file{global_motions.trf}.
@table @samp
@item 0
disabled (default)
@item 1
enabled
@end table
Use also @code{tripod} option of @ref{vidstabdetect}.
@item debug
Increase log verbosity if set to 1. Also the detected global motions
are written to the temporary file @file{global_motions.trf}. Default
value is 0.
@end table
@subsection Examples
@itemize
@item
typical call with default default values:
(note the unsharp filter which is always recommended)
Use @command{ffmpeg} for a typical stabilization with default values:
@example
ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
@end example
Note the use of the unsharp filter which is always recommended.
@item
zoom in a bit more and load transform data from a given file
Zoom in a bit more and load transform data from a given file:
@example
vidstabtransform=zoom=5:input="mytransforms.trf"
@end example
@item
smoothen the video even more
Smoothen the video even more:
@example
vidstabtransform=smoothing=30
@end example
@end itemize
@section vflip
......
......@@ -47,11 +47,12 @@ typedef struct {
#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
static const AVOption vidstabtransform_options[] = {
{"input", "path to the file storing the transforms", OFFSET(input),
{"input", "set path to the file storing the transforms", OFFSET(input),
AV_OPT_TYPE_STRING, {.str = DEFAULT_INPUT_NAME}, .flags = FLAGS },
{"smoothing", "number of frames*2 + 1 used for lowpass filtering", OFFSETC(smoothing),
{"smoothing", "set number of frames*2 + 1 used for lowpass filtering", OFFSETC(smoothing),
AV_OPT_TYPE_INT, {.i64 = 15}, 0, 1000, FLAGS},
{"optalgo", "camera path optimization algo", OFFSETC(camPathAlgo),
{"optalgo", "set camera path optimization algo", OFFSETC(camPathAlgo),
AV_OPT_TYPE_INT, {.i64 = VSOptimalL1}, VSOptimalL1, VSAvg, FLAGS, "optalgo"},
{ "opt", "global optimization", 0, // from version 1.0 on
AV_OPT_TYPE_CONST, {.i64 = VSOptimalL1 }, 0, 0, FLAGS, "optalgo"},
......@@ -59,27 +60,31 @@ static const AVOption vidstabtransform_options[] = {
AV_OPT_TYPE_CONST, {.i64 = VSGaussian }, 0, 0, FLAGS, "optalgo"},
{ "avg", "simple averaging on motion", 0,
AV_OPT_TYPE_CONST, {.i64 = VSAvg }, 0, 0, FLAGS, "optalgo"},
{"maxshift", "maximal number of pixels to translate image", OFFSETC(maxShift),
{"maxshift", "set maximal number of pixels to translate image", OFFSETC(maxShift),
AV_OPT_TYPE_INT, {.i64 = -1}, -1, 500, FLAGS},
{"maxangle", "maximal angle in rad to rotate image", OFFSETC(maxAngle),
{"maxangle", "set maximal angle in rad to rotate image", OFFSETC(maxAngle),
AV_OPT_TYPE_DOUBLE, {.dbl = -1.0}, -1.0, 3.14, FLAGS},
{"crop", "set cropping mode", OFFSETC(crop),
{"crop", "set cropping mode", OFFSETC(crop),
AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1, FLAGS, "crop"},
{ "keep", "keep border", 0,
AV_OPT_TYPE_CONST, {.i64 = VSKeepBorder }, 0, 0, FLAGS, "crop"},
{ "black", "black border", 0,
AV_OPT_TYPE_CONST, {.i64 = VSCropBorder }, 0, 0, FLAGS, "crop"},
{"invert", "1: invert transforms", OFFSETC(invert),
{"invert", "invert transforms", OFFSETC(invert),
AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1, FLAGS},
{"relative", "consider transforms as 0: absolute, 1: relative", OFFSETC(relative),
{"relative", "consider transforms as relative", OFFSETC(relative),
AV_OPT_TYPE_INT, {.i64 = 1}, 0, 1, FLAGS},
{"zoom", "percentage to zoom >0: zoom in, <0 zoom out", OFFSETC(zoom),
{"zoom", "set percentage to zoom (>0: zoom in, <0: zoom out", OFFSETC(zoom),
AV_OPT_TYPE_DOUBLE, {.dbl = 0}, -100, 100, FLAGS},
{"optzoom", "0: nothing, 1: optimal static zoom, 2: optimal dynamic zoom", OFFSETC(optZoom),
{"optzoom", "set optimal zoom (0: nothing, 1: optimal static zoom, 2: optimal dynamic zoom)", OFFSETC(optZoom),
AV_OPT_TYPE_INT, {.i64 = 1}, 0, 2, FLAGS},
{"zoomspeed", "for adative zoom: percent to zoom maximally each frame", OFFSETC(zoomSpeed),
AV_OPT_TYPE_DOUBLE, {.dbl = 0.25}, 0, 5, FLAGS},
{"interpol", "type of interpolation", OFFSETC(interpolType),
{"interpol", "set type of interpolation", OFFSETC(interpolType),
AV_OPT_TYPE_INT, {.i64 = 2}, 0, 3, FLAGS, "interpol"},
{ "no", "no interpolation", 0,
AV_OPT_TYPE_CONST, {.i64 = VS_Zero }, 0, 0, FLAGS, "interpol"},
......@@ -89,9 +94,10 @@ static const AVOption vidstabtransform_options[] = {
AV_OPT_TYPE_CONST, {.i64 = VS_BiLinear},0, 0, FLAGS, "interpol"},
{ "bicubic", "bi-cubic", 0,
AV_OPT_TYPE_CONST, {.i64 = VS_BiCubic },0, 0, FLAGS, "interpol"},
{"tripod", "if 1: virtual tripod mode (equiv. to relative=0:smoothing=0)", OFFSET(tripod),
{"tripod", "enable virtual tripod mode (same as relative=0:smoothing=0)", OFFSET(tripod),
AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1, FLAGS},
{"debug", "if 1: more output printed and global motions are stored to file",OFFSET(debug),
{"debug", "enable debug mode and writer global motions information to file", OFFSET(debug),
AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1, FLAGS},
{NULL}
};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment