Hey Brian,

It seems like what I'm talking about can be reproduced with a fairly simple dialplan (in a profile with inbound-late-negotiation=true):

<execute application="set" data="inherit_codec=true" />
<execute application="bridge" data="{codec_string='${ep_codec_string},PCMU,opus'}sofia/some/endpoint" />

Given an A leg (with codecs opus, pcmu), and a B-leg (with codecs pcmu)
As expected, with this dialplan, if the B-leg requests pcmu, then pcmu is passed back to the A-leg - that's absolutely what I'd expect. If the A-leg later sends a reinvite (or update), however, inherit_codec no longer applies and FS seems to fallback to its core codec negotiation. Because the A-leg prefers opus over pcmu, opus is negotiated and transcoding is required. This is what I'm trying to avoid. I know I can disable codec renegotiation on a re-invite, but I don't want that either because a re-invite should be able to change codecs if it needs to (if the A-leg later sends a re-invite that simply doesn't include pcmu, FS should select opus and transcode)

I hope that makes sense, happy to try to clarify more, though.

Best,
Colin

On Thu, Apr 20, 2017 at 9:49 AM, Brian West <brian@freeswitch.org> wrote:
Going to need to know what you're doing in the dialplan to really understand whats going on.

/b


On Thu, Apr 20, 2017 at 7:14 AM, Colin Morelli <colin.morelli@gmail.com> wrote:
Hey all, back again

Is there any option in FS to either:
  • Keep inherit_codec working after the first invite
  • Try to reduce codec changes by attempting to use the existing codec on a re-invite
Unless I'm missing something, FS seems to ignore both the current codec being used, and the inherit_codec setting on re-invites, so it defaults to essentially restarting codec negotiation. Ideally I could have it set to preserve inherit_codec if the call is still bridged (i.e. try to negotiate the B-leg's codec onto the A-leg if it's supported by the A-leg's new SDP). Consider the following call:

INVITE (this is good and what I'd expect):
A --- (opus, PCMU) ---> FS --- (opus, PCMU) ---> B
A <-- (PCMU) --- FS <--- (PCMU) --- B

Later Re-INVITE:

A --- (opus, PCMU) ---> FS
A <-- (opus) --- FS

Ideally, I could get something like:

Later Re-INVITE:

A --- (opus, PCMU) ---> FS (checks codec used on B-leg of call, if inherit_codec=true)
A <-- (PCMU) --- FS

Thanks in advance,
Colin

_________________________________________________________________________
Professional FreeSWITCH Consulting Services:
consulting@freeswitch.org
http://www.freeswitchsolutions.com

Official FreeSWITCH Sites
http://www.freeswitch.org
http://confluence.freeswitch.org
http://www.cluecon.com

FreeSWITCH-users mailing list
FreeSWITCH-users@lists.freeswitch.org
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org



--

Brian West
brian@freeswitch.org

Twitter: @FreeSWITCH , @briankwest

http://www.freeswitchbook.com 
http://www.freeswitchcookbook.com

Book a phone call (CST)

Allison prompts for FreeSWITCH:

https://www.gofundme.com/allison-prompts-for-freeswitch

Got Bugs? Report them here! | Reddit: /r/freeswitch

T:+19184209001 | F:+19184209002 | M:+1918424WEST (9378)
Skype:briankwest


_________________________________________________________________________
Professional FreeSWITCH Consulting Services:
consulting@freeswitch.org
http://www.freeswitchsolutions.com

Official FreeSWITCH Sites
http://www.freeswitch.org
http://confluence.freeswitch.org
http://www.cluecon.com

FreeSWITCH-users mailing list
FreeSWITCH-users@lists.freeswitch.org
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org