summaryrefslogtreecommitdiffstats
path: root/src/audio_core/hle/common.h
diff options
context:
space:
mode:
authorMerryMage <MerryMage@users.noreply.github.com>2016-03-26 03:20:34 +0100
committerMerryMage <MerryMage@users.noreply.github.com>2016-03-28 16:51:00 +0200
commit2a99464ef1a35cb97cb94636d99779caa34f3cb7 (patch)
treeb666b55415ed0d71c774621799c7b6e8c0a36411 /src/audio_core/hle/common.h
parentDSP: Implement audio codecs (PCM8, PCM16, ADPCM) (diff)
downloadyuzu-2a99464ef1a35cb97cb94636d99779caa34f3cb7.tar
yuzu-2a99464ef1a35cb97cb94636d99779caa34f3cb7.tar.gz
yuzu-2a99464ef1a35cb97cb94636d99779caa34f3cb7.tar.bz2
yuzu-2a99464ef1a35cb97cb94636d99779caa34f3cb7.tar.lz
yuzu-2a99464ef1a35cb97cb94636d99779caa34f3cb7.tar.xz
yuzu-2a99464ef1a35cb97cb94636d99779caa34f3cb7.tar.zst
yuzu-2a99464ef1a35cb97cb94636d99779caa34f3cb7.zip
Diffstat (limited to 'src/audio_core/hle/common.h')
-rw-r--r--src/audio_core/hle/common.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/audio_core/hle/common.h b/src/audio_core/hle/common.h
new file mode 100644
index 000000000..37d441eb2
--- /dev/null
+++ b/src/audio_core/hle/common.h
@@ -0,0 +1,35 @@
+// Copyright 2016 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include <algorithm>
+#include <array>
+
+#include "audio_core/audio_core.h"
+
+#include "common/common_types.h"
+
+namespace DSP {
+namespace HLE {
+
+/// The final output to the speakers is stereo. Preprocessing output in Source is also stereo.
+using StereoFrame16 = std::array<std::array<s16, 2>, AudioCore::samples_per_frame>;
+
+/// The DSP is quadraphonic internally.
+using QuadFrame32 = std::array<std::array<s32, 4>, AudioCore::samples_per_frame>;
+
+/**
+ * This performs the filter operation defined by FilterT::ProcessSample on the frame in-place.
+ * FilterT::ProcessSample is called sequentially on the samples.
+ */
+template<typename FrameT, typename FilterT>
+void FilterFrame(FrameT& frame, FilterT& filter) {
+ std::transform(frame.begin(), frame.end(), frame.begin(), [&filter](const typename FrameT::value_type& sample) {
+ return filter.ProcessSample(sample);
+ });
+}
+
+} // namespace HLE
+} // namespace DSP