diff --git a/res/values/non_localizable_strings.xml b/res/values/non_localizable_strings.xml
index 5cdfe6343..8830a329b 100644
--- a/res/values/non_localizable_strings.xml
+++ b/res/values/non_localizable_strings.xml
@@ -67,7 +67,10 @@
pref_video_automatically_accept_video_key
pref_video_initiate_call_with_video_key
pref_video_enable_key
+ pref_video_preset_key
pref_preferred_video_size_key
+ pref_preferred_video_fps_key
+ pref_bandwidth_limit_key
pref_animation_enable_key
pref_escape_plus_key
pref_echo_cancellation_key
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 5d3295be8..baf5f687c 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -112,6 +112,7 @@
Initiate video calls
Always send video requests
Enable Video
+ Bandwidth limit in kbits/s
Enable Animations
Replace + by 00
iLBC might be unavailable depending on ARM processor and Android OS version.
diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml
index 197455775..23384f475 100644
--- a/res/xml/preferences.xml
+++ b/res/xml/preferences.xml
@@ -110,10 +110,23 @@
android:summary="@string/pref_video_automatically_accept_video"
android:dependency="@string/pref_video_enable_key"/>
+
+
+
+
+
+
entries = new ArrayList();
+ List values = new ArrayList();
+ entries.add("default");
+ values.add("default");
+ entries.add("high-fps");
+ values.add("high-fps");
+ entries.add("custom");
+ values.add("custom");
+ setListPreferenceValues(pref, entries, values);
+ String value = mPrefs.getVideoPreset();
+ pref.setSummary(value);
+ pref.setValue(value);
+ }
+
private void initializePreferredVideoSizePreferences(ListPreference pref) {
List entries = new ArrayList();
List values = new ArrayList();
@@ -442,6 +458,25 @@ public class SettingsFragment extends PreferencesListFragment {
pref.setValue(value);
}
+ private void initializePreferredVideoFpsPreferences(ListPreference pref) {
+ List entries = new ArrayList();
+ List values = new ArrayList();
+ entries.add("none");
+ values.add("0");
+ for (int i = 5; i <= 30; i += 5) {
+ String str = Integer.toString(i);
+ entries.add(str);
+ values.add(str);
+ }
+ setListPreferenceValues(pref, entries, values);
+ String value = Integer.toString(mPrefs.getPreferredVideoFps());
+ if (value.equals("0")) {
+ value = "none";
+ }
+ pref.setSummary(value);
+ pref.setValue(value);
+ }
+
private static void setListPreferenceValues(ListPreference pref, List entries, List values) {
CharSequence[] contents = new CharSequence[entries.size()];
entries.toArray(contents);
@@ -535,7 +570,7 @@ public class SettingsFragment extends PreferencesListFragment {
findPreference(getString(R.string.pref_adaptive_rate_algorithm_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
- mPrefs.setAdaptiveRateAlgorithm(AdaptiveRateAlgorithm.fromString((String)newValue));
+ mPrefs.setAdaptiveRateAlgorithm(AdaptiveRateAlgorithm.fromString((String) newValue));
preference.setSummary(String.valueOf(mPrefs.getAdaptiveRateAlgorithm()));
return true;
}
@@ -547,10 +582,10 @@ public class SettingsFragment extends PreferencesListFragment {
public boolean onPreferenceChange(Preference preference, Object newValue) {
mPrefs.setCodecBitrateLimit(Integer.parseInt(newValue.toString()));
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
- int bitrate=Integer.parseInt(newValue.toString());
+ int bitrate = Integer.parseInt(newValue.toString());
for (final PayloadType pt : lc.getAudioCodecs()) {
- if(lc.payloadTypeIsVbr(pt)){
+ if (lc.payloadTypeIsVbr(pt)) {
lc.setPayloadTypeBitrate(pt, bitrate);
}
}
@@ -577,7 +612,13 @@ public class SettingsFragment extends PreferencesListFragment {
}
private void initVideoSettings() {
+ initializeVideoPresetPreferences((ListPreference) findPreference(getString(R.string.pref_video_preset_key)));
initializePreferredVideoSizePreferences((ListPreference) findPreference(getString(R.string.pref_preferred_video_size_key)));
+ initializePreferredVideoFpsPreferences((ListPreference) findPreference(getString(R.string.pref_preferred_video_fps_key)));
+ EditTextPreference bandwidth = (EditTextPreference) findPreference(getString(R.string.pref_bandwidth_limit_key));
+ bandwidth.setText(Integer.toString(mPrefs.getBandwidthLimit()));
+ bandwidth.setSummary(bandwidth.getText());
+ updateVideoPreferencesAccordingToPreset();
PreferenceCategory codecs = (PreferenceCategory) findPreference(getString(R.string.pref_video_codecs_key));
codecs.removeAll();
@@ -624,6 +665,24 @@ public class SettingsFragment extends PreferencesListFragment {
((CheckBoxPreference) findPreference(getString(R.string.pref_video_automatically_accept_video_key))).setChecked(mPrefs.shouldAutomaticallyAcceptVideoRequests());
}
+ private void updateVideoPreferencesAccordingToPreset() {
+ if (mPrefs.getVideoPreset().equals("custom")) {
+ findPreference(getString(R.string.pref_preferred_video_fps_key)).setEnabled(true);
+ findPreference(getString(R.string.pref_bandwidth_limit_key)).setEnabled(true);
+ } else {
+ findPreference(getString(R.string.pref_preferred_video_fps_key)).setEnabled(false);
+ findPreference(getString(R.string.pref_bandwidth_limit_key)).setEnabled(false);
+ }
+ ((ListPreference) findPreference(getString(R.string.pref_video_preset_key))).setSummary(mPrefs.getVideoPreset());
+ int fps = mPrefs.getPreferredVideoFps();
+ String fpsStr = Integer.toString(fps);
+ if (fpsStr.equals("0")) {
+ fpsStr = "none";
+ }
+ ((ListPreference) findPreference(getString(R.string.pref_preferred_video_fps_key))).setSummary(fpsStr);
+ ((EditTextPreference) findPreference(getString(R.string.pref_bandwidth_limit_key))).setSummary(Integer.toString(mPrefs.getBandwidthLimit()));
+ }
+
private void setVideoPreferencesListener() {
findPreference(getString(R.string.pref_video_enable_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
@@ -672,11 +731,39 @@ public class SettingsFragment extends PreferencesListFragment {
}
});
+ findPreference(getString(R.string.pref_video_preset_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ mPrefs.setVideoPreset(newValue.toString());
+ preference.setSummary(mPrefs.getVideoPreset());
+ updateVideoPreferencesAccordingToPreset();
+ return true;
+ }
+ });
findPreference(getString(R.string.pref_preferred_video_size_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
mPrefs.setPreferredVideoSize(newValue.toString());
preference.setSummary(mPrefs.getPreferredVideoSize());
+ updateVideoPreferencesAccordingToPreset();
+ return true;
+ }
+ });
+
+ findPreference(getString(R.string.pref_preferred_video_fps_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ mPrefs.setPreferredVideoFps(Integer.parseInt(newValue.toString()));
+ updateVideoPreferencesAccordingToPreset();
+ return true;
+ }
+ });
+
+ findPreference(getString(R.string.pref_bandwidth_limit_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ mPrefs.setBandwidthLimit(Integer.parseInt(newValue.toString()));
+ preference.setSummary(newValue.toString());
return true;
}
});
diff --git a/submodules/linphone b/submodules/linphone
index ad1d7c12c..7ac6a838d 160000
--- a/submodules/linphone
+++ b/submodules/linphone
@@ -1 +1 @@
-Subproject commit ad1d7c12c9b459660b34d63408b144bf5890f3b6
+Subproject commit 7ac6a838d4fb2f0e16850a265ad5392923f71488