mirror of
https://github.com/yuzu-emu/yuzu-android.git
synced 2025-06-12 10:07:56 -05:00
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.
This commit is contained in:
@ -235,7 +235,7 @@ AudRenU::AudRenU() : ServiceFramework("audren:u") {
|
|||||||
{0, &AudRenU::OpenAudioRenderer, "OpenAudioRenderer"},
|
{0, &AudRenU::OpenAudioRenderer, "OpenAudioRenderer"},
|
||||||
{1, &AudRenU::GetAudioRendererWorkBufferSize, "GetAudioRendererWorkBufferSize"},
|
{1, &AudRenU::GetAudioRendererWorkBufferSize, "GetAudioRendererWorkBufferSize"},
|
||||||
{2, &AudRenU::GetAudioDeviceService, "GetAudioDeviceService"},
|
{2, &AudRenU::GetAudioDeviceService, "GetAudioDeviceService"},
|
||||||
{3, nullptr, "OpenAudioRendererAuto"},
|
{3, &AudRenU::OpenAudioRendererAuto, "OpenAudioRendererAuto"},
|
||||||
{4, &AudRenU::GetAudioDeviceServiceWithRevisionInfo, "GetAudioDeviceServiceWithRevisionInfo"},
|
{4, &AudRenU::GetAudioDeviceServiceWithRevisionInfo, "GetAudioDeviceServiceWithRevisionInfo"},
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
@ -248,12 +248,7 @@ AudRenU::~AudRenU() = default;
|
|||||||
void AudRenU::OpenAudioRenderer(Kernel::HLERequestContext& ctx) {
|
void AudRenU::OpenAudioRenderer(Kernel::HLERequestContext& ctx) {
|
||||||
LOG_DEBUG(Service_Audio, "called");
|
LOG_DEBUG(Service_Audio, "called");
|
||||||
|
|
||||||
IPC::RequestParser rp{ctx};
|
OpenAudioRendererImpl(ctx);
|
||||||
auto params = rp.PopRaw<AudioCore::AudioRendererParameter>();
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
|
|
||||||
|
|
||||||
rb.Push(RESULT_SUCCESS);
|
|
||||||
rb.PushIpcInterface<Audio::IAudioRenderer>(std::move(params));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AudRenU::GetAudioRendererWorkBufferSize(Kernel::HLERequestContext& ctx) {
|
void AudRenU::GetAudioRendererWorkBufferSize(Kernel::HLERequestContext& ctx) {
|
||||||
@ -325,6 +320,12 @@ void AudRenU::GetAudioDeviceService(Kernel::HLERequestContext& ctx) {
|
|||||||
rb.PushIpcInterface<Audio::IAudioDevice>();
|
rb.PushIpcInterface<Audio::IAudioDevice>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AudRenU::OpenAudioRendererAuto(Kernel::HLERequestContext& ctx) {
|
||||||
|
LOG_DEBUG(Service_Audio, "called");
|
||||||
|
|
||||||
|
OpenAudioRendererImpl(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
void AudRenU::GetAudioDeviceServiceWithRevisionInfo(Kernel::HLERequestContext& ctx) {
|
void AudRenU::GetAudioDeviceServiceWithRevisionInfo(Kernel::HLERequestContext& ctx) {
|
||||||
LOG_WARNING(Service_Audio, "(STUBBED) called");
|
LOG_WARNING(Service_Audio, "(STUBBED) called");
|
||||||
|
|
||||||
@ -335,6 +336,15 @@ void AudRenU::GetAudioDeviceServiceWithRevisionInfo(Kernel::HLERequestContext& c
|
|||||||
// based on the current revision
|
// based on the current revision
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AudRenU::OpenAudioRendererImpl(Kernel::HLERequestContext& ctx) {
|
||||||
|
IPC::RequestParser rp{ctx};
|
||||||
|
const auto params = rp.PopRaw<AudioCore::AudioRendererParameter>();
|
||||||
|
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
|
||||||
|
|
||||||
|
rb.Push(RESULT_SUCCESS);
|
||||||
|
rb.PushIpcInterface<IAudioRenderer>(params);
|
||||||
|
}
|
||||||
|
|
||||||
bool AudRenU::IsFeatureSupported(AudioFeatures feature, u32_le revision) const {
|
bool AudRenU::IsFeatureSupported(AudioFeatures feature, u32_le revision) const {
|
||||||
u32_be version_num = (revision - Common::MakeMagic('R', 'E', 'V', '0')); // Byte swap
|
u32_be version_num = (revision - Common::MakeMagic('R', 'E', 'V', '0')); // Byte swap
|
||||||
switch (feature) {
|
switch (feature) {
|
||||||
|
@ -21,8 +21,11 @@ private:
|
|||||||
void OpenAudioRenderer(Kernel::HLERequestContext& ctx);
|
void OpenAudioRenderer(Kernel::HLERequestContext& ctx);
|
||||||
void GetAudioRendererWorkBufferSize(Kernel::HLERequestContext& ctx);
|
void GetAudioRendererWorkBufferSize(Kernel::HLERequestContext& ctx);
|
||||||
void GetAudioDeviceService(Kernel::HLERequestContext& ctx);
|
void GetAudioDeviceService(Kernel::HLERequestContext& ctx);
|
||||||
|
void OpenAudioRendererAuto(Kernel::HLERequestContext& ctx);
|
||||||
void GetAudioDeviceServiceWithRevisionInfo(Kernel::HLERequestContext& ctx);
|
void GetAudioDeviceServiceWithRevisionInfo(Kernel::HLERequestContext& ctx);
|
||||||
|
|
||||||
|
void OpenAudioRendererImpl(Kernel::HLERequestContext& ctx);
|
||||||
|
|
||||||
enum class AudioFeatures : u32 {
|
enum class AudioFeatures : u32 {
|
||||||
Splitter,
|
Splitter,
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user