mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-29 11:40:38 +00:00
eglimage: Fix exported DMABuf size
All we know is the height and the stride, so make sure not to expose the DMABuf larger then the size we know about.
This commit is contained in:
parent
976e7e4e3d
commit
ac0d19b72f
2 changed files with 9 additions and 7 deletions
|
@ -286,13 +286,14 @@ _create_cached_dmabuf_info (GstGLContext * context, gpointer data)
|
|||
if (gst_egl_image_export_dmabuf (image, &fd, &stride, &offset)) {
|
||||
GstGLDownloadElement *download = transfer->download;
|
||||
struct DmabufInfo *info;
|
||||
gsize maxsize;
|
||||
gsize size;
|
||||
|
||||
gst_memory_get_sizes (GST_MEMORY_CAST (transfer->glmem), NULL, &maxsize);
|
||||
size =
|
||||
gst_gl_memory_get_texture_height (transfer->glmem) * stride + offset;
|
||||
|
||||
info = g_new0 (struct DmabufInfo, 1);
|
||||
info->dmabuf =
|
||||
gst_dmabuf_allocator_alloc (download->dmabuf_allocator, fd, maxsize);
|
||||
gst_dmabuf_allocator_alloc (download->dmabuf_allocator, fd, size);
|
||||
info->stride = stride;
|
||||
info->offset = offset;
|
||||
|
||||
|
|
|
@ -1029,10 +1029,6 @@ gst_egl_image_export_dmabuf (GstEGLImage * image, int *fd, gint * stride,
|
|||
if (num_planes > 1)
|
||||
return FALSE;
|
||||
|
||||
GST_DEBUG_OBJECT (image->context, "Export DMABuf with fourcc %"
|
||||
GST_FOURCC_FORMAT " and modififers %" G_GUINT64_FORMAT,
|
||||
GST_FOURCC_ARGS (fourcc), modifier);
|
||||
|
||||
/* FIXME We don't support modifiers */
|
||||
if (modifier != DRM_FORMAT_MOD_LINEAR)
|
||||
return FALSE;
|
||||
|
@ -1041,6 +1037,11 @@ gst_egl_image_export_dmabuf (GstEGLImage * image, int *fd, gint * stride,
|
|||
&egl_stride, &egl_offset))
|
||||
return FALSE;
|
||||
|
||||
GST_DEBUG_OBJECT (image->context, "Export DMABuf with fourcc %"
|
||||
GST_FOURCC_FORMAT ", modififers %" G_GUINT64_FORMAT
|
||||
", stride %i and offset %i", GST_FOURCC_ARGS (fourcc), modifier,
|
||||
egl_stride, egl_offset);
|
||||
|
||||
*fd = egl_fd;
|
||||
*stride = egl_stride;
|
||||
*offset = egl_offset;
|
||||
|
|
Loading…
Reference in a new issue