ReXGlue SDK
Loading...
Searching...
No Matches
audio_driver.h
Go to the documentation of this file.
1
10
11#pragma once
12
13#include <span>
14
15#include <rex/driver.h>
16#include <rex/memory/host.h>
17#include <rex/result.h>
18#include <rex/types.h>
19#include <rex/utility.h>
20
21namespace rex::apu {
22
24inline constexpr memory::Tag kAPU{4};
25
27inline constexpr u32 kAudioFrameChannels = 6;
28inline constexpr u32 kAudioChannelSamples = 256;
29inline constexpr u32 kAudioSampleRate = 48000;
30inline constexpr u32 kAudioFrameSamples = kAudioFrameChannels * kAudioChannelSamples;
31
37using AudioFill = MoveOnlyFunction<void(std::span<f32> samples, u32 channels)>;
38
40class IAudioDriver : public IDriver {
41 public:
49 [[nodiscard]] virtual Result<u32> OpenDevice(u32 channels, AudioFill fill) = 0;
50
52 virtual void CloseDevice() = 0;
53
54 virtual bool IsDeviceLost() const = 0;
55};
56
57} // namespace rex::apu
Definition driver.h:41
Definition audio_driver.h:40
virtual Result< u32 > OpenDevice(u32 channels, AudioFill fill)=0
virtual void CloseDevice()=0
Definition app.h:41
constexpr memory::Tag kAPU
Definition audio_driver.h:24
constexpr u32 kAudioFrameChannels
Definition audio_driver.h:27
MoveOnlyFunction< void(std::span< f32 > samples, u32 channels)> AudioFill
Definition audio_driver.h:37
Tag
Definition host.h:22
typename detail::MoveOnlyFunctionFor< Signature >::type MoveOnlyFunction
Definition utility.h:254
std::expected< T, Error > Result
Definition result.h:98
Integer types, byte order wrappers and size literals.
Move only function, const propagating pointer and scope guard.