<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Dec 15, 2013 at 5:07 AM, jg <span dir="ltr"><<a href="mailto:webaccounts@jgoettgens.de" target="_blank">webaccounts@jgoettgens.de</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">I think the order or elements is relevant:<br>
<br>
[100]<br>
disallow=all<br>
allow=ulaw<br>
allow=g722<br>
or<br>
[100]<br>
allow=!all,ulaw,g722<br>
<br>
should work.<span class=""><font color="#888888"><br>
<br>
jg</font></span></blockquote><div><br></div><div>If I choose that order and the phone supports both ulaw and g722 only ulaw will be used. I want to use g722 when available on both devices, fallback to ulaw without transcoding if both devices support it, or transcode if only one device supports ulaw.<br>
<br></div><div>I looked at the code more and here is what happens. Device 100 dials 101. The sip_new function is called and AST_CODEC_CHOOSE g722 is set as the read/write format.<br><br>[2013-12-14 22:51:59] DEBUG[25200][C-0000004d]: chan_sip.c:7911 sip_new: *** Our native formats are (g722)<br>
[2013-12-14 22:51:59] DEBUG[25200][C-0000004d]: chan_sip.c:7912 sip_new: *** Joint capabilities are (ulaw|g722)<br>[2013-12-14 22:51:59] DEBUG[25200][C-0000004d]: chan_sip.c:7913 sip_new: *** Our capabilities are (ulaw|g722)<br>
[2013-12-14 22:51:59] DEBUG[25200][C-0000004d]: chan_sip.c:7914 sip_new: *** AST_CODEC_CHOOSE formats are g722<br><br></div><div>Dial 101 is executed in the dialplan, sip_request_call is called, which in turn calls sip_new. The AST_CODEC_CHOOSE g722 from above becomes the incoming preferred format. We can only have one preferred format as sip_request_call takes in struct ast_format_cap *cap.<br>
</div><div><br>[2013-12-14 22:51:59] DEBUG[27830][C-0000004d]: chan_sip.c:7911 sip_new: *** Our native formats are (ulaw)<br>[2013-12-14 22:51:59] DEBUG[27830][C-0000004d]: chan_sip.c:7912 sip_new: *** Joint capabilities are (nothing)<br>
[2013-12-14 22:51:59] DEBUG[27830][C-0000004d]: chan_sip.c:7913 sip_new: *** Our capabilities are (ulaw)<br>[2013-12-14 22:51:59] DEBUG[27830][C-0000004d]: chan_sip.c:7914 sip_new: *** AST_CODEC_CHOOSE formats are ulaw<br>
[2013-12-14 22:51:59] DEBUG[27830][C-0000004d]: chan_sip.c:7916 sip_new: *** Our preferred formats from the incoming channel are (g722)<br></div><br></div><div class="gmail_quote">Asterisk tries to find a common codec between this channels capabilities and the incoming channel preferred format. Of course there are none (g722 and ulaw don't match) so we pick ulaw and transcode. What I am proposing is Asterisk passes fallback formats to sip_request_call. If the joint capabilities are none, then check the fallback formats. In this case it would be ulaw and ulaw. If there is a match switch the incoming channel to that format (ulaw) and AST_CODEC_CHOOSE would be ulaw this for channel. However I'm not sure how to make this change as I don't know my way around the interaction with the Asterisk core and the channels.<br>
</div><div class="gmail_quote"><br>Ryan<br></div></div></div>