From bb586b227f3a355c0b393296469313d8827d6de0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Manuel=20J=C3=A1quez=20Leal?= Date: Tue, 29 Sep 2020 15:03:11 +0200 Subject: [PATCH] va: allocator: calculated surface frame internally Instead of using gst_buffer_get_size() just add the memory sizes reported by exported fd. Part-of: --- sys/va/gstvaallocator.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sys/va/gstvaallocator.c b/sys/va/gstvaallocator.c index 2ed728183d..8a1ea58772 100644 --- a/sys/va/gstvaallocator.c +++ b/sys/va/gstvaallocator.c @@ -532,6 +532,7 @@ gst_va_dmabuf_setup_buffer (GstAllocator * allocator, GstBuffer * buffer, } buf = _create_buffer_surface (surface, format, desc.width, desc.height); + GST_VIDEO_INFO_SIZE (&buf->info) = 0; for (i = 0; i < desc.num_objects; i++) { gint fd = desc.objects[i].fd; @@ -551,6 +552,8 @@ gst_va_dmabuf_setup_buffer (GstAllocator * allocator, GstBuffer * buffer, *drm_mod = desc.objects[i].drm_format_modifier; gst_mini_object_set_qdata (GST_MINI_OBJECT (mem), gst_va_drm_mod_quark (), drm_mod, g_free); + + GST_VIDEO_INFO_SIZE (&buf->info) += size; } for (i = 0; i < desc.num_layers; i++) { @@ -559,7 +562,6 @@ gst_va_dmabuf_setup_buffer (GstAllocator * allocator, GstBuffer * buffer, GST_VIDEO_INFO_PLANE_STRIDE (&buf->info, i) = desc.layers[i].pitch[0]; } - GST_VIDEO_INFO_SIZE (&buf->info) = gst_buffer_get_size (buffer); GST_LOG_OBJECT (self, "Created surface %#x [%dx%d] size %" G_GSIZE_FORMAT, buf->surface, GST_VIDEO_INFO_WIDTH (&buf->info), GST_VIDEO_INFO_HEIGHT (&buf->info), GST_VIDEO_INFO_SIZE (&buf->info));