summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHaihao Xiang <haihao.xiang@intel.com>2019-03-08 12:20:56 +0800
committerTim-Philipp Müller <tim@centricular.com>2019-03-25 09:50:33 +0000
commit24d12a4abf633537530fe313bf982f75fb7625fe (patch)
tree85661015b0a1a163eb48205b39e4ddad65e2009c
parent5a5d707cddfb517a39927e3305c5e8a8f9645f85 (diff)
downloadgstreamer-plugins-bad-24d12a4abf633537530fe313bf982f75fb7625fe.tar.gz
msdk: set some parameters in mfxFrameData for a MFX_FOURCC_AYUV frame
-rw-r--r--sys/msdk/gstmsdkallocator_libva.c9
-rw-r--r--sys/msdk/gstmsdksystemmemory.c11
2 files changed, 20 insertions, 0 deletions
diff --git a/sys/msdk/gstmsdkallocator_libva.c b/sys/msdk/gstmsdkallocator_libva.c
index 02fcf51e8..7208d9387 100644
--- a/sys/msdk/gstmsdkallocator_libva.c
+++ b/sys/msdk/gstmsdkallocator_libva.c
@@ -320,6 +320,15 @@ gst_msdk_frame_lock (mfxHDL pthis, mfxMemId mid, mfxFrameData * data)
data->B = data->R;
break;
#endif
+ case VA_FOURCC_AYUV:
+ data->PitchHigh = (mfxU16) (mem_id->image.pitches[0] / (1 << 16));
+ data->PitchLow = (mfxU16) (mem_id->image.pitches[0] % (1 << 16));
+ data->V = buf + mem_id->image.offsets[0];
+ data->U = data->V + 1;
+ data->Y = data->V + 2;
+ data->A = data->V + 3;
+ break;
+
default:
g_assert_not_reached ();
break;
diff --git a/sys/msdk/gstmsdksystemmemory.c b/sys/msdk/gstmsdksystemmemory.c
index ecd159252..53711a513 100644
--- a/sys/msdk/gstmsdksystemmemory.c
+++ b/sys/msdk/gstmsdksystemmemory.c
@@ -121,6 +121,17 @@ ensure_data (GstMsdkSystemMemory * mem)
mem->surface->Data.Pitch = mem->destination_pitches[0];
break;
#endif
+ case GST_VIDEO_FORMAT_VUYA:
+ mem->surface->Data.V = mem->cached_data[0];
+ mem->surface->Data.U = mem->surface->Data.V + 1;
+ mem->surface->Data.Y = mem->surface->Data.V + 2;
+ mem->surface->Data.A = mem->surface->Data.V + 3;
+ mem->surface->Data.PitchHigh =
+ (mfxU16) (mem->destination_pitches[0] / (1 << 16));
+ mem->surface->Data.PitchLow =
+ (mfxU16) (mem->destination_pitches[0] % (1 << 16));
+ break;
+
default:
g_assert_not_reached ();
break;