[asterisk-commits] kmoore: trunk r351613 - in /trunk: ./ res/res_rtp_asterisk.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Thu Jan 19 16:44:39 CST 2012


Author: kmoore
Date: Thu Jan 19 16:44:38 2012
New Revision: 351613

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=351613
Log:
Correct output of RTCP jitter statistics in SR and RR reports

Change the RTCP RR and SR generation code to convert Asterisk's internal jitter
statistics to be represented in RTP timestamp units based on the rate of the
codec in use instead of in seconds.

(closes issue ASTERISK-14530)
........

Merged revisions 351611 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 351612 from http://svn.asterisk.org/svn/asterisk/branches/10

Modified:
    trunk/   (props changed)
    trunk/res/res_rtp_asterisk.c

Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-10-merged' - no diff available.

Modified: trunk/res/res_rtp_asterisk.c
URL: http://svnview.digium.com/svn/asterisk/trunk/res/res_rtp_asterisk.c?view=diff&rev=351613&r1=351612&r2=351613
==============================================================================
--- trunk/res/res_rtp_asterisk.c (original)
+++ trunk/res/res_rtp_asterisk.c Thu Jan 19 16:44:38 2012
@@ -137,7 +137,7 @@
 	unsigned int txcount;           /*!< How many packets have we sent? */
 	unsigned int txoctetcount;      /*!< How many octets have we sent? (txcount*160)*/
 	unsigned int cycles;            /*!< Shifted count of sequence number cycles */
-	double rxjitter;                /*!< Interarrival jitter at the moment */
+	double rxjitter;                /*!< Interarrival jitter at the moment in seconds */
 	double rxtransit;               /*!< Relative transit time for previous packet */
 	struct ast_format lasttxformat;
 	struct ast_format lastrxformat;
@@ -900,6 +900,7 @@
 	char bdata[1024];
 	struct timeval dlsr;
 	int fraction;
+	int rate = rtp_get_rate(&rtp->f.subclass.format);
 
 	double rxlost_current;
 
@@ -949,7 +950,7 @@
 	rtcpheader[2] = htonl(rtp->themssrc);
 	rtcpheader[3] = htonl(((fraction & 0xff) << 24) | (lost & 0xffffff));
 	rtcpheader[4] = htonl((rtp->cycles) | ((rtp->lastrxseqno & 0xffff)));
-	rtcpheader[5] = htonl((unsigned int)(rtp->rxjitter * 65536.));
+	rtcpheader[5] = htonl((unsigned int)(rtp->rxjitter * rate));
 	rtcpheader[6] = htonl(rtp->rtcp->themrxlsr);
 	rtcpheader[7] = htonl((((dlsr.tv_sec * 1000) + (dlsr.tv_usec / 1000)) * 65536) / 1000);
 
@@ -1003,6 +1004,7 @@
 	int fraction;
 	struct timeval dlsr;
 	char bdata[512];
+	int rate = rtp_get_rate(&rtp->f.subclass.format);
 
 	if (!rtp || !rtp->rtcp)
 		return 0;
@@ -1043,7 +1045,7 @@
 	rtcpheader[7] = htonl(rtp->themssrc);
 	rtcpheader[8] = htonl(((fraction & 0xff) << 24) | (lost & 0xffffff));
 	rtcpheader[9] = htonl((rtp->cycles) | ((rtp->lastrxseqno & 0xffff)));
-	rtcpheader[10] = htonl((unsigned int)(rtp->rxjitter * 65536.));
+	rtcpheader[10] = htonl((unsigned int)(rtp->rxjitter * rate));
 	rtcpheader[11] = htonl(rtp->rtcp->themrxlsr);
 	rtcpheader[12] = htonl((((dlsr.tv_sec * 1000) + (dlsr.tv_usec / 1000)) * 65536) / 1000);
 	len += 24;




More information about the asterisk-commits mailing list