Jelajahi Sumber

audin_u: stub Start, RegisterBufferEvent, AppendAudioInBufferAuto

This also moves IAudioIn's definition to the header.

Required for Splatoon 2 LAN play.
lat9nq 4 tahun lalu
induk
melakukan
17b0955f9a
2 mengubah file dengan 57 tambahan dan 26 penghapusan
  1. 46 26
      src/core/hle/service/audio/audin_u.cpp
  2. 11 0
      src/core/hle/service/audio/audin_u.h

+ 46 - 26
src/core/hle/service/audio/audin_u.cpp

@@ -9,32 +9,52 @@
 
 
 namespace Service::Audio {
 namespace Service::Audio {
 
 
-class IAudioIn final : public ServiceFramework<IAudioIn> {
-public:
-    explicit IAudioIn(Core::System& system_) : ServiceFramework{system_, "IAudioIn"} {
-        // clang-format off
-        static const FunctionInfo functions[] = {
-            {0, nullptr, "GetAudioInState"},
-            {1, nullptr, "Start"},
-            {2, nullptr, "Stop"},
-            {3, nullptr, "AppendAudioInBuffer"},
-            {4, nullptr, "RegisterBufferEvent"},
-            {5, nullptr, "GetReleasedAudioInBuffer"},
-            {6, nullptr, "ContainsAudioInBuffer"},
-            {7, nullptr, "AppendUacInBuffer"},
-            {8, nullptr, "AppendAudioInBufferAuto"},
-            {9, nullptr, "GetReleasedAudioInBuffersAuto"},
-            {10, nullptr, "AppendUacInBufferAuto"},
-            {11, nullptr, "GetAudioInBufferCount"},
-            {12, nullptr, "SetDeviceGain"},
-            {13, nullptr, "GetDeviceGain"},
-            {14, nullptr, "FlushAudioInBuffers"},
-        };
-        // clang-format on
-
-        RegisterHandlers(functions);
-    }
-};
+IAudioIn::IAudioIn(Core::System& system_) : ServiceFramework{system_, "IAudioIn"} {
+    // clang-format off
+    static const FunctionInfo functions[] = {
+        {0, nullptr, "GetAudioInState"},
+        {1, &IAudioIn::Start, "Start"},
+        {2, nullptr, "Stop"},
+        {3, nullptr, "AppendAudioInBuffer"},
+        {4, &IAudioIn::RegisterBufferEvent, "RegisterBufferEvent"},
+        {5, nullptr, "GetReleasedAudioInBuffer"},
+        {6, nullptr, "ContainsAudioInBuffer"},
+        {7, nullptr, "AppendUacInBuffer"},
+        {8, &IAudioIn::AppendAudioInBufferAuto, "AppendAudioInBufferAuto"},
+        {9, nullptr, "GetReleasedAudioInBuffersAuto"},
+        {10, nullptr, "AppendUacInBufferAuto"},
+        {11, nullptr, "GetAudioInBufferCount"},
+        {12, nullptr, "SetDeviceGain"},
+        {13, nullptr, "GetDeviceGain"},
+        {14, nullptr, "FlushAudioInBuffers"},
+    };
+    // clang-format on
+
+    RegisterHandlers(functions);
+}
+
+IAudioIn::~IAudioIn() = default;
+
+void IAudioIn::Start(Kernel::HLERequestContext& ctx) {
+    LOG_WARNING(Service_Audio, "(STUBBED) called");
+
+    IPC::ResponseBuilder rb{ctx, 2};
+    rb.Push(ResultSuccess);
+}
+
+void IAudioIn::RegisterBufferEvent(Kernel::HLERequestContext& ctx) {
+    LOG_WARNING(Service_Audio, "(STUBBED) called");
+
+    IPC::ResponseBuilder rb{ctx, 2};
+    rb.Push(ResultSuccess);
+}
+
+void IAudioIn::AppendAudioInBufferAuto(Kernel::HLERequestContext& ctx) {
+    LOG_WARNING(Service_Audio, "(STUBBED) called");
+
+    IPC::ResponseBuilder rb{ctx, 2};
+    rb.Push(ResultSuccess);
+}
 
 
 AudInU::AudInU(Core::System& system_) : ServiceFramework{system_, "audin:u"} {
 AudInU::AudInU(Core::System& system_) : ServiceFramework{system_, "audin:u"} {
     // clang-format off
     // clang-format off

+ 11 - 0
src/core/hle/service/audio/audin_u.h

@@ -16,6 +16,17 @@ class HLERequestContext;
 
 
 namespace Service::Audio {
 namespace Service::Audio {
 
 
+class IAudioIn final : public ServiceFramework<IAudioIn> {
+public:
+    explicit IAudioIn(Core::System& system_);
+    ~IAudioIn() override;
+
+private:
+    void Start(Kernel::HLERequestContext& ctx);
+    void RegisterBufferEvent(Kernel::HLERequestContext& ctx);
+    void AppendAudioInBufferAuto(Kernel::HLERequestContext& ctx);
+};
+
 class AudInU final : public ServiceFramework<AudInU> {
 class AudInU final : public ServiceFramework<AudInU> {
 public:
 public:
     explicit AudInU(Core::System& system_);
     explicit AudInU(Core::System& system_);