diff options
| author | 2019-03-01 05:40:25 -0500 | |
|---|---|---|
| committer | 2019-03-01 05:40:29 -0500 | |
| commit | 84aff56644cc0fe9852e2a1749b88d1295945c74 (patch) | |
| tree | bb18001e6215369d39358fba50714a060ce43d8a /src | |
| parent | Merge pull request #2174 from lioncash/fwd (diff) | |
| download | yuzu-84aff56644cc0fe9852e2a1749b88d1295945c74.tar.gz yuzu-84aff56644cc0fe9852e2a1749b88d1295945c74.tar.xz yuzu-84aff56644cc0fe9852e2a1749b88d1295945c74.zip | |
service/audio/audren_u: Implement OpenAudioRendererAuto
This currently has the same behavior as the regular
OpenAudioRenderer API function, so we can just move the code within
OpenAudioRenderer to an internal function that both service functions
call.
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/hle/service/audio/audren_u.cpp | 24 | ||||
| -rw-r--r-- | src/core/hle/service/audio/audren_u.h | 3 |
2 files changed, 20 insertions, 7 deletions
diff --git a/src/core/hle/service/audio/audren_u.cpp b/src/core/hle/service/audio/audren_u.cpp index 49648394c..f68f588b6 100644 --- a/src/core/hle/service/audio/audren_u.cpp +++ b/src/core/hle/service/audio/audren_u.cpp | |||
| @@ -235,7 +235,7 @@ AudRenU::AudRenU() : ServiceFramework("audren:u") { | |||
| 235 | {0, &AudRenU::OpenAudioRenderer, "OpenAudioRenderer"}, | 235 | {0, &AudRenU::OpenAudioRenderer, "OpenAudioRenderer"}, |
| 236 | {1, &AudRenU::GetAudioRendererWorkBufferSize, "GetAudioRendererWorkBufferSize"}, | 236 | {1, &AudRenU::GetAudioRendererWorkBufferSize, "GetAudioRendererWorkBufferSize"}, |
| 237 | {2, &AudRenU::GetAudioDeviceService, "GetAudioDeviceService"}, | 237 | {2, &AudRenU::GetAudioDeviceService, "GetAudioDeviceService"}, |
| 238 | {3, nullptr, "OpenAudioRendererAuto"}, | 238 | {3, &AudRenU::OpenAudioRendererAuto, "OpenAudioRendererAuto"}, |
| 239 | {4, &AudRenU::GetAudioDeviceServiceWithRevisionInfo, "GetAudioDeviceServiceWithRevisionInfo"}, | 239 | {4, &AudRenU::GetAudioDeviceServiceWithRevisionInfo, "GetAudioDeviceServiceWithRevisionInfo"}, |
| 240 | }; | 240 | }; |
| 241 | // clang-format on | 241 | // clang-format on |
| @@ -248,12 +248,7 @@ AudRenU::~AudRenU() = default; | |||
| 248 | void AudRenU::OpenAudioRenderer(Kernel::HLERequestContext& ctx) { | 248 | void AudRenU::OpenAudioRenderer(Kernel::HLERequestContext& ctx) { |
| 249 | LOG_DEBUG(Service_Audio, "called"); | 249 | LOG_DEBUG(Service_Audio, "called"); |
| 250 | 250 | ||
| 251 | IPC::RequestParser rp{ctx}; | 251 | OpenAudioRendererImpl(ctx); |
| 252 | auto params = rp.PopRaw<AudioCore::AudioRendererParameter>(); | ||
| 253 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||
| 254 | |||
| 255 | rb.Push(RESULT_SUCCESS); | ||
| 256 | rb.PushIpcInterface<Audio::IAudioRenderer>(std::move(params)); | ||
| 257 | } | 252 | } |
| 258 | 253 | ||
| 259 | void AudRenU::GetAudioRendererWorkBufferSize(Kernel::HLERequestContext& ctx) { | 254 | void AudRenU::GetAudioRendererWorkBufferSize(Kernel::HLERequestContext& ctx) { |
| @@ -325,6 +320,12 @@ void AudRenU::GetAudioDeviceService(Kernel::HLERequestContext& ctx) { | |||
| 325 | rb.PushIpcInterface<Audio::IAudioDevice>(); | 320 | rb.PushIpcInterface<Audio::IAudioDevice>(); |
| 326 | } | 321 | } |
| 327 | 322 | ||
| 323 | void AudRenU::OpenAudioRendererAuto(Kernel::HLERequestContext& ctx) { | ||
| 324 | LOG_DEBUG(Service_Audio, "called"); | ||
| 325 | |||
| 326 | OpenAudioRendererImpl(ctx); | ||
| 327 | } | ||
| 328 | |||
| 328 | void AudRenU::GetAudioDeviceServiceWithRevisionInfo(Kernel::HLERequestContext& ctx) { | 329 | void AudRenU::GetAudioDeviceServiceWithRevisionInfo(Kernel::HLERequestContext& ctx) { |
| 329 | LOG_WARNING(Service_Audio, "(STUBBED) called"); | 330 | LOG_WARNING(Service_Audio, "(STUBBED) called"); |
| 330 | 331 | ||
| @@ -335,6 +336,15 @@ void AudRenU::GetAudioDeviceServiceWithRevisionInfo(Kernel::HLERequestContext& c | |||
| 335 | // based on the current revision | 336 | // based on the current revision |
| 336 | } | 337 | } |
| 337 | 338 | ||
| 339 | void AudRenU::OpenAudioRendererImpl(Kernel::HLERequestContext& ctx) { | ||
| 340 | IPC::RequestParser rp{ctx}; | ||
| 341 | const auto params = rp.PopRaw<AudioCore::AudioRendererParameter>(); | ||
| 342 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||
| 343 | |||
| 344 | rb.Push(RESULT_SUCCESS); | ||
| 345 | rb.PushIpcInterface<IAudioRenderer>(params); | ||
| 346 | } | ||
| 347 | |||
| 338 | bool AudRenU::IsFeatureSupported(AudioFeatures feature, u32_le revision) const { | 348 | bool AudRenU::IsFeatureSupported(AudioFeatures feature, u32_le revision) const { |
| 339 | u32_be version_num = (revision - Common::MakeMagic('R', 'E', 'V', '0')); // Byte swap | 349 | u32_be version_num = (revision - Common::MakeMagic('R', 'E', 'V', '0')); // Byte swap |
| 340 | switch (feature) { | 350 | switch (feature) { |
diff --git a/src/core/hle/service/audio/audren_u.h b/src/core/hle/service/audio/audren_u.h index 3d63388fb..e55d25973 100644 --- a/src/core/hle/service/audio/audren_u.h +++ b/src/core/hle/service/audio/audren_u.h | |||
| @@ -21,8 +21,11 @@ private: | |||
| 21 | void OpenAudioRenderer(Kernel::HLERequestContext& ctx); | 21 | void OpenAudioRenderer(Kernel::HLERequestContext& ctx); |
| 22 | void GetAudioRendererWorkBufferSize(Kernel::HLERequestContext& ctx); | 22 | void GetAudioRendererWorkBufferSize(Kernel::HLERequestContext& ctx); |
| 23 | void GetAudioDeviceService(Kernel::HLERequestContext& ctx); | 23 | void GetAudioDeviceService(Kernel::HLERequestContext& ctx); |
| 24 | void OpenAudioRendererAuto(Kernel::HLERequestContext& ctx); | ||
| 24 | void GetAudioDeviceServiceWithRevisionInfo(Kernel::HLERequestContext& ctx); | 25 | void GetAudioDeviceServiceWithRevisionInfo(Kernel::HLERequestContext& ctx); |
| 25 | 26 | ||
| 27 | void OpenAudioRendererImpl(Kernel::HLERequestContext& ctx); | ||
| 28 | |||
| 26 | enum class AudioFeatures : u32 { | 29 | enum class AudioFeatures : u32 { |
| 27 | Splitter, | 30 | Splitter, |
| 28 | }; | 31 | }; |