[Bug 743345] glimagesink: Add support for dmabuf
GStreamer (bugzilla.gnome.org)
bugzilla at gnome.org
Wed Jan 28 20:04:51 PST 2015
https://bugzilla.gnome.org/show_bug.cgi?id=743345
GStreamer | gst-plugins-bad | unspecified
Julien Isorce <julien.isorce> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |julien.isorce at gmail.com
--- Comment #3 from Julien Isorce <julien.isorce at gmail.com> 2015-01-28 22:21:55 UTC ---
That's great to see some work around this.
Some remarks: (I may have missed something though :) )
I can see you have not added code here:
http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/gst-libs/gst/gl/egl/gsteglimagememory.c,
any reason ? (Also as a side note I can see about eglimage some duplicated
code added recently in gstglupload since last time I looked)
Anyway, with omx/eglimage_with_context/gltexture, the sink can suggest a pool
of eglimage_with_gl_context_and_texture that are later filled by the upstream
decoder. But I do not see either a pool of eglimage in your case. It seems you
create an eglimage for every buffer. I do not see the egldestroy btw.
In your scenario I do not see any pool of eglimage_no_context_and_with_dmaf_buf
.
Also here I do not see any mention to "dma" here
http://cgit.collabora.com/git/user/lubosz/gst-plugins-bad.git/tree/ext/gl/gstglimagesink.c?id=cc89ca45b172919ccdd9c68e237e6be3abe3ec06#n1206
.
Depending on the allocator selected by the upstream decoder, the downstream
pool will be setup with or without eglimage, see
http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/gst-libs/gst/gl/gstglbufferpool.c#n149
and then
http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/gst-libs/gst/gl/gstglbufferpool.c#n245
through gst_egl_image_memory_setup_buffer.
Well here to distinguish either eglimage_with_context_and_texture or
eglimage_no_context_and_with_dmaf_buf we could make it a bit generic by using
the existing GstAllocationParams/GstMemoryFlags with some improvements or add
gstgl API used by the decoder (see
http://cgit.freedesktop.org/gstreamer/gst-omx/tree/omx/gstomxvideodec.c#n41)
That would avoid to introduce memory:dmabuf and re-use memory:EGLImage
Finally about the multiple plane case, even if the driver supports it, maybe
you need to create one eglimage per plane as done here:
https://github.com/raspberrypi/userland/blob/master/host_applications/linux/apps/raspicam/RaspiTex.h#L162
(or here
http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/gst-libs/gst/gl/egl/gsteglimagememory.c#n480
but not yet tested) . In your code I can see only one call to eglcreateimage,
but again I may have missed something.
Out of curiosity, could you paste cpu perf tool output ? and intel_gpu_top
(http://dri.freedesktop.org/wiki/IntelPerformanceTuning/) ?
--
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.
More information about the gstreamer-bugs
mailing list