Add new remote config support for calling audio configuration.

This commit is contained in:
Jim Gustafson
2025-04-29 11:37:32 -07:00
committed by Cody Henthorne
parent 2421bbdabb
commit 570a475229
16 changed files with 777 additions and 150 deletions

View File

@@ -567,15 +567,6 @@ class InternalSettingsFragment : DSLSettingsFragment(R.string.preferences__inter
}
)
radioListPref(
title = DSLSettingsText.from("Audio processing method"),
listItems = CallManager.AudioProcessingMethod.entries.map { it.name }.toTypedArray(),
selected = CallManager.AudioProcessingMethod.entries.indexOf(state.callingAudioProcessingMethod),
onSelected = {
viewModel.setInternalCallingAudioProcessingMethod(CallManager.AudioProcessingMethod.entries[it])
}
)
radioListPref(
title = DSLSettingsText.from("Bandwidth mode"),
listItems = CallManager.DataMode.entries.map { it.name }.toTypedArray(),
@@ -594,10 +585,55 @@ class InternalSettingsFragment : DSLSettingsFragment(R.string.preferences__inter
)
switchPref(
title = DSLSettingsText.from("Enable Oboe ADM"),
isChecked = state.callingEnableOboeAdm,
title = DSLSettingsText.from("Set Audio Config:"),
isChecked = state.callingSetAudioConfig,
onClick = {
viewModel.setInternalCallingEnableOboeAdm(!state.callingEnableOboeAdm)
viewModel.setInternalCallingSetAudioConfig(!state.callingSetAudioConfig)
}
)
switchPref(
title = DSLSettingsText.from(" Use Oboe ADM"),
isChecked = state.callingUseOboeAdm,
isEnabled = state.callingSetAudioConfig,
onClick = {
viewModel.setInternalCallingUseOboeAdm(!state.callingUseOboeAdm)
}
)
switchPref(
title = DSLSettingsText.from(" Use Software AEC"),
isChecked = state.callingUseSoftwareAec,
isEnabled = state.callingSetAudioConfig,
onClick = {
viewModel.setInternalCallingUseSoftwareAec(!state.callingUseSoftwareAec)
}
)
switchPref(
title = DSLSettingsText.from(" Use Software NS"),
isChecked = state.callingUseSoftwareNs,
isEnabled = state.callingSetAudioConfig,
onClick = {
viewModel.setInternalCallingUseSoftwareNs(!state.callingUseSoftwareNs)
}
)
switchPref(
title = DSLSettingsText.from(" Use Input Low Latency"),
isChecked = state.callingUseInputLowLatency,
isEnabled = state.callingSetAudioConfig,
onClick = {
viewModel.setInternalCallingUseInputLowLatency(!state.callingUseInputLowLatency)
}
)
switchPref(
title = DSLSettingsText.from(" Use Input Voice Comm"),
isChecked = state.callingUseInputVoiceComm,
isEnabled = state.callingSetAudioConfig,
onClick = {
viewModel.setInternalCallingUseInputVoiceComm(!state.callingUseInputVoiceComm)
}
)

View File

@@ -11,10 +11,14 @@ data class InternalSettingsState(
val allowCensorshipSetting: Boolean,
val forceWebsocketMode: Boolean,
val callingServer: String,
val callingAudioProcessingMethod: CallManager.AudioProcessingMethod,
val callingDataMode: CallManager.DataMode,
val callingDisableTelecom: Boolean,
val callingEnableOboeAdm: Boolean,
val callingSetAudioConfig: Boolean,
val callingUseOboeAdm: Boolean,
val callingUseSoftwareAec: Boolean,
val callingUseSoftwareNs: Boolean,
val callingUseInputLowLatency: Boolean,
val callingUseInputVoiceComm: Boolean,
val useBuiltInEmojiSet: Boolean,
val emojiVersion: EmojiFiles.Version?,
val removeSenderKeyMinimium: Boolean,

View File

@@ -94,11 +94,6 @@ class InternalSettingsViewModel(private val repository: InternalSettingsReposito
refresh()
}
fun setInternalCallingAudioProcessingMethod(method: CallManager.AudioProcessingMethod) {
preferenceDataStore.putInt(InternalValues.CALLING_AUDIO_PROCESSING_METHOD, method.ordinal)
refresh()
}
fun setInternalCallingDataMode(dataMode: CallManager.DataMode) {
preferenceDataStore.putInt(InternalValues.CALLING_DATA_MODE, dataMode.ordinal)
refresh()
@@ -109,8 +104,33 @@ class InternalSettingsViewModel(private val repository: InternalSettingsReposito
refresh()
}
fun setInternalCallingEnableOboeAdm(enabled: Boolean) {
preferenceDataStore.putBoolean(InternalValues.CALLING_ENABLE_OBOE_ADM, enabled)
fun setInternalCallingSetAudioConfig(enabled: Boolean) {
preferenceDataStore.putBoolean(InternalValues.CALLING_SET_AUDIO_CONFIG, enabled)
refresh()
}
fun setInternalCallingUseOboeAdm(enabled: Boolean) {
preferenceDataStore.putBoolean(InternalValues.CALLING_USE_OBOE_ADM, enabled)
refresh()
}
fun setInternalCallingUseSoftwareAec(enabled: Boolean) {
preferenceDataStore.putBoolean(InternalValues.CALLING_USE_SOFTWARE_AEC, enabled)
refresh()
}
fun setInternalCallingUseSoftwareNs(enabled: Boolean) {
preferenceDataStore.putBoolean(InternalValues.CALLING_USE_SOFTWARE_NS, enabled)
refresh()
}
fun setInternalCallingUseInputLowLatency(enabled: Boolean) {
preferenceDataStore.putBoolean(InternalValues.CALLING_USE_INPUT_LOW_LATENCY, enabled)
refresh()
}
fun setInternalCallingUseInputVoiceComm(enabled: Boolean) {
preferenceDataStore.putBoolean(InternalValues.CALLING_USE_INPUT_VOICE_COMM, enabled)
refresh()
}
@@ -152,10 +172,14 @@ class InternalSettingsViewModel(private val repository: InternalSettingsReposito
allowCensorshipSetting = SignalStore.internal.allowChangingCensorshipSetting,
forceWebsocketMode = SignalStore.internal.isWebsocketModeForced,
callingServer = SignalStore.internal.groupCallingServer,
callingAudioProcessingMethod = SignalStore.internal.callingAudioProcessingMethod,
callingDataMode = SignalStore.internal.callingDataMode,
callingDisableTelecom = SignalStore.internal.callingDisableTelecom,
callingEnableOboeAdm = SignalStore.internal.callingEnableOboeAdm,
callingSetAudioConfig = SignalStore.internal.callingSetAudioConfig,
callingUseOboeAdm = SignalStore.internal.callingUseOboeAdm,
callingUseSoftwareAec = SignalStore.internal.callingUseSoftwareAec,
callingUseSoftwareNs = SignalStore.internal.callingUseSoftwareNs,
callingUseInputLowLatency = SignalStore.internal.callingUseInputLowLatency,
callingUseInputVoiceComm = SignalStore.internal.callingUseInputVoiceComm,
useBuiltInEmojiSet = SignalStore.internal.forceBuiltInEmoji,
emojiVersion = null,
removeSenderKeyMinimium = SignalStore.internal.removeSenderKeyMinimum,