blob: eb9019c7c4f908ebf929c03c788107d2d5be96a3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
// This file is part of the 64k demo project.
// It implements the production audio backend using miniaudio.
// This is the default backend for the final build.
#pragma once
#include "../audio_backend.h"
#include "miniaudio.h"
// Production audio backend using miniaudio library
// Manages real hardware audio device and playback
class MiniaudioBackend : public AudioBackend {
public:
MiniaudioBackend();
~MiniaudioBackend() override;
void init() override;
void start() override;
void shutdown() override;
float get_realtime_peak() override;
// Get the underlying miniaudio device (for internal use)
ma_device* get_device() {
return &device_;
}
private:
ma_device device_;
bool initialized_;
// Real-time peak measured at actual playback time (not pre-buffer)
// Updated in audio_callback when samples are read from ring buffer
static volatile float realtime_peak_;
// Static callback required by miniaudio C API
static void audio_callback(ma_device* pDevice, void* pOutput,
const void* pInput, ma_uint32 frameCount);
};
|