|
|
@ -11,7 +11,7 @@ |
|
|
|
|
|
|
|
|
namespace AudioCore::AudioRenderer { |
|
|
namespace AudioCore::AudioRenderer { |
|
|
|
|
|
|
|
|
static void SetCompressorEffectParameter(CompressorInfo::ParameterVersion2& params, |
|
|
|
|
|
|
|
|
static void SetCompressorEffectParameter(const CompressorInfo::ParameterVersion2& params, |
|
|
CompressorInfo::State& state) { |
|
|
CompressorInfo::State& state) { |
|
|
const auto ratio{1.0f / params.compressor_ratio}; |
|
|
const auto ratio{1.0f / params.compressor_ratio}; |
|
|
auto makeup_gain{0.0f}; |
|
|
auto makeup_gain{0.0f}; |
|
|
@ -31,9 +31,9 @@ static void SetCompressorEffectParameter(CompressorInfo::ParameterVersion2& para |
|
|
state.unk_20 = c; |
|
|
state.unk_20 = c; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
static void InitializeCompressorEffect(CompressorInfo::ParameterVersion2& params, |
|
|
|
|
|
|
|
|
static void InitializeCompressorEffect(const CompressorInfo::ParameterVersion2& params, |
|
|
CompressorInfo::State& state) { |
|
|
CompressorInfo::State& state) { |
|
|
std::memset(&state, 0, sizeof(CompressorInfo::State)); |
|
|
|
|
|
|
|
|
state = {}; |
|
|
|
|
|
|
|
|
state.unk_00 = 0; |
|
|
state.unk_00 = 0; |
|
|
state.unk_04 = 1.0f; |
|
|
state.unk_04 = 1.0f; |
|
|
@ -42,7 +42,7 @@ static void InitializeCompressorEffect(CompressorInfo::ParameterVersion2& params |
|
|
SetCompressorEffectParameter(params, state); |
|
|
SetCompressorEffectParameter(params, state); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
static void ApplyCompressorEffect(CompressorInfo::ParameterVersion2& params, |
|
|
|
|
|
|
|
|
static void ApplyCompressorEffect(const CompressorInfo::ParameterVersion2& params, |
|
|
CompressorInfo::State& state, bool enabled, |
|
|
CompressorInfo::State& state, bool enabled, |
|
|
std::vector<std::span<const s32>> input_buffers, |
|
|
std::vector<std::span<const s32>> input_buffers, |
|
|
std::vector<std::span<s32>> output_buffers, u32 sample_count) { |
|
|
std::vector<std::span<s32>> output_buffers, u32 sample_count) { |
|
|
@ -103,8 +103,7 @@ static void ApplyCompressorEffect(CompressorInfo::ParameterVersion2& params, |
|
|
} else { |
|
|
} else { |
|
|
for (s16 channel = 0; channel < params.channel_count; channel++) { |
|
|
for (s16 channel = 0; channel < params.channel_count; channel++) { |
|
|
if (params.inputs[channel] != params.outputs[channel]) { |
|
|
if (params.inputs[channel] != params.outputs[channel]) { |
|
|
std::memcpy((char*)output_buffers[channel].data(), |
|
|
|
|
|
(char*)input_buffers[channel].data(), |
|
|
|
|
|
|
|
|
std::memcpy(output_buffers[channel].data(), input_buffers[channel].data(), |
|
|
output_buffers[channel].size_bytes()); |
|
|
output_buffers[channel].size_bytes()); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|