Browse Source

Z991239-4787 #comment 支持摄像头启动流程,支持即插即用

80274480 2 năm trước cách đây
mục cha
commit
6be3a0a298

+ 36 - 2
Module/mod_mediacontroller/mod_mediacontroller.cpp

@@ -766,7 +766,6 @@ void CMediaControllerEntity::OnTimeCameraStatusCheck()
 		else if (opt_n == -1)
 		{
 			m_iOptEmptyTimes = CAMERA_BUG_THRESHOLD;
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("get opt camera picture fail");
 		}
 		else 
 		{
@@ -1148,11 +1147,32 @@ ErrorCodeEnum CMediaControllerEntity::AutoGetVideoDeviceName(capture_config_t* c
 			}
 
 			if (benv && bopt){
-				Error = Error_Succeed;
 				break;
 			}
 		}
 	}
+
+	if (benv || bopt) {
+		Error = Error_Succeed;
+	}
+
+	if (benv) {
+		if (bopt) {
+			m_nCameraErrorCode = Error_Succeed;
+		}
+		else {
+			m_nCameraErrorCode = Error_OptCamera;
+		}
+	}
+	else {
+		if (bopt) {
+			m_nCameraErrorCode = Error_EnvCamera;
+		}
+		else {
+			m_nCameraErrorCode = Error_AllCamera;
+		}
+	}
+
 	return Error;
 }
 
@@ -1701,22 +1721,26 @@ ErrorCodeEnum CMediaControllerEntity::StartCamera()
 void CMediaControllerEntity::StartCameraAndSetSysVar()
 {
 	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("start camera");
+	CheckAutoVideoConfig(&conf);
 	ErrorCodeEnum Error = StartCamera();
 	if (Error == Error_Succeed){
 		SetCameraSysVar(CAMERA_NO_ERROR);
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Camera State to CAMERA_NO_ERROR");
 		m_bStartCamera = TRUE;
+		m_nCameraErrorCode = Error_Succeed;
 	}
 	else{
 		if (Error == Error_EnvCamera){
 			SetCameraSysVar(CAMERA_ENV_ERROR);
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Camera State to CAMERA_ENV_ERROR");
 			m_bStartCamera = TRUE;
+			m_nCameraErrorCode = Error_EnvCamera;
 		}
 		else if (Error == Error_OptCamera){
 			SetCameraSysVar(CAMERA_OPT_ERROR);
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Camera State to CAMERA_OPT_ERROR");
 			m_bStartCamera = TRUE;
+			m_nCameraErrorCode = Error_OptCamera;
 		}
 		else if (Error == Error_AllCamera){
 			SetCameraSysVar(CAMERA_BOTH_ERROR);
@@ -2001,6 +2025,16 @@ ErrorCodeEnum CMediaControllerEntity::ConnectAssistChannel()
 }
 
 
+void CMediaControllerEntity::CheckAutoVideoConfig(capture_config_t* conf)
+{
+	if (conf) {
+		if (0 == conf->strVideoEnv.GetLength() || 0 == conf->strVideoOpt.GetLength()) {
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("AutoGetVideoDeviceName agin.");
+			AutoGetVideoDeviceName(conf);
+		}
+	}
+}
+
 
 SelfChekerClient::SelfChekerClient( CMediaControllerEntity *pEntity ) : SelfCheckerService_ClientBase(pEntity)
 {

+ 2 - 0
Module/mod_mediacontroller/mod_mediacontroller.h

@@ -120,6 +120,8 @@ private:
 	ErrorCodeEnum RvcGetAudioDevice();
 	void OnTimeCameraStatusCheck();
 	ErrorCodeEnum ConnectAssistChannel();
+	void CheckAutoVideoConfig(capture_config_t* conf);
+
 public:
 	bool m_bSendCameraError;
 	int m_iEnvEmptyTimes;