#pragma once static inline ErrorCodeEnum ParseVideoViewParam1(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) { // hwnd1_remote:(-76,-27,174,144),hwnd2_local(-76,-27,174,144) if (param) { sscanf(param, "hwnd1_remote:(%d,%d,%d,%d),hwnd2_local(%d,%d,%d,%d)", &remote_view_x, &remote_view_y, &remote_view_cx, &remote_view_cy, &local_view_x, &local_view_y, &local_view_cx, &local_view_cy); return Error_Succeed; } else { return Error_Param; } } static inline ErrorCodeEnum ParseVideoViewParam(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) { // hwnd1_remote:(-76,-27,174,144),hwnd2_local(-76,-27,174,144) if (param) { float d_remote_view_x, d_remote_view_y, d_remote_view_cx, d_remote_view_cy; float d_local_view_x, d_local_view_y, d_local_view_cx, d_local_view_cy; sscanf(param, "hwnd1_remote:(%f,%f,%f,%f),hwnd2_local(%f,%f,%f,%f)", &d_remote_view_x, &d_remote_view_y, &d_remote_view_cx, &d_remote_view_cy, &d_local_view_x, &d_local_view_y, &d_local_view_cx, &d_local_view_cy); local_view_x = (int)d_local_view_x; local_view_y = (int)d_local_view_y; local_view_cx = (int)d_local_view_cx; local_view_cy = (int)d_local_view_cy; remote_view_x = (int)d_remote_view_x; remote_view_y = (int)d_remote_view_y; remote_view_cx = (int)d_remote_view_cx; remote_view_cy = (int)d_remote_view_cy; return Error_Succeed; } else { return Error_Param; } } static inline CSimpleStringA BuildVideoViewParam(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) { return CSimpleStringA::Format("hwnd1_remote:(%d,%d,%d,%d),hwnd2_local(%d,%d,%d,%d)", remote_view_x, remote_view_y, remote_view_cx, remote_view_cy, local_view_x, local_view_y, local_view_cx, local_view_cy); } 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) { char param[512] = {0}; _snprintf(param, 512, "remote_ip:%s\r\n" "remote_video_rtp:%d\r\n" "remote_video_width:%d\r\n" "remote_video_height:%d\r\n" "remote_video_fps:%d\r\n" "local_view_x:%d\r\n" "local_view_y:%d\r\n" "local_view_cx:%d\r\n" "local_view_cy:%d\r\n" "remote_view_x:%d\r\n" "remote_view_y:%d\r\n" "remote_view_cx:%d\r\n" "remote_view_cy:%d\r\n\r\n", remote_ip, remote_video_rtp, remote_video_width, remote_video_height, remote_video_fps, local_view_x, local_view_y, local_view_cx, local_view_cy, remote_view_x, remote_view_y, remote_view_cx, remote_view_cy); return CSimpleStringA(param); } 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) { if (param) { char tmp[128] = {0}; sscanf(param, "remote_ip:%s\r\n" "remote_video_rtp:%d\r\n" "remote_video_width:%d\r\n" "remote_video_height:%d\r\n" "remote_video_fps:%d\r\n" "local_view_x:%d\r\n" "local_view_y:%d\r\n" "local_view_cx:%d\r\n" "local_view_cy:%d\r\n" "remote_view_x:%d\r\n" "remote_view_y:%d\r\n" "remote_view_cx:%d\r\n" "remote_view_cy:%d\r\n\r\n", tmp, &remote_video_rtp, &remote_video_width, &remote_video_height, &remote_video_fps, &local_view_x, &local_view_y, &local_view_cx, &local_view_cy, &remote_view_x, &remote_view_y, &remote_view_cx, &remote_view_cy); remote_ip = tmp; return Error_Succeed; } else { return Error_Param; } } static inline CSimpleStringA BuildVideoRenderDesc(int local_view_x, int local_view_y, int local_view_cx, int local_view_cy) { char param[512] = { 0 }; _snprintf(param, 512, "local_view_x:%d\r\n" "local_view_y:%d\r\n" "local_view_cx:%d\r\n" "local_view_cy:%d\r\n" "remote_view_x:0\r\n" "remote_view_y:0\r\n" "remote_view_cx:0\r\n" "remote_view_cy:0\r\n\r\n", local_view_x, local_view_y, local_view_cx, local_view_cy); return CSimpleStringA(param); } 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) { char param[512] = { 0 }; _snprintf(param, 512, "local_view_x:%d\r\n" "local_view_y:%d\r\n" "local_view_cx:%d\r\n" "local_view_cy:%d\r\n" "remote_view_x:%d\r\n" "remote_view_y:%d\r\n" "remote_view_cx:%d\r\n" "remote_view_cy:%d\r\n", local_view_x, local_view_y, local_view_cx, local_view_cy, remote_view_x, remote_view_y, remote_view_cx, remote_view_cy); return CSimpleStringA(param); } static inline CSimpleStringA ConstructVideoRenderParam(CSimpleStringA strMsg, bool bDoubleVideo) { int lxPos, lyPos, lwidth, lheight; CSimpleStringA strVideoParam; char str[256] = {0}; if (false == bDoubleVideo) { sscanf(strMsg.GetData(), "%d@%d@%d@%d@%s", &lxPos, &lyPos, &lwidth, &lheight, str); //DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("local video param : (x=%d,y=%d,width=%d,height=%d).", lxPos, lyPos, lwidth, lheight); strVideoParam = BuildVideoRenderDesc(lxPos, lyPos, lwidth, lheight); } else { int iPostionArr[4][2] = { 0 }; if (strMsg.GetLength() > 0) { CAutoArray arrstr = strMsg.Split('@'); if (arrstr.GetCount() >= 4) { for (int i = 0; i < 4; i++) { sscanf(arrstr[i].GetData(), "%d|%d", &iPostionArr[i][0], &iPostionArr[i][1]); } } } //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)", // iPostionArr[0][0], iPostionArr[1][0], iPostionArr[2][0], iPostionArr[3][0], iPostionArr[0][1], iPostionArr[1][1], iPostionArr[2][1], iPostionArr[3][1]); 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]); } return strVideoParam; } 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) { if (param) { sscanf(param, "local_view_x:%d\r\n" "local_view_y:%d\r\n" "local_view_cx:%d\r\n" "local_view_cy:%d\r\n" "remote_view_x:%d\r\n" "remote_view_y:%d\r\n" "remote_view_cx:%d\r\n" "remote_view_cy:%d\r\n", &local_view_x, &local_view_y, &local_view_cx, &local_view_cy, &remote_view_x, &remote_view_y, &remote_view_cx, &remote_view_cy); return Error_Succeed; } else { return Error_Param; } }