AudioInputOpenSLES.h 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. //
  2. // libtgvoip is free and unencumbered public domain software.
  3. // For more information, see http://unlicense.org or the UNLICENSE file
  4. // you should have received with this source code distribution.
  5. //
  6. #ifndef LIBTGVOIP_AUDIOINPUTOPENSLES_H
  7. #define LIBTGVOIP_AUDIOINPUTOPENSLES_H
  8. #include <SLES/OpenSLES.h>
  9. #include <SLES/OpenSLES_Android.h>
  10. #include "../../audio/AudioInput.h"
  11. namespace tgvoip{ namespace audio{
  12. class AudioInputOpenSLES : public AudioInput{
  13. public:
  14. AudioInputOpenSLES();
  15. virtual ~AudioInputOpenSLES();
  16. virtual void Configure(uint32_t sampleRate, uint32_t bitsPerSample, uint32_t channels);
  17. virtual void Start();
  18. virtual void Stop();
  19. static unsigned int nativeBufferSize;
  20. private:
  21. static void BufferCallback(SLAndroidSimpleBufferQueueItf bq, void *context);
  22. void HandleSLCallback();
  23. SLEngineItf slEngine;
  24. SLObjectItf slRecorderObj;
  25. SLRecordItf slRecorder;
  26. SLAndroidSimpleBufferQueueItf slBufferQueue;
  27. int16_t* buffer;
  28. int16_t* nativeBuffer;
  29. size_t positionInBuffer;
  30. };
  31. }}
  32. #endif //LIBTGVOIP_AUDIOINPUTOPENSLES_H