Forcing a CODEC

Home » Asterisk Users » Forcing a CODEC
Asterisk Users 4 Comments

Hi folks,

How can I take advantage of a high-bandwidth CODEC, like G.722, for
internal communications at my site, but use G.711 (alaw/ulaw) for all
other outgoing calls? I need G.711 to support Inband DTMF signaling.

As my site has multiple locations that are tied together with IAX
trunks, I was hoping that it would be possible to specify alaw and
ulaw as the first two CODEC choices for the SIP phones, as well as in
their sip.conf configurations, but that I could use the IAX trunks
(with bandwidth=high) to force the phones to use their third CODEC
choice, g722, because that would be the only CODEC specified for the
IAX trunks (following disallow=all).

Unfortunately, that doesn’t work. Although the Asterisk console
reports that g722 is being used, when I listen to the connection it’s
obvious that a G.711 CODEC is being used. Curiously, the reverse does
work: if g722 is specified as the first CODEC of choice for the
phones, it is possible to use the IAX trunks to force them to use
alaw/ulaw instead.

Is a solution to this problem?

I’m using Debian squeeze with Asterisk



4 thoughts on - Forcing a CODEC

  • That’s one of the uses of the SIP_CODEC dialplan variable. Just set it in
    the context or the sip.conf or users.conf. In your particular case, just
    set up a specific context for the IAX calls
    Exten => _X.,1,Set(SIP_CODEC=G722)
    Exten => _X.,n,answer()

  • The variable for outbound is (SIP_CODEC_OUTBOUND=g722)

    But I think asterisk will try to transcode then because the preferred codec on the phone is ulaw or so