瀏覽代碼

Z991239-3624 #comment 优化视频框显示和隐藏功能

80274480 3 年之前
父節點
當前提交
cfefaf0b1b

+ 45 - 0
Module/mod_sipphone/mod_sipphone.cpp

@@ -346,6 +346,7 @@ void CSIPEntity::OnLog(const CAutoArray<CUUID> &SubIDs, const CUUID nLogID,const
 		{
 			Dbg("Receive UI hide online video evt!");
 			m_stVideoParam.nWindowState = 2;
+			HideBothVideo();
 		}
 		break;
 
@@ -355,6 +356,7 @@ void CSIPEntity::OnLog(const CAutoArray<CUUID> &SubIDs, const CUUID nLogID,const
 			if (m_stVideoParam.nWindowState == 2)
 			{
 				m_stVideoParam.nWindowState = 3;
+				ShowBothVideo();
 			}
 		}
 		break;
@@ -419,6 +421,7 @@ void CSIPEntity::OnLog(const CAutoArray<CUUID> &SubIDs, const CUUID nLogID,const
 			if (m_stVideoParam.nWindowState == 4)
 			{
 				m_stVideoParam.nWindowState = 3;
+				ShowLocalVideo();
 			}
 		}
 		break;
@@ -427,6 +430,7 @@ void CSIPEntity::OnLog(const CAutoArray<CUUID> &SubIDs, const CUUID nLogID,const
 		{
 			Dbg("Receive UI hide local video evt!");
 			m_stVideoParam.nWindowState = 4;
+			HideLocalVideo();
 		}
 		break;
 
@@ -1233,6 +1237,47 @@ ErrorCodeEnum CSIPEntity::RvcSetSaveAudioVolume()
 }
 #endif
 
+void CSIPEntity::HideLocalVideo()
+{
+	if (NULL != m_render) {
+		if (NULL != m_render->plocal_render) {
+			m_render->plocal_render->HideVideoWindow();
+		}
+	}
+}
+
+void CSIPEntity::ShowLocalVideo()
+{
+	if (NULL != m_render) {
+		if (NULL != m_render->premote_render && NULL != m_render->plocal_render) {
+			m_render->premote_render->HideVideoWindow();
+			m_render->plocal_render->ShowVideoWindow();
+			m_render->premote_render->ShowVideoWindow();
+		}
+	}
+}
+
+void CSIPEntity::HideBothVideo()
+{
+	if (NULL != m_render) {
+		if (NULL != m_render->premote_render && NULL != m_render->plocal_render) {
+			m_render->plocal_render->HideVideoWindow();
+			m_render->premote_render->HideVideoWindow();
+		}
+	}
+}
+
+
+void CSIPEntity::ShowBothVideo()
+{
+	if (NULL != m_render) {
+		if (NULL != m_render->premote_render && NULL != m_render->plocal_render) {
+			m_render->plocal_render->ShowVideoWindow();
+			m_render->premote_render->ShowVideoWindow();
+		}
+	}
+}
+
 
 ErrorCodeEnum CSIPEntity::GetLocalIP()
 {

+ 4 - 0
Module/mod_sipphone/mod_sipphone.h

@@ -275,6 +275,10 @@ private:
 	DeviceTypeEnum RvcGetDeviceType();
 	ErrorCodeEnum RvcGetAudioDeviceInfo();
 	ErrorCodeEnum RvcSetSaveAudioVolume();
+	void HideLocalVideo();
+	void ShowLocalVideo();
+	void HideBothVideo();
+	void ShowBothVideo();
 
 public:
 	int m_kept_volume_in[2];

+ 1 - 1
Module/mod_sipphone/video_render.h

@@ -49,5 +49,5 @@ typedef struct rvc_video_render_s {
 
 int rvc_start_video_render(rvc_video_render_t* prender, bool bremote, rvc_video_box_move_callback_t* cb);
 int rvc_stop_video_render(rvc_video_render_t* prender);
-int rvc_start_remote_video_render(rvc_video_render_t* prender, void* videoframe);
+int rvc_remote_video_render(rvc_video_render_t* prender, void* videoframe);
 int rvc_stop_remote_video_render(rvc_video_render_t* prender);

+ 2 - 3
Module/mod_sipphone/video_session.cpp

@@ -358,8 +358,7 @@ static void local_put_frame(void *user_data, video_frame *frame)
 				size.height = frame->height;
 				ippiCopy_8u_C3R(frame->data[0], frame->linesize[0], tt.data[0] + offset * 3, tt.linesize[0], size);
 #else
-				for (int i = 0; i < frame->height; i++)
-				{
+				for (int i = 0; i < frame->height; i++){
 					memcpy(dst_data[0] + i*tt.linesize[0] , frame->data[0] + i*frame->width*3, frame->width*3);
 				}
 #endif // RVC_OS_WIN
@@ -391,7 +390,7 @@ static int on_rx_frame(video_frame *frame, void *user_data)
 		if (eStand2sType == session->conf.eDeviceType) {
 			//大机对远端视频进行缩放匹配
 			video_frame* recordframe = NULL;
-			if (0 == translate_image_resolution(&recordframe,/*REC_COMMON_VIDEO_SSM_AGENT_WIDTH*/REC_COMMON_VIDEO_SNAPSHOT_PREVIEW_WIDTH,/*REC_COMMON_VIDEO_SSM_AGENT_HEIGHT*/REC_COMMON_VIDEO_SNAPSHOT_PREVIEW_HEIGHT, frame)) {
+			if (0 == translate_image_resolution(&recordframe, REC_COMMON_VIDEO_SNAPSHOT_PREVIEW_WIDTH, REC_COMMON_VIDEO_SNAPSHOT_PREVIEW_HEIGHT, frame)) {
 				int rc = video_shm_enqueue(session->video_shm_q_remote, recordframe, VIDEOQUEUE_FLAG_VERTICAL_FLIP);
 				if (rc != Error_Succeed) {
 					Dbg("eStand2sType record call mod insert remote video to queue failed.");