This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

About the ability to decode in dvrrdk2.8

Hi ,

        I'm using 8168EVM + DVRRDK2.8,and a part of my code as follow.When i changed Time1  to 16 ,the display droped frames.What could i do to decode 1080P60 successfully?

        Thanks!

        Best Regards!

thread1:

#define inFile "/opt/dvr_rdk/ti816x/data/1080P60/1080P60_1.h264"

void FilerdThread_function(void)
{
    FILE *stream;
    stream = fopen(inFile,"rb");
    int RecDataFlag = 0;
    int i = 0;
    while(i < 200)
    {
            fread(RDataVirAddr,sizeof(char),BUF_SIZE[i],stream);
            RecDataFlag = 1;
            if(*vdec_Config.Valid != 0)
            {
                errorCount++;
            }
            vdec_Config.FrameSize = &BUF_SIZE[i];
            vdec_Config.Valid = &RecDataFlag;
            memcpy(vdec_Config.VirtualAddr,RDataVirAddr,BUF_SIZE[i]);
            OSA_waitMsecs(32);      //Time1
            i ++;
    }
    pthread_exit(0);
}

thread2:

static Void *VdecVdis_bitsRdSendFxn(Void * prm)
{
    VCODEC_BITSBUF_LIST_S emptyBufList;
    UInt32 resId;

//    VDEC_BUF_REQUEST_S reqInfo;
    Int printStatsInterval = 0;

    OSA_semWait(&vdec_Config.thrStartSem,OSA_TIMEOUT_FOREVER);

    while (FALSE == vdec_Config.thrExit)
    {
        OSA_waitMsecs(MCFW_IPCBITS_SENDFXN_PERIOD_MS);    //Time2    MCFW_IPCBITS_SENDFXN_PERIOD_MS = 8
        //OSA_waitMsecs(16);
        if(*vdec_Config.Valid)
        {      
            VdecVdis_bitsRdGetEmptyBitBufs(&emptyBufList);

         VdecVdis_bitsRdReadData(&emptyBufList,resId);

         VdecVdis_bitsRdSendFullBitBufs(&emptyBufList);

            *vdec_Config.Valid = 0;
        }
     printStatsInterval++;
    }

    return NULL;
}

static Void VdecVdis_bitsRdGetEmptyBitBufs(VCODEC_BITSBUF_LIST_S *emptyBufList)
{
    VDEC_BUF_REQUEST_S reqInfo;
    UInt32 i;

    emptyBufList->numBufs = 0;

    // require 2 buffers for each channel
    reqInfo.numBufs = 1;
    reqInfo.reqType = VDEC_BUFREQTYPE_CHID;

    for (i = 0; i < reqInfo.numBufs ; i++)
    {
        reqInfo.u[i].chNum = i;
    }

    Vdec_requestBitstreamBuffer(&reqInfo, emptyBufList, 0);
}

static Void VdecVdis_bitsRdReadData(VCODEC_BITSBUF_LIST_S  *emptyBufList,UInt32 resId)
{
    VCODEC_BITSBUF_S *pEmptyBuf;
    UInt32 i;
    for (i = 0; i < emptyBufList->numBufs; i++)
    {
       
        pEmptyBuf = &emptyBufList->bitsBuf[i];
        VdecVdis_bitsRdFillEmptyBuf(pEmptyBuf);
        VdecVdis_setFrameTimeStamp(pEmptyBuf);
        pEmptyBuf->seqId = Demo_displayGetCurSeqId();
    }
}

static void VdecVdis_bitsRdFillEmptyBuf(VCODEC_BITSBUF_S *pEmptyBuf)
{
    //int statHdr, statData;
    int curCh;
    //UInt32 test;
    curCh = pEmptyBuf->chnId;

    pEmptyBuf->filledBufSize = *vdec_Config.FrameSize;
    printf("\r\n pEmptyBuf->filledBufSize = %d cnt2 = %d",pEmptyBuf->filledBufSize,cnt2);
    memcpy(pEmptyBuf->bufVirtAddr, vdec_Config.VirtualAddr, pEmptyBuf->filledBufSize);
    cnt2 ++;
}

static Void VdecVdis_bitsRdSendFullBitBufs( VCODEC_BITSBUF_LIST_S *fullBufList)
{
    if (fullBufList->numBufs)
    {
        Vdec_putBitstreamBuffer(fullBufList);
    }
}