session: place SSRC in Retransmission event
authorWim Taymans <wtaymans@redhat.com>
Thu, 2 Jan 2014 13:46:11 +0000 (14:46 +0100)
committerWim Taymans <wtaymans@redhat.com>
Fri, 3 Jan 2014 19:48:29 +0000 (20:48 +0100)
gst/rtpmanager/gstrtpsession.c
gst/rtpmanager/rtpsession.c
gst/rtpmanager/rtpsession.h

index 80ac1c1..6d83a39 100644 (file)
@@ -273,7 +273,7 @@ static void gst_rtp_session_request_key_unit (RTPSession * sess,
 static GstClockTime gst_rtp_session_request_time (RTPSession * session,
     gpointer user_data);
 static void gst_rtp_session_notify_nack (RTPSession * sess,
-    guint16 seqnum, guint16 blp, gpointer user_data);
+    guint16 seqnum, guint16 blp, guint32 ssrc, gpointer user_data);
 
 static RTPSessionCallbacks callbacks = {
   gst_rtp_session_process_rtp,
@@ -2419,7 +2419,7 @@ gst_rtp_session_request_time (RTPSession * session, gpointer user_data)
 
 static void
 gst_rtp_session_notify_nack (RTPSession * sess, guint16 seqnum,
-    guint16 blp, gpointer user_data)
+    guint16 blp, guint32 ssrc, gpointer user_data)
 {
   GstRtpSession *rtpsession = GST_RTP_SESSION (user_data);
   GstEvent *event;
@@ -2434,7 +2434,8 @@ gst_rtp_session_notify_nack (RTPSession * sess, guint16 seqnum,
     while (TRUE) {
       event = gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM,
           gst_structure_new ("GstRTPRetransmissionRequest",
-              "seqnum", G_TYPE_UINT, (guint) seqnum, NULL));
+              "seqnum", G_TYPE_UINT, (guint) seqnum,
+              "ssrc", G_TYPE_UINT, (guint) ssrc, NULL));
       gst_pad_push_event (send_rtp_sink, event);
 
       if (blp == 0)
index 1eda78f..99df673 100644 (file)
@@ -2368,10 +2368,10 @@ rtp_session_process_nack (RTPSession * sess, guint32 sender_ssrc,
     seqnum = GST_READ_UINT16_BE (fci_data);
     blp = GST_READ_UINT16_BE (fci_data + 2);
 
-    GST_DEBUG ("NACK #%u, blp %04x", seqnum, blp);
+    GST_DEBUG ("NACK #%u, blp %04x, SSRC 0x%08x", seqnum, blp, media_ssrc);
 
     RTP_SESSION_UNLOCK (sess);
-    sess->callbacks.notify_nack (sess, seqnum, blp,
+    sess->callbacks.notify_nack (sess, seqnum, blp, media_ssrc,
         sess->notify_nack_user_data);
     RTP_SESSION_LOCK (sess);
 
index 76691c7..7056bf3 100644 (file)
@@ -147,12 +147,13 @@ typedef GstClockTime (*RTPSessionRequestTime) (RTPSession *sess,
  * @sess: an #RTPSession
  * @seqnum: the missing seqnum
  * @blp: other missing seqnums
+ * @ssrc: SSRC of requested stream
  * @user_data: user data specified when registering
  *
  * Notifies of NACKed frames.
  */
 typedef void (*RTPSessionNotifyNACK) (RTPSession *sess,
-    guint16 seqnum, guint16 blp, gpointer user_data);
+    guint16 seqnum, guint16 blp, guint32 ssrc, gpointer user_data);
 
 /**
  * RTPSessionCallbacks: