My Asterisk is between my ITSP and a SIP phone. I cannot do direct media between the provider and the SIP phone, but I would like Asterisk to locally RTP bridge the two channels using native_rtp.
My SIP phone supports G722 and PCMA, as does the ITSP provider. But depending on the other party in a call, the ITSP may only offer PCMA.
So with my current setting (allow=!all,g722,alaw) I run into this situation when the ITSP doesn’t offer G722:
ITSP <- PCMA -> Asterisk <- G722 -> SIP phone
Obviously that’s not optimal. Transcoding needs to take place.
I’m looking for a way to get Asterisk to re-INVITE/UPDATE the SIP phone, to renegotiate the codec, to avoid transcoding.
I searched the web and found that there are pre-bridge handlers. But they are executed on the called party channel. So that wouldn’t help when doing an outbound call, plus I’m not sure how I could extract enough information from the other channel to know if a reinvite is needed (e.g. the codec the other channel is using).
I also found the Media Format Rewrite article on the wiki:
In the General Rules paragraph point 3 states (quote):
Prior to entering a bridge, a dialplan function can be used to set whether or not that channel will attempt to make itself compatible with whatever is in the bridge with it. If a channel enters a bridge that has another channel in it with a format it supports, it will attempt to switch the channel to the bridged channel’s format to facilitate native bridging. Note that this has no bearing in multi-party bridges, where everyone is transcoded.
There’s another paragraph called “Re-Invite to Native Bridge” with an example where Alice and Bob have a differently ordered set of codecs and Alice’s channel is set to re-INVITE back to native bridging if possible. After the re-INVITE Asterisk switches to a native bridge.
Well, that is exactly what I want 🙂
I installed Asterisk 13.6.0 hoping that I could get it to do this. But until now I haven’t found out how.
Does anybody know if this feature from the Media Format Rewrite article is already available?
Kind regards, Sebastian