diff options
author | Chloe Marcec <dmarcecguzman@gmail.com> | 2020-11-17 05:40:19 +0100 |
---|---|---|
committer | Chloe Marcec <dmarcecguzman@gmail.com> | 2020-11-17 05:40:19 +0100 |
commit | 908d3c56793ee67dccd0d370b175c4937420053f (patch) | |
tree | 5a29b03bf2689219a7c686cc5b9b38db0d996322 /src/audio_core | |
parent | audren: Make use of nodiscard, rework downmixing, release all buffers (diff) | |
download | yuzu-908d3c56793ee67dccd0d370b175c4937420053f.tar yuzu-908d3c56793ee67dccd0d370b175c4937420053f.tar.gz yuzu-908d3c56793ee67dccd0d370b175c4937420053f.tar.bz2 yuzu-908d3c56793ee67dccd0d370b175c4937420053f.tar.lz yuzu-908d3c56793ee67dccd0d370b175c4937420053f.tar.xz yuzu-908d3c56793ee67dccd0d370b175c4937420053f.tar.zst yuzu-908d3c56793ee67dccd0d370b175c4937420053f.zip |
Diffstat (limited to 'src/audio_core')
-rw-r--r-- | src/audio_core/audio_renderer.cpp | 4 | ||||
-rw-r--r-- | src/audio_core/sink_context.cpp | 8 | ||||
-rw-r--r-- | src/audio_core/sink_context.h | 10 | ||||
-rw-r--r-- | src/audio_core/stream.cpp | 1 |
4 files changed, 13 insertions, 10 deletions
diff --git a/src/audio_core/audio_renderer.cpp b/src/audio_core/audio_renderer.cpp index 03a133640..e1ded84e0 100644 --- a/src/audio_core/audio_renderer.cpp +++ b/src/audio_core/audio_renderer.cpp @@ -17,8 +17,8 @@ namespace { [[nodiscard]] static constexpr s16 ClampToS16(s32 value) { - return static_cast<s16>(std::clamp(value, static_cast<s32>(std::numeric_limits<s16>::min()), - static_cast<s32>(std::numeric_limits<s16>::max()))); + return static_cast<s16>(std::clamp(value, s32{std::numeric_limits<s16>::min()}, + s32{std::numeric_limits<s16>::max()})); } [[nodiscard]] static constexpr s16 Mix2To1(s16 l_channel, s16 r_channel) { diff --git a/src/audio_core/sink_context.cpp b/src/audio_core/sink_context.cpp index cdb47ba81..b29b47890 100644 --- a/src/audio_core/sink_context.cpp +++ b/src/audio_core/sink_context.cpp @@ -15,8 +15,8 @@ std::size_t SinkContext::GetCount() const { void SinkContext::UpdateMainSink(const SinkInfo::InParams& in) { ASSERT(in.type == SinkTypes::Device); - downmix = in.device.down_matrix_enabled; - if (downmix) { + has_downmix_coefs = in.device.down_matrix_enabled; + if (has_downmix_coefs) { downmix_coefficients = in.device.down_matrix_coef; } in_use = in.in_use; @@ -35,10 +35,10 @@ std::vector<u8> SinkContext::OutputBuffers() const { } bool SinkContext::HasDownMixingCoefficients() const { - return downmix; + return has_downmix_coefs; } -const std::array<float_le, 4>& SinkContext::GetDownmixCoefficients() const { +const DownmixCoefficients& SinkContext::GetDownmixCoefficients() const { return downmix_coefficients; } diff --git a/src/audio_core/sink_context.h b/src/audio_core/sink_context.h index 5a757a4ef..e2e7880b7 100644 --- a/src/audio_core/sink_context.h +++ b/src/audio_core/sink_context.h @@ -11,6 +11,8 @@ namespace AudioCore { +using DownmixCoefficients = std::array<float_le, 4>; + enum class SinkTypes : u8 { Invalid = 0, Device = 1, @@ -50,7 +52,7 @@ public: std::array<u8, AudioCommon::MAX_CHANNEL_COUNT> input; INSERT_UNION_PADDING_BYTES(1); bool down_matrix_enabled; - std::array<float_le, 4> down_matrix_coef; + DownmixCoefficients down_matrix_coef; }; static_assert(sizeof(SinkInfo::DeviceIn) == 0x11c, "SinkInfo::DeviceIn is an invalid size"); @@ -81,14 +83,14 @@ public: [[nodiscard]] std::vector<u8> OutputBuffers() const; [[nodiscard]] bool HasDownMixingCoefficients() const; - [[nodiscard]] const std::array<float_le, 4>& GetDownmixCoefficients() const; + [[nodiscard]] const DownmixCoefficients& GetDownmixCoefficients() const; private: bool in_use{false}; s32 use_count{}; std::array<u8, AudioCommon::MAX_CHANNEL_COUNT> buffers{}; std::size_t sink_count{}; - bool downmix{false}; - std::array<float_le, 4> downmix_coefficients{}; + bool has_downmix_coefs{false}; + DownmixCoefficients downmix_coefficients{}; }; } // namespace AudioCore diff --git a/src/audio_core/stream.cpp b/src/audio_core/stream.cpp index 3f11b84ae..41bc2f4d6 100644 --- a/src/audio_core/stream.cpp +++ b/src/audio_core/stream.cpp @@ -138,6 +138,7 @@ std::vector<Buffer::Tag> Stream::GetTagsAndReleaseBuffers(std::size_t max_count) std::vector<Buffer::Tag> Stream::GetTagsAndReleaseBuffers() { std::vector<Buffer::Tag> tags; + tags.reserve(released_buffers.size()); while (!released_buffers.empty()) { tags.push_back(released_buffers.front()->GetTag()); released_buffers.pop(); |