From 813a57776bab89325f8be22b225dfe0f51c9dff9 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 19 Apr 2006 19:44:05 +0000 Subject: [PATCH] cheat so jingle can use ilbc right git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@1202 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/mod/codecs/mod_ilbc/mod_ilbc.c | 35 +++++++++++++++++++ .../endpoints/mod_dingaling/mod_dingaling.c | 11 +++--- 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/src/mod/codecs/mod_ilbc/mod_ilbc.c b/src/mod/codecs/mod_ilbc/mod_ilbc.c index 006683535d..b32360e0b6 100644 --- a/src/mod/codecs/mod_ilbc/mod_ilbc.c +++ b/src/mod/codecs/mod_ilbc/mod_ilbc.c @@ -218,12 +218,47 @@ static const switch_codec_implementation ilbc_8k_20ms_implementation = { }; +static const switch_codec_implementation ilbc_8k_20ms_nonext_implementation = { + /*.samples_per_second */ 8000, + /*.bits_per_second */ NO_OF_BYTES_20MS*8*8000/BLOCKL_20MS, + /*.microseconds_per_frame */ 20000, + /*.samples_per_frame */ 160, + /*.bytes_per_frame */ 320, + /*.encoded_bytes_per_frame */ NO_OF_BYTES_20MS, + /*.number_of_channels */ 1, + /*.pref_frames_per_packet */ 1, + /*.max_frames_per_packet */ 1, + /*.init */ switch_ilbc_init, + /*.encode */ switch_ilbc_encode, + /*.decode */ switch_ilbc_decode, + /*.destroy */ switch_ilbc_destroy +}; + + +static const switch_codec_interface ilbc_20ms_codec_interface = { + /*.interface_name */ "ilbc", + /*.codec_type */ SWITCH_CODEC_TYPE_AUDIO, + /*.ianacode */ 97, + /*.iananame */ "iLBC20ms", + /*.implementations */ &ilbc_8k_20ms_nonext_implementation +}; + +static const switch_codec_interface ilbc_102_codec_interface = { + /*.interface_name */ "ilbc", + /*.codec_type */ SWITCH_CODEC_TYPE_AUDIO, + /*.ianacode */ 102, + /*.iananame */ "iLBC102", + /*.implementations */ &ilbc_8k_20ms_implementation, + /*.next*/ &ilbc_20ms_codec_interface +}; + static const switch_codec_interface ilbc_codec_interface = { /*.interface_name */ "ilbc", /*.codec_type */ SWITCH_CODEC_TYPE_AUDIO, /*.ianacode */ 97, /*.iananame */ "iLBC", /*.implementations */ &ilbc_8k_20ms_implementation, + /*.next*/ &ilbc_102_codec_interface }; diff --git a/src/mod/endpoints/mod_dingaling/mod_dingaling.c b/src/mod/endpoints/mod_dingaling/mod_dingaling.c index ed43f307c1..af51d10ef7 100644 --- a/src/mod/endpoints/mod_dingaling/mod_dingaling.c +++ b/src/mod/endpoints/mod_dingaling/mod_dingaling.c @@ -224,15 +224,20 @@ static int activate_rtp(struct private_object *tech_pvt) { switch_channel *channel = switch_core_session_get_channel(tech_pvt->session); const char *err; + int ms = 20; if (tech_pvt->rtp_session) { return 0; } + if (!strcasecmp(tech_pvt->codec_name, "ilbc")) { + ms = 30; + } + if (switch_core_codec_init(&tech_pvt->read_codec, tech_pvt->codec_name, 8000, - 20, + ms, 1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL, switch_core_session_get_pool(tech_pvt->session)) != SWITCH_STATUS_SUCCESS) { @@ -248,7 +253,7 @@ static int activate_rtp(struct private_object *tech_pvt) if (switch_core_codec_init(&tech_pvt->write_codec, tech_pvt->codec_name, 8000, - 20, + ms, 1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL, switch_core_session_get_pool(tech_pvt->session)) != SWITCH_STATUS_SUCCESS) { @@ -388,8 +393,6 @@ static int do_describe(struct private_object *tech_pvt, int force) } - payloads[0].name = tech_pvt->codecs[0]->iananame; - payloads[0].id = tech_pvt->codecs[0]->ianacode; switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Send Describe [%s]\n", payloads[0].name); tech_pvt->desc_id = ldl_session_describe(tech_pvt->dlsession, payloads, 1, switch_test_flag(tech_pvt, TFLAG_OUTBOUND) ? LDL_DESCRIPTION_INITIATE : LDL_DESCRIPTION_ACCEPT);