]> git.ipfire.org Git - thirdparty/asterisk.git/commit
translate.c: Only select audio codecs to determine the best translation choice.
authorRichard Mudgett <rmudgett@digium.com>
Fri, 10 Apr 2015 16:25:13 +0000 (16:25 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Fri, 10 Apr 2015 16:25:13 +0000 (16:25 +0000)
commit7bee716f86d1808f17768ab1018f1d341dc9c361
treef2157988c1176278c9d256b0b2d0254bdfadcbd2
parentefef678411aa2f7ff8c5961830acda91c556b3fc
translate.c: Only select audio codecs to determine the best translation choice.

Given a source capability of h264 and ulaw, a destination capability of
h264 and g722 then ast_translator_best_choice() would pick h264 as the
best choice even though h264 is a video codec and Asterisk only supports
translation of audio codecs.  When the audio starts flowing, there are
warnings about a codec mismatch when the channel tries to write a frame to
the peer.

* Made ast_translator_best_choice() only select audio codecs.

* Restore a check in channel.c:set_format() lost after v1.8 to prevent
trying to set a non-audio codec.

This is an intermediate patch for a series of patches aimed at improving
translation path choices for ASTERISK-24841.

This patch is a complete enough fix for ASTERISK-21777 as the v11 version
of ast_translator_best_choice() does the same thing.  However, chan_sip.c
still somehow tries to call ast_codec_choose() which then calls
ast_best_codec() with a capability set that doesn't contain any audio
formats for the incoming call.  The remaining warning message seems to be
a benign transient.

ASTERISK-21777 #close
Reported by: Nick Ruggles

ASTERISK-24380 #close
Reported by: Matt Jordan

Review: https://reviewboard.asterisk.org/r/4605/

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/11@434614 65c4cc65-6c06-0410-ace0-fbb531ad65f3
main/channel.c
main/translate.c