msdk: map MFX_FOURCC_Y216 to VA_FOURCC_Y216
authorHaihao Xiang <haihao.xiang@intel.com>
Wed, 11 Mar 2020 06:09:11 +0000 (14:09 +0800)
committerHaihao Xiang <haihao.xiang@intel.com>
Fri, 3 Apr 2020 01:19:45 +0000 (01:19 +0000)
In media driver, Y216 is used for packed 12 bits 4:2:2 format YUV
format, so the RT format is VA_RT_FORMAT_YUV422_12.

sys/msdk/gstmsdkallocator_libva.c
sys/msdk/msdk_libva.c

index e12719e..c97fcaa 100644 (file)
@@ -142,6 +142,9 @@ gst_msdk_frame_alloc (mfxHDL pthis, mfxFrameAllocRequest * req,
 #if ((MFX_VERSION >= 1031) && VA_CHECK_VERSION(1, 2, 0))
     if (format == VA_RT_FORMAT_YUV420 && va_fourcc == VA_FOURCC_P016)
       format = VA_RT_FORMAT_YUV420_12;
+
+    if (format == VA_RT_FORMAT_YUV422 && va_fourcc == VA_FOURCC_Y216)
+      format = VA_RT_FORMAT_YUV422_12;
 #endif
 
     va_status = vaCreateSurfaces (gst_msdk_context_get_handle (context),
@@ -396,6 +399,7 @@ gst_msdk_frame_lock (mfxHDL pthis, mfxMemId mid, mfxFrameData * data)
 #endif
 #if VA_CHECK_VERSION(1, 2, 0)
       case VA_FOURCC_Y210:
+      case VA_FOURCC_Y216:
         data->Pitch = mem_id->image.pitches[0];
         data->Y = buf + mem_id->image.offsets[0];
         data->U = data->Y + 2;
index b079706..84d54e8 100644 (file)
@@ -64,6 +64,7 @@ static const struct fourcc_map gst_msdk_fourcc_mfx_to_va[] = {
   FOURCC_MFX_TO_VA (P010, P010),
 #if (MFX_VERSION >= 1031)
   FOURCC_MFX_TO_VA (P016, P016),
+  FOURCC_MFX_TO_VA (Y216, Y216),
 #endif
 #if (MFX_VERSION >= 1028)
   FOURCC_MFX_TO_VA (RGB565, RGB565),