diff options
| author | 2021-02-11 18:46:20 +1100 | |
|---|---|---|
| committer | 2021-02-12 18:48:10 -0800 | |
| commit | 4a7fd91857a95dd9ba7c838384671b2a83e46e7d (patch) | |
| tree | 77dc77e963c2ce5e386d747b76ba19bec89a92b6 /src/audio_core/effect_context.cpp | |
| parent | Merge pull request #5877 from ameerj/res-limit-usage (diff) | |
| download | yuzu-4a7fd91857a95dd9ba7c838384671b2a83e46e7d.tar.gz yuzu-4a7fd91857a95dd9ba7c838384671b2a83e46e7d.tar.xz yuzu-4a7fd91857a95dd9ba7c838384671b2a83e46e7d.zip | |
audren: Implement I3dl2Reverb
Most notable fix is the voices in Fire Emblem Three Houses
Diffstat (limited to 'src/audio_core/effect_context.cpp')
| -rw-r--r-- | src/audio_core/effect_context.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/audio_core/effect_context.cpp b/src/audio_core/effect_context.cpp index f770b9608..eeee8e325 100644 --- a/src/audio_core/effect_context.cpp +++ b/src/audio_core/effect_context.cpp | |||
| @@ -90,6 +90,14 @@ s32 EffectBase::GetProcessingOrder() const { | |||
| 90 | return processing_order; | 90 | return processing_order; |
| 91 | } | 91 | } |
| 92 | 92 | ||
| 93 | std::vector<u8>& EffectBase::GetWorkBuffer() { | ||
| 94 | return work_buffer; | ||
| 95 | } | ||
| 96 | |||
| 97 | const std::vector<u8>& EffectBase::GetWorkBuffer() const { | ||
| 98 | return work_buffer; | ||
| 99 | } | ||
| 100 | |||
| 93 | EffectI3dl2Reverb::EffectI3dl2Reverb() : EffectGeneric(EffectType::I3dl2Reverb) {} | 101 | EffectI3dl2Reverb::EffectI3dl2Reverb() : EffectGeneric(EffectType::I3dl2Reverb) {} |
| 94 | EffectI3dl2Reverb::~EffectI3dl2Reverb() = default; | 102 | EffectI3dl2Reverb::~EffectI3dl2Reverb() = default; |
| 95 | 103 | ||
| @@ -117,6 +125,12 @@ void EffectI3dl2Reverb::Update(EffectInfo::InParams& in_params) { | |||
| 117 | usage = UsageState::Initialized; | 125 | usage = UsageState::Initialized; |
| 118 | params.status = ParameterStatus::Initialized; | 126 | params.status = ParameterStatus::Initialized; |
| 119 | skipped = in_params.buffer_address == 0 || in_params.buffer_size == 0; | 127 | skipped = in_params.buffer_address == 0 || in_params.buffer_size == 0; |
| 128 | if (!skipped) { | ||
| 129 | auto& work_buffer = GetWorkBuffer(); | ||
| 130 | // Has two buffers internally | ||
| 131 | work_buffer.resize(in_params.buffer_size * 2); | ||
| 132 | std::fill(work_buffer.begin(), work_buffer.end(), 0); | ||
| 133 | } | ||
| 120 | } | 134 | } |
| 121 | } | 135 | } |
| 122 | 136 | ||
| @@ -129,6 +143,14 @@ void EffectI3dl2Reverb::UpdateForCommandGeneration() { | |||
| 129 | GetParams().status = ParameterStatus::Updated; | 143 | GetParams().status = ParameterStatus::Updated; |
| 130 | } | 144 | } |
| 131 | 145 | ||
| 146 | I3dl2ReverbState& EffectI3dl2Reverb::GetState() { | ||
| 147 | return state; | ||
| 148 | } | ||
| 149 | |||
| 150 | const I3dl2ReverbState& EffectI3dl2Reverb::GetState() const { | ||
| 151 | return state; | ||
| 152 | } | ||
| 153 | |||
| 132 | EffectBiquadFilter::EffectBiquadFilter() : EffectGeneric(EffectType::BiquadFilter) {} | 154 | EffectBiquadFilter::EffectBiquadFilter() : EffectGeneric(EffectType::BiquadFilter) {} |
| 133 | EffectBiquadFilter::~EffectBiquadFilter() = default; | 155 | EffectBiquadFilter::~EffectBiquadFilter() = default; |
| 134 | 156 | ||