doc/filtering: add documentation for Vulkan filters
This commit documents most of the Vulkan filters. Some of this was copy-pasted from equivalent OpenCL filters.
This commit is contained in:
parent
ea0394fd24
commit
6018f87599
346
doc/filters.texi
346
doc/filters.texi
@ -9089,6 +9089,7 @@ boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chrom
|
|||||||
@end example
|
@end example
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
|
@anchor{bwdif}
|
||||||
@section bwdif
|
@section bwdif
|
||||||
|
|
||||||
Deinterlace the input video ("bwdif" stands for "Bob Weaver
|
Deinterlace the input video ("bwdif" stands for "Bob Weaver
|
||||||
@ -26356,6 +26357,7 @@ Apply dilation filter with threshold0 set to 30, threshold1 set 40, threshold2 s
|
|||||||
@end example
|
@end example
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
|
@anchor{nlmeans_opencl}
|
||||||
@section nlmeans_opencl
|
@section nlmeans_opencl
|
||||||
|
|
||||||
Non-local Means denoise filter through OpenCL, this filter accepts same options as @ref{nlmeans}.
|
Non-local Means denoise filter through OpenCL, this filter accepts same options as @ref{nlmeans}.
|
||||||
@ -27184,6 +27186,350 @@ See @ref{xstack}.
|
|||||||
|
|
||||||
@c man end VAAPI VIDEO FILTERS
|
@c man end VAAPI VIDEO FILTERS
|
||||||
|
|
||||||
|
@chapter Vulkan Video Filters
|
||||||
|
@c man begin VULKAN VIDEO FILTERS
|
||||||
|
|
||||||
|
Below is a description of the currently available Vulkan video filters.
|
||||||
|
|
||||||
|
To enable compilation of these filters you need to configure FFmpeg with
|
||||||
|
@code{--enable-vulkan} and either @code{--enable-libglslang} or @code{--enable-libshaderc}.
|
||||||
|
|
||||||
|
Running Vulkan filters requires you to initialize a hardware device and to pass that device to all filters in any filter graph.
|
||||||
|
@table @option
|
||||||
|
|
||||||
|
@item -init_hw_device vulkan[=@var{name}][:@var{device}[,@var{key=value}...]]
|
||||||
|
Initialise a new hardware device of type @var{vulkan} called @var{name}, using the
|
||||||
|
given device parameters and options in @var{key=value}. The following options
|
||||||
|
are supported:
|
||||||
|
|
||||||
|
@table @option
|
||||||
|
@item debug
|
||||||
|
Switches validation layers on if set to 1.
|
||||||
|
|
||||||
|
@item linear_images
|
||||||
|
Allocates linear images. Does not apply to decoding.
|
||||||
|
|
||||||
|
@item disable_multiplane
|
||||||
|
Disables multiplane images. Does not apply to decoding.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
@item -filter_hw_device @var{name}
|
||||||
|
Pass the hardware device called @var{name} to all filters in any filter graph.
|
||||||
|
|
||||||
|
@end table
|
||||||
|
|
||||||
|
For more detailed information see @url{https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options}
|
||||||
|
|
||||||
|
@itemize
|
||||||
|
@item
|
||||||
|
Example of choosing the first device and running nlmeans_vulkan filter with default parameters on it.
|
||||||
|
@example
|
||||||
|
-init_hw_device vulkan=vk:0 -filter_hw_device vk -i INPUT -vf "hwupload,nlmeans_vulkan,hwdownload" OUTPUT
|
||||||
|
@end example
|
||||||
|
@end itemize
|
||||||
|
|
||||||
|
As Vulkan filters are not able to access frame data in normal memory, all frame data needs to be uploaded (@ref{hwupload}) to hardware surfaces connected to the appropriate device before being used and then downloaded (@ref{hwdownload}) back to normal memory. Note that @ref{hwupload} will upload to a frame with the same layout as the software frame, so it may be necessary to add a @ref{format} filter immediately before to get the input into the right format and @ref{hwdownload} does not support all formats on the output - it is usually necessary to insert an additional @ref{format} filter immediately following in the graph to get the output in a supported format.
|
||||||
|
|
||||||
|
@section avgblur_vulkan
|
||||||
|
|
||||||
|
Apply an average blur filter, implemented on the GPU using Vulkan.
|
||||||
|
|
||||||
|
The filter accepts the following options:
|
||||||
|
|
||||||
|
@table @option
|
||||||
|
@item sizeX
|
||||||
|
Set horizontal radius size.
|
||||||
|
Range is @code{[1, 32]} and default value is @code{3}.
|
||||||
|
|
||||||
|
@item sizeY
|
||||||
|
Set vertical radius size. Range is @code{[1, 32]} and default value is @code{3}.
|
||||||
|
|
||||||
|
@item planes
|
||||||
|
Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
@section blend_vulkan
|
||||||
|
|
||||||
|
Blend two Vulkan frames into each other.
|
||||||
|
|
||||||
|
The @code{blend} filter takes two input streams and outputs one
|
||||||
|
stream, the first input is the "top" layer and second input is
|
||||||
|
"bottom" layer. By default, the output terminates when the longest input terminates.
|
||||||
|
|
||||||
|
A description of the accepted options follows.
|
||||||
|
|
||||||
|
@table @option
|
||||||
|
@item c0_mode
|
||||||
|
@item c1_mode
|
||||||
|
@item c2_mode
|
||||||
|
@item c3_mode
|
||||||
|
@item all_mode
|
||||||
|
Set blend mode for specific pixel component or all pixel components in case
|
||||||
|
of @var{all_mode}. Default value is @code{normal}.
|
||||||
|
|
||||||
|
Available values for component modes are:
|
||||||
|
@table @samp
|
||||||
|
@item normal
|
||||||
|
@item multiply
|
||||||
|
@end table
|
||||||
|
|
||||||
|
@end table
|
||||||
|
|
||||||
|
@section bwdif_vulkan
|
||||||
|
|
||||||
|
Deinterlacer using @ref{bwdif}, the "Bob Weaver Deinterlacing Filter" algorithm, implemented
|
||||||
|
on the GPU using Vulkan.
|
||||||
|
|
||||||
|
It accepts the following parameters:
|
||||||
|
|
||||||
|
@table @option
|
||||||
|
@item mode
|
||||||
|
The interlacing mode to adopt. It accepts one of the following values:
|
||||||
|
|
||||||
|
@table @option
|
||||||
|
@item 0, send_frame
|
||||||
|
Output one frame for each frame.
|
||||||
|
@item 1, send_field
|
||||||
|
Output one frame for each field.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
The default value is @code{send_field}.
|
||||||
|
|
||||||
|
@item parity
|
||||||
|
The picture field parity assumed for the input interlaced video. It accepts one
|
||||||
|
of the following values:
|
||||||
|
|
||||||
|
@table @option
|
||||||
|
@item 0, tff
|
||||||
|
Assume the top field is first.
|
||||||
|
@item 1, bff
|
||||||
|
Assume the bottom field is first.
|
||||||
|
@item -1, auto
|
||||||
|
Enable automatic detection of field parity.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
The default value is @code{auto}.
|
||||||
|
If the interlacing is unknown or the decoder does not export this information,
|
||||||
|
top field first will be assumed.
|
||||||
|
|
||||||
|
@item deint
|
||||||
|
Specify which frames to deinterlace. Accepts one of the following
|
||||||
|
values:
|
||||||
|
|
||||||
|
@table @option
|
||||||
|
@item 0, all
|
||||||
|
Deinterlace all frames.
|
||||||
|
@item 1, interlaced
|
||||||
|
Only deinterlace frames marked as interlaced.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
The default value is @code{all}.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
@section chromaber_vulkan
|
||||||
|
|
||||||
|
Apply an effect that emulates chromatic aberration. Works best with RGB inputs,
|
||||||
|
but provides a similar effect with YCbCr inputs too.
|
||||||
|
|
||||||
|
@table @option
|
||||||
|
@item dist_x
|
||||||
|
Horizontal displacement multiplier. Each chroma pixel's position will be multiplied
|
||||||
|
by this amount, starting from the center of the image. Default is @code{0}.
|
||||||
|
|
||||||
|
@item dist_y
|
||||||
|
Similarly, this sets the vertical displacement multiplier. Default is @code{0}.
|
||||||
|
|
||||||
|
@end table
|
||||||
|
|
||||||
|
@section color_vulkan
|
||||||
|
|
||||||
|
Video source that creates a Vulkan frame of a solid color.
|
||||||
|
Useful for benchmarking, or overlaying.
|
||||||
|
|
||||||
|
It accepts the following parameters:
|
||||||
|
|
||||||
|
@table @option
|
||||||
|
@item color
|
||||||
|
The color to use. Either a name, or a hexadecimal value.
|
||||||
|
The default value is @code{black}.
|
||||||
|
|
||||||
|
@item size
|
||||||
|
The size of the output frame. Default value is @code{1920x1080}.
|
||||||
|
|
||||||
|
@item rate
|
||||||
|
The framerate to output at. Default value is @code{60} frames per second.
|
||||||
|
|
||||||
|
@item duration
|
||||||
|
The video duration. Default value is @code{-0.000001}.
|
||||||
|
|
||||||
|
@item sar
|
||||||
|
The video signal aspect ratio. Default value is @code{1/1}.
|
||||||
|
|
||||||
|
@item format
|
||||||
|
The pixel format of the output Vulkan frames. Default value is @code{yuv444p}.
|
||||||
|
|
||||||
|
@item out_range
|
||||||
|
Set the output YCbCr sample range.
|
||||||
|
|
||||||
|
This allows the autodetected value to be overridden as well as allows forcing
|
||||||
|
a specific value used for the output and encoder. If not specified, the
|
||||||
|
range depends on the pixel format. Possible values:
|
||||||
|
|
||||||
|
@table @samp
|
||||||
|
@item auto/unknown
|
||||||
|
Choose automatically.
|
||||||
|
|
||||||
|
@item jpeg/full/pc
|
||||||
|
Set full range (0-255 in case of 8-bit luma).
|
||||||
|
|
||||||
|
@item mpeg/limited/tv
|
||||||
|
Set "MPEG" range (16-235 in case of 8-bit luma).
|
||||||
|
@end table
|
||||||
|
|
||||||
|
@end table
|
||||||
|
|
||||||
|
@section vflip_vulkan
|
||||||
|
|
||||||
|
Flips an image vertically.
|
||||||
|
|
||||||
|
@section hflip_vulkan
|
||||||
|
|
||||||
|
Flips an image horizontally.
|
||||||
|
|
||||||
|
@section flip_vulkan
|
||||||
|
|
||||||
|
Flips an image along both the vertical and horizontal axis.
|
||||||
|
|
||||||
|
@section gblur_vulkan
|
||||||
|
|
||||||
|
Apply Gaussian blur filter on Vulkan frames.
|
||||||
|
|
||||||
|
The filter accepts the following options:
|
||||||
|
|
||||||
|
@table @option
|
||||||
|
@item sigma
|
||||||
|
Set horizontal sigma, standard deviation of Gaussian blur. Default is @code{0.5}.
|
||||||
|
|
||||||
|
@item sigmaV
|
||||||
|
Set vertical sigma, if negative it will be same as @code{sigma}.
|
||||||
|
Default is @code{-1}.
|
||||||
|
|
||||||
|
@item planes
|
||||||
|
Set which planes to filter. By default all planes are filtered.
|
||||||
|
|
||||||
|
@item size
|
||||||
|
Set the kernel size along the horizontal axis. Default is @code{19}.
|
||||||
|
|
||||||
|
@item sizeV
|
||||||
|
Set the kernel size along the vertical axis. Default is @code{0},
|
||||||
|
which sets to use the same value as @var{size}.
|
||||||
|
|
||||||
|
@end table
|
||||||
|
|
||||||
|
@section nlmeans_vulkan
|
||||||
|
|
||||||
|
Denoise frames using Non-Local Means algorithm, implemented on the GPU using
|
||||||
|
Vulkan.
|
||||||
|
Supports more pixel formats than @ref{nlmeans} or @ref{nlmeans_opencl}, including
|
||||||
|
alpha channel support.
|
||||||
|
|
||||||
|
The filter accepts the following options.
|
||||||
|
|
||||||
|
@table @option
|
||||||
|
@item s
|
||||||
|
Set denoising strength for all components. Default is 1.0. Must be in range [1.0, 100.0].
|
||||||
|
|
||||||
|
@item p
|
||||||
|
Set patch size for all planes. Default is 7. Must be odd number in range [0, 99].
|
||||||
|
|
||||||
|
@item r
|
||||||
|
Set research size. Default is 15. Must be odd number in range [0, 99].
|
||||||
|
|
||||||
|
@item t
|
||||||
|
Set parallelism. Default is 36. Must be a number in the range [1, 168].
|
||||||
|
Larger values may speed up processing, at the cost of more VRAM.
|
||||||
|
Lower values will slow it down, reducing VRAM usage.
|
||||||
|
Only supported on GPUs with atomic float operations (RDNA3+, Ampere+).
|
||||||
|
|
||||||
|
@item s0
|
||||||
|
@item s1
|
||||||
|
@item s2
|
||||||
|
@item s3
|
||||||
|
Set denoising strength for a specific component. Default is @var{1}, equal to @option{s}.
|
||||||
|
Must be odd number in range [1, 100].
|
||||||
|
|
||||||
|
@item p0
|
||||||
|
@item p1
|
||||||
|
@item p2
|
||||||
|
@item p3
|
||||||
|
Set patch size for a specific component. Default is @var{7}, equal to @option{p}.
|
||||||
|
Must be odd number in range [0, 99].
|
||||||
|
|
||||||
|
@end table
|
||||||
|
|
||||||
|
@section overlay_vulkan
|
||||||
|
|
||||||
|
Overlay one video on top of another.
|
||||||
|
|
||||||
|
It takes two inputs and has one output. The first input is the "main" video on which the second input is overlaid.
|
||||||
|
This filter requires all inputs to use the same pixel format. So, format conversion may be needed.
|
||||||
|
|
||||||
|
The filter accepts the following options:
|
||||||
|
|
||||||
|
@table @option
|
||||||
|
@item x
|
||||||
|
Set the x coordinate of the overlaid video on the main video.
|
||||||
|
Default value is @code{0}.
|
||||||
|
|
||||||
|
@item y
|
||||||
|
Set the y coordinate of the overlaid video on the main video.
|
||||||
|
Default value is @code{0}.
|
||||||
|
|
||||||
|
@end table
|
||||||
|
|
||||||
|
@section transpose_vulkan
|
||||||
|
|
||||||
|
Transpose rows with columns in the input video and optionally flip it.
|
||||||
|
For more in depth examples see the @ref{transpose} video filter, which shares mostly the same options.
|
||||||
|
|
||||||
|
It accepts the following parameters:
|
||||||
|
|
||||||
|
@table @option
|
||||||
|
|
||||||
|
@item dir
|
||||||
|
Specify the transposition direction.
|
||||||
|
|
||||||
|
Can assume the following values:
|
||||||
|
@table @samp
|
||||||
|
@item cclock_flip
|
||||||
|
Rotate by 90 degrees counterclockwise and vertically flip. (default)
|
||||||
|
|
||||||
|
@item clock
|
||||||
|
Rotate by 90 degrees clockwise.
|
||||||
|
|
||||||
|
@item cclock
|
||||||
|
Rotate by 90 degrees counterclockwise.
|
||||||
|
|
||||||
|
@item clock_flip
|
||||||
|
Rotate by 90 degrees clockwise and vertically flip.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
@item passthrough
|
||||||
|
Do not apply the transposition if the input geometry matches the one
|
||||||
|
specified by the specified value. It accepts the following values:
|
||||||
|
@table @samp
|
||||||
|
@item none
|
||||||
|
Always apply transposition. (default)
|
||||||
|
@item portrait
|
||||||
|
Preserve portrait geometry (when @var{height} >= @var{width}).
|
||||||
|
@item landscape
|
||||||
|
Preserve landscape geometry (when @var{width} >= @var{height}).
|
||||||
|
@end table
|
||||||
|
|
||||||
|
@end table
|
||||||
|
|
||||||
|
@c man end VULKAN VIDEO FILTERS
|
||||||
|
|
||||||
@chapter QSV Video Filters
|
@chapter QSV Video Filters
|
||||||
@c man begin QSV VIDEO FILTERS
|
@c man begin QSV VIDEO FILTERS
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user