Re: [FFmpeg-devel] [PATCH V2] libavfilter/vaapi: enable vaapi rotation feature via call Intel iHD driver

2018-10-31 Thread Mark Thompson
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

2018-10-30 Thread Zhou, Zachary


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

2018-10-30 Thread Michael Niedermayer
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

2018-10-29 Thread Zhou, Zachary


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

2018-10-28 Thread myp...@gmail.com
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

2018-10-28 Thread Zhou, Zachary


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

2018-10-28 Thread Zhou, Zachary


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

2018-10-26 Thread sean darcy

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

2018-10-26 Thread Paul B Mahol
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

2018-10-26 Thread Zhou, Zachary


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

2018-10-26 Thread Rostislav Pehlivanov
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

2018-10-25 Thread Zhou, Zachary


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

2018-10-25 Thread sean darcy

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) {
+