Int32 NullSrcLink_drvProcessFrames(NullSrcLink_Obj * pObj) { System_LinkQueInfo *pChInfo; FVID2_FrameList frameList; UInt32 chId; FVID2_Frame *pFrame; Int32 status; static UInt32 StartTime = 0; pChInfo = &pObj->createArgs.inputInfo; frameList.numFrames = 0; if ((Utils_getCurTimeInMsec() - StartTime) > 5 * 1000) { //NullSrcLink_fillDataPattern(&pObj->outFormat, pObj->outFrames, 1); StartTime = Utils_getCurTimeInMsec(); Vps_printf("NullSrcLink_fillDataPattern ......NullSrcGetEmptyFrameNum:%d\n",s_NullSrcGetEmptyFrameNum); Utils_bufPrintStatus("NullSrcLink",&pObj->bufOutQue); } for (chId = 0; chId < pChInfo->numCh; chId++) { status = Utils_bufGetEmptyFrame(&pObj->bufOutQue, &pFrame, BIOS_NO_WAIT); if (status != FVID2_SOK) continue; s_NullSrcGetEmptyFrameNum++; frameList.frames[frameList.numFrames] = pFrame; frameList.numFrames++; pFrame->channelNum = chId; pFrame->timeStamp = Utils_getCurTimeInMsec(); if (pChInfo->chInfo[chId].scanFormat == FVID2_SF_INTERLACED) { pFrame->fid = pObj->chNextFid[chId]; pObj->chNextFid[chId] ^= 1; } } Utils_bufPutFull(&pObj->bufOutQue, &frameList); System_sendLinkCmd(pObj->createArgs.outQueParams.nextLink, SYSTEM_CMD_NEW_DATA); return FVID2_SOK; }
Int32 DupLink_drvProcessFrames(DupLink_Obj * pObj) { UInt32 frameId, outId; FVID2_Frame *pFrame, *pOrgFrame; System_FrameInfo *pFrameInfo, *pOrgFrameInfo; Int32 status; DupLink_CreateParams *pCreateArgs; pCreateArgs = &pObj->createArgs; System_getLinksFullFrames(pCreateArgs->inQueParams.prevLinkId, pCreateArgs->inQueParams.prevLinkQueId, &pObj->inFrameList); if (pObj->inFrameList.numFrames) { pObj->getFrameCount += pObj->inFrameList.numFrames; for (outId = 0; outId < pCreateArgs->numOutQue; outId++) { pObj->outFrameList[outId].numFrames = 0; } for (frameId = 0; frameId < pObj->inFrameList.numFrames; frameId++) { pOrgFrame = pObj->inFrameList.frames[frameId]; if (pOrgFrame == NULL) continue; pOrgFrameInfo = (System_FrameInfo *) pOrgFrame->appData; UTILS_assert(pOrgFrameInfo != NULL); pOrgFrameInfo->dupCount = pCreateArgs->numOutQue; for (outId = 0; outId < pCreateArgs->numOutQue; outId++) { status = Utils_bufGetEmptyFrame(&pObj->outFrameQue[outId], &pFrame, BIOS_NO_WAIT); UTILS_assert(status == FVID2_SOK); UTILS_assert(pFrame != NULL); pFrameInfo = (System_FrameInfo *) pFrame->appData; UTILS_assert(pFrameInfo != NULL); memcpy(pFrame, pOrgFrame, sizeof(*pOrgFrame)); memcpy(pFrameInfo, pOrgFrameInfo, sizeof(*pOrgFrameInfo)); pFrame->appData = pFrameInfo; pFrameInfo->pDupOrgFrame = pOrgFrame; pObj->outFrameList[outId].frames[pObj->outFrameList[outId]. numFrames] = pFrame; pObj->outFrameList[outId].numFrames++; } } for (outId = 0; outId < pCreateArgs->numOutQue; outId++) { status = Utils_bufPutFull(&pObj->outFrameQue[outId], &pObj->outFrameList[outId]); UTILS_assert(status == FVID2_SOK); if (pCreateArgs->notifyNextLink) { System_sendLinkCmd(pCreateArgs->outQueParams[outId].nextLink, SYSTEM_CMD_NEW_DATA); } } } return FVID2_SOK; }