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