After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 746399 - glupload: get_caps vfunc incomplete
glupload: get_caps vfunc incomplete
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
2.x
Other Linux
: Normal normal
: 1.5.1
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2015-03-18 13:17 UTC by Nicolas Dufresne (ndufresne)
Modified: 2015-04-28 10:17 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Nicolas Dufresne (ndufresne) 2015-03-18 13:17:59 UTC
The glupload element sets it's caps to video/x-raw(ANY). This is very wrong, the uploader needs to be aware of the memory type (sysmem, DMABUF, EGL) in order to perform the upload or texture mapping. Finally, it can only upload from sysmem of format it knows about. Here's an example showing how badly this fails:

gst-launch-1.0 videotestsrc ! video/x-raw,format=NV12_64Z32 ! glupload ! fakesink
Définition du pipeline à PAUSED...
Le pipeline est en phase de PREROLL...
Got context from element 'gluploadelement0': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayX11\)\ gldisplayx11-0";
**
ERROR:gstglmemory.c:272:gst_gl_texture_type_from_format: code should not be reached
Abandon (core dumped)
Comment 1 Matthew Waters (ystreet00) 2015-03-18 15:53:49 UTC
The problem is not the pad template caps but the get_caps basetransform vfunc.
Comment 2 Nicolas Dufresne (ndufresne) 2015-03-18 18:00:52 UTC
I don't particularly like this idea that having precise template does not matter. Even when the caps is HW driven, we setup the template so they represent the set of possibilities. This is because we want the registry to be useful.
Comment 3 Matthew Waters (ystreet00) 2015-03-20 15:37:36 UTC
Which is not really going to work with user upload methods possibly needing different caps features then the default dmabuf, glmemory, uploadmeta.

This is mostly useful for embedded systems with posssible weird upload paths such as vivante's direct textures.
Comment 4 Nicolas Dufresne (ndufresne) 2015-03-20 15:54:50 UTC
It make no difference to me, just pass a template with the method and merge that up. A template does not have to be static btw.
Comment 5 Nicolas Dufresne (ndufresne) 2015-03-20 15:56:22 UTC
Also, keep in mind that it's a matter of documentation here, the "elements" won't have random runtime functions. We must make sure gst-inspect-1.0 remains a useful tool. We need to be able to read from gst-inspect-1.0 which format will work for which type of memory.
Comment 6 Matthew Waters (ystreet00) 2015-04-28 10:17:00 UTC
commit 0b7f65bbc345030c0f2866656ba372893f4843a9
Author: Matthew Waters <matthew@centricular.com>
Date:   Tue Apr 28 20:11:07 2015 +1000

    glupload: provide the sink template caps that could be used
    
    https://bugzilla.gnome.org/show_bug.cgi?id=746399