mirror of
https://github.com/RPCSX/rpcsx.git
synced 2025-12-06 07:12:14 +01:00
41 lines
935 B
C++
41 lines
935 B
C++
#pragma once
|
|
|
|
#include "Emu/Audio/AudioBackend.h"
|
|
#include "3rdparty/OpenAL/include/alext.h"
|
|
|
|
class OpenALBackend : public AudioBackend
|
|
{
|
|
private:
|
|
ALint m_format{};
|
|
ALuint m_source{};
|
|
ALuint m_buffers[MAX_AUDIO_BUFFERS]{};
|
|
ALsizei m_num_buffers{};
|
|
|
|
u32 m_next_buffer = 0;
|
|
u32 m_num_unqueued = 0;
|
|
|
|
void unqueue_processed();
|
|
|
|
public:
|
|
OpenALBackend();
|
|
~OpenALBackend() override;
|
|
|
|
const char* GetName() const override { return "OpenAL"; }
|
|
|
|
static const u32 capabilities = PLAY_PAUSE_FLUSH | IS_PLAYING | GET_NUM_ENQUEUED_SAMPLES | SET_FREQUENCY_RATIO;
|
|
u32 GetCapabilities() const override { return capabilities; }
|
|
|
|
void Open(u32 num_buffers) override;
|
|
void Close() override;
|
|
|
|
void Play() override;
|
|
void Pause() override;
|
|
bool IsPlaying() override;
|
|
|
|
bool AddData(const void* src, u32 num_samples) override;
|
|
void Flush() override;
|
|
|
|
u64 GetNumEnqueuedSamples() override;
|
|
f32 SetFrequencyRatio(f32 new_ratio) override;
|
|
};
|