From f17db5c4ed79578fd22c95fca12944d4c0f41d7d Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 17 Oct 2012 13:15:48 +0200 Subject: [PATCH] rtpsession: update caps in the source Inform the source when caps changed. This was removed in the port to 1.0 leaving the source unaware of the clock-rate and unable to interpollate rtp timestamps for SR packets. --- gst/rtpmanager/gstrtpsession.c | 2 ++ gst/rtpmanager/rtpsession.c | 20 ++++++++++++++++++++ gst/rtpmanager/rtpsession.h | 1 + 3 files changed, 23 insertions(+) diff --git a/gst/rtpmanager/gstrtpsession.c b/gst/rtpmanager/gstrtpsession.c index dc2d364..271e951 100644 --- a/gst/rtpmanager/gstrtpsession.c +++ b/gst/rtpmanager/gstrtpsession.c @@ -1785,6 +1785,8 @@ gst_rtp_session_setcaps_send_rtp (GstPad * pad, GstRtpSession * rtpsession, GST_DEBUG_OBJECT (rtpsession, "setting internal SSRC to %08x", ssrc); rtp_session_set_internal_ssrc (priv->session, ssrc); } + rtp_session_update_send_caps (priv->session, caps); + return TRUE; } diff --git a/gst/rtpmanager/rtpsession.c b/gst/rtpmanager/rtpsession.c index e3fec66..4e27a6a 100644 --- a/gst/rtpmanager/rtpsession.c +++ b/gst/rtpmanager/rtpsession.c @@ -2455,6 +2455,26 @@ ignore: } /** + * rtp_session_update_send_caps: + * @sess: an #RTPSession + * @caps: a #GstCaps + * + * Update the caps of the sender in the rtp session. + */ +void +rtp_session_update_send_caps (RTPSession * sess, GstCaps * caps) +{ + g_return_val_if_fail (RTP_IS_SESSION (sess), GST_FLOW_ERROR); + g_return_val_if_fail (GST_IS_CAPS (caps), GST_FLOW_ERROR); + + GST_LOG ("received caps %" GST_PTR_FORMAT, caps); + + RTP_SESSION_LOCK (sess); + rtp_source_update_caps (sess->source, caps); + RTP_SESSION_UNLOCK (sess); +} + +/** * rtp_session_send_rtp: * @sess: an #RTPSession * @data: pointer to either an RTP buffer or a list of RTP buffers diff --git a/gst/rtpmanager/rtpsession.h b/gst/rtpmanager/rtpsession.h index d1cdcdc..46a2349 100644 --- a/gst/rtpmanager/rtpsession.h +++ b/gst/rtpmanager/rtpsession.h @@ -333,6 +333,7 @@ GstFlowReturn rtp_session_process_rtcp (RTPSession *sess, GstBuffer guint64 ntpnstime); /* processing packets for sending */ +void rtp_session_update_send_caps (RTPSession *sess, GstCaps *caps); GstFlowReturn rtp_session_send_rtp (RTPSession *sess, gpointer data, gboolean is_list, GstClockTime current_time, GstClockTime running_time); -- 2.7.4