> From: Fu, Linjie <linjie...@intel.com> > Sent: Wednesday, February 26, 2020 16:39 > To: ffmpeg-devel@ffmpeg.org > Cc: Fu, Linjie <linjie...@intel.com> > Subject: [PATCH,v2 1/2] lavc/qsvdec: add decode support for HEVC 4:2:2 8-bit > and 10-bit > > Enables HEVC Range Extension decoding support (Linux) for 4:2:2 8/10 bit > on ICL+ (gen11 +) platform. > > Signed-off-by: Linjie Fu <linjie...@intel.com> > --- > [v2]: restrict to support on Linux. > > libavcodec/qsv.c | 16 ++++++++++++++++ > libavutil/hwcontext_qsv.c | 24 ++++++++++++++++++++++++ > 2 files changed, 40 insertions(+) > > diff --git a/libavcodec/qsv.c b/libavcodec/qsv.c > index db98c75..171a8d6 100644 > --- a/libavcodec/qsv.c > +++ b/libavcodec/qsv.c > @@ -195,6 +195,12 @@ enum AVPixelFormat ff_qsv_map_fourcc(uint32_t > fourcc) > case MFX_FOURCC_NV12: return AV_PIX_FMT_NV12; > case MFX_FOURCC_P010: return AV_PIX_FMT_P010; > case MFX_FOURCC_P8: return AV_PIX_FMT_PAL8; > +#if CONFIG_VAAPI > + case MFX_FOURCC_YUY2: return AV_PIX_FMT_YUYV422; > +#if QSV_VERSION_ATLEAST(1, 27) > + case MFX_FOURCC_Y210: return AV_PIX_FMT_Y210; > +#endif > +#endif > } > return AV_PIX_FMT_NONE; > } > @@ -211,6 +217,16 @@ int ff_qsv_map_pixfmt(enum AVPixelFormat format, > uint32_t *fourcc) > case AV_PIX_FMT_P010: > *fourcc = MFX_FOURCC_P010; > return AV_PIX_FMT_P010; > +#if CONFIG_VAAPI > + case AV_PIX_FMT_YUV422P: > + *fourcc = MFX_FOURCC_YUY2; > + return AV_PIX_FMT_YUYV422; > +#if QSV_VERSION_ATLEAST(1, 27) > + case AV_PIX_FMT_YUV422P10: > + *fourcc = MFX_FOURCC_Y210; > + return AV_PIX_FMT_Y210; > +#endif > +#endif > default: > return AVERROR(ENOSYS); > } > diff --git a/libavutil/hwcontext_qsv.c b/libavutil/hwcontext_qsv.c > index b1b6740..4306c6e3 100644 > --- a/libavutil/hwcontext_qsv.c > +++ b/libavutil/hwcontext_qsv.c > @@ -44,6 +44,10 @@ > #include "pixdesc.h" > #include "time.h" > > +#define QSV_VERSION_ATLEAST(MAJOR, MINOR) \ > + (MFX_VERSION_MAJOR > (MAJOR) || \ > + MFX_VERSION_MAJOR == (MAJOR) && MFX_VERSION_MINOR >= > (MINOR)) > + > typedef struct QSVDevicePriv { > AVBufferRef *child_device_ctx; > } QSVDevicePriv; > @@ -103,6 +107,14 @@ static const struct { > { AV_PIX_FMT_BGRA, MFX_FOURCC_RGB4 }, > { AV_PIX_FMT_P010, MFX_FOURCC_P010 }, > { AV_PIX_FMT_PAL8, MFX_FOURCC_P8 }, > +#if CONFIG_VAAPI > + { AV_PIX_FMT_YUYV422, > + MFX_FOURCC_YUY2 }, > +#if QSV_VERSION_ATLEAST(1, 27) > + { AV_PIX_FMT_Y210, > + MFX_FOURCC_Y210 }, > +#endif > +#endif > }; > > static uint32_t qsv_fourcc_from_pix_fmt(enum AVPixelFormat pix_fmt) > @@ -773,7 +785,19 @@ static int map_frame_to_surface(const AVFrame > *frame, mfxFrameSurface1 *surface) > surface->Data.R = frame->data[0] + 2; > surface->Data.A = frame->data[0] + 3; > break; > +#if CONFIG_VAAPI > + case AV_PIX_FMT_YUYV422: > + surface->Data.Y = frame->data[0]; > + surface->Data.U = frame->data[0] + 1; > + surface->Data.V = frame->data[0] + 3; > + break; > > + case AV_PIX_FMT_Y210: > + surface->Data.Y16 = (mfxU16 *)frame->data[0]; > + surface->Data.U16 = (mfxU16 *)frame->data[0] + 1; > + surface->Data.V16 = (mfxU16 *)frame->data[0] + 3; > + break; > +#endif > default: > return MFX_ERR_UNSUPPORTED; > } > -- Ping for the patch set for 422 8/10 bit: https://patchwork.ffmpeg.org/project/ffmpeg/patch/1582706369-32704-1-git-send-email-linjie...@intel.com/ https://patchwork.ffmpeg.org/project/ffmpeg/patch/1582706402-439-1-git-send-email-linjie...@intel.com/
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".