收到一位同学的来信,问8168的问题,回答如下

smilestone,你好:
      我想问您一下,下面这段代码有什么作用,个人不知道有什么用?还请您在闲暇的时候看看,谢谢!
static Void *Chains_ipcBitsRecvFxn(Void * prm)
{
    Chains_IpcBitsCtrl *ipcBitsCtrl = (Chains_IpcBitsCtrl *) prm;
    Chains_IpcBitsCtrlThrObj *thrObj = &ipcBitsCtrl->thrObj;
    Chains_IpcBitsCtrlFileObj *fObj =  &ipcBitsCtrl->fObj;
    static Int printStats;
    OSA_printf("CHAINS_IPCBITS:%s:Entered...",__func__); //__func__:预定义标识符,等于函数名
    while (FALSE == thrObj->exitBitsInThread)
    {
        OSA_semWait(&thrObj->bitsInNotifySem,OSA_TIMEOUT_FOREVER);
        Chains_ipcBitsProcessFullBufs(SYSTEM_HOST_LINK_ID_IPC_BITS_IN_0,
                                      thrObj,
                                      fObj);
        if ((printStats % CHAINS_IPCBITS_INFO_PRINT_INTERVAL) == 0)
        {
            OSA_printf("CHAINS_IPCBITS:%s:INFO: periodic print..",__func__);
        }
        printStats++;
    }
    OSA_printf("CHAINS_IPCBITS:%s:Leaving...",__func__);
    return NULL;
}
    
答复:
static Void Chains_ipcBitsProcessFullBufs(UInt32            ipcBitsInLinkId,
                                          Chains_IpcBitsCtrlThrObj *thrObj,
                                          Chains_IpcBitsCtrlFileObj *fObj)
{
    Bitstream_BufList fullBufList;
    Bitstream_Buf *pFullBuf;
    Bitstream_Buf *pEmptyBuf;
    Int i,status;

    IpcBitsInLink_getFullVideoBitStreamBufs(ipcBitsInLinkId,
                                            &fullBufList);
    for (i = 0; i < fullBufList.numBufs; i++)
    {
        status = OSA_queGet(&thrObj->bufQFreeBufs,(Int32 *)(&pEmptyBuf),
                            OSA_TIMEOUT_FOREVER);
        OSA_assert(status == 0);
        pFullBuf = fullBufList.bufs[i];
        Chains_ipcBitsCopyBitBufInfo(pEmptyBuf,pFullBuf);
        Chains_ipcBitsCopyBitBufDataMem2Mem(pEmptyBuf,pFullBuf);
        status = OSA_quePut(&thrObj->bufQFullBufs,
                            (Int32)pEmptyBuf,OSA_TIMEOUT_NONE);
        OSA_assert(status == 0);
    }
    if (fObj->enableFWrite)
    {
        Chains_ipcBitsWriteBitsToFile(fObj->fpWrHdr,
                                      fObj->fpWrData,
                                      &fullBufList,
                                      fObj->maxFileSize,
                                      fObj->fwriteEnableBitMask);

    }
    IpcBitsInLink_putEmptyVideoBitStreamBufs(ipcBitsInLinkId,
                                             &fullBufList);
}

作用是从 IpcBitsInLink 接收bit数据,然后写到文件里面;
 
有用的dm8168帖子:
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值