refactor(flutter): deduplicate AudioProcessingConfig construction (TODO-012)

Extract 4 identical BridgeAudioProcessingConfig constructions into
single shared construction, computing only platform-specific fields
in branches.
This commit is contained in:
Edison Jwa
2026-06-11 09:47:02 +09:00
parent b2937da726
commit ecdd68eff2
@@ -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,