mbox series

[FFmpeg-devel,v2,00/10] make QSV works with Intel's oneVPL

Message ID 20210816073325.27020-1-haihao.xiang@intel.com
Headers show
Series make QSV works with Intel's oneVPL | expand

Message

Xiang, Haihao Aug. 16, 2021, 7:33 a.m. UTC
The oneAPI Video Processing Library (oneVPL) is a single interface for
encode, decode and video processing[1]. oneVPL is a successor to Intel's Media
SDK (MediaSDK), but removed obsolete features. MediaSDK lifetime comes to an
end now[2].

This patchset fixes compiler errors when building FFmpeg against oneVPL and uses
a new way to create MFX session for oneVPL. New features for oneVPL will be
implemented in other patchset.

The oneVPL source code:
https://github.com/oneapi-src/oneVPL
The oneVPL runtime for new Intel Gen platforms:
https://github.com/oneapi-src/oneVPL-intel-gpu

[1] https://spec.oneapi.io/versions/latest/elements/oneVPL/source/index.html
[2] https://github.com/Intel-Media-SDK/MediaSDK/#media-sdk-support-matrix

Haihao Xiang (10):
  configure: ensure --enable-libmfx uses libmfx 1.x
  configure: fix the check for MFX_CODEC_VP9
  qsv: remove mfx/ prefix from mfx headers
  qsv: load user plugin for MFX_VERSION < 2.0
  qsv: build audio related code when MFX_VERSION < 2.0
  qsvenc: support multi-frame encode when MFX_VERSION < 2.0
  qsvenc: support MFX_RATECONTROL_LA_EXT when MFX_VERSION < 2.0
  qsv: support OPAQUE memory when MFX_VERSION < 2.0
  qsv: use a new method to create mfx session when using the oneVPL SDK
  configure: add --enable-libvpl option

 configure                        |  28 ++-
 libavcodec/qsv.c                 | 215 +++++++++++++++---
 libavcodec/qsv.h                 |   4 +-
 libavcodec/qsv_internal.h        |   6 +-
 libavcodec/qsvdec.c              |  15 +-
 libavcodec/qsvenc.c              |  25 ++-
 libavcodec/qsvenc.h              |   9 +-
 libavcodec/qsvenc_h264.c         |   3 +-
 libavcodec/qsvenc_hevc.c         |   3 +-
 libavcodec/qsvenc_jpeg.c         |   3 +-
 libavcodec/qsvenc_mpeg2.c        |   3 +-
 libavcodec/qsvenc_vp9.c          |   3 +-
 libavfilter/qsvvpp.c             | 139 +++++++++++-
 libavfilter/qsvvpp.h             |  12 +-
 libavfilter/vf_deinterlace_qsv.c |  72 ++++---
 libavfilter/vf_scale_qsv.c       |  88 ++++----
 libavutil/hwcontext_opencl.c     |   2 +-
 libavutil/hwcontext_qsv.c        | 359 ++++++++++++++++++++++++++-----
 libavutil/hwcontext_qsv.h        |  18 +-
 19 files changed, 819 insertions(+), 188 deletions(-)

Comments

Xiang, Haihao Aug. 23, 2021, 4:28 a.m. UTC | #1
On Mon, 2021-08-16 at 15:33 +0800, Haihao Xiang wrote:
> The oneAPI Video Processing Library (oneVPL) is a single interface for
> encode, decode and video processing[1]. oneVPL is a successor to Intel's Media
> SDK (MediaSDK), but removed obsolete features. MediaSDK lifetime comes to an
> end now[2].
> 
> This patchset fixes compiler errors when building FFmpeg against oneVPL and
> uses
> a new way to create MFX session for oneVPL. New features for oneVPL will be
> implemented in other patchset.
> 
> The oneVPL source code:
> https://github.com/oneapi-src/oneVPL
> The oneVPL runtime for new Intel Gen platforms:
> https://github.com/oneapi-src/oneVPL-intel-gpu
> 
> [1] https://spec.oneapi.io/versions/latest/elements/oneVPL/source/index.html
> [2] https://github.com/Intel-Media-SDK/MediaSDK/#media-sdk-support-matrix
> 

