Sfoglia il codice sorgente

Rework ADSP into a wrapper for apps

Kelebek1 2 anni fa
parent
commit
ebd19dec99
100 ha cambiato i file con 867 aggiunte e 1072 eliminazioni
  1. 8 7
      src/audio_core/CMakeLists.txt
  2. 18 0
      src/audio_core/adsp/adsp.cpp
  3. 50 0
      src/audio_core/adsp/adsp.h
  4. 89 99
      src/audio_core/adsp/apps/audio_renderer/audio_renderer.cpp
  5. 115 0
      src/audio_core/adsp/apps/audio_renderer/audio_renderer.h
  6. 23 0
      src/audio_core/adsp/apps/audio_renderer/command_buffer.h
  7. 13 13
      src/audio_core/adsp/apps/audio_renderer/command_list_processor.cpp
  8. 7 6
      src/audio_core/adsp/apps/audio_renderer/command_list_processor.h
  9. 69 0
      src/audio_core/adsp/mailbox.h
  10. 2 2
      src/audio_core/audio_core.cpp
  11. 3 3
      src/audio_core/audio_core.h
  12. 1 1
      src/audio_core/audio_in_manager.cpp
  13. 2 2
      src/audio_core/audio_in_manager.h
  14. 1 1
      src/audio_core/audio_out_manager.cpp
  15. 1 2
      src/audio_core/audio_out_manager.h
  16. 2 2
      src/audio_core/audio_render_manager.cpp
  17. 2 2
      src/audio_core/audio_render_manager.h
  18. 3 3
      src/audio_core/common/audio_renderer_parameter.h
  19. 0 117
      src/audio_core/renderer/adsp/adsp.cpp
  20. 0 171
      src/audio_core/renderer/adsp/adsp.h
  21. 0 204
      src/audio_core/renderer/adsp/audio_renderer.h
  22. 0 21
      src/audio_core/renderer/adsp/command_buffer.h
  23. 2 2
      src/audio_core/renderer/audio_device.cpp
  24. 2 2
      src/audio_core/renderer/audio_device.h
  25. 2 2
      src/audio_core/renderer/audio_renderer.cpp
  26. 3 3
      src/audio_core/renderer/audio_renderer.h
  27. 2 2
      src/audio_core/renderer/behavior/behavior_info.cpp
  28. 4 4
      src/audio_core/renderer/behavior/behavior_info.h
  29. 2 2
      src/audio_core/renderer/behavior/info_updater.cpp
  30. 2 2
      src/audio_core/renderer/behavior/info_updater.h
  31. 2 2
      src/audio_core/renderer/command/command_buffer.cpp
  32. 2 2
      src/audio_core/renderer/command/command_buffer.h
  33. 2 2
      src/audio_core/renderer/command/command_generator.cpp
  34. 2 2
      src/audio_core/renderer/command/command_generator.h
  35. 2 2
      src/audio_core/renderer/command/command_list_header.h
  36. 2 2
      src/audio_core/renderer/command/command_processing_time_estimator.cpp
  37. 2 2
      src/audio_core/renderer/command/command_processing_time_estimator.h
  38. 9 9
      src/audio_core/renderer/command/data_source/adpcm.cpp
  39. 12 11
      src/audio_core/renderer/command/data_source/adpcm.h
  40. 3 3
      src/audio_core/renderer/command/data_source/decode.cpp
  41. 2 2
      src/audio_core/renderer/command/data_source/decode.h
  42. 13 9
      src/audio_core/renderer/command/data_source/pcm_float.cpp
  43. 12 11
      src/audio_core/renderer/command/data_source/pcm_float.h
  44. 13 9
      src/audio_core/renderer/command/data_source/pcm_int16.cpp
  45. 12 11
      src/audio_core/renderer/command/data_source/pcm_int16.h
  46. 6 6
      src/audio_core/renderer/command/effect/aux_.cpp
  47. 7 6
      src/audio_core/renderer/command/effect/aux_.h
  48. 7 7
      src/audio_core/renderer/command/effect/biquad_filter.cpp
  49. 7 6
      src/audio_core/renderer/command/effect/biquad_filter.h
  50. 6 6
      src/audio_core/renderer/command/effect/capture.cpp
  51. 7 6
      src/audio_core/renderer/command/effect/capture.h
  52. 6 6
      src/audio_core/renderer/command/effect/compressor.cpp
  53. 7 6
      src/audio_core/renderer/command/effect/compressor.h
  54. 6 6
      src/audio_core/renderer/command/effect/delay.cpp
  55. 7 6
      src/audio_core/renderer/command/effect/delay.h
  56. 6 6
      src/audio_core/renderer/command/effect/i3dl2_reverb.cpp
  57. 7 6
      src/audio_core/renderer/command/effect/i3dl2_reverb.h
  58. 11 11
      src/audio_core/renderer/command/effect/light_limiter.cpp
  59. 10 9
      src/audio_core/renderer/command/effect/light_limiter.h
  60. 7 7
      src/audio_core/renderer/command/effect/multi_tap_biquad_filter.cpp
  61. 7 6
      src/audio_core/renderer/command/effect/multi_tap_biquad_filter.h
  62. 6 6
      src/audio_core/renderer/command/effect/reverb.cpp
  63. 7 6
      src/audio_core/renderer/command/effect/reverb.h
  64. 11 6
      src/audio_core/renderer/command/icommand.h
  65. 7 7
      src/audio_core/renderer/command/mix/clear_mix.cpp
  66. 7 6
      src/audio_core/renderer/command/mix/clear_mix.h
  67. 7 7
      src/audio_core/renderer/command/mix/copy_mix.cpp
  68. 7 6
      src/audio_core/renderer/command/mix/copy_mix.h
  69. 7 7
      src/audio_core/renderer/command/mix/depop_for_mix_buffers.cpp
  70. 7 6
      src/audio_core/renderer/command/mix/depop_for_mix_buffers.h
  71. 7 7
      src/audio_core/renderer/command/mix/depop_prepare.cpp
  72. 7 6
      src/audio_core/renderer/command/mix/depop_prepare.h
  73. 6 6
      src/audio_core/renderer/command/mix/mix.cpp
  74. 7 6
      src/audio_core/renderer/command/mix/mix.h
  75. 7 6
      src/audio_core/renderer/command/mix/mix_ramp.cpp
  76. 7 6
      src/audio_core/renderer/command/mix/mix_ramp.h
  77. 7 6
      src/audio_core/renderer/command/mix/mix_ramp_grouped.cpp
  78. 7 6
      src/audio_core/renderer/command/mix/mix_ramp_grouped.h
  79. 6 6
      src/audio_core/renderer/command/mix/volume.cpp
  80. 7 6
      src/audio_core/renderer/command/mix/volume.h
  81. 7 6
      src/audio_core/renderer/command/mix/volume_ramp.cpp
  82. 7 6
      src/audio_core/renderer/command/mix/volume_ramp.h
  83. 10 10
      src/audio_core/renderer/command/performance/performance.cpp
  84. 7 6
      src/audio_core/renderer/command/performance/performance.h
  85. 7 7
      src/audio_core/renderer/command/resample/downmix_6ch_to_2ch.cpp
  86. 7 6
      src/audio_core/renderer/command/resample/downmix_6ch_to_2ch.h
  87. 2 2
      src/audio_core/renderer/command/resample/resample.cpp
  88. 2 2
      src/audio_core/renderer/command/resample/resample.h
  89. 6 6
      src/audio_core/renderer/command/resample/upsample.cpp
  90. 7 6
      src/audio_core/renderer/command/resample/upsample.h
  91. 7 7
      src/audio_core/renderer/command/sink/circular_buffer.cpp
  92. 7 6
      src/audio_core/renderer/command/sink/circular_buffer.h
  93. 6 6
      src/audio_core/renderer/command/sink/device.cpp
  94. 7 6
      src/audio_core/renderer/command/sink/device.h
  95. 2 2
      src/audio_core/renderer/effect/aux_.cpp
  96. 2 2
      src/audio_core/renderer/effect/aux_.h
  97. 2 2
      src/audio_core/renderer/effect/biquad_filter.cpp
  98. 2 2
      src/audio_core/renderer/effect/biquad_filter.h
  99. 2 2
      src/audio_core/renderer/effect/buffer_mixer.cpp
  100. 2 2
      src/audio_core/renderer/effect/buffer_mixer.h

+ 8 - 7
src/audio_core/CMakeLists.txt

