[gst-devel] Problem linking rtspsrc to any other element

Hanno Jaspers hanno.jaspers at udo.edu
Sat Nov 20 15:31:49 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