]> sjero.net Git - linphone/commitdiff
Merge commit 'a3f10cc'
authorJehan Monnier <jehan.monnier@linphone.org>
Thu, 25 Apr 2013 08:39:00 +0000 (10:39 +0200)
committerJehan Monnier <jehan.monnier@linphone.org>
Thu, 25 Apr 2013 08:39:00 +0000 (10:39 +0200)
1  2 
coreapi/misc.c

diff --combined coreapi/misc.c
index 26cdbe224864adb3b264770fac505805361e5d50,5d4c0ebcc2d365915ece80841e5ac2c1f1e7b858..36fe7ae3f60ed8b7633d579d90eb730d93f9c20d
@@@ -234,12 -234,21 +234,21 @@@ static int get_codec_bitrate(LinphoneCo
        return pt->normal_bitrate;
  }
  
+ /*
+  *((codec-birate*ptime/8) + RTP header + UDP header + IP header)*8/ptime;
+  *ptime=1/npacket
+  */
  static double get_audio_payload_bandwidth(LinphoneCore *lc, const PayloadType *pt){
        double npacket=50;
        double packet_size;
        int bitrate;
+       if (strcmp(payload_type_get_mime(&payload_type_aaceld_44k), payload_type_get_mime(pt))==0) {
+               /*special case of aac 44K because ptime= 10ms*/
+               npacket=100;
+       }
+               
        bitrate=get_codec_bitrate(lc,pt);
-       packet_size= (((double)bitrate)/(50*8))+UDP_HDR_SZ+RTP_HDR_SZ+IP4_HDR_SZ;
+       packet_size= (((double)bitrate)/(npacket*8))+UDP_HDR_SZ+RTP_HDR_SZ+IP4_HDR_SZ;
        return packet_size*8.0*npacket;
  }
  
@@@ -1110,34 -1119,26 +1119,34 @@@ static int get_local_ip_for_with_connec
  }
  
  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