Causes of pipeline non-transitivity?

amindfv at amindfv at
Sat Apr 24 15:39:35 UTC 2021

I frequently find myself confused and not knowing where to look when I'm able to build a pipeline from A->B, and a pipeline from B->C, but not from A->B->C.

For example, I can go from v4l2src->glupload:

    $ gst-launch-1.0 v4l2src ! glupload ! glimagesink

And I can go from glupload->glshader:

    $ gst-launch-1.0 videotestsrc ! glupload ! glshader fragment="\"`cat myshader.frag`\"" ! glimagesink

But when I try and combine the two, I get an error:

    $ gst-launch-1.0 v4l2src ! glupload ! glshader fragment="\"`cat myshader.frag`\"" ! glimagesink

    WARNING: erroneous pipeline: could not link gluploadelement0 to glfiltershader0

Where should I look when I hit issues like this? Is it always the case, for example, that A and B have negotiated a format that's incompatible with C? Or does it mean I need to provide more specific properties to A (or B, or C)? I don't see anything in gst-inspect that indicates they wouldn't all work together.


More information about the gstreamer-devel mailing list