EOS on rtpbin's send_rtcp_src pad?

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

EOS on rtpbin's send_rtcp_src pad?

Petre Mierlutiu
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:
------------------------------------------------------------------

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: EOS on rtpbin's send_rtcp_src pad?

Petre Mierlutiu
For reference, I've found out that the issue was solved in the CVS
version. I believe it was done in revision 1.48 (aug 28/2008) of
gstrtpsession.c.

On Sat, 27 Sep 2008, Petre Mierlutiu wrote:

> 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:
> ------------------------------------------------------------------
>

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel