diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m
index c537ea521..0d423dd85 100644
--- a/Classes/LinphoneCoreSettingsStore.m
+++ b/Classes/LinphoneCoreSettingsStore.m
@@ -182,7 +182,19 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
{
[self transformCodecsToKeys: linphone_core_get_audio_codecs(lc)];
- [self transformCodecsToKeys: linphone_core_get_video_codecs(lc)];
+ [self transformCodecsToKeys: linphone_core_get_video_codecs(lc)];
+ [self setBool:linphone_core_adaptive_rate_control_enabled(lc) forKey:@"adaptive_rate_control_preference"];
+ LpConfig *config = linphone_core_get_config(lc);
+ [self setInteger:lp_config_get_int(config, "audio", "codec_bitrate_limit", 32) forKey:@"audio_codec_bitrate_limit_preference"];
+
+ PayloadType *pt;
+ const MSList *elem;
+ for (elem=linphone_core_get_audio_codecs(lc);elem!=NULL;elem=elem->next){
+ pt=(PayloadType*)elem->data;
+ if ((strcmp(pt->mime_type, "opus") == 0) || (strcmp(pt->mime_type, "mpeg4-generic") == 0)) {
+ pt->normal_bitrate = [self integerForKey:@"audio_codec_bitrate_limit_preference"] * 1000;
+ }
+ }
}
{
@@ -486,12 +498,19 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
pt=(PayloadType*)elem->data;
NSString *pref=[LinphoneManager getPreferenceForCodec:pt->mime_type withRate:pt->clock_rate];
linphone_core_enable_payload_type(lc,pt,[self boolForKey: pref]);
+ if ((strcmp(pt->mime_type, "opus") == 0) || (strcmp(pt->mime_type, "mpeg4-generic") == 0)) {
+ pt->normal_bitrate = [self integerForKey:@"audio_codec_bitrate_limit_preference"] * 1000;
+ }
}
for (elem=linphone_core_get_video_codecs(lc);elem!=NULL;elem=elem->next){
pt=(PayloadType*)elem->data;
NSString *pref=[LinphoneManager getPreferenceForCodec:pt->mime_type withRate:pt->clock_rate];
linphone_core_enable_payload_type(lc,pt,[self boolForKey: pref]);
}
+
+ LpConfig *config = linphone_core_get_config(lc);
+ lp_config_set_int(config, "audio", "codec_bitrate_limit", [self integerForKey:@"audio_codec_bitrate_limit_preference"]);
+ linphone_core_enable_adaptive_rate_control(lc, [self boolForKey:@"adaptive_rate_control_preference"]);
linphone_core_set_use_info_for_dtmf(lc, [self boolForKey:@"sipinfo_dtmf_preference"]);
linphone_core_set_use_rfc2833_for_dtmf(lc, [self boolForKey:@"rfc_dtmf_preference"]);
diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m
index f2144563a..1c2c7f9c2 100644
--- a/Classes/LinphoneManager.m
+++ b/Classes/LinphoneManager.m
@@ -963,6 +963,10 @@ static LinphoneCoreVTable linphonec_vtable = {
}
static int comp_call_id(const LinphoneCall* call , const char *callid) {
+ if (linphone_call_log_get_call_id(linphone_call_get_call_log(call)) == nil) {
+ ms_error ("no callid for call [%p]", call);
+ return 1;
+ }
return strcmp(linphone_call_log_get_call_id(linphone_call_get_call_log(call)), callid);
}
diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m
index 8cb63f9c8..d0eb48067 100644
--- a/Classes/SettingsViewController.m
+++ b/Classes/SettingsViewController.m
@@ -586,7 +586,6 @@ static UICompositeViewDescription *compositeDescription = nil;
[hiddenKeys addObject:@"battery_alert_button"];
#endif
- [hiddenKeys addObject:@"audio_advanced_group"];
[hiddenKeys addObject:@"playback_gain_preference"];
[hiddenKeys addObject:@"microphone_gain_preference"];
diff --git a/Settings/InAppSettings.bundle/Audio.plist b/Settings/InAppSettings.bundle/Audio.plist
index 5fa9900a1..6c57f74f1 100644
--- a/Settings/InAppSettings.bundle/Audio.plist
+++ b/Settings/InAppSettings.bundle/Audio.plist
@@ -188,6 +188,44 @@
IASKTextAlignment
IASKUITextAlignmentRight
+
+ DefaultValue
+
+ Key
+ adaptive_rate_control_preference
+ Title
+ Adaptive rate control
+ Type
+ PSToggleSwitchSpecifier
+
+
+ DefaultValue
+ 32
+ Key
+ audio_codec_bitrate_limit_preference
+ Title
+ Codec bitrate limit
+ Titles
+
+ 10 kbits/s
+ 15 kbits/s
+ 20 kbits/s
+ 32 kbits/s
+ 64 kbits/s
+ 128 kbits/s
+
+ Type
+ PSMultiValueSpecifier
+ Values
+
+ 10
+ 15
+ 20
+ 32
+ 64
+ 128
+
+
diff --git a/Settings/InAppSettings.bundle/en.lproj/Audio.strings b/Settings/InAppSettings.bundle/en.lproj/Audio.strings
index cf7f76b96..4384de768 100644
--- a/Settings/InAppSettings.bundle/en.lproj/Audio.strings
+++ b/Settings/InAppSettings.bundle/en.lproj/Audio.strings
@@ -41,4 +41,10 @@
"Playback gain" = "Playback gain";
/* Microphone gain */
-"Microphone gain" = "Microphone gain";
\ No newline at end of file
+"Microphone gain" = "Microphone gain";
+
+/* Adaptive rate control */
+"Adaptive rate control" = "Adaptive rate control";
+
+/* Codec bitrate limit */
+"Codec bitrate limit" = "Codec bitrate limit";
diff --git a/Settings/InAppSettings.bundle/fr.lproj/Audio.strings b/Settings/InAppSettings.bundle/fr.lproj/Audio.strings
index a86837e4a..c90dc9783 100644
--- a/Settings/InAppSettings.bundle/fr.lproj/Audio.strings
+++ b/Settings/InAppSettings.bundle/fr.lproj/Audio.strings
@@ -41,4 +41,10 @@
"Playback gain" = "Gain sortie";
/* Microphone gain */
-"Microphone gain" = "Gain microphone";
\ No newline at end of file
+"Microphone gain" = "Gain microphone";
+
+/* Adaptive rate control */
+"Adaptive rate control" = "Contrôle de débit";
+
+/* Codec bitrate limit */
+"Codec bitrate limit" = "Limite de débit du codec";
diff --git a/Settings/InAppSettings.bundle/ru.lproj/Audio.strings b/Settings/InAppSettings.bundle/ru.lproj/Audio.strings
index d1aeb96f3..2b325e3ae 100644
--- a/Settings/InAppSettings.bundle/ru.lproj/Audio.strings
+++ b/Settings/InAppSettings.bundle/ru.lproj/Audio.strings
@@ -41,4 +41,10 @@
"Playback gain" = "Усиление воспроизведения";
/* Microphone gain */
-"Microphone gain" = "Усиление микрофона";
\ No newline at end of file
+"Microphone gain" = "Усиление микрофона";
+
+/* Adaptive rate control */
+"Adaptive rate control" = "Adaptive rate control";
+
+/* Codec bitrate limit */
+"Codec bitrate limit" = "Codec bitrate limit";
diff --git a/linphone.ldb/Contents.plist b/linphone.ldb/Contents.plist
index 170d97bda..e0d4ea2f7 100644
--- a/linphone.ldb/Contents.plist
+++ b/linphone.ldb/Contents.plist
@@ -17902,7 +17902,7 @@ Raison: %2$s
change date
- 2012-11-06T09:45:46Z
+ 2013-06-28T12:59:59Z
changed values
class
@@ -17912,7 +17912,7 @@ Raison: %2$s
flags
0
hash
- d8b4f45bf8fca397a7f791bd55a61e1c
+ a03adeb7710ae8986354684bdcd69764
name
Audio.strings
@@ -18279,6 +18279,56 @@ Raison: %2$s
snapshots
+
+ change date
+ 2001-01-01T00:00:00Z
+ changed values
+
+ class
+ BLStringKeyObject
+ comment
+ Adaptive rate control
+ errors
+
+ flags
+ 0
+ key
+ Adaptive rate control
+ localizations
+
+ en
+ Adaptive rate control
+ fr
+ Contrôle de débit
+
+ snapshots
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ changed values
+
+ class
+ BLStringKeyObject
+ comment
+ Codec bitrate limit
+ errors
+
+ flags
+ 0
+ key
+ Codec bitrate limit
+ localizations
+
+ en
+ Codec bitrate limit
+ fr
+ Limite de débit du codec
+
+ snapshots
+
+
old objects
diff --git a/linphone.ldb/Resources/InAppSettings.bundle/Audio/1/Audio.strings b/linphone.ldb/Resources/InAppSettings.bundle/Audio/1/Audio.strings
index cf7f76b96..4384de768 100644
--- a/linphone.ldb/Resources/InAppSettings.bundle/Audio/1/Audio.strings
+++ b/linphone.ldb/Resources/InAppSettings.bundle/Audio/1/Audio.strings
@@ -41,4 +41,10 @@
"Playback gain" = "Playback gain";
/* Microphone gain */
-"Microphone gain" = "Microphone gain";
\ No newline at end of file
+"Microphone gain" = "Microphone gain";
+
+/* Adaptive rate control */
+"Adaptive rate control" = "Adaptive rate control";
+
+/* Codec bitrate limit */
+"Codec bitrate limit" = "Codec bitrate limit";
diff --git a/submodules/bcg729 b/submodules/bcg729
index 1ad5aa5ab..136c165a6 160000
--- a/submodules/bcg729
+++ b/submodules/bcg729
@@ -1 +1 @@
-Subproject commit 1ad5aa5abdf23bb260595b07f0705c9ede1a37d2
+Subproject commit 136c165a611a2552a3f52b0669b47a1bce0ab989
diff --git a/submodules/liblinphone.xcodeproj/project.pbxproj b/submodules/liblinphone.xcodeproj/project.pbxproj
index 59ab81863..378e612f0 100644
--- a/submodules/liblinphone.xcodeproj/project.pbxproj
+++ b/submodules/liblinphone.xcodeproj/project.pbxproj
@@ -3209,12 +3209,11 @@
linphone/mediastreamer2/include,
linphone/oRTP/include,
externals/gsm/,
- externals/osip/include,
- externals/exosip/include,
externals/speex/include,
externals/ffmpeg,
external/ffmpeg/swscale,
"../liblinphone-sdk/apple-darwin/include",
+ "../liblinphone-sdk/apple-darwin/include/opus",
);
INSTALL_PATH = /usr/local/lib;
LIBRARY_SEARCH_PATHS = (
@@ -3265,12 +3264,11 @@
linphone/mediastreamer2/include,
linphone/oRTP/include,
externals/gsm/,
- externals/osip/include,
- externals/exosip/include,
externals/speex/include,
externals/ffmpeg,
external/ffmpeg/swscale,
"../liblinphone-sdk/apple-darwin/include",
+ "../liblinphone-sdk/apple-darwin/include/opus",
);
INSTALL_PATH = /usr/local/lib;
LIBRARY_SEARCH_PATHS = (
@@ -3321,12 +3319,11 @@
linphone/mediastreamer2/include,
linphone/oRTP/include,
externals/gsm/,
- externals/osip/include,
- externals/exosip/include,
externals/speex/include,
externals/ffmpeg,
external/ffmpeg/swscale,
"../liblinphone-sdk/apple-darwin/include",
+ "../liblinphone-sdk/apple-darwin/include/opus",
);
INSTALL_PATH = /usr/local/lib;
LIBRARY_SEARCH_PATHS = (
diff --git a/submodules/linphone b/submodules/linphone
index 6a033f8a6..8b674d05e 160000
--- a/submodules/linphone
+++ b/submodules/linphone
@@ -1 +1 @@
-Subproject commit 6a033f8a646a9d1621e5e6c0a8886ad687ed77a6
+Subproject commit 8b674d05e33a80261dde28930591ff37dc8938b4
diff --git a/submodules/msilbc b/submodules/msilbc
index 32a39741b..d5a47655f 160000
--- a/submodules/msilbc
+++ b/submodules/msilbc
@@ -1 +1 @@
-Subproject commit 32a39741b64d74999134f5e6425609c4cfff5daf
+Subproject commit d5a47655f3c7ac64864f9d3a61bb0166eb748b57
diff --git a/submodules/mssilk b/submodules/mssilk
index 1d81e34d6..49f89d0cb 160000
--- a/submodules/mssilk
+++ b/submodules/mssilk
@@ -1 +1 @@
-Subproject commit 1d81e34d6e3234797a726f9e66fc02ac5f28a637
+Subproject commit 49f89d0cb2aaf676249c1b7cb0e545df78d2bf85