]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
cheat so jingle can use ilbc right
authorAnthony Minessale <anthony.minessale@gmail.com>
Wed, 19 Apr 2006 19:44:05 +0000 (19:44 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Wed, 19 Apr 2006 19:44:05 +0000 (19:44 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@1202 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/codecs/mod_ilbc/mod_ilbc.c
src/mod/endpoints/mod_dingaling/mod_dingaling.c

index 006683535da278ddb680cf40d37098db3bf46e14..b32360e0b6914e0441caa2d25a77fd0031ddd1a3 100644 (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
 };
 
 
index ed43f307c1d4099aa584c81d278bd5be8ebeef28..af51d10ef7e734121975f58dc6b7c0326212db0d 100644 (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);