diff --git a/channel.c b/channel.c index ea14aba6dea0899ff86262033a340a871c8c28fe..230aa13d6e4517cb188b3bbe397b608b2bb7185e 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 dce4b08270d49810cee602d4f331b9c922b68f9d..0edfa54ca56c245d95a1d67a021e8394c1239070 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; }