From 437c78e19840a9f4a9fdb4e491a8214019c536fe Mon Sep 17 00:00:00 2001
From: Ac_K <Acoustik666@gmail.com>
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 b69a23921c..514b51a51c 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<unknown<0x118>, 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)