Просмотр исходного кода

Merge pull request #1391 from ogniK5377/GetAudioRendererState

Added audren:u#GetAudioRendererState
bunnei 7 лет назад
Родитель
Сommit
d373a65d26

+ 4 - 0
src/audio_core/audio_renderer.cpp

@@ -79,6 +79,10 @@ u32 AudioRenderer::GetMixBufferCount() const {
     return worker_params.mix_buffer_count;
 }
 
+u32 AudioRenderer::GetState() const {
+    return stream->GetState();
+}
+
 std::vector<u8> AudioRenderer::UpdateAudioRenderer(const std::vector<u8>& input_params) {
     // Copy UpdateDataHeader struct
     UpdateDataHeader config{};

+ 1 - 0
src/audio_core/audio_renderer.h

@@ -170,6 +170,7 @@ public:
     u32 GetSampleRate() const;
     u32 GetSampleCount() const;
     u32 GetMixBufferCount() const;
+    u32 GetState() const;
 
 private:
     class VoiceState;

+ 5 - 0
src/audio_core/stream.cpp

@@ -49,9 +49,14 @@ void Stream::Play() {
 }
 
 void Stream::Stop() {
+    state = State::Stopped;
     ASSERT_MSG(false, "Unimplemented");
 }
 
+u32 Stream::GetState() const {
+    return static_cast<u32>(state);
+}
+
 s64 Stream::GetBufferReleaseCycles(const Buffer& buffer) const {
     const std::size_t num_samples{buffer.GetSamples().size() / GetNumChannels()};
     return CoreTiming::usToCycles((static_cast<u64>(num_samples) * 1000000) / sample_rate);

+ 3 - 0
src/audio_core/stream.h

@@ -72,6 +72,9 @@ public:
     /// Gets the number of channels
     u32 GetNumChannels() const;
 
+    /// Get the state
+    u32 GetState() const;
+
 private:
     /// Current state of the stream
     enum class State {

+ 8 - 1
src/core/hle/service/audio/audren_u.cpp

@@ -25,7 +25,7 @@ public:
             {0, &IAudioRenderer::GetAudioRendererSampleRate, "GetAudioRendererSampleRate"},
             {1, &IAudioRenderer::GetAudioRendererSampleCount, "GetAudioRendererSampleCount"},
             {2, &IAudioRenderer::GetAudioRendererMixBufferCount, "GetAudioRendererMixBufferCount"},
-            {3, nullptr, "GetAudioRendererState"},
+            {3, &IAudioRenderer::GetAudioRendererState, "GetAudioRendererState"},
             {4, &IAudioRenderer::RequestUpdateAudioRenderer, "RequestUpdateAudioRenderer"},
             {5, &IAudioRenderer::StartAudioRenderer, "StartAudioRenderer"},
             {6, &IAudioRenderer::StopAudioRenderer, "StopAudioRenderer"},
@@ -62,6 +62,13 @@ private:
         LOG_DEBUG(Service_Audio, "called");
     }
 
+    void GetAudioRendererState(Kernel::HLERequestContext& ctx) {
+        IPC::ResponseBuilder rb{ctx, 3};
+        rb.Push(RESULT_SUCCESS);
+        rb.Push<u32>(renderer->GetState());
+        LOG_DEBUG(Service_Audio, "called");
+    }
+
     void GetAudioRendererMixBufferCount(Kernel::HLERequestContext& ctx) {
         IPC::ResponseBuilder rb{ctx, 3};
         rb.Push(RESULT_SUCCESS);