2018-01-04 19:03:47 -05:00
|
|
|
#pragma once
|
|
|
|
#include "stdafx.h"
|
|
|
|
#include "../Core/IAudioDevice.h"
|
|
|
|
#include "../Core/SoundMixer.h"
|
|
|
|
#include "libretro.h"
|
|
|
|
|
|
|
|
class LibretroSoundManager : public IAudioDevice
|
|
|
|
{
|
|
|
|
private:
|
2018-06-10 15:11:24 -04:00
|
|
|
retro_audio_sample_batch_t _sendAudioBuffer = nullptr;
|
2018-01-04 19:03:47 -05:00
|
|
|
bool _skipMode = false;
|
2018-07-03 23:32:26 -04:00
|
|
|
shared_ptr<Console> _console;
|
2018-01-04 19:03:47 -05:00
|
|
|
|
|
|
|
public:
|
2018-07-03 23:32:26 -04:00
|
|
|
LibretroSoundManager(shared_ptr<Console> console)
|
2018-01-04 19:03:47 -05:00
|
|
|
{
|
2018-07-03 23:32:26 -04:00
|
|
|
_console = console;
|
|
|
|
_console->GetSoundMixer()->RegisterAudioDevice(this);
|
2018-01-04 19:03:47 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
~LibretroSoundManager()
|
|
|
|
{
|
2018-07-03 23:32:26 -04:00
|
|
|
_console->GetSoundMixer()->RegisterAudioDevice(nullptr);
|
2018-01-04 19:03:47 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
// Inherited via IAudioDevice
|
|
|
|
virtual void PlayBuffer(int16_t *soundBuffer, uint32_t sampleCount, uint32_t sampleRate, bool isStereo) override
|
|
|
|
{
|
2018-06-10 15:11:24 -04:00
|
|
|
if(!_skipMode && _sendAudioBuffer) {
|
|
|
|
_sendAudioBuffer(soundBuffer, sampleCount);
|
2018-01-04 19:03:47 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-06-10 15:11:24 -04:00
|
|
|
void SetSendAudioBuffer(retro_audio_sample_batch_t sendAudioBuffer)
|
2018-01-04 23:09:07 -05:00
|
|
|
{
|
2018-06-10 15:11:24 -04:00
|
|
|
_sendAudioBuffer = sendAudioBuffer;
|
2018-01-04 23:09:07 -05:00
|
|
|
}
|
|
|
|
|
2018-01-04 19:03:47 -05:00
|
|
|
void SetSkipMode(bool skip)
|
|
|
|
{
|
|
|
|
_skipMode = skip;
|
|
|
|
}
|
|
|
|
|
|
|
|
virtual void Stop() override
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
virtual void Pause() override
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
virtual string GetAvailableDevices() override
|
|
|
|
{
|
|
|
|
return string();
|
|
|
|
}
|
|
|
|
|
|
|
|
virtual void SetAudioDevice(string deviceName) override
|
|
|
|
{
|
|
|
|
}
|
2018-06-10 14:51:00 -04:00
|
|
|
|
|
|
|
virtual void ProcessEndOfFrame() override
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
virtual AudioStatistics GetStatistics() override
|
|
|
|
{
|
|
|
|
return AudioStatistics();
|
|
|
|
}
|
2018-01-04 19:03:47 -05:00
|
|
|
};
|