You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
/* SdlAudio.h
|
|
|
|
*
|
|
|
|
* An SDL2 audio implementation.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <SDL.h>
|
|
|
|
|
|
|
|
#include "Audio/PlipAudio.h"
|
|
|
|
|
|
|
|
namespace PlipSdl {
|
|
|
|
class SdlAudio : public Plip::PlipAudio {
|
|
|
|
public:
|
|
|
|
SdlAudio();
|
|
|
|
~SdlAudio();
|
|
|
|
|
|
|
|
void DequeueAll() override;
|
|
|
|
void Enqueue(std::vector<float> buffer) override;
|
|
|
|
int GetBufferSize() override;
|
|
|
|
uintmax_t GetQueueSize() override;
|
|
|
|
|
|
|
|
static const int SampleLength = 4096;
|
|
|
|
|
|
|
|
private:
|
|
|
|
void ConvertQueue(void *data, int size);
|
|
|
|
void DirectQueue(void *data, int size);
|
|
|
|
|
|
|
|
SDL_AudioCVT m_cvt {};
|
|
|
|
SDL_AudioDeviceID m_device = 0;
|
|
|
|
SDL_AudioSpec m_spec {};
|
|
|
|
void (SdlAudio::*m_playFunc)(void*, int);
|
|
|
|
};
|
|
|
|
}
|