--- ./channel.c	2006-09-11 12:38:00.000000000 -0400
+++ ./channel.c-42600	2006-09-11 12:29:45.000000000 -0400
@@ -45,7 +45,7 @@
 
 #include "asterisk.h"
 
-ASTERISK_FILE_VERSION(__FILE__, "$Revision: 42452 $")
+ASTERISK_FILE_VERSION(__FILE__, "$Revision: 42600 $")
 
 #include "asterisk/pbx.h"
 #include "asterisk/frame.h"
@@ -2385,7 +2385,7 @@
 	/* Now we have a good choice for both. */
 	ast_mutex_lock(&chan->lock);
 
-	if ((*rawformat == native) && (*format == fmt)) {
+	if ((*rawformat == native) && (*format == fmt) && ((*rawformat == *format) || (*trans))) {
 		/* the channel is already in these formats, so nothing to do */
 		ast_mutex_unlock(&chan->lock);
 		return 0;
