kmssink: adjust memory offset calculation for dmabuf buffers
authorGeorge Kiagiadakis <george.kiagiadakis@collabora.com>
Mon, 13 Mar 2017 14:06:53 +0000 (16:06 +0200)
committerGeorge Kiagiadakis <george.kiagiadakis@collabora.com>
Tue, 14 Mar 2017 15:07:41 +0000 (17:07 +0200)
The data in the dmabuf fd may not start from byte 0, therefore
we need to inform DRM about this additional offset.

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

sys/kms/gstkmssink.c

index 2f05c63..8ddb6e1 100644 (file)
@@ -1090,6 +1090,10 @@ gst_kms_sink_import_dmabuf (GstKMSSink * self, GstBuffer * inbuf,
 
     mems[i] = gst_buffer_peek_memory (inbuf, mems_idx[i]);
 
+    /* adjust for memory offset, in case data does not
+     * start from byte 0 in the dmabuf fd */
+    mems_skip[i] += mems[i]->offset;
+
     /* And all memory found must be dmabuf */
     if (!gst_is_dmabuf_memory (mems[i]))
       return FALSE;