};
+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
};
{
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) {
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) {
}
- 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);