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