From ecdd68eff2273ae94c87bf189112d6ebd0877987 Mon Sep 17 00:00:00 2001 From: Edison Jwa Date: Thu, 11 Jun 2026 09:47:02 +0900 Subject: [PATCH] refactor(flutter): deduplicate AudioProcessingConfig construction (TODO-012) Extract 4 identical BridgeAudioProcessingConfig constructions into single shared construction, computing only platform-specific fields in branches. --- .../audio_processing_config_state.dart | 95 +++++++------------ 1 file changed, 34 insertions(+), 61 deletions(-) diff --git a/apps/chanora_flutter/lib/widgets/audio_processing_config_state.dart b/apps/chanora_flutter/lib/widgets/audio_processing_config_state.dart index 1ed4a77..6923c13 100644 --- a/apps/chanora_flutter/lib/widgets/audio_processing_config_state.dart +++ b/apps/chanora_flutter/lib/widgets/audio_processing_config_state.dart @@ -93,78 +93,51 @@ class AudioProcessingConfigState { isLinux: linux, ); + rust.BridgeAudioBackend processingBackend; + rust.BridgeEffectOwner aec; + rust.BridgeEffectOwner ns; + rust.BridgeEffectOwner agc; + if (android) { final owner = preferHardware ? rust.BridgeEffectOwner.platform : rust.BridgeEffectOwner.webrtcApm; - return rust.BridgeAudioProcessingConfig( - route: base.route, - iosMode: normalizedIosProcessingMode(iosMode), - processingBackend: preferHardware - ? rust.BridgeAudioBackend.platformVoiceProcessing - : rust.BridgeAudioBackend.webrtcApm, - vadBackend: vad, - aec: aecEnabled ? owner : rust.BridgeEffectOwner.off, - ns: nsEnabled ? owner : rust.BridgeEffectOwner.off, - agc: agcEnabled ? owner : rust.BridgeEffectOwner.off, - hpfEnabled: hpfEnabled, - limiterEnabled: limiterEnabled, - vadHangoverMs: base.vadHangoverMs, - vadPreRollMs: base.vadPreRollMs, - vadMinTxMs: base.vadMinTxMs, - debugWavDumpEnabled: debugWavDump, - ); - } - - if (appleVoiceProcessing) { - return rust.BridgeAudioProcessingConfig( - route: base.route, - iosMode: normalizedIosProcessingMode(iosMode), - processingBackend: rust.BridgeAudioBackend.platformVoiceProcessing, - vadBackend: vad, - aec: rust.BridgeEffectOwner.platform, - ns: rust.BridgeEffectOwner.platform, - agc: rust.BridgeEffectOwner.platform, - hpfEnabled: hpfEnabled, - limiterEnabled: limiterEnabled, - vadHangoverMs: base.vadHangoverMs, - vadPreRollMs: base.vadPreRollMs, - vadMinTxMs: base.vadMinTxMs, - debugWavDumpEnabled: debugWavDump, - ); - } - - if (desktopWebrtcApm) { + processingBackend = preferHardware + ? rust.BridgeAudioBackend.platformVoiceProcessing + : rust.BridgeAudioBackend.webrtcApm; + aec = aecEnabled ? owner : rust.BridgeEffectOwner.off; + ns = nsEnabled ? owner : rust.BridgeEffectOwner.off; + agc = agcEnabled ? owner : rust.BridgeEffectOwner.off; + } else if (appleVoiceProcessing) { + processingBackend = rust.BridgeAudioBackend.platformVoiceProcessing; + aec = rust.BridgeEffectOwner.platform; + ns = rust.BridgeEffectOwner.platform; + agc = rust.BridgeEffectOwner.platform; + } else if (desktopWebrtcApm) { final owner = rust.BridgeEffectOwner.webrtcApm; - return rust.BridgeAudioProcessingConfig( - route: base.route, - iosMode: normalizedIosProcessingMode(iosMode), - processingBackend: rust.BridgeAudioBackend.webrtcApm, - vadBackend: vad, - aec: aecEnabled ? owner : rust.BridgeEffectOwner.off, - ns: nsEnabled ? owner : rust.BridgeEffectOwner.off, - agc: agcEnabled ? owner : rust.BridgeEffectOwner.off, - hpfEnabled: hpfEnabled, - limiterEnabled: limiterEnabled, - vadHangoverMs: base.vadHangoverMs, - vadPreRollMs: base.vadPreRollMs, - vadMinTxMs: base.vadMinTxMs, - debugWavDumpEnabled: debugWavDump, - ); + processingBackend = rust.BridgeAudioBackend.webrtcApm; + aec = aecEnabled ? owner : rust.BridgeEffectOwner.off; + ns = nsEnabled ? owner : rust.BridgeEffectOwner.off; + agc = agcEnabled ? owner : rust.BridgeEffectOwner.off; + } else { + processingBackend = rust.BridgeAudioBackend.platformVoiceProcessing; + aec = rust.BridgeEffectOwner.platform; + ns = nsEnabled + ? rust.BridgeEffectOwner.platform + : rust.BridgeEffectOwner.off; + agc = agcEnabled + ? rust.BridgeEffectOwner.platform + : rust.BridgeEffectOwner.off; } return rust.BridgeAudioProcessingConfig( route: base.route, iosMode: normalizedIosProcessingMode(iosMode), - processingBackend: rust.BridgeAudioBackend.platformVoiceProcessing, + processingBackend: processingBackend, vadBackend: vad, - aec: rust.BridgeEffectOwner.platform, - ns: nsEnabled - ? rust.BridgeEffectOwner.platform - : rust.BridgeEffectOwner.off, - agc: agcEnabled - ? rust.BridgeEffectOwner.platform - : rust.BridgeEffectOwner.off, + aec: aec, + ns: ns, + agc: agc, hpfEnabled: hpfEnabled, limiterEnabled: limiterEnabled, vadHangoverMs: base.vadHangoverMs,