dynamically adding udpsrc to rtpbin causes streaming stopped, reason not-linked (-1)

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

dynamically adding udpsrc to rtpbin causes streaming stopped, reason not-linked (-1)

Ankur Deep Jaiswal
Hi,

i am trying to add a udp src dynamically to a running pipeline.
e.g

      void addAudioSource(std::string const ip, int const port, int const payloadtype)
      {
        std::string description = "autoaudiosrc ! queue ! audioconvert !  audio/x-raw,rate=16000 ! avenc_g722 ! rtpg722pay";

        audiosrc = Gst::Parse::create_bin(description, true);

        pipeline->add(audiosrc);
        {
          auto srcpad = audiosrc->get_static_pad("src");
          auto sinkpad = rtpbin->get_request_pad("send_rtp_sink_1");
          srcpad->link(sinkpad);
        }

        rtpudpsinkAudio->set_property("host", ip);
        rtpudpsinkAudio->set_property("port", port);
        rtpudpsinkAudio->set_property("sync",true);
        rtpudpsinkAudio->set_property("async",false);
        pipeline->add(rtpudpsinkAudio);
        {
          auto srcpad = rtpbin->get_static_pad("send_rtp_src_1");
          auto sinkpad = rtpudpsinkAudio->get_static_pad("sink");
          srcpad->link(sinkpad);
        }
        pipeline->set_state(Gst::State::STATE_PLAYING); 
    }

--- and ---

      void addAudioSink(std::string const ip, int const port, int const payloadtype)
      {
        char const caps[] = "application/x-rtp,media=(string)audio,clock-rate=(int)8000,payload=(int)%d";
        char buffer[128] = {0};
        sprintf(buffer,caps,payloadtype);
        pipeline->add(rtpudpsrcAudio);
        rtpudpsrcAudio->set_property("caps",
            Gst::Caps::create_from_string(buffer));
        {
          auto srcpad = rtpudpsrcAudio->get_static_pad("src");
          auto sinkpad = rtpbin->get_request_pad("recv_rtp_sink_1");
          srcpad->link(sinkpad);
        }
        pipeline->set_state(Gst::State::STATE_PLAYING);
      }

individually when i am not calling the other function the pipeline works fine.

if i try to call addAudioSink some time after addAudioSource  , i always get this error when i debug through the application

