static int32_t CreatePicBuff (PWelsDecoderContext pCtx, PPicBuff* ppPicBuf, const int32_t kiSize, const int32_t kiPicWidth, const int32_t kiPicHeight) { PPicBuff pPicBuf = NULL; int32_t iPicIdx = 0; if (kiSize <= 0 || kiPicWidth <= 0 || kiPicHeight <= 0) { return 1; } pPicBuf = (PPicBuff)WelsMalloc (sizeof (SPicBuff), "PPicBuff"); if (NULL == pPicBuf) { return 1; } pPicBuf->ppPic = (PPicture*)WelsMalloc (kiSize * sizeof (PPicture), "PPicture*"); if (NULL == pPicBuf->ppPic) { return 1; } for (iPicIdx = 0; iPicIdx < kiSize; ++ iPicIdx) { PPicture pPic = AllocPicture (pCtx, kiPicWidth, kiPicHeight); if (NULL == pPic) { return 1; } pPicBuf->ppPic[iPicIdx] = pPic; } // initialize context in queue pPicBuf->iCapacity = kiSize; pPicBuf->iCurrentIdx = 0; *ppPicBuf = pPicBuf; return 0; }
// the return value of this function is not suitable, it need report failure info to upper layer. void CWelsDecoder::InitDecoder (void) { IWelsTrace::WelsVTrace (m_pTrace, IWelsTrace::WELS_LOG_INFO, "CWelsDecoder::init_decoder().."); m_pDecContext = (PWelsDecoderContext)WelsMalloc (sizeof (SWelsDecoderContext), "m_pDecContext"); WelsInitDecoder (m_pDecContext, m_pTrace, IWelsTrace::WelsTrace); IWelsTrace::WelsVTrace (m_pTrace, IWelsTrace::WELS_LOG_INFO, "CWelsDecoder::init_decoder().. left"); }
void* CMemoryAlign::WelsMallocz (const uint32_t kuiSize, const str_t* kpTag) { void* pPointer = WelsMalloc (kuiSize, kpTag); if (NULL == pPointer) { return NULL; } // zero memory memset (pPointer, 0, kuiSize); return pPointer; }
// the return value of this function is not suitable, it need report failure info to upper layer. void CWelsDecoder::InitDecoder (void) { WelsLog (&m_pWelsTrace->m_sLogCtx, WELS_LOG_INFO, "CWelsDecoder::init_decoder().."); m_pDecContext = (PWelsDecoderContext)WelsMalloc (sizeof (SWelsDecoderContext), "m_pDecContext"); WelsInitDecoder (m_pDecContext, &m_pWelsTrace->m_sLogCtx); WelsLog (&m_pWelsTrace->m_sLogCtx, WELS_LOG_INFO, "CWelsDecoder::init_decoder().. left"); }
void* InternalReallocate (void* pPointer, const uint32_t kuiSize, char* pTag) { uint32_t iOldSize = 0; uint8_t* pNew = NULL; if (pPointer != NULL) iOldSize = * ((int32_t*) ((uint8_t*) pPointer - sizeof (void**) - sizeof (int32_t))); else return WelsMalloc (kuiSize, pTag); pNew = (uint8_t*)WelsMalloc (kuiSize, pTag); if (0 == pNew) { if (iOldSize > 0 && kuiSize > 0 && iOldSize >= kuiSize) return (pPointer); return 0; } else if (iOldSize > 0 && kuiSize > 0) memcpy (pNew, pPointer, (iOldSize < kuiSize) ? iOldSize : kuiSize); else return 0; WelsFree (pPointer, pTag); return (pNew); }
/*! * \brief configure decoder parameters */ int32_t DecoderConfigParam (PWelsDecoderContext pCtx, const void_t* kpParam) { if (NULL == pCtx || NULL == kpParam) return 1; pCtx->pParam = (SDecodingParam*)WelsMalloc (sizeof (SDecodingParam), "SDecodingParam"); if (NULL == pCtx->pParam) return 1; memcpy (pCtx->pParam, kpParam, sizeof (SDecodingParam)); pCtx->iOutputColorFormat = pCtx->pParam->iOutputColorFormat; pCtx->bErrorResilienceFlag = pCtx->pParam->uiEcActiveFlag ? true : false; if (VIDEO_BITSTREAM_SVC == pCtx->pParam->sVideoProperty.eVideoBsType || VIDEO_BITSTREAM_AVC == pCtx->pParam->sVideoProperty.eVideoBsType) { pCtx->eVideoType = pCtx->pParam->sVideoProperty.eVideoBsType; } else { pCtx->eVideoType = VIDEO_BITSTREAM_DEFAULT; } WelsLog (pCtx, WELS_LOG_INFO, "eVideoType: %d\n", pCtx->eVideoType); return 0; }
/*! * \brief configure decoder parameters */ int32_t DecoderConfigParam (PWelsDecoderContext pCtx, const SDecodingParam* kpParam) { if (NULL == pCtx || NULL == kpParam) return 1; pCtx->pParam = (SDecodingParam*)WelsMalloc (sizeof (SDecodingParam), "SDecodingParam"); if (NULL == pCtx->pParam) return 1; memcpy (pCtx->pParam, kpParam, sizeof (SDecodingParam)); pCtx->eOutputColorFormat = pCtx->pParam->eOutputColorFormat; pCtx->eErrorConMethod = pCtx->pParam->eEcActiveIdc; if (VIDEO_BITSTREAM_SVC == pCtx->pParam->sVideoProperty.eVideoBsType || VIDEO_BITSTREAM_AVC == pCtx->pParam->sVideoProperty.eVideoBsType) { pCtx->eVideoType = pCtx->pParam->sVideoProperty.eVideoBsType; } else { pCtx->eVideoType = VIDEO_BITSTREAM_DEFAULT; } WelsLog (& (pCtx->sLogCtx), WELS_LOG_INFO, "eVideoType: %d\n", pCtx->eVideoType); return 0; }