[gst-devel] Problem linking rtspsrc to any other element
Hanno Jaspers
hanno.jaspers at udo.edu
Sat Nov 20 17:55:25 CET 2010
Hi everyone,
I try to receive the rtsp stream (a MJPEG stream), sent from an Elphel
camera. I get no problems when using vlc or the gst-launch tool. The
correct pipeline for gst-launch is: gst-launch rtspsrc
location="rtsp://192.168.1.9:554" ! rtpjpegdepay ! jpegdec ! xvimagesink
I tried to embed this pipeline in my own application, but somehow, I
can't link the rtspsrc to another element. I tried to link it to an
rtpjpegdepay element, a queue element, even a fakesink, but nothing
works. My code looks sth like this:
gst_init (&argc, &argv);
GMainLoop *loop = g_main_loop_new(NULL, FALSE);
GstElement *pipeline = gst_pipeline_new ("Windows Overlay Test");
GstElement *rtspsrc = gst_element_factory_make("rtspsrc", NULL);
GstElement *rtpjpeg = gst_element_factory_make("rtpjpegdepay", NULL);
GstElement *jpegdec = gst_element_factory_make("jpegdec", NULL);
GstElement *fakesink = gst_element_factory_make("fakesink", NULL);
if (!(rtspsrc && rtpjpeg && jpegdec && fakesink && queue1 && queue2 &&
queue3)) {
qCritical() << "Elements could not be created!!!";
exit(-1);
}
g_object_set(G_OBJECT(rtspsrc), "location", "rtsp://192.168.1.9:554",
NULL);
g_object_set(G_OBJECT(fakesink), "dump", true, NULL);
gst_bin_add_many (GST_BIN (pipeline), rtspsrc, rtpjpeg, jpegdec,
fakesink, NULL);
if (!gst_element_link(rtspsrc, fakesink)) {
qCritical() << "RTSPSRC could not be linked!!!";
exit(-1);
}
The "gst_element_link(rtspsrc, fakesink)" always returns false. Here's
the interesting part of the debug output (GST_DEBUG=4):
0:00:00.457158021 6075 0x1195730 DEBUG GST_PARENTAGE
gstbin.c:1152:gst_bin_add_func:<Windows Overlay Test> added element
"fakesink0"
0:00:00.457173107 6075 0x1195730 INFO GST_ELEMENT_PADS
gstutils.c:1614:gst_element_link_pads_full: trying to link element
rtspsrc0:(any) to element fakesink0:(any)
0:00:00.457184491 6075 0x1195730 DEBUG GST_ELEMENT_PADS
gstutils.c:1755:gst_element_link_pads_full: trying dest pad
fakesink0:sink
0:00:00.457193920 6075 0x1195730 DEBUG GST_ELEMENT_PADS
gstutils.c:1115:gst_element_get_compatible_pad: finding pad in rtspsrc0
compatible with fakesink0:sink
0:00:00.457204536 6075 0x1195730 DEBUG GST_ELEMENT_PADS
gstutils.c:1200:gst_element_get_compatible_pad:<rtspsrc0> Could not find
a compatible unlinked always pad to link to fakesink0:sink, now checking
request pads
0:00:00.457485856 6075 0x1195730 DEBUG GST_CAPS
gstpad.c:2274:gst_pad_get_caps_reffed:<fakesink0:sink> get pad caps
0:00:00.457495564 6075 0x1195730 DEBUG GST_CAPS
gstpad.c:2184:gst_pad_get_caps_unlocked:<fakesink0:sink> get pad caps
0:00:00.457504084 6075 0x1195730 DEBUG GST_CAPS
gstpad.c:2188:gst_pad_get_caps_unlocked:<fakesink0:sink> dispatching to
pad getcaps function
0:00:00.457518681 6075 0x1195730 DEBUG GST_CAPS
gstpad.c:2201:gst_pad_get_caps_unlocked:<fakesink0:sink> pad getcaps
returned ANY
0:00:00.457546268 6075 0x1195730 DEBUG GST_ELEMENT_PADS
gstutils.c:889:gst_element_get_compatible_pad_template: Looking for a
suitable pad template in rtspsrc0 out of 1 templates...
0:00:00.457557513 6075 0x1195730 DEBUG GST_CAPS
gstutils.c:905:gst_element_get_compatible_pad_template: compatible
direction: found src pad template "stream%d"
0:00:00.457566313 6075 0x1195730 DEBUG GST_CAPS
gstutils.c:908:gst_element_get_compatible_pad_template: intersecting ANY
0:00:00.457575462 6075 0x1195730 DEBUG GST_CAPS
gstutils.c:910:gst_element_get_compatible_pad_template: ..and
application/x-rtp; application/x-rdt
0:00:00.457585659 6075 0x1195730 DEBUG GST_CAPS
gstutils.c:916:gst_element_get_compatible_pad_template: caps are
compatible
0:00:00.457593830 6075 0x1195730 DEBUG GST_ELEMENT_PADS
gstutils.c:928:gst_element_get_compatible_pad_template: Returning new
pad template 0x1556bb0
0:00:00.457602770 6075 0x1195730 INFO GST_ELEMENT_PADS
gstelement.c:960:gst_element_get_static_pad: no such pad 'stream%d' in
element "rtspsrc0"
0:00:00.457617018 6075 0x1195730 INFO GST_ELEMENT_PADS
gstutils.c:1221:gst_element_get_compatible_pad:<rtspsrc0> Could not find
a compatible pad to link to fakesink0:sink
0:00:00.457626795 6075 0x1195730 DEBUG GST_ELEMENT_PADS
gstutils.c:1797:gst_element_link_pads_full: we might have request pads
on both sides, checking...
0:00:00.457635944 6075 0x1195730 DEBUG GST_ELEMENT_PADS
gstutils.c:1838:gst_element_link_pads_full: no link possible from
rtspsrc0 to fakesink0
RTSPSRC could not be linked!!!
Where's the problem? Thanks for your help!
Hanno
More information about the gstreamer-devel
mailing list