#ifndef _CAUDIOTRANSMISSION_H_ #define _CAUDIOTRANSMISSION_H_ #include "stdafx.h" #include #include #include "SpBase.h" #include "iaudiotransinterface.h" #include "..\\..\\Other\libaudiotransqueue\libaudiotransqueue.h" #ifndef DEFAULT_VTMASR_SERVER_URL #define DEFAULT_VTMASR_SERVER_URL "http://vtmasr.paas.cmbchina.cn/" #endif // !DEFAULT_VTMASR_SERVER_URL #ifndef DEFAULT_CONNECT_TIMEOUT #define DEFAULT_CONNECT_TIMEOUT 180 #endif // !DEFAULT_CONNECT_TIMEOUT #ifndef DEFAULT_MAX_AUDIO_SEND_SIZE #define DEFAULT_MAX_AUDIO_SEND_SIZE 6400 #endif // !DEFAULT_MAX_AUDIO_SEND_SIZE #ifndef MIN_URL_LEN #define MIN_URL_LEN 5 #endif #ifndef MAX_PATH #define MAX_PATH 260 #endif #ifndef SINGLE_AUDIO_FRAME_SIZE #define SINGLE_AUDIO_FRAME_SIZE 640 #endif #ifndef AUDIO_TRANS_INTERVAL_TIME #define AUDIO_TRANS_INTERVAL_TIME 10 #endif #ifndef MAX_TRANSFAILED_COUNT #define MAX_TRANSFAILED_COUNT 5 #endif // !MAX_TRANSFAILED_COUNT #define LOG_EVT_AUDIOSTREAM_TRANSMISSION_FAILED 0x31600001 //音频流传输失败 enum eAudioFrameFlag { eAudioFrameInit, eAudioFrameFirst, //起始音频帧 eAudioFrameCountinue, //非起始结束音频帧 eAudioFrameLast, //结束音频帧 eAudioFrameComplete }; typedef IAudioTrans* (*cpprestful_create)(); typedef void (*cpprestful_destory)(IAudioTrans* pIAudioTrans); typedef struct asr_server_info_s{ cpprestful_create fCreateObj; cpprestful_destory fDestoryObj; char strMainServerURL[MAX_PATH]; char strBackupServerURL[MAX_PATH]; int iTimeOut; int iMaxAudioSize; }asr_server_info_t; class Caudiotransmission { public: Caudiotransmission(asr_server_info_t* pAsrServerInfo); ~Caudiotransmission(void); int InitAudioTransmission(); int StartAudioTransmission(const char* strAudioQueue, void* pBlob, size_t uLen); int StopAudioTransmission(); int AudioTransmissionThreadFunc(); void HandleAudioTransException(); eAudioFrameFlag TansferAudioBlockFlag(eAudioFrameFlag eFlag); private: char m_AudioQueueName[MAX_PATH]; char m_strMainServerURL[MAX_PATH]; char m_strBackupServerURL[MAX_PATH]; IAudioTrans* m_pIAudioTransObj; // restful transmission object int m_iTimeOut; // 链接超时时间 int m_iMaxAudioSize; // 发送音频包最大大小 cpprestful_create m_fCreateObj; cpprestful_destory m_fDestoryObj; Clibaudiotransqueue* m_salestransaudioqueue; HANDLE m_hEventStop; // CreateEvent HANDLE m_hAudioTransThread; DWORD m_nAudioTransThreadId; }; #endif