Commit 297002cf authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

RTP sout: append RTCP BYE to the Sender Report

Pointed-out-by: Sébastien Escudier
parent 9074b2fc
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
struct rtcp_sender_t struct rtcp_sender_t
{ {
size_t length; /* RTCP packet length */ 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 */ int handle; /* RTCP socket handler */
uint32_t packets; /* RTP packets sent */ uint32_t packets; /* RTP packets sent */
...@@ -164,15 +164,20 @@ void CloseRTCP (rtcp_sender_t *rtcp) ...@@ -164,15 +164,20 @@ void CloseRTCP (rtcp_sender_t *rtcp)
return; return;
uint8_t *ptr = rtcp->payload; uint8_t *ptr = rtcp->payload;
uint64_t now64 = NTPtime64 ();
SetQWBE (ptr + 8, now64); /* Update the Sender Report timestamp */
/* Bye */ /* Bye */
ptr += rtcp->length;
ptr[0] = (2 << 6) | 1; /* V = 2, P = 0, SC = 1 */ ptr[0] = (2 << 6) | 1; /* V = 2, P = 0, SC = 1 */
ptr[1] = 203; /* payload type: Bye */ ptr[1] = 203; /* payload type: Bye */
SetWBE (ptr + 2, 1); 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 are THE sender, so we are more important than anybody else, so
* we can afford not to check bandwidth constraints here. */ * 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); net_Close (rtcp->handle);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment