[asterisk-commits] russell: branch 1.4 r94828 - /branches/1.4/main/translate.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Thu Dec 27 08:33:22 CST 2007
Author: russell
Date: Thu Dec 27 08:33:21 2007
New Revision: 94828
URL: http://svn.digium.com/view/asterisk?view=rev&rev=94828
Log:
Change ast_translator_best_choice() to only pay attention to audio formats.
This fixes a problem where Asterisk claims that a translation path can not be
found for channels involving video.
(closes issue #11638)
Reported by: cwhuang
Tested by: cwhuang
Patch suggested by cwhuang, with some additional changes by me.
Modified:
branches/1.4/main/translate.c
Modified: branches/1.4/main/translate.c
URL: http://svn.digium.com/view/asterisk/branches/1.4/main/translate.c?view=diff&rev=94828&r1=94827&r2=94828
==============================================================================
--- branches/1.4/main/translate.c (original)
+++ branches/1.4/main/translate.c Thu Dec 27 08:33:21 2007
@@ -796,10 +796,10 @@
int cur, cursrc;
int besttime = INT_MAX;
int beststeps = INT_MAX;
- int common = (*dst) & (*srcs); /* are there common formats ? */
+ int common = ((*dst) & (*srcs)) & AST_FORMAT_AUDIO_MASK; /* are there common formats ? */
if (common) { /* yes, pick one and return */
- for (cur = 1, y = 0; y < MAX_FORMAT; cur <<= 1, y++) {
+ for (cur = 1, y = 0; y <= AST_FORMAT_MAX_AUDIO; cur <<= 1, y++) {
if (cur & common) /* guaranteed to find one */
break;
}
@@ -808,10 +808,10 @@
return 0;
} else { /* No, we will need to translate */
AST_LIST_LOCK(&translators);
- for (cur = 1, y = 0; y < MAX_FORMAT; cur <<= 1, y++) {
+ for (cur = 1, y = 0; y <= AST_FORMAT_MAX_AUDIO; cur <<= 1, y++) {
if (! (cur & *dst))
continue;
- for (cursrc = 1, x = 0; x < MAX_FORMAT; cursrc <<= 1, x++) {
+ for (cursrc = 1, x = 0; x <= AST_FORMAT_MAX_AUDIO; cursrc <<= 1, x++) {
if (!(*srcs & cursrc) || !tr_matrix[x][y].step ||
tr_matrix[x][y].cost > besttime)
continue; /* not existing or no better */
More information about the asterisk-commits
mailing list