opusrtp: Add support for RTP extension headers
authorMartin Meszaros <meszaros@hft-leipzig.de>
Fri, 27 Oct 2017 19:52:12 +0000 (21:52 +0200)
committerMark Harris <mark.hsj@gmail.com>
Tue, 24 Apr 2018 06:06:45 +0000 (23:06 -0700)
Properly calculate the header size when extension headers are used.

Signed-off-by: Mark Harris <mark.hsj@gmail.com>
src/opusrtp.c

index 2d1f291..ef6652f 100644 (file)
@@ -436,6 +436,12 @@ int parse_rtp_header(const unsigned char *packet, int size, rtp_header *rtp)
   rtp->ext = (packet[0] >> 4) & 1;
   rtp->cc = packet[0] & 7;
   rtp->header_size = 12 + 4 * rtp->cc;
+  if (rtp->ext == 1) {
+    uint16_t ext_length;
+    rtp->header_size += 4;
+    ext_length = rbe16(packet + rtp->header_size - 2);
+    rtp->header_size += ext_length * 4;
+  }
   rtp->payload_size = size - rtp->header_size;
 
   rtp->mark = (packet[1] >> 7) & 1;