v4l2codecs: Fix tiled formats stride conversion

While adding arbitrary tile support, a round up operation was badly
converter. This caused the Y component of the stride to be 0. This
eventually lead to a crash in glupoad preceded by the following
assertion.

  gst_gl_buffer_allocation_params_new: assertion 'alloc_size > 0' failed

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5458>
This commit is contained in:
Nicolas Dufresne 2023-10-10 15:43:07 -04:00 committed by GStreamer Marge Bot
parent 5cb63edbd3
commit 88fd9908fe

View file

@ -89,10 +89,9 @@ set_stride (GstVideoInfo * info, gint plane, gint stride)
padded_height = GST_VIDEO_FORMAT_INFO_SCALE_HEIGHT (finfo, plane, padded_height = GST_VIDEO_FORMAT_INFO_SCALE_HEIGHT (finfo, plane,
info->height); info->height);
padded_height = (padded_height + tile_height - 1) / tile_height;
x_tiles = stride / GST_VIDEO_FORMAT_INFO_TILE_STRIDE (finfo, plane); x_tiles = stride / GST_VIDEO_FORMAT_INFO_TILE_STRIDE (finfo, plane);
y_tiles = padded_height / tile_height; y_tiles = (padded_height + tile_height - 1) / tile_height;
info->stride[plane] = GST_VIDEO_TILE_MAKE_STRIDE (x_tiles, y_tiles); info->stride[plane] = GST_VIDEO_TILE_MAKE_STRIDE (x_tiles, y_tiles);
} else { } else {
info->stride[plane] = stride; info->stride[plane] = stride;