VideoDesc.h 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. #pragma once
  2. static inline ErrorCodeEnum ParseVideoViewParam1(const char *param,
  3. int &local_view_x, int &local_view_y, int &local_view_cx, int &local_view_cy,
  4. int &remote_view_x, int &remote_view_y, int &remote_view_cx, int &remote_view_cy)
  5. {
  6. // hwnd1_remote:(-76,-27,174,144),hwnd2_local(-76,-27,174,144)
  7. if (param) {
  8. sscanf(param, "hwnd1_remote:(%d,%d,%d,%d),hwnd2_local(%d,%d,%d,%d)",
  9. &remote_view_x, &remote_view_y, &remote_view_cx, &remote_view_cy,
  10. &local_view_x, &local_view_y, &local_view_cx, &local_view_cy);
  11. return Error_Succeed;
  12. } else {
  13. return Error_Param;
  14. }
  15. }
  16. static inline ErrorCodeEnum ParseVideoViewParam(const char *param,
  17. int &local_view_x, int &local_view_y, int &local_view_cx, int &local_view_cy,
  18. int &remote_view_x, int &remote_view_y, int &remote_view_cx, int &remote_view_cy)
  19. {
  20. // hwnd1_remote:(-76,-27,174,144),hwnd2_local(-76,-27,174,144)
  21. if (param) {
  22. float d_remote_view_x, d_remote_view_y, d_remote_view_cx, d_remote_view_cy;
  23. float d_local_view_x, d_local_view_y, d_local_view_cx, d_local_view_cy;
  24. sscanf(param, "hwnd1_remote:(%f,%f,%f,%f),hwnd2_local(%f,%f,%f,%f)",
  25. &d_remote_view_x, &d_remote_view_y, &d_remote_view_cx, &d_remote_view_cy,
  26. &d_local_view_x, &d_local_view_y, &d_local_view_cx, &d_local_view_cy);
  27. local_view_x = (int)d_local_view_x;
  28. local_view_y = (int)d_local_view_y;
  29. local_view_cx = (int)d_local_view_cx;
  30. local_view_cy = (int)d_local_view_cy;
  31. remote_view_x = (int)d_remote_view_x;
  32. remote_view_y = (int)d_remote_view_y;
  33. remote_view_cx = (int)d_remote_view_cx;
  34. remote_view_cy = (int)d_remote_view_cy;
  35. return Error_Succeed;
  36. } else {
  37. return Error_Param;
  38. }
  39. }
  40. static inline CSimpleStringA BuildVideoViewParam(int local_view_x, int local_view_y, int local_view_cx, int local_view_cy,
  41. int remote_view_x, int remote_view_y, int remote_view_cx, int remote_view_cy)
  42. {
  43. return CSimpleStringA::Format("hwnd1_remote:(%d,%d,%d,%d),hwnd2_local(%d,%d,%d,%d)",
  44. remote_view_x, remote_view_y, remote_view_cx, remote_view_cy,
  45. local_view_x, local_view_y, local_view_cx, local_view_cy);
  46. }
  47. static inline CSimpleStringA BuildVideoDesc(const char *remote_ip, int remote_video_rtp, int remote_video_width, int remote_video_height, int remote_video_fps, int local_view_x, int local_view_y, int local_view_cx, int local_view_cy, int remote_view_x, int remote_view_y, int remote_view_cx, int remote_view_cy)
  48. {
  49. char param[512] = {0};
  50. _snprintf(param, 512,
  51. "remote_ip:%s\r\n"
  52. "remote_video_rtp:%d\r\n"
  53. "remote_video_width:%d\r\n"
  54. "remote_video_height:%d\r\n"
  55. "remote_video_fps:%d\r\n"
  56. "local_view_x:%d\r\n"
  57. "local_view_y:%d\r\n"
  58. "local_view_cx:%d\r\n"
  59. "local_view_cy:%d\r\n"
  60. "remote_view_x:%d\r\n"
  61. "remote_view_y:%d\r\n"
  62. "remote_view_cx:%d\r\n"
  63. "remote_view_cy:%d\r\n\r\n",
  64. remote_ip, remote_video_rtp, remote_video_width, remote_video_height, remote_video_fps,
  65. local_view_x, local_view_y, local_view_cx, local_view_cy, remote_view_x, remote_view_y, remote_view_cx, remote_view_cy);
  66. return CSimpleStringA(param);
  67. }
  68. static inline ErrorCodeEnum ParseVideoDesc(const char *param, CSimpleStringA &remote_ip, int &remote_video_rtp, int &remote_video_width, int &remote_video_height, int &remote_video_fps, int &local_view_x, int &local_view_y, int &local_view_cx, int &local_view_cy, int &remote_view_x, int &remote_view_y, int &remote_view_cx, int &remote_view_cy)
  69. {
  70. if (param) {
  71. char tmp[128] = {0};
  72. sscanf(param,
  73. "remote_ip:%s\r\n"
  74. "remote_video_rtp:%d\r\n"
  75. "remote_video_width:%d\r\n"
  76. "remote_video_height:%d\r\n"
  77. "remote_video_fps:%d\r\n"
  78. "local_view_x:%d\r\n"
  79. "local_view_y:%d\r\n"
  80. "local_view_cx:%d\r\n"
  81. "local_view_cy:%d\r\n"
  82. "remote_view_x:%d\r\n"
  83. "remote_view_y:%d\r\n"
  84. "remote_view_cx:%d\r\n"
  85. "remote_view_cy:%d\r\n\r\n",
  86. tmp, &remote_video_rtp, &remote_video_width, &remote_video_height, &remote_video_fps,
  87. &local_view_x, &local_view_y, &local_view_cx, &local_view_cy,
  88. &remote_view_x, &remote_view_y, &remote_view_cx, &remote_view_cy);
  89. remote_ip = tmp;
  90. return Error_Succeed;
  91. } else {
  92. return Error_Param;
  93. }
  94. }
  95. static inline CSimpleStringA BuildVideoRenderDesc(int local_view_x, int local_view_y, int local_view_cx, int local_view_cy)
  96. {
  97. char param[512] = { 0 };
  98. _snprintf(param, 512,
  99. "local_view_x:%d\r\n"
  100. "local_view_y:%d\r\n"
  101. "local_view_cx:%d\r\n"
  102. "local_view_cy:%d\r\n"
  103. "remote_view_x:0\r\n"
  104. "remote_view_y:0\r\n"
  105. "remote_view_cx:0\r\n"
  106. "remote_view_cy:0\r\n\r\n",
  107. local_view_x, local_view_y, local_view_cx, local_view_cy);
  108. return CSimpleStringA(param);
  109. }
  110. static inline CSimpleStringA BuildDoubleVideoRenderDesc(int local_view_x, int local_view_y, int local_view_cx, int local_view_cy, int remote_view_x, int remote_view_y, int remote_view_cx, int remote_view_cy)
  111. {
  112. char param[512] = { 0 };
  113. _snprintf(param, 512,
  114. "local_view_x:%d\r\n"
  115. "local_view_y:%d\r\n"
  116. "local_view_cx:%d\r\n"
  117. "local_view_cy:%d\r\n"
  118. "remote_view_x:%d\r\n"
  119. "remote_view_y:%d\r\n"
  120. "remote_view_cx:%d\r\n"
  121. "remote_view_cy:%d\r\n",
  122. local_view_x, local_view_y, local_view_cx, local_view_cy,
  123. remote_view_x, remote_view_y, remote_view_cx, remote_view_cy);
  124. return CSimpleStringA(param);
  125. }
  126. static inline CSimpleStringA ConstructVideoRenderParam(CSimpleStringA strMsg, bool bDoubleVideo)
  127. {
  128. int lxPos, lyPos, lwidth, lheight;
  129. CSimpleStringA strVideoParam;
  130. char str[256] = {0};
  131. if (false == bDoubleVideo) {
  132. sscanf(strMsg.GetData(), "%d@%d@%d@%d@%s", &lxPos, &lyPos, &lwidth, &lheight, str);
  133. //DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("local video param : (x=%d,y=%d,width=%d,height=%d).", lxPos, lyPos, lwidth, lheight);
  134. strVideoParam = BuildVideoRenderDesc(lxPos, lyPos, lwidth, lheight);
  135. }
  136. else {
  137. int iPostionArr[4][2] = { 0 };
  138. if (strMsg.GetLength() > 0)
  139. {
  140. CAutoArray<CSimpleStringA> arrstr = strMsg.Split('@');
  141. if (arrstr.GetCount() >= 4)
  142. {
  143. for (int i = 0; i < 4; i++)
  144. {
  145. sscanf(arrstr[i].GetData(), "%d|%d", &iPostionArr[i][0], &iPostionArr[i][1]);
  146. }
  147. }
  148. }
  149. //DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("remote record local video param : (x=%d,y=%d,width=%d,height=%d), remote video param : (x=%d,y=%d,width=%d,height=%d)",
  150. // iPostionArr[0][0], iPostionArr[1][0], iPostionArr[2][0], iPostionArr[3][0], iPostionArr[0][1], iPostionArr[1][1], iPostionArr[2][1], iPostionArr[3][1]);
  151. strVideoParam = BuildDoubleVideoRenderDesc(iPostionArr[0][0], iPostionArr[1][0], iPostionArr[2][0], iPostionArr[3][0], iPostionArr[0][1], iPostionArr[1][1], iPostionArr[2][1], iPostionArr[3][1]);
  152. }
  153. return strVideoParam;
  154. }
  155. static inline ErrorCodeEnum ParseVideoRenderDesc(const char* param, int& local_view_x, int& local_view_y, int& local_view_cx, int& local_view_cy, int& remote_view_x, int& remote_view_y, int& remote_view_cx, int& remote_view_cy)
  156. {
  157. if (param) {
  158. sscanf(param,
  159. "local_view_x:%d\r\n"
  160. "local_view_y:%d\r\n"
  161. "local_view_cx:%d\r\n"
  162. "local_view_cy:%d\r\n"
  163. "remote_view_x:%d\r\n"
  164. "remote_view_y:%d\r\n"
  165. "remote_view_cx:%d\r\n"
  166. "remote_view_cy:%d\r\n",
  167. &local_view_x, &local_view_y, &local_view_cx, &local_view_cy,
  168. &remote_view_x, &remote_view_y, &remote_view_cx, &remote_view_cy);
  169. return Error_Succeed;
  170. }
  171. else {
  172. return Error_Param;
  173. }
  174. }