mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-23 18:21:04 +00:00
glupload: dmabuf: be explicit about gl formats used
Rather then letting gst_gl_memory_setup_buffer guess the GL format used for an eglimage after importing a dmabuf be explicit about it. This fixes issues where dmabuf import may have used another format then gst_gl_format_from_video_info would guess on the basis of the available GL extensions. In particular on etnaviv the gst_gl_format_from_video_info would assuming a luminance + alpha GL format is used for YUY2, but the dmabuf import will always use RG88. Which causes images to end up somewhat pink when displayed on the screen.
This commit is contained in:
parent
99ac4e6600
commit
989f53383b
1 changed files with 4 additions and 2 deletions
|
@ -488,6 +488,7 @@ struct DmabufUpload
|
|||
GstGLUpload *upload;
|
||||
|
||||
GstEGLImage *eglimage[GST_VIDEO_MAX_PLANES];
|
||||
GstGLFormat formats[GST_VIDEO_MAX_PLANES];
|
||||
GstBuffer *outbuf;
|
||||
GstGLVideoAllocationParams *params;
|
||||
guint n_mem;
|
||||
|
@ -719,6 +720,7 @@ _dma_buf_upload_accept (gpointer impl, GstBuffer * buffer, GstCaps * in_caps,
|
|||
return FALSE;
|
||||
|
||||
_set_cached_eglimage (mems[i], dmabuf->eglimage[i], cache_id);
|
||||
dmabuf->formats[i] = dmabuf->eglimage[i]->format;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
|
@ -743,8 +745,8 @@ _dma_buf_upload_perform_gl_thread (GstGLContext * context,
|
|||
|
||||
/* FIXME: buffer pool */
|
||||
dmabuf->outbuf = gst_buffer_new ();
|
||||
gst_gl_memory_setup_buffer (allocator, dmabuf->outbuf, dmabuf->params, NULL,
|
||||
(gpointer *) dmabuf->eglimage, dmabuf->n_mem);
|
||||
gst_gl_memory_setup_buffer (allocator, dmabuf->outbuf, dmabuf->params,
|
||||
dmabuf->formats, (gpointer *) dmabuf->eglimage, dmabuf->n_mem);
|
||||
gst_object_unref (allocator);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue