aboutsummaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
authorrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-12-27 14:33:21 +0000
committerrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-12-27 14:33:21 +0000
commit845537c34d4440d478ab610ae894f0108e316d92 (patch)
tree2e3e602106cbb46ec2e8fb7cd62218161ba57d5b /main
parent0525b440d2e147a3873812ef00796c7f7d0151b1 (diff)
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. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@94828 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main')
-rw-r--r--main/translate.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/main/translate.c b/main/translate.c
index 7fa408c7c..84e255f52 100644
--- a/main/translate.c
+++ b/main/translate.c
@@ -796,10 +796,10 @@ int ast_translator_best_choice(int *dst, int *srcs)
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 @@ int ast_translator_best_choice(int *dst, int *srcs)
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 */