summaryrefslogtreecommitdiff
path: root/src/audio/miniaudio_backend.h
blob: d46a0c53c4c0ac0d839af34d5229caf8f66e8cd8 (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
// 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;

  // Get the underlying miniaudio device (for internal use)
  ma_device* get_device() { return &device_; }

 private:
  ma_device device_;
  bool initialized_;

  // Static callback required by miniaudio C API
  static void audio_callback(ma_device* pDevice, void* pOutput,
                             const void* pInput, ma_uint32 frameCount);
};