rtpbin behaves differently as between parse_launch() and manually adding to pipeline

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

rtpbin behaves differently as between parse_launch() and manually adding to pipeline

Trey Hutcheson
I'm trying to get rtpbin to receive audio from a remote endpoint. The simple examples all work fine, but when I try to integrate it into a larger framework rtpbin behaves differently.

These two pipelines work just fine with gst-launch
Sending audio:
gst-launch-1.0 rtpbin name=rtpbin \
    audiotestsrc ! mulawenc ! rtppcmupay ! rtpbin.send_rtp_sink_1 \
    rtpbin.send_rtp_src_1 ! udpsink host=127.0.0.1 port=10000

And receiving audio:
gst-launch-1.0 udpsrc address=127.0.0.1 port=10000 caps="application/x-rtp, media=audio, encoding-name=PCMU, clock-rate=8000" ! \
  rtpbin ! queue ! rtppcmudepay ! mulawdec ! audioconvert ! audioresample ! autoaudiosink


So, inside my rust code, I can pass the exact same string to gst::parse_launch(), play the pipeline, and send audio to it and it plays to my speaker. Cool.

*however*, if I do the following (rust):
let pipeline = gst::Pipeline::new(None);
pipeline.set_state(gst::State::Playing)?;

// the bin source is the *exact same* as the pipeline source
let bin = gst::parse_bin_from_description( ... )?;
pipeline.add(&bin);
bin.sync_state_with_parent()?;

And then send in the rtp, rtpbin fails to link some pads. With GST_DEBUG=3:
WARN                 basesrc gstbasesrc.c:3072:gst_base_src_loop:<udpsrc0> error: Internal data stream error.
WARN                 basesrc gstbasesrc.c:3072:gst_base_src_loop:<udpsrc0> error: streaming stopped, reason not-linked (-1)


With GST_DEBUG=4:
INFO        GST_ELEMENT_PADS gstutils.c:1771:gst_element_link_pads_full: trying to link element rtpbin:(any) to element rtppcmudepay0:(any)
INFO        GST_ELEMENT_PADS gstelement.c:915:gst_element_get_static_pad: found pad rtppcmudepay0:sink
INFO        GST_ELEMENT_PADS gstutils.c:1225:gst_element_get_compatible_pad:<rtppcmudepay0> Could not find a compatible pad to link to rtpbin:recv_rtp_src_0_270934790_0
INFO                 default gstutils.c:2161:gst_element_link_pads_filtered: Could not link pads: rtpbin:(null) - rtppcmudepay0:(null)
INFO                GST_PADS gstpad.c:4237:gst_pad_peer_query:<rtpbin:recv_rtp_src_0_270934790_0> pad has no peer
INFO                    task gsttask.c:312:gst_task_func:<rtpjitterbuffer0:src> Task going to paused
INFO                 basesrc gstbasesrc.c:2981:gst_base_src_loop:<udpsrc0> pausing after gst_pad_push() = not-linked
WARN                 basesrc gstbasesrc.c:3072:gst_base_src_loop:<udpsrc0> error: Internal data stream error.
WARN                 basesrc gstbasesrc.c:3072:gst_base_src_loop:<udpsrc0> error: streaming stopped, reason not-linked (-1)
INFO        GST_ERROR_SYSTEM gstelement.c:2140:gst_element_message_full_with_details:<udpsrc0> posting message: Internal data stream error.
INFO        GST_ERROR_SYSTEM gstelement.c:2167:gst_element_message_full_with_details:<udpsrc0> posted error message: Internal data stream error

What am I doing wrong?

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel