diff options
author | liamwhite <liamwhite@users.noreply.github.com> | 2024-02-23 17:34:21 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-23 17:34:21 +0100 |
commit | 215e887be088ed572da999e9ec7fd8559198524b (patch) | |
tree | 793415b72d36bb07d0174dfcf731f81235008936 /src/core/hle/service/audio/audio_out.h | |
parent | Merge pull request #13073 from FearlessTobi/fsp-srv-ipc (diff) | |
parent | oboe_sink: handle temporary stream creation failure (diff) | |
download | yuzu-215e887be088ed572da999e9ec7fd8559198524b.tar yuzu-215e887be088ed572da999e9ec7fd8559198524b.tar.gz yuzu-215e887be088ed572da999e9ec7fd8559198524b.tar.bz2 yuzu-215e887be088ed572da999e9ec7fd8559198524b.tar.lz yuzu-215e887be088ed572da999e9ec7fd8559198524b.tar.xz yuzu-215e887be088ed572da999e9ec7fd8559198524b.tar.zst yuzu-215e887be088ed572da999e9ec7fd8559198524b.zip |
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 |