Hi Zhong / Mark / Softworkz,

Is there any comment to this new patchset version? This version should not have
any impact to current user if --enable-libmfx option is used. We added --enable-
onevpl option for oneVPL usage but the suffix 'qsv' is still used in codec and
filter, so user needn't change their app or command if they don't use the
obsolete features.

Thanks
Haihao

> Haihao Xiang (10):
>   configure: ensure --enable-libmfx uses libmfx 1.x
>   configure: fix the check for MFX_CODEC_VP9
>   qsv: remove mfx/ prefix from mfx headers
>   qsv: load user plugin for MFX_VERSION < 2.0
>   qsv: build audio related code when MFX_VERSION < 2.0
>   qsvenc: support multi-frame encode when MFX_VERSION < 2.0
>   qsvenc: support MFX_RATECONTROL_LA_EXT when MFX_VERSION < 2.0
>   qsv: support OPAQUE memory when MFX_VERSION < 2.0
>   qsv: use a new method to create mfx session when using the oneVPL SDK
>   configure: add --enable-libvpl option
> 
>  configure                        |  28 ++-
>  libavcodec/qsv.c                 | 215 +++++++++++++++---
>  libavcodec/qsv.h                 |   4 +-
>  libavcodec/qsv_internal.h        |   6 +-
>  libavcodec/qsvdec.c              |  15 +-
>  libavcodec/qsvenc.c              |  25 ++-
>  libavcodec/qsvenc.h              |   9 +-
>  libavcodec/qsvenc_h264.c         |   3 +-
>  libavcodec/qsvenc_hevc.c         |   3 +-
>  libavcodec/qsvenc_jpeg.c         |   3 +-
>  libavcodec/qsvenc_mpeg2.c        |   3 +-
>  libavcodec/qsvenc_vp9.c          |   3 +-
>  libavfilter/qsvvpp.c             | 139 +++++++++++-
>  libavfilter/qsvvpp.h             |  12 +-
>  libavfilter/vf_deinterlace_qsv.c |  72 ++++---
>  libavfilter/vf_scale_qsv.c       |  88 ++++----
>  libavutil/hwcontext_opencl.c     |   2 +-
>  libavutil/hwcontext_qsv.c        | 359 ++++++++++++++++++++++++++-----
>  libavutil/hwcontext_qsv.h        |  18 +-
>  19 files changed, 819 insertions(+), 188 deletions(-)
>
Soft Works Aug. 23, 2021, 5:06 a.m. UTC | #2
> -----Original Message-----
> From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of Xiang,
> Haihao
> Sent: Monday, 23 August 2021 06:29
> To: ffmpeg-devel@ffmpeg.org
> Subject: Re: [FFmpeg-devel] [PATCH v2 00/10] make QSV works with Intel's
> oneVPL
> 
> On Mon, 2021-08-16 at 15:33 +0800, Haihao Xiang wrote:
> > The oneAPI Video Processing Library (oneVPL) is a single interface for
> > encode, decode and video processing[1]. oneVPL is a successor to Intel's
> Media
> > SDK (MediaSDK), but removed obsolete features. MediaSDK lifetime comes to
> an
> > end now[2].
> >
> > This patchset fixes compiler errors when building FFmpeg against oneVPL and
> > uses
> > a new way to create MFX session for oneVPL. New features for oneVPL will be
> > implemented in other patchset.
> >
> > The oneVPL source code:
> > https://github.com/oneapi-src/oneVPL
> > The oneVPL runtime for new Intel Gen platforms:
> > https://github.com/oneapi-src/oneVPL-intel-gpu
> >
> > [1]
> https://spec.oneapi.io/versions/latest/elements/oneVPL/source/index.html
> > [2] https://github.com/Intel-Media-SDK/MediaSDK/#media-sdk-support-matrix
> >
> 
> Hi Zhong / Mark / Softworkz,
> 
> Is there any comment to this new patchset version? This version should not
> have
> any impact to current user if --enable-libmfx option is used. We added --
> enable-
> onevpl option for oneVPL usage but the suffix 'qsv' is still used in codec
> and
> filter, so user needn't change their app or command if they don't use the
> obsolete features.


Hi Haihao,

I'm still struggling to understand this. You are doing a major version bump
to 2.x even there's not a single benefit but features are being removed 
instead.

At this time, I don't see any plausible reason to move away from libmfx.

Kind regards,
softworkz
Xiang, Haihao Aug. 25, 2021, 8:40 a.m. UTC | #3
On Mon, 2021-08-23 at 05:06 +0000, Soft Works wrote:
> > -----Original Message-----
> > From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of Xiang,
> > Haihao
> > Sent: Monday, 23 August 2021 06:29
> > To: ffmpeg-devel@ffmpeg.org
> > Subject: Re: [FFmpeg-devel] [PATCH v2 00/10] make QSV works with Intel's
> > oneVPL
> > 
> > On Mon, 2021-08-16 at 15:33 +0800, Haihao Xiang wrote:
> > > The oneAPI Video Processing Library (oneVPL) is a single interface for
> > > encode, decode and video processing[1]. oneVPL is a successor to Intel's
> > 
> > Media
> > > SDK (MediaSDK), but removed obsolete features. MediaSDK lifetime comes to
> > 
> > an
> > > end now[2].
> > > 
> > > This patchset fixes compiler errors when building FFmpeg against oneVPL
> > > and
> > > uses
> > > a new way to create MFX session for oneVPL. New features for oneVPL will
> > > be
> > > implemented in other patchset.
> > > 
> > > The oneVPL source code:
> > > https://github.com/oneapi-src/oneVPL
> > > The oneVPL runtime for new Intel Gen platforms:
> > > https://github.com/oneapi-src/oneVPL-intel-gpu
> > > 
> > > [1]
> > 
> > https://spec.oneapi.io/versions/latest/elements/oneVPL/source/index.html
> > > [2] https://github.com/Intel-Media-SDK/MediaSDK/#media-sdk-support-matrix
> > > 
> > 
> > Hi Zhong / Mark / Softworkz,
> > 
> > Is there any comment to this new patchset version? This version should not
> > have
> > any impact to current user if --enable-libmfx option is used. We added --
> > enable-
> > onevpl option for oneVPL usage but the suffix 'qsv' is still used in codec
> > and
> > filter, so user needn't change their app or command if they don't use the
> > obsolete features.
> 
> 
> Hi Haihao,
> 
> I'm still struggling to understand this. You are doing a major version bump
> to 2.x even there's not a single benefit but features are being removed 
> instead.
> 
> At this time, I don't see any plausible reason to move away from libmfx.

According to the links[1][2] below, MediaSDK is going to be supported in
maintenance mode, new features will be added only to oneVPL, including the new
features for future hardwares. The deleted features are less used in practice.

oneVPL dispatcher may load multiple runtimes, user may use dispatcher APIs to
find an available implementation[3], so it is possible to run FFmpeg with libvpl
on different implementations. 

This patchset is not to replace libmfx with libvpl, libmfx is still used if
running configure with --enable-libmfx option.

[1]https://github.com/Intel-Media-SDK/MediaSDK/#media-sdk-support-matrix
[2]
https://software.intel.com/content/www/us/en/develop/articles/upgrading-from-msdk-to-onevpl.html
[3]
https://spec.oneapi.io/versions/latest/elements/oneVPL/source/API_ref/VPL_disp_api_func.html#dispatcher-api-function-reference

Thanks
Haiaho

> 
> Kind regards,
> softworkz
> 
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".