diff options
| author | 2018-08-12 13:33:08 -0400 | |
|---|---|---|
| committer | 2018-08-12 13:33:08 -0400 | |
| 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.gz yuzu-68c44ca0ee17ed9f5319150e28c5dfa6115fb7b2.tar.xz yuzu-68c44ca0ee17ed9f5319150e28c5dfa6115fb7b2.zip | |
Merge pull request #1028 from ogniK5377/aoa
Added GetAudioRendererSampleRate, GetAudioRendererSampleCount & GetAudioRendererMixBufferCount
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: | |||
| 20 | explicit IAudioRenderer(AudioCore::AudioRendererParameter audren_params) | 20 | explicit IAudioRenderer(AudioCore::AudioRendererParameter audren_params) |
| 21 | : ServiceFramework("IAudioRenderer") { | 21 | : ServiceFramework("IAudioRenderer") { |
| 22 | static const FunctionInfo functions[] = { | 22 | static const FunctionInfo functions[] = { |
| 23 | {0, nullptr, "GetAudioRendererSampleRate"}, | 23 | {0, &IAudioRenderer::GetAudioRendererSampleRate, "GetAudioRendererSampleRate"}, |
| 24 | {1, nullptr, "GetAudioRendererSampleCount"}, | 24 | {1, &IAudioRenderer::GetAudioRendererSampleCount, "GetAudioRendererSampleCount"}, |
| 25 | {2, nullptr, "GetAudioRendererMixBufferCount"}, | 25 | {2, &IAudioRenderer::GetAudioRendererMixBufferCount, "GetAudioRendererMixBufferCount"}, |
| 26 | {3, nullptr, "GetAudioRendererState"}, | 26 | {3, nullptr, "GetAudioRendererState"}, |
| 27 | {4, &IAudioRenderer::RequestUpdateAudioRenderer, "RequestUpdateAudioRenderer"}, | 27 | {4, &IAudioRenderer::RequestUpdateAudioRenderer, "RequestUpdateAudioRenderer"}, |
| 28 | {5, &IAudioRenderer::StartAudioRenderer, "StartAudioRenderer"}, | 28 | {5, &IAudioRenderer::StartAudioRenderer, "StartAudioRenderer"}, |
| @@ -45,6 +45,27 @@ private: | |||
| 45 | system_event->Signal(); | 45 | system_event->Signal(); |
| 46 | } | 46 | } |
| 47 | 47 | ||
| 48 | void GetAudioRendererSampleRate(Kernel::HLERequestContext& ctx) { | ||
| 49 | IPC::ResponseBuilder rb{ctx, 3}; | ||
| 50 | rb.Push(RESULT_SUCCESS); | ||
| 51 | rb.Push<u32>(renderer->GetSampleRate()); | ||
| 52 | LOG_DEBUG(Service_Audio, "called"); | ||
| 53 | } | ||
| 54 | |||
| 55 | void GetAudioRendererSampleCount(Kernel::HLERequestContext& ctx) { | ||
| 56 | IPC::ResponseBuilder rb{ctx, 3}; | ||
| 57 | rb.Push(RESULT_SUCCESS); | ||
| 58 | rb.Push<u32>(renderer->GetSampleCount()); | ||
| 59 | LOG_DEBUG(Service_Audio, "called"); | ||
| 60 | } | ||
| 61 | |||
| 62 | void GetAudioRendererMixBufferCount(Kernel::HLERequestContext& ctx) { | ||
| 63 | IPC::ResponseBuilder rb{ctx, 3}; | ||
| 64 | rb.Push(RESULT_SUCCESS); | ||
| 65 | rb.Push<u32>(renderer->GetMixBufferCount()); | ||
| 66 | LOG_DEBUG(Service_Audio, "called"); | ||
| 67 | } | ||
| 68 | |||
| 48 | void RequestUpdateAudioRenderer(Kernel::HLERequestContext& ctx) { | 69 | void RequestUpdateAudioRenderer(Kernel::HLERequestContext& ctx) { |
| 49 | ctx.WriteBuffer(renderer->UpdateAudioRenderer(ctx.ReadBuffer())); | 70 | ctx.WriteBuffer(renderer->UpdateAudioRenderer(ctx.ReadBuffer())); |
| 50 | IPC::ResponseBuilder rb{ctx, 2}; | 71 | IPC::ResponseBuilder rb{ctx, 2}; |
| @@ -189,7 +210,7 @@ void AudRenU::GetAudioRendererWorkBufferSize(Kernel::HLERequestContext& ctx) { | |||
| 189 | IPC::RequestParser rp{ctx}; | 210 | IPC::RequestParser rp{ctx}; |
| 190 | auto params = rp.PopRaw<AudioCore::AudioRendererParameter>(); | 211 | auto params = rp.PopRaw<AudioCore::AudioRendererParameter>(); |
| 191 | 212 | ||
| 192 | u64 buffer_sz = Common::AlignUp(4 * params.unknown_8, 0x40); | 213 | u64 buffer_sz = Common::AlignUp(4 * params.mix_buffer_count, 0x40); |
| 193 | buffer_sz += params.unknown_c * 1024; | 214 | buffer_sz += params.unknown_c * 1024; |
| 194 | buffer_sz += 0x940 * (params.unknown_c + 1); | 215 | buffer_sz += 0x940 * (params.unknown_c + 1); |
| 195 | buffer_sz += 0x3F0 * params.voice_count; | 216 | buffer_sz += 0x3F0 * params.voice_count; |
| @@ -197,7 +218,7 @@ void AudRenU::GetAudioRendererWorkBufferSize(Kernel::HLERequestContext& ctx) { | |||
| 197 | buffer_sz += Common::AlignUp(8 * params.voice_count, 0x10); | 218 | buffer_sz += Common::AlignUp(8 * params.voice_count, 0x10); |
| 198 | buffer_sz += | 219 | buffer_sz += |
| 199 | Common::AlignUp((0x3C0 * (params.sink_count + params.unknown_c) + 4 * params.sample_count) * | 220 | Common::AlignUp((0x3C0 * (params.sink_count + params.unknown_c) + 4 * params.sample_count) * |
| 200 | (params.unknown_8 + 6), | 221 | (params.mix_buffer_count + 6), |
| 201 | 0x40); | 222 | 0x40); |
| 202 | 223 | ||
| 203 | if (IsFeatureSupported(AudioFeatures::Splitter, params.revision)) { | 224 | if (IsFeatureSupported(AudioFeatures::Splitter, params.revision)) { |