[asterisk-commits] irroot: branch irroot/distrotech-customers-10 r337307 - in /team/irroot/distr...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Wed Sep 21 06:42:41 CDT 2011


Author: irroot
Date: Wed Sep 21 06:42:30 2011
New Revision: 337307

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=337307
Log:
Only fix write format when transcoding is needed

Modified:
    team/irroot/distrotech-customers-10/   (props changed)
    team/irroot/distrotech-customers-10/main/channel.c

Propchange: team/irroot/distrotech-customers-10/
------------------------------------------------------------------------------
    automerge = *

Modified: team/irroot/distrotech-customers-10/main/channel.c
URL: http://svnview.digium.com/svn/asterisk/team/irroot/distrotech-customers-10/main/channel.c?view=diff&rev=337307&r1=337306&r2=337307
==============================================================================
--- team/irroot/distrotech-customers-10/main/channel.c (original)
+++ team/irroot/distrotech-customers-10/main/channel.c Wed Sep 21 06:42:30 2011
@@ -4968,26 +4968,27 @@
 			apply_plc(chan, fr);
 		}
 
-		/* XXX Something is not right we are not compatible with this frame bad things can happen
-		 * problems range from no/one-way audio to unexplained line hangups as a last resort try adjust the format
-		 * ideally we do not want to do this and this indicates a deeper problem for now we log these events to
-		 * eliminate user impact and help identify the problem areas
-		 * JIRA issues related to this :-
-		 * ASTERISK-14384, ASTERISK-17502, ASTERISK-17541, ASTERISK-18063, ASTERISK-18325, ASTERISK-18422*/
-		if ((!ast_format_cap_iscompatible(chan->nativeformats, &fr->subclass.format)) &&
-		    (ast_format_cmp(&chan->writeformat, &fr->subclass.format) != AST_FORMAT_CMP_EQUAL)) {
-			char nf[512];
-			ast_log(LOG_WARNING, "Codec mismatch on channel %s setting write format to %s from %s native formats %s\n",
-				chan->name, ast_getformatname(&fr->subclass.format), ast_getformatname(&chan->writeformat),
-				ast_getformatname_multiple(nf, sizeof(nf), chan->nativeformats));
-			ast_set_write_format_by_id(chan, fr->subclass.format.id);
-		}
-
 		/* If the frame is in the raw write format, then it's easy... just use the frame - otherwise we will have to translate */
-		if (ast_format_cmp(&fr->subclass.format, &chan->rawwriteformat) != AST_FORMAT_CMP_NOT_EQUAL)
+		if (ast_format_cmp(&fr->subclass.format, &chan->rawwriteformat) != AST_FORMAT_CMP_NOT_EQUAL) {
 			f = fr;
-		else
+		} else {
+			/* XXX Something is not right we are not compatible with this frame bad things can happen
+			 * problems range from no/one-way audio to unexplained line hangups as a last resort try adjust the format
+			 * ideally we do not want to do this and this indicates a deeper problem for now we log these events to
+			 * eliminate user impact and help identify the problem areas
+			 * JIRA issues related to this :-
+			 * ASTERISK-14384, ASTERISK-17502, ASTERISK-17541, ASTERISK-18063, ASTERISK-18325, ASTERISK-18422*/
+			if ((!ast_format_cap_iscompatible(chan->nativeformats, &fr->subclass.format)) &&
+			    (ast_format_cmp(&chan->writeformat, &fr->subclass.format) != AST_FORMAT_CMP_EQUAL)) {
+				char nf[512];
+				ast_log(LOG_WARNING, "Codec mismatch on channel %s setting write format to %s from %s native formats %s\n",
+					chan->name, ast_getformatname(&fr->subclass.format), ast_getformatname(&chan->writeformat),
+					ast_getformatname_multiple(nf, sizeof(nf), chan->nativeformats));
+				ast_set_write_format_by_id(chan, fr->subclass.format.id);
+			}
+
 			f = (chan->writetrans) ? ast_translate(chan->writetrans, fr, 0) : fr;
+		}
 
 		if (!f) {
 			res = 0;




More information about the asterisk-commits mailing list