]> git.sesse.net Git - vlc/commitdiff
RTP sout: append RTCP BYE to the Sender Report
authorRémi Denis-Courmont <rdenis@simphalempin.com>
Mon, 16 Jun 2008 16:47:40 +0000 (19:47 +0300)
committerRémi Denis-Courmont <rdenis@simphalempin.com>
Mon, 16 Jun 2008 16:47:40 +0000 (19:47 +0300)
Pointed-out-by: Sébastien Escudier
modules/stream_out/rtcp.c

index 438f3d976ab988ed664bf866ea333536496a5ed0..5525b7683f9a9710142d4d3611c412a8d30e2281 100644 (file)
@@ -53,7 +53,7 @@
 struct rtcp_sender_t
 {
     size_t   length;  /* RTCP packet length */
-    uint8_t  payload[28 + 8 + (2 * 257)];
+    uint8_t  payload[28 + 8 + (2 * 257) + 8];
     int      handle;  /* RTCP socket handler */
 
     uint32_t packets; /* RTP packets sent */
@@ -164,15 +164,20 @@ void CloseRTCP (rtcp_sender_t *rtcp)
         return;
 
     uint8_t *ptr = rtcp->payload;
+    uint64_t now64 = NTPtime64 ();
+    SetQWBE (ptr + 8, now64); /* Update the Sender Report timestamp */
+
     /* Bye */
+    ptr += rtcp->length;
     ptr[0] = (2 << 6) | 1; /* V = 2, P = 0, SC = 1 */
     ptr[1] = 203; /* payload type: Bye */
     SetWBE (ptr + 2, 1);
-    /* SSRC is already there :) */
+    memcpy (ptr + 4, rtcp->payload + 4, 4); /* Copy SSRC from Sender Report */
+    rtcp->length += 8;
 
     /* We are THE sender, so we are more important than anybody else, so
      * we can afford not to check bandwidth constraints here. */
-    send (rtcp->handle, rtcp->payload, 8, 0);
+    send (rtcp->handle, rtcp->payload, rtcp->length, 0);
     net_Close (rtcp->handle);
 }