mbox series

[FFmpeg-devel,v11,00/13] make QSV works with the Intel's oneVPL

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

Message

Xiang, Haihao July 20, 2022, 8:39 a.m. UTC
From: Haihao Xiang <haihao.xiang@intel.com>

The oneAPI Video Processing Library (oneVPL) is a single interface for
encode, decode and video processing[1][2]. oneVPL is a successor to Intel(R) Media
SDK, but removed obsolete features. Intel(R) Media SDK lifetime comes to an
end now, new features for new Intel Gen platforms will be supported in oneVPL
only[3].

It is recommended to use oneVPL for new work, even for currently available
hardwares[4]. Hence, this patchset added a new option --enable-onevpl to bring
the support for oneVPL in QSV, new features for oneVPL will be implemented in
other patchset, for example, we are implementing av1_qsv encoder
(https://github.com/intel-media-ci/ffmpeg/pull/515).

option --enble-libmfx still works with Intel(R) Media SDK.

Note user can't enable onevpl and libmfx together.

oneVPL dispatcher:
https://github.com/oneapi-src/oneVPL

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

v11:
  - make sure the loaded oneVPL implementation can supported the requested
    device in VAAPI path.

[1] https://spec.oneapi.io/versions/latest/elements/oneVPL/source/index.html
[2] https://www.intel.com/content/www/us/en/developer/tools/oneapi/onevpl.html
[3] https://github.com/Intel-Media-SDK/MediaSDK/#media-sdk-support-matrix
[4] https://www.intel.com/content/www/us/en/develop/documentation/upgrading-from-msdk-to-onevpl/top.html

Haihao Xiang (13):
  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
  lavu/hwcontext_qsv: add loader field to AVQSVDeviceContext
  lavu/hwcontext_qsv: make qsv hwdevice works with oneVPL
  lavc/qsv: create mfx session using oneVPL for decoding/encoding
  lavfi/qsv: create mfx session using oneVPL for qsv filters
  configure: add --enable-libvpl option

 configure                        |  32 +-
 doc/APIchanges                   |   3 +
 libavcodec/qsv.c                 | 249 +++++++++++--
 libavcodec/qsv.h                 |   4 +-
 libavcodec/qsv_internal.h        |   6 +-
 libavcodec/qsvdec.c              |  22 +-
 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             | 141 +++++++-
 libavfilter/qsvvpp.h             |  12 +-
 libavfilter/vf_deinterlace_qsv.c |  72 ++--
 libavfilter/vf_scale_qsv.c       |  87 ++---
 libavutil/hwcontext_opencl.c     |   2 +-
 libavutil/hwcontext_qsv.c        | 589 ++++++++++++++++++++++++++++---
 libavutil/hwcontext_qsv.h        |  13 +-
 libavutil/version.h              |   2 +-
 21 files changed, 1098 insertions(+), 185 deletions(-)