exosip codec order

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@476 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
Anthony Minessale 2006-01-29 17:17:22 +00:00
parent d849abffa3
commit 96f757f362

View File

@ -80,6 +80,9 @@ static struct {
int port; int port;
int rtp_start; int rtp_start;
int rtp_end; int rtp_end;
char *codec_string;
char *codec_order[SWITCH_MAX_CODECS];
int codec_order_last;
switch_hash *call_hash; switch_hash *call_hash;
switch_mutex_t *port_lock; switch_mutex_t *port_lock;
int running; int running;
@ -129,17 +132,9 @@ static int next_rtp_port(void)
} }
static void set_global_dialplan(char *dialplan) SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_dialplan, globals.dialplan)
{ SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_codec_string, globals.codec_string)
if (globals.dialplan) {
free(globals.dialplan);
globals.dialplan = NULL;
}
globals.dialplan = strdup(dialplan);
}
static void set_global_dialplan(char *dialplan);
static switch_status exosip_on_init(switch_core_session *session); static switch_status exosip_on_init(switch_core_session *session);
static switch_status exosip_on_hangup(switch_core_session *session); static switch_status exosip_on_hangup(switch_core_session *session);
static switch_status exosip_on_loopback(switch_core_session *session); static switch_status exosip_on_loopback(switch_core_session *session);
@ -256,9 +251,21 @@ static switch_status exosip_on_init(switch_core_session *session)
snprintf(port, sizeof(port), "%i", tech_pvt->local_sdp_audio_port); snprintf(port, sizeof(port), "%i", tech_pvt->local_sdp_audio_port);
sdp_message_m_media_add(tech_pvt->local_sdp, "audio", port, NULL, "RTP/AVP"); sdp_message_m_media_add(tech_pvt->local_sdp, "audio", port, NULL, "RTP/AVP");
/* Add in every codec we support on this outbound call */ /* Add in every codec we support on this outbound call */
if ((num_codecs = if (globals.codec_string) {
switch_loadable_module_get_codecs(switch_core_session_get_pool(session), codecs, num_codecs = switch_loadable_module_get_codecs_sorted(switch_core_session_get_pool(tech_pvt->session),
sizeof(codecs) / sizeof(codecs[0]))) > 0) { codecs,
SWITCH_MAX_CODECS,
globals.codec_order,
globals.codec_order_last);
} else {
num_codecs =
switch_loadable_module_get_codecs(switch_core_session_get_pool(session), codecs,
sizeof(codecs) / sizeof(codecs[0]));
}
if (num_codecs > 0) {
int i; int i;
static const switch_codec_implementation *imp; static const switch_codec_implementation *imp;
for (i = 0; i < num_codecs; i++) { for (i = 0; i < num_codecs; i++) {
@ -832,9 +839,21 @@ static switch_status exosip_create_call(eXosip_event_t * event)
osip_rfc3264_init(&tech_pvt->sdp_config); osip_rfc3264_init(&tech_pvt->sdp_config);
/* Add in what codecs we support locally */ /* Add in what codecs we support locally */
if ((num_codecs =
switch_loadable_module_get_codecs(switch_core_session_get_pool(session), codecs, if (globals.codec_string) {
sizeof(codecs) / sizeof(codecs[0]))) > 0) { num_codecs = switch_loadable_module_get_codecs_sorted(switch_core_session_get_pool(tech_pvt->session),
codecs,
SWITCH_MAX_CODECS,
globals.codec_order,
globals.codec_order_last);
} else {
num_codecs =
switch_loadable_module_get_codecs(switch_core_session_get_pool(session), codecs,
sizeof(codecs) / sizeof(codecs[0]));
}
if (num_codecs > 0) {
int i; int i;
static const switch_codec_implementation *imp; static const switch_codec_implementation *imp;
@ -1265,6 +1284,10 @@ static int config_exosip(int reload)
globals.port = atoi(val); globals.port = atoi(val);
} else if (!strcmp(var, "dialplan")) { } else if (!strcmp(var, "dialplan")) {
set_global_dialplan(val); set_global_dialplan(val);
} else if (!strcmp(var, "codec_prefs")) {
set_global_codec_string(val);
globals.codec_order_last =
switch_separate_string(globals.codec_string, ',', globals.codec_order, SWITCH_MAX_CODECS);
} else if (!strcmp(var, "rtp_min_port")) { } else if (!strcmp(var, "rtp_min_port")) {
globals.rtp_start = atoi(val); globals.rtp_start = atoi(val);
} else if (!strcmp(var, "rtp_max_port")) { } else if (!strcmp(var, "rtp_max_port")) {