From 24d12a4abf633537530fe313bf982f75fb7625fe Mon Sep 17 00:00:00 2001 From: Haihao Xiang Date: Fri, 8 Mar 2019 12:20:56 +0800 Subject: [PATCH] msdk: set some parameters in mfxFrameData for a MFX_FOURCC_AYUV frame --- sys/msdk/gstmsdkallocator_libva.c | 9 +++++++++ sys/msdk/gstmsdksystemmemory.c | 11 +++++++++++ 2 files changed, 20 insertions(+) diff --git a/sys/msdk/gstmsdkallocator_libva.c b/sys/msdk/gstmsdkallocator_libva.c index 02fcf51e8d..7208d9387c 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 ecd159252b..53711a513e 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;