libultraship
Reimplementations of libultra (N64 SDK) functions for modern hardware
Loading...
Searching...
No Matches
CoreAudioAudioPlayer.h
Go to the documentation of this file.
1#pragma once
2
3#ifdef __APPLE__
4
5#include "AudioPlayer.h"
6#include <AudioToolbox/AudioToolbox.h>
7#include <pthread.h>
8
9namespace Ship {
21 public:
28
32 int Buffered() override;
33
34 protected:
39 bool DoInit() override;
40
44 void DoClose() override;
45
51 void DoPlay(const uint8_t* buf, size_t len) override;
52
53 private:
68 static OSStatus CoreAudioRenderCallback(void* inRefCon, AudioUnitRenderActionFlags* ioActionFlags,
69 const AudioTimeStamp* inTimeStamp, UInt32 inBusNumber,
70 UInt32 inNumberFrames, AudioBufferList* ioData);
71
72 AudioUnit mAudioUnit;
73 int32_t mNumChannels;
74 uint8_t* mRingBuffer;
75 size_t mRingBufferSize;
76 size_t mRingBufferReadPos;
77 size_t mRingBufferWritePos;
78 pthread_mutex_t mMutex;
79 bool mInitialized;
80};
81} // namespace Ship
82#endif
Abstract base class for platform-specific audio output backends.
Definition AudioPlayer.h:32
AudioPlayer implementation backed by Apple's Core Audio framework.
Definition CoreAudioAudioPlayer.h:20
CoreAudioAudioPlayer(AudioSettings settings)
Constructs a CoreAudioAudioPlayer with the given audio settings.
int Buffered() override
Returns the number of audio frames currently queued in the ring buffer.
void DoClose() override
Stops and disposes of the Core Audio output unit and frees the ring buffer.
bool DoInit() override
Opens and configures the Core Audio output unit.
void DoPlay(const uint8_t *buf, size_t len) override
Copies interleaved PCM samples into the ring buffer for playback.
Core namespace for the libultraship engine framework.
Definition gfx_direct3d_common.h:14
Configuration parameters shared by all AudioPlayer backends.
Definition AudioPlayer.h:14