From 5f90bd88daf997f9da1f97c1ffe97d3be46e3d0c Mon Sep 17 00:00:00 2001 From: Liam Date: Tue, 20 Feb 2024 22:15:28 -0500 Subject: audio: rewrite IHardwareOpusDecoder --- src/core/hle/service/audio/hardware_opus_decoder.h | 45 +++++++++++++++++----- 1 file changed, 35 insertions(+), 10 deletions(-) (limited to 'src/core/hle/service/audio/hardware_opus_decoder.h') diff --git a/src/core/hle/service/audio/hardware_opus_decoder.h b/src/core/hle/service/audio/hardware_opus_decoder.h index 121858a6f..511bf46bd 100644 --- a/src/core/hle/service/audio/hardware_opus_decoder.h +++ b/src/core/hle/service/audio/hardware_opus_decoder.h @@ -4,6 +4,7 @@ #pragma once #include "audio_core/opus/decoder.h" +#include "core/hle/service/cmif_types.h" #include "core/hle/service/service.h" namespace Service::Audio { @@ -20,16 +21,40 @@ public: Kernel::KTransferMemory* transfer_memory, u64 transfer_memory_size); private: - void DecodeInterleavedOld(HLERequestContext& ctx); - void SetContext(HLERequestContext& ctx); - void DecodeInterleavedForMultiStreamOld(HLERequestContext& ctx); - void SetContextForMultiStream(HLERequestContext& ctx); - void DecodeInterleavedWithPerfOld(HLERequestContext& ctx); - void DecodeInterleavedForMultiStreamWithPerfOld(HLERequestContext& ctx); - void DecodeInterleavedWithPerfAndResetOld(HLERequestContext& ctx); - void DecodeInterleavedForMultiStreamWithPerfAndResetOld(HLERequestContext& ctx); - void DecodeInterleaved(HLERequestContext& ctx); - void DecodeInterleavedForMultiStream(HLERequestContext& ctx); + Result DecodeInterleavedOld(OutBuffer out_pcm_data, + Out out_data_size, Out out_sample_count, + InBuffer opus_data); + Result SetContext(InBuffer decoder_context); + Result DecodeInterleavedForMultiStreamOld(OutBuffer out_pcm_data, + Out out_data_size, Out out_sample_count, + InBuffer opus_data); + Result SetContextForMultiStream(InBuffer decoder_context); + Result DecodeInterleavedWithPerfOld( + OutBuffer out_pcm_data, + Out out_data_size, Out out_sample_count, Out out_time_taken, + InBuffer opus_data); + Result DecodeInterleavedForMultiStreamWithPerfOld( + OutBuffer out_pcm_data, + Out out_data_size, Out out_sample_count, Out out_time_taken, + InBuffer opus_data); + Result DecodeInterleavedWithPerfAndResetOld( + OutBuffer out_pcm_data, + Out out_data_size, Out out_sample_count, Out out_time_taken, + InBuffer opus_data, bool reset); + Result DecodeInterleavedForMultiStreamWithPerfAndResetOld( + OutBuffer out_pcm_data, + Out out_data_size, Out out_sample_count, Out out_time_taken, + InBuffer opus_data, bool reset); + Result DecodeInterleaved( + OutBuffer out_pcm_data, + Out out_data_size, Out out_sample_count, Out out_time_taken, + InBuffer opus_data, + bool reset); + Result DecodeInterleavedForMultiStream( + OutBuffer out_pcm_data, + Out out_data_size, Out out_sample_count, Out out_time_taken, + InBuffer opus_data, + bool reset); std::unique_ptr impl; Common::ScratchBuffer output_data; -- cgit v1.2.3