aboutsummaryrefslogtreecommitdiff
path: root/src/audio_core/renderer/command/command_buffer.cpp
diff options
context:
space:
mode:
authorMaranBr <maranbr@outlook.com>2025-12-31 14:15:06 +0100
committercrueter <crueter@eden-emu.dev>2025-12-31 14:15:06 +0100
commit55646657e17a99a9ddd3da4b552f3d9ac233037b (patch)
treeadee4dd9c5aba922be07a6c238ab6de319590282 /src/audio_core/renderer/command/command_buffer.cpp
parent2b4d13c205cda607c34fd1b67d9bc7bab4cb6371 (diff)
[audio_core] Better biquad filter logic (#3235)
This removes all redundant code and improves the logic of the biquad filter. Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3235 Reviewed-by: Maufeat <sahyno1996@gmail.com> Co-authored-by: MaranBr <maranbr@outlook.com> Co-committed-by: MaranBr <maranbr@outlook.com>
Diffstat (limited to 'src/audio_core/renderer/command/command_buffer.cpp')
-rw-r--r--src/audio_core/renderer/command/command_buffer.cpp30
1 files changed, 13 insertions, 17 deletions
diff --git a/src/audio_core/renderer/command/command_buffer.cpp b/src/audio_core/renderer/command/command_buffer.cpp
index 66f78f26b4..ca6a23679f 100644
--- a/src/audio_core/renderer/command/command_buffer.cpp
+++ b/src/audio_core/renderer/command/command_buffer.cpp
@@ -275,28 +275,24 @@ void CommandBuffer::GenerateBiquadFilterCommand(const s32 node_id, EffectInfoBas
const auto& parameter{
*reinterpret_cast<BiquadFilterInfo::ParameterVersion2*>(effect_info.GetParameter())};
- if (parameter.state <= EffectInfoBase::ParameterState::Updated && IsChannelCountValid(parameter.channel_count) && channel >= 0 && channel < parameter.channel_count) {
- cmd.input = buffer_offset + parameter.inputs[channel];
- cmd.output = buffer_offset + parameter.outputs[channel];
-
- // Convert float coefficients to Q2.14 fixed-point as expected by the legacy DSP path.
- cmd.biquad.b[0] = ToQ14Clamped(parameter.b[0]);
- cmd.biquad.b[1] = ToQ14Clamped(parameter.b[1]);
- cmd.biquad.b[2] = ToQ14Clamped(parameter.b[2]);
- cmd.biquad.a[0] = ToQ14Clamped(parameter.a[0]);
- cmd.biquad.a[1] = ToQ14Clamped(parameter.a[1]);
- }
+ cmd.input = buffer_offset + parameter.inputs[channel];
+ cmd.output = buffer_offset + parameter.outputs[channel];
+
+ // Convert float coefficients to Q2.14 fixed-point as expected by the legacy DSP path.
+ cmd.biquad.b[0] = ToQ14Clamped(parameter.b[0]);
+ cmd.biquad.b[1] = ToQ14Clamped(parameter.b[1]);
+ cmd.biquad.b[2] = ToQ14Clamped(parameter.b[2]);
+ cmd.biquad.a[0] = ToQ14Clamped(parameter.a[0]);
+ cmd.biquad.a[1] = ToQ14Clamped(parameter.a[1]);
} else {
const auto& parameter{
*reinterpret_cast<BiquadFilterInfo::ParameterVersion1*>(effect_info.GetParameter())};
- if (IsChannelCountValid(parameter.channel_count) && channel >= 0 && channel < parameter.channel_count) {
- cmd.input = buffer_offset + parameter.inputs[channel];
- cmd.output = buffer_offset + parameter.outputs[channel];
+ cmd.input = buffer_offset + parameter.inputs[channel];
+ cmd.output = buffer_offset + parameter.outputs[channel];
- cmd.biquad.b = parameter.b;
- cmd.biquad.a = parameter.a;
- }
+ cmd.biquad.b = parameter.b;
+ cmd.biquad.a = parameter.a;
}
// Effects always use the fixed-point coefficient path on the DSP.