]> sjero.net Git - linphone/blobdiff - coreapi/misc.c
Aac-eld add missing header according to RFC3640 3.3.6
[linphone] / coreapi / misc.c
index 927c3b55a2636b55eef5402285c54be1a59f22a5..26cdbe224864adb3b264770fac505805361e5d50 100644 (file)
@@ -43,7 +43,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #include <net/if.h>
 #include <ifaddrs.h>
 #endif
-
+#include <math.h>
 
 #if !defined(WIN32)
 
@@ -244,7 +244,7 @@ static double get_audio_payload_bandwidth(LinphoneCore *lc, const PayloadType *p
 }
 
 void linphone_core_update_allocated_audio_bandwidth_in_call(LinphoneCall *call, const PayloadType *pt){
-       call->audio_bw=(int)(get_audio_payload_bandwidth(call->core,pt)/1000.0);
+       call->audio_bw=(int)(ceil(get_audio_payload_bandwidth(call->core,pt)/1000.0)); /*rounding codec bandwidth should be avoid, specially for AMR*/
        ms_message("Audio bandwidth for this call is %i",call->audio_bw);
 }
 
@@ -876,7 +876,7 @@ void linphone_core_update_ice_from_remote_media_description(LinphoneCall *call,
                for (i = 0; i < md->n_total_streams; i++) {
                        const SalStreamDescription *stream = &md->streams[i];
                        IceCheckList *cl = ice_session_check_list(call->ice_session, i);
-                       if (cl == NULL) {
+                       if ((cl == NULL) && (i < md->n_active_streams)) {
                                cl = ice_check_list_new();
                                ice_session_add_check_list(call->ice_session, cl);
                                switch (stream->type) {
@@ -1005,6 +1005,9 @@ unsigned int linphone_core_get_audio_features(LinphoneCore *lc){
        return ret;
 }
 
+bool_t linphone_core_tone_indications_enabled(LinphoneCore*lc){
+       return lp_config_get_int(lc->config,"sound","tone_indications",1);
+}
 
 #ifdef HAVE_GETIFADDRS
 
@@ -1107,26 +1110,34 @@ static int get_local_ip_for_with_connect(int type, const char *dest, char *resul
 }
 
 int linphone_core_get_local_ip_for(int type, const char *dest, char *result){
+       int err;
         strcpy(result,type==AF_INET ? "127.0.0.1" : "::1");
+       
+       if (dest==NULL){
+               if (type==AF_INET)
+                       dest="87.98.157.38"; /*a public IP address*/
+               else dest="2a00:1450:8002::68";
+       }
+        err=get_local_ip_for_with_connect(type,dest,result);
+       if (err==0) return 0;
+       
+       /* if the connect method failed, which happens when no default route is set, 
+        * try to find 'the' running interface with getifaddrs*/
+       
 #ifdef HAVE_GETIFADDRS
-        if (dest==NULL) {
-                /*we use getifaddrs for lookup of default interface */
-                int found_ifs;
-
-                found_ifs=get_local_ip_with_getifaddrs(type,result,LINPHONE_IPADDR_SIZE);
-                if (found_ifs==1){
-                        return 0;
-                }else if (found_ifs<=0){
-                        /*absolutely no network on this machine */
-                        return -1;
-                }
-        }
+
+       /*we use getifaddrs for lookup of default interface */
+       int found_ifs;
+
+       found_ifs=get_local_ip_with_getifaddrs(type,result,LINPHONE_IPADDR_SIZE);
+       if (found_ifs==1){
+               return 0;
+       }else if (found_ifs<=0){
+               /*absolutely no network on this machine */
+               return -1;
+       }
 #endif
-        /*else use connect to find the best local ip address */
-        if (type==AF_INET)
-                dest="87.98.157.38"; /*a public IP address*/
-        else dest="2a00:1450:8002::68";
-        return get_local_ip_for_with_connect(type,dest,result);
+      return 0;  
 }
 
 #ifndef WIN32