AudioDecoder.h 939 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #ifndef AUDIODECODER_H
  2. #define AUDIODECODER_H
  3. #include "alsa/asoundlib.h"
  4. #include "Thread.h"
  5. //媒体参数
  6. struct AudioParam
  7. {
  8. uint rate; //采样率Hz
  9. uint bits; //位数8、16
  10. uint channels; //通道数
  11. };
  12. class AudioDecoder
  13. {
  14. public:
  15. AudioDecoder(const char *device = "default");
  16. virtual ~AudioDecoder();
  17. public:
  18. void setMediaParam(const uint rate, const uint bits, const uint channels);
  19. void release();
  20. int playSound(unsigned char *data, uint len);
  21. void stopPlaySound() {
  22. mStopAudio = true;
  23. }
  24. void resumePlaySound() {
  25. mStopAudio = false;
  26. }
  27. private:
  28. bool Init();
  29. void Uninit();
  30. int xrunRecover(snd_pcm_t *handle, int err);
  31. private:
  32. char *mpDevice;
  33. snd_pcm_t *mpHandle;
  34. AudioParam mAudioParam;
  35. bool mStopAudio;
  36. Semaphore mSemaphore;
  37. };
  38. #endif // AUDIODECODER_H