Add preferences to choose the video preset and the preferred video FPS + update linphone submodule.
This commit is contained in:
parent
f777f9f421
commit
e79d0cb747
6 changed files with 154 additions and 16 deletions
|
@ -67,7 +67,10 @@
|
||||||
<string name="pref_video_automatically_accept_video_key">pref_video_automatically_accept_video_key</string>
|
<string name="pref_video_automatically_accept_video_key">pref_video_automatically_accept_video_key</string>
|
||||||
<string name="pref_video_initiate_call_with_video_key">pref_video_initiate_call_with_video_key</string>
|
<string name="pref_video_initiate_call_with_video_key">pref_video_initiate_call_with_video_key</string>
|
||||||
<string name="pref_video_enable_key">pref_video_enable_key</string>
|
<string name="pref_video_enable_key">pref_video_enable_key</string>
|
||||||
|
<string name="pref_video_preset_key">pref_video_preset_key</string>
|
||||||
<string name="pref_preferred_video_size_key">pref_preferred_video_size_key</string>
|
<string name="pref_preferred_video_size_key">pref_preferred_video_size_key</string>
|
||||||
|
<string name="pref_preferred_video_fps_key">pref_preferred_video_fps_key</string>
|
||||||
|
<string name="pref_bandwidth_limit_key">pref_bandwidth_limit_key</string>
|
||||||
<string name="pref_animation_enable_key">pref_animation_enable_key</string>
|
<string name="pref_animation_enable_key">pref_animation_enable_key</string>
|
||||||
<string name="pref_escape_plus_key">pref_escape_plus_key</string>
|
<string name="pref_escape_plus_key">pref_escape_plus_key</string>
|
||||||
<string name="pref_echo_cancellation_key">pref_echo_cancellation_key</string>
|
<string name="pref_echo_cancellation_key">pref_echo_cancellation_key</string>
|
||||||
|
|
|
@ -112,6 +112,7 @@
|
||||||
<string name="pref_video_initiate_call_with_video_title">Initiate video calls</string>
|
<string name="pref_video_initiate_call_with_video_title">Initiate video calls</string>
|
||||||
<string name="pref_video_initiate_call_with_video">Always send video requests</string>
|
<string name="pref_video_initiate_call_with_video">Always send video requests</string>
|
||||||
<string name="pref_video_enable_title">Enable Video</string>
|
<string name="pref_video_enable_title">Enable Video</string>
|
||||||
|
<string name="pref_bandwidth_limit">Bandwidth limit in kbits/s</string>
|
||||||
<string name="pref_animation_enable_title">Enable Animations</string>
|
<string name="pref_animation_enable_title">Enable Animations</string>
|
||||||
<string name="pref_escape_plus">Replace + by 00</string>
|
<string name="pref_escape_plus">Replace + by 00</string>
|
||||||
<string name="pref_ilbc_summary">iLBC might be unavailable depending on ARM processor and Android OS version.</string>
|
<string name="pref_ilbc_summary">iLBC might be unavailable depending on ARM processor and Android OS version.</string>
|
||||||
|
|
|
@ -110,10 +110,23 @@
|
||||||
android:summary="@string/pref_video_automatically_accept_video"
|
android:summary="@string/pref_video_automatically_accept_video"
|
||||||
android:dependency="@string/pref_video_enable_key"/>
|
android:dependency="@string/pref_video_enable_key"/>
|
||||||
|
|
||||||
|
<ListPreference
|
||||||
|
android:title="Video preset"
|
||||||
|
android:key="@string/pref_video_preset_key"/>
|
||||||
|
|
||||||
<ListPreference
|
<ListPreference
|
||||||
android:title="@string/pref_preferred_video_size"
|
android:title="@string/pref_preferred_video_size"
|
||||||
android:key="@string/pref_preferred_video_size_key"/>
|
android:key="@string/pref_preferred_video_size_key"/>
|
||||||
|
|
||||||
|
<ListPreference
|
||||||
|
android:title="Preferred FPS"
|
||||||
|
android:key="@string/pref_preferred_video_fps_key"/>
|
||||||
|
|
||||||
|
<EditTextPreference
|
||||||
|
android:title="@string/pref_bandwidth_limit"
|
||||||
|
android:key="@string/pref_bandwidth_limit_key"
|
||||||
|
android:numeric="integer" />
|
||||||
|
|
||||||
<PreferenceCategory
|
<PreferenceCategory
|
||||||
android:title="@string/pref_video_codecs_title"
|
android:title="@string/pref_video_codecs_title"
|
||||||
android:key="@string/pref_video_codecs_key"
|
android:key="@string/pref_video_codecs_key"
|
||||||
|
|
|
@ -760,22 +760,56 @@ public class LinphonePreferences {
|
||||||
getLc().setVideoPolicy(shouldInitiateVideoCall(), accept);
|
getLc().setVideoPolicy(shouldInitiateVideoCall(), accept);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getVideoPreset() {
|
||||||
|
String preset = getLc().getVideoPreset();
|
||||||
|
if (preset == null) preset = "default";
|
||||||
|
return preset;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVideoPreset(String preset) {
|
||||||
|
if (preset.equals("default")) preset = null;
|
||||||
|
getLc().setVideoPreset(preset);
|
||||||
|
preset = getVideoPreset();
|
||||||
|
if (!preset.equals("custom")) {
|
||||||
|
getLc().setPreferredFramerate(0);
|
||||||
|
}
|
||||||
|
setPreferredVideoSize(getPreferredVideoSize()); // Apply the bandwidth limit
|
||||||
|
}
|
||||||
|
|
||||||
public String getPreferredVideoSize() {
|
public String getPreferredVideoSize() {
|
||||||
//LinphoneCore can only return video size (width and height), not the name
|
//LinphoneCore can only return video size (width and height), not the name
|
||||||
return getConfig().getString("video", "size", "qvga");
|
return getConfig().getString("video", "size", "qvga");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPreferredVideoSize(String preferredVideoSize) {
|
public void setPreferredVideoSize(String preferredVideoSize) {
|
||||||
int bandwidth = 512;
|
|
||||||
if (preferredVideoSize.equals("720p")) {
|
|
||||||
bandwidth = 1024 + 128;
|
|
||||||
} else if (preferredVideoSize.equals("qvga")) {
|
|
||||||
bandwidth = 380;
|
|
||||||
} else if (preferredVideoSize.equals("qcif")) {
|
|
||||||
bandwidth = 256;
|
|
||||||
}
|
|
||||||
|
|
||||||
getLc().setPreferredVideoSizeByName(preferredVideoSize);
|
getLc().setPreferredVideoSizeByName(preferredVideoSize);
|
||||||
|
String preset = getVideoPreset();
|
||||||
|
if (!preset.equals("custom")) {
|
||||||
|
int bandwidth = 512;
|
||||||
|
if (preferredVideoSize.equals("720p")) {
|
||||||
|
bandwidth = 1024 + 128;
|
||||||
|
} else if (preferredVideoSize.equals("qvga")) {
|
||||||
|
bandwidth = 380;
|
||||||
|
} else if (preferredVideoSize.equals("qcif")) {
|
||||||
|
bandwidth = 256;
|
||||||
|
}
|
||||||
|
setBandwidthLimit(bandwidth);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPreferredVideoFps() {
|
||||||
|
return (int)getLc().getPreferredFramerate();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPreferredVideoFps(int fps) {
|
||||||
|
getLc().setPreferredFramerate(fps);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getBandwidthLimit() {
|
||||||
|
return getLc().getDownloadBandwidth();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBandwidthLimit(int bandwidth) {
|
||||||
getLc().setUploadBandwidth(bandwidth);
|
getLc().setUploadBandwidth(bandwidth);
|
||||||
getLc().setDownloadBandwidth(bandwidth);
|
getLc().setDownloadBandwidth(bandwidth);
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,6 +50,7 @@ import android.preference.Preference.OnPreferenceChangeListener;
|
||||||
import android.preference.Preference.OnPreferenceClickListener;
|
import android.preference.Preference.OnPreferenceClickListener;
|
||||||
import android.preference.PreferenceCategory;
|
import android.preference.PreferenceCategory;
|
||||||
import android.preference.PreferenceScreen;
|
import android.preference.PreferenceScreen;
|
||||||
|
import android.widget.EditText;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Sylvain Berfini
|
* @author Sylvain Berfini
|
||||||
|
@ -125,8 +126,8 @@ public class SettingsFragment extends PreferencesListFragment {
|
||||||
@Override
|
@Override
|
||||||
public boolean onPreferenceClick(Preference preference) {
|
public boolean onPreferenceClick(Preference preference) {
|
||||||
Intent intent = new Intent(LinphoneService.instance(), SetupActivity.class);
|
Intent intent = new Intent(LinphoneService.instance(), SetupActivity.class);
|
||||||
startActivityForResult(intent, WIZARD_INTENT);
|
startActivityForResult(intent, WIZARD_INTENT);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
findPreference(getString(R.string.pref_add_account_key)).setOnPreferenceClickListener(new OnPreferenceClickListener() {
|
findPreference(getString(R.string.pref_add_account_key)).setOnPreferenceClickListener(new OnPreferenceClickListener() {
|
||||||
|
@ -134,7 +135,7 @@ public class SettingsFragment extends PreferencesListFragment {
|
||||||
public boolean onPreferenceClick(Preference preference) {
|
public boolean onPreferenceClick(Preference preference) {
|
||||||
int nbAccounts = mPrefs.getAccountCount();
|
int nbAccounts = mPrefs.getAccountCount();
|
||||||
LinphoneActivity.instance().displayAccountSettings(nbAccounts);
|
LinphoneActivity.instance().displayAccountSettings(nbAccounts);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -427,6 +428,21 @@ public class SettingsFragment extends PreferencesListFragment {
|
||||||
pref.setValue(key);
|
pref.setValue(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void initializeVideoPresetPreferences(ListPreference pref) {
|
||||||
|
List<CharSequence> entries = new ArrayList<CharSequence>();
|
||||||
|
List<CharSequence> values = new ArrayList<CharSequence>();
|
||||||
|
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) {
|
private void initializePreferredVideoSizePreferences(ListPreference pref) {
|
||||||
List<CharSequence> entries = new ArrayList<CharSequence>();
|
List<CharSequence> entries = new ArrayList<CharSequence>();
|
||||||
List<CharSequence> values = new ArrayList<CharSequence>();
|
List<CharSequence> values = new ArrayList<CharSequence>();
|
||||||
|
@ -442,6 +458,25 @@ public class SettingsFragment extends PreferencesListFragment {
|
||||||
pref.setValue(value);
|
pref.setValue(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void initializePreferredVideoFpsPreferences(ListPreference pref) {
|
||||||
|
List<CharSequence> entries = new ArrayList<CharSequence>();
|
||||||
|
List<CharSequence> values = new ArrayList<CharSequence>();
|
||||||
|
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<CharSequence> entries, List<CharSequence> values) {
|
private static void setListPreferenceValues(ListPreference pref, List<CharSequence> entries, List<CharSequence> values) {
|
||||||
CharSequence[] contents = new CharSequence[entries.size()];
|
CharSequence[] contents = new CharSequence[entries.size()];
|
||||||
entries.toArray(contents);
|
entries.toArray(contents);
|
||||||
|
@ -535,7 +570,7 @@ public class SettingsFragment extends PreferencesListFragment {
|
||||||
findPreference(getString(R.string.pref_adaptive_rate_algorithm_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
|
findPreference(getString(R.string.pref_adaptive_rate_algorithm_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
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()));
|
preference.setSummary(String.valueOf(mPrefs.getAdaptiveRateAlgorithm()));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -547,10 +582,10 @@ public class SettingsFragment extends PreferencesListFragment {
|
||||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||||
mPrefs.setCodecBitrateLimit(Integer.parseInt(newValue.toString()));
|
mPrefs.setCodecBitrateLimit(Integer.parseInt(newValue.toString()));
|
||||||
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
|
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
|
||||||
int bitrate=Integer.parseInt(newValue.toString());
|
int bitrate = Integer.parseInt(newValue.toString());
|
||||||
|
|
||||||
for (final PayloadType pt : lc.getAudioCodecs()) {
|
for (final PayloadType pt : lc.getAudioCodecs()) {
|
||||||
if(lc.payloadTypeIsVbr(pt)){
|
if (lc.payloadTypeIsVbr(pt)) {
|
||||||
lc.setPayloadTypeBitrate(pt, bitrate);
|
lc.setPayloadTypeBitrate(pt, bitrate);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -577,7 +612,13 @@ public class SettingsFragment extends PreferencesListFragment {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initVideoSettings() {
|
private void initVideoSettings() {
|
||||||
|
initializeVideoPresetPreferences((ListPreference) findPreference(getString(R.string.pref_video_preset_key)));
|
||||||
initializePreferredVideoSizePreferences((ListPreference) findPreference(getString(R.string.pref_preferred_video_size_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));
|
PreferenceCategory codecs = (PreferenceCategory) findPreference(getString(R.string.pref_video_codecs_key));
|
||||||
codecs.removeAll();
|
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());
|
((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() {
|
private void setVideoPreferencesListener() {
|
||||||
findPreference(getString(R.string.pref_video_enable_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
|
findPreference(getString(R.string.pref_video_enable_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
|
||||||
@Override
|
@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() {
|
findPreference(getString(R.string.pref_preferred_video_size_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||||
mPrefs.setPreferredVideoSize(newValue.toString());
|
mPrefs.setPreferredVideoSize(newValue.toString());
|
||||||
preference.setSummary(mPrefs.getPreferredVideoSize());
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit ad1d7c12c9b459660b34d63408b144bf5890f3b6
|
Subproject commit 7ac6a838d4fb2f0e16850a265ad5392923f71488
|
Loading…
Reference in a new issue