1 // Copyright 2018 yuzu emulator team
2 // Licensed under GPLv2 or any later version
3 // Refer to the license.txt file included.
4 
5 #pragma once
6 
7 #include "core/hle/service/service.h"
8 
9 namespace Core {
10 class System;
11 }
12 
13 namespace Kernel {
14 class HLERequestContext;
15 }
16 
17 namespace Service::Audio {
18 
19 class AudRenU final : public ServiceFramework<AudRenU> {
20 public:
21     explicit AudRenU(Core::System& system_);
22     ~AudRenU() override;
23 
24 private:
25     void OpenAudioRenderer(Kernel::HLERequestContext& ctx);
26     void GetAudioRendererWorkBufferSize(Kernel::HLERequestContext& ctx);
27     void GetAudioDeviceService(Kernel::HLERequestContext& ctx);
28     void OpenAudioRendererAuto(Kernel::HLERequestContext& ctx);
29     void GetAudioDeviceServiceWithRevisionInfo(Kernel::HLERequestContext& ctx);
30 
31     void OpenAudioRendererImpl(Kernel::HLERequestContext& ctx);
32 
33     std::size_t audren_instance_count = 0;
34 };
35 
36 // Describes a particular audio feature that may be supported in a particular revision.
37 enum class AudioFeatures : u32 {
38     AudioUSBDeviceOutput,
39     Splitter,
40     PerformanceMetricsVersion2,
41     VariadicCommandBuffer,
42 };
43 
44 // Tests if a particular audio feature is supported with a given audio revision.
45 bool IsFeatureSupported(AudioFeatures feature, u32_le revision);
46 
47 } // namespace Service::Audio
48