[Freeswitch-users] inherit_codec failing with pre-media

sangdrax8 sangdrax8 at gmail.com
Tue Sep 17 22:27:48 MSD 2013


I pulled the latest freeswitch from git this morning, and am still
having issues using inherit_codec=true.  It seems the only way I can
get it to defer to the choice of the b-leg call is to remove the
ringback, and thus the need for early media.

My setup has 2 phones with the following codecs configured:

phone1000:  g722, ulaw
phone1001:  ulaw

My goal is to have a call initiated by phone1000 (a-leg) to defer the
codec choice until phone1001 (b-leg) chooses one.  This would allow
them to talk with no transcoding required by freeswitch.  With the
following dial plan, this fails to work.

<extension name="Local_Extension">
      <condition field="destination_number" expression="^(10[01][0-9])$">
        <action application="export" data="dialed_extension=$1"/>
        <action application="set" data="ringback=${us-ring}"/>
        <action application="set" data="transfer_ringback=$${hold_music}"/>
        <action application="set" data="call_timeout=30"/>
        <action application="set" data="hangup_after_bridge=true"/>
        <action application="set" data="inherit_codec=true" />
        <action application="bridge"
data="user/${dialed_extension}@${domain_name}"/>
      </condition>
</extension>

It does log that it is going to defer:

2013-09-17 13:15:10.956535 [DEBUG] mod_sofia.c:4542 [zrtp_passthru]
Setting a-leg inherit_codec=true
2013-09-17 13:15:10.956535 [DEBUG] mod_sofia.c:4545 [zrtp_passthru]
Setting b-leg absolute_codec_string='G722 at 8000h@20i at 64000b,PCMU at 8000h@20i at 64000b'


then it tries to provide the ringback for the a-leg, and it negotiates
to g722 since freeswitch supports that and it is the first match.
Later when the b-leg is answered, it also negotiates, this time to
ulaw as that is all b supports.  My call completes, but freeswitch has
to transcode between the two.

In an attempt to see inherit_codec work, I then commented out the
ringback line from the above dialplan.  With only this one change,
freeswitch now waits until the b-leg negotiation, and passes that back
to the a-leg.  The call completes and both handsets are using ulaw and
no transcoding is required.  The problem being that the calling party
never gets a ring while waiting.

I can't imagine that the only way to use inherit_codec=true is with
all ringing turned off.  Can someone tell me if there is an additional
option I am missing?  All documentation I read seems to indicate that
just adding "inherit_codec=true" will fix things, but even the
default.xml provided as an example uses ringback and therefore fails.



Join us at ClueCon 2013 Aug 6-8, 2013
More information about the FreeSWITCH-users mailing list