[Bug 743345] glimagesink: Add support for dmabuf

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Fri Feb 6 03:23:37 PST 2015

  GStreamer | gst-plugins-bad | unspecified

Matthew Waters <ystreet00> changed:

           What    |Removed                     |Added
                 CC|                            |ystreet00 at gmail.com

--- Comment #6 from Matthew Waters <ystreet00 at gmail.com> 2015-02-06 11:23:33 UTC ---
My thoughts on the previous comments/current code.

1. I want memory:dmabuf caps features.
2. This does not seem to utilise the already existing EGLImage support
mentioned by Julien.  From what I've seen of our eglimage code and what I'm
reading here, our EGLImage paths are not generic enough to support all
different cases of formats available.
3. The conversion between dmabuf and EGLImage does not seem to be well defined.
4. Shaders and texture targets/templating.
5. overall architecture somewhat influenced by bug 743974.

decoder ! memory:dmabuf,format=NV12,etc ! ( glupload !
memory:EGLImage,format=NV12/RGBA ! glupload ! memory:GLMemory,format=NV12/RGBA
! glcolorconvert ! memory:GLMemory,format=RGBA ! glelement ! glcolorconvert !
gldownload [optional] ) ! ...

note: the () brackets denote a bin

The list of things that needs to be done to support dmabuf
1. add memory:dmabuf caps features
2.1 make EGLImage upload work with all the formats supported by GstGLMemory
inside glupload with one plane per EGLImage/GstGLMemory
2.2 multi-plane EGLImage upload case.
3. Some kind of 'quirks' table needs to be implemented within GstGLContext and
generated based on the chosen gl context/renderer/etc due to the loosely
specified nature of some GL operations.  Even just a GstStructure based key,
value pairs would suffice.  Particularly useful for the quirks in dmabuf.
4. instead of hardcoding the entire shader we split them up and/or attempt to
template specific sections.
5. fix bug 743974.

Patch 1: This is the baseline for fully supporting texture targets in
Patch 2: Mostly looks good.
Patch 3: The texture target should be retrieved from GstGLMemory.  Look into
simple splitting/templating shaders.
Patch 4: wouldn't it be a simple matter to try the representative drm format/s
for the video format and cache that on success?
Patch 5: Testing patch which I don't see as necessary with properly defined
caps features
Patch 6: dmabuf caps features are good!
Patch 7: Currently, glupload only outputs GstGLMemory.  It would be needed to
teach glcolorconvert and the encompassing elements about EGLImages in order to
pass EGLimages between glupload and glcolorconvert generically.  Depending on
the GL impl it might be simpler to do EGLimage->GstGLMemory inside glupload.

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