glmemory: Provide correct size on upload
authorNicolas Dufresne <nicolas.dufresne@collabora.co.uk>
Sat, 28 Feb 2015 18:01:16 +0000 (13:01 -0500)
committerTim-Philipp Müller <tim@centricular.com>
Sat, 9 Dec 2017 19:31:55 +0000 (19:31 +0000)
Provide the right size to GL when uploading. Using maxsize is wrong
since we offset the data point with the memory offset and video
alignement offset.

https://bugzilla.gnome.org/show_bug.cgi?id=744246

gst-libs/gst/gl/gstglmemory.c

index 0afabcf0f72321c2bff761fd56d1ce6e2718d07f..0aca76a5030e6d6c1f88ce69b7199018a290b0cb 100644 (file)
@@ -655,9 +655,12 @@ _download_memory (GstGLContext * context, GstGLMemory * gl_mem)
     gl->GetTexImage (gl_mem->tex_target, 0, format, type, gl_mem->data);
     gl->BindTexture (gl_mem->tex_target, 0);
   } else if (gl_mem->transfer_pbo && CONTEXT_SUPPORTS_PBO_DOWNLOAD (context)) {
-    gsize size = ((GstMemory *) gl_mem)->maxsize;
+    gsize size;
     gpointer map_data = NULL;
 
+    size = gst_gl_get_plane_data_size (&gl_mem->info, &gl_mem->valign,
+        gl_mem->plane);
+
     gl->BindBuffer (GL_PIXEL_PACK_BUFFER, gl_mem->transfer_pbo);
     map_data =
         gl->MapBufferRange (GL_PIXEL_PACK_BUFFER, 0, size, GL_MAP_READ_BIT);