2018-01-22 04:03:36 +01:00
|
|
|
// Copyright 2018 yuzu emulator team
|
|
|
|
// Licensed under GPLv2 or any later version
|
|
|
|
// Refer to the license.txt file included.
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "core/hle/service/service.h"
|
|
|
|
|
|
|
|
namespace Kernel {
|
|
|
|
class HLERequestContext;
|
|
|
|
}
|
|
|
|
|
2018-04-20 03:41:44 +02:00
|
|
|
namespace Service::Audio {
|
2018-01-22 04:03:36 +01:00
|
|
|
|
2018-06-24 02:46:29 +02:00
|
|
|
struct AudioRendererParameter {
|
2018-06-23 04:22:33 +02:00
|
|
|
u32_le sample_rate;
|
|
|
|
u32_le sample_count;
|
|
|
|
u32_le unknown_8;
|
|
|
|
u32_le unknown_c;
|
|
|
|
u32_le voice_count;
|
|
|
|
u32_le sink_count;
|
|
|
|
u32_le effect_count;
|
|
|
|
u32_le unknown_1c;
|
|
|
|
u8 unknown_20;
|
|
|
|
INSERT_PADDING_BYTES(3);
|
|
|
|
u32_le splitter_count;
|
|
|
|
u32_le unknown_2c;
|
|
|
|
INSERT_PADDING_WORDS(1);
|
|
|
|
u32_le revision;
|
|
|
|
};
|
2018-06-24 02:46:29 +02:00
|
|
|
static_assert(sizeof(AudioRendererParameter) == 52, "AudioRendererParameter is an invalid size");
|
2018-06-23 04:22:33 +02:00
|
|
|
|
2018-01-22 04:03:36 +01:00
|
|
|
class AudRenU final : public ServiceFramework<AudRenU> {
|
|
|
|
public:
|
|
|
|
explicit AudRenU();
|
|
|
|
~AudRenU() = default;
|
2018-02-07 13:11:17 +01:00
|
|
|
|
|
|
|
private:
|
|
|
|
void OpenAudioRenderer(Kernel::HLERequestContext& ctx);
|
|
|
|
void GetAudioRendererWorkBufferSize(Kernel::HLERequestContext& ctx);
|
2018-03-25 09:21:27 +02:00
|
|
|
void GetAudioDevice(Kernel::HLERequestContext& ctx);
|
2018-05-26 04:30:02 +02:00
|
|
|
|
|
|
|
enum class AudioFeatures : u32 {
|
|
|
|
Splitter,
|
|
|
|
};
|
|
|
|
|
|
|
|
bool IsFeatureSupported(AudioFeatures feature, u32_le revision) const;
|
2018-01-22 04:03:36 +01:00
|
|
|
};
|
|
|
|
|
2018-04-20 03:41:44 +02:00
|
|
|
} // namespace Service::Audio
|