[asterisk-commits] russell: trunk r105933 - in /trunk: ./ include/asterisk/ main/

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Tue Mar 4 19:54:16 CST 2008


Author: russell
Date: Tue Mar  4 19:54:16 2008
New Revision: 105933

URL: http://svn.digium.com/view/asterisk?view=rev&rev=105933
Log:
Merged revisions 105932 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r105932 | russell | 2008-03-04 19:52:18 -0600 (Tue, 04 Mar 2008) | 5 lines

Fix a bug that I just noticed in the RTP code.  The calculation for setting the
len field in an ast_frame of audio was wrong when G.722 is in use.  The len field
represents the number of ms of audio that the frame contains.  It would have
set the value to be twice what it should be.

........

Modified:
    trunk/   (props changed)
    trunk/include/asterisk/frame.h
    trunk/main/rtp.c
    trunk/main/translate.c

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

Modified: trunk/include/asterisk/frame.h
URL: http://svn.digium.com/view/asterisk/trunk/include/asterisk/frame.h?view=diff&rev=105933&r1=105932&r2=105933
==============================================================================
--- trunk/include/asterisk/frame.h (original)
+++ trunk/include/asterisk/frame.h Tue Mar  4 19:54:16 2008
@@ -611,6 +611,17 @@
  */
 int ast_frame_slinear_sum(struct ast_frame *f1, struct ast_frame *f2);
 
+/*!
+ * \brief Get the sample rate for a given format.
+ */
+static force_inline int ast_format_rate(int format)
+{
+	if (format == AST_FORMAT_G722 || format == AST_FORMAT_SLINEAR16)
+		return 16000;
+
+	return 8000;
+}
+
 #if defined(__cplusplus) || defined(c_plusplus)
 }
 #endif

Modified: trunk/main/rtp.c
URL: http://svn.digium.com/view/asterisk/trunk/main/rtp.c?view=diff&rev=105933&r1=105932&r2=105933
==============================================================================
--- trunk/main/rtp.c (original)
+++ trunk/main/rtp.c Tue Mar  4 19:54:16 2008
@@ -1612,7 +1612,7 @@
 		/* Add timing data to let ast_generic_bridge() put the frame into a jitterbuf */
 		ast_set_flag(&rtp->f, AST_FRFLAG_HAS_TIMING_INFO);
 		rtp->f.ts = timestamp / 8;
-		rtp->f.len = rtp->f.samples / 8;
+		rtp->f.len = rtp->f.samples / ( (ast_format_rate(rtp->f.subclass) == 16000) ? 16 : 8 );
 	} else if(rtp->f.subclass & AST_FORMAT_VIDEO_MASK) {
 		/* Video -- samples is # of samples vs. 90000 */
 		if (!rtp->lastividtimestamp)

Modified: trunk/main/translate.c
URL: http://svn.digium.com/view/asterisk/trunk/main/translate.c?view=diff&rev=105933&r1=105932&r2=105933
==============================================================================
--- trunk/main/translate.c (original)
+++ trunk/main/translate.c Tue Mar  4 19:54:16 2008
@@ -296,14 +296,6 @@
 
 	AST_RWLIST_UNLOCK(&translators);
 	return head;
-}
-
-static inline int format_rate(int format)
-{
-	if (format == AST_FORMAT_G722 || format == AST_FORMAT_SLINEAR16)
-		return 16000;
-
-	return 8000;
 }
 
 /*! \brief do the actual translation */
@@ -342,7 +334,7 @@
 			path->nextout = f->delivery;
 		}
 		/* Predict next incoming sample */
-		path->nextin = ast_tvadd(path->nextin, ast_samp2tv(f->samples, format_rate(f->subclass)));
+		path->nextin = ast_tvadd(path->nextin, ast_samp2tv(f->samples, ast_format_rate(f->subclass)));
 	}
 	delivery = f->delivery;
 	for ( ; out && p ; p = p->next) {
@@ -366,7 +358,7 @@
 		
 		/* Predict next outgoing timestamp from samples in this
 		   frame. */
-		path->nextout = ast_tvadd(path->nextout, ast_samp2tv(out->samples, format_rate(out->subclass)));
+		path->nextout = ast_tvadd(path->nextout, ast_samp2tv(out->samples, ast_format_rate(out->subclass)));
 	} else {
 		out->delivery = ast_tv(0, 0);
 		ast_set2_flag(out, has_timing_info, AST_FRFLAG_HAS_TIMING_INFO);
@@ -390,7 +382,7 @@
 	struct rusage start;
 	struct rusage end;
 	int cost;
-	int out_rate = format_rate(t->dstfmt);
+	int out_rate = ast_format_rate(t->dstfmt);
 
 	if (!seconds)
 		seconds = 1;




More information about the asterisk-commits mailing list