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