Commit 172f7fb0 authored by Haihao Xiang's avatar Haihao Xiang
Browse files

msdk: adjust the stride align

GstAllocationParams::align is set to 31 in msdkdec/msdken/msdkvpp, hence
the stride align should be greater than or equal to 31, otherwise it
will result in issue
gstreamer/gst-plugins-bad#861
(msdk: "GStreamer-CRITICAL: gst_buffer_resize_range failed" SPAM),

In addition, the stride for a tiled surface in the media driver is aligned to
128, so we should set the stride align for tiled surface in this plugin to 127
as well, which may avoid the NV12 issue mentioned in commit 3f2314a1

Fixed gstreamer/gst-plugins-bad#861
parent af77988b
......@@ -219,6 +219,7 @@ gst_msdk_set_video_alignment (GstVideoInfo * info, guint alloc_w, guint alloc_h,
GstVideoAlignment * alignment)
{
guint i, width, height;
guint stride_align = 127; /* 128-byte alignment */
width = GST_VIDEO_INFO_WIDTH (info);
height = GST_VIDEO_INFO_HEIGHT (info);
......@@ -232,9 +233,18 @@ gst_msdk_set_video_alignment (GstVideoInfo * info, guint alloc_w, guint alloc_h,
if (alloc_h == 0)
alloc_h = height;
/* Allocate linear surface in the media driver for below formats */
if (GST_VIDEO_INFO_FORMAT (info) == GST_VIDEO_FORMAT_BGRA ||
GST_VIDEO_INFO_FORMAT (info) == GST_VIDEO_FORMAT_BGRx ||
GST_VIDEO_INFO_FORMAT (info) == GST_VIDEO_FORMAT_BGR10A2_LE ||
GST_VIDEO_INFO_FORMAT (info) == GST_VIDEO_FORMAT_RGB16 ||
GST_VIDEO_INFO_FORMAT (info) == GST_VIDEO_FORMAT_I420 ||
GST_VIDEO_INFO_FORMAT (info) == GST_VIDEO_FORMAT_YV12)
stride_align = 31; /* 32-byte alignment */
gst_video_alignment_reset (alignment);
for (i = 0; i < GST_VIDEO_INFO_N_PLANES (info); i++)
alignment->stride_align[i] = 15; /* 16-byte alignment */
alignment->stride_align[i] = stride_align;
alignment->padding_right = GST_ROUND_UP_16 (alloc_w) - width;
alignment->padding_bottom = GST_ROUND_UP_32 (alloc_h) - height;
......
Supports Markdown
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