ringbuffer.h 595 B

1234567891011121314151617181920212223242526272829303132333435
  1. #ifndef RINGBUFFER_H
  2. #define RINGBUFFER_H
  3. #include <stdint.h>
  4. #include <stdlib.h>
  5. class CRingBuffer
  6. {
  7. public:
  8. const size_t m_BufferSize;
  9. CRingBuffer();
  10. bool Pop(int16_t *pData, size_t Samples);
  11. bool Push(int16_t *pData, size_t BufLen);
  12. size_t TotalLength();
  13. size_t TotalFree();
  14. size_t CurrentLength();
  15. size_t CurrentFree();
  16. size_t GetReadIndex();
  17. size_t GetWriteIndex();
  18. void SetWriteIndex(size_t WriteIndex);
  19. public:
  20. void Mix(int16_t *pData, size_t Samples);
  21. size_t m_ReadIndex;
  22. size_t m_WriteIndex;
  23. size_t m_Length;
  24. int16_t m_aBuffer[32768];
  25. };
  26. #endif // RINGBUFFER_H