Browse Source

Z991239-5525 #comment 增加摄像头数量错误告警信息

80274480 1 year ago
parent
commit
0a3c3c1ea3

+ 1 - 2
Module/mod_mediacontroller/Event.h

@@ -56,7 +56,7 @@
 
 #define LOG_EVT_MEDIACONTROLLER_CAMERA_INFOS				0x20880067  //摄像头信息
 #define LOG_EVT_MEDIACONTROLLER_CAMERA_COUNT				0x20880068  //摄像头数量
-#define ERROR_MOD_MEDIACONTROLLER_NOCAMERA					0x20880069  //无摄像头
+#define ERROR_MOD_MEDIACONTROLLER_CAMERA_NUM				0x20880069  //摄像头数量错误
 #define LOG_EVT_MEDIACONTROLLER_GETCAMERA_INFOS				0x20880070  //识别到的摄像头信息
 #define LOG_EVT_MEDIACONTROLLER_AUTO_MODIFY_ENV				0x20880071  //自动调整后的Env摄像头名称
 #define LOG_EVT_MEDIACONTROLLER_AUTO_MODIFY_OPT				0x20880072  //自动调整后的Opt摄像头名称
@@ -70,7 +70,6 @@
 #define LOG_EVT_MEDIACONTROLLER_CAMOPEN_FAILED_INFO			0x20880079  //摄像头失败原因
 
 
-
 #define LOG_EVT_MEDIACONTROLLER_CAMERA_STARTED				0x20890001	//摄像头已开启
 #define LOG_EVT_MEDIACONTROLLER_CAMERA_STOPPED				0x20890002  //摄像头已关闭
 

+ 21 - 27
Module/mod_mediacontroller/capture.cpp

@@ -1929,8 +1929,10 @@ namespace MediaController {
 		
 	}
 
-	int capture_lib_init()
+	int capture_lib_init(int *ivideonum)
 	{
+		int icamnum = 0;
+		CSimpleStringA strCamInfoJson("");
 #ifdef RVC_OS_WIN
 		HRESULT hr = CoInitialize(NULL);
 		int rc;
@@ -1965,10 +1967,8 @@ namespace MediaController {
 		}
 
 		{
-			int i, n;
-			n = videocap_get_device_count();
-			CSimpleStringA strJson;
-			for (i = 0; i < n; ++i) {
+			icamnum = videocap_get_device_count();
+			for (int i = 0; i < icamnum; ++i) {
 				WCHAR tmp[256] = {0};
 				char t[256] = {0};
 				WCHAR tmp1[256] ={0};
@@ -1985,19 +1985,7 @@ namespace MediaController {
 					Bin2Str(x, sizeof(x), t1, sizeof(t1));
 				}
 				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%d = %s;%s", i, t, t1);
-				strJson += CSimpleStringA::Format("\"%d\":\"%s;%s\",", i, t, t1);
-			}
-
-			if (n > 0){
-				LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_CAMERA_COUNT, CSimpleStringA::Format("camera number is %d.", n).GetData());
-
-				if (strJson.GetLength() > 0){
-					strJson[strJson.GetLength( )-1] = '\0';
-				}
-				LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_GETCAMERA_INFOS, CSimpleStringA::Format("[{%s}]", strJson.GetData()).GetData());
-			} 
-			else{
-				LogWarn(Severity_Middle, Error_Debug, ERROR_MOD_MEDIACONTROLLER_NOCAMERA, "can not find camera.");
+				strCamInfoJson += CSimpleStringA::Format("\"%d\":\"%s;%s\",", i, t, t1);
 			}
 		}
 
@@ -2022,27 +2010,33 @@ namespace MediaController {
 #else
 		{
 			int inumber = 0;
-			CSimpleStringA strJson("");
-			int icount = rvc_videocap_get_device_count();
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("camera count is %d.", icount);
-			for (int i = 0; i < 64 && inumber < icount; ++i) {
+			icamnum = rvc_videocap_get_device_count();
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("camera count is %d.", icamnum);
+			for (int i = 0; i < 64 && inumber < icamnum; ++i) {
 				char strcamera[2 * MAX_PATH] = { 0 };
 				char strpath[MAX_PATH] = { 0 };
 
 				if (0 == rvc_videocap_get_device_fullpathname(i, strcamera, 2 * MAX_PATH)){
 					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%d = %s", inumber, strcamera);
-					strJson += CSimpleStringA::Format("\"%d\":\"%s\",", inumber, strcamera);
+					strCamInfoJson += CSimpleStringA::Format("\"%d\":\"%s\",", inumber, strcamera);
 					inumber++;
 				}
 			}
+		}
 
-			if (strJson.GetLength() > 0) {
-				strJson[strJson.GetLength() - 1] = '\0';
+#endif // RVC_OS_WIN
+
+		if (icamnum > 0) {
+			LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_CAMERA_COUNT, CSimpleStringA::Format("camera number is %d.", icamnum).GetData());
+
+			if (strCamInfoJson.GetLength() > 0) {
+				strCamInfoJson[strCamInfoJson.GetLength() - 1] = '\0';
 			}
-			LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_GETCAMERA_INFOS, CSimpleStringA::Format("[{%s}]", strJson.GetData()).GetData());
+			LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_GETCAMERA_INFOS, CSimpleStringA::Format("[{%s}]", strCamInfoJson.GetData()).GetData());
 		}
 
-#endif // RVC_OS_WIN
+		*ivideonum = icamnum;
+
 		return Error_Succeed;
 	}
 

+ 1 - 1
Module/mod_mediacontroller/capture.h

@@ -156,7 +156,7 @@ namespace MediaController {
 	ErrorCodeEnum start_audio_capture(audio_capture_t *paudio);
 	ErrorCodeEnum capture_start(capture_t *cap,int nCamera);
 	void capture_stop(capture_t *cap);
-	int capture_lib_init();
+	int capture_lib_init(int* ivideonum);
 
 	int capture_detect_camera_bug(capture_t *cap, int *env_n, int *opt_n,bool IsPad);
 	int capture_get_last_frametime(capture_t *cap, unsigned int* env_n, unsigned int* opt_n);

+ 26 - 1
Module/mod_mediacontroller/mod_mediacontroller.cpp

@@ -244,10 +244,12 @@ void CMediaControllerEntity::OnStarted()
 	memset(&conf,0,sizeof(capture_config_t));
 	memset(&m_sales_audio_conf, 0, sizeof(rvc_audio_capture_config_t));
 
-	Error = (ErrorCodeEnum)capture_lib_init();
+	int icamnum = 0;
+	Error = (ErrorCodeEnum)capture_lib_init(&icamnum);
 	if (Error == Error_Succeed)
 	{
 		RvcGetAudioDevice();
+		RvcCheckCameraInfo(icamnum);
 		Error = LoadConfig(&conf);
 		if (Error != Error_Succeed)
 		{
@@ -304,6 +306,29 @@ void CMediaControllerEntity::OnStarted()
 }
 
 
+ErrorCodeEnum CMediaControllerEntity::RvcCheckCameraInfo(int iCamNumber)
+{
+	ErrorCodeEnum Error = Error_Succeed;
+	bool bnumbererror = false;
+
+	if (eStand2sType == m_eDeviceType) {
+		if (3 > iCamNumber) {
+			bnumbererror = true;
+		}
+	}
+	else if (eStand1SPlusType == m_eDeviceType) {
+		if (1 > iCamNumber) {
+			bnumbererror = true;
+		}
+	}
+
+	if (bnumbererror) {
+		LogWarn(Severity_Middle, Error_Debug, ERROR_MOD_MEDIACONTROLLER_CAMERA_NUM, "camera number error.");
+	}
+
+	return Error;
+}
+
 ErrorCodeEnum CMediaControllerEntity::RvcGetAudioDevice()
 {
 	ErrorCodeEnum Error = Error_Param;

+ 1 - 0
Module/mod_mediacontroller/mod_mediacontroller.h

@@ -87,6 +87,7 @@ public:
 	void SendCameraBright();
 	ErrorCodeEnum StartAllCameras();
 	ErrorCodeEnum StopAllCameras();
+	ErrorCodeEnum RvcCheckCameraInfo(int iCamNumber);
 
 	ErrorCodeEnum HandleSalesRecordPCMAudio(bool bRemoteRecord, const char* pszMessage, audio_frame* pFrame = NULL);
 	void HandleRemoteRecord(const char* pszMessage);