diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index 349e142895..0b71e3241e 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -762,6 +762,8 @@ static void set_local_sdp(private_object_t *tech_pvt, char *ip, uint32_t port, c static void tech_set_codecs(private_object_t *tech_pvt) { + switch_channel_t *channel; + char *codec_string = NULL; if (switch_test_flag(tech_pvt, TFLAG_NOMEDIA)) { return; @@ -771,7 +773,16 @@ static void tech_set_codecs(private_object_t *tech_pvt) return; } - if (tech_pvt->profile->codec_string) { + assert(tech_pvt->session != NULL); + + channel = switch_core_session_get_channel(tech_pvt->session); + assert (channel != NULL); + + if (!(codec_string = switch_channel_get_variable(channel, "codec_string"))) { + codec_string = tech_pvt->profile->codec_string; + } + + if (codec_string) { tech_pvt->num_codecs = switch_loadable_module_get_codecs_sorted(tech_pvt->codecs, SWITCH_MAX_CODECS, tech_pvt->profile->codec_order,