Browse Source

Z991239-6031 #comment 优化UOS版脸部跟踪功能

80274480 7 months ago
parent
commit
61112b65c3

+ 15 - 0
Module/mod_interactivecontrol/InteractiveControl_msg_g.h

@@ -31,6 +31,7 @@ namespace InteractiveControl {
 #define eMsg_H5BackSyncData 19
 #define eMsg_SalesRecordingFailed 20
 #define eMsg_EnvCameraCapProcess 21
+#define eMsg_FaceTrackingMsg 22
 
 #define eMsgSig_CustomerState 175614460
 #define eMsgSig_Stop -150723185
@@ -54,6 +55,7 @@ namespace InteractiveControl {
 #define eMsgSig_H5BackSyncData -1217690931
 #define eMsgSig_SalesRecordingFailed -1402924427
 #define eMsgSig_EnvCameraCapProcess -1158933893
+#define eMsgSig_FaceTrackingMsg 1447421404
 
 struct CustomerState
 {
@@ -347,5 +349,18 @@ struct EnvCameraCapProcess
 
 ///////////////////////////
 
+struct FaceTrackingMsg
+{
+	CSimpleStringW Trackingmsg;
+
+	void Serialize(SpBuffer &Buf)
+	{
+		auto & buf = Buf & Trackingmsg;
+	}
+
+};
+
+///////////////////////////
+
 } // namespace InteractiveControl
 #endif // __INTERACTIVECONTROL_MSG_G_H

+ 32 - 2
Module/mod_interactivecontrol/mod_interactivecontrol.cpp

@@ -17,6 +17,7 @@ using namespace SIPPhone;
 #include "../mod_SalesRecorder/Event.h"
 #include "../mod_mediacontroller/Event.h"
 #include "../mod_sipphone/Event.h"
+#include "../mod_facetracking/Event.h"
 
 struct CRecvValue
 {
@@ -208,13 +209,22 @@ ErrorCodeEnum CITCtrlEntity::__OnStart(ErrorCodeEnum preOperationError)
 	}
 
 	int i = 0;
-	m_arrListener.Init(6);
+	m_arrListener.Init(15);
 	pFunc->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, LOG_EVT_MOD_ASSISCHAN_STARTED_SUCCESS,NULL,false);
 	pFunc->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, LOG_EVT_MOD_LOCALPLAYER_STARTED_SUCCESS, NULL, false);
 	pFunc->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, LOG_EVT_MOD_SALESRECORDER_STARTED_SUCCESS, NULL, false);
 	pFunc->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, LOG_EVT_MOD_SIPPHONE_STARTED_SUCCESS, NULL, false);
 	pFunc->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, LOG_EVT_MOD_MEDIACONTROLLER_STARTED_SUCCESS, NULL, false);
 	pFunc->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, LOG_EVT_UI_RECORDFAILED, NULL, false);
+	pFunc->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, EVENT_MOD_CUSTOMER_CLOSE, NULL, false);
+	pFunc->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, EVENT_MOD_CUSTOMER_LEAVE, NULL, false);
+	pFunc->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, EVENT_MOD_CUSTOMER_ENTEROPERATE, NULL, false);
+	pFunc->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, EVENT_MOD_CUSTOMER_BACKTOCLOSE, NULL, false);
+	pFunc->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, EVENT_MOD_CUSTOMER_APPEAR, NULL, false);
+	pFunc->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, EVENT_MOD_CUSTOMER_CHANGE, NULL, false);
+	pFunc->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, EVENT_MOD_CUSTOMER_CAPTUREFACE, NULL, false);
+	pFunc->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, EVENT_MOD_CUSTOMER_LOSEFACE, NULL, false);
+	pFunc->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, EVENT_MOD_FACE_BREAKDOWN, NULL, false);
 	
 	return Error_Succeed;
 }
@@ -1086,6 +1096,18 @@ void CITCtrlEntity::OnLog(const CAutoArray<CUUID> &SubIDs, const CUUID nLogID,co
 			m_bSalesRecording = false;
 		}
 		break;
+
+	case  EVENT_MOD_CUSTOMER_CLOSE:
+	case  EVENT_MOD_CUSTOMER_LEAVE:
+	case  EVENT_MOD_CUSTOMER_ENTEROPERATE:
+	case  EVENT_MOD_CUSTOMER_BACKTOCLOSE:
+	case  EVENT_MOD_CUSTOMER_APPEAR:
+	case  EVENT_MOD_CUSTOMER_CHANGE:
+	case  EVENT_MOD_CUSTOMER_CAPTUREFACE:
+	case  EVENT_MOD_CUSTOMER_LOSEFACE:
+	case  EVENT_MOD_FACE_BREAKDOWN:
+		OnFaceTrackingMsg(pszMessage);
+		break;
 	default:
 		break;
 	}
@@ -1593,6 +1615,14 @@ void CITCtrlEntity::OnSalesRecordingFailed(const char* pszFailedMsg)
 }
 
 
+void CITCtrlEntity::OnFaceTrackingMsg(const char* pszFaceTrackingMsg)
+{
+	// 广播给业务系统
+	FaceTrackingMsg evt;
+	evt.Trackingmsg = CSimpleStringA2W(pszFaceTrackingMsg);
+	SpSendBroadcast(GetFunction(), SP_MSG_OF(FaceTrackingMsg), SP_MSG_SIG_OF(FaceTrackingMsg), evt);
+}
+
 bool CITCtrlEntity::IsSupportTransRecordDeviceType()
 {
 	bool bRet = false;
@@ -1923,7 +1953,7 @@ ErrorCodeEnum CITCtrlEntity::StartFacetracking(SpReqAnsContext<UIService_StartFa
 
 	MediaService_TurnOnCamera_Req req;
 	MediaService_TurnOnCamera_Ans ans;
-	req.bPostCapInfo = true;
+	req.bPostCapInfo = false;
 	ErrorCodeEnum rc = (*m_pMediaCtlClient)(EntityResource::getLink().upgradeLink())->TurnOnCamera(req, ans, 10000);
 	if (Error_Succeed != rc) {
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)(CSimpleStringA::Format("turn on camera result is 0x%08x.", rc).GetData());

+ 3 - 0
Module/mod_interactivecontrol/mod_interactivecontrol.h

@@ -280,6 +280,9 @@ private:
 
 	void FreeCounterClient();
 
+	void OnFaceTrackingMsg(const char* pszFaceTrackingMsg);
+
+
 	SP_BEGIN_MSG_DISPATCH_MAP(CITCtrlEntity)
 		SP_BEGIN_ENTITY_MSG("LocalMediaPlay")
 #ifdef RVC_OS_WIN

+ 3 - 3
Module/mod_sipphone/video_render.cpp

@@ -156,7 +156,7 @@ static int rvc_getrender_videoqueue(Clibvideoqueue** render_video_queue, int* re
 			*render_video_queue = new Clibvideoqueue(REC_COMMON_VIDEO_ENV_SHM_SNAPSHOT_QUEUE);
 			*render_width = REC_COMMON_VIDEO_SNAPSHOT_WIDTH;
 			*render_height = REC_COMMON_VIDEO_SNAPSHOT_HEIGHT;
-			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("use sanpshot queue.");
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("use snapshot queue.");
 		}
 #ifdef RVC_OS_WIN
 		*renderflip = RVC_FLIP_HORIZONTAL;
@@ -172,7 +172,7 @@ static int rvc_getrender_videoqueue(Clibvideoqueue** render_video_queue, int* re
 			*render_video_queue = new Clibvideoqueue(REC_COMMON_VIDEO_OPT_SHM_SNAPSHOT_QUEUE);
 			*render_width = REC_COMMON_VIDEO_SNAPSHOT_HEIGHT;
 			*render_height = REC_COMMON_VIDEO_SNAPSHOT_WIDTH;
-			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("use sanpshot queue.");
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("use snapshot queue.");
 		}
 		*renderflip = RVC_FLIP_NONE;
 	}
@@ -563,7 +563,7 @@ int rvc_start_video_render(rvc_video_render_t* prender, eVideoRenderMode eMode,
 			errcode = pthread_create(&prender->remote_render_threadid, NULL, rvc_remote_videorender_func, prender);
 		}
 		else {
-			errcode = pthread_create(&prender->remote_render_threadid, NULL, rvc_videorender_func, prender);
+			errcode = pthread_create(&prender->remote_render_threadid, NULL, rvc_optcam_videorender_func, prender);
 		}
 
 		if (Error_Succeed != errcode) {