0:00:18.190302584 [334m 6945 [00m 0x555556669450 [36mINFO   [00m [00;01;34m           GST_EVENT gstevent.c:814:gst_event_new_caps: [00m creating caps event application/x-rtp, media=(string)audio, clock-rate=(int)8000, payload=(int)9, ssrc=(uint)1388635048
0:00:18.190323116 [334m 6945 [00m 0x555556669450 [36mINFO   [00m [00m             basesrc gstbasesrc.c:2965:gst_base_src_loop:<rtpudpsrcaudio-AVP-d80367f9-8361-458d-a52d-23db4d185996> [00m pausing after gst_pad_push() = not-linked
0:00:18.190333169 [334m 6945 [00m 0x555556669450 [33;01mWARN   [00m [00m             basesrc gstbasesrc.c:3055:gst_base_src_loop:<rtpudpsrcaudio-AVP-d80367f9-8361-458d-a52d-23db4d185996> [00m error: Internal data stream error.
0:00:18.190337616 [334m 6945 [00m 0x555556669450 [33;01mWARN   [00m [00m             basesrc gstbasesrc.c:3055:gst_base_src_loop:<rtpudpsrcaudio-AVP-d80367f9-8361-458d-a52d-23db4d185996> [00m error: streaming stopped, reason not-linked (-1)
0:00:18.190350252 [334m 6945 [00m 0x555556669450 [36mINFO   [00m [00;01;31;47m    GST_ERROR_SYSTEM gstelement.c:2145:gst_element_message_full_with_details:<rtpudpsrcaudio-AVP-d80367f9-8361-458d-a52d-23db4d185996> [00m posting message: Internal data stream error.
0:00:18.190358717 [334m 6945 [00m 0x555556669450 [36mINFO   [00m [00;01;31;47m    GST_ERROR_SYSTEM gstelement.c:2172:gst_element_message_full_with_details:<rtpudpsrcaudio-AVP-d80367f9-8361-458d-a52d-23db4d185996> [00m posted error message: Internal data stream error.


the other thing is that this pipeline works most of the time.
i am only hit by this error when i debug through the application and sometimes when on release build.

please help

--
Regards

Ankur Deep Jaiswal


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: dynamically adding udpsrc to rtpbin causes streaming stopped, reason not-linked (-1)

Ankur Deep Jaiswal
The only issue that i have been able to find out is.
sometimes it says  rtpssrcdemux0:src_2345243 not linked, and then udpsrc audio fails with   gst_pad_push() = not-linked.
there is this issue that i dont understand, that the pipeline works most of the time, it fails for 25 % of time.

On Thu, Aug 2, 2018 at 10:14 PM, Ankur Deep Jaiswal <[hidden email]> wrote:
Hi,

i am trying to add a udp src dynamically to a running pipeline.
e.g

      void addAudioSource(std::string const ip, int const port, int const payloadtype)
      {
        std::string description = "autoaudiosrc ! queue ! audioconvert !  audio/x-raw,rate=16000 ! avenc_g722 ! rtpg722pay";

        audiosrc = Gst::Parse::create_bin(description, true);

        pipeline->add(audiosrc);
        {
          auto srcpad = audiosrc->get_static_pad("src");
          auto sinkpad = rtpbin->get_request_pad("send_rtp_sink_1");
          srcpad->link(sinkpad);
        }

        rtpudpsinkAudio->set_property("host", ip);
        rtpudpsinkAudio->set_property("port", port);
        rtpudpsinkAudio->set_property("sync",true);
        rtpudpsinkAudio->set_property("async",false);
        pipeline->add(rtpudpsinkAudio);
        {
          auto srcpad = rtpbin->get_static_pad("send_rtp_src_1");
          auto sinkpad = rtpudpsinkAudio->get_static_pad("sink");
          srcpad->link(sinkpad);
        }
        pipeline->set_state(Gst::State::STATE_PLAYING); 
    }

--- and ---

      void addAudioSink(std::string const ip, int const port, int const payloadtype)
      {
        char const caps[] = "application/x-rtp,media=(string)audio,clock-rate=(int)8000,payload=(int)%d";
        char buffer[128] = {0};
        sprintf(buffer,caps,payloadtype);
        pipeline->add(rtpudpsrcAudio);
        rtpudpsrcAudio->set_property("caps",
            Gst::Caps::create_from_string(buffer));
        {
          auto srcpad = rtpudpsrcAudio->get_static_pad("src");
          auto sinkpad = rtpbin->get_request_pad("recv_rtp_sink_1");
          srcpad->link(sinkpad);
        }
        pipeline->set_state(Gst::State::STATE_PLAYING);
      }

individually when i am not calling the other function the pipeline works fine.

if i try to call addAudioSink some time after addAudioSource  , i always get this error when i debug through the application

0:00:18.190302584 [334m 6945 [00m 0x555556669450 [36mINFO   [00m [00;01;34m           GST_EVENT gstevent.c:814:gst_event_new_caps: [00m creating caps event application/x-rtp, media=(string)audio, clock-rate=(int)8000, payload=(int)9, ssrc=(uint)1388635048
0:00:18.190323116 [334m 6945 [00m 0x555556669450 [36mINFO   [00m [00m             basesrc gstbasesrc.c:2965:gst_base_src_loop:<rtpudpsrcaudio-AVP-d80367f9-8361-458d-a52d-23db4d185996> [00m pausing after gst_pad_push() = not-linked
0:00:18.190333169 [334m 6945 [00m 0x555556669450 [33;01mWARN   [00m [00m             basesrc gstbasesrc.c:3055:gst_base_src_loop:<rtpudpsrcaudio-AVP-d80367f9-8361-458d-a52d-23db4d185996> [00m error: Internal data stream error.
0:00:18.190337616 [334m 6945 [00m 0x555556669450 [33;01mWARN   [00m [00m             basesrc gstbasesrc.c:3055:gst_base_src_loop:<rtpudpsrcaudio-AVP-d80367f9-8361-458d-a52d-23db4d185996> [00m error: streaming stopped, reason not-linked (-1)
0:00:18.190350252 [334m 6945 [00m 0x555556669450 [36mINFO   [00m [00;01;31;47m    GST_ERROR_SYSTEM gstelement.c:2145:gst_element_message_full_with_details:<rtpudpsrcaudio-AVP-d80367f9-8361-458d-a52d-23db4d185996> [00m posting message: Internal data stream error.
0:00:18.190358717 [334m 6945 [00m 0x555556669450 [36mINFO   [00m [00;01;31;47m    GST_ERROR_SYSTEM gstelement.c:2172:gst_element_message_full_with_details:<rtpudpsrcaudio-AVP-d80367f9-8361-458d-a52d-23db4d185996> [00m posted error message: Internal data stream error.


the other thing is that this pipeline works most of the time.
i am only hit by this error when i debug through the application and sometimes when on release build.

please help

--
Regards

Ankur Deep Jaiswal




--
Regards

Ankur Deep Jaiswal

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: dynamically adding udpsrc to rtpbin causes streaming stopped, reason not-linked (-1)

Gst-Geek
In reply to this post by Ankur Deep Jaiswal
In your pipeline elements have request or all time pad. Ideally you should
not get  linking error.

Check DOT diagram that should tell you the dandling branch.

Your DOT diagram should link something like this.
autoaudiosrc ! queue ! audioconvert !  audio/x-raw,rate=16000 ! avenc_g722 !
rtpg722pay ! rtpbin ! udpsink




--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel