libaudioqueue.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. // 下列 ifdef 块是创建使从 DLL 导出更简单的
  2. // 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 LIBAUDIOQUEUE_EXPORTS
  3. // 符号编译的。在使用此 DLL 的
  4. // 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将
  5. // LIBAUDIOQUEUE_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的
  6. // 符号视为是被导出的。
  7. #ifndef LIBAUDIOQUEUE
  8. #define LIBAUDIOQUEUE
  9. #ifdef LIBAUDIOQUEUE_EXPORTS
  10. #define LIBAUDIOQUEUE_API __declspec(dllexport)
  11. #else
  12. #define LIBAUDIOQUEUE_API __declspec(dllimport)
  13. #endif
  14. using namespace std ;
  15. #define MAX_AUDIOQUEUE_LENS 50 //音频队列最大节点数量
  16. #define MAX_AUDIOQNODE_SIZE 16000 //音频队列单个节点默认最大长度
  17. typedef struct audio_frame
  18. {
  19. char *data;
  20. int samplespersec; //采样率
  21. int framesize; //数据长度
  22. int nchannels; //通道数
  23. int format; /* AUDIO_FORMAT, 1: PCM*/
  24. int bitspersample; //每个采样点多少bit位
  25. int iseriesnumber;
  26. }audio_frame;
  27. class libaudioqueue_impl; //桥接
  28. // 此类是从 libaudioqueue.dll 导出的
  29. class LIBAUDIOQUEUE_API Clibaudioqueue
  30. {
  31. public:
  32. //audioqueuename:用于访问音频共享内存的共享内存文件名。framesize:默认最大长度,一般使用默认值即可
  33. Clibaudioqueue(LPCTSTR audioqueuename,int framesize=MAX_AUDIOQNODE_SIZE);
  34. ~Clibaudioqueue();
  35. // TODO: 在此添加您的方法。
  36. private:
  37. libaudioqueue_impl*m_pImpl;
  38. public:
  39. //插音频到队尾
  40. bool InsertAudio(audio_frame* Audio);
  41. //读队头
  42. bool GetAudio(audio_frame* Audio);
  43. //读队头并删除队头数据
  44. bool GetAudioAndDel(audio_frame* Audio);
  45. //获得音频队列的长度
  46. int GetAudioLens(void);
  47. //获得音频单个节点的大小
  48. int GetFrameSize(void);
  49. //清空队列
  50. void ClearAudioQueue();
  51. //删除队头数据
  52. void DeleteHeadAudio();
  53. };
  54. #endif