Int32 VcapVencVdecVdis_ipcBitsInit(VcapVencVdecVdis_res resolution, Bool enableFWrite) { VENC_CALLBACK_S callback; Int32 status; VcapVencVdecVdis_resetStatistics(); gVcapVencVdecVdis_ipcBitsCtrl.fObj.enableFWrite = enableFWrite; callback.newDataAvailableCb = VcapVencVdecVdis_ipcBitsInCbFxn; /* Register call back with encoder */ Venc_registerCallback(&callback, (Ptr)&gVcapVencVdecVdis_ipcBitsCtrl); VcapVencVdecVdis_FreeBitBufInit(); if (gVcapVencVdecVdis_ipcBitsCtrl.fObj.enableFWrite == TRUE) { VcapVencVdecVdis_ipcBitsInitFObj(); } gVcapVencVdecVdis_ipcBitsCtrl.thrObj.resolution = resolution; OSA_dmaInit(); status = OSA_dmaOpen(&gVcapVencVdecVdis_ipcBitsCtrl.dmaHndl, OSA_DMA_MODE_NORMAL, 1); VcapVencVdecVdis_ipcBitsInitThrObj(&gVcapVencVdecVdis_ipcBitsCtrl.thrObj); return OSA_SOK; }
static Int32 VcapVencVdecVdis_ipcBitsInitDmaObj() { Int32 status = OSA_SOK; if (gVcapVencVdecVdis_ipcBitsCtrl.dmaObj.useDma) { status = OSA_dmaInit(); OSA_assert(status == OSA_SOK); status = OSA_dmaOpen(&gVcapVencVdecVdis_ipcBitsCtrl.dmaObj.dmaChHdnl, OSA_DMA_MODE_NORMAL, MCFW_IPC_BITS_DMA_MAX_TRANSFERS); OSA_assert(status == OSA_SOK); } if (OSA_SOK != status) { OSA_printf("DEMO_MCFW_IPC_BITS_CTRL:Disabling DMA as channel open failed[%d]", status); gVcapVencVdecVdis_ipcBitsCtrl.dmaObj.useDma = FALSE; } return status; }