Bladeren bron

Z991239-5945 #comment 完善异常情况下亮度调节功能

80274480 8 maanden geleden
bovenliggende
commit
bb6b542d50

+ 2 - 0
Module/mod_mediacontroller/Event.h

@@ -113,3 +113,5 @@
 
 #define LOG_WARN_JSOCCUPYCAMERAING								0x208A0001	//js层占用摄像头中
 #define LOG_WARN_ALLCAMERA_ERRORS								0x208A0002	//摄像头都故障
+#define LOG_WARN_ENVCAMERA_ERROR								0x208A0003	//上摄像头故障
+#define LOG_WARN_OPTCAMERA_ERROR								0x208A0004	//下摄像头故障

+ 19 - 5
Module/mod_mediacontroller/mod_mediacontroller.cpp

@@ -2219,13 +2219,20 @@ void CMediaControllerEntity::GetCameraBrightness(SpReqAnsContext<MediaService_Ge
 	int ibrightness = 0;
 	if (0 == capture_get_camera_brightness(&ibrightness, m_capture, m_nCameraErrorCode, ctx->Req.icameraid)) {
 		ctx->Ans.result = 0;
+		ctx->Ans.ibrightness = ibrightness;
+		ctx->Answer(Error_Succeed);
 	}
 	else {
 		ctx->Ans.result = -1;
+		if (0 == ctx->Req.icameraid) {
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA280D").setAPI(__FUNCTION__)("上摄像头故障,请联系厂商处理");
+			ctx->Answer(Error_EnvCamera, LOG_WARN_ENVCAMERA_ERROR);
+		}
+		else if (1 == ctx->Req.icameraid) {
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA280E").setAPI(__FUNCTION__)("下摄像头故障,请联系厂商处理");
+			ctx->Answer(Error_OptCamera, LOG_WARN_OPTCAMERA_ERROR);
+		}
 	}
-	ctx->Ans.ibrightness = ibrightness;
-
-	ctx->Answer(Error_Succeed);
 }
 
 void CMediaControllerEntity::SetCameraBrightness(SpReqAnsContext<MediaService_SetCameraBrightness_Req, MediaService_SetCameraBrightness_Ans>::Pointer ctx)
@@ -2233,12 +2240,19 @@ void CMediaControllerEntity::SetCameraBrightness(SpReqAnsContext<MediaService_Se
 	int ibrightness = ctx->Req.ibrightness;
 	if (0 == capture_set_camera_brightness(ibrightness, m_capture, m_nCameraErrorCode, ctx->Req.icameraid)) {
 		ctx->Ans.result = 0;
+		ctx->Answer(Error_Succeed);
 	}
 	else {
 		ctx->Ans.result = -1;
+		if (0 == ctx->Req.icameraid) {
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA280D").setAPI(__FUNCTION__)("上摄像头故障,请联系厂商处理");
+			ctx->Answer(Error_EnvCamera, LOG_WARN_ENVCAMERA_ERROR);
+		}
+		else if (1 == ctx->Req.icameraid) {
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA280E").setAPI(__FUNCTION__)("下摄像头故障,请联系厂商处理");
+			ctx->Answer(Error_OptCamera, LOG_WARN_OPTCAMERA_ERROR);
+		}
 	}
-
-	ctx->Answer(Error_Succeed);
 }
 
 

+ 14 - 4
Module/mod_sipphone/mod_sipphone.cpp

@@ -263,11 +263,12 @@ CSIPEntity::CSIPEntity() : m_pCurrentSession(NULL), m_state(INIT),m_iPickupPhone
 	m_pKeeperOut[0] = m_pKeeperOut[1] = NULL;
 	m_eVideoRenderType = eGDI;
 	m_bAudioMgrInited = false;
-#else
+#endif
+
 	m_ilocalvideo_freshtime = RVC_VIDEO_FRESH_TIME;
 	m_iremotevideo_freshtime = RVC_VIDEO_FRESH_TIME;
 	m_render = NULL;
-#endif
+
 	m_SipErrorCode = Error_Succeed;
 	m_pAudioMgr = NULL;
 	m_pSipphoneChannel = NULL;
@@ -2451,6 +2452,8 @@ int CSIPEntity::StartCameraRender(int icamid, int ivideoview_x, int ivideoview_y
 	memcpy(&m_render->render_param, &render_param, sizeof(rvc_video_render_params_t));
 
 #ifdef RVC_OS_WIN
+	m_render->local_render_stop_event = NULL;
+	m_render->remote_render_stop_event = NULL;
 	m_render->local_render_thread = NULL;
 	m_render->remote_render_thread = NULL;
 #else
@@ -2481,6 +2484,11 @@ int CSIPEntity::StopCameraRender()
 {
 	int iRet = -1;
 
+	if (NULL == m_render) {
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("stop video render for render is null.");
+		return iRet;
+	}
+
 	if (Error_Succeed == rvc_stop_video_render(m_render)) {
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("stop video render success.");
 	}
@@ -2499,8 +2507,10 @@ int CSIPEntity::StopCameraRender()
 	}
 #endif // RVC_OS_WIN
 
-	delete(m_render);
-	m_render = NULL;
+	if (NULL != m_render) {
+		delete(m_render);
+		m_render = NULL;
+	}
 
 	iRet = 0;
 

+ 6 - 3
Module/mod_sipphone/video_render.cpp

@@ -84,7 +84,6 @@ static bool get_local_video_frame(video_frame** frame, int itype, Clibvideoqueue
 		blog = false;
 	}
 
-	//DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s:%d, session->video_shm_q_preview = 0x%08x.", __FUNCTION__, __LINE__, local_video_queue);
 	result = local_video_queue->GetVideo(&frm, VIDEOQUEUE_FLAG_HORIZONTAL_FLIP);
 	if (result){
 		if (1 == itype) {
@@ -114,7 +113,6 @@ static bool get_local_video_frame(video_frame** frame, int itype, Clibvideoqueue
 		tmp_frame_preview = NULL;
 	}
 	
-
 	return result;
 }
 
@@ -306,6 +304,9 @@ static void* rvc_videorender_func(void* arg)
 					video_frame_delete(local_video_frame);
 					local_video_frame = NULL;
 				}
+				else {
+					DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("local_video_frame is null.");
+				}
 			}
 			else {
 				param->plocal_render->HideVideoWindow();
@@ -500,7 +501,9 @@ int rvc_stop_video_render(rvc_video_render_t* prender)
 	}
 
 #ifdef RVC_OS_WIN
-	SetEvent(prender->local_render_stop_event);
+	if (prender->local_render_stop_event) {
+		SetEvent(prender->local_render_stop_event);
+	}
 	rvc_stop_remote_video_render(prender);
 	if (NULL != prender->local_render_thread) {
 		WaitForSingleObject(prender->local_render_thread, INFINITE);