// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include "audio_core/audio_in_manager.h" #include "audio_core/in/audio_in_system.h" #include "core/hle/service/cmif_types.h" #include "core/hle/service/service.h" namespace Service::Audio { using AudioDeviceName = AudioCore::Renderer::AudioDevice::AudioDeviceName; using Protocol = std::array; class IAudioIn; class IAudioInManager final : public ServiceFramework { public: explicit IAudioInManager(Core::System& system_); ~IAudioInManager() override; private: Result ListAudioIns(OutArray out_audio_ins, Out out_count); Result OpenAudioIn(Out out_parameter_internal, Out> out_audio_in, OutArray out_name, InArray name, AudioCore::AudioIn::AudioInParameter parameter, InCopyHandle process_handle, ClientAppletResourceUserId aruid); Result ListAudioInsAuto(OutArray out_audio_ins, Out out_count); Result OpenAudioInAuto(Out out_parameter_internal, Out> out_audio_in, OutArray out_name, InArray name, AudioCore::AudioIn::AudioInParameter parameter, InCopyHandle process_handle, ClientAppletResourceUserId aruid); Result ListAudioInsAutoFiltered( OutArray out_audio_ins, Out out_count); Result OpenAudioInProtocolSpecified( Out out_parameter_internal, Out> out_audio_in, OutArray out_name, InArray name, Protocol protocol, AudioCore::AudioIn::AudioInParameter parameter, InCopyHandle process_handle, ClientAppletResourceUserId aruid); std::unique_ptr impl; }; } // namespace Service::Audio