From: Joshua Colp Date: Tue, 19 Jun 2007 17:00:58 +0000 (+0000) Subject: Handle the CC field in the RTP header. (issue #9384 reported by DoodleHu) X-Git-Tag: 1.2.20~37 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3d1a5f71c5229f077360e35ab99f37040f3d8fa1;p=thirdparty%2Fasterisk.git Handle the CC field in the RTP header. (issue #9384 reported by DoodleHu) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@69992 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/rtp.c b/rtp.c index 81cddd0c73..f0430b5111 100644 --- a/rtp.c +++ b/rtp.c @@ -437,6 +437,7 @@ struct ast_frame *ast_rtp_read(struct ast_rtp *rtp) int padding; int mark; int ext; + int cc; int x; char iabuf[INET_ADDRSTRLEN]; unsigned int ssrc; @@ -497,6 +498,7 @@ struct ast_frame *ast_rtp_read(struct ast_rtp *rtp) padding = seqno & (1 << 29); mark = seqno & (1 << 23); ext = seqno & (1 << 28); + cc = (seqno & 0xF000000) >> 24; seqno &= 0xffff; timestamp = ntohl(rtpheader[1]); ssrc = ntohl(rtpheader[2]); @@ -514,10 +516,15 @@ struct ast_frame *ast_rtp_read(struct ast_rtp *rtp) res -= rtp->rawdata[AST_FRIENDLY_OFFSET + res - 1]; } + if (cc) { + /* CSRC fields present */ + hdrlen += cc*4; + } + if (ext) { /* RTP Extension present */ + hdrlen += (ntohl(rtpheader[hdrlen/4]) & 0xffff) << 2; hdrlen += 4; - hdrlen += (ntohl(rtpheader[3]) & 0xffff) << 2; } if (res < hdrlen) {