summaryrefslogtreecommitdiffstats
path: root/src/core/hle/service/audio/audio_out.h
diff options
context:
space:
mode:
authorliamwhite <liamwhite@users.noreply.github.com>2024-02-23 17:34:21 +0100
committerGitHub <noreply@github.com>2024-02-23 17:34:21 +0100
commit215e887be088ed572da999e9ec7fd8559198524b (patch)
tree793415b72d36bb07d0174dfcf731f81235008936 /src/core/hle/service/audio/audio_out.h
parentMerge pull request #13073 from FearlessTobi/fsp-srv-ipc (diff)
parentoboe_sink: handle temporary stream creation failure (diff)
downloadyuzu-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.h58
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