summaryrefslogtreecommitdiffstats
path: root/src/audio_core
diff options
context:
space:
mode:
authorChloe Marcec <dmarcecguzman@gmail.com>2020-11-17 05:40:19 +0100
committerChloe Marcec <dmarcecguzman@gmail.com>2020-11-17 05:40:19 +0100
commit908d3c56793ee67dccd0d370b175c4937420053f (patch)
tree5a29b03bf2689219a7c686cc5b9b38db0d996322 /src/audio_core
parentaudren: Make use of nodiscard, rework downmixing, release all buffers (diff)
downloadyuzu-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.cpp4
-rw-r--r--src/audio_core/sink_context.cpp8
-rw-r--r--src/audio_core/sink_context.h10
-rw-r--r--src/audio_core/stream.cpp1
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();