From: Haihao Xiang Date: Thu, 12 Mar 2020 05:12:33 +0000 (+0800) Subject: msdk: map MFX_FOURCC_Y416 to VA_FOURCC_Y416 X-Git-Tag: 1.19.3~507^2~2093 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=55ed9458b50bef270b0d21e39224e672b41c66e6;p=platform%2Fupstream%2Fgstreamer.git msdk: map MFX_FOURCC_Y416 to VA_FOURCC_Y416 Y416 is used for packed 12 bits 4:4:4:4 YUV format in media driver, the RT format is VA_RT_FORMAT_YUV444_12 --- diff --git a/sys/msdk/gstmsdkallocator_libva.c b/sys/msdk/gstmsdkallocator_libva.c index 7e38d03..23f090b 100644 --- a/sys/msdk/gstmsdkallocator_libva.c +++ b/sys/msdk/gstmsdkallocator_libva.c @@ -145,6 +145,9 @@ gst_msdk_frame_alloc (mfxHDL pthis, mfxFrameAllocRequest * req, if (format == VA_RT_FORMAT_YUV422 && va_fourcc == VA_FOURCC_Y216) format = VA_RT_FORMAT_YUV422_12; + + if (format == VA_RT_FORMAT_YUV444 && va_fourcc == VA_FOURCC_Y416) + format = VA_RT_FORMAT_YUV444_12; #endif va_status = vaCreateSurfaces (gst_msdk_context_get_handle (context), @@ -409,6 +412,13 @@ gst_msdk_frame_lock (mfxHDL pthis, mfxMemId mid, mfxFrameData * data) data->Pitch = mem_id->image.pitches[0]; data->U = buf + mem_id->image.offsets[0]; /* data->Y410 */ break; + case VA_FOURCC_Y416: + data->Pitch = mem_id->image.pitches[0]; + data->U = buf + mem_id->image.offsets[0]; + data->Y = data->U + 2; + data->V = data->U + 4; + data->A = data->U + 6; + break; #endif case VA_FOURCC_ABGR: data->Pitch = mem_id->image.pitches[0]; diff --git a/sys/msdk/msdk_libva.c b/sys/msdk/msdk_libva.c index 84d54e8..0a55a8b 100644 --- a/sys/msdk/msdk_libva.c +++ b/sys/msdk/msdk_libva.c @@ -65,6 +65,7 @@ static const struct fourcc_map gst_msdk_fourcc_mfx_to_va[] = { #if (MFX_VERSION >= 1031) FOURCC_MFX_TO_VA (P016, P016), FOURCC_MFX_TO_VA (Y216, Y216), + FOURCC_MFX_TO_VA (Y416, Y416), #endif #if (MFX_VERSION >= 1028) FOURCC_MFX_TO_VA (RGB565, RGB565),