Add adaptive rate algorithm setting

This commit is contained in:
Gautier Pelloux-Prayer 2014-09-09 11:15:14 +02:00
parent 36e2f77076
commit 5a7ef0aab0
8 changed files with 237 additions and 196 deletions

1
.gitignore vendored
View file

@ -28,3 +28,4 @@ submodules/externals/build/libvpx/x86
submodules/externals/build/libvpx/arm submodules/externals/build/libvpx/arm
submodules/externals/build/openh264/arm submodules/externals/build/openh264/arm
submodules/externals/build/openh264/x86 submodules/externals/build/openh264/x86
submodules/externals/build/cunit/CUnit/

View file

@ -98,8 +98,10 @@
<string name="pref_media_encryption_key_zrtp">zrtp</string> <string name="pref_media_encryption_key_zrtp">zrtp</string>
<string name="pref_background_mode_key">pref_background_mode_key</string> <string name="pref_background_mode_key">pref_background_mode_key</string>
<string name="pref_codec_bitrate_limit_key">pref_codec_bitrate_limit_key</string> <string name="pref_codec_bitrate_limit_key">pref_codec_bitrate_limit_key</string>
<string name="pref_adaptative_rate_control_key">pref_adaptative_rate_control_key</string> <string name="pref_adaptive_rate_control_key">pref_adaptive_rate_control_key</string>
<string name="pref_adaptive_rate_algorithm_key">pref_adaptive_rate_algorithm</string>
<string name="pref_adaptive_rate_algorithm_simple_key">pref_adaptive_rate_algorithm_simple_key</string>
<string name="pref_adaptive_rate_algorithm_stateful_key">pref_adaptive_rate_algorithm_stateful_key</string>
<string name="push_reg_id_key">push_reg_id_key</string> <string name="push_reg_id_key">push_reg_id_key</string>
<string name="push_sender_id_key">push_sender_id_key</string> <string name="push_sender_id_key">push_sender_id_key</string>

View file

@ -166,7 +166,13 @@
<string name="pref_audio_port_description">Audio port or port range (minport-maxport)</string> <string name="pref_audio_port_description">Audio port or port range (minport-maxport)</string>
<string name="pref_incoming_call_timeout_title">Incoming call timeout (in seconds)</string> <string name="pref_incoming_call_timeout_title">Incoming call timeout (in seconds)</string>
<string name="place_call_chooser">Place a call</string> <string name="place_call_chooser">Place a call</string>
<string name="pref_adaptative_rate_control">Adaptative rate control</string> <string name="pref_adaptive_rate_control">Adaptive rate control</string>
<string name="pref_adaptive_rate_algorithm">Adaptive rate algorithm</string>
<string-array name="adaptive_rate_algorithm_entries">
<item>Simple</item>
<item>Stateful</item>
</string-array>
<string name="pref_codec_bitrate_limit">Codec bitrate limit</string> <string name="pref_codec_bitrate_limit">Codec bitrate limit</string>
<string-array name="limit_bitrate_entries"> <string-array name="limit_bitrate_entries">

View file

@ -54,8 +54,14 @@
android:key="@string/pref_echo_canceller_calibration_key"/> android:key="@string/pref_echo_canceller_calibration_key"/>
<CheckBoxPreference <CheckBoxPreference
android:title="@string/pref_adaptative_rate_control" android:title="@string/pref_adaptive_rate_control"
android:key="@string/pref_adaptative_rate_control_key" /> android:key="@string/pref_adaptive_rate_control_key" />
<ListPreference
android:title="@string/pref_adaptive_rate_algorithm"
android:key="@string/pref_adaptive_rate_algorithm_key"
android:entries="@array/adaptive_rate_algorithm_entries"
android:entryValues="@array/adaptive_rate_algorithm_entries" />
<ListPreference <ListPreference
android:title="@string/pref_codec_bitrate_limit" android:title="@string/pref_codec_bitrate_limit"

View file

@ -23,6 +23,7 @@ import org.linphone.core.LinphoneAddress;
import org.linphone.core.LinphoneAuthInfo; import org.linphone.core.LinphoneAuthInfo;
import org.linphone.core.LinphoneCore; import org.linphone.core.LinphoneCore;
import org.linphone.core.LinphoneAddress.TransportType; import org.linphone.core.LinphoneAddress.TransportType;
import org.linphone.core.LinphoneCore.AdaptiveRateAlgorithm;
import org.linphone.core.LinphoneCore.FirewallPolicy; import org.linphone.core.LinphoneCore.FirewallPolicy;
import org.linphone.core.LinphoneCore.MediaEncryption; import org.linphone.core.LinphoneCore.MediaEncryption;
import org.linphone.core.LinphoneCore.RegistrationState; import org.linphone.core.LinphoneCore.RegistrationState;
@ -1098,14 +1099,22 @@ public class LinphonePreferences {
return getConfig().getBool("app", "first_remote_provisioning", true); return getConfig().getBool("app", "first_remote_provisioning", true);
} }
public boolean isAdaptativeRateControlEnabled() { public boolean isAdaptiveRateControlEnabled() {
return getLc().isAdaptiveRateControlEnabled(); return getLc().isAdaptiveRateControlEnabled();
} }
public void enableAdaptativeRateControl(boolean enabled) { public void enableAdaptiveRateControl(boolean enabled) {
getLc().enableAdaptiveRateControl(enabled); getLc().enableAdaptiveRateControl(enabled);
} }
public AdaptiveRateAlgorithm getAdaptiveRateAlgorithm() {
return getLc().getAdaptiveRateAlgorithm();
}
public void setAdaptiveRateAlgorithm(AdaptiveRateAlgorithm alg) {
getLc().setAdaptiveRateAlgorithm(alg);
}
public int getCodecBitrateLimit() { public int getCodecBitrateLimit() {
return getConfig().getInt("audio", "codec_bitrate_limit", 36); return getConfig().getInt("audio", "codec_bitrate_limit", 36);
} }

View file

@ -25,6 +25,7 @@ import java.util.List;
import org.linphone.LinphoneManager.EcCalibrationListener; import org.linphone.LinphoneManager.EcCalibrationListener;
import org.linphone.core.LinphoneAddress; import org.linphone.core.LinphoneAddress;
import org.linphone.core.LinphoneCore; import org.linphone.core.LinphoneCore;
import org.linphone.core.LinphoneCore.AdaptiveRateAlgorithm;
import org.linphone.core.LinphoneCore.EcCalibratorStatus; import org.linphone.core.LinphoneCore.EcCalibratorStatus;
import org.linphone.core.LinphoneCore.MediaEncryption; import org.linphone.core.LinphoneCore.MediaEncryption;
import org.linphone.core.LinphoneCoreException; import org.linphone.core.LinphoneCoreException;
@ -441,9 +442,12 @@ public class SettingsFragment extends PreferencesListFragment implements EcCalib
echoCalibration.setSummary(String.format(getString(R.string.ec_calibrated), mPrefs.getEchoCalibration())); echoCalibration.setSummary(String.format(getString(R.string.ec_calibrated), mPrefs.getEchoCalibration()));
} }
CheckBoxPreference adaptativeRateControl = (CheckBoxPreference) findPreference(getString(R.string.pref_adaptative_rate_control_key)); CheckBoxPreference adaptiveRateControl = (CheckBoxPreference) findPreference(getString(R.string.pref_adaptive_rate_control_key));
adaptativeRateControl.setChecked(mPrefs.isAdaptativeRateControlEnabled()); adaptiveRateControl.setChecked(mPrefs.isAdaptiveRateControlEnabled());
ListPreference adaptiveRateAlgorithm = (ListPreference) findPreference(getString(R.string.pref_adaptive_rate_algorithm_key));
adaptiveRateAlgorithm.setSummary(String.valueOf(mPrefs.getAdaptiveRateAlgorithm()));
adaptiveRateAlgorithm.setValue(String.valueOf(mPrefs.getAdaptiveRateAlgorithm()));
ListPreference bitrateLimit = (ListPreference) findPreference(getString(R.string.pref_codec_bitrate_limit_key)); ListPreference bitrateLimit = (ListPreference) findPreference(getString(R.string.pref_codec_bitrate_limit_key));
bitrateLimit.setSummary(String.valueOf(mPrefs.getCodecBitrateLimit())); bitrateLimit.setSummary(String.valueOf(mPrefs.getCodecBitrateLimit()));
@ -460,15 +464,28 @@ public class SettingsFragment extends PreferencesListFragment implements EcCalib
} }
}); });
findPreference(getString(R.string.pref_adaptative_rate_control_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() { findPreference(getString(R.string.pref_adaptive_rate_control_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override @Override
public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(Preference preference, Object newValue) {
boolean enabled = (Boolean) newValue; boolean enabled = (Boolean) newValue;
mPrefs.enableAdaptativeRateControl(enabled); mPrefs.enableAdaptiveRateControl(enabled);
return true; return true;
} }
}); });
findPreference(getString(R.string.pref_adaptive_rate_algorithm_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
ListPreference listPreference = (ListPreference) preference;
int index = listPreference.findIndexOfValue((String)newValue);
mPrefs.setAdaptiveRateAlgorithm(AdaptiveRateAlgorithm.fromInt(index));
preference.setSummary(String.valueOf(mPrefs.getAdaptiveRateAlgorithm()));
return true;
}
});
findPreference(getString(R.string.pref_codec_bitrate_limit_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() { findPreference(getString(R.string.pref_codec_bitrate_limit_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override @Override
public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(Preference preference, Object newValue) {

@ -1 +1 @@
Subproject commit 3b4ef4e2faa9b382df35579c0d9444ba8feac828 Subproject commit fa1c112cb33d2c0a42b351652a4779a8aea77c56

@ -1 +1 @@
Subproject commit 7563ab148ae6c16ca7d0cfb00f5bde3dfe9cbb19 Subproject commit 0abc9efadc86737345690e63886f31880286a5ee