diff options
Diffstat (limited to 'src/core/hle/service/audio/audio_out.h')
-rw-r--r-- | src/core/hle/service/audio/audio_out.h | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/core/hle/service/audio/audio_out.h b/src/core/hle/service/audio/audio_out.h new file mode 100644 index 000000000..779b213e7 --- /dev/null +++ b/src/core/hle/service/audio/audio_out.h @@ -0,0 +1,58 @@ +// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "audio_core/audio_out_manager.h" +#include "audio_core/out/audio_out_system.h" +#include "core/hle/service/cmif_types.h" +#include "core/hle/service/kernel_helpers.h" +#include "core/hle/service/service.h" + +namespace Kernel { +class KReadableEvent; +} + +namespace Service::Audio { + +class IAudioOut : public ServiceFramework<IAudioOut> { +public: + explicit IAudioOut(Core::System& system_, AudioCore::AudioOut::Manager& manager, + size_t session_id, const std::string& device_name, + const AudioCore::AudioOut::AudioOutParameter& in_params, + Kernel::KProcess* handle, u64 applet_resource_user_id); + ~IAudioOut() override; + + std::shared_ptr<AudioCore::AudioOut::Out> GetImpl() { + return impl; + } + + Result GetAudioOutState(Out<u32> out_state); + Result Start(); + Result Stop(); + Result AppendAudioOutBuffer( + InArray<AudioCore::AudioOut::AudioOutBuffer, BufferAttr_HipcMapAlias> audio_out_buffer, + u64 buffer_client_ptr); + Result AppendAudioOutBufferAuto( + InArray<AudioCore::AudioOut::AudioOutBuffer, BufferAttr_HipcAutoSelect> audio_out_buffer, + u64 buffer_client_ptr); + Result RegisterBufferEvent(OutCopyHandle<Kernel::KReadableEvent> out_event); + Result GetReleasedAudioOutBuffers(OutArray<u64, BufferAttr_HipcMapAlias> out_audio_buffer, + Out<u32> out_count); + Result GetReleasedAudioOutBuffersAuto(OutArray<u64, BufferAttr_HipcAutoSelect> out_audio_buffer, + Out<u32> out_count); + Result ContainsAudioOutBuffer(Out<bool> out_contains_buffer, u64 buffer_client_ptr); + Result GetAudioOutBufferCount(Out<u32> out_buffer_count); + Result GetAudioOutPlayedSampleCount(Out<u64> out_played_sample_count); + Result FlushAudioOutBuffers(Out<bool> out_flushed); + Result SetAudioOutVolume(f32 volume); + Result GetAudioOutVolume(Out<f32> out_volume); + +private: + KernelHelpers::ServiceContext service_context; + Kernel::KEvent* event; + Kernel::KProcess* process; + std::shared_ptr<AudioCore::AudioOut::Out> impl; +}; + +} // namespace Service::Audio |