Browse Source
[svc, audio] Implement REV13 audio renderer support and stub IAudioDevice commands up to 18.0.0+
[svc, audio] Implement REV13 audio renderer support and stub IAudioDevice commands up to 18.0.0+
Fully implements support for the AudioRenderer REV13 interface.
- Adds SplitterDestinationInParameter with `reset_prev_volume` support.
- Updates SplitterContext to parse REV13 destination parameters.
- Handles per-destination volume ramp resets.
- Verified against Ryujinx commit:
a2c0035013
Stubs new commands in IAudioDevice introduced in 17.0.0+ and 18.0.0+:
- Command 15: AcquireAudioInputDeviceNotification()
- Command 16: ReleaseAudioInputDeviceNotification()
- Command 17: AcquireAudioOutputDeviceNotification()
- Command 18: ReleaseAudioOutputDeviceNotification()
- Command 19: SetAudioDeviceOutputVolumeAutoTuneEnabled()
- Command 20: IsAudioDeviceOutputVolumeAutoTuneEnabled()
These were referenced directly from Ryujinx too.
Should fix audio reset issues in The Legend of Zelda: Echoes of Wisdom.
Note: due to minimal documentation on the audio services some guess work has been made and it may not be 100% accuracte to the switch's services.
pull/92/head
committed by
crueter
10 changed files with 167 additions and 11 deletions
-
7src/audio_core/common/feature_support.h
-
4src/audio_core/renderer/audio_renderer.h
-
22src/audio_core/renderer/splitter/parameters.h
-
30src/audio_core/renderer/splitter/splitter_context.cpp
-
7src/audio_core/renderer/splitter/splitter_context.h
-
15src/audio_core/renderer/splitter/splitter_destinations_data.cpp
-
20src/audio_core/renderer/splitter/splitter_destinations_data.h
-
15src/audio_core/renderer/system.cpp
-
48src/core/hle/service/audio/audio_device.cpp
-
10src/core/hle/service/audio/audio_device.h
@ -0,0 +1,22 @@ |
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project |
|||
// SPDX-License-Identifier: GPL-3.0-or-later |
|||
|
|||
#pragma once |
|||
|
|||
#include "common/common_types.h" |
|||
|
|||
namespace AudioCore::Renderer { |
|||
|
|||
/** |
|||
* Input struct passed to a splitter destination in REV13. |
|||
*/ |
|||
struct SplitterDestinationInParameter { |
|||
/* 0x00 */ s32 magic; |
|||
/* 0x04 */ s32 id; |
|||
/* 0x08 */ bool reset_prev_volume; |
|||
/* 0x09 */ u8 reserved[11]; // Padding to align to 0x14 |
|||
}; |
|||
static_assert(sizeof(SplitterDestinationInParameter) == 0x14, |
|||
"SplitterDestinationInParameter must be 0x14 bytes."); |
|||
|
|||
} // namespace AudioCore::Renderer |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue