assisted-autoplugging problem

Yakov Sudeikin yakovs at setplex.com
Wed Dec 9 08:13:46 PST 2015


bool demuxDone = false;

gboolean
autopluggerCallback (GstElement * elem, GstPad *pad, GstCaps * caps)
{
    if (cmpType(caps, "video/x-h264")) {
        relayVideoPad = pad;
        demuxDone = true;
    }
    if (cmpType(caps, "audio/x-ac3")) {
        relayAudioPad = pad;
        demuxDone = true;
    }

    if (demuxDone) {
        return FALSE;
    }
    return TRUE;
}

I connected the autoplug-continue signal handler to uridecodebin. My goal
is to prevent it from creating anything after the tsdemux or matroskademux
(whatever is present) and then connect to flvmux.

But the problem I am having is that one more element is still created, the
`multiqueue` that is connected right after the demuxer. Why? I tried to
detect the creation of a demuxer by catching the `element-added` signal,
but the result is the same.

The resulting pipeline is dumped to dot:
        http://pastebin.com/acBUdfpi

Well, I can probably just connect multiqueue to the muxer, but then I do
not know how to get the multiqueue pointer. I tried
gst_pad_get_peer->gst_get_pad_parent_element, (to go from demuxer
src-video-pad to the next element), but get_pad_parent_elem returns 0 even
though the peer is non 0.

I already spent two days on that, any help is greatly appreciated.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20151209/f9002eb4/attachment.html>


More information about the gstreamer-devel mailing list