diff options
author | bunnei <bunneidev@gmail.com> | 2018-08-12 19:33:08 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-12 19:33:08 +0200 |
commit | 68c44ca0ee17ed9f5319150e28c5dfa6115fb7b2 (patch) | |
tree | 8030e3696ed3ceebfb606ac119e5d9ff66ea8f58 /src/core | |
parent | Merge pull request #1034 from lioncash/hid (diff) | |
parent | Pushed the requested sample rate instead of our fixed sample rate (diff) | |
download | yuzu-68c44ca0ee17ed9f5319150e28c5dfa6115fb7b2.tar yuzu-68c44ca0ee17ed9f5319150e28c5dfa6115fb7b2.tar.gz yuzu-68c44ca0ee17ed9f5319150e28c5dfa6115fb7b2.tar.bz2 yuzu-68c44ca0ee17ed9f5319150e28c5dfa6115fb7b2.tar.lz yuzu-68c44ca0ee17ed9f5319150e28c5dfa6115fb7b2.tar.xz yuzu-68c44ca0ee17ed9f5319150e28c5dfa6115fb7b2.tar.zst yuzu-68c44ca0ee17ed9f5319150e28c5dfa6115fb7b2.zip |
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/hle/service/audio/audren_u.cpp | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/src/core/hle/service/audio/audren_u.cpp b/src/core/hle/service/audio/audren_u.cpp index f99304de5..0b6034bb3 100644 --- a/src/core/hle/service/audio/audren_u.cpp +++ b/src/core/hle/service/audio/audren_u.cpp @@ -20,9 +20,9 @@ public: explicit IAudioRenderer(AudioCore::AudioRendererParameter audren_params) : ServiceFramework("IAudioRenderer") { static const FunctionInfo functions[] = { - {0, nullptr, "GetAudioRendererSampleRate"}, - {1, nullptr, "GetAudioRendererSampleCount"}, - {2, nullptr, "GetAudioRendererMixBufferCount"}, + {0, &IAudioRenderer::GetAudioRendererSampleRate, "GetAudioRendererSampleRate"}, + {1, &IAudioRenderer::GetAudioRendererSampleCount, "GetAudioRendererSampleCount"}, + {2, &IAudioRenderer::GetAudioRendererMixBufferCount, "GetAudioRendererMixBufferCount"}, {3, nullptr, "GetAudioRendererState"}, {4, &IAudioRenderer::RequestUpdateAudioRenderer, "RequestUpdateAudioRenderer"}, {5, &IAudioRenderer::StartAudioRenderer, "StartAudioRenderer"}, @@ -45,6 +45,27 @@ private: system_event->Signal(); } + void GetAudioRendererSampleRate(Kernel::HLERequestContext& ctx) { + IPC::ResponseBuilder rb{ctx, 3}; + rb.Push(RESULT_SUCCESS); + rb.Push<u32>(renderer->GetSampleRate()); + LOG_DEBUG(Service_Audio, "called"); + } + + void GetAudioRendererSampleCount(Kernel::HLERequestContext& ctx) { + IPC::ResponseBuilder rb{ctx, 3}; + rb.Push(RESULT_SUCCESS); + rb.Push<u32>(renderer->GetSampleCount()); + LOG_DEBUG(Service_Audio, "called"); + } + + void GetAudioRendererMixBufferCount(Kernel::HLERequestContext& ctx) { + IPC::ResponseBuilder rb{ctx, 3}; + rb.Push(RESULT_SUCCESS); + rb.Push<u32>(renderer->GetMixBufferCount()); + LOG_DEBUG(Service_Audio, "called"); + } + void RequestUpdateAudioRenderer(Kernel::HLERequestContext& ctx) { ctx.WriteBuffer(renderer->UpdateAudioRenderer(ctx.ReadBuffer())); IPC::ResponseBuilder rb{ctx, 2}; @@ -189,7 +210,7 @@ void AudRenU::GetAudioRendererWorkBufferSize(Kernel::HLERequestContext& ctx) { IPC::RequestParser rp{ctx}; auto params = rp.PopRaw<AudioCore::AudioRendererParameter>(); - u64 buffer_sz = Common::AlignUp(4 * params.unknown_8, 0x40); + u64 buffer_sz = Common::AlignUp(4 * params.mix_buffer_count, 0x40); buffer_sz += params.unknown_c * 1024; buffer_sz += 0x940 * (params.unknown_c + 1); buffer_sz += 0x3F0 * params.voice_count; @@ -197,7 +218,7 @@ void AudRenU::GetAudioRendererWorkBufferSize(Kernel::HLERequestContext& ctx) { buffer_sz += Common::AlignUp(8 * params.voice_count, 0x10); buffer_sz += Common::AlignUp((0x3C0 * (params.sink_count + params.unknown_c) + 4 * params.sample_count) * - (params.unknown_8 + 6), + (params.mix_buffer_count + 6), 0x40); if (IsFeatureSupported(AudioFeatures::Splitter, params.revision)) { |