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_zrtp">zrtp</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_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_incoming_call_timeout_title">Incoming call timeout (in seconds)</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="about_report_issue">Report issue</string>
|
||||
|
|
|
@ -53,6 +53,16 @@
|
|||
android:title="@string/pref_echo_canceller_calibration"
|
||||
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
|
||||
android:title="@string/pref_codecs"
|
||||
android:key="@string/pref_codecs_key"/>
|
||||
|
|
|
@ -1055,7 +1055,13 @@ public class InCallActivity extends FragmentActivity implements
|
|||
}
|
||||
|
||||
if(!LinphonePreferences.instance().isVideoEnabled()){
|
||||
video.setEnabled(true);
|
||||
mHandler.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
video.setEnabled(true);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
if (state == State.IncomingReceived) {
|
||||
|
|
|
@ -1077,4 +1077,20 @@ public class LinphonePreferences {
|
|||
public boolean isFirstRemoteProvisioning() {
|
||||
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()));
|
||||
}
|
||||
|
||||
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() {
|
||||
|
@ -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() {
|
||||
@Override
|
||||
public boolean onPreferenceClick(Preference preference) {
|
||||
|
|
Loading…
Reference in a new issue