mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-22 22:16:22 +00:00
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
This commit is contained in:
parent
84da104b06
commit
0c69867d52
1 changed files with 8 additions and 2 deletions
|
@ -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.
|
||||
|
|
Loading…
Reference in a new issue