コード例 #1
0
ファイル: sclrLink_tsk.c プロジェクト: JammyWei/dm8168
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);
}
コード例 #2
0
ファイル: nullSrcLink_tsk.c プロジェクト: Lichanglu/Edukit-MW
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;
}
コード例 #3
0
ファイル: dupLink_tsk.c プロジェクト: sdut10523/dvr_rdk
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;
}
コード例 #4
0
ファイル: swMsLink_tsk.c プロジェクト: JammyWei/dm8168
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);
}