diff options
author | liamwhite <liamwhite@users.noreply.github.com> | 2023-09-17 16:42:44 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-17 16:42:44 +0200 |
commit | 474739a37920ff8e8a2f5d6f480a9116fdfba825 (patch) | |
tree | 8331fac91e1e96ddd379917ad51167cef48868f3 /src/audio_core/opus/hardware_opus.h | |
parent | Merge pull request #11523 from t895/shader-workers (diff) | |
parent | Reimplement HardwareOpus (diff) | |
download | yuzu-474739a37920ff8e8a2f5d6f480a9116fdfba825.tar yuzu-474739a37920ff8e8a2f5d6f480a9116fdfba825.tar.gz yuzu-474739a37920ff8e8a2f5d6f480a9116fdfba825.tar.bz2 yuzu-474739a37920ff8e8a2f5d6f480a9116fdfba825.tar.lz yuzu-474739a37920ff8e8a2f5d6f480a9116fdfba825.tar.xz yuzu-474739a37920ff8e8a2f5d6f480a9116fdfba825.tar.zst yuzu-474739a37920ff8e8a2f5d6f480a9116fdfba825.zip |
Diffstat (limited to 'src/audio_core/opus/hardware_opus.h')
-rw-r--r-- | src/audio_core/opus/hardware_opus.h | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/audio_core/opus/hardware_opus.h b/src/audio_core/opus/hardware_opus.h new file mode 100644 index 000000000..7013a6b40 --- /dev/null +++ b/src/audio_core/opus/hardware_opus.h @@ -0,0 +1,45 @@ +// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include <mutex>
+#include <opus.h>
+
+#include "audio_core/adsp/apps/opus/opus_decoder.h"
+#include "audio_core/adsp/apps/opus/shared_memory.h"
+#include "audio_core/adsp/mailbox.h"
+#include "core/hle/service/audio/errors.h"
+
+namespace AudioCore::OpusDecoder {
+class HardwareOpus {
+public:
+ HardwareOpus(Core::System& system);
+
+ u64 GetWorkBufferSize(u32 channel);
+ u64 GetWorkBufferSizeForMultiStream(u32 total_stream_count, u32 stereo_stream_count);
+
+ Result InitializeDecodeObject(u32 sample_rate, u32 channel_count, void* buffer,
+ u64 buffer_size);
+ Result InitializeMultiStreamDecodeObject(u32 sample_rate, u32 channel_count,
+ u32 totaL_stream_count, u32 stereo_stream_count,
+ void* mappings, void* buffer, u64 buffer_size);
+ Result ShutdownDecodeObject(void* buffer, u64 buffer_size);
+ Result ShutdownMultiStreamDecodeObject(void* buffer, u64 buffer_size);
+ Result DecodeInterleaved(u32& out_sample_count, void* output_data, u64 output_data_size,
+ u32 channel_count, void* input_data, u64 input_data_size, void* buffer,
+ u64& out_time_taken, bool reset);
+ Result DecodeInterleavedForMultiStream(u32& out_sample_count, void* output_data,
+ u64 output_data_size, u32 channel_count,
+ void* input_data, u64 input_data_size, void* buffer,
+ u64& out_time_taken, bool reset);
+ Result MapMemory(void* buffer, u64 buffer_size);
+ Result UnmapMemory(void* buffer, u64 buffer_size);
+
+private:
+ Core::System& system;
+ std::mutex mutex;
+ ADSP::OpusDecoder::OpusDecoder& opus_decoder;
+ ADSP::OpusDecoder::SharedMemory shared_memory;
+};
+} // namespace AudioCore::OpusDecoder
|