aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--channel.c6
-rw-r--r--translate.c2
2 files changed, 5 insertions, 3 deletions
diff --git a/channel.c b/channel.c
index ea14aba6d..230aa13d6 100644
--- a/channel.c
+++ b/channel.c
@@ -2746,7 +2746,8 @@ int ast_channel_make_compatible(struct ast_channel *chan, struct ast_channel *pe
transcoding is needed; if desired, force transcode path
to use SLINEAR between channels, but only if there is
no direct conversion available */
- if ((src != dst) && ast_opt_transcode_via_slin && ast_translate_path_steps(dst, src))
+ if ((src != dst) && ast_opt_transcode_via_slin &&
+ (ast_translate_path_steps(dst, src) != 1))
dst = AST_FORMAT_SLINEAR;
if (ast_set_read_format(chan, dst) < 0) {
ast_log(LOG_WARNING, "Unable to set read format on channel %s to %d\n", chan->name, dst);
@@ -2769,7 +2770,8 @@ int ast_channel_make_compatible(struct ast_channel *chan, struct ast_channel *pe
transcoding is needed; if desired, force transcode path
to use SLINEAR between channels, but only if there is
no direct conversion available */
- if ((src != dst) && ast_opt_transcode_via_slin && ast_translate_path_steps(dst, src))
+ if ((src != dst) && ast_opt_transcode_via_slin &&
+ (ast_translate_path_steps(dst, src) != 1))
dst = AST_FORMAT_SLINEAR;
if (ast_set_read_format(peer, dst) < 0) {
ast_log(LOG_WARNING, "Unable to set read format on channel %s to %d\n", peer->name, dst);
diff --git a/translate.c b/translate.c
index dce4b0827..0edfa54ca 100644
--- a/translate.c
+++ b/translate.c
@@ -659,5 +659,5 @@ unsigned int ast_translate_path_steps(unsigned int dest, unsigned int src)
if (!tr_matrix[src][dest].step)
return -1;
else
- return tr_matrix[src][dest].multistep;
+ return tr_matrix[src][dest].multistep + 1;
}