#ifndef OBOE_OUTPUT_MIXER_OPENSLES_H
#define OBOE_OUTPUT_MIXER_OPENSLES_H
#include <atomic>
#include <mutex>
#include <SLES/OpenSLES.h>
#include <SLES/OpenSLES_Android.h>
namespace oboe {
class OutputMixerOpenSL {
public:
static OutputMixerOpenSL &getInstance();
SLresult open();
void close();
SLresult createAudioPlayer(SLObjectItf *objectItf,
SLDataSource *audioSource);
private:
OutputMixerOpenSL()= default;
~OutputMixerOpenSL()= default;
OutputMixerOpenSL(const OutputMixerOpenSL&)= delete;
OutputMixerOpenSL& operator=(const OutputMixerOpenSL&)= delete;
std::mutex mLock;
int32_t mOpenCount = 0;
SLObjectItf mOutputMixObject = nullptr;
};
}
#endif