Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable vaapi rotation feature via call Intel iHD driver
On 29/10/18 01:58, myp...@gmail.com wrote: >> ... lots of other stuff ... > I know Mark have given a openCL rotation filter implement with any > angle support, so I didn't submitted the patch even I have implement > the VA-API rotation filter in last year. I never wrote a standalone filter for it, but the relevant code is in the program_opencl examples (changing it to rotate by some specific angle is trivial). - Mark ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable vaapi rotation feature via call Intel iHD driver
> -Original Message- > From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On Behalf Of > Michael Niedermayer > Sent: Wednesday, October 31, 2018 3:53 AM > To: FFmpeg development discussions and patches > Subject: Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable vaapi > rotation feature via call Intel iHD driver > > On Mon, Oct 29, 2018 at 01:42:55AM +, Zhou, Zachary wrote: > > > > > > > -Original Message- > > > From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On > > > Behalf Of Michael Niedermayer > > > Sent: Saturday, October 27, 2018 5:16 AM > > > To: FFmpeg development discussions and patches > > > > > > Subject: Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable > > > vaapi rotation feature via call Intel iHD driver > > > > > > On Thu, Oct 25, 2018 at 02:52:01PM +0800, Zachary Zhou wrote: > > > > It supports clockwise rotation by 0/90/180/270 degrees defined in > > > > va/va_vpp.h, tested following command line on SKL platform > > > > > > > > dir=0 for 0 degree > > > > dir=1 for 90 degree > > > > dir=2 for 180 degree > > > > dir=3 for 270 degree > > > > > > > > ffmpeg -hwaccel vaapi -vaapi_device /dev/dri/renderD128 > > > > -hwaccel_output_format vaapi -i input.264 -vf "rotation_vaapi=dir=1" > > > > -c:v h264_vaapi output.h264 > > > > > > > > Signed-off-by: Zachary Zhou > > > > --- > > > > configure | 3 + > > > > libavfilter/Makefile | 1 + > > > > libavfilter/allfilters.c | 1 + > > > > libavfilter/vaapi_vpp.h | 1 + > > > > libavfilter/vf_rotate_vaapi.c | 252 > > > > ++ > > > > 5 files changed, 258 insertions(+) create mode 100644 > > > > libavfilter/vf_rotate_vaapi.c > > > > > > still fails to build on 32bit x86 > > > > > > src/libavfilter/vf_rotate_vaapi.c: In function > > > ‘rotation_vaapi_build_filter_params’: > > > src/libavfilter/vf_rotate_vaapi.c:69:23: error: ‘VAProcPipelineCaps’ > > > has no member named ‘rotation_flags’ > > > if (!pipeline_caps.rotation_flags) { > > >^ > > > src/libavfilter/vf_rotate_vaapi.c:95:33: error: ‘VAProcPipelineCaps’ > > > has no member named ‘rotation_flags’ > > > support_flag = pipeline_caps.rotation_flags & > > > ^ > > > src/libavfilter/vf_rotate_vaapi.c: In function > > > ‘rotation_vaapi_filter_frame’: > > > src/libavfilter/vf_rotate_vaapi.c:152:15: error: > > > ‘VAProcPipelineParameterBuffer’ has no member named ‘rotation_state’ > > > params.rotation_state = vpp_ctx->rotation_state; > > >^ > > > make: *** [libavfilter/vf_rotate_vaapi.o] Error 1 > > > make: *** Waiting for unfinished jobs > > > > > > grep VAAPI ffbuild/config.mak > > > !HAVE_VAAPI_DRM=yes > > > !HAVE_VAAPI_X11=yes > > > !HAVE_OPENCL_VAAPI_BEIGNET=yes > > > !HAVE_OPENCL_VAAPI_INTEL_MEDIA=yes > > > !CONFIG_VAAPI_ENCODE_EXAMPLE=yes > > > !CONFIG_VAAPI_TRANSCODE_EXAMPLE=yes > > > !CONFIG_VAAPI=yes > > > !CONFIG_VAAPI_1=yes > > > !CONFIG_VAAPI_ENCODE=yes > > > !CONFIG_H264_VAAPI_ENCODER=yes > > > !CONFIG_HEVC_VAAPI_ENCODER=yes > > > !CONFIG_MJPEG_VAAPI_ENCODER=yes > > > !CONFIG_MPEG2_VAAPI_ENCODER=yes > > > !CONFIG_VP8_VAAPI_ENCODER=yes > > > !CONFIG_VP9_VAAPI_ENCODER=yes > > > !CONFIG_H263_VAAPI_HWACCEL=yes > > > !CONFIG_H264_VAAPI_HWACCEL=yes > > > !CONFIG_HEVC_VAAPI_HWACCEL=yes > > > !CONFIG_MJPEG_VAAPI_HWACCEL=yes > > > !CONFIG_MPEG2_VAAPI_HWACCEL=yes > > > !CONFIG_MPEG4_VAAPI_HWACCEL=yes > > > !CONFIG_VC1_VAAPI_HWACCEL=yes > > > !CONFIG_VP8_VAAPI_HWACCEL=yes > > > !CONFIG_VP9_VAAPI_HWACCEL=yes > > > !CONFIG_WMV3_VAAPI_HWACCEL=yes > > > !CONFIG_DEINTERLACE_VAAPI_FILTER=yes > > > !CONFIG_DENOISE_VAAPI_FILTER=yes > > > !CONFIG_PROCAMP_VAAPI_FILTER=yes > > > !CONFIG_SCALE_VAAPI_FILTER=yes > > > !CONFIG_SHARPNESS_VAAPI_FILTER=yes > > > CONFIG_ROTATION_VAAPI_FILTER=yes > > > > > > [...] > > > > Thanks Michael, Can you share your command line for the build script > configure ? > > Do I need more setting on the configure file ? > >
Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable vaapi rotation feature via call Intel iHD driver
On Mon, Oct 29, 2018 at 01:42:55AM +, Zhou, Zachary wrote: > > > > -Original Message- > > From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On Behalf Of > > Michael Niedermayer > > Sent: Saturday, October 27, 2018 5:16 AM > > To: FFmpeg development discussions and patches > > Subject: Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable vaapi > > rotation feature via call Intel iHD driver > > > > On Thu, Oct 25, 2018 at 02:52:01PM +0800, Zachary Zhou wrote: > > > It supports clockwise rotation by 0/90/180/270 degrees defined in > > > va/va_vpp.h, tested following command line on SKL platform > > > > > > dir=0 for 0 degree > > > dir=1 for 90 degree > > > dir=2 for 180 degree > > > dir=3 for 270 degree > > > > > > ffmpeg -hwaccel vaapi -vaapi_device /dev/dri/renderD128 > > > -hwaccel_output_format vaapi -i input.264 -vf "rotation_vaapi=dir=1" > > > -c:v h264_vaapi output.h264 > > > > > > Signed-off-by: Zachary Zhou > > > --- > > > configure | 3 + > > > libavfilter/Makefile | 1 + > > > libavfilter/allfilters.c | 1 + > > > libavfilter/vaapi_vpp.h | 1 + > > > libavfilter/vf_rotate_vaapi.c | 252 > > > ++ > > > 5 files changed, 258 insertions(+) > > > create mode 100644 libavfilter/vf_rotate_vaapi.c > > > > still fails to build on 32bit x86 > > > > src/libavfilter/vf_rotate_vaapi.c: In function > > ‘rotation_vaapi_build_filter_params’: > > src/libavfilter/vf_rotate_vaapi.c:69:23: error: ‘VAProcPipelineCaps’ has no > > member named ‘rotation_flags’ > > if (!pipeline_caps.rotation_flags) { > >^ > > src/libavfilter/vf_rotate_vaapi.c:95:33: error: ‘VAProcPipelineCaps’ has no > > member named ‘rotation_flags’ > > support_flag = pipeline_caps.rotation_flags & > > ^ > > src/libavfilter/vf_rotate_vaapi.c: In function > > ‘rotation_vaapi_filter_frame’: > > src/libavfilter/vf_rotate_vaapi.c:152:15: error: > > ‘VAProcPipelineParameterBuffer’ has no member named ‘rotation_state’ > > params.rotation_state = vpp_ctx->rotation_state; > >^ > > make: *** [libavfilter/vf_rotate_vaapi.o] Error 1 > > make: *** Waiting for unfinished jobs > > > > grep VAAPI ffbuild/config.mak > > !HAVE_VAAPI_DRM=yes > > !HAVE_VAAPI_X11=yes > > !HAVE_OPENCL_VAAPI_BEIGNET=yes > > !HAVE_OPENCL_VAAPI_INTEL_MEDIA=yes > > !CONFIG_VAAPI_ENCODE_EXAMPLE=yes > > !CONFIG_VAAPI_TRANSCODE_EXAMPLE=yes > > !CONFIG_VAAPI=yes > > !CONFIG_VAAPI_1=yes > > !CONFIG_VAAPI_ENCODE=yes > > !CONFIG_H264_VAAPI_ENCODER=yes > > !CONFIG_HEVC_VAAPI_ENCODER=yes > > !CONFIG_MJPEG_VAAPI_ENCODER=yes > > !CONFIG_MPEG2_VAAPI_ENCODER=yes > > !CONFIG_VP8_VAAPI_ENCODER=yes > > !CONFIG_VP9_VAAPI_ENCODER=yes > > !CONFIG_H263_VAAPI_HWACCEL=yes > > !CONFIG_H264_VAAPI_HWACCEL=yes > > !CONFIG_HEVC_VAAPI_HWACCEL=yes > > !CONFIG_MJPEG_VAAPI_HWACCEL=yes > > !CONFIG_MPEG2_VAAPI_HWACCEL=yes > > !CONFIG_MPEG4_VAAPI_HWACCEL=yes > > !CONFIG_VC1_VAAPI_HWACCEL=yes > > !CONFIG_VP8_VAAPI_HWACCEL=yes > > !CONFIG_VP9_VAAPI_HWACCEL=yes > > !CONFIG_WMV3_VAAPI_HWACCEL=yes > > !CONFIG_DEINTERLACE_VAAPI_FILTER=yes > > !CONFIG_DENOISE_VAAPI_FILTER=yes > > !CONFIG_PROCAMP_VAAPI_FILTER=yes > > !CONFIG_SCALE_VAAPI_FILTER=yes > > !CONFIG_SHARPNESS_VAAPI_FILTER=yes > > CONFIG_ROTATION_VAAPI_FILTER=yes > > > > [...] > > Thanks Michael, Can you share your command line for the build script > configure ? > Do I need more setting on the configure file ? i simplified it a bit, this can still reproduce it: make distclean ; ../configure --cc='ccache gcc -m32' && make -j12 src/libavfilter/vf_rotate_vaapi.c: In function ‘rotation_vaapi_build_filter_params’: src/libavfilter/vf_rotate_vaapi.c:69:23: error: ‘VAProcPipelineCaps’ has no member named ‘rotation_flags’ if (!pipeline_caps.rotation_flags) { ^ src/libavfilter/vf_rotate_vaapi.c:95:33: error: ‘VAProcPipelineCaps’ has no member named ‘rotation_flags’ support_flag = pipeline_caps.rotation_flags & ^ src/libavfilter/vf_rotate_vaapi.c: In function ‘rotation_vaapi_filter_frame’: src/libavfilter/vf_rotate_vaapi.c:152:15: error: ‘VAProcPipelineParameterBuffer’ has no member named ‘rotation_state’ params.rotation_state = vpp_ctx->rotation_state; ^ make: *** [libavfilter/vf_rotate_vaapi.o] Error 1 make: *** Waiting for unfinished jobs [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB The worst form of inequality is to try to make unequal things equal. -- Aristotle signature.asc Description: PGP signature ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable vaapi rotation feature via call Intel iHD driver
> -Original Message- > From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On Behalf Of > myp...@gmail.com > Sent: Monday, October 29, 2018 9:58 AM > To: FFmpeg development discussions and patches > Subject: Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable vaapi > rotation feature via call Intel iHD driver > > On Fri, Oct 26, 2018 at 11:26 PM Paul B Mahol wrote: > > > > On 10/26/18, Zhou, Zachary wrote: > > > > > > > > >> -Original Message- > > >> From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On > > >> Behalf Of Rostislav Pehlivanov > > >> Sent: Friday, October 26, 2018 9:02 PM > > >> To: FFmpeg development discussions and patches > > >> > > >> Subject: Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable > > >> vaapi rotation feature via call Intel iHD driver > > >> > > >> On Fri, 26 Oct 2018 at 04:10, Zhou, Zachary > > >> > > >> wrote: > > >> > > >> > > > >> > > > >> > > -----Original Message- > > >> > > From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On > > >> > > Behalf Of sean darcy > > >> > > Sent: Thursday, October 25, 2018 11:51 PM > > >> > > To: ffmpeg-devel@ffmpeg.org > > >> > > Subject: Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: > > >> > > enable vaapi rotation feature via call Intel iHD driver > > >> > > > > >> > > On 10/25/18 2:52 AM, Zachary Zhou wrote: > > >> > > > It supports clockwise rotation by 0/90/180/270 degrees > > >> > > > defined in va/va_vpp.h, tested following command line on SKL > > >> > > > platform > > >> > > > > > >> > > > dir=0 for 0 degree > > >> > > > dir=1 for 90 degree > > >> > > > dir=2 for 180 degree > > >> > > > dir=3 for 270 degree > > >> > > > > > >> > > > ffmpeg -hwaccel vaapi -vaapi_device /dev/dri/renderD128 > > >> > > > -hwaccel_output_format vaapi -i input.264 -vf > > >> > > > "rotation_vaapi=dir=1" > > >> > > > -c:v h264_vaapi output.h264 > > >> > > > > > >> > > > Signed-off-by: Zachary Zhou > > >> > > > --- > > >> > > > configure | 3 + > > >> > > > libavfilter/Makefile | 1 + > > >> > > > libavfilter/allfilters.c | 1 + > > >> > > > libavfilter/vaapi_vpp.h | 1 + > > >> > > > libavfilter/vf_rotate_vaapi.c | 252 > > >> > ++ > > >> > > > 5 files changed, 258 insertions(+) > > >> > > > create mode 100644 libavfilter/vf_rotate_vaapi.c > > >> > > > > > >> > > > diff --git a/configure b/configure index > > >> > > > 85d5dd5962..33aced3d78 > > >> > > > 100755 > > >> > > > --- a/configure > > >> > > > +++ b/configure > > >> > > > @@ -6390,6 +6390,9 @@ if enabled vaapi; then > > >> > > > fi > > >> > > > > > >> > > > check_cpp_condition vaapi_1 "va/va.h" > > >> > > > "VA_CHECK_VERSION(1, 0, > > >> 0)" > > >> > > > +if ! check_struct "va/va.h" "struct _VAProcPipelineCaps" > > >> > rotation_flags; > > >> > > then > > >> > > > +disable rotation_vaapi_filter > > >> > > > +fi > > >> > > > fi > > >> > > > > > >> > > > if enabled_all opencl libdrm ; then diff --git > > >> > > > a/libavfilter/Makefile b/libavfilter/Makefile index > > >> > > > 108a2f87d7..534650364a 100644 > > >> > > > --- a/libavfilter/Makefile > > >> > > > +++ b/libavfilter/Makefile > > >> > > > @@ -349,6 +349,7 @@ OBJS-$(CONFIG_SETRANGE_FILTER) > += > > >> > > vf_setparams.o > > >> > > > OBJS-$(CONFIG_SETSAR_FILTER) += vf_aspect.o > > >> > > > OBJS-$(CONFIG_SETT
Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable vaapi rotation feature via call Intel iHD driver
On Fri, Oct 26, 2018 at 11:26 PM Paul B Mahol wrote: > > On 10/26/18, Zhou, Zachary wrote: > > > > > >> -Original Message- > >> From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On Behalf Of > >> Rostislav Pehlivanov > >> Sent: Friday, October 26, 2018 9:02 PM > >> To: FFmpeg development discussions and patches > >> Subject: Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable vaapi > >> rotation feature via call Intel iHD driver > >> > >> On Fri, 26 Oct 2018 at 04:10, Zhou, Zachary > >> wrote: > >> > >> > > >> > > >> > > -Original Message- > >> > > From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On > >> > > Behalf Of sean darcy > >> > > Sent: Thursday, October 25, 2018 11:51 PM > >> > > To: ffmpeg-devel@ffmpeg.org > >> > > Subject: Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable > >> > > vaapi rotation feature via call Intel iHD driver > >> > > > >> > > On 10/25/18 2:52 AM, Zachary Zhou wrote: > >> > > > It supports clockwise rotation by 0/90/180/270 degrees defined in > >> > > > va/va_vpp.h, tested following command line on SKL platform > >> > > > > >> > > > dir=0 for 0 degree > >> > > > dir=1 for 90 degree > >> > > > dir=2 for 180 degree > >> > > > dir=3 for 270 degree > >> > > > > >> > > > ffmpeg -hwaccel vaapi -vaapi_device /dev/dri/renderD128 > >> > > > -hwaccel_output_format vaapi -i input.264 -vf > >> > > > "rotation_vaapi=dir=1" > >> > > > -c:v h264_vaapi output.h264 > >> > > > > >> > > > Signed-off-by: Zachary Zhou > >> > > > --- > >> > > > configure | 3 + > >> > > > libavfilter/Makefile | 1 + > >> > > > libavfilter/allfilters.c | 1 + > >> > > > libavfilter/vaapi_vpp.h | 1 + > >> > > > libavfilter/vf_rotate_vaapi.c | 252 > >> > ++ > >> > > > 5 files changed, 258 insertions(+) > >> > > > create mode 100644 libavfilter/vf_rotate_vaapi.c > >> > > > > >> > > > diff --git a/configure b/configure index 85d5dd5962..33aced3d78 > >> > > > 100755 > >> > > > --- a/configure > >> > > > +++ b/configure > >> > > > @@ -6390,6 +6390,9 @@ if enabled vaapi; then > >> > > > fi > >> > > > > >> > > > check_cpp_condition vaapi_1 "va/va.h" "VA_CHECK_VERSION(1, 0, > >> 0)" > >> > > > +if ! check_struct "va/va.h" "struct _VAProcPipelineCaps" > >> > rotation_flags; > >> > > then > >> > > > +disable rotation_vaapi_filter > >> > > > +fi > >> > > > fi > >> > > > > >> > > > if enabled_all opencl libdrm ; then diff --git > >> > > > a/libavfilter/Makefile b/libavfilter/Makefile index > >> > > > 108a2f87d7..534650364a 100644 > >> > > > --- a/libavfilter/Makefile > >> > > > +++ b/libavfilter/Makefile > >> > > > @@ -349,6 +349,7 @@ OBJS-$(CONFIG_SETRANGE_FILTER) += > >> > > vf_setparams.o > >> > > > OBJS-$(CONFIG_SETSAR_FILTER) += vf_aspect.o > >> > > > OBJS-$(CONFIG_SETTB_FILTER) += settb.o > >> > > > OBJS-$(CONFIG_SHARPNESS_VAAPI_FILTER)+= vf_misc_vaapi.o > >> > > vaapi_vpp.o > >> > > > +OBJS-$(CONFIG_ROTATION_VAAPI_FILTER) += vf_rotate_vaapi.o > >> > > vaapi_vpp.o > >> > > > OBJS-$(CONFIG_SHOWINFO_FILTER) += vf_showinfo.o > >> > > > OBJS-$(CONFIG_SHOWPALETTE_FILTER)+= vf_showpalette.o > >> > > > OBJS-$(CONFIG_SHUFFLEFRAMES_FILTER) += > >> > > > vf_shuffleframes.o > >> > > > diff --git a/libavfilter/allfilters.c b/libavfilter/allfilters.c > >> > > > index > >> > > > 557590850b..4b90a7f440 100644 > >> > > > --- a/libavfilter/allfilters.c > >> > > > +++ b/lib
Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable vaapi rotation feature via call Intel iHD driver
> -Original Message- > From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On Behalf Of > sean darcy > Sent: Saturday, October 27, 2018 3:07 AM > To: ffmpeg-devel@ffmpeg.org > Subject: Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable vaapi > rotation feature via call Intel iHD driver > > On 10/26/18 11:18 AM, Paul B Mahol wrote: > > On 10/26/18, Zhou, Zachary wrote: > >> > >> > >>> -Original Message- > >>> From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On > >>> Behalf Of Rostislav Pehlivanov > >>> Sent: Friday, October 26, 2018 9:02 PM > >>> To: FFmpeg development discussions and patches > >>> > >>> Subject: Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable > >>> vaapi rotation feature via call Intel iHD driver > >>> > >>> On Fri, 26 Oct 2018 at 04:10, Zhou, Zachary > >>> wrote: > >>> > >>>> > >>>> > >>>>> -Original Message- > >>>>> From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On > >>>>> Behalf Of sean darcy > >>>>> Sent: Thursday, October 25, 2018 11:51 PM > >>>>> To: ffmpeg-devel@ffmpeg.org > >>>>> Subject: Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable > >>>>> vaapi rotation feature via call Intel iHD driver > >>>>> > >>>>> On 10/25/18 2:52 AM, Zachary Zhou wrote: > >>>>>> It supports clockwise rotation by 0/90/180/270 degrees defined in > >>>>>> va/va_vpp.h, tested following command line on SKL platform > >>>>>> > >>>>>> dir=0 for 0 degree > >>>>>> dir=1 for 90 degree > >>>>>> dir=2 for 180 degree > >>>>>> dir=3 for 270 degree > >>>>>> > >>>>>> ffmpeg -hwaccel vaapi -vaapi_device /dev/dri/renderD128 > >>>>>> -hwaccel_output_format vaapi -i input.264 -vf > >>>>>> "rotation_vaapi=dir=1" > >>>>>> -c:v h264_vaapi output.h264 > >>>>>> > >>>>>> Signed-off-by: Zachary Zhou > >>>>>> --- > >>>>>>configure | 3 + > >>>>>>libavfilter/Makefile | 1 + > >>>>>>libavfilter/allfilters.c | 1 + > >>>>>>libavfilter/vaapi_vpp.h | 1 + > >>>>>>libavfilter/vf_rotate_vaapi.c | 252 > >>>> ++ > >>>>>>5 files changed, 258 insertions(+) > >>>>>>create mode 100644 libavfilter/vf_rotate_vaapi.c > >>>>>> > >>>>>> diff --git a/configure b/configure index 85d5dd5962..33aced3d78 > >>>>>> 100755 > >>>>>> --- a/configure > >>>>>> +++ b/configure > >>>>>> @@ -6390,6 +6390,9 @@ if enabled vaapi; then > >>>>>>fi > >>>>>> > >>>>>>check_cpp_condition vaapi_1 "va/va.h" "VA_CHECK_VERSION(1, > >>>>>> 0, > >>> 0)" > >>>>>> +if ! check_struct "va/va.h" "struct _VAProcPipelineCaps" > >>>> rotation_flags; > >>>>> then > >>>>>> +disable rotation_vaapi_filter > >>>>>> +fi > >>>>>>fi > >>>>>> > >>>>>>if enabled_all opencl libdrm ; then diff --git > >>>>>> a/libavfilter/Makefile b/libavfilter/Makefile index > >>>>>> 108a2f87d7..534650364a 100644 > >>>>>> --- a/libavfilter/Makefile > >>>>>> +++ b/libavfilter/Makefile > >>>>>> @@ -349,6 +349,7 @@ OBJS-$(CONFIG_SETRANGE_FILTER) += > >>>>> vf_setparams.o > >>>>>>OBJS-$(CONFIG_SETSAR_FILTER) += vf_aspect.o > >>>>>>OBJS-$(CONFIG_SETTB_FILTER) += settb.o > >>>>>>OBJS-$(CONFIG_SHARPNESS_VAAPI_FILTER)+= vf_misc_vaapi.o > >>>>> vaapi_vpp.o > >>>>>> +OBJS-$(CONFIG_ROTATION_VAAPI_FILTER) += vf_rotate_vaapi.o > >>>>> vaapi_vpp.o > >>>>>>OBJS-$(CONFIG_SHOWINFO_FILTER)
Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable vaapi rotation feature via call Intel iHD driver
> -Original Message- > From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On Behalf Of > Michael Niedermayer > Sent: Saturday, October 27, 2018 5:16 AM > To: FFmpeg development discussions and patches > Subject: Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable vaapi > rotation feature via call Intel iHD driver > > On Thu, Oct 25, 2018 at 02:52:01PM +0800, Zachary Zhou wrote: > > It supports clockwise rotation by 0/90/180/270 degrees defined in > > va/va_vpp.h, tested following command line on SKL platform > > > > dir=0 for 0 degree > > dir=1 for 90 degree > > dir=2 for 180 degree > > dir=3 for 270 degree > > > > ffmpeg -hwaccel vaapi -vaapi_device /dev/dri/renderD128 > > -hwaccel_output_format vaapi -i input.264 -vf "rotation_vaapi=dir=1" > > -c:v h264_vaapi output.h264 > > > > Signed-off-by: Zachary Zhou > > --- > > configure | 3 + > > libavfilter/Makefile | 1 + > > libavfilter/allfilters.c | 1 + > > libavfilter/vaapi_vpp.h | 1 + > > libavfilter/vf_rotate_vaapi.c | 252 > > ++ > > 5 files changed, 258 insertions(+) > > create mode 100644 libavfilter/vf_rotate_vaapi.c > > still fails to build on 32bit x86 > > src/libavfilter/vf_rotate_vaapi.c: In function > ‘rotation_vaapi_build_filter_params’: > src/libavfilter/vf_rotate_vaapi.c:69:23: error: ‘VAProcPipelineCaps’ has no > member named ‘rotation_flags’ > if (!pipeline_caps.rotation_flags) { >^ > src/libavfilter/vf_rotate_vaapi.c:95:33: error: ‘VAProcPipelineCaps’ has no > member named ‘rotation_flags’ > support_flag = pipeline_caps.rotation_flags & > ^ > src/libavfilter/vf_rotate_vaapi.c: In function ‘rotation_vaapi_filter_frame’: > src/libavfilter/vf_rotate_vaapi.c:152:15: error: > ‘VAProcPipelineParameterBuffer’ has no member named ‘rotation_state’ > params.rotation_state = vpp_ctx->rotation_state; >^ > make: *** [libavfilter/vf_rotate_vaapi.o] Error 1 > make: *** Waiting for unfinished jobs > > grep VAAPI ffbuild/config.mak > !HAVE_VAAPI_DRM=yes > !HAVE_VAAPI_X11=yes > !HAVE_OPENCL_VAAPI_BEIGNET=yes > !HAVE_OPENCL_VAAPI_INTEL_MEDIA=yes > !CONFIG_VAAPI_ENCODE_EXAMPLE=yes > !CONFIG_VAAPI_TRANSCODE_EXAMPLE=yes > !CONFIG_VAAPI=yes > !CONFIG_VAAPI_1=yes > !CONFIG_VAAPI_ENCODE=yes > !CONFIG_H264_VAAPI_ENCODER=yes > !CONFIG_HEVC_VAAPI_ENCODER=yes > !CONFIG_MJPEG_VAAPI_ENCODER=yes > !CONFIG_MPEG2_VAAPI_ENCODER=yes > !CONFIG_VP8_VAAPI_ENCODER=yes > !CONFIG_VP9_VAAPI_ENCODER=yes > !CONFIG_H263_VAAPI_HWACCEL=yes > !CONFIG_H264_VAAPI_HWACCEL=yes > !CONFIG_HEVC_VAAPI_HWACCEL=yes > !CONFIG_MJPEG_VAAPI_HWACCEL=yes > !CONFIG_MPEG2_VAAPI_HWACCEL=yes > !CONFIG_MPEG4_VAAPI_HWACCEL=yes > !CONFIG_VC1_VAAPI_HWACCEL=yes > !CONFIG_VP8_VAAPI_HWACCEL=yes > !CONFIG_VP9_VAAPI_HWACCEL=yes > !CONFIG_WMV3_VAAPI_HWACCEL=yes > !CONFIG_DEINTERLACE_VAAPI_FILTER=yes > !CONFIG_DENOISE_VAAPI_FILTER=yes > !CONFIG_PROCAMP_VAAPI_FILTER=yes > !CONFIG_SCALE_VAAPI_FILTER=yes > !CONFIG_SHARPNESS_VAAPI_FILTER=yes > CONFIG_ROTATION_VAAPI_FILTER=yes > > [...] Thanks Michael, Can you share your command line for the build script configure ? Do I need more setting on the configure file ? > -- > Michael GnuPG fingerprint: > 9FF2128B147EF6730BADF133611EC787040B0FAB > > If you drop bombs on a foreign country and kill a hundred thousand innocent > people, expect your government to call the consequence "unprovoked > inhuman terrorist attacks" and use it to justify dropping more bombs and > killing more people. The technology changed, the idea is old. ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable vaapi rotation feature via call Intel iHD driver
On 10/26/18 11:18 AM, Paul B Mahol wrote: On 10/26/18, Zhou, Zachary wrote: -Original Message- From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On Behalf Of Rostislav Pehlivanov Sent: Friday, October 26, 2018 9:02 PM To: FFmpeg development discussions and patches Subject: Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable vaapi rotation feature via call Intel iHD driver On Fri, 26 Oct 2018 at 04:10, Zhou, Zachary wrote: -Original Message- From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On Behalf Of sean darcy Sent: Thursday, October 25, 2018 11:51 PM To: ffmpeg-devel@ffmpeg.org Subject: Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable vaapi rotation feature via call Intel iHD driver On 10/25/18 2:52 AM, Zachary Zhou wrote: It supports clockwise rotation by 0/90/180/270 degrees defined in va/va_vpp.h, tested following command line on SKL platform dir=0 for 0 degree dir=1 for 90 degree dir=2 for 180 degree dir=3 for 270 degree ffmpeg -hwaccel vaapi -vaapi_device /dev/dri/renderD128 -hwaccel_output_format vaapi -i input.264 -vf "rotation_vaapi=dir=1" -c:v h264_vaapi output.h264 Signed-off-by: Zachary Zhou --- configure | 3 + libavfilter/Makefile | 1 + libavfilter/allfilters.c | 1 + libavfilter/vaapi_vpp.h | 1 + libavfilter/vf_rotate_vaapi.c | 252 ++ 5 files changed, 258 insertions(+) create mode 100644 libavfilter/vf_rotate_vaapi.c diff --git a/configure b/configure index 85d5dd5962..33aced3d78 100755 --- a/configure +++ b/configure @@ -6390,6 +6390,9 @@ if enabled vaapi; then fi check_cpp_condition vaapi_1 "va/va.h" "VA_CHECK_VERSION(1, 0, 0)" +if ! check_struct "va/va.h" "struct _VAProcPipelineCaps" rotation_flags; then +disable rotation_vaapi_filter +fi fi if enabled_all opencl libdrm ; then diff --git a/libavfilter/Makefile b/libavfilter/Makefile index 108a2f87d7..534650364a 100644 --- a/libavfilter/Makefile +++ b/libavfilter/Makefile @@ -349,6 +349,7 @@ OBJS-$(CONFIG_SETRANGE_FILTER) += vf_setparams.o OBJS-$(CONFIG_SETSAR_FILTER) += vf_aspect.o OBJS-$(CONFIG_SETTB_FILTER) += settb.o OBJS-$(CONFIG_SHARPNESS_VAAPI_FILTER)+= vf_misc_vaapi.o vaapi_vpp.o +OBJS-$(CONFIG_ROTATION_VAAPI_FILTER) += vf_rotate_vaapi.o vaapi_vpp.o OBJS-$(CONFIG_SHOWINFO_FILTER) += vf_showinfo.o OBJS-$(CONFIG_SHOWPALETTE_FILTER)+= vf_showpalette.o OBJS-$(CONFIG_SHUFFLEFRAMES_FILTER) += vf_shuffleframes.o diff --git a/libavfilter/allfilters.c b/libavfilter/allfilters.c index 557590850b..4b90a7f440 100644 --- a/libavfilter/allfilters.c +++ b/libavfilter/allfilters.c @@ -333,6 +333,7 @@ extern AVFilter ff_vf_setrange; extern AVFilter ff_vf_setsar; extern AVFilter ff_vf_settb; extern AVFilter ff_vf_sharpness_vaapi; +extern AVFilter ff_vf_rotation_vaapi; extern AVFilter ff_vf_showinfo; extern AVFilter ff_vf_showpalette; extern AVFilter ff_vf_shuffleframes; diff --git a/libavfilter/vaapi_vpp.h b/libavfilter/vaapi_vpp.h index 0bc31018d4..cfe19b689f 100644 --- a/libavfilter/vaapi_vpp.h +++ b/libavfilter/vaapi_vpp.h @@ -44,6 +44,7 @@ typedef struct VAAPIVPPContext { int output_width; // computed width int output_height; // computed height +int rotation_state; VABufferID filter_buffers[VAProcFilterCount]; intnb_filter_buffers; diff --git a/libavfilter/vf_rotate_vaapi.c b/libavfilter/vf_rotate_vaapi.c new file mode 100644 index 00..34c270e9c7 --- /dev/null +++ b/libavfilter/vf_rotate_vaapi.c @@ -0,0 +1,252 @@ +/* + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General +Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA */ #include + +#include "libavutil/avassert.h" +#include "libavutil/mem.h" +#include "libavutil/opt.h" +#include "libavutil/pixdesc.h" + +#include "avfilter.h" +#include "formats.h" +#include "internal.h" +#include "vaapi_vpp.h" + +// Rotation angle values +enum RotationAngle { +ROTATION_0 = 0, +ROTATION
Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable vaapi rotation feature via call Intel iHD driver
On 10/26/18, Zhou, Zachary wrote: > > >> -Original Message- >> From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On Behalf Of >> Rostislav Pehlivanov >> Sent: Friday, October 26, 2018 9:02 PM >> To: FFmpeg development discussions and patches >> Subject: Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable vaapi >> rotation feature via call Intel iHD driver >> >> On Fri, 26 Oct 2018 at 04:10, Zhou, Zachary >> wrote: >> >> > >> > >> > > -Original Message- >> > > From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On >> > > Behalf Of sean darcy >> > > Sent: Thursday, October 25, 2018 11:51 PM >> > > To: ffmpeg-devel@ffmpeg.org >> > > Subject: Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable >> > > vaapi rotation feature via call Intel iHD driver >> > > >> > > On 10/25/18 2:52 AM, Zachary Zhou wrote: >> > > > It supports clockwise rotation by 0/90/180/270 degrees defined in >> > > > va/va_vpp.h, tested following command line on SKL platform >> > > > >> > > > dir=0 for 0 degree >> > > > dir=1 for 90 degree >> > > > dir=2 for 180 degree >> > > > dir=3 for 270 degree >> > > > >> > > > ffmpeg -hwaccel vaapi -vaapi_device /dev/dri/renderD128 >> > > > -hwaccel_output_format vaapi -i input.264 -vf >> > > > "rotation_vaapi=dir=1" >> > > > -c:v h264_vaapi output.h264 >> > > > >> > > > Signed-off-by: Zachary Zhou >> > > > --- >> > > > configure | 3 + >> > > > libavfilter/Makefile | 1 + >> > > > libavfilter/allfilters.c | 1 + >> > > > libavfilter/vaapi_vpp.h | 1 + >> > > > libavfilter/vf_rotate_vaapi.c | 252 >> > ++ >> > > > 5 files changed, 258 insertions(+) >> > > > create mode 100644 libavfilter/vf_rotate_vaapi.c >> > > > >> > > > diff --git a/configure b/configure index 85d5dd5962..33aced3d78 >> > > > 100755 >> > > > --- a/configure >> > > > +++ b/configure >> > > > @@ -6390,6 +6390,9 @@ if enabled vaapi; then >> > > > fi >> > > > >> > > > check_cpp_condition vaapi_1 "va/va.h" "VA_CHECK_VERSION(1, 0, >> 0)" >> > > > +if ! check_struct "va/va.h" "struct _VAProcPipelineCaps" >> > rotation_flags; >> > > then >> > > > +disable rotation_vaapi_filter >> > > > +fi >> > > > fi >> > > > >> > > > if enabled_all opencl libdrm ; then diff --git >> > > > a/libavfilter/Makefile b/libavfilter/Makefile index >> > > > 108a2f87d7..534650364a 100644 >> > > > --- a/libavfilter/Makefile >> > > > +++ b/libavfilter/Makefile >> > > > @@ -349,6 +349,7 @@ OBJS-$(CONFIG_SETRANGE_FILTER) += >> > > vf_setparams.o >> > > > OBJS-$(CONFIG_SETSAR_FILTER) += vf_aspect.o >> > > > OBJS-$(CONFIG_SETTB_FILTER) += settb.o >> > > > OBJS-$(CONFIG_SHARPNESS_VAAPI_FILTER)+= vf_misc_vaapi.o >> > > vaapi_vpp.o >> > > > +OBJS-$(CONFIG_ROTATION_VAAPI_FILTER) += vf_rotate_vaapi.o >> > > vaapi_vpp.o >> > > > OBJS-$(CONFIG_SHOWINFO_FILTER) += vf_showinfo.o >> > > > OBJS-$(CONFIG_SHOWPALETTE_FILTER)+= vf_showpalette.o >> > > > OBJS-$(CONFIG_SHUFFLEFRAMES_FILTER) += >> > > > vf_shuffleframes.o >> > > > diff --git a/libavfilter/allfilters.c b/libavfilter/allfilters.c >> > > > index >> > > > 557590850b..4b90a7f440 100644 >> > > > --- a/libavfilter/allfilters.c >> > > > +++ b/libavfilter/allfilters.c >> > > > @@ -333,6 +333,7 @@ extern AVFilter ff_vf_setrange; >> > > > extern AVFilter ff_vf_setsar; >> > > > extern AVFilter ff_vf_settb; >> > > > extern AVFilter ff_vf_sharpness_vaapi; >> > > > +extern AVFilter ff_vf_rotation_vaapi; >> > > > extern AVFilter ff_vf_showinfo; >> > > > extern AVFilter ff_vf_showpalette; >> > > > extern AV
Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable vaapi rotation feature via call Intel iHD driver
> -Original Message- > From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On Behalf Of > Rostislav Pehlivanov > Sent: Friday, October 26, 2018 9:02 PM > To: FFmpeg development discussions and patches > Subject: Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable vaapi > rotation feature via call Intel iHD driver > > On Fri, 26 Oct 2018 at 04:10, Zhou, Zachary wrote: > > > > > > > > -Original Message- > > > From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On > > > Behalf Of sean darcy > > > Sent: Thursday, October 25, 2018 11:51 PM > > > To: ffmpeg-devel@ffmpeg.org > > > Subject: Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable > > > vaapi rotation feature via call Intel iHD driver > > > > > > On 10/25/18 2:52 AM, Zachary Zhou wrote: > > > > It supports clockwise rotation by 0/90/180/270 degrees defined in > > > > va/va_vpp.h, tested following command line on SKL platform > > > > > > > > dir=0 for 0 degree > > > > dir=1 for 90 degree > > > > dir=2 for 180 degree > > > > dir=3 for 270 degree > > > > > > > > ffmpeg -hwaccel vaapi -vaapi_device /dev/dri/renderD128 > > > > -hwaccel_output_format vaapi -i input.264 -vf "rotation_vaapi=dir=1" > > > > -c:v h264_vaapi output.h264 > > > > > > > > Signed-off-by: Zachary Zhou > > > > --- > > > > configure | 3 + > > > > libavfilter/Makefile | 1 + > > > > libavfilter/allfilters.c | 1 + > > > > libavfilter/vaapi_vpp.h | 1 + > > > > libavfilter/vf_rotate_vaapi.c | 252 > > ++ > > > > 5 files changed, 258 insertions(+) > > > > create mode 100644 libavfilter/vf_rotate_vaapi.c > > > > > > > > diff --git a/configure b/configure index 85d5dd5962..33aced3d78 > > > > 100755 > > > > --- a/configure > > > > +++ b/configure > > > > @@ -6390,6 +6390,9 @@ if enabled vaapi; then > > > > fi > > > > > > > > check_cpp_condition vaapi_1 "va/va.h" "VA_CHECK_VERSION(1, 0, > 0)" > > > > +if ! check_struct "va/va.h" "struct _VAProcPipelineCaps" > > rotation_flags; > > > then > > > > +disable rotation_vaapi_filter > > > > +fi > > > > fi > > > > > > > > if enabled_all opencl libdrm ; then diff --git > > > > a/libavfilter/Makefile b/libavfilter/Makefile index > > > > 108a2f87d7..534650364a 100644 > > > > --- a/libavfilter/Makefile > > > > +++ b/libavfilter/Makefile > > > > @@ -349,6 +349,7 @@ OBJS-$(CONFIG_SETRANGE_FILTER) += > > > vf_setparams.o > > > > OBJS-$(CONFIG_SETSAR_FILTER) += vf_aspect.o > > > > OBJS-$(CONFIG_SETTB_FILTER) += settb.o > > > > OBJS-$(CONFIG_SHARPNESS_VAAPI_FILTER)+= vf_misc_vaapi.o > > > vaapi_vpp.o > > > > +OBJS-$(CONFIG_ROTATION_VAAPI_FILTER) += vf_rotate_vaapi.o > > > vaapi_vpp.o > > > > OBJS-$(CONFIG_SHOWINFO_FILTER) += vf_showinfo.o > > > > OBJS-$(CONFIG_SHOWPALETTE_FILTER)+= vf_showpalette.o > > > > OBJS-$(CONFIG_SHUFFLEFRAMES_FILTER) += vf_shuffleframes.o > > > > diff --git a/libavfilter/allfilters.c b/libavfilter/allfilters.c > > > > index > > > > 557590850b..4b90a7f440 100644 > > > > --- a/libavfilter/allfilters.c > > > > +++ b/libavfilter/allfilters.c > > > > @@ -333,6 +333,7 @@ extern AVFilter ff_vf_setrange; > > > > extern AVFilter ff_vf_setsar; > > > > extern AVFilter ff_vf_settb; > > > > extern AVFilter ff_vf_sharpness_vaapi; > > > > +extern AVFilter ff_vf_rotation_vaapi; > > > > extern AVFilter ff_vf_showinfo; > > > > extern AVFilter ff_vf_showpalette; > > > > extern AVFilter ff_vf_shuffleframes; diff --git > > > > a/libavfilter/vaapi_vpp.h b/libavfilter/vaapi_vpp.h index > > > > 0bc31018d4..cfe19b689f 100644 > > > > --- a/libavfilter/vaapi_vpp.h > > > > +++ b/libavfilter/vaapi_vpp.h > > > > @@ -44,6 +44,7 @@ typedef struct VAAPIVPPContext { > > > > int output_width; // computed width > > > > int output_height; // c
Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable vaapi rotation feature via call Intel iHD driver
On Fri, 26 Oct 2018 at 04:10, Zhou, Zachary wrote: > > > > -Original Message- > > From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On Behalf Of > > sean darcy > > Sent: Thursday, October 25, 2018 11:51 PM > > To: ffmpeg-devel@ffmpeg.org > > Subject: Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable vaapi > > rotation feature via call Intel iHD driver > > > > On 10/25/18 2:52 AM, Zachary Zhou wrote: > > > It supports clockwise rotation by 0/90/180/270 degrees defined in > > > va/va_vpp.h, tested following command line on SKL platform > > > > > > dir=0 for 0 degree > > > dir=1 for 90 degree > > > dir=2 for 180 degree > > > dir=3 for 270 degree > > > > > > ffmpeg -hwaccel vaapi -vaapi_device /dev/dri/renderD128 > > > -hwaccel_output_format vaapi -i input.264 -vf "rotation_vaapi=dir=1" > > > -c:v h264_vaapi output.h264 > > > > > > Signed-off-by: Zachary Zhou > > > --- > > > configure | 3 + > > > libavfilter/Makefile | 1 + > > > libavfilter/allfilters.c | 1 + > > > libavfilter/vaapi_vpp.h | 1 + > > > libavfilter/vf_rotate_vaapi.c | 252 > ++ > > > 5 files changed, 258 insertions(+) > > > create mode 100644 libavfilter/vf_rotate_vaapi.c > > > > > > diff --git a/configure b/configure > > > index 85d5dd5962..33aced3d78 100755 > > > --- a/configure > > > +++ b/configure > > > @@ -6390,6 +6390,9 @@ if enabled vaapi; then > > > fi > > > > > > check_cpp_condition vaapi_1 "va/va.h" "VA_CHECK_VERSION(1, 0, 0)" > > > +if ! check_struct "va/va.h" "struct _VAProcPipelineCaps" > rotation_flags; > > then > > > +disable rotation_vaapi_filter > > > +fi > > > fi > > > > > > if enabled_all opencl libdrm ; then > > > diff --git a/libavfilter/Makefile b/libavfilter/Makefile index > > > 108a2f87d7..534650364a 100644 > > > --- a/libavfilter/Makefile > > > +++ b/libavfilter/Makefile > > > @@ -349,6 +349,7 @@ OBJS-$(CONFIG_SETRANGE_FILTER) += > > vf_setparams.o > > > OBJS-$(CONFIG_SETSAR_FILTER) += vf_aspect.o > > > OBJS-$(CONFIG_SETTB_FILTER) += settb.o > > > OBJS-$(CONFIG_SHARPNESS_VAAPI_FILTER)+= vf_misc_vaapi.o > > vaapi_vpp.o > > > +OBJS-$(CONFIG_ROTATION_VAAPI_FILTER) += vf_rotate_vaapi.o > > vaapi_vpp.o > > > OBJS-$(CONFIG_SHOWINFO_FILTER) += vf_showinfo.o > > > OBJS-$(CONFIG_SHOWPALETTE_FILTER)+= vf_showpalette.o > > > OBJS-$(CONFIG_SHUFFLEFRAMES_FILTER) += vf_shuffleframes.o > > > diff --git a/libavfilter/allfilters.c b/libavfilter/allfilters.c index > > > 557590850b..4b90a7f440 100644 > > > --- a/libavfilter/allfilters.c > > > +++ b/libavfilter/allfilters.c > > > @@ -333,6 +333,7 @@ extern AVFilter ff_vf_setrange; > > > extern AVFilter ff_vf_setsar; > > > extern AVFilter ff_vf_settb; > > > extern AVFilter ff_vf_sharpness_vaapi; > > > +extern AVFilter ff_vf_rotation_vaapi; > > > extern AVFilter ff_vf_showinfo; > > > extern AVFilter ff_vf_showpalette; > > > extern AVFilter ff_vf_shuffleframes; diff --git > > > a/libavfilter/vaapi_vpp.h b/libavfilter/vaapi_vpp.h index > > > 0bc31018d4..cfe19b689f 100644 > > > --- a/libavfilter/vaapi_vpp.h > > > +++ b/libavfilter/vaapi_vpp.h > > > @@ -44,6 +44,7 @@ typedef struct VAAPIVPPContext { > > > int output_width; // computed width > > > int output_height; // computed height > > > > > > +int rotation_state; > > > VABufferID filter_buffers[VAProcFilterCount]; > > > intnb_filter_buffers; > > > > > > diff --git a/libavfilter/vf_rotate_vaapi.c > > > b/libavfilter/vf_rotate_vaapi.c new file mode 100644 index > > > 00..34c270e9c7 > > > --- /dev/null > > > +++ b/libavfilter/vf_rotate_vaapi.c > > > @@ -0,0 +1,252 @@ > > > +/* > > > + * This file is part of FFmpeg. > > > + * > > > + * FFmpeg is free software; you can redistribute it and/or > > > + * modify it under the terms of the GNU Lesser General Public > > > + * License as published by the Free Software Foundation; eith
Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable vaapi rotation feature via call Intel iHD driver
> -Original Message- > From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On Behalf Of > sean darcy > Sent: Thursday, October 25, 2018 11:51 PM > To: ffmpeg-devel@ffmpeg.org > Subject: Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable vaapi > rotation feature via call Intel iHD driver > > On 10/25/18 2:52 AM, Zachary Zhou wrote: > > It supports clockwise rotation by 0/90/180/270 degrees defined in > > va/va_vpp.h, tested following command line on SKL platform > > > > dir=0 for 0 degree > > dir=1 for 90 degree > > dir=2 for 180 degree > > dir=3 for 270 degree > > > > ffmpeg -hwaccel vaapi -vaapi_device /dev/dri/renderD128 > > -hwaccel_output_format vaapi -i input.264 -vf "rotation_vaapi=dir=1" > > -c:v h264_vaapi output.h264 > > > > Signed-off-by: Zachary Zhou > > --- > > configure | 3 + > > libavfilter/Makefile | 1 + > > libavfilter/allfilters.c | 1 + > > libavfilter/vaapi_vpp.h | 1 + > > libavfilter/vf_rotate_vaapi.c | 252 ++ > > 5 files changed, 258 insertions(+) > > create mode 100644 libavfilter/vf_rotate_vaapi.c > > > > diff --git a/configure b/configure > > index 85d5dd5962..33aced3d78 100755 > > --- a/configure > > +++ b/configure > > @@ -6390,6 +6390,9 @@ if enabled vaapi; then > > fi > > > > check_cpp_condition vaapi_1 "va/va.h" "VA_CHECK_VERSION(1, 0, 0)" > > +if ! check_struct "va/va.h" "struct _VAProcPipelineCaps" > > rotation_flags; > then > > +disable rotation_vaapi_filter > > +fi > > fi > > > > if enabled_all opencl libdrm ; then > > diff --git a/libavfilter/Makefile b/libavfilter/Makefile index > > 108a2f87d7..534650364a 100644 > > --- a/libavfilter/Makefile > > +++ b/libavfilter/Makefile > > @@ -349,6 +349,7 @@ OBJS-$(CONFIG_SETRANGE_FILTER) += > vf_setparams.o > > OBJS-$(CONFIG_SETSAR_FILTER) += vf_aspect.o > > OBJS-$(CONFIG_SETTB_FILTER) += settb.o > > OBJS-$(CONFIG_SHARPNESS_VAAPI_FILTER)+= vf_misc_vaapi.o > vaapi_vpp.o > > +OBJS-$(CONFIG_ROTATION_VAAPI_FILTER) += vf_rotate_vaapi.o > vaapi_vpp.o > > OBJS-$(CONFIG_SHOWINFO_FILTER) += vf_showinfo.o > > OBJS-$(CONFIG_SHOWPALETTE_FILTER)+= vf_showpalette.o > > OBJS-$(CONFIG_SHUFFLEFRAMES_FILTER) += vf_shuffleframes.o > > diff --git a/libavfilter/allfilters.c b/libavfilter/allfilters.c index > > 557590850b..4b90a7f440 100644 > > --- a/libavfilter/allfilters.c > > +++ b/libavfilter/allfilters.c > > @@ -333,6 +333,7 @@ extern AVFilter ff_vf_setrange; > > extern AVFilter ff_vf_setsar; > > extern AVFilter ff_vf_settb; > > extern AVFilter ff_vf_sharpness_vaapi; > > +extern AVFilter ff_vf_rotation_vaapi; > > extern AVFilter ff_vf_showinfo; > > extern AVFilter ff_vf_showpalette; > > extern AVFilter ff_vf_shuffleframes; diff --git > > a/libavfilter/vaapi_vpp.h b/libavfilter/vaapi_vpp.h index > > 0bc31018d4..cfe19b689f 100644 > > --- a/libavfilter/vaapi_vpp.h > > +++ b/libavfilter/vaapi_vpp.h > > @@ -44,6 +44,7 @@ typedef struct VAAPIVPPContext { > > int output_width; // computed width > > int output_height; // computed height > > > > +int rotation_state; > > VABufferID filter_buffers[VAProcFilterCount]; > > intnb_filter_buffers; > > > > diff --git a/libavfilter/vf_rotate_vaapi.c > > b/libavfilter/vf_rotate_vaapi.c new file mode 100644 index > > 00..34c270e9c7 > > --- /dev/null > > +++ b/libavfilter/vf_rotate_vaapi.c > > @@ -0,0 +1,252 @@ > > +/* > > + * This file is part of FFmpeg. > > + * > > + * FFmpeg is free software; you can redistribute it and/or > > + * modify it under the terms of the GNU Lesser General Public > > + * License as published by the Free Software Foundation; either > > + * version 2.1 of the License, or (at your option) any later version. > > + * > > + * FFmpeg is distributed in the hope that it will be useful, > > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > GNU > > + * Lesser General Public License for more details. > > + * > > + * You should have received a copy of the GNU Lesser General Public > > + * License along with FFmpeg; if not, write to the Fr
Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable vaapi rotation feature via call Intel iHD driver
On 10/25/18 2:52 AM, Zachary Zhou wrote: It supports clockwise rotation by 0/90/180/270 degrees defined in va/va_vpp.h, tested following command line on SKL platform dir=0 for 0 degree dir=1 for 90 degree dir=2 for 180 degree dir=3 for 270 degree ffmpeg -hwaccel vaapi -vaapi_device /dev/dri/renderD128 -hwaccel_output_format vaapi -i input.264 -vf "rotation_vaapi=dir=1" -c:v h264_vaapi output.h264 Signed-off-by: Zachary Zhou --- configure | 3 + libavfilter/Makefile | 1 + libavfilter/allfilters.c | 1 + libavfilter/vaapi_vpp.h | 1 + libavfilter/vf_rotate_vaapi.c | 252 ++ 5 files changed, 258 insertions(+) create mode 100644 libavfilter/vf_rotate_vaapi.c diff --git a/configure b/configure index 85d5dd5962..33aced3d78 100755 --- a/configure +++ b/configure @@ -6390,6 +6390,9 @@ if enabled vaapi; then fi check_cpp_condition vaapi_1 "va/va.h" "VA_CHECK_VERSION(1, 0, 0)" +if ! check_struct "va/va.h" "struct _VAProcPipelineCaps" rotation_flags; then +disable rotation_vaapi_filter +fi fi if enabled_all opencl libdrm ; then diff --git a/libavfilter/Makefile b/libavfilter/Makefile index 108a2f87d7..534650364a 100644 --- a/libavfilter/Makefile +++ b/libavfilter/Makefile @@ -349,6 +349,7 @@ OBJS-$(CONFIG_SETRANGE_FILTER) += vf_setparams.o OBJS-$(CONFIG_SETSAR_FILTER) += vf_aspect.o OBJS-$(CONFIG_SETTB_FILTER) += settb.o OBJS-$(CONFIG_SHARPNESS_VAAPI_FILTER)+= vf_misc_vaapi.o vaapi_vpp.o +OBJS-$(CONFIG_ROTATION_VAAPI_FILTER) += vf_rotate_vaapi.o vaapi_vpp.o OBJS-$(CONFIG_SHOWINFO_FILTER) += vf_showinfo.o OBJS-$(CONFIG_SHOWPALETTE_FILTER)+= vf_showpalette.o OBJS-$(CONFIG_SHUFFLEFRAMES_FILTER) += vf_shuffleframes.o diff --git a/libavfilter/allfilters.c b/libavfilter/allfilters.c index 557590850b..4b90a7f440 100644 --- a/libavfilter/allfilters.c +++ b/libavfilter/allfilters.c @@ -333,6 +333,7 @@ extern AVFilter ff_vf_setrange; extern AVFilter ff_vf_setsar; extern AVFilter ff_vf_settb; extern AVFilter ff_vf_sharpness_vaapi; +extern AVFilter ff_vf_rotation_vaapi; extern AVFilter ff_vf_showinfo; extern AVFilter ff_vf_showpalette; extern AVFilter ff_vf_shuffleframes; diff --git a/libavfilter/vaapi_vpp.h b/libavfilter/vaapi_vpp.h index 0bc31018d4..cfe19b689f 100644 --- a/libavfilter/vaapi_vpp.h +++ b/libavfilter/vaapi_vpp.h @@ -44,6 +44,7 @@ typedef struct VAAPIVPPContext { int output_width; // computed width int output_height; // computed height +int rotation_state; VABufferID filter_buffers[VAProcFilterCount]; intnb_filter_buffers; diff --git a/libavfilter/vf_rotate_vaapi.c b/libavfilter/vf_rotate_vaapi.c new file mode 100644 index 00..34c270e9c7 --- /dev/null +++ b/libavfilter/vf_rotate_vaapi.c @@ -0,0 +1,252 @@ +/* + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +#include + +#include "libavutil/avassert.h" +#include "libavutil/mem.h" +#include "libavutil/opt.h" +#include "libavutil/pixdesc.h" + +#include "avfilter.h" +#include "formats.h" +#include "internal.h" +#include "vaapi_vpp.h" + +// Rotation angle values +enum RotationAngle { +ROTATION_0 = 0, +ROTATION_90 = 1, +ROTATION_180 = 2, +ROTATION_270 = 3, + +ROTATION_MIN = ROTATION_0, +ROTATION_MAX = ROTATION_270, +ROTATION_DEFAULT = ROTATION_0, +}; + +typedef struct RotationVAAPIContext { +VAAPIVPPContext vpp_ctx; // must be the first field + +int rotation;// enable rotation. +} RotationVAAPIContext; + +static int rotation_vaapi_build_filter_params(AVFilterContext *avctx) +{ +VAAPIVPPContext *vpp_ctx = avctx->priv; +RotationVAAPIContext *ctx = avctx->priv; + +VAStatus vas; +int support_flag; + +VAProcPipelineCaps pipeline_caps; + +memset(_caps, 0, sizeof(pipeline_caps)); +vas = vaQueryVideoProcPipelineCaps(vpp_ctx->hwctx->display, + vpp_ctx->va_context, + NULL, 0, + _caps); +if (vas != VA_STATUS_SUCCESS) { +