[asterisk-commits] tilghman: branch tilghman/codec_bits3 r225765 - in /team/tilghman/codec_bits3...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Sun Oct 25 18:22:47 CDT 2009


Author: tilghman
Date: Sun Oct 25 18:22:37 2009
New Revision: 225765

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=225765
Log:
Yay, it compiles!  Ship it!  (kidding)

Modified:
    team/tilghman/codec_bits3/include/asterisk/slinfactory.h
    team/tilghman/codec_bits3/main/indications.c
    team/tilghman/codec_bits3/main/manager.c
    team/tilghman/codec_bits3/main/pbx.c
    team/tilghman/codec_bits3/main/rtp_engine.c
    team/tilghman/codec_bits3/main/slinfactory.c
    team/tilghman/codec_bits3/main/translate.c
    team/tilghman/codec_bits3/main/udptl.c

Modified: team/tilghman/codec_bits3/include/asterisk/slinfactory.h
URL: http://svnview.digium.com/svn/asterisk/team/tilghman/codec_bits3/include/asterisk/slinfactory.h?view=diff&rev=225765&r1=225764&r2=225765
==============================================================================
--- team/tilghman/codec_bits3/include/asterisk/slinfactory.h (original)
+++ team/tilghman/codec_bits3/include/asterisk/slinfactory.h Sun Oct 25 18:22:37 2009
@@ -37,8 +37,8 @@
 	short *offset;                           /*!< Offset into the hold where audio begins */
 	size_t holdlen;                          /*!< Number of samples currently in the hold */
 	unsigned int size;                       /*!< Number of samples currently in the factory */
-	unsigned int format;                     /*!< Current format the translation path is converting from */
-	unsigned int output_format;		 /*!< The output format desired */
+	format_t format;                         /*!< Current format the translation path is converting from */
+	format_t output_format;                  /*!< The output format desired */
 };
 
 /*!

Modified: team/tilghman/codec_bits3/main/indications.c
URL: http://svnview.digium.com/svn/asterisk/team/tilghman/codec_bits3/main/indications.c?view=diff&rev=225765&r1=225764&r2=225765
==============================================================================
--- team/tilghman/codec_bits3/main/indications.c (original)
+++ team/tilghman/codec_bits3/main/indications.c Sun Oct 25 18:22:37 2009
@@ -209,7 +209,7 @@
 	}
 
 	ps->f.frametype = AST_FRAME_VOICE;
-	ps->f.subclass = AST_FORMAT_SLINEAR;
+	ps->f.subclass.codec = AST_FORMAT_SLINEAR;
 	ps->f.datalen = len;
 	ps->f.samples = samples;
 	ps->f.offset = AST_FRIENDLY_OFFSET;

Modified: team/tilghman/codec_bits3/main/manager.c
URL: http://svnview.digium.com/svn/asterisk/team/tilghman/codec_bits3/main/manager.c?view=diff&rev=225765&r1=225764&r2=225765
==============================================================================
--- team/tilghman/codec_bits3/main/manager.c (original)
+++ team/tilghman/codec_bits3/main/manager.c Sun Oct 25 18:22:37 2009
@@ -3088,12 +3088,12 @@
 	}
 
 	for (feature_code = atxfer_feature->exten; feature_code && *feature_code; ++feature_code) {
-		struct ast_frame f = { AST_FRAME_DTMF, *feature_code };
+		struct ast_frame f = { AST_FRAME_DTMF, .subclass.integer = *feature_code };
 		ast_queue_frame(chan, &f);
 	}
 
 	for (feature_code = (char *)exten; feature_code && *feature_code; ++feature_code) {
-		struct ast_frame f = { AST_FRAME_DTMF, *feature_code };
+		struct ast_frame f = { AST_FRAME_DTMF, .subclass.integer = *feature_code };
 		ast_queue_frame(chan, &f);
 	}
 
@@ -3200,7 +3200,7 @@
 	/*! data can contain a channel name, extension number, username, password, etc. */
 	char data[512];
 	int timeout;
-	int format;				/*!< Codecs used for a call */
+	format_t format;				/*!< Codecs used for a call */
 	char app[AST_MAX_APP];
 	char appdata[AST_MAX_EXTENSION];
 	char cid_name[AST_MAX_EXTENSION];
@@ -3285,7 +3285,7 @@
 	int reason = 0;
 	char tmp[256];
 	char tmp2[256];
-	int format = AST_FORMAT_SLINEAR;
+	format_t format = AST_FORMAT_SLINEAR;
 
 	pthread_t th;
 	if (ast_strlen_zero(name)) {

Modified: team/tilghman/codec_bits3/main/pbx.c
URL: http://svnview.digium.com/svn/asterisk/team/tilghman/codec_bits3/main/pbx.c?view=diff&rev=225765&r1=225764&r2=225765
==============================================================================
--- team/tilghman/codec_bits3/main/pbx.c (original)
+++ team/tilghman/codec_bits3/main/pbx.c Sun Oct 25 18:22:37 2009
@@ -8155,8 +8155,8 @@
 		if (!f)
 			break;
 		if (f->frametype == AST_FRAME_CONTROL) {
-			if ((f->subclass == AST_CONTROL_BUSY)  ||
-			    (f->subclass == AST_CONTROL_CONGESTION) ) {
+			if ((f->subclass.integer == AST_CONTROL_BUSY)  ||
+			    (f->subclass.integer == AST_CONTROL_CONGESTION) ) {
 				ast_frfree(f);
 				break;
 			}

Modified: team/tilghman/codec_bits3/main/rtp_engine.c
URL: http://svnview.digium.com/svn/asterisk/team/tilghman/codec_bits3/main/rtp_engine.c?view=diff&rev=225765&r1=225764&r2=225765
==============================================================================
--- team/tilghman/codec_bits3/main/rtp_engine.c (original)
+++ team/tilghman/codec_bits3/main/rtp_engine.c Sun Oct 25 18:22:37 2009
@@ -601,7 +601,7 @@
 	return result;
 }
 
-void ast_rtp_codecs_payload_formats(struct ast_rtp_codecs *codecs, int *astformats, int *nonastformats)
+void ast_rtp_codecs_payload_formats(struct ast_rtp_codecs *codecs, format_t *astformats, int *nonastformats)
 {
 	int i;
 
@@ -619,7 +619,7 @@
 	}
 }
 
-int ast_rtp_codecs_payload_code(struct ast_rtp_codecs *codecs, const int asterisk_format, const int code)
+int ast_rtp_codecs_payload_code(struct ast_rtp_codecs *codecs, const int asterisk_format, const format_t code)
 {
 	int i;
 
@@ -638,7 +638,7 @@
 	return -1;
 }
 
-const char *ast_rtp_lookup_mime_subtype2(const int asterisk_format, const int code, enum ast_rtp_options options)
+const char *ast_rtp_lookup_mime_subtype2(const int asterisk_format, const format_t code, enum ast_rtp_options options)
 {
 	int i;
 
@@ -668,7 +668,7 @@
 	return 0;
 }
 
-char *ast_rtp_lookup_mime_multiple2(struct ast_str *buf, const int capability, const int asterisk_format, enum ast_rtp_options options)
+char *ast_rtp_lookup_mime_multiple2(struct ast_str *buf, const format_t capability, const int asterisk_format, enum ast_rtp_options options)
 {
 	int format, found = 0;
 
@@ -676,7 +676,7 @@
 		return NULL;
 	}
 
-	ast_str_append(&buf, 0, "0x%x (", capability);
+	ast_str_append(&buf, 0, "0x%llx (", (unsigned long long) capability);
 
 	for (format = 1; format < AST_RTP_MAX; format <<= 1) {
 		if (capability & format) {
@@ -851,13 +851,13 @@
 			res = AST_BRIDGE_COMPLETE;
 			break;
 		} else if ((fr->frametype == AST_FRAME_CONTROL) && !(flags & AST_BRIDGE_IGNORE_SIGS)) {
-			if ((fr->subclass == AST_CONTROL_HOLD) ||
-			    (fr->subclass == AST_CONTROL_UNHOLD) ||
-			    (fr->subclass == AST_CONTROL_VIDUPDATE) ||
-			    (fr->subclass == AST_CONTROL_SRCUPDATE) ||
-			    (fr->subclass == AST_CONTROL_T38_PARAMETERS)) {
+			if ((fr->subclass.integer == AST_CONTROL_HOLD) ||
+			    (fr->subclass.integer == AST_CONTROL_UNHOLD) ||
+			    (fr->subclass.integer == AST_CONTROL_VIDUPDATE) ||
+			    (fr->subclass.integer == AST_CONTROL_SRCUPDATE) ||
+			    (fr->subclass.integer == AST_CONTROL_T38_PARAMETERS)) {
 				/* If we are going on hold, then break callback mode and P2P bridging */
-				if (fr->subclass == AST_CONTROL_HOLD) {
+				if (fr->subclass.integer == AST_CONTROL_HOLD) {
 					if (instance0->engine->local_bridge) {
 						instance0->engine->local_bridge(instance0, NULL);
 					}
@@ -866,7 +866,7 @@
 					}
 					instance0->bridged = NULL;
 					instance1->bridged = NULL;
-				} else if (fr->subclass == AST_CONTROL_UNHOLD) {
+				} else if (fr->subclass.integer == AST_CONTROL_UNHOLD) {
 					if (instance0->engine->local_bridge) {
 						instance0->engine->local_bridge(instance0, instance1);
 					}
@@ -876,12 +876,12 @@
 					instance0->bridged = instance1;
 					instance1->bridged = instance0;
 				}
-				ast_indicate_data(other, fr->subclass, fr->data.ptr, fr->datalen);
+				ast_indicate_data(other, fr->subclass.integer, fr->data.ptr, fr->datalen);
 				ast_frfree(fr);
 			} else {
 				*fo = fr;
 				*rc = who;
-				ast_debug(1, "rtp-engine-local-bridge: Got a FRAME_CONTROL (%d) frame on channel %s\n", fr->subclass, who->name);
+				ast_debug(1, "rtp-engine-local-bridge: Got a FRAME_CONTROL (%d) frame on channel %s\n", fr->subclass.integer, who->name);
 				res = AST_BRIDGE_COMPLETE;
 				break;
 			}
@@ -923,12 +923,12 @@
 
 static enum ast_bridge_result remote_bridge_loop(struct ast_channel *c0, struct ast_channel *c1, struct ast_rtp_instance *instance0, struct ast_rtp_instance *instance1,
 						 struct ast_rtp_instance *vinstance0, struct ast_rtp_instance *vinstance1, struct ast_rtp_instance *tinstance0,
-						 struct ast_rtp_instance *tinstance1, struct ast_rtp_glue *glue0, struct ast_rtp_glue *glue1, int codec0, int codec1, int timeoutms,
+						 struct ast_rtp_instance *tinstance1, struct ast_rtp_glue *glue0, struct ast_rtp_glue *glue1, format_t codec0, format_t codec1, int timeoutms,
 						 int flags, struct ast_frame **fo, struct ast_channel **rc, void *pvt0, void *pvt1)
 {
 	enum ast_bridge_result res = AST_BRIDGE_FAILED;
 	struct ast_channel *who = NULL, *other = NULL, *cs[3] = { NULL, };
-	int oldcodec0 = codec0, oldcodec1 = codec1;
+	format_t oldcodec0 = codec0, oldcodec1 = codec1;
 	struct sockaddr_in ac1 = {0,}, vac1 = {0,}, tac1 = {0,}, ac0 = {0,}, vac0 = {0,}, tac0 = {0,};
 	struct sockaddr_in t1 = {0,}, vt1 = {0,}, tt1 = {0,}, t0 = {0,}, vt0 = {0,}, tt0 = {0,};
 	struct ast_frame *fr = NULL;
@@ -1009,18 +1009,18 @@
 		    (vinstance1 && inaddrcmp(&vt1, &vac1)) ||
 		    (tinstance1 && inaddrcmp(&tt1, &tac1)) ||
 		    (codec1 != oldcodec1)) {
-			ast_debug(1, "Oooh, '%s' changed end address to %s:%d (format %d)\n",
-				  c1->name, ast_inet_ntoa(t1.sin_addr), ntohs(t1.sin_port), codec1);
-			ast_debug(1, "Oooh, '%s' changed end vaddress to %s:%d (format %d)\n",
-				  c1->name, ast_inet_ntoa(vt1.sin_addr), ntohs(vt1.sin_port), codec1);
-			ast_debug(1, "Oooh, '%s' changed end taddress to %s:%d (format %d)\n",
-				  c1->name, ast_inet_ntoa(tt1.sin_addr), ntohs(tt1.sin_port), codec1);
-			ast_debug(1, "Oooh, '%s' was %s:%d/(format %d)\n",
-				  c1->name, ast_inet_ntoa(ac1.sin_addr), ntohs(ac1.sin_port), oldcodec1);
-			ast_debug(1, "Oooh, '%s' was %s:%d/(format %d)\n",
-				  c1->name, ast_inet_ntoa(vac1.sin_addr), ntohs(vac1.sin_port), oldcodec1);
-			ast_debug(1, "Oooh, '%s' was %s:%d/(format %d)\n",
-				  c1->name, ast_inet_ntoa(tac1.sin_addr), ntohs(tac1.sin_port), oldcodec1);
+			ast_debug(1, "Oooh, '%s' changed end address to %s:%d (format %s)\n",
+				  c1->name, ast_inet_ntoa(t1.sin_addr), ntohs(t1.sin_port), ast_getformatname(codec1));
+			ast_debug(1, "Oooh, '%s' changed end vaddress to %s:%d (format %s)\n",
+				  c1->name, ast_inet_ntoa(vt1.sin_addr), ntohs(vt1.sin_port), ast_getformatname(codec1));
+			ast_debug(1, "Oooh, '%s' changed end taddress to %s:%d (format %s)\n",
+				  c1->name, ast_inet_ntoa(tt1.sin_addr), ntohs(tt1.sin_port), ast_getformatname(codec1));
+			ast_debug(1, "Oooh, '%s' was %s:%d/(format %s)\n",
+				  c1->name, ast_inet_ntoa(ac1.sin_addr), ntohs(ac1.sin_port), ast_getformatname(oldcodec1));
+			ast_debug(1, "Oooh, '%s' was %s:%d/(format %s)\n",
+				  c1->name, ast_inet_ntoa(vac1.sin_addr), ntohs(vac1.sin_port), ast_getformatname(oldcodec1));
+			ast_debug(1, "Oooh, '%s' was %s:%d/(format %s)\n",
+				  c1->name, ast_inet_ntoa(tac1.sin_addr), ntohs(tac1.sin_port), ast_getformatname(oldcodec1));
 			if (glue0->update_peer(c0, t1.sin_addr.s_addr ? instance1 : NULL, vt1.sin_addr.s_addr ? vinstance1 : NULL, tt1.sin_addr.s_addr ? tinstance1 : NULL, codec1, 0)) {
 				ast_log(LOG_WARNING, "Channel '%s' failed to update to '%s'\n", c0->name, c1->name);
 			}
@@ -1033,10 +1033,10 @@
 		    (vinstance0 && inaddrcmp(&vt0, &vac0)) ||
 		    (tinstance0 && inaddrcmp(&tt0, &tac0)) ||
 		    (codec0 != oldcodec0)) {
-			ast_debug(1, "Oooh, '%s' changed end address to %s:%d (format %d)\n",
-				  c0->name, ast_inet_ntoa(t0.sin_addr), ntohs(t0.sin_port), codec0);
-			ast_debug(1, "Oooh, '%s' was %s:%d/(format %d)\n",
-				  c0->name, ast_inet_ntoa(ac0.sin_addr), ntohs(ac0.sin_port), oldcodec0);
+			ast_debug(1, "Oooh, '%s' changed end address to %s:%d (format %s)\n",
+				  c0->name, ast_inet_ntoa(t0.sin_addr), ntohs(t0.sin_port), ast_getformatname(codec0));
+			ast_debug(1, "Oooh, '%s' was %s:%d/(format %s)\n",
+				  c0->name, ast_inet_ntoa(ac0.sin_addr), ntohs(ac0.sin_port), ast_getformatname(oldcodec0));
 			if (glue1->update_peer(c1, t0.sin_addr.s_addr ? instance0 : NULL, vt0.sin_addr.s_addr ? vinstance0 : NULL, tt0.sin_addr.s_addr ? tinstance0 : NULL, codec0, 0)) {
 				ast_log(LOG_WARNING, "Channel '%s' failed to update to '%s'\n", c1->name, c0->name);
 			}
@@ -1070,19 +1070,19 @@
 			res = AST_BRIDGE_COMPLETE;
 			break;
 		} else if ((fr->frametype == AST_FRAME_CONTROL) && !(flags & AST_BRIDGE_IGNORE_SIGS)) {
-			if ((fr->subclass == AST_CONTROL_HOLD) ||
-			    (fr->subclass == AST_CONTROL_UNHOLD) ||
-			    (fr->subclass == AST_CONTROL_VIDUPDATE) ||
-			    (fr->subclass == AST_CONTROL_SRCUPDATE) ||
-			    (fr->subclass == AST_CONTROL_T38_PARAMETERS)) {
-				if (fr->subclass == AST_CONTROL_HOLD) {
+			if ((fr->subclass.integer == AST_CONTROL_HOLD) ||
+			    (fr->subclass.integer == AST_CONTROL_UNHOLD) ||
+			    (fr->subclass.integer == AST_CONTROL_VIDUPDATE) ||
+			    (fr->subclass.integer == AST_CONTROL_SRCUPDATE) ||
+			    (fr->subclass.integer == AST_CONTROL_T38_PARAMETERS)) {
+				if (fr->subclass.integer == AST_CONTROL_HOLD) {
 					/* If we someone went on hold we want the other side to reinvite back to us */
 					if (who == c0) {
 						glue1->update_peer(c1, NULL, NULL, NULL, 0, 0);
 					} else {
 						glue0->update_peer(c0, NULL, NULL, NULL, 0, 0);
 					}
-				} else if (fr->subclass == AST_CONTROL_UNHOLD) {
+				} else if (fr->subclass.integer == AST_CONTROL_UNHOLD) {
 					/* If they went off hold they should go back to being direct */
 					if (who == c0) {
 						glue1->update_peer(c1, instance0, vinstance0, tinstance0, codec0, 0);
@@ -1102,12 +1102,12 @@
 				if (glue1->get_codec && c1->tech_pvt) {
 					oldcodec1 = codec1 = glue1->get_codec(c1);
 				}
-				ast_indicate_data(other, fr->subclass, fr->data.ptr, fr->datalen);
+				ast_indicate_data(other, fr->subclass.integer, fr->data.ptr, fr->datalen);
 				ast_frfree(fr);
 			} else {
 				*fo = fr;
 				*rc = who;
-				ast_debug(1, "Got a FRAME_CONTROL (%d) frame on channel %s\n", fr->subclass, who->name);
+				ast_debug(1, "Got a FRAME_CONTROL (%d) frame on channel %s\n", fr->subclass.integer, who->name);
 				return AST_BRIDGE_COMPLETE;
 			}
 		} else {
@@ -1286,7 +1286,7 @@
 	struct ast_rtp_glue *glue0, *glue1;
 	enum ast_rtp_glue_result audio_glue0_res = AST_RTP_GLUE_RESULT_FORBID, video_glue0_res = AST_RTP_GLUE_RESULT_FORBID, text_glue0_res = AST_RTP_GLUE_RESULT_FORBID;
 	enum ast_rtp_glue_result audio_glue1_res = AST_RTP_GLUE_RESULT_FORBID, video_glue1_res = AST_RTP_GLUE_RESULT_FORBID, text_glue1_res = AST_RTP_GLUE_RESULT_FORBID;
-	int codec0 = 0, codec1 = 0;
+	format_t codec0 = 0, codec1 = 0;
 	int res = 0;
 
 	/* Lock both channels so we can look for the glue that binds them together */
@@ -1370,7 +1370,7 @@
 	struct ast_rtp_glue *glue0, *glue1;
 	enum ast_rtp_glue_result audio_glue0_res = AST_RTP_GLUE_RESULT_FORBID, video_glue0_res = AST_RTP_GLUE_RESULT_FORBID, text_glue0_res = AST_RTP_GLUE_RESULT_FORBID;
 	enum ast_rtp_glue_result audio_glue1_res = AST_RTP_GLUE_RESULT_FORBID, video_glue1_res = AST_RTP_GLUE_RESULT_FORBID, text_glue1_res = AST_RTP_GLUE_RESULT_FORBID;
-	int codec0 = 0, codec1 = 0;
+	format_t codec0 = 0, codec1 = 0;
 	int res = 0;
 
 	/* If there is no second channel just immediately bail out, we are of no use in that scenario */
@@ -1538,12 +1538,12 @@
 	}
 }
 
-int ast_rtp_instance_set_read_format(struct ast_rtp_instance *instance, int format)
+int ast_rtp_instance_set_read_format(struct ast_rtp_instance *instance, format_t format)
 {
 	return instance->engine->set_read_format ? instance->engine->set_read_format(instance, format) : -1;
 }
 
-int ast_rtp_instance_set_write_format(struct ast_rtp_instance *instance, int format)
+int ast_rtp_instance_set_write_format(struct ast_rtp_instance *instance, format_t format)
 {
 	return instance->engine->set_write_format ? instance->engine->set_write_format(instance, format) : -1;
 }
@@ -1584,9 +1584,9 @@
 	return res;
 }
 
-int ast_rtp_instance_available_formats(struct ast_rtp_instance *instance, int to_endpoint, int to_asterisk)
-{
-	int formats;
+format_t ast_rtp_instance_available_formats(struct ast_rtp_instance *instance, int to_endpoint, int to_asterisk)
+{
+	format_t formats;
 
 	if (instance->engine->available_formats && (formats = instance->engine->available_formats(instance, to_endpoint, to_asterisk))) {
 		return formats;

Modified: team/tilghman/codec_bits3/main/slinfactory.c
URL: http://svnview.digium.com/svn/asterisk/team/tilghman/codec_bits3/main/slinfactory.c?view=diff&rev=225765&r1=225764&r2=225765
==============================================================================
--- team/tilghman/codec_bits3/main/slinfactory.c (original)
+++ team/tilghman/codec_bits3/main/slinfactory.c Sun Oct 25 18:22:37 2009
@@ -85,19 +85,19 @@
 		return 0;
 	}
 
-	if (f->subclass != sf->output_format) {
-		if (sf->trans && f->subclass != sf->format) {
+	if (f->subclass.codec != sf->output_format) {
+		if (sf->trans && f->subclass.codec != sf->format) {
 			ast_translator_free_path(sf->trans);
 			sf->trans = NULL;
 		}
 
 		if (!sf->trans) {
-			if (!(sf->trans = ast_translator_build_path(sf->output_format, f->subclass))) {
-				ast_log(LOG_WARNING, "Cannot build a path from %s to %s\n", ast_getformatname(f->subclass),
+			if (!(sf->trans = ast_translator_build_path(sf->output_format, f->subclass.codec))) {
+				ast_log(LOG_WARNING, "Cannot build a path from %s to %s\n", ast_getformatname(f->subclass.codec),
 					ast_getformatname(sf->output_format));
 				return 0;
 			}
-			sf->format = f->subclass;
+			sf->format = f->subclass.codec;
 		}
 
 		if (!(begin_frame = ast_translate(sf->trans, f, 0))) {

Modified: team/tilghman/codec_bits3/main/translate.c
URL: http://svnview.digium.com/svn/asterisk/team/tilghman/codec_bits3/main/translate.c?view=diff&rev=225765&r1=225764&r2=225765
==============================================================================
--- team/tilghman/codec_bits3/main/translate.c (original)
+++ team/tilghman/codec_bits3/main/translate.c Sun Oct 25 18:22:37 2009
@@ -70,14 +70,14 @@
  */
 
 /*! \brief returns the index of the lowest bit set */
-static force_inline int powerof(unsigned int d)
-{
-	int x = ffs(d);
+static force_inline int powerof(format_t d)
+{
+	int x = ffsll(d);
 
 	if (x)
 		return x - 1;
 
-	ast_log(LOG_WARNING, "No bits set? %d\n", d);
+	ast_log(LOG_WARNING, "No bits set? %llu\n", (unsigned long long) d);
 
 	return -1;
 }
@@ -221,7 +221,7 @@
 	}
 
 	f->frametype = AST_FRAME_VOICE;
-	f->subclass = 1 << (pvt->t->dstfmt);
+	f->subclass.codec = 1 << (pvt->t->dstfmt);
 	f->mallocd = 0;
 	f->offset = AST_FRIENDLY_OFFSET;
 	f->src = pvt->t->name;
@@ -247,7 +247,7 @@
 }
 
 /*! \brief Build a chain of translators based upon the given source and dest formats */
-struct ast_trans_pvt *ast_translator_build_path(int dest, int source)
+struct ast_trans_pvt *ast_translator_build_path(format_t dest, format_t source)
 {
 	struct ast_trans_pvt *head = NULL, *tail = NULL;
 	
@@ -271,7 +271,8 @@
 			return NULL;
 		}
 		if (!(cur = newpvt(t))) {
-			ast_log(LOG_WARNING, "Failed to build translator step from %d to %d\n", source, dest);
+			ast_log(LOG_WARNING, "Failed to build translator step from %s to %s\n",
+				ast_getformatname(source), ast_getformatname(dest));
 			if (head)
 				ast_translator_free_path(head);	
 			AST_RWLIST_UNLOCK(&translators);
@@ -327,7 +328,7 @@
 			path->nextout = f->delivery;
 		}
 		/* Predict next incoming sample */
-		path->nextin = ast_tvadd(path->nextin, ast_samp2tv(f->samples, ast_format_rate(f->subclass)));
+		path->nextin = ast_tvadd(path->nextin, ast_samp2tv(f->samples, ast_format_rate(f->subclass.codec)));
 	}
 	delivery = f->delivery;
 	for ( ; out && p ; p = p->next) {
@@ -351,7 +352,7 @@
 		
 		/* Predict next outgoing timestamp from samples in this
 		   frame. */
-		path->nextout = ast_tvadd(path->nextout, ast_samp2tv(out->samples, ast_format_rate(out->subclass)));
+		path->nextout = ast_tvadd(path->nextout, ast_samp2tv(out->samples, ast_format_rate(out->subclass.codec)));
 	} else {
 		out->delivery = ast_tv(0, 0);
 		ast_set2_flag(out, has_timing_info, AST_FRFLAG_HAS_TIMING_INFO);
@@ -638,8 +639,8 @@
 			return -1;
 		}
 		if (t->dstfmt != powerof(AST_FORMAT_SLINEAR))
-			ast_log(LOG_WARNING, "plc_samples %d format %x\n",
-				t->plc_samples, t->dstfmt);
+			ast_log(LOG_WARNING, "plc_samples %d format %llx\n",
+				t->plc_samples, (unsigned long long) t->dstfmt);
 	}
 	if (t->srcfmt >= MAX_FORMAT) {
 		ast_log(LOG_WARNING, "Source format %s is larger than MAX_FORMAT\n", ast_getformatname(t->srcfmt));
@@ -792,7 +793,7 @@
 	}
 }
 
-unsigned int ast_translate_path_steps(unsigned int dest, unsigned int src)
+unsigned int ast_translate_path_steps(format_t dest, format_t src)
 {
 	unsigned int res = -1;
 
@@ -814,12 +815,12 @@
 	return res;
 }
 
-unsigned int ast_translate_available_formats(unsigned int dest, unsigned int src)
-{
-	unsigned int res = dest;
+format_t ast_translate_available_formats(format_t dest, format_t src)
+{
+	format_t res = dest;
 	unsigned int x;
-	unsigned int src_audio = src & AST_FORMAT_AUDIO_MASK;
-	unsigned int src_video = src & AST_FORMAT_VIDEO_MASK;
+	format_t src_audio = src & AST_FORMAT_AUDIO_MASK;
+	format_t src_video = src & AST_FORMAT_VIDEO_MASK;
 
 	/* if we don't have a source format, we just have to try all
 	   possible destination formats */
@@ -840,7 +841,11 @@
 	   known audio formats to determine whether there exists
 	   a translation path from the source format to the
 	   destination format. */
-	for (x = 1; src_audio && (x & AST_FORMAT_AUDIO_MASK); x <<= 1) {
+	for (x = 1LL; src_audio && x > 0; x <<= 1) {
+		if (!(x & AST_FORMAT_AUDIO_MASK)) {
+			continue;
+		}
+
 		/* if this is not a desired format, nothing to do */
 		if (!(dest & x))
 			continue;
@@ -866,7 +871,11 @@
 	   known video formats to determine whether there exists
 	   a translation path from the source format to the
 	   destination format. */
-	for (; src_video && (x & AST_FORMAT_VIDEO_MASK); x <<= 1) {
+	for (x = 1LL; src_video && x > 0; x <<= 1) {
+		if (!(x & AST_FORMAT_VIDEO_MASK)) {
+			continue;
+		}
+
 		/* if this is not a desired format, nothing to do */
 		if (!(dest & x))
 			continue;

Modified: team/tilghman/codec_bits3/main/udptl.c
URL: http://svnview.digium.com/svn/asterisk/team/tilghman/codec_bits3/main/udptl.c?view=diff&rev=225765&r1=225764&r2=225765
==============================================================================
--- team/tilghman/codec_bits3/main/udptl.c (original)
+++ team/tilghman/codec_bits3/main/udptl.c Sun Oct 25 18:22:37 2009
@@ -368,7 +368,7 @@
 					/* Decode the secondary IFP packet */
 					//fprintf(stderr, "Secondary %d, len %d\n", seq_no - i, lengths[i - 1]);
 					s->f[ifp_no].frametype = AST_FRAME_MODEM;
-					s->f[ifp_no].subclass = AST_MODEM_T38;
+					s->f[ifp_no].subclass.codec = AST_MODEM_T38;
 
 					s->f[ifp_no].mallocd = 0;
 					s->f[ifp_no].seqno = seq_no - i;
@@ -470,7 +470,7 @@
 			if (repaired[l]) {
 				//fprintf(stderr, "Fixed packet %d, len %d\n", j, l);
 				s->f[ifp_no].frametype = AST_FRAME_MODEM;
-				s->f[ifp_no].subclass = AST_MODEM_T38;
+				s->f[ifp_no].subclass.codec = AST_MODEM_T38;
 			
 				s->f[ifp_no].mallocd = 0;
 				s->f[ifp_no].seqno = j;
@@ -491,7 +491,7 @@
 	if (seq_no >= s->rx_seq_no) {
 		/* Decode the primary IFP packet */
 		s->f[ifp_no].frametype = AST_FRAME_MODEM;
-		s->f[ifp_no].subclass = AST_MODEM_T38;
+		s->f[ifp_no].subclass.codec = AST_MODEM_T38;
 		
 		s->f[ifp_no].mallocd = 0;
 		s->f[ifp_no].seqno = seq_no;
@@ -988,7 +988,7 @@
 		return 0;
 	
 	if ((f->frametype != AST_FRAME_MODEM) ||
-	    (f->subclass != AST_MODEM_T38)) {
+	    (f->subclass.codec != AST_MODEM_T38)) {
 		ast_log(LOG_WARNING, "UDPTL can only send T.38 data.\n");
 		return -1;
 	}




More information about the asterisk-commits mailing list