Commit 0c69867d authored by wangfei's avatar wangfei Committed by Sreerenj Balachandran

msdk: Fix the I420 video format support

Make sure I420 surface mapping works as expected by using
YV12 format and swap U/V plane's offset and pitches.

https://bugzilla.gnome.org/show_bug.cgi?id=793865
parent 84da104b
......@@ -136,6 +136,7 @@ gst_video_meta_map_msdk_memory (GstVideoMeta * meta, guint plane,
GstMsdkMemoryID *mem_id;
guint offset = 0;
gint pitch = 0;
guint plane_id = plane;
g_return_val_if_fail (mem, FALSE);
......@@ -165,9 +166,14 @@ gst_video_meta_map_msdk_memory (GstVideoMeta * meta, guint plane,
mem->mapped++;
mem_id = mem->surface->Data.MemId;
/* msdk doesn't support I420 format and we used YV12 internally
* So we need to swap U/V planes for mapping */
if (meta->format == GST_VIDEO_FORMAT_I420)
plane_id = plane ? (plane == 1 ? 2 : 1) : plane;
#ifndef _WIN32
offset = mem_id->image.offsets[plane];
pitch = mem_id->image.pitches[plane];
offset = mem_id->image.offsets[plane_id];
pitch = mem_id->image.pitches[plane_id];
#else
/* TODO: This is just to avoid compile errors on Windows.
* Implement handling Windows-specific video-memory.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment