Add settings for bitrate adaptive control and bitrate limit

This commit is contained in:
Margaux Clerc 2014-08-12 17:28:30 +02:00
parent eb405ab24f
commit 0004c83bdf
6 changed files with 90 additions and 2 deletions

View file

@ -97,6 +97,9 @@
<string name="pref_media_encryption_key_srtp">srtp</string> <string name="pref_media_encryption_key_srtp">srtp</string>
<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_adaptative_rate_control_key">pref_adaptative_rate_control_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,6 +166,25 @@
<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_codec_bitrate_limit">Codec bitrate limit</string>
<string-array name="limit_bitrate_entries">
<item>10 kbits/s</item>
<item>15 kbits/s</item>
<item>20 kbits/s</item>
<item>36 kbits/s</item>
<item>64 kbits/s</item>
<item>128 kbits/s</item>
</string-array>
<string-array name="limit_bitrate_entry_values">
<item>10</item>
<item>15</item>
<item>20</item>
<item>36</item>
<item>64</item>
<item>128</item>
</string-array>
<string name="pref_debug">Debug</string> <string name="pref_debug">Debug</string>
<string name="about_report_issue">Report issue</string> <string name="about_report_issue">Report issue</string>

View file

@ -52,6 +52,16 @@
<Preference <Preference
android:title="@string/pref_echo_canceller_calibration" android:title="@string/pref_echo_canceller_calibration"
android:key="@string/pref_echo_canceller_calibration_key"/> android:key="@string/pref_echo_canceller_calibration_key"/>
<CheckBoxPreference
android:title="@string/pref_adaptative_rate_control"
android:key="@string/pref_adaptative_rate_control_key" />
<ListPreference
android:title="@string/pref_codec_bitrate_limit"
android:key="@string/pref_codec_bitrate_limit_key"
android:entries="@array/limit_bitrate_entries"
android:entryValues="@array/limit_bitrate_entry_values" />
<PreferenceCategory <PreferenceCategory
android:title="@string/pref_codecs" android:title="@string/pref_codecs"

View file

@ -1055,7 +1055,13 @@ public class InCallActivity extends FragmentActivity implements
} }
if(!LinphonePreferences.instance().isVideoEnabled()){ if(!LinphonePreferences.instance().isVideoEnabled()){
video.setEnabled(true); mHandler.post(new Runnable() {
@Override
public void run() {
video.setEnabled(true);
}
});
} }
if (state == State.IncomingReceived) { if (state == State.IncomingReceived) {

View file

@ -1077,4 +1077,20 @@ public class LinphonePreferences {
public boolean isFirstRemoteProvisioning() { public boolean isFirstRemoteProvisioning() {
return getConfig().getBool("app", "first_remote_provisioning", true); return getConfig().getBool("app", "first_remote_provisioning", true);
} }
public boolean isAdaptativeRateControlEnabled() {
return getLc().isAdaptiveRateControlEnabled();
}
public void enableAdaptativeRateControl(boolean enabled) {
getLc().enableAdaptiveRateControl(enabled);
}
public int getCodecBitrateLimit() {
return getConfig().getInt("audio", "codec_bitrate_limit", 36);
}
public void setCodecBitrateLimit(int bitrate) {
getConfig().setInt("audio", "codec_bitrate_limit", bitrate);
}
} }

View file

@ -440,7 +440,14 @@ public class SettingsFragment extends PreferencesListFragment implements EcCalib
Preference echoCalibration = findPreference(getString(R.string.pref_echo_canceller_calibration_key)); Preference echoCalibration = findPreference(getString(R.string.pref_echo_canceller_calibration_key));
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));
adaptativeRateControl.setChecked(mPrefs.isAdaptativeRateControlEnabled());
ListPreference bitrateLimit = (ListPreference) findPreference(getString(R.string.pref_codec_bitrate_limit_key));
bitrateLimit.setSummary(String.valueOf(mPrefs.getCodecBitrateLimit()));
bitrateLimit.setValue(String.valueOf(mPrefs.getCodecBitrateLimit()));
} }
private void setAudioPreferencesListener() { private void setAudioPreferencesListener() {
@ -452,7 +459,34 @@ public class SettingsFragment extends PreferencesListFragment implements EcCalib
return true; return true;
} }
}); });
findPreference(getString(R.string.pref_adaptative_rate_control_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
boolean enabled = (Boolean) newValue;
mPrefs.enableAdaptativeRateControl(enabled);
return true;
}
});
findPreference(getString(R.string.pref_codec_bitrate_limit_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
mPrefs.setCodecBitrateLimit(Integer.parseInt(newValue.toString()));
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
int bitrate=Integer.parseInt(newValue.toString());
for (final PayloadType pt : lc.getAudioCodecs()) {
if(lc.payloadTypeIsVbr(pt)){
lc.setPayloadTypeBitrate(pt, bitrate);
}
}
preference.setSummary(String.valueOf(mPrefs.getCodecBitrateLimit()));
return true;
}
});
findPreference(getString(R.string.pref_echo_canceller_calibration_key)).setOnPreferenceClickListener(new OnPreferenceClickListener() { findPreference(getString(R.string.pref_echo_canceller_calibration_key)).setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override @Override
public boolean onPreferenceClick(Preference preference) { public boolean onPreferenceClick(Preference preference) {