[asterisk-commits] dvossel: branch dvossel/fixtheworld_phase1_step3 r300162 - in /team/dvossel/f...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Mon Jan 3 21:37:49 UTC 2011


Author: dvossel
Date: Mon Jan  3 15:37:46 2011
New Revision: 300162

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=300162
Log:
Codec pref size is no longer based on the size of the format_t bit field.

Modified:
    team/dvossel/fixtheworld_phase1_step3/include/asterisk/format_pref.h
    team/dvossel/fixtheworld_phase1_step3/main/format_pref.c

Modified: team/dvossel/fixtheworld_phase1_step3/include/asterisk/format_pref.h
URL: http://svnview.digium.com/svn/asterisk/team/dvossel/fixtheworld_phase1_step3/include/asterisk/format_pref.h?view=diff&rev=300162&r1=300161&r2=300162
==============================================================================
--- team/dvossel/fixtheworld_phase1_step3/include/asterisk/format_pref.h (original)
+++ team/dvossel/fixtheworld_phase1_step3/include/asterisk/format_pref.h Mon Jan  3 15:37:46 2011
@@ -25,9 +25,16 @@
 #define _AST_FORMATPREF_H_
 
 #include "asterisk/frame_defs.h"
+
+#define AST_CODEC_PREF_SIZE 64
 struct ast_codec_pref {
-	char order[sizeof(format_t) * 8];
-	char framing[sizeof(format_t) * 8];
+	/*! This array represents the each format in the pref list */
+	/* TODO uncomment me when the switch over to ast_format takes place */
+	// struct ast_format[AST_CODEC_PREF_SIZE];
+	/*! This array represents the format id's index in the global format list. */
+	char order[AST_CODEC_PREF_SIZE];
+	/*! This array represents the format's framing size if present. */
+	char framing[AST_CODEC_PREF_SIZE];
 };
 
 /*! \page AudioCodecPref Audio Codec Preferences

Modified: team/dvossel/fixtheworld_phase1_step3/main/format_pref.c
URL: http://svnview.digium.com/svn/asterisk/team/dvossel/fixtheworld_phase1_step3/main/format_pref.c?view=diff&rev=300162&r1=300161&r2=300162
==============================================================================
--- team/dvossel/fixtheworld_phase1_step3/main/format_pref.c (original)
+++ team/dvossel/fixtheworld_phase1_step3/main/format_pref.c Mon Jan  3 15:37:46 2011
@@ -27,7 +27,6 @@
 
 #include "asterisk/_private.h"
 #include "asterisk/version.h"
-#include "asterisk/format.h"
 #include "asterisk/frame.h"
 #include "asterisk/channel.h"
 #include "asterisk/utils.h"
@@ -37,6 +36,8 @@
 	int x, differential = (int) 'A', mem;
 	char *from, *to;
 
+	/* TODO re-evaluate this function.  It is using the order of the formats specified
+	 * in the global format list in a way that may not be safe. */
 	if (right) {
 		from = pref->order;
 		to = buf;
@@ -44,11 +45,11 @@
 	} else {
 		to = pref->order;
 		from = buf;
-		mem = sizeof(format_t) * 8;
+		mem = AST_CODEC_PREF_SIZE;
 	}
 
 	memset(to, 0, mem);
-	for (x = 0; x < sizeof(format_t) * 8; x++) {
+	for (x = 0; x < AST_CODEC_PREF_SIZE; x++) {
 		if (!from[x])
 			break;
 		to[x] = right ? (from[x] + differential) : (from[x] - differential);
@@ -66,7 +67,7 @@
 	total_len = size;
 	buf[0] = '(';
 	total_len--;
-	for (x = 0; x < sizeof(format_t) * 8; x++) {
+	for (x = 0; x < AST_CODEC_PREF_SIZE; x++) {
 		if (total_len <= 0)
 			break;
 		if (!(codec = ast_codec_pref_index(pref,x)))
@@ -78,7 +79,7 @@
 			strncat(buf, formatname, total_len - 1); /* safe */
 			total_len -= slen;
 		}
-		if (total_len && x < sizeof(format_t) * 8 - 1 && ast_codec_pref_index(pref, x + 1)) {
+		if (total_len && x < AST_CODEC_PREF_SIZE - 1 && ast_codec_pref_index(pref, x + 1)) {
 			strncat(buf, "|", total_len - 1); /* safe */
 			total_len--;
 		}
@@ -179,7 +180,7 @@
 		return;
 
 	/* Now find any existing occurrence, or the end */
-	for (x = 0; x < sizeof(format_t) * 8; x++) {
+	for (x = 0; x < AST_CODEC_PREF_SIZE; x++) {
 		if (!pref->order[x] || pref->order[x] == newindex)
 			break;
 	}




More information about the asterisk-commits mailing list