GlobalVariable.h__ 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. #ifndef _GLOBALVARIABLE_H_
  2. #define _GLOBALVARIABLE_H_
  3. #include <cstdint>
  4. #include <string>
  5. #include <vector>
  6. class QString;
  7. /* =========================================================================================
  8. * 枚举
  9. * =========================================================================================*/
  10. /**
  11. * @brief 录音通道枚举
  12. *
  13. */
  14. enum class ERoadID
  15. {
  16. RoadID_None = 0, /* 无通道 */
  17. RoadID_1 = 1, /* 通道1 */
  18. RoadID_2, /* 通道2 */
  19. RoadID_3, /* 通道3 */
  20. RoadID_4, /* 通道4 */
  21. RoadID_5, /* 通道5 */
  22. RoadID_6, /* 通道6 */
  23. RoadID_7, /* 通道7 */
  24. RoadID_8, /* 通道8 */
  25. RoadID_9, /* 通道9 */
  26. RoadID_10, /* 通道10 */
  27. RoadID_11, /* 通道11 */
  28. RoadID_12, /* 通道12 */
  29. RoadID_13, /* 通道13 */
  30. RoadID_14, /* 通道14 */
  31. RoadID_15, /* 通道15 */
  32. RoadID_16, /* 通道16 */
  33. RoadID_17, /* 通道17 */
  34. RoadID_18, /* 通道18 */
  35. RoadID_19, /* 通道19 */
  36. RoadID_20, /* 通道20 */
  37. RoadID_21, /* 通道21 */
  38. RoadID_22, /* 通道22 */
  39. RoadID_23, /* 通道23 */
  40. RoadID_24, /* 通道24 */
  41. RoadID_25, /* 通道25 */
  42. RoadID_26, /* 通道26 */
  43. RoadID_27, /* 通道27 */
  44. RoadID_28, /* 通道28 */
  45. RoadID_29, /* 通道29 */
  46. RoadID_30, /* 通道30 */
  47. RoadID_31, /* 通道31 */
  48. RoadID_32, /* 通道32 */
  49. RoadID_33, /* 通道33 */
  50. RoadID_34, /* 通道34 */
  51. RoadID_35, /* 通道35 */
  52. RoadID_36, /* 通道36 */
  53. RoadID_37, /* 通道37 */
  54. RoadID_38, /* 通道38 */
  55. RoadID_39, /* 通道39 */
  56. RoadID_40, /* 通道40 */
  57. RoadID_41, /* 通道41 */
  58. RoadID_42, /* 通道42 */
  59. RoadID_43, /* 通道43 */
  60. RoadID_44, /* 通道44 */
  61. RoadID_45, /* 通道45 */
  62. RoadID_46, /* 通道46 */
  63. RoadID_47, /* 通道47 */
  64. RoadID_48, /* 通道48 */
  65. RoadID_49, /* 通道49 */
  66. RoadID_50, /* 通道50 */
  67. RoadID_51, /* 通道51 */
  68. RoadID_52, /* 通道52 */
  69. RoadID_53, /* 通道53 */
  70. RoadID_54, /* 通道54 */
  71. RoadID_55, /* 通道55 */
  72. RoadID_56, /* 通道56 */
  73. RoadID_57, /* 通道57 */
  74. RoadID_58, /* 通道58 */
  75. RoadID_59, /* 通道59 */
  76. RoadID_60, /* 通道60 */
  77. RoadID_61, /* 通道61 */
  78. RoadID_62, /* 通道62 */
  79. RoadID_63, /* 通道63 */
  80. RoadID_64, /* 通道64 */
  81. RoadID_MAX = RoadID_64, /* 最大通道数 */
  82. };
  83. /* =========================================================================================
  84. * 线程信息相关枚举和结构体
  85. * =========================================================================================*/
  86. /**
  87. * @brief 线程状态枚举
  88. *
  89. */
  90. enum class EThreadState
  91. {
  92. State_None = 0, /* 无状态 */
  93. State_Inited, /* 已初始化 */
  94. State_Running, /* 运行中 */
  95. State_Stopped, /* 已停止 */
  96. State_Error /* 错误状态 */
  97. };
  98. /**
  99. * @brief 线程类型枚举
  100. *
  101. */
  102. enum class EThreadType
  103. {
  104. Type_None = 0, /* 无类型 */
  105. Type_RecordSrc, /* 录音源线程 */
  106. Type_AssignSrcData, /* 分派数据线程 */
  107. Type_CreateWAV, /* 生成WAV文件线程 */
  108. Type_CalculateDBAndPhase, /* 计算音量和反相线程 */
  109. // Type_CreateNoise, /* 生成噪音数据线程 */
  110. Type_CreateLongWAV, /* 生成长文件线程 */
  111. Type_RtpSend, /* RTP发送线程 */
  112. Type_ConsistencyCheck, /* 一致性检查线程 */
  113. Type_CheckDBAndPhase /* 检查音量和反相线程 */
  114. };
  115. /**
  116. * @brief 录音通道信息
  117. *
  118. */
  119. struct RoadNumberInfo_t
  120. {
  121. ERoadID roadID; /* 录音通道编号 */
  122. std::string strRoadName; /* 录音通道名称 */
  123. int roadNum; /* 录音通道编号,在对比项里的编号 */
  124. RoadNumberInfo_t() = default;
  125. RoadNumberInfo_t(const RoadNumberInfo_t& info)
  126. : roadID(info.roadID), strRoadName(info.strRoadName), roadNum(info.roadNum) {}
  127. RoadNumberInfo_t& operator=(const RoadNumberInfo_t& info)
  128. {
  129. if (this == &info) return *this; // 防止自赋值
  130. roadID = info.roadID;
  131. strRoadName = info.strRoadName;
  132. roadNum = info.roadNum;
  133. return *this;
  134. }
  135. };
  136. class BaseRecordThread; /* 录音线程基类 */
  137. /**
  138. * @brief 录音线程信息结构体
  139. */
  140. struct RecordThreadInfo_t
  141. {
  142. RoadNumberInfo_t RoadInfo; /* 录音通道信息 */
  143. EThreadType threadType; /* 线程类型 */
  144. EThreadState threadState; /* 线程状态 */
  145. // BaseRecordThread* pThread = nullptr; /* 线程对象 */
  146. };
  147. class BaseCalculateThread;
  148. /**
  149. * @brief 计算线程信息结构体
  150. *
  151. */
  152. struct CalculateThreadInfo_t
  153. {
  154. int CompareItemID; /* 对比项ID */
  155. std::string strCompareItemName; /* 对比项名称 */
  156. std::vector<RoadNumberInfo_t> vecRoad; /* 其他对比项录音通道编号列表 */
  157. EThreadType threadType; /* 线程类型 */
  158. EThreadState threadState; /* 线程状态 */
  159. BaseCalculateThread* pThread = nullptr; /* 计算线程对象 */
  160. CalculateThreadInfo_t() = default;
  161. CalculateThreadInfo_t(const CalculateThreadInfo_t& info);
  162. CalculateThreadInfo_t& operator=(const CalculateThreadInfo_t& info);
  163. };
  164. #endif // _GLOBALVARIABLE_H_