2016-03-25 12:19:34 -04:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "../../tools/PsfPlayer/Source/SoundHandler.h"
|
|
|
|
#include <SLES/OpenSLES.h>
|
2016-03-30 20:36:01 -04:00
|
|
|
#include <SLES/OpenSLES_Android.h>
|
2016-03-25 12:19:34 -04:00
|
|
|
|
|
|
|
class CSH_OpenSL : public CSoundHandler
|
|
|
|
{
|
|
|
|
public:
|
2018-04-30 21:01:23 +01:00
|
|
|
CSH_OpenSL();
|
2016-03-25 12:19:34 -04:00
|
|
|
virtual ~CSH_OpenSL();
|
2018-04-30 21:01:23 +01:00
|
|
|
|
|
|
|
static CSoundHandler* HandlerFactory();
|
|
|
|
|
|
|
|
void Reset() override;
|
|
|
|
void Write(int16*, unsigned int, unsigned int) override;
|
|
|
|
bool HasFreeBuffers() override;
|
|
|
|
void RecycleBuffers() override;
|
|
|
|
|
2016-03-25 12:19:34 -04:00
|
|
|
private:
|
2016-03-31 00:28:23 -04:00
|
|
|
enum
|
|
|
|
{
|
|
|
|
BUFFER_COUNT = 5,
|
|
|
|
};
|
2018-04-30 21:01:23 +01:00
|
|
|
|
|
|
|
void CreateOutputMix();
|
|
|
|
void CreateAudioPlayer();
|
|
|
|
|
|
|
|
static void QueueCallback(SLAndroidSimpleBufferQueueItf, void*);
|
|
|
|
void QueueCallbackImpl();
|
|
|
|
|
|
|
|
SLObjectItf m_engineObject = nullptr;
|
|
|
|
SLEngineItf m_engine = nullptr;
|
|
|
|
|
|
|
|
SLObjectItf m_outputMixObject = nullptr;
|
|
|
|
|
|
|
|
SLObjectItf m_playerObject = nullptr;
|
|
|
|
SLPlayItf m_playerPlay = nullptr;
|
|
|
|
SLAndroidSimpleBufferQueueItf m_playerQueue = nullptr;
|
|
|
|
|
|
|
|
uint32 m_bufferCount = BUFFER_COUNT;
|
2016-03-25 12:19:34 -04:00
|
|
|
};
|