]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
adding default values of sampling rate based on codec type
authorKapil Gupta <kgupta@sangoma.com>
Tue, 7 Aug 2012 09:56:09 +0000 (05:56 -0400)
committerKapil Gupta <kgupta@sangoma.com>
Tue, 7 Aug 2012 09:56:09 +0000 (05:56 -0400)
src/mod/endpoints/mod_media_gateway/media_gateway_utils.c

index e622038ee654aee760945de8ad5bdcf74b7c90a0..3801ade93bf0ab0a49c5d65dfc0a366e9c1b31c2 100644 (file)
@@ -885,17 +885,59 @@ void mgco_handle_sdp_media_param(CmSdpMedPar *s, mg_termination_t* term, mgco_sd
                        if((NOTPRSNT != r->num.pres) && (0 != r->num.val) && (NULL != r->fmts[0])){
                                        const char* name =  mg_get_codec_name(mg_profile, r->fmts[0]->val.val);
                                        if(name){
-                                               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, " Updating codec to[%d], name[%s] \n", 
-                                                               r->fmts[0]->val.val, name); 
                                                if(MG_TERM_RTP == term->type){
                                                        term->u.rtp.codec = name;
                                                        term->u.rtp.pt = r->fmts[0]->val.val;
-                                                       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,"Updating pt to [%d]\n", 
-                                                                       term->u.rtp.pt);
+                                                       /* Set default value of sampling rate depends on codec */
+                                                       switch(megaco_codec_parse(name))
+                                                       {
+                                                               case MEGACO_CODEC_PCMA:
+                                                                       {
+                                                                               term->u.rtp.rate = 8000; 
+                                                                               break;
+                                                                       }
+                                                               case MEGACO_CODEC_PCMU:
+                                                                       {
+                                                                               /* TODO - proper values */
+                                                                               term->u.rtp.rate = 8000; 
+                                                                               break;
+                                                                       }
+                                                               case MEGACO_CODEC_G729:
+                                                                       {
+                                                                               /* TODO - proper values */
+                                                                               term->u.rtp.rate = 8000; 
+                                                                               break;
+                                                                       }
+                                                               case MEGACO_CODEC_G723_1:
+                                                                       {
+                                                                               /* TODO - proper values */
+                                                                               term->u.rtp.rate = 8000; 
+                                                                               break;
+                                                                       }
+                                                               case MEGACO_CODEC_ILBC:
+                                                                       {
+                                                                               /* TODO - proper values */
+                                                                               term->u.rtp.rate = 8000; 
+                                                                               break;
+                                                                       }
+                                                               default:
+                                                                       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, 
+                                                                                       " not updating sampling rate \n"); 
+                                                                       break;
+                                                       }
+
+                                                       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, 
+                                                                       " Updating codec to[%d], name[%s] \n", 
+                                                                       r->fmts[0]->val.val, name); 
+                                                                       
+                                                       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,
+                                                                       "Updating pt to [%d], rate to[%d]\n", 
+                                                                       term->u.rtp.pt, term->u.rtp.rate);
                                                }
                                        }else{
                                                /* ERROR */
-                                               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, " NO Codec Name found against iana[%d] \n", r->fmts[0]->val.val); 
+                                               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, 
+                                                                       " NO Codec Name found against iana[%d] \n", r->fmts[0]->val.val); 
                                        }
                        }