Int32 SclrLink_putEmptyFrames(Utils_TskHndl * pTsk, UInt16 queId, FVID2_FrameList * pFrameList) { SclrLink_Obj *pObj = (SclrLink_Obj *) pTsk->appData; return Utils_bufPutEmpty(&pObj->outObj.bufOutQue, pFrameList); }
Int32 NullSrcLink_putEmptyFrames(Utils_TskHndl * pTsk, UInt16 queId, FVID2_FrameList * pFrameList) { NullSrcLink_Obj *pObj = (NullSrcLink_Obj *) pTsk->appData; Utils_bufPutEmpty(&pObj->bufOutQue, pFrameList); return FVID2_SOK; }
Int32 DupLink_putEmptyFrames(Utils_TskHndl * pTsk, UInt16 queId, FVID2_FrameList * pFrameList) { DupLink_Obj *pObj = (DupLink_Obj *) pTsk->appData; FVID2_FrameList freeFrameList; UInt32 frameId; FVID2_Frame *pFrame, *pOrgFrame; System_FrameInfo *pFrameInfo, *pOrgFrameInfo; Int32 status; UTILS_assert(queId < DUP_LINK_MAX_OUT_QUE); UTILS_assert(queId < pObj->createArgs.numOutQue); freeFrameList.numFrames = 0; Semaphore_pend(pObj->lock, BIOS_WAIT_FOREVER); for (frameId = 0; frameId < pFrameList->numFrames; frameId++) { pFrame = pFrameList->frames[frameId]; if (pFrame == NULL) continue; pFrameInfo = (System_FrameInfo *) pFrame->appData; UTILS_assert(pFrameInfo != NULL); pOrgFrame = pFrameInfo->pDupOrgFrame; UTILS_assert(pOrgFrame != NULL); pOrgFrameInfo = (System_FrameInfo *) pOrgFrame->appData; UTILS_assert(pOrgFrameInfo != NULL); pOrgFrameInfo->dupCount--; if (pOrgFrameInfo->dupCount == 0) { freeFrameList.frames[freeFrameList.numFrames] = pOrgFrame; freeFrameList.numFrames++; } } pObj->putFrameCount += freeFrameList.numFrames; System_putLinksEmptyFrames(pObj->createArgs.inQueParams.prevLinkId, pObj->createArgs.inQueParams.prevLinkQueId, &freeFrameList); Semaphore_post(pObj->lock); status = Utils_bufPutEmpty(&pObj->outFrameQue[queId], pFrameList); UTILS_assert(status == FVID2_SOK); return FVID2_SOK; }
Int32 SwMsLink_putEmptyFrames(Utils_TskHndl * pTsk, UInt16 queId, FVID2_FrameList * pFrameList) { Int status; SwMsLink_Obj *pObj = (SwMsLink_Obj *) pTsk->appData; if (pObj->createArgs.enableOuputDup) { status = SwMsLink_drvFreeProcessedFrames(pObj, pFrameList); } else { status = Utils_bufPutEmpty(&pObj->bufOutQue, pFrameList); } return (status); }