diff options
| author | Chloe Marcec <dmarcecguzman@gmail.com> | 2020-11-17 14:14:29 +1100 |
|---|---|---|
| committer | Chloe Marcec <dmarcecguzman@gmail.com> | 2020-11-17 14:14:29 +1100 |
| commit | 9a4beac95a0f88ec312a28d06da8270aa58736e3 (patch) | |
| tree | f3cbfbea9881288a32c52181ad16201f2958946a /src/audio_core/sink_context.cpp | |
| parent | 87f220efff9970440b7535cbb208d310f8c55a7b (diff) | |
audren: Make use of nodiscard, rework downmixing, release all buffers
Preliminary work for upmixing & general cleanup. Fixes basic issues in games such as Shovel Knight and slightly improves the LEGO games. Upmixing stitll needs to be implemented.
Audio levels in a few games will be fixed as we now use the downmix coefficients when possible instead of supplying our own
Diffstat (limited to 'src/audio_core/sink_context.cpp')
| -rw-r--r-- | src/audio_core/sink_context.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/audio_core/sink_context.cpp b/src/audio_core/sink_context.cpp index 0882b411a..cdb47ba81 100644 --- a/src/audio_core/sink_context.cpp +++ b/src/audio_core/sink_context.cpp @@ -12,10 +12,16 @@ std::size_t SinkContext::GetCount() const { return sink_count; } -void SinkContext::UpdateMainSink(SinkInfo::InParams& in) { +void SinkContext::UpdateMainSink(const SinkInfo::InParams& in) { + ASSERT(in.type == SinkTypes::Device); + + downmix = in.device.down_matrix_enabled; + if (downmix) { + downmix_coefficients = in.device.down_matrix_coef; + } in_use = in.in_use; use_count = in.device.input_count; - std::memcpy(buffers.data(), in.device.input.data(), AudioCommon::MAX_CHANNEL_COUNT); + buffers = in.device.input; } bool SinkContext::InUse() const { @@ -28,4 +34,12 @@ std::vector<u8> SinkContext::OutputBuffers() const { return buffer_ret; } +bool SinkContext::HasDownMixingCoefficients() const { + return downmix; +} + +const std::array<float_le, 4>& SinkContext::GetDownmixCoefficients() const { + return downmix_coefficients; +} + } // namespace AudioCore |
