diff options
author | MerryMage <MerryMage@users.noreply.github.com> | 2016-03-26 03:20:34 +0100 |
---|---|---|
committer | MerryMage <MerryMage@users.noreply.github.com> | 2016-03-28 16:51:00 +0200 |
commit | 2a99464ef1a35cb97cb94636d99779caa34f3cb7 (patch) | |
tree | b666b55415ed0d71c774621799c7b6e8c0a36411 /src/audio_core/hle/common.h | |
parent | DSP: Implement audio codecs (PCM8, PCM16, ADPCM) (diff) | |
download | yuzu-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.h | 35 |
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 |