On Tue, Jul 3, 2018 at 10:51 AM Danil Iashchenko <danyasche...@gmail.com> wrote: > > Add documentation to all existing OpenCL filters, except tonemap filter. > > --- > Creation of the seperate section for OpenCL filters is motivated by > developing support for Vulkan and CUDA and it is easier to show the > capabilities of each platform by adding new sections. > > doc/filters.texi | 193 > +++++++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 193 insertions(+) > > diff --git a/doc/filters.texi b/doc/filters.texi > index fb5f3ee..3e18e5c 100644 > --- a/doc/filters.texi > +++ b/doc/filters.texi > @@ -5423,6 +5423,7 @@ number in range [5, 129]. > Set what planes of frame filter will use for averaging. Default is all. > @end table > > +@anchor{avgblur} > @section avgblur > > Apply average blur filter. > @@ -5715,6 +5716,7 @@ tblend=all_mode=grainextract > @end example > @end itemize > > +@anchor{boxblur} > @section boxblur > > Apply a boxblur algorithm to the input video. > @@ -6551,6 +6553,7 @@ For example to convert the input to SMPTE-240M, use the > command: > colorspace=smpte240m > @end example > > +@anchor{convolution} > @section convolution > > Apply convolution of 3x3, 5x5, 7x7 or horizontal/vertical up to 49 elements. > @@ -12900,6 +12903,7 @@ By default value 0xf, all planes will be processed. > Do not require 2nd input for processing, instead use alpha plane from input > stream. > @end table > > +@anchor{prewitt} > @section prewitt > Apply prewitt operator to input video stream. > > @@ -13591,6 +13595,7 @@ trim=end=5,reverse > @end example > @end itemize > > +@anchor{roberts} > @section roberts > Apply roberts cross operator to input video stream. > > @@ -15176,6 +15181,7 @@ asendcmd='5.0 astreamselect map > 1',astreamselect=inputs=2:map=0 > @end example > @end itemize > > +@anchor{sobel} > @section sobel > Apply sobel operator to input video stream. > > @@ -17422,6 +17428,193 @@ pixel format "yuv422p" @var{hsub} is 2 and > @var{vsub} is 1. > > @c man end VIDEO FILTERS > > +@chapter OpenCL Video Filters > +@c man begin OPENCL VIDEO FILTERS > + > +Below is a description of the currently available OpenCL video filters. > + > +To enable compilation of these filters you need to configure FFmpeg with > +@code{--enable-opencl}. > + > +@section avgblur_opencl > + > +Apply average blur filter. > + > +Works like existing @ref{avgblur} filter. > + > +@subsection Example > + > +@itemize > +@item > +Apply average blur filter with sizeX and sizeY set to 3 > +@example > +-i INPUT -filter_complex "hwupload, avgblur_opencl=3, hwdownload" OUTPUT > +@end example > +@end itemize > + > +@section boxblur_opencl > + > +Apply a boxblur algorithm to the input video. > + > +Works like existing @ref{boxblur} filter. > + > +@subsection Examples > + > +@itemize > +@item > +Apply a boxblur filter with the luma, chroma, and alpha radius > +set to 2: > +@example > +-i INPUT -filter_complex "hwupload, > boxblur_opencl=luma_radius=2:luma_power=1, hwdownload" OUTPUT > +-i INPUT -filter_complex "hwupload, boxblur_opencl=2:1, hwdownload" OUTPUT > +@end example > + > +@item > +Set the luma radius to 2, and alpha and chroma radius to 0: > +@example > +-i INPUT -filter_complex "hwupload, boxblur_opencl=2:1:cr=0:ar=0, > hwdownload" OUTPUT > +@end example > + > +@item > +Set the luma and chroma radius to a fraction of the video dimension: > +@example > +-i INPUT -filter_complex "hwupload, > boxblur_opencl=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1, > hwdownload" OUTPUT > +@end example > +@end itemize > + > +@section convolution_opencl > + > +Apply convolution of 3x3, 5x5, 7x7 or horizontal/vertical up to 49 elements. > + > +Works like existing @ref{convolution} filter. > + > +@subsection Examples > + > +@itemize > +@item > +Apply sharpen: > +@example > +-i INPUT -filter_complex "hwupload, convolution_opencl=0 -1 0 -1 5 -1 0 -1 > 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0, > hwdownload" OUTPUT > +@end example > + > +@item > +Apply blur: > +@example > +-i INPUT -filter_complex "hwupload, convolution_opencl=1 1 1 1 1 1 1 1 1:1 1 > 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1/9:1/9:1/9:1/9, > hwdownload" OUTPUT > +@end example > + > +@item > +Apply edge enhance: > +@example > +-i INPUT -filter_complex "hwupload, convolution_opencl=0 0 0 -1 1 0 0 0 0:0 > 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:5:1:1:1:0:128:128:128, > hwdownload" OUTPUT > +@end example > + > +@item > +Apply edge detect: > +@example > +-i INPUT -filter_complex "hwupload, convolution_opencl=0 1 0 1 -4 1 0 1 0:0 > 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:5:5:5:1:0:128:128:128, > hwdownload" OUTPUT > +@end example > + > +@item > +Apply laplacian edge detector which includes diagonals: > +@example > +-i INPUT -filter_complex "hwupload, convolution_opencl=1 1 1 1 -8 1 1 1 1:1 > 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:5:5:5:1:0:128:128:0, > hwdownload" OUTPUT > +@end example > + > +@item > +Apply emboss: > +@example > +-i INPUT -filter_complex "hwupload, convolution_opencl=-2 -1 0 -1 1 1 0 1 > 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2, hwdownload" > OUTPUT > +@end example > +@end itemize > + > +@section overlay_opencl > + > +Overlay one video on top of another. > + > +Works like existing @ref{overlay} filter. > + > +@subsection Example > + > +@itemize > +@item > +Insert a transparent PNG logo in the bottom left corner of the input > +@example > +-i INPUT -i LOGO -filter_complex "[0:v]hwupload[a],[1:v]hwupload[b], > [a][b]overlay_opencl[out],[out]hwdownload" OUTPUT > +@end example > +@end itemize > + > +@section prewitt_opencl > + > +Apply prewitt operator to input video stream. > + > +Works like existing @ref{prewitt} filter. > + > +@subsection Example > + > +@itemize > +@item > +Apply prewitt operator with scale set to 2 and delta set to 10 > +@example > +-i INPUT -filter_complex "hwupload, prewitt_opencl=scale=2:delta=10, > hwdownload" OUTPUT > +@end example > +@end itemize > + > +@section roberts_opencl > +Apply roberts cross operator to input video stream. > + > +Works like existing @ref{roberts} filter. > + > +@subsection Example > + > +@itemize > +@item > +Apply roberts cross operator with scale set to 2 and delta set to 10 > +@example > +-i INPUT -filter_complex "hwupload, roberts_opencl=scale=2:delta=10, > hwdownload" OUTPUT > +@end example > +@end itemize > + > +@section sobel_opencl > + > +Apply sobel operator to input video stream. > + > +Works like existing @ref{sobel} filter. > + > +@subsection Example > + > +@itemize > +@item > +Apply sobel operator with scale set to 2 and delta set to 10 > +@example > +-i INPUT -filter_complex "hwupload, sobel_opencl=scale=2:delta=10, > hwdownload" OUTPUT > +@end example > +@end itemize > + > +@section unsharp_opencl > + > +Sharpen or blur the input video. > + > +Works like existing @ref{unsharp} filter. > + > +@subsection Examples > + > +@itemize > +@item > +Apply strong luma sharpen effect: > +@example > +-i INPUT -filter_complex "hwupload, > unsharp_opencl=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5, hwdownload" > OUTPUT > +@end example > + > +@item > +Apply a strong blur of both luma and chroma parameters: > +@example > +-i INPUT -filter_complex "hwupload, unsharp_opencl=7:7:-2:7:7:-2, > hwdownload" OUTPUT > +@end example > +@end itemize > + > +@c man end OPENCL VIDEO FILTERS > + > @chapter Video Sources > @c man begin VIDEO SOURCES > > -- > 2.7.4 > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
I like this patch, the other thing, is it have any plan to update openCL part like VAAPI (https://trac.ffmpeg.org/wiki/Hardware/VAAPI) in https://trac.ffmpeg.org/wiki/HWAccelIntro, thanks. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel