Int32 AlgLink_scdAlgProcessFrames(Utils_TskHndl *pTsk, AlgLink_ScdObj * pObj, FVID2_FrameList *pFrameList) { Int32 status = FVID2_SOK; UInt32 frameId; FVID2_Frame *pFrame; AlgLink_ScdChObj *pChObj; Bool skipFrame; if(pObj->processFrameCount==0) { AlgLink_scdAlgResetStatistics(pObj); } for(frameId=0; frameId<pFrameList->numFrames; frameId++) { pFrame = pFrameList->frames[frameId]; if(pFrame==NULL) continue; if(!AlgLink_scdAlgIsValidCh(pObj, pFrame->channelNum)) { continue; } pChObj = &pObj->chObj[pFrame->channelNum]; pChObj->inFrameRecvCount++; AlgLink_scdAlgRtPrmUpdate(pObj, pChObj, pFrame); skipFrame = Utils_doSkipFrame(&pChObj->frameSkipContext); if(skipFrame) { pChObj->inFrameSkipCount++; continue; } if(pChObj->scdMode != ALG_LINK_SCD_DETECTMODE_MONITOR_FULL_FRAME) { /* SCD is disabled for this channel */ pChObj->inFrameSkipCount++; /* reset the alg so that next it starts from initial condition */ pChObj->algReset = TRUE; continue; } if(AlgLink_scdAlgSkipInitialFrames(pObj, pChObj)) continue; AlgLink_scdAlgSubmitFrame(pObj, pChObj, pFrame); } return status; }
Int32 AlgLink_scdAlgProcessFrames(Utils_TskHndl *pTsk, AlgLink_ScdObj * pObj, FVID2_FrameList *pFrameList) { Int32 status = FVID2_SOK; UInt32 frameId; FVID2_Frame *pFrame; AlgLink_ScdChObj *pChObj; Bool skipFrame; if(pObj->processFrameCount==0) { AlgLink_scdAlgResetStatistics(pObj); } for(frameId=0; frameId<pFrameList->numFrames; frameId++) { pFrame = pFrameList->frames[frameId]; if(pFrame==NULL) continue; if(!AlgLink_scdAlgIsValidCh(pObj, pFrame->channelNum)) { continue; } pChObj = &pObj->chObj[pFrame->channelNum]; pChObj->inFrameRecvCount++; skipFrame = Utils_doSkipFrame(&pChObj->frameSkipContext); if(skipFrame) { pChObj->inFrameSkipCount++; continue; } pChObj->inFrameProcessCount++; pObj->processFrameCount++; #if 0 AlgLink_scdAlgRtPrmUpdate(pObj, pChObj, pFrame); #endif if(AlgLink_scdAlgSkipInitialFrames(pObj, pChObj)) continue; status = AlgLink_scdAlgDoTmpFrameInit(pObj, pChObj, pFrame); if(status!=FVID2_SOK) continue; AlgLink_scdAlgDoProcessFrame(pObj, pChObj, pFrame); } return status; }
Int32 AlgLink_scdAlgResetCh(AlgLink_ScdObj * pObj, AlgLink_ScdChCtrl *pPrm) { AlgLink_ScdChObj *pChObj; if(AlgLink_scdAlgIsValidCh(pObj, pPrm->chId)==FALSE) return FVID2_EFAIL; pChObj = &pObj->chObj[pPrm->chId]; pChObj->algReset = TRUE; return FVID2_SOK; }
Int32 AlgLink_scdAlgSetChIgnoreLightsOff(AlgLink_ScdObj * pObj, AlgLink_ScdChParams *pPrm) { AlgLink_ScdChObj *pChObj; if(AlgLink_scdAlgIsValidCh(pObj, pPrm->chId)==FALSE) return FVID2_EFAIL; pChObj = &pObj->chObj[pPrm->chId]; pChObj->algProcessPrm.frmIgnoreLightsOFF = pPrm->frmIgnoreLightsOFF; return FVID2_SOK; }
Int32 AlgLink_scdAlgSetChSensitivity(AlgLink_ScdObj * pObj, AlgLink_ScdChParams *pPrm) { AlgLink_ScdChObj *pChObj; if(AlgLink_scdAlgIsValidCh(pObj, pPrm->chId)==FALSE) return FVID2_EFAIL; pChObj = &pObj->chObj[pPrm->chId]; pChObj->algProcessPrm.frmSensitivity = pPrm->frmSensitivity; if(pChObj->algProcessPrm.frmSensitivity > SCD_SENSITIVITY_VERYHIGH) pChObj->algProcessPrm.frmSensitivity = SCD_SENSITIVITY_VERYHIGH; return FVID2_SOK; }
Int32 AlgLink_scdAlgSetChMode(AlgLink_ScdObj * pObj, AlgLink_ScdChParams *pPrm) { AlgLink_ScdChObj *pChObj; if(AlgLink_scdAlgIsValidCh(pObj, pPrm->chId)==FALSE) return FVID2_EFAIL; pChObj = &pObj->chObj[pPrm->chId]; if(pPrm->mode == ALG_LINK_SCD_DETECTMODE_MONITOR_FULL_FRAME) pChObj->scdMode = ALG_LINK_SCD_DETECTMODE_MONITOR_FULL_FRAME; else pChObj->scdMode = ALG_LINK_SCD_DETECTMODE_DISABLE; return FVID2_SOK; }