[Bug 708988] New: The interleave plugin does not handle request pad name correctly

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Sat Sep 28 03:47:39 PDT 2013


https://bugzilla.gnome.org/show_bug.cgi?id=708988
  GStreamer | gst-plugins-good | unspecified

           Summary: The interleave plugin does not handle request pad name
                    correctly
    Classification: Platform
           Product: GStreamer
           Version: unspecified
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gst-plugins-good
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: yashi at atmark-techno.com
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


Created an attachment (id=255977)
 --> (https://bugzilla.gnome.org/attachment.cgi?id=255977)
GST_DEBUG=4 GST_DEBUG_NO_COLOR=1 gst-launch-1.0 interleave name=i ! pulsesink
audiotestsrc ! i.sink_0 audiotestsrc wave=red-noise ! i.sink_1

It seems to me that the interleave module example on the current
documentation[1] does not work. The command line example is this:

gst-launch-1.0 interleave name=i ! audioconvert ! wavenc ! filesink
location=file.wav  filesrc location=file1.wav ! decodebin ! audioconvert !
"audio/x-raw,channels=1" ! queue ! i.sink_0   filesrc location=file2.wav !
decodebin ! audioconvert ! "audio/x-raw,channels=1" ! queue ! i.sink_1

It is very long so I've modified to shorten it to this:

gst-launch-1.0 interleave name=i ! pulsesink \
audiotestsrc                ! audio/x-raw,channels=1 ! i.sink_0 \
audiotestsrc wave=red-noise ! audio/x-raw,channels=1 ! i.sink_1

Both example failed to run with an error message:
WARNING: erroneous pipeline: could not link audiotestsrc0 to i

slomo on the GStreamer IRC channel told me that the "problem is that interleave
does not take the requested pad name into account... so the second chain
requests "sink_1" but gets "sink_0", and the other way around".

To back up his comment, I've taken a debug message to see what it says (Full
log attached). Here is the excerpt that I think relevant:

The second chain (sink_1) request:
GST_ELEMENT_PADS gstutils.c:1543:gst_element_link_pads_full: trying to link
element capsfilter0:src to element i:sink_1
GST_ELEMENT_PADS gstelement.c:897:gst_element_get_static_pad: found pad
capsfilter0:src
GST_ELEMENT_PADS gstelement.c:894:gst_element_get_static_pad: no such pad
'sink_1' in element "i"
GST_ELEMENT_PADS gstelement.c:894:gst_element_get_static_pad: no such pad
'sink_1' in element "i"
GST_ELEMENT_PADS gstelement.c:646:gst_element_add_pad:<i> adding pad 'sink_0'
        GST_PADS gstutils.c:1443:prepare_link_maybe_ghosting: capsfilter0 and i
in same bin, no need for ghost pads
        GST_PADS gstpad.c:2083:gst_pad_link_prepare: trying to link
capsfilter0gst_pad_link_prepare: trying to link capsfilter0:src and i:sink_0
        GST_PADS gstpad.c:2285:gst_pad_link_full: linked capsfilter0:src and
i:sink_0, successful

As you can see that the sink_1 reqest ended up linking to sink_0. Pipleline
creation continue to the first chain (sink_0) request:

GST_ELEMENT_PADS gstutils.c:1543:gst_element_link_pads_full: trying to link
element capsfilter1:src to element i:sink_0
GST_ELEMENT_PADS gstelement.c:897:gst_element_get_static_pad: found pad
capsfilter1:src
GST_ELEMENT_PADS gstelement.c:897:gst_element_get_static_pad: found pad
i:sink_0
         default gstutils.c:1877:gst_element_link_pads_filtered: Could not link
pads: capsfilter:src - i:sink_0

and failed.

[1]
http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good-plugins/html/gst-plugins-good-plugins-interleave.html

-- 
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