static Void VcapVencVdecVdis_ipcBitsQueEmptyBitBufs(VcapVencVdecVdis_res resolution, OSA_QueHndl *emptyQue) { VCODEC_BITSBUF_LIST_S emptyBufList; VCODEC_BITSBUF_S *pBuf; VDEC_BUF_REQUEST_S reqInfo; Int i; Int status; UInt32 bitBufSize; bitBufSize = MCFW_IPCBITS_GET_BITBUF_SIZE(resolution.width, resolution.height); if (bitBufSize <=0 ) return; emptyBufList.numBufs = 0; reqInfo.numBufs = VCODEC_BITSBUF_MAX; reqInfo.reqType = VDEC_BUFREQTYPE_BUFSIZE; for (i = 0; i < VCODEC_BITSBUF_MAX; i++) { reqInfo.u[i].minBufSize = bitBufSize; } Vdec_requestBitstreamBuffer(&reqInfo, &emptyBufList, 0); for (i = 0; i < emptyBufList.numBufs; i++) { pBuf = VcapVencVdecVdis_FreeBitBufAlloc(); OSA_assert(pBuf != NULL); *pBuf = emptyBufList.bitsBuf[i]; OSA_assert(pBuf->bufSize >= bitBufSize ); status = OSA_quePut(emptyQue,(Int32)pBuf,OSA_TIMEOUT_NONE); OSA_assert(status == 0); } }
static Void VdecVdis_bitsRdGetEmptyBitBufs(VCODEC_BITSBUF_LIST_S *emptyBufList, UInt32 resId) { VDEC_BUF_REQUEST_S reqInfo; UInt32 i; emptyBufList->numBufs = 0; // require 2 buffers for each channel reqInfo.numBufs = gVdecVdis_config.numChnlInRes[resId] ; reqInfo.reqType = VDEC_BUFREQTYPE_CHID; for (i = 0; i < reqInfo.numBufs ; i++) { reqInfo.u[i].chNum = VdecVdis_getChnlIdFromBufSize(resId); } Vdec_requestBitstreamBuffer(&reqInfo, emptyBufList, 0); }
static Void VdecVdis_bitsRdGetEmptyBitBufs(VCODEC_BITSBUF_LIST_S *emptyBufList, UInt32 resId) { VDEC_BUF_REQUEST_S reqInfo; UInt32 bitBufSize; UInt32 i; emptyBufList->numBufs = 0; // require 2 buffers for each channel reqInfo.numBufs = gVdecVdis_config.numChnlInRes[resId] ; bitBufSize = MCFW_IPCBITS_GET_BITBUF_SIZE( gVdecVdis_config.res[resId].width, gVdecVdis_config.res[resId].height ); for (i = 0; i < reqInfo.numBufs ; i++) { reqInfo.minBufSize[i] = bitBufSize; } Vdec_requestBitstreamBuffer(&reqInfo, emptyBufList, 0); }