]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
add mode goodies to ilbc
authorAnthony Minessale <anthony.minessale@gmail.com>
Thu, 22 Feb 2007 20:56:23 +0000 (20:56 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Thu, 22 Feb 2007 20:56:23 +0000 (20:56 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4348 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/codecs/mod_ilbc/mod_ilbc.c
src/switch_core.c

index dc69c5e2d303db982a40c5462fb0fa3a3792e534..660ba544266ef4f794b966cff00f969dfbc2de67 100644 (file)
@@ -190,7 +190,7 @@ static const switch_codec_implementation_t ilbc_8k_30ms_implementation = {
                /*.codec_type */ SWITCH_CODEC_TYPE_AUDIO, 
                /*.ianacode */ 97, 
                /*.iananame */ "iLBC", 
-               /*.fmtp */ NULL,
+               /*.fmtp */ "mode=30",
                /*.samples_per_second */ 8000, 
                /*.bits_per_second */ NO_OF_BYTES_30MS*8*8000/BLOCKL_30MS,
                /*.microseconds_per_frame */ 30000,
@@ -210,7 +210,7 @@ static const switch_codec_implementation_t ilbc_8k_20ms_implementation = {
                /*.codec_type */ SWITCH_CODEC_TYPE_AUDIO, 
                /*.ianacode */ 97, 
                /*.iananame */ "iLBC", 
-               /*.fmtp */ NULL,
+               /*.fmtp */ "mode=20",
                /*.samples_per_second */ 8000, 
                /*.bits_per_second */ NO_OF_BYTES_20MS*8*8000/BLOCKL_20MS, 
                /*.microseconds_per_frame */ 20000,
@@ -233,7 +233,7 @@ static const switch_codec_implementation_t ilbc_102_8k_30ms_implementation = {
                /*.codec_type */ SWITCH_CODEC_TYPE_AUDIO, 
                /*.ianacode */ 102, 
                /*.iananame */ "iLBC", 
-               /*.fmtp */ NULL,
+               /*.fmtp */ "mode=30",
                /*.samples_per_second */ 8000, 
                /*.bits_per_second */ NO_OF_BYTES_30MS*8*8000/BLOCKL_30MS,
                /*.microseconds_per_frame */ 30000,
@@ -253,7 +253,7 @@ static const switch_codec_implementation_t ilbc_102_8k_20ms_implementation = {
                /*.codec_type */ SWITCH_CODEC_TYPE_AUDIO, 
                /*.ianacode */ 102, 
                /*.iananame */ "iLBC102", 
-               /*.fmtp */ NULL,
+               /*.fmtp */ "mode=20",
                /*.samples_per_second */ 8000, 
                /*.bits_per_second */ NO_OF_BYTES_20MS*8*8000/BLOCKL_20MS, 
                /*.microseconds_per_frame */ 20000,
@@ -275,7 +275,7 @@ static const switch_codec_implementation_t ilbc_8k_20ms_nonext_implementation =
                /*.codec_type */ SWITCH_CODEC_TYPE_AUDIO, 
                /*.ianacode */ 97, 
                /*.iananame */ "iLBC20ms",
-               /*.fmtp */ NULL,
+               /*.fmtp */ "mode=20",
                /*.samples_per_second */ 8000, 
                /*.bits_per_second */ NO_OF_BYTES_20MS*8*8000/BLOCKL_20MS, 
                /*.microseconds_per_frame */ 20000,
index 0c150a6c634644dcaf39c85ce2b2fda6d1db7e08..405d3d913686d4f79ab35a9f42a79d9d1bcf66fe 100644 (file)
@@ -809,6 +809,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_codec_init(switch_codec_t *codec, ch
 {
        const switch_codec_interface_t *codec_interface;
        const switch_codec_implementation_t *iptr, *implementation = NULL;
+       char *mode = fmtp; 
 
        assert(codec != NULL);
        assert(codec_name != NULL);
@@ -820,6 +821,17 @@ SWITCH_DECLARE(switch_status_t) switch_core_codec_init(switch_codec_t *codec, ch
                return SWITCH_STATUS_GENERR;
        }
 
+       if (mode && strncasecmp(mode, "mode=", 5)) {
+               int mms;
+               mode += 5;
+               if (mode) {
+                       mms = atoi(mode);
+                       if (mms > 0 && mms < 120) {
+                               ms = mms;
+                       }
+               }
+       }
+       
     /* If no specific codec interval is requested opt for 20ms above all else because lots of stuff assumes it */
     if (!ms) {
         for (iptr = codec_interface->implementations; iptr; iptr = iptr->next) {