Add settings for bitrate adaptive control and bitrate limit
This commit is contained in:
parent
eb405ab24f
commit
0004c83bdf
6 changed files with 90 additions and 2 deletions
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -53,6 +53,16 @@
|
||||||
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"
|
||||||
android:key="@string/pref_codecs_key"/>
|
android:key="@string/pref_codecs_key"/>
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -441,6 +441,13 @@ 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));
|
||||||
|
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() {
|
||||||
|
@ -453,6 +460,33 @@ public class SettingsFragment extends PreferencesListFragment implements EcCalib
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
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) {
|
||||||
|
|
Loading…
Reference in a new issue