59 lines
2.2 KiB
C++
Executable File
59 lines
2.2 KiB
C++
Executable File
// 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
|