summaryrefslogtreecommitdiff
path: root/src/audio_core
diff options
context:
space:
mode:
authorZephyron <zephyron@citron-emu.org>2024-12-31 18:42:49 +1000
committerMike Lothian <mike@fireburn.co.uk>2025-05-11 12:17:03 +0100
commitfeac7a4b491fbc07ed7924b9873433ff90ce85a6 (patch)
treeac0d2f133a0e998fd355dd8320bf77518b954127 /src/audio_core
parentf4b721ac0639ec0451d35908551fd9df2c837ab8 (diff)
audio_core: Add comprehensive audio feature support tags
Added new feature support tags to track audio functionality across firmware versions. Changes include: - Added Audio Out/In Auto buffer support tags (3.0.0+) - Added Final Output Recorder features including work buffer (3.0.0+, 9.0.0+) - Added Audio Renderer features like manual execution and voice drop - Added Audio Device features including notifications and auto volume - Added Hardware Opus decoder features including large frame support - Added System Audio features like master volume and hearing protection This provides more complete feature detection for audio functionality introduced in firmware versions 3.0.0 through 19.0.1.
Diffstat (limited to 'src/audio_core')
-rw-r--r--src/audio_core/common/feature_support.h53
1 files changed, 48 insertions, 5 deletions
diff --git a/src/audio_core/common/feature_support.h b/src/audio_core/common/feature_support.h
index e4dd1737b..304829c45 100644
--- a/src/audio_core/common/feature_support.h
+++ b/src/audio_core/common/feature_support.h
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
+// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project & 2025 citron Homebrew Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
@@ -13,7 +13,7 @@
#include "common/polyfill_ranges.h"
namespace AudioCore {
-constexpr u32 CurrentRevision = 13;
+constexpr u32 CurrentRevision = 18;
enum class SupportTags {
CommandProcessingTimeEstimatorVersion4,
@@ -44,8 +44,29 @@ enum class SupportTags {
DelayChannelMappingChange,
ReverbChannelMappingChange,
I3dl2ReverbChannelMappingChange,
-
- // Not a real tag, just here to get the count.
+ AudioOutAuto,
+ AudioInAuto,
+ AudioInFiltering,
+ AudioInUacSupport,
+ FinalOutputRecorderAuto,
+ FinalOutputRecorderWorkBuffer,
+ AudioRendererManualExecution,
+ AudioRendererVariableRate,
+ AudioRendererRevisionCheck,
+ AudioRendererVoiceDrop,
+ AudioDeviceNameAuto,
+ AudioDeviceInputEvent,
+ AudioDeviceOutputEvent,
+ AudioDeviceNotification,
+ AudioDeviceAutoVolumeTune,
+ HardwareOpusDecoderEx,
+ HardwareOpusMultiStream,
+ HardwareOpusLargeFrameSize,
+ AudioSystemMasterVolume,
+ AudioSystemInputVolume,
+ AudioSystemRecordVolume,
+ AudioSystemAutoMute,
+ AudioSystemHearingProtection,
Size
};
@@ -54,7 +75,6 @@ constexpr u32 GetRevisionNum(u32 user_revision) {
user_revision -= Common::MakeMagic('R', 'E', 'V', '0');
user_revision >>= 24;
}
-
return user_revision;
};
@@ -88,6 +108,29 @@ constexpr bool CheckFeatureSupported(SupportTags tag, u32 user_revision) {
{SupportTags::DelayChannelMappingChange, 11},
{SupportTags::ReverbChannelMappingChange, 11},
{SupportTags::I3dl2ReverbChannelMappingChange, 11},
+ {SupportTags::AudioOutAuto, 3},
+ {SupportTags::AudioInAuto, 3},
+ {SupportTags::AudioInFiltering, 3},
+ {SupportTags::AudioInUacSupport, 3},
+ {SupportTags::FinalOutputRecorderAuto, 3},
+ {SupportTags::FinalOutputRecorderWorkBuffer, 9},
+ {SupportTags::AudioRendererManualExecution, 3},
+ {SupportTags::AudioRendererVariableRate, 4},
+ {SupportTags::AudioRendererRevisionCheck, 4},
+ {SupportTags::AudioRendererVoiceDrop, 15},
+ {SupportTags::AudioDeviceNameAuto, 3},
+ {SupportTags::AudioDeviceInputEvent, 3},
+ {SupportTags::AudioDeviceOutputEvent, 3},
+ {SupportTags::AudioDeviceNotification, 17},
+ {SupportTags::AudioDeviceAutoVolumeTune, 18},
+ {SupportTags::HardwareOpusDecoderEx, 12},
+ {SupportTags::HardwareOpusMultiStream, 3},
+ {SupportTags::HardwareOpusLargeFrameSize, 12},
+ {SupportTags::AudioSystemMasterVolume, 4},
+ {SupportTags::AudioSystemInputVolume, 4},
+ {SupportTags::AudioSystemRecordVolume, 4},
+ {SupportTags::AudioSystemAutoMute, 13},
+ {SupportTags::AudioSystemHearingProtection, 14},
}};
const auto& feature =