|
@@ -60,7 +60,7 @@ void CFaceTrackingEntity::OnPreStart(CAutoArray<CSimpleStringA> strArgs,CSmartPo
|
|
|
|
|
|
CSystemStaticInfo stStaticinfo;
|
|
|
spFunction->GetSystemStaticInfo(stStaticinfo);
|
|
|
- if (stricmp(stStaticinfo.strMachineType, "RVC.Stand1SPlus") == 0) {
|
|
|
+ if (stricmp(stStaticinfo.strMachineType.GetData(), "RVC.Stand1SPlus") == 0) {
|
|
|
m_bSingleCamera = true;
|
|
|
}
|
|
|
|
|
@@ -120,6 +120,11 @@ void CFaceTrackingEntity::OnPreStart(CAutoArray<CSimpleStringA> strArgs,CSmartPo
|
|
|
void CFaceTrackingEntity::OnStarted()
|
|
|
{
|
|
|
LogEvent(Severity_Middle, LOG_EVT_MOD_FACETRACKING_STARTED_SUCCESS, "facetracking entity started successfully.");
|
|
|
+
|
|
|
+ if (GetCameraOnStatus()) {
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("camera is alreay on, start face tracking.");
|
|
|
+ StartFaceDetect();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
void CFaceTrackingEntity::OnPreClose(EntityCloseCauseEnum eCloseCause,CSmartPointer<ITransactionContext> pTransactionContext)
|
|
@@ -153,6 +158,25 @@ int CFaceTrackingEntity::TransCameraStateToInt(char cData)
|
|
|
return iRet;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+void CFaceTrackingEntity::StartFaceDetect()
|
|
|
+{
|
|
|
+ CSimpleStringA strValue;
|
|
|
+ GetFunction()->GetSysVar(SYSVAR_CAMERASTATE, strValue);
|
|
|
+ int iState = TransCameraStateToInt(strValue[0]);
|
|
|
+ if (3 != iState) {
|
|
|
+ m_facecapture->SetCameraState(iState);
|
|
|
+ m_facecapture->StartFaceCapture();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ m_facecapture->SetCameraState(3);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!m_bSingleCamera) {
|
|
|
+ GetFunction()->SetTimer(1, this, 1000);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
void CFaceTrackingEntity::OnLog(const CAutoArray<CUUID> &SubIDs, const CUUID nLogID,const LogTypeEnum eLogType, const SeverityLevelEnum eLevel,
|
|
|
const DWORD dwSysError,const DWORD dwUserCode,const DWORD dwEntityInstanceID, const WORD wEntityDevelID,
|
|
|
const CAutoArray<DWORD> &Param, const char *pszEntityName, const char *pszModuleName,const char *pszMessage, const linkContext &pLinkInfo)
|
|
@@ -164,22 +188,7 @@ void CFaceTrackingEntity::OnLog(const CAutoArray<CUUID> &SubIDs, const CUUID nLo
|
|
|
break;
|
|
|
|
|
|
case LOG_EVT_MEDIACONTROLLER_CAMERA_STARTED:
|
|
|
- {
|
|
|
- CSimpleStringA strValue;
|
|
|
- GetFunction()->GetSysVar(SYSVAR_CAMERASTATE, strValue);
|
|
|
- int iState = TransCameraStateToInt(strValue[0]);
|
|
|
- if (3 != iState) {
|
|
|
- m_facecapture->SetCameraState(iState);
|
|
|
- m_facecapture->StartFaceCapture();
|
|
|
- }
|
|
|
- else {
|
|
|
- m_facecapture->SetCameraState(3);
|
|
|
- }
|
|
|
-
|
|
|
- if (!m_bSingleCamera) {
|
|
|
- GetFunction()->SetTimer(1, this, 1000);
|
|
|
- }
|
|
|
- }
|
|
|
+ StartFaceDetect();
|
|
|
break;
|
|
|
|
|
|
case LOG_EVT_MEDIACONTROLLER_CAMERA_STOPPED:
|
|
@@ -408,6 +417,33 @@ void CFaceTrackingEntity::OnSysVarEvent(const char *pszKey, const char *pszValue
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+bool CFaceTrackingEntity::GetCameraOnStatus()
|
|
|
+{
|
|
|
+ bool bRet = false;
|
|
|
+ MediaControlClient* pMediaControlClient = new MediaControlClient(this);
|
|
|
+ ErrorCodeEnum erroCode = pMediaControlClient->Connect();
|
|
|
+ if (Error_Succeed != erroCode) {
|
|
|
+ pMediaControlClient->SafeDelete();
|
|
|
+ pMediaControlClient = NULL;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ MediaService_IsCameraOnStatus_Req req;
|
|
|
+ MediaService_IsCameraOnStatus_Ans ans;
|
|
|
+ if (Error_Succeed == pMediaControlClient->IsCameraOnStatus(req, ans, 5000)) {
|
|
|
+ bRet = ans.biscameraon;
|
|
|
+ }
|
|
|
+ pMediaControlClient->GetFunction()->CloseSession();
|
|
|
+ pMediaControlClient = NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+ return bRet;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+MediaControlClient::MediaControlClient(CFaceTrackingEntity* pEntity) : MediaService_ClientBase(pEntity)
|
|
|
+{
|
|
|
+
|
|
|
+}
|
|
|
|
|
|
SP_BEGIN_ENTITY_MAP()
|
|
|
SP_ENTITY(CFaceTrackingEntity)
|