gst_parse_launch and ssrc demux

NoeOne noe1mxr at gmail.com
Thu Apr 24 13:49:20 PDT 2014


Dear all,

This is my first post and I'd like to start with thanking you all for the
great work you've done so far! It's amazing really!

Now to my question. Is it possible to use parse-launch for multiple ssrc's
on the same rtpsrc?

Receiver:
gst-launch-0.10 -v gstrtpbin name=rtpbin udpsrc
caps="application/x-rtp,media=(string)audio,clock-rate=(int)8000,encoding-name=(string)PCMU"
port=5000 ! rtpbin.recv_rtp_sink_0 rtpbin. ! rtppcmudepay ! mulawdec !
alsasink                         udpsrc port=5001 ! rtpbin.recv_rtcp_sink_0
rtpbin.send_rtcp_src_0 ! udpsink port=5005 sync=false async=false

Senders:
gst-launch-0.10 -v audiotestsrc freq=1000 ! mulawenc ! rtppcmupay ! udpsink
host=127.0.0.1 port=5000

The first sender comes through alright, but the second one crashes it.

Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:send_rtcp_src_0: caps =
application/x-rtcp
/GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSession:rtpsession0.GstPad:send_rtcp_src:
caps = application/x-rtcp
/GstPipeline:pipeline0/GstUDPSink:udpsink0.GstPad:sink: caps =
application/x-rtcp
/GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:send_rtcp_src_0.GstProxyPad:proxypad2:
caps = application/x-rtcp
/GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSession:rtpsession0.GstPad:recv_rtp_sink:
caps = application/x-rtp, media=(string)audio, clock-rate=(int)8000,
encoding-name=(string)PCMU
/GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:recv_rtp_sink_0: caps =
application/x-rtp, media=(string)audio, clock-rate=(int)8000,
encoding-name=(string)PCMU
/GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:recv_rtp_sink_0.GstProxyPad:proxypad0:
caps = application/x-rtp, media=(string)audio, clock-rate=(int)8000,
encoding-name=(string)PCMU
/GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSession:rtpsession0.GstPad:recv_rtp_src:
caps = application/x-rtp, media=(string)audio, clock-rate=(int)8000,
encoding-name=(string)PCMU
/GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSsrcDemux:rtpssrcdemux0.GstPad:sink:
caps = application/x-rtp, media=(string)audio, clock-rate=(int)8000,
encoding-name=(string)PCMU
/GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpJitterBuffer:rtpjitterbuffer0.GstPad:src:
caps = application/x-rtp, media=(string)audio, clock-rate=(int)8000,
encoding-name=(string)PCMU
/GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpJitterBuffer:rtpjitterbuffer0.GstPad:sink:
caps = application/x-rtp, media=(string)audio, clock-rate=(int)8000,
encoding-name=(string)PCMU
/GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpPtDemux:rtpptdemux0.GstPad:sink:
caps = application/x-rtp, media=(string)audio, clock-rate=(int)8000,
encoding-name=(string)PCMU
/GstPipeline:pipeline0/GstRtpPcmuDepay:rtppcmudepay0.GstPad:src: caps =
audio/x-mulaw, channels=(int)1, rate=(int)8000
/GstPipeline:pipeline0/GstRtpPcmuDepay:rtppcmudepay0.GstPad:sink: caps =
application/x-rtp, media=(string)audio, clock-rate=(int)8000,
encoding-name=(string)PCMU, payload=(int)0
/GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:recv_rtp_src_0_4128931428_0.GstProxyPad:proxypad3:
caps = application/x-rtp, media=(string)audio, clock-rate=(int)8000,
encoding-name=(string)PCMU, payload=(int)0
/GstPipeline:pipeline0/GstMuLawDec:mulawdec0.GstPad:src: caps =
audio/x-raw-int, width=(int)16, depth=(int)16, endianness=(int)1234,
signed=(boolean)true, rate=(int)8000, channels=(int)1
/GstPipeline:pipeline0/GstMuLawDec:mulawdec0.GstPad:sink: caps =
audio/x-mulaw, channels=(int)1, rate=(int)8000
/GstPipeline:pipeline0/GstAlsaSink:alsasink0.GstPad:sink: caps =
audio/x-raw-int, width=(int)16, depth=(int)16, endianness=(int)1234,
signed=(boolean)true, rate=(int)8000, channels=(int)1
/GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpJitterBuffer:rtpjitterbuffer1.GstPad:src:
caps = application/x-rtp, media=(string)audio, clock-rate=(int)8000,
encoding-name=(string)PCMU
/GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpJitterBuffer:rtpjitterbuffer1.GstPad:sink:
caps = application/x-rtp, media=(string)audio, clock-rate=(int)8000,
encoding-name=(string)PCMU
/GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpPtDemux:rtpptdemux1.GstPad:sink:
caps = application/x-rtp, media=(string)audio, clock-rate=(int)8000,
encoding-name=(string)PCMU
/GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:recv_rtp_src_0_3622823938_0.GstProxyPad:proxypad4:
caps = application/x-rtp, media=(string)audio, clock-rate=(int)8000,
encoding-name=(string)PCMU, payload=(int)0
ERROR: from element /GstPipeline:pipeline0/GstUDPSrc:udpsrc0: Internal data
flow error.
Additional debug info:
gstbasesrc.c(2625): gst_base_src_loop ():
/GstPipeline:pipeline0/GstUDPSrc:udpsrc0:
streaming task paused, reason not-linked (-1)
Execution ended after 6593780888 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
/GstPipeline:pipeline0/GstUDPSink:udpsink0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstAlsaSink:alsasink0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstMuLawDec:mulawdec0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstMuLawDec:mulawdec0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstRtpPcmuDepay:rtppcmudepay0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstRtpPcmuDepay:rtppcmudepay0.GstPad:sink: caps =
NULL
/GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:recv_rtp_src_0_3622823938_0:
caps = NULL
/GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:recv_rtp_src_0_4128931428_0:
caps = NULL
/GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:send_rtcp_src_0: caps =
NULL
/GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpPtDemux:rtpptdemux1.GstPad:src_0:
caps = NULL
/GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpPtDemux:rtpptdemux1.GstPad:sink:
caps = NULL
/GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpJitterBuffer:rtpjitterbuffer1.GstPad:sink:
caps = NULL
/GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpJitterBuffer:rtpjitterbuffer1.GstPad:src:
caps = NULL
/GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpPtDemux:rtpptdemux0.GstPad:src_0:
caps = NULL
/GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpPtDemux:rtpptdemux0.GstPad:sink:
caps = NULL
/GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpJitterBuffer:rtpjitterbuffer0.GstPad:sink:
caps = NULL
/GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpJitterBuffer:rtpjitterbuffer0.GstPad:src:
caps = NULL
/GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSsrcDemux:rtpssrcdemux0.GstPad:src_-672143358:
caps = NULL
/GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSsrcDemux:rtpssrcdemux0.GstPad:src_-166035868:
caps = NULL
/GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSsrcDemux:rtpssrcdemux0.GstPad:sink:
caps = NULL
/GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSession:rtpsession0.GstPad:send_rtcp_src:
caps = NULL
/GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSession:rtpsession0.GstPad:recv_rtp_src:
caps = NULL
/GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSession:rtpsession0.GstPad:recv_rtp_sink:
caps = NULL
/GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:recv_rtp_sink_0: caps =
NULL
/GstPipeline:pipeline0/GstUDPSrc:udpsrc0.GstPad:src: caps = NULL
Setting pipeline to NULL ...
Freeing pipeline ...


I know that 1.0 has been released, but for different reasons I cannot use
that on my system (Debian) and I don't know if this works in the 1.0
version.

If this does not work with parse-launch, would the alternative be to create
the pipeline 'manually' and for each new pad (pad_added callback) add a new
depay/decode/sink.

Thanks in advance - Magnus
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20140424/cb152c3c/attachment-0001.html>


More information about the gstreamer-devel mailing list