123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- // 下列 ifdef 块是创建使从 DLL 导出更简单的
- // 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 LIBAUDIOQUEUE_EXPORTS
- // 符号编译的。在使用此 DLL 的
- // 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将
- // LIBAUDIOQUEUE_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的
- // 符号视为是被导出的。
- #pragma once
- #ifdef _WIN32
- #ifdef LIBAUDIOQUEUE_EXPORTS
- #define LIBAUDIOQUEUE_API __declspec(dllexport)
- #else
- #define LIBAUDIOQUEUE_API __declspec(dllimport)
- #endif
- # elif ( defined(__GNUC__) && __GNUC__ >= 4 )
- #define LIBAUDIOQUEUE_API __attribute__((visibility("default")))
- #else // _WIN32
- #define LIBAUDIOQUEUE_API
- #endif // _WIN32
- using namespace std ;
- #define MAX_AUDIOQUEUE_LENS 50 //音频队列最大节点数量
- #define MAX_AUDIOQNODE_SIZE 16000 //音频队列单个节点默认最大长度
- typedef struct audio_frame
- {
- char *data;
- int samplespersec; //采样率
- int framesize; //数据长度
- int nchannels; //通道数
- int format; /* AUDIO_FORMAT, 1: PCM*/
- int bitspersample; //每个采样点多少bit位
- int iseriesnumber;
- }audio_frame;
- class libaudioqueue_impl; //桥接
- // 此类是从 libaudioqueue.dll 导出的
- class LIBAUDIOQUEUE_API Clibaudioqueue
- {
- public:
- //audioqueuename:用于访问音频共享内存的共享内存文件名。framesize:默认最大长度,一般使用默认值即可
- Clibaudioqueue(const char* audioqueuename,int framesize=MAX_AUDIOQNODE_SIZE);
- ~Clibaudioqueue();
- // TODO: 在此添加您的方法。
- private:
- libaudioqueue_impl*m_pImpl;
- public:
- //插音频到队尾
- bool InsertAudio(audio_frame* Audio);
- //读队头
- bool GetAudio(audio_frame* Audio);
- //读队头并删除队头数据
- bool GetAudioAndDel(audio_frame* Audio);
- //获得音频队列的长度
- int GetAudioLens(void);
- //获得音频单个节点的大小
- int GetFrameSize(void);
- //清空队列
- void ClearAudioQueue();
- //删除队头数据
- void DeleteHeadAudio();
- };
|