cheat so jingle can use ilbc right

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@1202 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
Anthony Minessale 2006-04-19 19:44:05 +00:00
parent 453b85ba9f
commit 813a57776b
2 changed files with 42 additions and 4 deletions

View File

@ -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
};

View File

@ -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);