From 437c78e19840a9f4a9fdb4e491a8214019c536fe Mon Sep 17 00:00:00 2001 From: Ac_K Date: Wed, 30 Aug 2023 22:04:25 +0200 Subject: [PATCH] opus: Implement GetWorkBufferSizeExEx and GetWorkBufferSizeForMultiStreamExEx (#5624) * opus: Implement GetWorkBufferSizeExEx and GetWorkBufferSizeForMultiStreamExEx * Fix comments --- .../Audio/IHardwareOpusDecoderManager.cs | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/IHardwareOpusDecoderManager.cs b/src/Ryujinx.HLE/HOS/Services/Audio/IHardwareOpusDecoderManager.cs index b69a23921..514b51a51 100644 --- a/src/Ryujinx.HLE/HOS/Services/Audio/IHardwareOpusDecoderManager.cs +++ b/src/Ryujinx.HLE/HOS/Services/Audio/IHardwareOpusDecoderManager.cs @@ -154,6 +154,28 @@ namespace Ryujinx.HLE.HOS.Services.Audio return ResultCode.Success; } + [CommandCmif(8)] // 16.0.0+ + // GetWorkBufferSizeExEx(OpusParametersEx) -> u32 + public ResultCode GetWorkBufferSizeExEx(ServiceCtx context) + { + // NOTE: GetWorkBufferSizeEx use hardcoded values to compute the returned size. + // GetWorkBufferSizeExEx fixes that by using dynamic values. + // Since we're already doing that, it's fine to call it directly. + + return GetWorkBufferSizeEx(context); + } + + [CommandCmif(9)] // 16.0.0+ + // GetWorkBufferSizeForMultiStreamExEx(buffer, 0x19>) -> u32 + public ResultCode GetWorkBufferSizeForMultiStreamExEx(ServiceCtx context) + { + // NOTE: GetWorkBufferSizeForMultiStreamEx use hardcoded values to compute the returned size. + // GetWorkBufferSizeForMultiStreamExEx fixes that by using dynamic values. + // Since we're already doing that, it's fine to call it directly. + + return GetWorkBufferSizeForMultiStreamEx(context); + } + private static int GetOpusMultistreamDecoderSize(int streams, int coupledStreams) { if (streams < 1 || coupledStreams > streams || coupledStreams < 0)