[gst-devel] EOS on rtpbin's send_rtcp_src pad?

Petre Mierlutiu peter at cs.upt.ro
Sat Sep 27 12:09:53 CEST 2008


Hello everyone,

I am using a simple pipeline that delivers h263 encoded video over rtp 
using gstrtpbin. My pipeline is something like this:
(videosrc)->ffenc_h263p->rtph263ppay->gstrtpbin-[send_rtp_src]->udpsink1
                                             \-[send_rtcp_src]->udpsink2
I also have a udpsrc--[recv_rtcp_sink]-->gstrtpbin.

All works fine except that the pipelink doesn't finish due to udpsink2 not 
seeing EOS. I think RtpSession should push the EOS event on this pad also, 
somewhere at gstrtpsession.c in gst_rtp_session_event_send_rtp_sink() 
function. But I'm not sure how to do this because just sending the EOS 
would prevent RtpSession to send out the RTCP BYE message which is 
scheduled for later. So my simple modification from below does not work 
correctly, although it causes the pipeline to end.

Any advice, please?

I am using gst-plugins-bad-0.10.8, gst-plugins-base-0.10.20, 
gst-plugins-good-0.10.10 and gstreamer-0.10.20.

Thank you,

Peter

---------------------------------------------------
--- gst-plugins-bad-0.10.8/gst/rtpmanager/gstrtpsession.c       2008-07-19 
16:18:23.000000000 +0300
+++ build/gst-plugins-bad-0.10.8/gst/rtpmanager/gstrtpsession.c 2008-09-27 
13:09:02.000000000 +0300
@@ -1556,10 +1556,12 @@ gst_rtp_session_event_send_rtp_sink (Gst
      case GST_EVENT_EOS:{
        GstClockTime current_time;

+      gst_event_ref(event);
        ret = gst_pad_push_event (rtpsession->send_rtp_src, event);
        current_time = gst_clock_get_time (rtpsession->priv->sysclock);
        rtp_session_send_bye (rtpsession->priv->session, "End of stream",
            current_time);
+      ret = gst_pad_push_event (rtpsession->send_rtcp_src, event) && ret;
        break;
      }
      default:
------------------------------------------------------------------




More information about the gstreamer-devel mailing list