]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
make code more automagic to shut up the dude on the list
authorAnthony Minessale <anthm@freeswitch.org>
Tue, 21 Sep 2010 15:09:45 +0000 (10:09 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Tue, 21 Sep 2010 15:09:55 +0000 (10:09 -0500)
src/include/switch_utils.h
src/mod/endpoints/mod_sofia/sofia_glue.c
src/switch_loadable_module.c

index 45703ab49c0fdec068af6b1ddc89a6712ba49946..6cf7212bfe807c2ba8cd2b1835acc70d324a7381 100644 (file)
@@ -359,7 +359,16 @@ switch_mutex_unlock(obj->flag_mutex);
 #define switch_set_string(_dst, _src) switch_copy_string(_dst, _src, sizeof(_dst))
 
 
-        static inline char *switch_sanitize_number(char *number)
+static inline uint32_t switch_default_ptime(const char *name, uint32_t number)
+{
+       if (!strcasecmp(name, "G723")) {
+               return 30;
+       }
+
+       return 20;
+}
+
+static inline char *switch_sanitize_number(char *number)
 {
        char *p = number, *q;
        char warp[] = "/:";
index 0d3d9d2b60c8fe21eb39647a15f37092c206fa84..b94ed8867fc110a2284e714b907cf99890308b3e 100644 (file)
@@ -3839,7 +3839,7 @@ uint8_t sofia_glue_negotiate_sdp(switch_core_session_t *session, const char *r_s
                                }
 
                                if (!ptime) {
-                                       ptime = 20;
+                                       ptime = switch_default_ptime(rm_encoding, map->rm_pt);
                                }
 
                                if (!strcasecmp((char *) rm_encoding, "ilbc")) {
index d23b4226e357b78fcc1c7c895aa4bf4133236949..8804902a2f96ae908791efa0ca533f68f3fafcdb 100644 (file)
@@ -1557,13 +1557,16 @@ SWITCH_DECLARE(int) switch_loadable_module_get_codecs(const switch_codec_impleme
        for (hi = switch_hash_first(NULL, loadable_modules.codec_hash); hi; hi = switch_hash_next(hi)) {
                switch_hash_this(hi, NULL, NULL, &val);
                codec_interface = (switch_codec_interface_t *) val;
-               /* Look for a 20ms implementation because it's the safest choice */
+               
+               /* Look for the default ptime of the codec because it's the safest choice */
                for (imp = codec_interface->implementations; imp; imp = imp->next) {
+                       uint32_t default_ptime = switch_default_ptime(imp->iananame, imp->ianacode);
+
                        if (lock && imp->microseconds_per_packet != lock) {
                                continue;
                        }
 
-                       if (imp->microseconds_per_packet / 1000 == 20) {
+                       if (imp->microseconds_per_packet / 1000 == default_ptime) {
                                array[i++] = imp;
                                goto found;
                        }
@@ -1623,15 +1626,16 @@ SWITCH_DECLARE(int) switch_loadable_module_get_codecs_sorted(const switch_codec_
                }
 
                if ((codec_interface = switch_loadable_module_get_codec_interface(name)) != 0) {
-                       /* If no specific codec interval is requested opt for 20ms above all else because lots of stuff assumes it */
+                       /* If no specific codec interval is requested opt for the default above all else because lots of stuff assumes it */
                        for (imp = codec_interface->implementations; imp; imp = imp->next) {
-
+                               uint32_t default_ptime = switch_default_ptime(imp->iananame, imp->ianacode);
+                               
                                if (imp->codec_type != SWITCH_CODEC_TYPE_VIDEO) {
                                        if (lock && imp->microseconds_per_packet != lock) {
                                                continue;
                                        }
-
-                                       if ((!interval && (uint32_t) (imp->microseconds_per_packet / 1000) != 20) ||
+                                       
+                                       if ((!interval && (uint32_t) (imp->microseconds_per_packet / 1000) != default_ptime) ||
                                                (interval && (uint32_t) (imp->microseconds_per_packet / 1000) != interval)) {
                                                continue;
                                        }
@@ -1647,7 +1651,7 @@ SWITCH_DECLARE(int) switch_loadable_module_get_codecs_sorted(const switch_codec_
 
                        }
 
-                       /* Either looking for a specific interval or there was no interval specified and there wasn't one @20ms available */
+                       /* Either looking for a specific interval or there was no interval specified and there wasn't one at the default ptime available */
                        for (imp = codec_interface->implementations; imp; imp = imp->next) {
                                if (imp->codec_type != SWITCH_CODEC_TYPE_VIDEO) {