@@ -2,6 +2,14 @@
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 add_library(audio_core STATIC
+    adsp/adsp.cpp
+    adsp/adsp.h
+    adsp/mailbox.h
+    adsp/apps/audio_renderer/audio_renderer.cpp
+    adsp/apps/audio_renderer/audio_renderer.h
+    adsp/apps/audio_renderer/command_buffer.h
+    adsp/apps/audio_renderer/command_list_processor.cpp
+    adsp/apps/audio_renderer/command_list_processor.h
     audio_core.cpp
     audio_core.h
     audio_event.h
@@ -32,13 +40,6 @@ add_library(audio_core STATIC
     out/audio_out_system.cpp
     out/audio_out_system.h
     precompiled_headers.h
-    renderer/adsp/adsp.cpp
-    renderer/adsp/adsp.h
-    renderer/adsp/audio_renderer.cpp
-    renderer/adsp/audio_renderer.h
-    renderer/adsp/command_buffer.h
-    renderer/adsp/command_list_processor.cpp
-    renderer/adsp/command_list_processor.h
     renderer/audio_device.cpp
     renderer/audio_device.h
     renderer/audio_renderer.h

+ 18 - 0
src/audio_core/adsp/adsp.cpp

@@ -0,0 +1,18 @@
+// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "audio_core/adsp/adsp.h"
+#include "core/core.h"
+
+namespace AudioCore::ADSP {
+
+ADSP::ADSP(Core::System& system, Sink::Sink& sink) {
+    audio_renderer =
+        std::make_unique<AudioRenderer::AudioRenderer>(system, system.ApplicationMemory(), sink);
+}
+
+AudioRenderer::AudioRenderer& ADSP::AudioRenderer() {
+    return *audio_renderer.get();
+}
+
+} // namespace AudioCore::ADSP

+ 50 - 0
src/audio_core/adsp/adsp.h

@@ -0,0 +1,50 @@
+// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "audio_core/adsp/apps/audio_renderer/audio_renderer.h"
+#include "common/common_types.h"
+
+namespace Core {
+class System;
+} // namespace Core
+
+namespace AudioCore {
+namespace Sink {
+class Sink;
+}
+
+namespace ADSP {
+
+/**
+ * Represents the ADSP embedded within the audio sysmodule.
+ * This is a 32-bit Linux4Tegra kernel from nVidia, which is launched with the sysmodule on boot.
+ *
+ * The kernel will run the apps you write for it, Nintendo have the following:
+ *
+ * Gmix - Responsible for mixing final audio and sending it out to hardware. This is last place all
+ *        audio samples end up, and we skip it entirely, since we have very different backends and
+ *        mixing is implicitly handled by the OS (but also due to lack of research/simplicity).
+ *
+ * AudioRenderer - Receives command lists generated by the audio render
+ *                 system on the host, processes them, and sends the samples to Gmix.
+ *
+ * OpusDecoder - Contains libopus, and decodes Opus audio packets into raw pcm data.
+ *
+ * Communication between the host and ADSP is done through mailboxes, and mapping of shared memory.
+ */
+class ADSP {
+public:
+    explicit ADSP(Core::System& system, Sink::Sink& sink);
+    ~ADSP() = default;
+
+    AudioRenderer::AudioRenderer& AudioRenderer();
+
+private:
+    /// AudioRenderer app
+    std::unique_ptr<AudioRenderer::AudioRenderer> audio_renderer{};
+};
+
+} // namespace ADSP
+} // namespace AudioCore

+ 89 - 99
src/audio_core/renderer/adsp/audio_renderer.cpp → src/audio_core/adsp/apps/audio_renderer/audio_renderer.cpp

@@ -1,12 +1,12 @@
-// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
+// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
 // SPDX-License-Identifier: GPL-2.0-or-later
 
 #include <array>
 #include <chrono>
 
+#include "audio_core/adsp/apps/audio_renderer/audio_renderer.h"
 #include "audio_core/audio_core.h"
 #include "audio_core/common/common.h"
-#include "audio_core/renderer/adsp/audio_renderer.h"
 #include "audio_core/sink/sink.h"
 #include "common/logging/log.h"
 #include "common/microprofile.h"
@@ -16,108 +16,92 @@
 
 MICROPROFILE_DEFINE(Audio_Renderer, "Audio", "DSP", MP_RGB(60, 19, 97));
 
-namespace AudioCore::AudioRenderer::ADSP {
+namespace AudioCore::ADSP::AudioRenderer {
 
-void AudioRenderer_Mailbox::HostSendMessage(RenderMessage message_) {
-    adsp_messages.enqueue(message_);
-    adsp_event.Set();
-}
+AudioRenderer::AudioRenderer(Core::System& system_, Core::Memory::Memory& memory_,
+                             Sink::Sink& sink_)
+    : system{system_}, memory{memory_}, sink{sink_} {}
 
-RenderMessage AudioRenderer_Mailbox::HostWaitMessage() {
-    host_event.Wait();
-    RenderMessage msg{RenderMessage::Invalid};
-    if (!host_messages.try_dequeue(msg)) {
-        LOG_ERROR(Service_Audio, "Failed to dequeue host message!");
-    }
-    return msg;
+AudioRenderer::~AudioRenderer() {
+    Stop();
 }
 
-void AudioRenderer_Mailbox::ADSPSendMessage(const RenderMessage message_) {
-    host_messages.enqueue(message_);
-    host_event.Set();
-}
+void AudioRenderer::Start() {
+    CreateSinkStreams();
 
-RenderMessage AudioRenderer_Mailbox::ADSPWaitMessage() {
-    adsp_event.Wait();
-    RenderMessage msg{RenderMessage::Invalid};
-    if (!adsp_messages.try_dequeue(msg)) {
-        LOG_ERROR(Service_Audio, "Failed to dequeue ADSP message!");
-    }
-    return msg;
-}
+    mailbox.Initialize(AppMailboxId::AudioRenderer);
 
-CommandBuffer& AudioRenderer_Mailbox::GetCommandBuffer(const u32 session_id) {
-    return command_buffers[session_id];
-}
+    main_thread = std::jthread([this](std::stop_token stop_token) { Main(stop_token); });
 
-void AudioRenderer_Mailbox::SetCommandBuffer(const u32 session_id, const CommandBuffer& buffer) {
-    command_buffers[session_id] = buffer;
+    mailbox.Send(Direction::DSP, {Message::InitializeOK, {}});
+    if (mailbox.Receive(Direction::Host).msg != Message::InitializeOK) {
+        LOG_ERROR(Service_Audio, "Host Audio Renderer -- Failed to receive shutdown "
+                                 "message response from ADSP!");
+        return;
+    }
+    running = true;
 }
 
-u64 AudioRenderer_Mailbox::GetRenderTimeTaken() const {
-    return command_buffers[0].render_time_taken + command_buffers[1].render_time_taken;
-}
+void AudioRenderer::Stop() {
+    if (!running) {
+        return;
+    }
 
-u64 AudioRenderer_Mailbox::GetSignalledTick() const {
-    return signalled_tick;
-}
+    mailbox.Send(Direction::DSP, {Message::Shutdown, {}});
+    if (mailbox.Receive(Direction::Host).msg != Message::Shutdown) {
+        LOG_ERROR(Service_Audio, "Host Audio Renderer -- Failed to receive shutdown "
+                                 "message response from ADSP!");
+    }
+    main_thread.request_stop();
+    main_thread.join();
 
-void AudioRenderer_Mailbox::SetSignalledTick(const u64 tick) {
-    signalled_tick = tick;
+    for (auto& stream : streams) {
+        if (stream) {
+            stream->Stop();
+            sink.CloseStream(stream);
+            stream = nullptr;
+        }
+    }
+    running = false;
 }
 
-void AudioRenderer_Mailbox::ClearRemainCount(const u32 session_id) {
-    command_buffers[session_id].remaining_command_count = 0;
+void AudioRenderer::Signal() {
+    signalled_tick = system.CoreTiming().GetGlobalTimeNs().count();
+    Send(Direction::DSP, {Message::Render, {}});
 }
 
-u32 AudioRenderer_Mailbox::GetRemainCommandCount(const u32 session_id) const {
-    return command_buffers[session_id].remaining_command_count;
+void AudioRenderer::Wait() {
+    auto received = Receive(Direction::Host);
+    if (received.msg != Message::RenderResponse) {
+        LOG_ERROR(Service_Audio,
+                  "Did not receive the expected render response from the AudioRenderer! Expected "
+                  "{}, got {}",
+                  Message::RenderResponse, received.msg);
+    }
 }
 
-void AudioRenderer_Mailbox::ClearCommandBuffers() {
-    command_buffers[0].buffer = 0;
-    command_buffers[0].size = 0;
-    command_buffers[0].reset_buffers = false;
-    command_buffers[1].buffer = 0;
-    command_buffers[1].size = 0;
-    command_buffers[1].reset_buffers = false;
+void AudioRenderer::Send(Direction dir, MailboxMessage message) {
+    mailbox.Send(dir, std::move(message));
 }
 
-AudioRenderer::AudioRenderer(Core::System& system_)
-    : system{system_}, sink{system.AudioCore().GetOutputSink()} {
-    CreateSinkStreams();
+MailboxMessage AudioRenderer::Receive(Direction dir, bool block) {
+    return mailbox.Receive(dir, block);
 }
 
-AudioRenderer::~AudioRenderer() {
-    Stop();
-    for (auto& stream : streams) {
-        if (stream) {
-            sink.CloseStream(stream);
-        }
-        stream = nullptr;
-    }
+void AudioRenderer::SetCommandBuffer(s32 session_id, CommandBuffer& buffer) noexcept {
+    command_buffers[session_id] = buffer;
 }
 
-void AudioRenderer::Start(AudioRenderer_Mailbox* mailbox_) {
-    if (running) {
-        return;
-    }
-
-    mailbox = mailbox_;
-    thread = std::jthread([this](std::stop_token stop_token) { ThreadFunc(stop_token); });
-    running = true;
+u32 AudioRenderer::GetRemainCommandCount(s32 session_id) const noexcept {
+    return command_buffers[session_id].remaining_command_count;
 }
 
-void AudioRenderer::Stop() {
-    if (!running) {
-        return;
-    }
+void AudioRenderer::ClearRemainCommandCount(s32 session_id) noexcept {
+    command_buffers[session_id].remaining_command_count = 0;
+}
 
-    for (auto& stream : streams) {
-        stream->Stop();
-    }
-    thread.join();
-    running = false;
+u64 AudioRenderer::GetRenderingStartTick(s32 session_id) const noexcept {
+    return (1000 * command_buffers[session_id].render_time_taken_us) + signalled_tick;
 }
 
 void AudioRenderer::CreateSinkStreams() {
@@ -130,41 +114,45 @@ void AudioRenderer::CreateSinkStreams() {
     }
 }
 
-void AudioRenderer::ThreadFunc(std::stop_token stop_token) {
+void AudioRenderer::Main(std::stop_token stop_token) {
     static constexpr char name[]{"AudioRenderer"};
     MicroProfileOnThreadCreate(name);
     Common::SetCurrentThreadName(name);
     Common::SetCurrentThreadPriority(Common::ThreadPriority::High);
-    if (mailbox->ADSPWaitMessage() != RenderMessage::AudioRenderer_InitializeOK) {
+
+    // TODO: Create buffer map/unmap thread + mailbox
+    // TODO: Create gMix devices, initialize them here
+
+    if (mailbox.Receive(Direction::DSP).msg != Message::InitializeOK) {
         LOG_ERROR(Service_Audio,
                   "ADSP Audio Renderer -- Failed to receive initialize message from host!");
         return;
     }
 
-    mailbox->ADSPSendMessage(RenderMessage::AudioRenderer_InitializeOK);
+    mailbox.Send(Direction::Host, {Message::InitializeOK, {}});
 
-    // 0.12 seconds (2304000 / 19200000)
+    // 0.12 seconds (2,304,000 / 19,200,000)
     constexpr u64 max_process_time{2'304'000ULL};
 
     while (!stop_token.stop_requested()) {
-        auto message{mailbox->ADSPWaitMessage()};
-        switch (message) {
-        case RenderMessage::AudioRenderer_Shutdown:
-            mailbox->ADSPSendMessage(RenderMessage::AudioRenderer_Shutdown);
+        auto received{mailbox.Receive(Direction::DSP)};
+        switch (received.msg) {
+        case Message::Shutdown:
+            mailbox.Send(Direction::Host, {Message::Shutdown, {}});
             return;
 
-        case RenderMessage::AudioRenderer_Render: {
+        case Message::Render: {
             if (system.IsShuttingDown()) [[unlikely]] {
                 std::this_thread::sleep_for(std::chrono::milliseconds(5));
-                mailbox->ADSPSendMessage(RenderMessage::AudioRenderer_RenderResponse);
+                mailbox.Send(Direction::Host, {Message::RenderResponse, {}});
                 continue;
             }
             std::array<bool, MaxRendererSessions> buffers_reset{};
             std::array<u64, MaxRendererSessions> render_times_taken{};
-            const auto start_time{system.CoreTiming().GetClockTicks()};
+            const auto start_time{system.CoreTiming().GetGlobalTimeUs().count()};
 
-            for (u32 index = 0; index < 2; index++) {
-                auto& command_buffer{mailbox->GetCommandBuffer(index)};
+            for (u32 index = 0; index < MaxRendererSessions; index++) {
+                auto& command_buffer{command_buffers[index]};
                 auto& command_list_processor{command_list_processors[index]};
 
                 // Check this buffer is valid, as it may not be used.
@@ -176,14 +164,14 @@ void AudioRenderer::ThreadFunc(std::stop_token stop_token) {
                                                           command_buffer.size, streams[index]);
                     }
 
-                    if (command_buffer.reset_buffers && !buffers_reset[index]) {
+                    if (command_buffer.reset_buffer && !buffers_reset[index]) {
                         streams[index]->ClearQueue();
                         buffers_reset[index] = true;
                     }
 
                     u64 max_time{max_process_time};
                     if (index == 1 && command_buffer.applet_resource_user_id ==
-                                          mailbox->GetCommandBuffer(0).applet_resource_user_id) {
+                                          command_buffers[0].applet_resource_user_id) {
                         max_time = max_process_time - render_times_taken[0];
                         if (render_times_taken[0] > max_process_time) {
                             max_time = 0;
@@ -193,7 +181,9 @@ void AudioRenderer::ThreadFunc(std::stop_token stop_token) {
                     max_time = std::min(command_buffer.time_limit, max_time);
                     command_list_processor.SetProcessTimeMax(max_time);
 
-                    streams[index]->WaitFreeSpace(stop_token);
+                    if (index == 0) {
+                        streams[index]->WaitFreeSpace(stop_token);
+                    }
 
                     // Process the command list
                     {
@@ -202,24 +192,24 @@ void AudioRenderer::ThreadFunc(std::stop_token stop_token) {
                             command_list_processor.Process(index) - start_time;
                     }
 
-                    const auto end_time{system.CoreTiming().GetClockTicks()};
+                    const auto end_time{system.CoreTiming().GetGlobalTimeUs().count()};
 
                     command_buffer.remaining_command_count =
                         command_list_processor.GetRemainingCommandCount();
-                    command_buffer.render_time_taken = end_time - start_time;
+                    command_buffer.render_time_taken_us = end_time - start_time;
                 }
             }
 
-            mailbox->ADSPSendMessage(RenderMessage::AudioRenderer_RenderResponse);
+            mailbox.Send(Direction::Host, {Message::RenderResponse, {}});
         } break;
 
         default:
             LOG_WARNING(Service_Audio,
                         "ADSP AudioRenderer received an invalid message, msg={:02X}!",
-                        static_cast<u32>(message));
+                        received.msg);
             break;
         }
     }
 }
 
-} // namespace AudioCore::AudioRenderer::ADSP
+} // namespace AudioCore::ADSP::AudioRenderer

+ 115 - 0
src/audio_core/adsp/apps/audio_renderer/audio_renderer.h

@@ -0,0 +1,115 @@
+// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include <array>
+#include <memory>
+#include <thread>
+
+#include "audio_core/adsp/apps/audio_renderer/command_buffer.h"
+#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
+#include "audio_core/adsp/mailbox.h"
+#include "common/common_types.h"
+#include "common/polyfill_thread.h"
+#include "common/reader_writer_queue.h"
+#include "common/thread.h"
+
+namespace Core {
+class System;
+namespace Timing {
+struct EventType;
+}
+namespace Memory {
+class Memory;
+}
+class System;
+} // namespace Core
+
+namespace AudioCore {
+namespace Sink {
+class Sink;
+}
+
+namespace ADSP::AudioRenderer {
+
+enum Message : u32 {
+    Invalid = 0x00,
+    MapUnmap_Map = 0x01,
+    MapUnmap_MapResponse = 0x02,
+    MapUnmap_Unmap = 0x03,
+    MapUnmap_UnmapResponse = 0x04,
+    MapUnmap_InvalidateCache = 0x05,
+    MapUnmap_InvalidateCacheResponse = 0x06,
+    MapUnmap_Shutdown = 0x07,
+    MapUnmap_ShutdownResponse = 0x08,
+    InitializeOK = 0x16,
+    RenderResponse = 0x20,
+    Render = 0x2A,
+    Shutdown = 0x34,
+};
+
+/**
+ * The AudioRenderer application running on the ADSP.
+ */
+class AudioRenderer {
+public:
+    explicit AudioRenderer(Core::System& system, Core::Memory::Memory& memory, Sink::Sink& sink);
+    ~AudioRenderer();
+
+    /**
+     * Start the AudioRenderer.
+     *
+     * @param mailbox The mailbox to use for this session.
+     */
+    void Start();
+
+    /**
+     * Stop the AudioRenderer.
+     */
+    void Stop();
+
+    void Signal();
+    void Wait();
+
+    void Send(Direction dir, MailboxMessage message);
+    MailboxMessage Receive(Direction dir, bool block = true);
+
+    void SetCommandBuffer(s32 session_id, CommandBuffer& buffer) noexcept;
+    u32 GetRemainCommandCount(s32 session_id) const noexcept;
+    void ClearRemainCommandCount(s32 session_id) noexcept;
+    u64 GetRenderingStartTick(s32 session_id) const noexcept;
+
+private:
+    /**
+     * Main AudioRenderer thread, responsible for processing the command lists.
+     */
+    void Main(std::stop_token stop_token);
+
+    /**
+     * Creates the streams which will receive the processed samples.
+     */
+    void CreateSinkStreams();
+
+    /// Core system
+    Core::System& system;
+    /// Memory
+    Core::Memory::Memory& memory;
+    /// The output sink the AudioRenderer will use
+    Sink::Sink& sink;
+    /// The active mailbox
+    Mailbox mailbox;
+    /// Main thread
+    std::jthread main_thread{};
+    /// The current state
+    std::atomic<bool> running{};
+    std::array<CommandBuffer, MaxRendererSessions> command_buffers{};
+    /// The command lists to process
+    std::array<CommandListProcessor, MaxRendererSessions> command_list_processors{};
+    /// The streams which will receive the processed samples
+    std::array<Sink::SinkStream*, MaxRendererSessions> streams{};
+    u64 signalled_tick{0};
+};
+
+} // namespace ADSP::AudioRenderer
+} // namespace AudioCore

+ 23 - 0
src/audio_core/adsp/apps/audio_renderer/command_buffer.h

@@ -0,0 +1,23 @@
+// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "audio_core/common/common.h"
+#include "common/common_types.h"
+
+namespace AudioCore::ADSP::AudioRenderer {
+
+struct CommandBuffer {
+    // Set by the host
+    CpuAddr buffer{};
+    u64 size{};
+    u64 time_limit{};
+    u64 applet_resource_user_id{};
+    bool reset_buffer{};
+    // Set by the DSP
+    u32 remaining_command_count{};
+    u64 render_time_taken_us{};
+};
+
+} // namespace AudioCore::ADSP::AudioRenderer

+ 13 - 13
src/audio_core/renderer/adsp/command_list_processor.cpp → src/audio_core/adsp/apps/audio_renderer/command_list_processor.cpp

@@ -1,9 +1,9 @@
-// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
+// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
 // SPDX-License-Identifier: GPL-2.0-or-later
 
 #include <string>
 
-#include "audio_core/renderer/adsp/command_list_processor.h"
+#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
 #include "audio_core/renderer/command/command_list_header.h"
 #include "audio_core/renderer/command/commands.h"
 #include "common/settings.h"
@@ -11,15 +11,15 @@
 #include "core/core_timing.h"
 #include "core/memory.h"
 
-namespace AudioCore::AudioRenderer::ADSP {
+namespace AudioCore::ADSP::AudioRenderer {
 
 void CommandListProcessor::Initialize(Core::System& system_, CpuAddr buffer, u64 size,
                                       Sink::SinkStream* stream_) {
     system = &system_;
     memory = &system->ApplicationMemory();
     stream = stream_;
-    header = reinterpret_cast<CommandListHeader*>(buffer);
-    commands = reinterpret_cast<u8*>(buffer + sizeof(CommandListHeader));
+    header = reinterpret_cast<Renderer::CommandListHeader*>(buffer);
+    commands = reinterpret_cast<u8*>(buffer + sizeof(Renderer::CommandListHeader));
     commands_buffer_size = size;
     command_count = header->command_count;
     sample_count = header->sample_count;
@@ -38,7 +38,7 @@ u32 CommandListProcessor::GetRemainingCommandCount() const {
 }
 
 void CommandListProcessor::SetBuffer(const CpuAddr buffer, const u64 size) {
-    commands = reinterpret_cast<u8*>(buffer + sizeof(CommandListHeader));
+    commands = reinterpret_cast<u8*>(buffer + sizeof(Renderer::CommandListHeader));
     commands_buffer_size = size;
 }
 
@@ -47,7 +47,7 @@ Sink::SinkStream* CommandListProcessor::GetOutputSinkStream() const {
 }
 
 u64 CommandListProcessor::Process(u32 session_id) {
-    const auto start_time_{system->CoreTiming().GetClockTicks()};
+    const auto start_time_{system->CoreTiming().GetGlobalTimeUs().count()};
     const auto command_base{CpuAddr(commands)};
 
     if (processed_command_count > 0) {
@@ -60,12 +60,12 @@ u64 CommandListProcessor::Process(u32 session_id) {
     std::string dump{fmt::format("\nSession {}\n", session_id)};
 
     for (u32 index = 0; index < command_count; index++) {
-        auto& command{*reinterpret_cast<ICommand*>(commands)};
+        auto& command{*reinterpret_cast<Renderer::ICommand*>(commands)};
 
         if (command.magic != 0xCAFEBABE) {
             LOG_ERROR(Service_Audio, "Command has invalid magic! Expected 0xCAFEBABE, got {:08X}",
                       command.magic);
-            return system->CoreTiming().GetClockTicks() - start_time_;
+            return system->CoreTiming().GetGlobalTimeUs().count() - start_time_;
         }
 
         auto current_offset{CpuAddr(commands) - command_base};
@@ -74,8 +74,8 @@ u64 CommandListProcessor::Process(u32 session_id) {
             LOG_ERROR(Service_Audio,
                       "Command exceeded command buffer, buffer size {:08X}, command ends at {:08X}",
                       commands_buffer_size,
-                      CpuAddr(commands) + command.size - sizeof(CommandListHeader));
-            return system->CoreTiming().GetClockTicks() - start_time_;
+                      CpuAddr(commands) + command.size - sizeof(Renderer::CommandListHeader));
+            return system->CoreTiming().GetGlobalTimeUs().count() - start_time_;
         }
 
         if (Settings::values.dump_audio_commands) {
@@ -101,8 +101,8 @@ u64 CommandListProcessor::Process(u32 session_id) {
         last_dump = dump;
     }
 
-    end_time = system->CoreTiming().GetClockTicks();
+    end_time = system->CoreTiming().GetGlobalTimeUs().count();
     return end_time - start_time_;
 }
 
-} // namespace AudioCore::AudioRenderer::ADSP
+} // namespace AudioCore::ADSP::AudioRenderer

+ 7 - 6
src/audio_core/renderer/adsp/command_list_processor.h → src/audio_core/adsp/apps/audio_renderer/command_list_processor.h

@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
+// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
 // SPDX-License-Identifier: GPL-2.0-or-later
 
 #pragma once
@@ -6,6 +6,7 @@
 #include <span>
 
 #include "audio_core/common/common.h"
+#include "audio_core/renderer/command/command_list_header.h"
 #include "common/common_types.h"
 
 namespace Core {
@@ -20,10 +21,11 @@ namespace Sink {
 class SinkStream;
 }
 
-namespace AudioRenderer {
+namespace Renderer {
 struct CommandListHeader;
+}
 
-namespace ADSP {
+namespace ADSP::AudioRenderer {
 
 /**
  * A processor for command lists given to the AudioRenderer.
@@ -85,7 +87,7 @@ public:
     /// Stream for the processed samples
     Sink::SinkStream* stream{};
     /// Header info for this command list
-    CommandListHeader* header{};
+    Renderer::CommandListHeader* header{};
     /// The command buffer
     u8* commands{};
     /// The command buffer size
@@ -114,6 +116,5 @@ public:
     std::string last_dump{};
 };
 
-} // namespace ADSP
-} // namespace AudioRenderer
+} // namespace ADSP::AudioRenderer
 } // namespace AudioCore

+ 69 - 0
src/audio_core/adsp/mailbox.h

@@ -0,0 +1,69 @@
+// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "common/bounded_threadsafe_queue.h"
+#include "common/common_types.h"
+
+namespace AudioCore::ADSP {
+
+enum class AppMailboxId : u32 {
+    Invalid = 0,
+    AudioRenderer = 50,
+    AudioRendererMemoryMapUnmap = 51,
+};
+
+enum class Direction : u32 {
+    Host,
+    DSP,
+};
+
+struct MailboxMessage {
+    u32 msg;
+    std::span<u8> data;
+};
+
+class Mailbox {
+public:
+    void Initialize(AppMailboxId id_) {
+        Reset();
+        id = id_;
+    }
+
+    AppMailboxId Id() const noexcept {
+        return id;
+    }
+
+    void Send(Direction dir, MailboxMessage&& message) {
+        auto& queue = dir == Direction::Host ? host_queue : adsp_queue;
+        queue.EmplaceWait(std::move(message));
+    }
+
+    MailboxMessage Receive(Direction dir, bool block = true) {
+        auto& queue = dir == Direction::Host ? host_queue : adsp_queue;
+        MailboxMessage t;
+        if (block) {
+            queue.PopWait(t);
+        } else {
+            queue.TryPop(t);
+        }
+        return t;
+    }
+
+    void Reset() {
+        id = AppMailboxId::Invalid;
+        MailboxMessage t;
+        while (host_queue.TryPop(t)) {
+        }
+        while (adsp_queue.TryPop(t)) {
+        }
+    }
+
+private:
+    AppMailboxId id{0};
+    Common::SPSCQueue<MailboxMessage> host_queue;
+    Common::SPSCQueue<MailboxMessage> adsp_queue;
+};
+
+} // namespace AudioCore::ADSP

+ 2 - 2
src/audio_core/audio_core.cpp

@@ -11,7 +11,7 @@ namespace AudioCore {
 AudioCore::AudioCore(Core::System& system) : audio_manager{std::make_unique<AudioManager>()} {
     CreateSinks();
     // Must be created after the sinks
-    adsp = std::make_unique<AudioRenderer::ADSP::ADSP>(system, *output_sink);
+    adsp = std::make_unique<ADSP::ADSP>(system, *output_sink);
 }
 
 AudioCore ::~AudioCore() {
@@ -43,7 +43,7 @@ Sink::Sink& AudioCore::GetInputSink() {
     return *input_sink;
 }
 
-AudioRenderer::ADSP::ADSP& AudioCore::GetADSP() {
+ADSP::ADSP& AudioCore::ADSP() {
     return *adsp;
 }
 

+ 3 - 3
src/audio_core/audio_core.h

@@ -5,8 +5,8 @@
 
 #include <memory>
 
+#include "audio_core/adsp/adsp.h"
 #include "audio_core/audio_manager.h"
-#include "audio_core/renderer/adsp/adsp.h"
 #include "audio_core/sink/sink.h"
 
 namespace Core {
@@ -55,7 +55,7 @@ public:
      *
      * @return Ref to the ADSP.
      */
-    AudioRenderer::ADSP::ADSP& GetADSP();
+    ADSP::ADSP& ADSP();
 
 private:
     /**
@@ -70,7 +70,7 @@ private:
     /// Sink used for audio input
     std::unique_ptr<Sink::Sink> input_sink;
     /// The ADSP in the sysmodule
-    std::unique_ptr<AudioRenderer::ADSP::ADSP> adsp;
+    std::unique_ptr<ADSP::ADSP> adsp;
 };
 
 } // namespace AudioCore

+ 1 - 1
src/audio_core/audio_in_manager.cpp

@@ -73,7 +73,7 @@ void Manager::BufferReleaseAndRegister() {
     }
 }
 
-u32 Manager::GetDeviceNames(std::vector<AudioRenderer::AudioDevice::AudioDeviceName>& names,
+u32 Manager::GetDeviceNames(std::vector<Renderer::AudioDevice::AudioDeviceName>& names,
                             [[maybe_unused]] const u32 max_count,
                             [[maybe_unused]] const bool filter) {
     std::scoped_lock l{mutex};

+ 2 - 2
src/audio_core/audio_in_manager.h

@@ -65,8 +65,8 @@ public:
      *
      * @return Number of names written.
      */
-    u32 GetDeviceNames(std::vector<AudioRenderer::AudioDevice::AudioDeviceName>& names,
-                       u32 max_count, bool filter);
+    u32 GetDeviceNames(std::vector<Renderer::AudioDevice::AudioDeviceName>& names, u32 max_count,
+                       bool filter);
 
     /// Core system
     Core::System& system;

+ 1 - 1
src/audio_core/audio_out_manager.cpp

@@ -73,7 +73,7 @@ void Manager::BufferReleaseAndRegister() {
 }
 
 u32 Manager::GetAudioOutDeviceNames(
-    std::vector<AudioRenderer::AudioDevice::AudioDeviceName>& names) const {
+    std::vector<Renderer::AudioDevice::AudioDeviceName>& names) const {
     names.emplace_back("DeviceOut");
     return 1;
 }

+ 1 - 2
src/audio_core/audio_out_manager.h

@@ -61,8 +61,7 @@ public:
      * @param names     - Output container to write names to.
      * @return Number of names written.
      */
-    u32 GetAudioOutDeviceNames(
-        std::vector<AudioRenderer::AudioDevice::AudioDeviceName>& names) const;
+    u32 GetAudioOutDeviceNames(std::vector<Renderer::AudioDevice::AudioDeviceName>& names) const;
 
     /// Core system
     Core::System& system;

+ 2 - 2
src/audio_core/audio_render_manager.cpp

@@ -6,7 +6,7 @@
 #include "audio_core/common/feature_support.h"
 #include "core/core.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
 Manager::Manager(Core::System& system_)
     : system{system_}, system_manager{std::make_unique<SystemManager>(system)} {
@@ -67,4 +67,4 @@ bool Manager::RemoveSystem(System& system_) {
     return system_manager->Remove(system_);
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 2 - 2
src/audio_core/audio_render_manager.h

@@ -20,7 +20,7 @@ class System;
 namespace AudioCore {
 struct AudioRendererParameterInternal;
 
-namespace AudioRenderer {
+namespace Renderer {
 /**
  * Wrapper for the audio system manager, handles service calls.
  */
@@ -101,5 +101,5 @@ private:
     std::unique_ptr<SystemManager> system_manager{};
 };
 
-} // namespace AudioRenderer
+} // namespace Renderer
 } // namespace AudioCore

+ 3 - 3
src/audio_core/common/audio_renderer_parameter.h

@@ -51,10 +51,10 @@ struct AudioRendererSystemContext {
     s32 session_id;
     s8 channels;
     s16 mix_buffer_count;
-    AudioRenderer::BehaviorInfo* behavior;
+    Renderer::BehaviorInfo* behavior;
     std::span<s32> depop_buffer;
-    AudioRenderer::UpsamplerManager* upsampler_manager;
-    AudioRenderer::MemoryPoolInfo* memory_pool_info;
+    Renderer::UpsamplerManager* upsampler_manager;
+    Renderer::MemoryPoolInfo* memory_pool_info;
 };
 
 } // namespace AudioCore

+ 0 - 117
src/audio_core/renderer/adsp/adsp.cpp

@@ -1,117 +0,0 @@
-// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include "audio_core/renderer/adsp/adsp.h"
-#include "audio_core/renderer/adsp/command_buffer.h"
-#include "audio_core/sink/sink.h"
-#include "common/logging/log.h"
-#include "core/core.h"
-#include "core/core_timing.h"
-#include "core/memory.h"
-
-namespace AudioCore::AudioRenderer::ADSP {
-
-ADSP::ADSP(Core::System& system_, Sink::Sink& sink_)
-    : system{system_}, memory{system.ApplicationMemory()}, sink{sink_} {}
-
-ADSP::~ADSP() {
-    ClearCommandBuffers();
-}
-
-State ADSP::GetState() const {
-    if (running) {
-        return State::Started;
-    }
-    return State::Stopped;
-}
-
-AudioRenderer_Mailbox* ADSP::GetRenderMailbox() {
-    return &render_mailbox;
-}
-
-void ADSP::ClearRemainCount(const u32 session_id) {
-    render_mailbox.ClearRemainCount(session_id);
-}
-
-u64 ADSP::GetSignalledTick() const {
-    return render_mailbox.GetSignalledTick();
-}
-
-u64 ADSP::GetTimeTaken() const {
-    return render_mailbox.GetRenderTimeTaken();
-}
-
-u64 ADSP::GetRenderTimeTaken(const u32 session_id) {
-    return render_mailbox.GetCommandBuffer(session_id).render_time_taken;
-}
-
-u32 ADSP::GetRemainCommandCount(const u32 session_id) const {
-    return render_mailbox.GetRemainCommandCount(session_id);
-}
-
-void ADSP::SendCommandBuffer(const u32 session_id, const CommandBuffer& command_buffer) {
-    render_mailbox.SetCommandBuffer(session_id, command_buffer);
-}
-
-u64 ADSP::GetRenderingStartTick(const u32 session_id) {
-    return render_mailbox.GetSignalledTick() +
-           render_mailbox.GetCommandBuffer(session_id).render_time_taken;
-}
-
-bool ADSP::Start() {
-    if (running) {
-        return running;
-    }
-
-    running = true;
-    systems_active++;
-    audio_renderer = std::make_unique<AudioRenderer>(system);
-    audio_renderer->Start(&render_mailbox);
-    render_mailbox.HostSendMessage(RenderMessage::AudioRenderer_InitializeOK);
-    if (render_mailbox.HostWaitMessage() != RenderMessage::AudioRenderer_InitializeOK) {
-        LOG_ERROR(
-            Service_Audio,
-            "Host Audio Renderer -- Failed to receive initialize message response from ADSP!");
-    }
-    return running;
-}
-
-void ADSP::Stop() {
-    systems_active--;
-    if (running && systems_active == 0) {
-        {
-            std::scoped_lock l{mailbox_lock};
-            render_mailbox.HostSendMessage(RenderMessage::AudioRenderer_Shutdown);
-            if (render_mailbox.HostWaitMessage() != RenderMessage::AudioRenderer_Shutdown) {
-                LOG_ERROR(Service_Audio, "Host Audio Renderer -- Failed to receive shutdown "
-                                         "message response from ADSP!");
-            }
-        }
-        audio_renderer->Stop();
-        running = false;
-    }
-}
-
-void ADSP::Signal() {
-    const auto signalled_tick{system.CoreTiming().GetClockTicks()};
-    render_mailbox.SetSignalledTick(signalled_tick);
-    render_mailbox.HostSendMessage(RenderMessage::AudioRenderer_Render);
-}
-
-void ADSP::Wait() {
-    std::scoped_lock l{mailbox_lock};
-    auto response{render_mailbox.HostWaitMessage()};
-    if (response != RenderMessage::AudioRenderer_RenderResponse) {
-        LOG_ERROR(Service_Audio, "Invalid ADSP response message, expected 0x{:02X}, got 0x{:02X}",
-                  static_cast<u32>(RenderMessage::AudioRenderer_RenderResponse),
-                  static_cast<u32>(response));
-    }
-
-    ClearCommandBuffers();
-}
-
-void ADSP::ClearCommandBuffers() {
-    render_mailbox.ClearCommandBuffers();
-}
-
-} // namespace AudioCore::AudioRenderer::ADSP

+ 0 - 171
src/audio_core/renderer/adsp/adsp.h

@@ -1,171 +0,0 @@
-// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#include <memory>
-#include <mutex>
-
-#include "audio_core/renderer/adsp/audio_renderer.h"
-#include "common/common_types.h"
-
-namespace Core {
-namespace Memory {
-class Memory;
-}
-class System;
-} // namespace Core
-
-namespace AudioCore {
-namespace Sink {
-class Sink;
-}
-
-namespace AudioRenderer::ADSP {
-struct CommandBuffer;
-
-enum class State {
-    Started,
-    Stopped,
-};
-
-/**
- * Represents the ADSP embedded within the audio sysmodule.
- * This is a 32-bit Linux4Tegra kernel from nVidia, which is launched with the sysmodule on boot.
- *
- * The kernel will run apps you program for it, Nintendo have the following:
- *
- * Gmix - Responsible for mixing final audio and sending it out to hardware. This is last place all
- *        audio samples end up, and we skip it entirely, since we have very different backends and
- *        mixing is implicitly handled by the OS (but also due to lack of research/simplicity).
- *
- * AudioRenderer - Receives command lists generated by the audio render
- *                 system, processes them, and sends the samples to Gmix.
- *
- * OpusDecoder - Contains libopus, and controls processing Opus audio and sends it to Gmix.
- *               Not much research done here, TODO if needed.
- *
- * We only implement the AudioRenderer for now.
- *
- * Communication for the apps is done through mailboxes, and some shared memory.
- */
-class ADSP {
-public:
-    explicit ADSP(Core::System& system, Sink::Sink& sink);
-    ~ADSP();
-
-    /**
-     * Start the ADSP.
-     *
-     * @return True if started or already running, otherwise false.
-     */
-    bool Start();
-
-    /**
-     * Stop the ADSP.
-     */
-    void Stop();
-
-    /**
-     * Get the ADSP's state.
-     *
-     * @return Started or Stopped.
-     */
-    State GetState() const;
-
-    /**
-     * Get the AudioRenderer mailbox to communicate with it.
-     *
-     * @return The AudioRenderer mailbox.
-     */
-    AudioRenderer_Mailbox* GetRenderMailbox();
-
-    /**
-     * Get the tick the ADSP was signalled.
-     *
-     * @return The tick the ADSP was signalled.
-     */
-    u64 GetSignalledTick() const;
-
-    /**
-     * Get the total time it took for the ADSP to run the last command lists (both command lists).
-     *
-     * @return The tick the ADSP was signalled.
-     */
-    u64 GetTimeTaken() const;
-
-    /**
-     * Get the last time a given command list took to run.
-     *
-     * @param session_id - The session id to check (0 or 1).
-     * @return The time it took.
-     */
-    u64 GetRenderTimeTaken(u32 session_id);
-
-    /**
-     * Clear the remaining command count for a given session.
-     *
-     * @param session_id - The session id to check (0 or 1).
-     */
-    void ClearRemainCount(u32 session_id);
-
-    /**
-     * Get the remaining number of commands left to process for a command list.
-     *
-     * @param session_id - The session id to check (0 or 1).
-     * @return The number of commands remaining.
-     */
-    u32 GetRemainCommandCount(u32 session_id) const;
-
-    /**
-     * Get the last tick a command list started processing.
-     *
-     * @param session_id - The session id to check (0 or 1).
-     * @return The last tick the given command list started.
-     */
-    u64 GetRenderingStartTick(u32 session_id);
-
-    /**
-     * Set a command buffer to be processed.
-     *
-     * @param session_id     - The session id to check (0 or 1).
-     * @param command_buffer - The command buffer to process.
-     */
-    void SendCommandBuffer(u32 session_id, const CommandBuffer& command_buffer);
-
-    /**
-     * Clear the command buffers (does not clear the time taken or the remaining command count)
-     */
-    void ClearCommandBuffers();
-
-    /**
-     * Signal the AudioRenderer to begin processing.
-     */
-    void Signal();
-
-    /**
-     * Wait for the AudioRenderer to finish processing.
-     */
-    void Wait();
-
-private:
-    /// Core system
-    Core::System& system;
-    /// Core memory
-    Core::Memory::Memory& memory;
-    /// Number of systems active, used to prevent accidental shutdowns
-    u8 systems_active{0};
-    /// ADSP running state
-    std::atomic<bool> running{false};
-    /// Output sink used by the ADSP
-    Sink::Sink& sink;
-    /// AudioRenderer app
-    std::unique_ptr<AudioRenderer> audio_renderer{};
-    /// Communication for the AudioRenderer
-    AudioRenderer_Mailbox render_mailbox{};
-    /// Mailbox lock ffor the render mailbox
-    std::mutex mailbox_lock;
-};
-
-} // namespace AudioRenderer::ADSP
-} // namespace AudioCore

+ 0 - 204
src/audio_core/renderer/adsp/audio_renderer.h

@@ -1,204 +0,0 @@
-// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#include <array>
-#include <memory>
-#include <thread>
-
-#include "audio_core/renderer/adsp/command_buffer.h"
-#include "audio_core/renderer/adsp/command_list_processor.h"
-#include "common/common_types.h"
-#include "common/polyfill_thread.h"
-#include "common/reader_writer_queue.h"
-#include "common/thread.h"
-
-namespace Core {
-namespace Timing {
-struct EventType;
-}
-class System;
-} // namespace Core
-
-namespace AudioCore {
-namespace Sink {
-class Sink;
-}
-
-namespace AudioRenderer::ADSP {
-
-enum class RenderMessage {
-    /* 0x00 */ Invalid,
-    /* 0x01 */ AudioRenderer_MapUnmap_Map,
-    /* 0x02 */ AudioRenderer_MapUnmap_MapResponse,
-    /* 0x03 */ AudioRenderer_MapUnmap_Unmap,
-    /* 0x04 */ AudioRenderer_MapUnmap_UnmapResponse,
-    /* 0x05 */ AudioRenderer_MapUnmap_InvalidateCache,
-    /* 0x06 */ AudioRenderer_MapUnmap_InvalidateCacheResponse,
-    /* 0x07 */ AudioRenderer_MapUnmap_Shutdown,
-    /* 0x08 */ AudioRenderer_MapUnmap_ShutdownResponse,
-    /* 0x16 */ AudioRenderer_InitializeOK = 0x16,
-    /* 0x20 */ AudioRenderer_RenderResponse = 0x20,
-    /* 0x2A */ AudioRenderer_Render = 0x2A,
-    /* 0x34 */ AudioRenderer_Shutdown = 0x34,
-};
-
-/**
- * A mailbox for the AudioRenderer, allowing communication between the host and the AudioRenderer
- * running on the ADSP.
- */
-class AudioRenderer_Mailbox {
-public:
-    /**
-     * Send a message from the host to the AudioRenderer.
-     *
-     * @param message - The message to send to the AudioRenderer.
-     */
-    void HostSendMessage(RenderMessage message);
-
-    /**
-     * Host wait for a message from the AudioRenderer.
-     *
-     * @return The message returned from the AudioRenderer.
-     */
-    RenderMessage HostWaitMessage();
-
-    /**
-     * Send a message from the AudioRenderer to the host.
-     *
-     * @param message - The message to send to the host.
-     */
-    void ADSPSendMessage(RenderMessage message);
-
-    /**
-     * AudioRenderer wait for a message from the host.
-     *
-     * @return The message returned from the AudioRenderer.
-     */
-    RenderMessage ADSPWaitMessage();
-
-    /**
-     * Get the command buffer with the given session id (0 or 1).
-     *
-     * @param session_id - The session id to get (0 or 1).
-     * @return The command buffer.
-     */
-    CommandBuffer& GetCommandBuffer(u32 session_id);
-
-    /**
-     * Set the command buffer with the given session id (0 or 1).
-     *
-     * @param session_id - The session id to get (0 or 1).
-     * @param buffer     - The command buffer to set.
-     */
-    void SetCommandBuffer(u32 session_id, const CommandBuffer& buffer);
-
-    /**
-     * Get the total render time taken for the last command lists sent.
-     *
-     * @return Total render time taken for the last command lists.
-     */
-    u64 GetRenderTimeTaken() const;
-
-    /**
-     * Get the tick the AudioRenderer was signalled.
-     *
-     * @return The tick the AudioRenderer was signalled.
-     */
-    u64 GetSignalledTick() const;
-
-    /**
-     * Set the tick the AudioRenderer was signalled.
-     *
-     * @param tick - The tick the AudioRenderer was signalled.
-     */
-    void SetSignalledTick(u64 tick);
-
-    /**
-     * Clear the remaining command count.
-     *
-     * @param session_id - Index for which command list to clear (0 or 1).
-     */
-    void ClearRemainCount(u32 session_id);
-
-    /**
-     * Get the remaining command count for a given command list.
-     *
-     * @param session_id - Index for which command list to clear (0 or 1).
-     * @return The remaining command count.
-     */
-    u32 GetRemainCommandCount(u32 session_id) const;
-
-    /**
-     * Clear the command buffers (does not clear the time taken or the remaining command count).
-     */
-    void ClearCommandBuffers();
-
-private:
-    /// Host signalling event
-    Common::Event host_event{};
-    /// AudioRenderer signalling event
-    Common::Event adsp_event{};
-    /// Host message queue
-
-    Common::ReaderWriterQueue<RenderMessage> host_messages{};
-    /// AudioRenderer message queue
-
-    Common::ReaderWriterQueue<RenderMessage> adsp_messages{};
-    /// Command buffers
-
-    std::array<CommandBuffer, MaxRendererSessions> command_buffers{};
-    /// Tick the AudioRnederer was signalled
-    u64 signalled_tick{};
-};
-
-/**
- * The AudioRenderer application running on the ADSP.
- */
-class AudioRenderer {
-public:
-    explicit AudioRenderer(Core::System& system);
-    ~AudioRenderer();
-
-    /**
-     * Start the AudioRenderer.
-     *
-     * @param mailbox The mailbox to use for this session.
-     */
-    void Start(AudioRenderer_Mailbox* mailbox);
-
-    /**
-     * Stop the AudioRenderer.
-     */
-    void Stop();
-
-private:
-    /**
-     * Main AudioRenderer thread, responsible for processing the command lists.
-     */
-    void ThreadFunc(std::stop_token stop_token);
-
-    /**
-     * Creates the streams which will receive the processed samples.
-     */
-    void CreateSinkStreams();
-
-    /// Core system
-    Core::System& system;
-    /// Main thread
-    std::jthread thread{};
-    /// The current state
-    std::atomic<bool> running{};
-    /// The active mailbox
-    AudioRenderer_Mailbox* mailbox{};
-    /// The command lists to process
-    std::array<CommandListProcessor, MaxRendererSessions> command_list_processors{};
-    /// The output sink the AudioRenderer will use
-    Sink::Sink& sink;
-    /// The streams which will receive the processed samples
-    std::array<Sink::SinkStream*, MaxRendererSessions> streams;
-};
-
-} // namespace AudioRenderer::ADSP
-} // namespace AudioCore

+ 0 - 21
src/audio_core/renderer/adsp/command_buffer.h

@@ -1,21 +0,0 @@
-// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#include "audio_core/common/common.h"
-#include "common/common_types.h"
-
-namespace AudioCore::AudioRenderer::ADSP {
-
-struct CommandBuffer {
-    CpuAddr buffer;
-    u64 size;
-    u64 time_limit;
-    u32 remaining_command_count;
-    bool reset_buffers;
-    u64 applet_resource_user_id;
-    u64 render_time_taken;
-};
-
-} // namespace AudioCore::AudioRenderer::ADSP

+ 2 - 2
src/audio_core/renderer/audio_device.cpp

@@ -10,7 +10,7 @@
 #include "audio_core/sink/sink.h"
 #include "core/core.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
 constexpr std::array usb_device_names{
     AudioDevice::AudioDeviceName{"AudioStereoJackOutput"},
@@ -71,4 +71,4 @@ f32 AudioDevice::GetDeviceVolume([[maybe_unused]] std::string_view name) const {
     return output_sink.GetDeviceVolume();
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 2 - 2
src/audio_core/renderer/audio_device.h

@@ -16,7 +16,7 @@ namespace Sink {
 class Sink;
 }
 
-namespace AudioRenderer {
+namespace Renderer {
 /**
  * An interface to an output audio device available to the Switch.
  */
@@ -76,5 +76,5 @@ private:
     const u32 user_revision;
 };
 
-} // namespace AudioRenderer
+} // namespace Renderer
 } // namespace AudioCore

+ 2 - 2
src/audio_core/renderer/audio_renderer.cpp

@@ -9,7 +9,7 @@
 #include "core/hle/kernel/k_transfer_memory.h"
 #include "core/hle/service/audio/errors.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
 Renderer::Renderer(Core::System& system_, Manager& manager_, Kernel::KEvent* rendered_event)
     : core{system_}, manager{manager_}, system{system_, rendered_event} {}
@@ -64,4 +64,4 @@ Result Renderer::RequestUpdate(std::span<const u8> input, std::span<u8> performa
     return system.Update(input, performance, output);
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 3 - 3
src/audio_core/renderer/audio_renderer.h

@@ -19,7 +19,7 @@ class KTransferMemory;
 namespace AudioCore {
 struct AudioRendererParameterInternal;
 
-namespace AudioRenderer {
+namespace Renderer {
 class Manager;
 
 /**
@@ -31,7 +31,7 @@ public:
 
     /**
      * Initialize the renderer.
-     * Registers the system with the AudioRenderer::Manager, allocates workbuffers and initializes
+     * Registers the system with the Renderer::Manager, allocates workbuffers and initializes
      * everything to a default state.
      *
      * @param params                  - Input parameters to initialize the system with.
@@ -93,5 +93,5 @@ private:
     System system;
 };
 
-} // namespace AudioRenderer
+} // namespace Renderer
 } // namespace AudioCore

+ 2 - 2
src/audio_core/renderer/behavior/behavior_info.cpp

@@ -4,7 +4,7 @@
 #include "audio_core/common/feature_support.h"
 #include "audio_core/renderer/behavior/behavior_info.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
 BehaviorInfo::BehaviorInfo() : process_revision{CurrentRevision} {}
 
@@ -190,4 +190,4 @@ bool BehaviorInfo::IsI3dl2ReverbChannelMappingChanged() const {
     return CheckFeatureSupported(SupportTags::I3dl2ReverbChannelMappingChange, user_revision);
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 4 - 4
src/audio_core/renderer/behavior/behavior_info.h

@@ -10,7 +10,7 @@
 #include "common/common_types.h"
 #include "core/hle/service/audio/errors.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 /**
  * Holds host and user revisions, checks whether render features can be enabled, and reports errors.
  */
@@ -264,7 +264,7 @@ public:
     /**
      * Check if skipping voice pitch and sample rate conversion is supported.
      * This speeds up the data source commands by skipping resampling if unwanted.
-     * See AudioCore::AudioRenderer::DecodeFromWaveBuffers
+     * See AudioCore::Renderer::DecodeFromWaveBuffers
      *
      * @return True if supported, otherwise false.
      */
@@ -273,7 +273,7 @@ public:
     /**
      * Check if resetting played sample count at loop points is supported.
      * This resets the number of samples played in a voice state when a loop point is reached.
-     * See AudioCore::AudioRenderer::DecodeFromWaveBuffers
+     * See AudioCore::Renderer::DecodeFromWaveBuffers
      *
      * @return True if supported, otherwise false.
      */
@@ -373,4 +373,4 @@ public:
     u32 error_count{};
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 2 - 2
src/audio_core/renderer/behavior/info_updater.cpp

@@ -15,7 +15,7 @@
 #include "audio_core/renderer/splitter/splitter_context.h"
 #include "audio_core/renderer/voice/voice_context.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
 InfoUpdater::InfoUpdater(std::span<const u8> input_, std::span<u8> output_,
                          const u32 process_handle_, BehaviorInfo& behaviour_)
@@ -536,4 +536,4 @@ Result InfoUpdater::CheckConsumedSize() {
     return ResultSuccess;
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 2 - 2
src/audio_core/renderer/behavior/info_updater.h

@@ -8,7 +8,7 @@
 #include "common/common_types.h"
 #include "core/hle/service/audio/errors.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 class BehaviorInfo;
 class VoiceContext;
 class MixContext;
@@ -202,4 +202,4 @@ private:
     BehaviorInfo& behaviour;
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 2 - 2
src/audio_core/renderer/command/command_buffer.cpp

@@ -16,7 +16,7 @@
 #include "audio_core/renderer/voice/voice_info.h"
 #include "audio_core/renderer/voice/voice_state.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
 template <typename T, CommandId Id>
 T& CommandBuffer::GenerateStart(const s32 node_id) {
@@ -713,4 +713,4 @@ void CommandBuffer::GenerateCompressorCommand(s16 buffer_offset, EffectInfoBase&
     GenerateEnd<CompressorCommand>(cmd);
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 2 - 2
src/audio_core/renderer/command/command_buffer.h

@@ -10,7 +10,7 @@
 #include "audio_core/renderer/performance/performance_manager.h"
 #include "common/common_types.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 struct UpsamplerInfo;
 struct VoiceState;
 class EffectInfoBase;
@@ -465,4 +465,4 @@ private:
     void GenerateEnd(T& cmd);
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 2 - 2
src/audio_core/renderer/command/command_generator.cpp

@@ -21,7 +21,7 @@
 #include "audio_core/renderer/voice/voice_context.h"
 #include "common/alignment.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
 CommandGenerator::CommandGenerator(CommandBuffer& command_buffer_,
                                    const CommandListHeader& command_list_header_,
@@ -793,4 +793,4 @@ void CommandGenerator::GeneratePerformanceCommand(
     command_buffer.GeneratePerformanceCommand(node_id, state, entry_addresses);
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 2 - 2
src/audio_core/renderer/command/command_generator.h

@@ -12,7 +12,7 @@
 namespace AudioCore {
 struct AudioRendererSystemContext;
 
-namespace AudioRenderer {
+namespace Renderer {
 class CommandBuffer;
 struct CommandListHeader;
 class VoiceContext;
@@ -345,5 +345,5 @@ private:
     PerformanceManager* performance_manager;
 };
 
-} // namespace AudioRenderer
+} // namespace Renderer
 } // namespace AudioCore

+ 2 - 2
src/audio_core/renderer/command/command_list_header.h

@@ -8,7 +8,7 @@
 #include "audio_core/common/common.h"
 #include "common/common_types.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
 struct CommandListHeader {
     u64 buffer_size;
@@ -19,4 +19,4 @@ struct CommandListHeader {
     u32 sample_rate;
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 2 - 2
src/audio_core/renderer/command/command_processing_time_estimator.cpp

@@ -3,7 +3,7 @@
 
 #include "audio_core/renderer/command/command_processing_time_estimator.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
 u32 CommandProcessingTimeEstimatorVersion1::Estimate(
     const PcmInt16DataSourceVersion1Command& command) const {
@@ -3617,4 +3617,4 @@ u32 CommandProcessingTimeEstimatorVersion5::Estimate(const CompressorCommand& co
     }
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 2 - 2
src/audio_core/renderer/command/command_processing_time_estimator.h

@@ -6,7 +6,7 @@
 #include "audio_core/renderer/command/commands.h"
 #include "common/common_types.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 /**
  * Estimate the processing time required for all commands.
  */
@@ -251,4 +251,4 @@ private:
     u32 buffer_count{};
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 9 - 9
src/audio_core/renderer/command/data_source/adpcm.cpp

@@ -3,20 +3,20 @@
 
 #include <span>
 
-#include "audio_core/renderer/adsp/command_list_processor.h"
+#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
 #include "audio_core/renderer/command/data_source/adpcm.h"
 #include "audio_core/renderer/command/data_source/decode.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
-void AdpcmDataSourceVersion1Command::Dump(const ADSP::CommandListProcessor& processor,
+void AdpcmDataSourceVersion1Command::Dump(const AudioRenderer::CommandListProcessor& processor,
                                           std::string& string) {
     string += fmt::format("AdpcmDataSourceVersion1Command\n\toutput_index {:02X} source sample "
                           "rate {} target sample rate {} src quality {}\n",
                           output_index, sample_rate, processor.target_sample_rate, src_quality);
 }
 
-void AdpcmDataSourceVersion1Command::Process(const ADSP::CommandListProcessor& processor) {
+void AdpcmDataSourceVersion1Command::Process(const AudioRenderer::CommandListProcessor& processor) {
     auto out_buffer{processor.mix_buffers.subspan(output_index * processor.sample_count,
                                                   processor.sample_count)};
 
@@ -41,18 +41,18 @@ void AdpcmDataSourceVersion1Command::Process(const ADSP::CommandListProcessor& p
     DecodeFromWaveBuffers(*processor.memory, args);
 }
 
-bool AdpcmDataSourceVersion1Command::Verify(const ADSP::CommandListProcessor& processor) {
+bool AdpcmDataSourceVersion1Command::Verify(const AudioRenderer::CommandListProcessor& processor) {
     return true;
 }
 
-void AdpcmDataSourceVersion2Command::Dump(const ADSP::CommandListProcessor& processor,
+void AdpcmDataSourceVersion2Command::Dump(const AudioRenderer::CommandListProcessor& processor,
                                           std::string& string) {
     string += fmt::format("AdpcmDataSourceVersion2Command\n\toutput_index {:02X} source sample "
                           "rate {} target sample rate {} src quality {}\n",
                           output_index, sample_rate, processor.target_sample_rate, src_quality);
 }
 
-void AdpcmDataSourceVersion2Command::Process(const ADSP::CommandListProcessor& processor) {
+void AdpcmDataSourceVersion2Command::Process(const AudioRenderer::CommandListProcessor& processor) {
     auto out_buffer{processor.mix_buffers.subspan(output_index * processor.sample_count,
                                                   processor.sample_count)};
 
@@ -77,8 +77,8 @@ void AdpcmDataSourceVersion2Command::Process(const ADSP::CommandListProcessor& p
     DecodeFromWaveBuffers(*processor.memory, args);
 }
 
-bool AdpcmDataSourceVersion2Command::Verify(const ADSP::CommandListProcessor& processor) {
+bool AdpcmDataSourceVersion2Command::Verify(const AudioRenderer::CommandListProcessor& processor) {
     return true;
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 12 - 11
src/audio_core/renderer/command/data_source/adpcm.h

@@ -11,11 +11,12 @@
 #include "audio_core/renderer/command/icommand.h"
 #include "common/common_types.h"
 
-namespace AudioCore::AudioRenderer {
-namespace ADSP {
+namespace AudioCore::ADSP::AudioRenderer {
 class CommandListProcessor;
 }
 
+namespace AudioCore::Renderer {
+
 /**
  * AudioRenderer command to decode ADPCM-encoded version 1 wavebuffers
  * into the output_index mix buffer.
@@ -27,14 +28,14 @@ struct AdpcmDataSourceVersion1Command : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @param string    - The string to print into.
      */
-    void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
+    void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
 
     /**
      * Process this command.
      *
      * @param processor - The CommandListProcessor processing this command.
      */
-    void Process(const ADSP::CommandListProcessor& processor) override;
+    void Process(const AudioRenderer::CommandListProcessor& processor) override;
 
     /**
      * Verify this command's data is valid.
@@ -42,13 +43,13 @@ struct AdpcmDataSourceVersion1Command : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @return True if the command is valid, otherwise false.
      */
-    bool Verify(const ADSP::CommandListProcessor& processor) override;
+    bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
 
     /// Quality used for sample rate conversion
     SrcQuality src_quality;
     /// Mix buffer index for decoded samples
     s16 output_index;
-    /// Flags to control decoding (see AudioCore::AudioRenderer::VoiceInfo::Flags)
+    /// Flags to control decoding (see AudioCore::Renderer::VoiceInfo::Flags)
     u16 flags;
     /// Wavebuffer sample rate
     u32 sample_rate;
@@ -75,14 +76,14 @@ struct AdpcmDataSourceVersion2Command : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @param string    - The string to print into.
      */
-    void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
+    void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
 
     /**
      * Process this command.
      *
      * @param processor - The CommandListProcessor processing this command.
      */
-    void Process(const ADSP::CommandListProcessor& processor) override;
+    void Process(const AudioRenderer::CommandListProcessor& processor) override;
 
     /**
      * Verify this command's data is valid.
@@ -90,13 +91,13 @@ struct AdpcmDataSourceVersion2Command : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @return True if the command is valid, otherwise false.
      */
-    bool Verify(const ADSP::CommandListProcessor& processor) override;
+    bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
 
     /// Quality used for sample rate conversion
     SrcQuality src_quality;
     /// Mix buffer index for decoded samples
     s16 output_index;
-    /// Flags to control decoding (see AudioCore::AudioRenderer::VoiceInfo::Flags)
+    /// Flags to control decoding (see AudioCore::Renderer::VoiceInfo::Flags)
     u16 flags;
     /// Wavebuffer sample rate
     u32 sample_rate;
@@ -116,4 +117,4 @@ struct AdpcmDataSourceVersion2Command : ICommand {
     u64 data_size;
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 3 - 3
src/audio_core/renderer/command/data_source/decode.cpp

@@ -11,7 +11,7 @@
 #include "common/scratch_buffer.h"
 #include "core/memory.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
 constexpr u32 TempBufferSize = 0x3F00;
 constexpr std::array<u8, 3> PitchBySrcQuality = {4, 8, 4};
@@ -364,7 +364,7 @@ void DecodeFromWaveBuffers(Core::Memory::Memory& memory, const DecodeFromWaveBuf
                     wavebuffers_consumed++;
                 } else {
                     voice_state.loop_count++;
-                    if (wavebuffer.loop_count > 0 &&
+                    if (wavebuffer.loop_count >= 0 &&
                         (voice_state.loop_count > wavebuffer.loop_count || samples_decoded == 0)) {
                         voice_state.wave_buffer_valid[wavebuffer_index] = false;
                         voice_state.loop_count = 0;
@@ -423,4 +423,4 @@ void DecodeFromWaveBuffers(Core::Memory::Memory& memory, const DecodeFromWaveBuf
     voice_state.fraction = fraction;
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 2 - 2
src/audio_core/renderer/command/data_source/decode.h

@@ -15,7 +15,7 @@ namespace Core::Memory {
 class Memory;
 }
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
 struct DecodeFromWaveBuffersArgs {
     SampleFormat sample_format;
@@ -56,4 +56,4 @@ struct DecodeArg {
  */
 void DecodeFromWaveBuffers(Core::Memory::Memory& memory, const DecodeFromWaveBuffersArgs& args);
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 13 - 9
src/audio_core/renderer/command/data_source/pcm_float.cpp

@@ -1,13 +1,13 @@
 // SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
 // SPDX-License-Identifier: GPL-2.0-or-later
 
-#include "audio_core/renderer/adsp/command_list_processor.h"
+#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
 #include "audio_core/renderer/command/data_source/decode.h"
 #include "audio_core/renderer/command/data_source/pcm_float.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
-void PcmFloatDataSourceVersion1Command::Dump(const ADSP::CommandListProcessor& processor,
+void PcmFloatDataSourceVersion1Command::Dump(const AudioRenderer::CommandListProcessor& processor,
                                              std::string& string) {
     string +=
         fmt::format("PcmFloatDataSourceVersion1Command\n\toutput_index {:02X} channel {} "
@@ -16,7 +16,8 @@ void PcmFloatDataSourceVersion1Command::Dump(const ADSP::CommandListProcessor& p
                     processor.target_sample_rate, src_quality);
 }
 
-void PcmFloatDataSourceVersion1Command::Process(const ADSP::CommandListProcessor& processor) {
+void PcmFloatDataSourceVersion1Command::Process(
+    const AudioRenderer::CommandListProcessor& processor) {
     auto out_buffer = processor.mix_buffers.subspan(output_index * processor.sample_count,
                                                     processor.sample_count);
 
@@ -41,11 +42,12 @@ void PcmFloatDataSourceVersion1Command::Process(const ADSP::CommandListProcessor
     DecodeFromWaveBuffers(*processor.memory, args);
 }
 
-bool PcmFloatDataSourceVersion1Command::Verify(const ADSP::CommandListProcessor& processor) {
+bool PcmFloatDataSourceVersion1Command::Verify(
+    const AudioRenderer::CommandListProcessor& processor) {
     return true;
 }
 
-void PcmFloatDataSourceVersion2Command::Dump(const ADSP::CommandListProcessor& processor,
+void PcmFloatDataSourceVersion2Command::Dump(const AudioRenderer::CommandListProcessor& processor,
                                              std::string& string) {
     string +=
         fmt::format("PcmFloatDataSourceVersion2Command\n\toutput_index {:02X} channel {} "
@@ -54,7 +56,8 @@ void PcmFloatDataSourceVersion2Command::Dump(const ADSP::CommandListProcessor& p
                     processor.target_sample_rate, src_quality);
 }
 
-void PcmFloatDataSourceVersion2Command::Process(const ADSP::CommandListProcessor& processor) {
+void PcmFloatDataSourceVersion2Command::Process(
+    const AudioRenderer::CommandListProcessor& processor) {
     auto out_buffer = processor.mix_buffers.subspan(output_index * processor.sample_count,
                                                     processor.sample_count);
 
@@ -79,8 +82,9 @@ void PcmFloatDataSourceVersion2Command::Process(const ADSP::CommandListProcessor
     DecodeFromWaveBuffers(*processor.memory, args);
 }
 
-bool PcmFloatDataSourceVersion2Command::Verify(const ADSP::CommandListProcessor& processor) {
+bool PcmFloatDataSourceVersion2Command::Verify(
+    const AudioRenderer::CommandListProcessor& processor) {
     return true;
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 12 - 11
src/audio_core/renderer/command/data_source/pcm_float.h

@@ -9,11 +9,12 @@
 #include "audio_core/renderer/command/icommand.h"
 #include "common/common_types.h"
 
-namespace AudioCore::AudioRenderer {
-namespace ADSP {
+namespace AudioCore::ADSP::AudioRenderer {
 class CommandListProcessor;
 }
 
+namespace AudioCore::Renderer {
+
 /**
  * AudioRenderer command to decode PCM float-encoded version 1 wavebuffers
  * into the output_index mix buffer.
@@ -25,14 +26,14 @@ struct PcmFloatDataSourceVersion1Command : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @param string    - The string to print into.
      */
-    void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
+    void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
 
     /**
      * Process this command.
      *
      * @param processor - The CommandListProcessor processing this command.
      */
-    void Process(const ADSP::CommandListProcessor& processor) override;
+    void Process(const AudioRenderer::CommandListProcessor& processor) override;
 
     /**
      * Verify this command's data is valid.
@@ -40,13 +41,13 @@ struct PcmFloatDataSourceVersion1Command : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @return True if the command is valid, otherwise false.
      */
-    bool Verify(const ADSP::CommandListProcessor& processor) override;
+    bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
 
     /// Quality used for sample rate conversion
     SrcQuality src_quality;
     /// Mix buffer index for decoded samples
     s16 output_index;
-    /// Flags to control decoding (see AudioCore::AudioRenderer::VoiceInfo::Flags)
+    /// Flags to control decoding (see AudioCore::Renderer::VoiceInfo::Flags)
     u16 flags;
     /// Wavebuffer sample rate
     u32 sample_rate;
@@ -73,14 +74,14 @@ struct PcmFloatDataSourceVersion2Command : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @param string    - The string to print into.
      */
-    void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
+    void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
 
     /**
      * Process this command.
      *
      * @param processor - The CommandListProcessor processing this command.
      */
-    void Process(const ADSP::CommandListProcessor& processor) override;
+    void Process(const AudioRenderer::CommandListProcessor& processor) override;
 
     /**
      * Verify this command's data is valid.
@@ -88,13 +89,13 @@ struct PcmFloatDataSourceVersion2Command : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @return True if the command is valid, otherwise false.
      */
-    bool Verify(const ADSP::CommandListProcessor& processor) override;
+    bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
 
     /// Quality used for sample rate conversion
     SrcQuality src_quality;
     /// Mix buffer index for decoded samples
     s16 output_index;
-    /// Flags to control decoding (see AudioCore::AudioRenderer::VoiceInfo::Flags)
+    /// Flags to control decoding (see AudioCore::Renderer::VoiceInfo::Flags)
     u16 flags;
     /// Wavebuffer sample rate
     u32 sample_rate;
@@ -110,4 +111,4 @@ struct PcmFloatDataSourceVersion2Command : ICommand {
     CpuAddr voice_state;
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 13 - 9
src/audio_core/renderer/command/data_source/pcm_int16.cpp

@@ -3,13 +3,13 @@
 
 #include <span>
 
-#include "audio_core/renderer/adsp/command_list_processor.h"
+#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
 #include "audio_core/renderer/command/data_source/decode.h"
 #include "audio_core/renderer/command/data_source/pcm_int16.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
-void PcmInt16DataSourceVersion1Command::Dump(const ADSP::CommandListProcessor& processor,
+void PcmInt16DataSourceVersion1Command::Dump(const AudioRenderer::CommandListProcessor& processor,
                                              std::string& string) {
     string +=
         fmt::format("PcmInt16DataSourceVersion1Command\n\toutput_index {:02X} channel {} "
@@ -18,7 +18,8 @@ void PcmInt16DataSourceVersion1Command::Dump(const ADSP::CommandListProcessor& p
                     processor.target_sample_rate, src_quality);
 }
 
-void PcmInt16DataSourceVersion1Command::Process(const ADSP::CommandListProcessor& processor) {
+void PcmInt16DataSourceVersion1Command::Process(
+    const AudioRenderer::CommandListProcessor& processor) {
     auto out_buffer = processor.mix_buffers.subspan(output_index * processor.sample_count,
                                                     processor.sample_count);
 
@@ -43,11 +44,12 @@ void PcmInt16DataSourceVersion1Command::Process(const ADSP::CommandListProcessor
     DecodeFromWaveBuffers(*processor.memory, args);
 }
 
-bool PcmInt16DataSourceVersion1Command::Verify(const ADSP::CommandListProcessor& processor) {
+bool PcmInt16DataSourceVersion1Command::Verify(
+    const AudioRenderer::CommandListProcessor& processor) {
     return true;
 }
 
-void PcmInt16DataSourceVersion2Command::Dump(const ADSP::CommandListProcessor& processor,
+void PcmInt16DataSourceVersion2Command::Dump(const AudioRenderer::CommandListProcessor& processor,
                                              std::string& string) {
     string +=
         fmt::format("PcmInt16DataSourceVersion2Command\n\toutput_index {:02X} channel {} "
@@ -56,7 +58,8 @@ void PcmInt16DataSourceVersion2Command::Dump(const ADSP::CommandListProcessor& p
                     processor.target_sample_rate, src_quality);
 }
 
-void PcmInt16DataSourceVersion2Command::Process(const ADSP::CommandListProcessor& processor) {
+void PcmInt16DataSourceVersion2Command::Process(
+    const AudioRenderer::CommandListProcessor& processor) {
     auto out_buffer = processor.mix_buffers.subspan(output_index * processor.sample_count,
                                                     processor.sample_count);
     DecodeFromWaveBuffersArgs args{
@@ -80,8 +83,9 @@ void PcmInt16DataSourceVersion2Command::Process(const ADSP::CommandListProcessor
     DecodeFromWaveBuffers(*processor.memory, args);
 }
 
-bool PcmInt16DataSourceVersion2Command::Verify(const ADSP::CommandListProcessor& processor) {
+bool PcmInt16DataSourceVersion2Command::Verify(
+    const AudioRenderer::CommandListProcessor& processor) {
     return true;
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 12 - 11
src/audio_core/renderer/command/data_source/pcm_int16.h

@@ -9,11 +9,12 @@
 #include "audio_core/renderer/command/icommand.h"
 #include "common/common_types.h"
 
-namespace AudioCore::AudioRenderer {
-namespace ADSP {
+namespace AudioCore::ADSP::AudioRenderer {
 class CommandListProcessor;
 }
 
+namespace AudioCore::Renderer {
+
 /**
  * AudioRenderer command to decode PCM s16-encoded version 1 wavebuffers
  * into the output_index mix buffer.
@@ -25,14 +26,14 @@ struct PcmInt16DataSourceVersion1Command : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @param string    - The string to print into.
      */
-    void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
+    void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
 
     /**
      * Process this command.
      *
      * @param processor - The CommandListProcessor processing this command.
      */
-    void Process(const ADSP::CommandListProcessor& processor) override;
+    void Process(const AudioRenderer::CommandListProcessor& processor) override;
 
     /**
      * Verify this command's data is valid.
@@ -40,13 +41,13 @@ struct PcmInt16DataSourceVersion1Command : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @return True if the command is valid, otherwise false.
      */
-    bool Verify(const ADSP::CommandListProcessor& processor) override;
+    bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
 
     /// Quality used for sample rate conversion
     SrcQuality src_quality;
     /// Mix buffer index for decoded samples
     s16 output_index;
-    /// Flags to control decoding (see AudioCore::AudioRenderer::VoiceInfo::Flags)
+    /// Flags to control decoding (see AudioCore::Renderer::VoiceInfo::Flags)
     u16 flags;
     /// Wavebuffer sample rate
     u32 sample_rate;
@@ -72,26 +73,26 @@ struct PcmInt16DataSourceVersion2Command : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @param string    - The string to print into.
      */
-    void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
+    void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
 
     /**
      * Process this command.
      * @param processor - The CommandListProcessor processing this command.
      */
-    void Process(const ADSP::CommandListProcessor& processor) override;
+    void Process(const AudioRenderer::CommandListProcessor& processor) override;
 
     /**
      * Verify this command's data is valid.
      * @param processor - The CommandListProcessor processing this command.
      * @return True if the command is valid, otherwise false.
      */
-    bool Verify(const ADSP::CommandListProcessor& processor) override;
+    bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
 
     /// Quality used for sample rate conversion
     SrcQuality src_quality;
     /// Mix buffer index for decoded samples
     s16 output_index;
-    /// Flags to control decoding (see AudioCore::AudioRenderer::VoiceInfo::Flags)
+    /// Flags to control decoding (see AudioCore::Renderer::VoiceInfo::Flags)
     u16 flags;
     /// Wavebuffer sample rate
     u32 sample_rate;
@@ -107,4 +108,4 @@ struct PcmInt16DataSourceVersion2Command : ICommand {
     CpuAddr voice_state;
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 6 - 6
src/audio_core/renderer/command/effect/aux_.cpp

@@ -1,13 +1,13 @@
 // SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
 // SPDX-License-Identifier: GPL-2.0-or-later
 
-#include "audio_core/renderer/adsp/command_list_processor.h"
+#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
 #include "audio_core/renderer/command/effect/aux_.h"
 #include "audio_core/renderer/effect/aux_.h"
 #include "core/core.h"
 #include "core/memory.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 /**
  * Reset an AuxBuffer.
  *
@@ -175,13 +175,13 @@ static u32 ReadAuxBufferDsp(Core::Memory::Memory& memory, CpuAddr return_info_,
     return read_count_;
 }
 
-void AuxCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& processor,
+void AuxCommand::Dump([[maybe_unused]] const AudioRenderer::CommandListProcessor& processor,
                       std::string& string) {
     string += fmt::format("AuxCommand\n\tenabled {} input {:02X} output {:02X}\n", effect_enabled,
                           input, output);
 }
 
-void AuxCommand::Process(const ADSP::CommandListProcessor& processor) {
+void AuxCommand::Process(const AudioRenderer::CommandListProcessor& processor) {
     auto input_buffer{
         processor.mix_buffers.subspan(input * processor.sample_count, processor.sample_count)};
     auto output_buffer{
@@ -208,8 +208,8 @@ void AuxCommand::Process(const ADSP::CommandListProcessor& processor) {
     }
 }
 
-bool AuxCommand::Verify(const ADSP::CommandListProcessor& processor) {
+bool AuxCommand::Verify(const AudioRenderer::CommandListProcessor& processor) {
     return true;
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 6
src/audio_core/renderer/command/effect/aux_.h

@@ -8,11 +8,12 @@
 #include "audio_core/renderer/command/icommand.h"
 #include "common/common_types.h"
 
-namespace AudioCore::AudioRenderer {
-namespace ADSP {
+namespace AudioCore::ADSP::AudioRenderer {
 class CommandListProcessor;
 }
 
+namespace AudioCore::Renderer {
+
 /**
  * AudioRenderer command to read and write an auxiliary buffer, writing the input mix buffer to game
  * memory, and reading into the output buffer from game memory.
@@ -24,14 +25,14 @@ struct AuxCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @param string    - The string to print into.
      */
-    void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
+    void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
 
     /**
      * Process this command.
      *
      * @param processor - The CommandListProcessor processing this command.
      */
-    void Process(const ADSP::CommandListProcessor& processor) override;
+    void Process(const AudioRenderer::CommandListProcessor& processor) override;
 
     /**
      * Verify this command's data is valid.
@@ -39,7 +40,7 @@ struct AuxCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @return True if the command is valid, otherwise false.
      */
-    bool Verify(const ADSP::CommandListProcessor& processor) override;
+    bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
 
     /// Input mix buffer index
     s16 input;
@@ -63,4 +64,4 @@ struct AuxCommand : ICommand {
     bool effect_enabled;
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 7
src/audio_core/renderer/command/effect/biquad_filter.cpp

@@ -1,12 +1,12 @@
 // SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
 // SPDX-License-Identifier: GPL-2.0-or-later
 
-#include "audio_core/renderer/adsp/command_list_processor.h"
+#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
 #include "audio_core/renderer/command/effect/biquad_filter.h"
 #include "audio_core/renderer/voice/voice_state.h"
 #include "common/bit_cast.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 /**
  * Biquad filter float implementation.
  *
@@ -76,14 +76,14 @@ static void ApplyBiquadFilterInt(std::span<s32> output, std::span<const s32> inp
     }
 }
 
-void BiquadFilterCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& processor,
-                               std::string& string) {
+void BiquadFilterCommand::Dump(
+    [[maybe_unused]] const AudioRenderer::CommandListProcessor& processor, std::string& string) {
     string += fmt::format(
         "BiquadFilterCommand\n\tinput {:02X} output {:02X} needs_init {} use_float_processing {}\n",
         input, output, needs_init, use_float_processing);
 }
 
-void BiquadFilterCommand::Process(const ADSP::CommandListProcessor& processor) {
+void BiquadFilterCommand::Process(const AudioRenderer::CommandListProcessor& processor) {
     auto state_{reinterpret_cast<VoiceState::BiquadFilterState*>(state)};
     if (needs_init) {
         *state_ = {};
@@ -103,8 +103,8 @@ void BiquadFilterCommand::Process(const ADSP::CommandListProcessor& processor) {
     }
 }
 
-bool BiquadFilterCommand::Verify(const ADSP::CommandListProcessor& processor) {
+bool BiquadFilterCommand::Verify(const AudioRenderer::CommandListProcessor& processor) {
     return true;
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 6
src/audio_core/renderer/command/effect/biquad_filter.h

@@ -10,11 +10,12 @@
 #include "audio_core/renderer/voice/voice_state.h"
 #include "common/common_types.h"
 
-namespace AudioCore::AudioRenderer {
-namespace ADSP {
+namespace AudioCore::ADSP::AudioRenderer {
 class CommandListProcessor;
 }
 
+namespace AudioCore::Renderer {
+
 /**
  * AudioRenderer command for applying a biquad filter to the input mix buffer, saving the results to
  * the output mix buffer.
@@ -26,14 +27,14 @@ struct BiquadFilterCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @param string    - The string to print into.
      */
-    void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
+    void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
 
     /**
      * Process this command.
      *
      * @param processor - The CommandListProcessor processing this command.
      */
-    void Process(const ADSP::CommandListProcessor& processor) override;
+    void Process(const AudioRenderer::CommandListProcessor& processor) override;
 
     /**
      * Verify this command's data is valid.
@@ -41,7 +42,7 @@ struct BiquadFilterCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @return True if the command is valid, otherwise false.
      */
-    bool Verify(const ADSP::CommandListProcessor& processor) override;
+    bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
 
     /// Input mix buffer index
     s16 input;
@@ -71,4 +72,4 @@ void ApplyBiquadFilterFloat(std::span<s32> output, std::span<const s32> input,
                             std::array<s16, 3>& b, std::array<s16, 2>& a,
                             VoiceState::BiquadFilterState& state, const u32 sample_count);
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 6 - 6
src/audio_core/renderer/command/effect/capture.cpp

@@ -1,12 +1,12 @@
 // SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
 // SPDX-License-Identifier: GPL-2.0-or-later
 
-#include "audio_core/renderer/adsp/command_list_processor.h"
+#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
 #include "audio_core/renderer/command/effect/capture.h"
 #include "audio_core/renderer/effect/aux_.h"
 #include "core/memory.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 /**
  * Reset an AuxBuffer.
  *
@@ -118,13 +118,13 @@ static u32 WriteAuxBufferDsp(Core::Memory::Memory& memory, const CpuAddr send_in
     return write_count_;
 }
 
-void CaptureCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& processor,
+void CaptureCommand::Dump([[maybe_unused]] const AudioRenderer::CommandListProcessor& processor,
                           std::string& string) {
     string += fmt::format("CaptureCommand\n\tenabled {} input {:02X} output {:02X}", effect_enabled,
                           input, output);
 }
 
-void CaptureCommand::Process(const ADSP::CommandListProcessor& processor) {
+void CaptureCommand::Process(const AudioRenderer::CommandListProcessor& processor) {
     if (effect_enabled) {
         auto input_buffer{
             processor.mix_buffers.subspan(input * processor.sample_count, processor.sample_count)};
@@ -135,8 +135,8 @@ void CaptureCommand::Process(const ADSP::CommandListProcessor& processor) {
     }
 }
 
-bool CaptureCommand::Verify(const ADSP::CommandListProcessor& processor) {
+bool CaptureCommand::Verify(const AudioRenderer::CommandListProcessor& processor) {
     return true;
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 6
src/audio_core/renderer/command/effect/capture.h

@@ -8,11 +8,12 @@
 #include "audio_core/renderer/command/icommand.h"
 #include "common/common_types.h"
 
-namespace AudioCore::AudioRenderer {
-namespace ADSP {
+namespace AudioCore::ADSP::AudioRenderer {
 class CommandListProcessor;
 }
 
+namespace AudioCore::Renderer {
+
 /**
  * AudioRenderer command for capturing a mix buffer. That is, writing it back to a given game memory
  * address.
@@ -24,14 +25,14 @@ struct CaptureCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @param string    - The string to print into.
      */
-    void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
+    void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
 
     /**
      * Process this command.
      *
      * @param processor - The CommandListProcessor processing this command.
      */
-    void Process(const ADSP::CommandListProcessor& processor) override;
+    void Process(const AudioRenderer::CommandListProcessor& processor) override;
 
     /**
      * Verify this command's data is valid.
@@ -39,7 +40,7 @@ struct CaptureCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @return True if the command is valid, otherwise false.
      */
-    bool Verify(const ADSP::CommandListProcessor& processor) override;
+    bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
 
     /// Input mix buffer index
     s16 input;
@@ -59,4 +60,4 @@ struct CaptureCommand : ICommand {
     bool effect_enabled;
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 6 - 6
src/audio_core/renderer/command/effect/compressor.cpp

@@ -5,11 +5,11 @@
 #include <span>
 #include <vector>
 
-#include "audio_core/renderer/adsp/command_list_processor.h"
+#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
 #include "audio_core/renderer/command/effect/compressor.h"
 #include "audio_core/renderer/effect/compressor.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
 static void SetCompressorEffectParameter(const CompressorInfo::ParameterVersion2& params,
                                          CompressorInfo::State& state) {
@@ -110,7 +110,7 @@ static void ApplyCompressorEffect(const CompressorInfo::ParameterVersion2& param
     }
 }
 
-void CompressorCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& processor,
+void CompressorCommand::Dump([[maybe_unused]] const AudioRenderer::CommandListProcessor& processor,
                              std::string& string) {
     string += fmt::format("CompressorCommand\n\tenabled {} \n\tinputs: ", effect_enabled);
     for (s16 i = 0; i < parameter.channel_count; i++) {
@@ -123,7 +123,7 @@ void CompressorCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor&
     string += "\n";
 }
 
-void CompressorCommand::Process(const ADSP::CommandListProcessor& processor) {
+void CompressorCommand::Process(const AudioRenderer::CommandListProcessor& processor) {
     std::array<std::span<const s32>, MaxChannels> input_buffers{};
     std::array<std::span<s32>, MaxChannels> output_buffers{};
 
@@ -148,8 +148,8 @@ void CompressorCommand::Process(const ADSP::CommandListProcessor& processor) {
                           processor.sample_count);
 }
 
-bool CompressorCommand::Verify(const ADSP::CommandListProcessor& processor) {
+bool CompressorCommand::Verify(const AudioRenderer::CommandListProcessor& processor) {
     return true;
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 6
src/audio_core/renderer/command/effect/compressor.h

@@ -10,11 +10,12 @@
 #include "audio_core/renderer/effect/compressor.h"
 #include "common/common_types.h"
 
-namespace AudioCore::AudioRenderer {
-namespace ADSP {
+namespace AudioCore::ADSP::AudioRenderer {
 class CommandListProcessor;
 }
 
+namespace AudioCore::Renderer {
+
 /**
  * AudioRenderer command for limiting volume between a high and low threshold.
  * Version 1.
@@ -26,14 +27,14 @@ struct CompressorCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @param string    - The string to print into.
      */
-    void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
+    void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
 
     /**
      * Process this command.
      *
      * @param processor - The CommandListProcessor processing this command.
      */
-    void Process(const ADSP::CommandListProcessor& processor) override;
+    void Process(const AudioRenderer::CommandListProcessor& processor) override;
 
     /**
      * Verify this command's data is valid.
@@ -41,7 +42,7 @@ struct CompressorCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @return True if the command is valid, otherwise false.
      */
-    bool Verify(const ADSP::CommandListProcessor& processor) override;
+    bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
 
     /// Input mix buffer offsets for each channel
     std::array<s16, MaxChannels> inputs;
@@ -57,4 +58,4 @@ struct CompressorCommand : ICommand {
     bool effect_enabled;
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 6 - 6
src/audio_core/renderer/command/effect/delay.cpp

@@ -1,10 +1,10 @@
 // SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
 // SPDX-License-Identifier: GPL-2.0-or-later
 
-#include "audio_core/renderer/adsp/command_list_processor.h"
+#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
 #include "audio_core/renderer/command/effect/delay.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 /**
  * Update the DelayInfo state according to the given parameters.
  *
@@ -194,7 +194,7 @@ static void ApplyDelayEffect(const DelayInfo::ParameterVersion1& params, DelayIn
     }
 }
 
-void DelayCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& processor,
+void DelayCommand::Dump([[maybe_unused]] const AudioRenderer::CommandListProcessor& processor,
                         std::string& string) {
     string += fmt::format("DelayCommand\n\tenabled {} \n\tinputs: ", effect_enabled);
     for (u32 i = 0; i < MaxChannels; i++) {
@@ -207,7 +207,7 @@ void DelayCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& proce
     string += "\n";
 }
 
-void DelayCommand::Process(const ADSP::CommandListProcessor& processor) {
+void DelayCommand::Process(const AudioRenderer::CommandListProcessor& processor) {
     std::array<std::span<const s32>, MaxChannels> input_buffers{};
     std::array<std::span<s32>, MaxChannels> output_buffers{};
 
@@ -231,8 +231,8 @@ void DelayCommand::Process(const ADSP::CommandListProcessor& processor) {
                      processor.sample_count);
 }
 
-bool DelayCommand::Verify(const ADSP::CommandListProcessor& processor) {
+bool DelayCommand::Verify(const AudioRenderer::CommandListProcessor& processor) {
     return true;
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 6
src/audio_core/renderer/command/effect/delay.h

@@ -10,11 +10,12 @@
 #include "audio_core/renderer/effect/delay.h"
 #include "common/common_types.h"
 
-namespace AudioCore::AudioRenderer {
-namespace ADSP {
+namespace AudioCore::ADSP::AudioRenderer {
 class CommandListProcessor;
 }
 
+namespace AudioCore::Renderer {
+
 /**
  * AudioRenderer command for a delay effect. Delays inputs mix buffers according to the parameters
  * and state, outputs receives the delayed samples.
@@ -26,14 +27,14 @@ struct DelayCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @param string    - The string to print into.
      */
-    void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
+    void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
 
     /**
      * Process this command.
      *
      * @param processor - The CommandListProcessor processing this command.
      */
-    void Process(const ADSP::CommandListProcessor& processor) override;
+    void Process(const AudioRenderer::CommandListProcessor& processor) override;
 
     /**
      * Verify this command's data is valid.
@@ -41,7 +42,7 @@ struct DelayCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @return True if the command is valid, otherwise false.
      */
-    bool Verify(const ADSP::CommandListProcessor& processor) override;
+    bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
 
     /// Input mix buffer offsets for each channel
     std::array<s16, MaxChannels> inputs;
@@ -57,4 +58,4 @@ struct DelayCommand : ICommand {
     bool effect_enabled;
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 6 - 6
src/audio_core/renderer/command/effect/i3dl2_reverb.cpp

@@ -3,11 +3,11 @@
 
 #include <numbers>
 
-#include "audio_core/renderer/adsp/command_list_processor.h"
+#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
 #include "audio_core/renderer/command/effect/i3dl2_reverb.h"
 #include "common/polyfill_ranges.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
 constexpr std::array<f32, I3dl2ReverbInfo::MaxDelayLines> MinDelayLineTimes{
     5.0f,
@@ -394,7 +394,7 @@ static void ApplyI3dl2ReverbEffect(const I3dl2ReverbInfo::ParameterVersion1& par
     }
 }
 
-void I3dl2ReverbCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& processor,
+void I3dl2ReverbCommand::Dump([[maybe_unused]] const AudioRenderer::CommandListProcessor& processor,
                               std::string& string) {
     string += fmt::format("I3dl2ReverbCommand\n\tenabled {} \n\tinputs: ", effect_enabled);
     for (u32 i = 0; i < parameter.channel_count; i++) {
@@ -407,7 +407,7 @@ void I3dl2ReverbCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor&
     string += "\n";
 }
 
-void I3dl2ReverbCommand::Process(const ADSP::CommandListProcessor& processor) {
+void I3dl2ReverbCommand::Process(const AudioRenderer::CommandListProcessor& processor) {
     std::array<std::span<const s32>, MaxChannels> input_buffers{};
     std::array<std::span<s32>, MaxChannels> output_buffers{};
 
@@ -431,8 +431,8 @@ void I3dl2ReverbCommand::Process(const ADSP::CommandListProcessor& processor) {
                            processor.sample_count);
 }
 
-bool I3dl2ReverbCommand::Verify(const ADSP::CommandListProcessor& processor) {
+bool I3dl2ReverbCommand::Verify(const AudioRenderer::CommandListProcessor& processor) {
     return true;
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 6
src/audio_core/renderer/command/effect/i3dl2_reverb.h

@@ -10,11 +10,12 @@
 #include "audio_core/renderer/effect/i3dl2.h"
 #include "common/common_types.h"
 
-namespace AudioCore::AudioRenderer {
-namespace ADSP {
+namespace AudioCore::ADSP::AudioRenderer {
 class CommandListProcessor;
 }
 
+namespace AudioCore::Renderer {
+
 /**
  * AudioRenderer command for a I3DL2Reverb effect. Apply a reverb to inputs mix buffer according to
  * the I3DL2 spec, outputs receives the results.
@@ -26,14 +27,14 @@ struct I3dl2ReverbCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @param string    - The string to print into.
      */
-    void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
+    void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
 
     /**
      * Process this command.
      *
      * @param processor - The CommandListProcessor processing this command.
      */
-    void Process(const ADSP::CommandListProcessor& processor) override;
+    void Process(const AudioRenderer::CommandListProcessor& processor) override;
 
     /**
      * Verify this command's data is valid.
@@ -41,7 +42,7 @@ struct I3dl2ReverbCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @return True if the command is valid, otherwise false.
      */
-    bool Verify(const ADSP::CommandListProcessor& processor) override;
+    bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
 
     /// Input mix buffer offsets for each channel
     std::array<s16, MaxChannels> inputs;
@@ -57,4 +58,4 @@ struct I3dl2ReverbCommand : ICommand {
     bool effect_enabled;
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 11 - 11
src/audio_core/renderer/command/effect/light_limiter.cpp

@@ -1,10 +1,10 @@
 // SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
 // SPDX-License-Identifier: GPL-2.0-or-later
 
-#include "audio_core/renderer/adsp/command_list_processor.h"
+#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
 #include "audio_core/renderer/command/effect/light_limiter.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 /**
  * Update the LightLimiterInfo state according to the given parameters.
  * A no-op.
@@ -133,8 +133,8 @@ static void ApplyLightLimiterEffect(const LightLimiterInfo::ParameterVersion2& p
     }
 }
 
-void LightLimiterVersion1Command::Dump([[maybe_unused]] const ADSP::CommandListProcessor& processor,
-                                       std::string& string) {
+void LightLimiterVersion1Command::Dump(
+    [[maybe_unused]] const AudioRenderer::CommandListProcessor& processor, std::string& string) {
     string += fmt::format("LightLimiterVersion1Command\n\tinputs: ");
     for (u32 i = 0; i < MaxChannels; i++) {
         string += fmt::format("{:02X}, ", inputs[i]);
@@ -146,7 +146,7 @@ void LightLimiterVersion1Command::Dump([[maybe_unused]] const ADSP::CommandListP
     string += "\n";
 }
 
-void LightLimiterVersion1Command::Process(const ADSP::CommandListProcessor& processor) {
+void LightLimiterVersion1Command::Process(const AudioRenderer::CommandListProcessor& processor) {
     std::array<std::span<const s32>, MaxChannels> input_buffers{};
     std::array<std::span<s32>, MaxChannels> output_buffers{};
 
@@ -172,12 +172,12 @@ void LightLimiterVersion1Command::Process(const ADSP::CommandListProcessor& proc
                             processor.sample_count, statistics);
 }
 
-bool LightLimiterVersion1Command::Verify(const ADSP::CommandListProcessor& processor) {
+bool LightLimiterVersion1Command::Verify(const AudioRenderer::CommandListProcessor& processor) {
     return true;
 }
 
-void LightLimiterVersion2Command::Dump([[maybe_unused]] const ADSP::CommandListProcessor& processor,
-                                       std::string& string) {
+void LightLimiterVersion2Command::Dump(
+    [[maybe_unused]] const AudioRenderer::CommandListProcessor& processor, std::string& string) {
     string += fmt::format("LightLimiterVersion2Command\n\tinputs: \n");
     for (u32 i = 0; i < MaxChannels; i++) {
         string += fmt::format("{:02X}, ", inputs[i]);
@@ -189,7 +189,7 @@ void LightLimiterVersion2Command::Dump([[maybe_unused]] const ADSP::CommandListP
     string += "\n";
 }
 
-void LightLimiterVersion2Command::Process(const ADSP::CommandListProcessor& processor) {
+void LightLimiterVersion2Command::Process(const AudioRenderer::CommandListProcessor& processor) {
     std::array<std::span<const s32>, MaxChannels> input_buffers{};
     std::array<std::span<s32>, MaxChannels> output_buffers{};
 
@@ -215,8 +215,8 @@ void LightLimiterVersion2Command::Process(const ADSP::CommandListProcessor& proc
                             processor.sample_count, statistics);
 }
 
-bool LightLimiterVersion2Command::Verify(const ADSP::CommandListProcessor& processor) {
+bool LightLimiterVersion2Command::Verify(const AudioRenderer::CommandListProcessor& processor) {
     return true;
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 10 - 9
src/audio_core/renderer/command/effect/light_limiter.h

@@ -10,11 +10,12 @@
 #include "audio_core/renderer/effect/light_limiter.h"
 #include "common/common_types.h"
 
-namespace AudioCore::AudioRenderer {
-namespace ADSP {
+namespace AudioCore::ADSP::AudioRenderer {
 class CommandListProcessor;
 }
 
+namespace AudioCore::Renderer {
+
 /**
  * AudioRenderer command for limiting volume between a high and low threshold.
  * Version 1.
@@ -26,14 +27,14 @@ struct LightLimiterVersion1Command : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @param string    - The string to print into.
      */
-    void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
+    void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
 
     /**
      * Process this command.
      *
      * @param processor - The CommandListProcessor processing this command.
      */
-    void Process(const ADSP::CommandListProcessor& processor) override;
+    void Process(const AudioRenderer::CommandListProcessor& processor) override;
 
     /**
      * Verify this command's data is valid.
@@ -41,7 +42,7 @@ struct LightLimiterVersion1Command : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @return True if the command is valid, otherwise false.
      */
-    bool Verify(const ADSP::CommandListProcessor& processor) override;
+    bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
 
     /// Input mix buffer offsets for each channel
     std::array<s16, MaxChannels> inputs;
@@ -68,21 +69,21 @@ struct LightLimiterVersion2Command : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @param string    - The string to print into.
      */
-    void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
+    void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
 
     /**
      * Process this command.
      *
      * @param processor - The CommandListProcessor processing this command.
      */
-    void Process(const ADSP::CommandListProcessor& processor) override;
+    void Process(const AudioRenderer::CommandListProcessor& processor) override;
 
     /**
      * Verify this command's data is valid.
      *
      * @param processor - The CommandListProcessor processing this command.
      */
-    bool Verify(const ADSP::CommandListProcessor& processor) override;
+    bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
 
     /// Input mix buffer offsets for each channel
     std::array<s16, MaxChannels> inputs;
@@ -100,4 +101,4 @@ struct LightLimiterVersion2Command : ICommand {
     bool effect_enabled;
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 7
src/audio_core/renderer/command/effect/multi_tap_biquad_filter.cpp

@@ -1,20 +1,20 @@
 // SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
 // SPDX-License-Identifier: GPL-2.0-or-later
 
-#include "audio_core/renderer/adsp/command_list_processor.h"
+#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
 #include "audio_core/renderer/command/effect/biquad_filter.h"
 #include "audio_core/renderer/command/effect/multi_tap_biquad_filter.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
-void MultiTapBiquadFilterCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& processor,
-                                       std::string& string) {
+void MultiTapBiquadFilterCommand::Dump(
+    [[maybe_unused]] const AudioRenderer::CommandListProcessor& processor, std::string& string) {
     string += fmt::format(
         "MultiTapBiquadFilterCommand\n\tinput {:02X}\n\toutput {:02X}\n\tneeds_init ({}, {})\n",
         input, output, needs_init[0], needs_init[1]);
 }
 
-void MultiTapBiquadFilterCommand::Process(const ADSP::CommandListProcessor& processor) {
+void MultiTapBiquadFilterCommand::Process(const AudioRenderer::CommandListProcessor& processor) {
     if (filter_tap_count > MaxBiquadFilters) {
         LOG_ERROR(Service_Audio, "Too many filter taps! {}", filter_tap_count);
         filter_tap_count = MaxBiquadFilters;
@@ -38,8 +38,8 @@ void MultiTapBiquadFilterCommand::Process(const ADSP::CommandListProcessor& proc
     }
 }
 
-bool MultiTapBiquadFilterCommand::Verify(const ADSP::CommandListProcessor& processor) {
+bool MultiTapBiquadFilterCommand::Verify(const AudioRenderer::CommandListProcessor& processor) {
     return true;
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 6
src/audio_core/renderer/command/effect/multi_tap_biquad_filter.h

@@ -10,11 +10,12 @@
 #include "audio_core/renderer/voice/voice_info.h"
 #include "common/common_types.h"
 
-namespace AudioCore::AudioRenderer {
-namespace ADSP {
+namespace AudioCore::ADSP::AudioRenderer {
 class CommandListProcessor;
 }
 
+namespace AudioCore::Renderer {
+
 /**
  * AudioRenderer command for applying multiple biquads at once.
  */
@@ -25,14 +26,14 @@ struct MultiTapBiquadFilterCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @param string - The string to print into.
      */
-    void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
+    void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
 
     /**
      * Process this command.
      *
      * @param processor - The CommandListProcessor processing this command.
      */
-    void Process(const ADSP::CommandListProcessor& processor) override;
+    void Process(const AudioRenderer::CommandListProcessor& processor) override;
 
     /**
      * Verify this command's data is valid.
@@ -40,7 +41,7 @@ struct MultiTapBiquadFilterCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @return True if the command is valid, otherwise false.
      */
-    bool Verify(const ADSP::CommandListProcessor& processor) override;
+    bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
 
     /// Input mix buffer index
     s16 input;
@@ -56,4 +57,4 @@ struct MultiTapBiquadFilterCommand : ICommand {
     u8 filter_tap_count;
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 6 - 6
src/audio_core/renderer/command/effect/reverb.cpp

@@ -4,11 +4,11 @@
 #include <numbers>
 #include <ranges>
 
-#include "audio_core/renderer/adsp/command_list_processor.h"
+#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
 #include "audio_core/renderer/command/effect/reverb.h"
 #include "common/polyfill_ranges.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
 constexpr std::array<f32, ReverbInfo::MaxDelayLines> FdnMaxDelayLineTimes = {
     53.9532470703125f,
@@ -396,7 +396,7 @@ static void ApplyReverbEffect(const ReverbInfo::ParameterVersion2& params, Rever
     }
 }
 
-void ReverbCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& processor,
+void ReverbCommand::Dump([[maybe_unused]] const AudioRenderer::CommandListProcessor& processor,
                          std::string& string) {
     string += fmt::format(
         "ReverbCommand\n\tenabled {} long_size_pre_delay_supported {}\n\tinputs: ", effect_enabled,
@@ -411,7 +411,7 @@ void ReverbCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& proc
     string += "\n";
 }
 
-void ReverbCommand::Process(const ADSP::CommandListProcessor& processor) {
+void ReverbCommand::Process(const AudioRenderer::CommandListProcessor& processor) {
     std::array<std::span<const s32>, MaxChannels> input_buffers{};
     std::array<std::span<s32>, MaxChannels> output_buffers{};
 
@@ -435,8 +435,8 @@ void ReverbCommand::Process(const ADSP::CommandListProcessor& processor) {
                       processor.sample_count);
 }
 
-bool ReverbCommand::Verify(const ADSP::CommandListProcessor& processor) {
+bool ReverbCommand::Verify(const AudioRenderer::CommandListProcessor& processor) {
     return true;
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 6
src/audio_core/renderer/command/effect/reverb.h

@@ -10,11 +10,12 @@
 #include "audio_core/renderer/effect/reverb.h"
 #include "common/common_types.h"
 
-namespace AudioCore::AudioRenderer {
-namespace ADSP {
+namespace AudioCore::ADSP::AudioRenderer {
 class CommandListProcessor;
 }
 
+namespace AudioCore::Renderer {
+
 /**
  * AudioRenderer command for a Reverb effect. Apply a reverb to inputs mix buffer, outputs receives
  * the results.
@@ -26,14 +27,14 @@ struct ReverbCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @param string - The string to print into.
      */
-    void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
+    void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
 
     /**
      * Process this command.
      *
      * @param processor - The CommandListProcessor processing this command.
      */
-    void Process(const ADSP::CommandListProcessor& processor) override;
+    void Process(const AudioRenderer::CommandListProcessor& processor) override;
 
     /**
      * Verify this command's data is valid.
@@ -41,7 +42,7 @@ struct ReverbCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @return True if the command is valid, otherwise false.
      */
-    bool Verify(const ADSP::CommandListProcessor& processor) override;
+    bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
 
     /// Input mix buffer offsets for each channel
     std::array<s16, MaxChannels> inputs;
@@ -59,4 +60,4 @@ struct ReverbCommand : ICommand {
     bool long_size_pre_delay_supported;
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 11 - 6
src/audio_core/renderer/command/icommand.h

@@ -3,14 +3,18 @@
 
 #pragma once
 
+#include <string>
+
 #include "audio_core/common/common.h"
 #include "common/common_types.h"
 
-namespace AudioCore::AudioRenderer {
-namespace ADSP {
+namespace AudioCore::ADSP::AudioRenderer {
 class CommandListProcessor;
 }
 
+namespace AudioCore::Renderer {
+using namespace ::AudioCore::ADSP;
+
 enum class CommandId : u8 {
     /* 0x00 */ Invalid,
     /* 0x01 */ DataSourcePcmInt16Version1,
@@ -59,14 +63,15 @@ struct ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @param string    - The string to print into.
      */
-    virtual void Dump(const ADSP::CommandListProcessor& processor, std::string& string) = 0;
+    virtual void Dump(const AudioRenderer::CommandListProcessor& processor,
+                      std::string& string) = 0;
 
     /**
      * Process this command.
      *
      * @param processor - The CommandListProcessor processing this command.
      */
-    virtual void Process(const ADSP::CommandListProcessor& processor) = 0;
+    virtual void Process(const AudioRenderer::CommandListProcessor& processor) = 0;
 
     /**
      * Verify this command's data is valid.
@@ -74,7 +79,7 @@ struct ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @return True if the command is valid, otherwise false.
      */
-    virtual bool Verify(const ADSP::CommandListProcessor& processor) = 0;
+    virtual bool Verify(const AudioRenderer::CommandListProcessor& processor) = 0;
 
     /// Command magic 0xCAFEBABE
     u32 magic{};
@@ -90,4 +95,4 @@ struct ICommand {
     u32 node_id{};
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 7
src/audio_core/renderer/command/mix/clear_mix.cpp

@@ -3,22 +3,22 @@
 
 #include <string>
 
-#include "audio_core/renderer/adsp/command_list_processor.h"
+#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
 #include "audio_core/renderer/command/mix/clear_mix.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
-void ClearMixBufferCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& processor,
-                                 std::string& string) {
+void ClearMixBufferCommand::Dump(
+    [[maybe_unused]] const AudioRenderer::CommandListProcessor& processor, std::string& string) {
     string += fmt::format("ClearMixBufferCommand\n");
 }
 
-void ClearMixBufferCommand::Process(const ADSP::CommandListProcessor& processor) {
+void ClearMixBufferCommand::Process(const AudioRenderer::CommandListProcessor& processor) {
     memset(processor.mix_buffers.data(), 0, processor.mix_buffers.size_bytes());
 }
 
-bool ClearMixBufferCommand::Verify(const ADSP::CommandListProcessor& processor) {
+bool ClearMixBufferCommand::Verify(const AudioRenderer::CommandListProcessor& processor) {
     return true;
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 6
src/audio_core/renderer/command/mix/clear_mix.h

@@ -8,11 +8,12 @@
 #include "audio_core/renderer/command/icommand.h"
 #include "common/common_types.h"
 
-namespace AudioCore::AudioRenderer {
-namespace ADSP {
+namespace AudioCore::ADSP::AudioRenderer {
 class CommandListProcessor;
 }
 
+namespace AudioCore::Renderer {
+
 /**
  * AudioRenderer command for a clearing the mix buffers.
  * Used at the start of each command list.
@@ -24,14 +25,14 @@ struct ClearMixBufferCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @param string    - The string to print into.
      */
-    void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
+    void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
 
     /**
      * Process this command.
      *
      * @param processor - The CommandListProcessor processing this command.
      */
-    void Process(const ADSP::CommandListProcessor& processor) override;
+    void Process(const AudioRenderer::CommandListProcessor& processor) override;
 
     /**
      * Verify this command's data is valid.
@@ -39,7 +40,7 @@ struct ClearMixBufferCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @return True if the command is valid, otherwise false.
      */
-    bool Verify(const ADSP::CommandListProcessor& processor) override;
+    bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 7
src/audio_core/renderer/command/mix/copy_mix.cpp

@@ -1,18 +1,18 @@
 // SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
 // SPDX-License-Identifier: GPL-2.0-or-later
 
-#include "audio_core/renderer/adsp/command_list_processor.h"
+#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
 #include "audio_core/renderer/command/mix/copy_mix.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
-void CopyMixBufferCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& processor,
-                                std::string& string) {
+void CopyMixBufferCommand::Dump(
+    [[maybe_unused]] const AudioRenderer::CommandListProcessor& processor, std::string& string) {
     string += fmt::format("CopyMixBufferCommand\n\tinput {:02X} output {:02X}\n", input_index,
                           output_index);
 }
 
-void CopyMixBufferCommand::Process(const ADSP::CommandListProcessor& processor) {
+void CopyMixBufferCommand::Process(const AudioRenderer::CommandListProcessor& processor) {
     auto output{processor.mix_buffers.subspan(output_index * processor.sample_count,
                                               processor.sample_count)};
     auto input{processor.mix_buffers.subspan(input_index * processor.sample_count,
@@ -20,8 +20,8 @@ void CopyMixBufferCommand::Process(const ADSP::CommandListProcessor& processor)
     std::memcpy(output.data(), input.data(), processor.sample_count * sizeof(s32));
 }
 
-bool CopyMixBufferCommand::Verify(const ADSP::CommandListProcessor& processor) {
+bool CopyMixBufferCommand::Verify(const AudioRenderer::CommandListProcessor& processor) {
     return true;
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 6
src/audio_core/renderer/command/mix/copy_mix.h

@@ -8,11 +8,12 @@
 #include "audio_core/renderer/command/icommand.h"
 #include "common/common_types.h"
 
-namespace AudioCore::AudioRenderer {
-namespace ADSP {
+namespace AudioCore::ADSP::AudioRenderer {
 class CommandListProcessor;
 }
 
+namespace AudioCore::Renderer {
+
 /**
  * AudioRenderer command for a copying a mix buffer from input to output.
  */
@@ -23,14 +24,14 @@ struct CopyMixBufferCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @param string    - The string to print into.
      */
-    void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
+    void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
 
     /**
      * Process this command.
      *
      * @param processor - The CommandListProcessor processing this command.
      */
-    void Process(const ADSP::CommandListProcessor& processor) override;
+    void Process(const AudioRenderer::CommandListProcessor& processor) override;
 
     /**
      * Verify this command's data is valid.
@@ -38,7 +39,7 @@ struct CopyMixBufferCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @return True if the command is valid, otherwise false.
      */
-    bool Verify(const ADSP::CommandListProcessor& processor) override;
+    bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
 
     /// Input mix buffer index
     s16 input_index;
@@ -46,4 +47,4 @@ struct CopyMixBufferCommand : ICommand {
     s16 output_index;
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 7
src/audio_core/renderer/command/mix/depop_for_mix_buffers.cpp

@@ -1,11 +1,11 @@
 // SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
 // SPDX-License-Identifier: GPL-2.0-or-later
 
+#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
 #include "audio_core/common/common.h"
-#include "audio_core/renderer/adsp/command_list_processor.h"
 #include "audio_core/renderer/command/mix/depop_for_mix_buffers.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 /**
  * Apply depopping. Add the depopped sample to each incoming new sample, decaying it each time
  * according to decay.
@@ -36,13 +36,13 @@ static s32 ApplyDepopMix(std::span<s32> output, const s32 depop_sample,
     }
 }
 
-void DepopForMixBuffersCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& processor,
-                                     std::string& string) {
+void DepopForMixBuffersCommand::Dump(
+    [[maybe_unused]] const AudioRenderer::CommandListProcessor& processor, std::string& string) {
     string += fmt::format("DepopForMixBuffersCommand\n\tinput {:02X} count {} decay {}\n", input,
                           count, decay.to_float());
 }
 
-void DepopForMixBuffersCommand::Process(const ADSP::CommandListProcessor& processor) {
+void DepopForMixBuffersCommand::Process(const AudioRenderer::CommandListProcessor& processor) {
     auto end_index{std::min(processor.buffer_count, input + count)};
     std::span<s32> depop_buff{reinterpret_cast<s32*>(depop_buffer), end_index};
 
@@ -57,8 +57,8 @@ void DepopForMixBuffersCommand::Process(const ADSP::CommandListProcessor& proces
     }
 }
 
-bool DepopForMixBuffersCommand::Verify(const ADSP::CommandListProcessor& processor) {
+bool DepopForMixBuffersCommand::Verify(const AudioRenderer::CommandListProcessor& processor) {
     return true;
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 6
src/audio_core/renderer/command/mix/depop_for_mix_buffers.h

@@ -9,11 +9,12 @@
 #include "common/common_types.h"
 #include "common/fixed_point.h"
 
-namespace AudioCore::AudioRenderer {
-namespace ADSP {
+namespace AudioCore::ADSP::AudioRenderer {
 class CommandListProcessor;
 }
 
+namespace AudioCore::Renderer {
+
 /**
  * AudioRenderer command for depopping a mix buffer.
  * Adds a cumulation of previous samples to the current mix buffer with a decay.
@@ -25,14 +26,14 @@ struct DepopForMixBuffersCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @param string    - The string to print into.
      */
-    void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
+    void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
 
     /**
      * Process this command.
      *
      * @param processor - The CommandListProcessor processing this command.
      */
-    void Process(const ADSP::CommandListProcessor& processor) override;
+    void Process(const AudioRenderer::CommandListProcessor& processor) override;
 
     /**
      * Verify this command's data is valid.
@@ -40,7 +41,7 @@ struct DepopForMixBuffersCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @return True if the command is valid, otherwise false.
      */
-    bool Verify(const ADSP::CommandListProcessor& processor) override;
+    bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
 
     /// Starting input mix buffer index
     u32 input;
@@ -52,4 +53,4 @@ struct DepopForMixBuffersCommand : ICommand {
     CpuAddr depop_buffer;
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 7
src/audio_core/renderer/command/mix/depop_prepare.cpp

@@ -1,15 +1,15 @@
 // SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
 // SPDX-License-Identifier: GPL-2.0-or-later
 
-#include "audio_core/renderer/adsp/command_list_processor.h"
+#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
 #include "audio_core/renderer/command/mix/depop_prepare.h"
 #include "audio_core/renderer/voice/voice_state.h"
 #include "common/fixed_point.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
-void DepopPrepareCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& processor,
-                               std::string& string) {
+void DepopPrepareCommand::Dump(
+    [[maybe_unused]] const AudioRenderer::CommandListProcessor& processor, std::string& string) {
     string += fmt::format("DepopPrepareCommand\n\tinputs: ");
     for (u32 i = 0; i < buffer_count; i++) {
         string += fmt::format("{:02X}, ", inputs[i]);
@@ -17,7 +17,7 @@ void DepopPrepareCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor
     string += "\n";
 }
 
-void DepopPrepareCommand::Process(const ADSP::CommandListProcessor& processor) {
+void DepopPrepareCommand::Process(const AudioRenderer::CommandListProcessor& processor) {
     auto samples{reinterpret_cast<s32*>(previous_samples)};
     auto buffer{reinterpret_cast<s32*>(depop_buffer)};
 
@@ -29,8 +29,8 @@ void DepopPrepareCommand::Process(const ADSP::CommandListProcessor& processor) {
     }
 }
 
-bool DepopPrepareCommand::Verify(const ADSP::CommandListProcessor& processor) {
+bool DepopPrepareCommand::Verify(const AudioRenderer::CommandListProcessor& processor) {
     return true;
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 6
src/audio_core/renderer/command/mix/depop_prepare.h

@@ -8,11 +8,12 @@
 #include "audio_core/renderer/command/icommand.h"
 #include "common/common_types.h"
 
-namespace AudioCore::AudioRenderer {
-namespace ADSP {
+namespace AudioCore::ADSP::AudioRenderer {
 class CommandListProcessor;
 }
 
+namespace AudioCore::Renderer {
+
 /**
  * AudioRenderer command for preparing depop.
  * Adds the previusly output last samples to the depop buffer.
@@ -24,14 +25,14 @@ struct DepopPrepareCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @param string    - The string to print into.
      */
-    void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
+    void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
 
     /**
      * Process this command.
      *
      * @param processor - The CommandListProcessor processing this command.
      */
-    void Process(const ADSP::CommandListProcessor& processor) override;
+    void Process(const AudioRenderer::CommandListProcessor& processor) override;
 
     /**
      * Verify this command's data is valid.
@@ -39,7 +40,7 @@ struct DepopPrepareCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @return True if the command is valid, otherwise false.
      */
-    bool Verify(const ADSP::CommandListProcessor& processor) override;
+    bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
 
     /// Depop buffer offset for each mix buffer
     std::array<s16, MaxMixBuffers> inputs;
@@ -51,4 +52,4 @@ struct DepopPrepareCommand : ICommand {
     CpuAddr depop_buffer;
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 6 - 6
src/audio_core/renderer/command/mix/mix.cpp

@@ -5,11 +5,11 @@
 #include <limits>
 #include <span>
 
-#include "audio_core/renderer/adsp/command_list_processor.h"
+#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
 #include "audio_core/renderer/command/mix/mix.h"
 #include "common/fixed_point.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 /**
  * Mix input mix buffer into output mix buffer, with volume applied to the input.
  *
@@ -28,7 +28,7 @@ static void ApplyMix(std::span<s32> output, std::span<const s32> input, const f3
     }
 }
 
-void MixCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& processor,
+void MixCommand::Dump([[maybe_unused]] const AudioRenderer::CommandListProcessor& processor,
                       std::string& string) {
     string += fmt::format("MixCommand");
     string += fmt::format("\n\tinput {:02X}", input_index);
@@ -37,7 +37,7 @@ void MixCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& process
     string += "\n";
 }
 
-void MixCommand::Process(const ADSP::CommandListProcessor& processor) {
+void MixCommand::Process(const AudioRenderer::CommandListProcessor& processor) {
     auto output{processor.mix_buffers.subspan(output_index * processor.sample_count,
                                               processor.sample_count)};
     auto input{processor.mix_buffers.subspan(input_index * processor.sample_count,
@@ -63,8 +63,8 @@ void MixCommand::Process(const ADSP::CommandListProcessor& processor) {
     }
 }
 
-bool MixCommand::Verify(const ADSP::CommandListProcessor& processor) {
+bool MixCommand::Verify(const AudioRenderer::CommandListProcessor& processor) {
     return true;
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 6
src/audio_core/renderer/command/mix/mix.h

@@ -8,11 +8,12 @@
 #include "audio_core/renderer/command/icommand.h"
 #include "common/common_types.h"
 
-namespace AudioCore::AudioRenderer {
-namespace ADSP {
+namespace AudioCore::ADSP::AudioRenderer {
 class CommandListProcessor;
 }
 
+namespace AudioCore::Renderer {
+
 /**
  * AudioRenderer command for mixing an input mix buffer to an output mix buffer, with a volume
  * applied to the input.
@@ -24,14 +25,14 @@ struct MixCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @param string    - The string to print into.
      */
-    void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
+    void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
 
     /**
      * Process this command.
      *
      * @param processor - The CommandListProcessor processing this command.
      */
-    void Process(const ADSP::CommandListProcessor& processor) override;
+    void Process(const AudioRenderer::CommandListProcessor& processor) override;
 
     /**
      * Verify this command's data is valid.
@@ -39,7 +40,7 @@ struct MixCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @return True if the command is valid, otherwise false.
      */
-    bool Verify(const ADSP::CommandListProcessor& processor) override;
+    bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
 
     /// Fixed point precision
     u8 precision;
@@ -51,4 +52,4 @@ struct MixCommand : ICommand {
     f32 volume;
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 6
src/audio_core/renderer/command/mix/mix_ramp.cpp

@@ -1,12 +1,12 @@
 // SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
 // SPDX-License-Identifier: GPL-2.0-or-later
 
-#include "audio_core/renderer/adsp/command_list_processor.h"
+#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
 #include "audio_core/renderer/command/mix/mix_ramp.h"
 #include "common/fixed_point.h"
 #include "common/logging/log.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
 template <size_t Q>
 s32 ApplyMixRamp(std::span<s32> output, std::span<const s32> input, const f32 volume_,
@@ -33,7 +33,8 @@ s32 ApplyMixRamp(std::span<s32> output, std::span<const s32> input, const f32 vo
 template s32 ApplyMixRamp<15>(std::span<s32>, std::span<const s32>, f32, f32, u32);
 template s32 ApplyMixRamp<23>(std::span<s32>, std::span<const s32>, f32, f32, u32);
 
-void MixRampCommand::Dump(const ADSP::CommandListProcessor& processor, std::string& string) {
+void MixRampCommand::Dump(const AudioRenderer::CommandListProcessor& processor,
+                          std::string& string) {
     const auto ramp{(volume - prev_volume) / static_cast<f32>(processor.sample_count)};
     string += fmt::format("MixRampCommand");
     string += fmt::format("\n\tinput {:02X}", input_index);
@@ -44,7 +45,7 @@ void MixRampCommand::Dump(const ADSP::CommandListProcessor& processor, std::stri
     string += "\n";
 }
 
-void MixRampCommand::Process(const ADSP::CommandListProcessor& processor) {
+void MixRampCommand::Process(const AudioRenderer::CommandListProcessor& processor) {
     auto output{processor.mix_buffers.subspan(output_index * processor.sample_count,
                                               processor.sample_count)};
     auto input{processor.mix_buffers.subspan(input_index * processor.sample_count,
@@ -75,8 +76,8 @@ void MixRampCommand::Process(const ADSP::CommandListProcessor& processor) {
     }
 }
 
-bool MixRampCommand::Verify(const ADSP::CommandListProcessor& processor) {
+bool MixRampCommand::Verify(const AudioRenderer::CommandListProcessor& processor) {
     return true;
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 6
src/audio_core/renderer/command/mix/mix_ramp.h

@@ -9,11 +9,12 @@
 #include "audio_core/renderer/command/icommand.h"
 #include "common/common_types.h"
 
-namespace AudioCore::AudioRenderer {
-namespace ADSP {
+namespace AudioCore::ADSP::AudioRenderer {
 class CommandListProcessor;
 }
 
+namespace AudioCore::Renderer {
+
 /**
  * AudioRenderer command for mixing an input mix buffer to an output mix buffer, with a volume
  * applied to the input, and volume ramping to smooth out the transition.
@@ -25,14 +26,14 @@ struct MixRampCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @param string    - The string to print into.
      */
-    void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
+    void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
 
     /**
      * Process this command.
      *
      * @param processor - The CommandListProcessor processing this command.
      */
-    void Process(const ADSP::CommandListProcessor& processor) override;
+    void Process(const AudioRenderer::CommandListProcessor& processor) override;
 
     /**
      * Verify this command's data is valid.
@@ -40,7 +41,7 @@ struct MixRampCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @return True if the command is valid, otherwise false.
      */
-    bool Verify(const ADSP::CommandListProcessor& processor) override;
+    bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
 
     /// Fixed point precision
     u8 precision;
@@ -70,4 +71,4 @@ template <size_t Q>
 s32 ApplyMixRamp(std::span<s32> output, std::span<const s32> input, f32 volume_, f32 ramp_,
                  u32 sample_count);
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 6
src/audio_core/renderer/command/mix/mix_ramp_grouped.cpp

@@ -1,13 +1,14 @@
 // SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
 // SPDX-License-Identifier: GPL-2.0-or-later
 
-#include "audio_core/renderer/adsp/command_list_processor.h"
+#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
 #include "audio_core/renderer/command/mix/mix_ramp.h"
 #include "audio_core/renderer/command/mix/mix_ramp_grouped.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
-void MixRampGroupedCommand::Dump(const ADSP::CommandListProcessor& processor, std::string& string) {
+void MixRampGroupedCommand::Dump(const AudioRenderer::CommandListProcessor& processor,
+                                 std::string& string) {
     string += "MixRampGroupedCommand";
     for (u32 i = 0; i < buffer_count; i++) {
         string += fmt::format("\n\t{}", i);
@@ -21,7 +22,7 @@ void MixRampGroupedCommand::Dump(const ADSP::CommandListProcessor& processor, st
     }
 }
 
-void MixRampGroupedCommand::Process(const ADSP::CommandListProcessor& processor) {
+void MixRampGroupedCommand::Process(const AudioRenderer::CommandListProcessor& processor) {
     std::span<s32> prev_samples = {reinterpret_cast<s32*>(previous_samples), MaxMixBuffers};
 
     for (u32 i = 0; i < buffer_count; i++) {
@@ -58,8 +59,8 @@ void MixRampGroupedCommand::Process(const ADSP::CommandListProcessor& processor)
     }
 }
 
-bool MixRampGroupedCommand::Verify(const ADSP::CommandListProcessor& processor) {
+bool MixRampGroupedCommand::Verify(const AudioRenderer::CommandListProcessor& processor) {
     return true;
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 6
src/audio_core/renderer/command/mix/mix_ramp_grouped.h

@@ -9,11 +9,12 @@
 #include "audio_core/renderer/command/icommand.h"
 #include "common/common_types.h"
 
-namespace AudioCore::AudioRenderer {
-namespace ADSP {
+namespace AudioCore::ADSP::AudioRenderer {
 class CommandListProcessor;
 }
 
+namespace AudioCore::Renderer {
+
 /**
  * AudioRenderer command for mixing multiple input mix buffers to multiple output mix buffers, with
  * a volume applied to the input, and volume ramping to smooth out the transition.
@@ -25,14 +26,14 @@ struct MixRampGroupedCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @param string    - The string to print into.
      */
-    void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
+    void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
 
     /**
      * Process this command.
      *
      * @param processor - The CommandListProcessor processing this command.
      */
-    void Process(const ADSP::CommandListProcessor& processor) override;
+    void Process(const AudioRenderer::CommandListProcessor& processor) override;
 
     /**
      * Verify this command's data is valid.
@@ -40,7 +41,7 @@ struct MixRampGroupedCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @return True if the command is valid, otherwise false.
      */
-    bool Verify(const ADSP::CommandListProcessor& processor) override;
+    bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
 
     /// Fixed point precision
     u8 precision;
@@ -58,4 +59,4 @@ struct MixRampGroupedCommand : ICommand {
     CpuAddr previous_samples;
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 6 - 6
src/audio_core/renderer/command/mix/volume.cpp

@@ -1,12 +1,12 @@
 // SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
 // SPDX-License-Identifier: GPL-2.0-or-later
 
-#include "audio_core/renderer/adsp/command_list_processor.h"
+#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
 #include "audio_core/renderer/command/mix/volume.h"
 #include "common/fixed_point.h"
 #include "common/logging/log.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 /**
  * Apply volume to the input mix buffer, saving to the output buffer.
  *
@@ -29,7 +29,7 @@ static void ApplyUniformGain(std::span<s32> output, std::span<const s32> input,
     }
 }
 
-void VolumeCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& processor,
+void VolumeCommand::Dump([[maybe_unused]] const AudioRenderer::CommandListProcessor& processor,
                          std::string& string) {
     string += fmt::format("VolumeCommand");
     string += fmt::format("\n\tinput {:02X}", input_index);
@@ -38,7 +38,7 @@ void VolumeCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& proc
     string += "\n";
 }
 
-void VolumeCommand::Process(const ADSP::CommandListProcessor& processor) {
+void VolumeCommand::Process(const AudioRenderer::CommandListProcessor& processor) {
     // If input and output buffers are the same, and the volume is 1.0f, this won't do
     // anything, so just skip.
     if (input_index == output_index && volume == 1.0f) {
@@ -65,8 +65,8 @@ void VolumeCommand::Process(const ADSP::CommandListProcessor& processor) {
     }
 }
 
-bool VolumeCommand::Verify(const ADSP::CommandListProcessor& processor) {
+bool VolumeCommand::Verify(const AudioRenderer::CommandListProcessor& processor) {
     return true;
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 6
src/audio_core/renderer/command/mix/volume.h

@@ -8,11 +8,12 @@
 #include "audio_core/renderer/command/icommand.h"
 #include "common/common_types.h"
 
-namespace AudioCore::AudioRenderer {
-namespace ADSP {
+namespace AudioCore::ADSP::AudioRenderer {
 class CommandListProcessor;
 }
 
+namespace AudioCore::Renderer {
+
 /**
  * AudioRenderer command for applying volume to a mix buffer.
  */
@@ -23,14 +24,14 @@ struct VolumeCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @param string    - The string to print into.
      */
-    void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
+    void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
 
     /**
      * Process this command.
      *
      * @param processor - The CommandListProcessor processing this command.
      */
-    void Process(const ADSP::CommandListProcessor& processor) override;
+    void Process(const AudioRenderer::CommandListProcessor& processor) override;
 
     /**
      * Verify this command's data is valid.
@@ -38,7 +39,7 @@ struct VolumeCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @return True if the command is valid, otherwise false.
      */
-    bool Verify(const ADSP::CommandListProcessor& processor) override;
+    bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
 
     /// Fixed point precision
     u8 precision;
@@ -50,4 +51,4 @@ struct VolumeCommand : ICommand {
     f32 volume;
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 6
src/audio_core/renderer/command/mix/volume_ramp.cpp

@@ -1,11 +1,11 @@
 // SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
 // SPDX-License-Identifier: GPL-2.0-or-later
 
-#include "audio_core/renderer/adsp/command_list_processor.h"
+#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
 #include "audio_core/renderer/command/mix/volume_ramp.h"
 #include "common/fixed_point.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 /**
  * Apply volume with ramping to the input mix buffer, saving to the output buffer.
  *
@@ -38,7 +38,8 @@ static void ApplyLinearEnvelopeGain(std::span<s32> output, std::span<const s32>
     }
 }
 
-void VolumeRampCommand::Dump(const ADSP::CommandListProcessor& processor, std::string& string) {
+void VolumeRampCommand::Dump(const AudioRenderer::CommandListProcessor& processor,
+                             std::string& string) {
     const auto ramp{(volume - prev_volume) / static_cast<f32>(processor.sample_count)};
     string += fmt::format("VolumeRampCommand");
     string += fmt::format("\n\tinput {:02X}", input_index);
@@ -49,7 +50,7 @@ void VolumeRampCommand::Dump(const ADSP::CommandListProcessor& processor, std::s
     string += "\n";
 }
 
-void VolumeRampCommand::Process(const ADSP::CommandListProcessor& processor) {
+void VolumeRampCommand::Process(const AudioRenderer::CommandListProcessor& processor) {
     auto output{processor.mix_buffers.subspan(output_index * processor.sample_count,
                                               processor.sample_count)};
     auto input{processor.mix_buffers.subspan(input_index * processor.sample_count,
@@ -77,8 +78,8 @@ void VolumeRampCommand::Process(const ADSP::CommandListProcessor& processor) {
     }
 }
 
-bool VolumeRampCommand::Verify(const ADSP::CommandListProcessor& processor) {
+bool VolumeRampCommand::Verify(const AudioRenderer::CommandListProcessor& processor) {
     return true;
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 6
src/audio_core/renderer/command/mix/volume_ramp.h

@@ -8,11 +8,12 @@
 #include "audio_core/renderer/command/icommand.h"
 #include "common/common_types.h"
 
-namespace AudioCore::AudioRenderer {
-namespace ADSP {
+namespace AudioCore::ADSP::AudioRenderer {
 class CommandListProcessor;
 }
 
+namespace AudioCore::Renderer {
+
 /**
  * AudioRenderer command for applying volume to a mix buffer, with ramping for the volume to smooth
  * out the transition.
@@ -24,14 +25,14 @@ struct VolumeRampCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @param string    - The string to print into.
      */
-    void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
+    void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
 
     /**
      * Process this command.
      *
      * @param processor - The CommandListProcessor processing this command.
      */
-    void Process(const ADSP::CommandListProcessor& processor) override;
+    void Process(const AudioRenderer::CommandListProcessor& processor) override;
 
     /**
      * Verify this command's data is valid.
@@ -39,7 +40,7 @@ struct VolumeRampCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @return True if the command is valid, otherwise false.
      */
-    bool Verify(const ADSP::CommandListProcessor& processor) override;
+    bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
 
     /// Fixed point precision
     u8 precision;
@@ -53,4 +54,4 @@ struct VolumeRampCommand : ICommand {
     f32 volume;
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 10 - 10
src/audio_core/renderer/command/performance/performance.cpp

@@ -1,25 +1,25 @@
 // SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
 // SPDX-License-Identifier: GPL-2.0-or-later
 
-#include "audio_core/renderer/adsp/command_list_processor.h"
+#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
 #include "audio_core/renderer/command/performance/performance.h"
 #include "core/core.h"
 #include "core/core_timing.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
-void PerformanceCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& processor,
+void PerformanceCommand::Dump([[maybe_unused]] const AudioRenderer::CommandListProcessor& processor,
                               std::string& string) {
     string += fmt::format("PerformanceCommand\n\tstate {}\n", static_cast<u32>(state));
 }
 
-void PerformanceCommand::Process(const ADSP::CommandListProcessor& processor) {
+void PerformanceCommand::Process(const AudioRenderer::CommandListProcessor& processor) {
     auto base{entry_address.translated_address};
     if (state == PerformanceState::Start) {
         auto start_time_ptr{reinterpret_cast<u32*>(base + entry_address.entry_start_time_offset)};
         *start_time_ptr =
-            static_cast<u32>(processor.system->CoreTiming().GetClockTicks() - processor.start_time -
-                             processor.current_processing_time);
+            static_cast<u32>(processor.system->CoreTiming().GetGlobalTimeUs().count() -
+                             processor.start_time - processor.current_processing_time);
     } else if (state == PerformanceState::Stop) {
         auto processed_time_ptr{
             reinterpret_cast<u32*>(base + entry_address.entry_processed_time_offset)};
@@ -27,14 +27,14 @@ void PerformanceCommand::Process(const ADSP::CommandListProcessor& processor) {
             reinterpret_cast<u32*>(base + entry_address.header_entry_count_offset)};
 
         *processed_time_ptr =
-            static_cast<u32>(processor.system->CoreTiming().GetClockTicks() - processor.start_time -
-                             processor.current_processing_time);
+            static_cast<u32>(processor.system->CoreTiming().GetGlobalTimeUs().count() -
+                             processor.start_time - processor.current_processing_time);
         (*entry_count_ptr)++;
     }
 }
 
-bool PerformanceCommand::Verify(const ADSP::CommandListProcessor& processor) {
+bool PerformanceCommand::Verify(const AudioRenderer::CommandListProcessor& processor) {
     return true;
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 6
src/audio_core/renderer/command/performance/performance.h

@@ -10,11 +10,12 @@
 #include "audio_core/renderer/performance/performance_manager.h"
 #include "common/common_types.h"
 
-namespace AudioCore::AudioRenderer {
-namespace ADSP {
+namespace AudioCore::ADSP::AudioRenderer {
 class CommandListProcessor;
 }
 
+namespace AudioCore::Renderer {
+
 /**
  * AudioRenderer command for writing AudioRenderer performance metrics back to the sysmodule.
  */
@@ -25,14 +26,14 @@ struct PerformanceCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @param string    - The string to print into.
      */
-    void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
+    void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
 
     /**
      * Process this command.
      *
      * @param processor - The CommandListProcessor processing this command.
      */
-    void Process(const ADSP::CommandListProcessor& processor) override;
+    void Process(const AudioRenderer::CommandListProcessor& processor) override;
 
     /**
      * Verify this command's data is valid.
@@ -40,7 +41,7 @@ struct PerformanceCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @return True if the command is valid, otherwise false.
      */
-    bool Verify(const ADSP::CommandListProcessor& processor) override;
+    bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
 
     /// State of the performance
     PerformanceState state;
@@ -48,4 +49,4 @@ struct PerformanceCommand : ICommand {
     PerformanceEntryAddresses entry_address;
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 7
src/audio_core/renderer/command/resample/downmix_6ch_to_2ch.cpp

@@ -1,13 +1,13 @@
 // SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
 // SPDX-License-Identifier: GPL-2.0-or-later
 
-#include "audio_core/renderer/adsp/command_list_processor.h"
+#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
 #include "audio_core/renderer/command/resample/downmix_6ch_to_2ch.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
-void DownMix6chTo2chCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& processor,
-                                  std::string& string) {
+void DownMix6chTo2chCommand::Dump(
+    [[maybe_unused]] const AudioRenderer::CommandListProcessor& processor, std::string& string) {
     string += fmt::format("DownMix6chTo2chCommand\n\tinputs:  ");
     for (u32 i = 0; i < MaxChannels; i++) {
         string += fmt::format("{:02X}, ", inputs[i]);
@@ -19,7 +19,7 @@ void DownMix6chTo2chCommand::Dump([[maybe_unused]] const ADSP::CommandListProces
     string += "\n";
 }
 
-void DownMix6chTo2chCommand::Process(const ADSP::CommandListProcessor& processor) {
+void DownMix6chTo2chCommand::Process(const AudioRenderer::CommandListProcessor& processor) {
     auto in_front_left{
         processor.mix_buffers.subspan(inputs[0] * processor.sample_count, processor.sample_count)};
     auto in_front_right{
@@ -67,8 +67,8 @@ void DownMix6chTo2chCommand::Process(const ADSP::CommandListProcessor& processor
     std::memset(out_back_right.data(), 0, out_back_right.size_bytes());
 }
 
-bool DownMix6chTo2chCommand::Verify(const ADSP::CommandListProcessor& processor) {
+bool DownMix6chTo2chCommand::Verify(const AudioRenderer::CommandListProcessor& processor) {
     return true;
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 6
src/audio_core/renderer/command/resample/downmix_6ch_to_2ch.h

@@ -9,11 +9,12 @@
 #include "common/common_types.h"
 #include "common/fixed_point.h"
 
-namespace AudioCore::AudioRenderer {
-namespace ADSP {
+namespace AudioCore::ADSP::AudioRenderer {
 class CommandListProcessor;
 }
 
+namespace AudioCore::Renderer {
+
 /**
  * AudioRenderer command for downmixing 6 channels to 2.
  * Channel layout (SMPTE):
@@ -31,14 +32,14 @@ struct DownMix6chTo2chCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @param string    - The string to print into.
      */
-    void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
+    void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
 
     /**
      * Process this command.
      *
      * @param processor - The CommandListProcessor processing this command.
      */
-    void Process(const ADSP::CommandListProcessor& processor) override;
+    void Process(const AudioRenderer::CommandListProcessor& processor) override;
 
     /**
      * Verify this command's data is valid.
@@ -46,7 +47,7 @@ struct DownMix6chTo2chCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @return True if the command is valid, otherwise false.
      */
-    bool Verify(const ADSP::CommandListProcessor& processor) override;
+    bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
 
     /// Input mix buffer offsets for each channel
     std::array<s16, MaxChannels> inputs;
@@ -56,4 +57,4 @@ struct DownMix6chTo2chCommand : ICommand {
     std::array<Common::FixedPoint<48, 16>, 4> down_mix_coeff;
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 2 - 2
src/audio_core/renderer/command/resample/resample.cpp

@@ -3,7 +3,7 @@
 
 #include "audio_core/renderer/command/resample/resample.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
 static void ResampleLowQuality(std::span<s32> output, std::span<const s16> input,
                                const Common::FixedPoint<49, 15>& sample_rate_ratio,
@@ -880,4 +880,4 @@ void Resample(std::span<s32> output, std::span<const s16> input,
     }
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 2 - 2
src/audio_core/renderer/command/resample/resample.h

@@ -9,7 +9,7 @@
 #include "common/common_types.h"
 #include "common/fixed_point.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 /**
  * Resample an input buffer into an output buffer, according to the sample_rate_ratio.
  *
@@ -26,4 +26,4 @@ void Resample(std::span<s32> output, std::span<const s16> input,
               const Common::FixedPoint<49, 15>& sample_rate_ratio,
               Common::FixedPoint<49, 15>& fraction, u32 samples_to_write, SrcQuality src_quality);
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 6 - 6
src/audio_core/renderer/command/resample/upsample.cpp

@@ -3,11 +3,11 @@
 
 #include <array>
 
-#include "audio_core/renderer/adsp/command_list_processor.h"
+#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
 #include "audio_core/renderer/command/resample/upsample.h"
 #include "audio_core/renderer/upsampler/upsampler_info.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 /**
  * Upsampling impl. Input must be 8K, 16K or 32K, output is 48K.
  *
@@ -198,7 +198,7 @@ static void SrcProcessFrame(std::span<s32> output, std::span<const s32> input,
     }
 }
 
-auto UpsampleCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& processor,
+auto UpsampleCommand::Dump([[maybe_unused]] const AudioRenderer::CommandListProcessor& processor,
                            std::string& string) -> void {
     string += fmt::format("UpsampleCommand\n\tsource_sample_count {} source_sample_rate {}",
                           source_sample_count, source_sample_rate);
@@ -213,7 +213,7 @@ auto UpsampleCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& pr
     string += "\n";
 }
 
-void UpsampleCommand::Process(const ADSP::CommandListProcessor& processor) {
+void UpsampleCommand::Process(const AudioRenderer::CommandListProcessor& processor) {
     const auto info{reinterpret_cast<UpsamplerInfo*>(upsampler_info)};
     const auto input_count{std::min(info->input_count, buffer_count)};
     const std::span<const s16> inputs_{reinterpret_cast<const s16*>(inputs), input_count};
@@ -234,8 +234,8 @@ void UpsampleCommand::Process(const ADSP::CommandListProcessor& processor) {
     }
 }
 
-bool UpsampleCommand::Verify(const ADSP::CommandListProcessor& processor) {
+bool UpsampleCommand::Verify(const AudioRenderer::CommandListProcessor& processor) {
     return true;
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 6
src/audio_core/renderer/command/resample/upsample.h

@@ -8,11 +8,12 @@
 #include "audio_core/renderer/command/icommand.h"
 #include "common/common_types.h"
 
-namespace AudioCore::AudioRenderer {
-namespace ADSP {
+namespace AudioCore::ADSP::AudioRenderer {
 class CommandListProcessor;
 }
 
+namespace AudioCore::Renderer {
+
 /**
  * AudioRenderer command for upsampling a mix buffer to 48Khz.
  * Input must be 8Khz, 16Khz or 32Khz, and output will be 48Khz.
@@ -24,14 +25,14 @@ struct UpsampleCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @param string    - The string to print into.
      */
-    void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
+    void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
 
     /**
      * Process this command.
      *
      * @param processor - The CommandListProcessor processing this command.
      */
-    void Process(const ADSP::CommandListProcessor& processor) override;
+    void Process(const AudioRenderer::CommandListProcessor& processor) override;
 
     /**
      * Verify this command's data is valid.
@@ -39,7 +40,7 @@ struct UpsampleCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @return True if the command is valid, otherwise false.
      */
-    bool Verify(const ADSP::CommandListProcessor& processor) override;
+    bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
 
     /// Pointer to the output samples buffer.
     CpuAddr samples_buffer;
@@ -57,4 +58,4 @@ struct UpsampleCommand : ICommand {
     CpuAddr upsampler_info;
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 7
src/audio_core/renderer/command/sink/circular_buffer.cpp

@@ -3,14 +3,14 @@
 
 #include <vector>
 
-#include "audio_core/renderer/adsp/command_list_processor.h"
+#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
 #include "audio_core/renderer/command/sink/circular_buffer.h"
 #include "core/memory.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
-void CircularBufferSinkCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& processor,
-                                     std::string& string) {
+void CircularBufferSinkCommand::Dump(
+    [[maybe_unused]] const AudioRenderer::CommandListProcessor& processor, std::string& string) {
     string += fmt::format(
         "CircularBufferSinkCommand\n\tinput_count {} ring size {:04X} ring pos {:04X}\n\tinputs: ",
         input_count, size, pos);
@@ -20,7 +20,7 @@ void CircularBufferSinkCommand::Dump([[maybe_unused]] const ADSP::CommandListPro
     string += "\n";
 }
 
-void CircularBufferSinkCommand::Process(const ADSP::CommandListProcessor& processor) {
+void CircularBufferSinkCommand::Process(const AudioRenderer::CommandListProcessor& processor) {
     constexpr s32 min{std::numeric_limits<s16>::min()};
     constexpr s32 max{std::numeric_limits<s16>::max()};
 
@@ -41,8 +41,8 @@ void CircularBufferSinkCommand::Process(const ADSP::CommandListProcessor& proces
     }
 }
 
-bool CircularBufferSinkCommand::Verify(const ADSP::CommandListProcessor& processor) {
+bool CircularBufferSinkCommand::Verify(const AudioRenderer::CommandListProcessor& processor) {
     return true;
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 6
src/audio_core/renderer/command/sink/circular_buffer.h

@@ -8,11 +8,12 @@
 #include "audio_core/renderer/command/icommand.h"
 #include "common/common_types.h"
 
-namespace AudioCore::AudioRenderer {
-namespace ADSP {
+namespace AudioCore::ADSP::AudioRenderer {
 class CommandListProcessor;
 }
 
+namespace AudioCore::Renderer {
+
 /**
  * AudioRenderer command for sinking samples to a circular buffer.
  */
@@ -23,14 +24,14 @@ struct CircularBufferSinkCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @param string    - The string to print into.
      */
-    void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
+    void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
 
     /**
      * Process this command.
      *
      * @param processor - The CommandListProcessor processing this command.
      */
-    void Process(const ADSP::CommandListProcessor& processor) override;
+    void Process(const AudioRenderer::CommandListProcessor& processor) override;
 
     /**
      * Verify this command's data is valid.
@@ -38,7 +39,7 @@ struct CircularBufferSinkCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @return True if the command is valid, otherwise false.
      */
-    bool Verify(const ADSP::CommandListProcessor& processor) override;
+    bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
 
     /// Number of input mix buffers
     u32 input_count;
@@ -52,4 +53,4 @@ struct CircularBufferSinkCommand : ICommand {
     u32 pos;
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 6 - 6
src/audio_core/renderer/command/sink/device.cpp

@@ -3,13 +3,13 @@
 
 #include <algorithm>
 
-#include "audio_core/renderer/adsp/command_list_processor.h"
+#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
 #include "audio_core/renderer/command/sink/device.h"
 #include "audio_core/sink/sink.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
-void DeviceSinkCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor& processor,
+void DeviceSinkCommand::Dump([[maybe_unused]] const AudioRenderer::CommandListProcessor& processor,
                              std::string& string) {
     string += fmt::format("DeviceSinkCommand\n\t{} session {} input_count {}\n\tinputs: ",
                           std::string_view(name), session_id, input_count);
@@ -19,7 +19,7 @@ void DeviceSinkCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor&
     string += "\n";
 }
 
-void DeviceSinkCommand::Process(const ADSP::CommandListProcessor& processor) {
+void DeviceSinkCommand::Process(const AudioRenderer::CommandListProcessor& processor) {
     constexpr s32 min = std::numeric_limits<s16>::min();
     constexpr s32 max = std::numeric_limits<s16>::max();
 
@@ -51,8 +51,8 @@ void DeviceSinkCommand::Process(const ADSP::CommandListProcessor& processor) {
     }
 }
 
-bool DeviceSinkCommand::Verify(const ADSP::CommandListProcessor& processor) {
+bool DeviceSinkCommand::Verify(const AudioRenderer::CommandListProcessor& processor) {
     return true;
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 7 - 6
src/audio_core/renderer/command/sink/device.h

@@ -10,11 +10,12 @@
 #include "audio_core/renderer/command/icommand.h"
 #include "common/common_types.h"
 
-namespace AudioCore::AudioRenderer {
-namespace ADSP {
+namespace AudioCore::ADSP::AudioRenderer {
 class CommandListProcessor;
 }
 
+namespace AudioCore::Renderer {
+
 /**
  * AudioRenderer command for sinking samples to an output device.
  */
@@ -25,14 +26,14 @@ struct DeviceSinkCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @param string - The string to print into.
      */
-    void Dump(const ADSP::CommandListProcessor& processor, std::string& string) override;
+    void Dump(const AudioRenderer::CommandListProcessor& processor, std::string& string) override;
 
     /**
      * Process this command.
      *
      * @param processor - The CommandListProcessor processing this command.
      */
-    void Process(const ADSP::CommandListProcessor& processor) override;
+    void Process(const AudioRenderer::CommandListProcessor& processor) override;
 
     /**
      * Verify this command's data is valid.
@@ -40,7 +41,7 @@ struct DeviceSinkCommand : ICommand {
      * @param processor - The CommandListProcessor processing this command.
      * @return True if the command is valid, otherwise false.
      */
-    bool Verify(const ADSP::CommandListProcessor& processor) override;
+    bool Verify(const AudioRenderer::CommandListProcessor& processor) override;
 
     /// Device name
     char name[0x100];
@@ -54,4 +55,4 @@ struct DeviceSinkCommand : ICommand {
     std::array<s16, MaxChannels> inputs;
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 2 - 2
src/audio_core/renderer/effect/aux_.cpp

@@ -3,7 +3,7 @@
 
 #include "audio_core/renderer/effect/aux_.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
 void AuxInfo::Update(BehaviorInfo::ErrorInfo& error_info, const InParameterVersion1& in_params,
                      const PoolMapper& pool_mapper) {
@@ -90,4 +90,4 @@ CpuAddr AuxInfo::GetWorkbuffer(s32 index) {
     return workbuffers[index].GetReference(true);
 }
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 2 - 2
src/audio_core/renderer/effect/aux_.h

@@ -9,7 +9,7 @@
 #include "audio_core/renderer/effect/effect_info_base.h"
 #include "common/common_types.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 /**
  * Auxiliary Buffer used for Aux commands.
  * Send and return buffers are available (names from the game's perspective).
@@ -120,4 +120,4 @@ public:
     CpuAddr GetWorkbuffer(s32 index) override;
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 2 - 2
src/audio_core/renderer/effect/biquad_filter.cpp

@@ -3,7 +3,7 @@
 
 #include "audio_core/renderer/effect/biquad_filter.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
 void BiquadFilterInfo::Update(BehaviorInfo::ErrorInfo& error_info,
                               const InParameterVersion1& in_params, const PoolMapper& pool_mapper) {
@@ -49,4 +49,4 @@ void BiquadFilterInfo::InitializeResultState(EffectResultState& result_state) {}
 void BiquadFilterInfo::UpdateResultState(EffectResultState& cpu_state,
                                          EffectResultState& dsp_state) {}
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 2 - 2
src/audio_core/renderer/effect/biquad_filter.h

@@ -9,7 +9,7 @@
 #include "audio_core/renderer/effect/effect_info_base.h"
 #include "common/common_types.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
 class BiquadFilterInfo : public EffectInfoBase {
 public:
@@ -76,4 +76,4 @@ public:
     void UpdateResultState(EffectResultState& cpu_state, EffectResultState& dsp_state) override;
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 2 - 2
src/audio_core/renderer/effect/buffer_mixer.cpp

@@ -3,7 +3,7 @@
 
 #include "audio_core/renderer/effect/buffer_mixer.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
 void BufferMixerInfo::Update(BehaviorInfo::ErrorInfo& error_info,
                              const InParameterVersion1& in_params, const PoolMapper& pool_mapper) {
@@ -46,4 +46,4 @@ void BufferMixerInfo::InitializeResultState(EffectResultState& result_state) {}
 void BufferMixerInfo::UpdateResultState(EffectResultState& cpu_state,
                                         EffectResultState& dsp_state) {}
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

+ 2 - 2
src/audio_core/renderer/effect/buffer_mixer.h

@@ -9,7 +9,7 @@
 #include "audio_core/renderer/effect/effect_info_base.h"
 #include "common/common_types.h"
 
-namespace AudioCore::AudioRenderer {
+namespace AudioCore::Renderer {
 
 class BufferMixerInfo : public EffectInfoBase {
 public:
@@ -72,4 +72,4 @@ public:
     void UpdateResultState(EffectResultState& cpu_state, EffectResultState& dsp_state) override;
 };
 
-} // namespace AudioCore::AudioRenderer
+} // namespace AudioCore::Renderer

Some files were not shown because too many files changed in this diff