caudiotransmission.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. #ifndef _CAUDIOTRANSMISSION_H_
  2. #define _CAUDIOTRANSMISSION_H_
  3. #include "stdafx.h"
  4. #include <string.h>
  5. #include <stdio.h>
  6. #include "SpBase.h"
  7. #include "iaudiotransinterface.h"
  8. #include "..\\..\\Other\libaudiotransqueue\libaudiotransqueue.h"
  9. #ifndef DEFAULT_VTMASR_SERVER_URL
  10. #define DEFAULT_VTMASR_SERVER_URL "http://vtmasr.paas.cmbchina.cn/"
  11. #endif // !DEFAULT_VTMASR_SERVER_URL
  12. #ifndef DEFAULT_CONNECT_TIMEOUT
  13. #define DEFAULT_CONNECT_TIMEOUT 180
  14. #endif // !DEFAULT_CONNECT_TIMEOUT
  15. #ifndef DEFAULT_MAX_AUDIO_SEND_SIZE
  16. #define DEFAULT_MAX_AUDIO_SEND_SIZE 6400
  17. #endif // !DEFAULT_MAX_AUDIO_SEND_SIZE
  18. #ifndef MIN_URL_LEN
  19. #define MIN_URL_LEN 5
  20. #endif
  21. #ifndef MAX_PATH
  22. #define MAX_PATH 260
  23. #endif
  24. #ifndef SINGLE_AUDIO_FRAME_SIZE
  25. #define SINGLE_AUDIO_FRAME_SIZE 640
  26. #endif
  27. #ifndef AUDIO_TRANS_INTERVAL_TIME
  28. #define AUDIO_TRANS_INTERVAL_TIME 10
  29. #endif
  30. #ifndef MAX_TRANSFAILED_COUNT
  31. #define MAX_TRANSFAILED_COUNT 5
  32. #endif // !MAX_TRANSFAILED_COUNT
  33. #define LOG_EVT_AUDIOSTREAM_TRANSMISSION_FAILED 0x31600001 //音频流传输失败
  34. enum eAudioFrameFlag
  35. {
  36. eAudioFrameInit,
  37. eAudioFrameFirst, //起始音频帧
  38. eAudioFrameCountinue, //非起始结束音频帧
  39. eAudioFrameLast, //结束音频帧
  40. eAudioFrameComplete
  41. };
  42. typedef IAudioTrans* (*cpprestful_create)();
  43. typedef void (*cpprestful_destory)(IAudioTrans* pIAudioTrans);
  44. typedef struct asr_server_info_s{
  45. cpprestful_create fCreateObj;
  46. cpprestful_destory fDestoryObj;
  47. char strMainServerURL[MAX_PATH];
  48. char strBackupServerURL[MAX_PATH];
  49. int iTimeOut;
  50. int iMaxAudioSize;
  51. }asr_server_info_t;
  52. class Caudiotransmission
  53. {
  54. public:
  55. Caudiotransmission(asr_server_info_t* pAsrServerInfo);
  56. ~Caudiotransmission(void);
  57. int InitAudioTransmission();
  58. int StartAudioTransmission(const char* strAudioQueue, void* pBlob, size_t uLen);
  59. int StopAudioTransmission();
  60. int AudioTransmissionThreadFunc();
  61. void HandleAudioTransException();
  62. eAudioFrameFlag TansferAudioBlockFlag(eAudioFrameFlag eFlag);
  63. private:
  64. char m_AudioQueueName[MAX_PATH];
  65. char m_strMainServerURL[MAX_PATH];
  66. char m_strBackupServerURL[MAX_PATH];
  67. IAudioTrans* m_pIAudioTransObj; // restful transmission object
  68. int m_iTimeOut; // 链接超时时间
  69. int m_iMaxAudioSize; // 发送音频包最大大小
  70. cpprestful_create m_fCreateObj;
  71. cpprestful_destory m_fDestoryObj;
  72. Clibaudiotransqueue* m_salestransaudioqueue;
  73. HANDLE m_hEventStop; // CreateEvent
  74. HANDLE m_hAudioTransThread;
  75. DWORD m_nAudioTransThreadId;
  76. };
  77. #endif