rtpsession: update caps in the source
authorWim Taymans <wim.taymans@collabora.co.uk>
Wed, 17 Oct 2012 11:15:48 +0000 (13:15 +0200)
committerWim Taymans <wim.taymans@collabora.co.uk>
Wed, 17 Oct 2012 11:22:40 +0000 (13:22 +0200)
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
gst/rtpmanager/rtpsession.c
gst/rtpmanager/rtpsession.h

index dc2d364..271e951 100644 (file)
@@ -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;
 }
 
index e3fec66..4e27a6a 100644 (file)
@@ -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
index d1cdcdc..46a2349 100644 (file)
@@ -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);