ref: 228cdeba1b7e9363e979410cb092bbe62339e0ee
parent: 7c15d68e24721388b8f604016b3a04aacc3da6db
author: Karina <[email protected]>
date: Mon Mar 21 06:48:41 EDT 2016
refine reset function
--- a/codec/encoder/core/inc/wels_preprocess.h
+++ b/codec/encoder/core/inc/wels_preprocess.h
@@ -121,7 +121,7 @@
virtual ~CWelsPreProcess();
public:
- int32_t WelsPreprocessReset (sWelsEncCtx* pEncCtx);
+ int32_t WelsPreprocessReset (sWelsEncCtx* pEncCtx,int32_t iWidth,int32_t iHeight);
int32_t AllocSpatialPictures (sWelsEncCtx* pCtx, SWelsSvcCodingParam* pParam);
void FreeSpatialPictures (sWelsEncCtx* pCtx);
int32_t BuildSpatialPicList (sWelsEncCtx* pEncCtx, const SSourcePicture* kpSrcPic);
--- a/codec/encoder/core/src/wels_preprocess.cpp
+++ b/codec/encoder/core/src/wels_preprocess.cpp
@@ -109,9 +109,18 @@
return 0;
}
-int32_t CWelsPreProcess::WelsPreprocessReset (sWelsEncCtx* pCtx) {
+int32_t CWelsPreProcess::WelsPreprocessReset (sWelsEncCtx* pCtx,int32_t iWidth,int32_t iHeight) {
int32_t iRet = -1;
-
+ SWelsSvcCodingParam* pSvcParam = pCtx->pSvcParam;
+ //init source width and height
+ pSvcParam->SUsedPicRect.iLeft = 0;
+ pSvcParam->SUsedPicRect.iTop = 0;
+ pSvcParam->SUsedPicRect.iWidth = iWidth;
+ pSvcParam->SUsedPicRect.iHeight = iHeight;
+ if ((iWidth < 16) || ((iHeight < 16))) {
+ WelsLog (& (pCtx->sLogCtx), WELS_LOG_ERROR, "Don't support width(%d) or height(%d) which is less than 16 ",iWidth, iHeight);
+ return iRet;
+ }
if (pCtx) {
FreeScaledPic (&m_sScaledPicture, pCtx->pMemAlign);
iRet = InitLastSpatialPictures (pCtx);
@@ -175,44 +184,24 @@
int32_t CWelsPreProcess::BuildSpatialPicList (sWelsEncCtx* pCtx, const SSourcePicture* kpSrcPic) {
SWelsSvcCodingParam* pSvcParam = pCtx->pSvcParam;
int32_t iSpatialNum = 0;
+ int32_t iWidth = ((kpSrcPic->iPicWidth >> 1) << 1);
+ int32_t iHeight = ((kpSrcPic->iPicHeight >> 1) << 1);
if (!m_bInitDone) {
if (WelsPreprocessCreate() != 0)
return -1;
- //init source width and height
- pSvcParam->SUsedPicRect.iLeft = 0;
- pSvcParam->SUsedPicRect.iTop = 0;
- pSvcParam->SUsedPicRect.iWidth = ((kpSrcPic->iPicWidth >> 1) << 1);
- pSvcParam->SUsedPicRect.iHeight = ((kpSrcPic->iPicHeight >> 1) << 1);
- if ((pSvcParam->SUsedPicRect.iWidth < 16) || ((pSvcParam->SUsedPicRect.iHeight < 16))) {
- WelsLog (& (pCtx->sLogCtx), WELS_LOG_ERROR, "Don't support width(%d) or height(%d) which is less than 16 ",
- pSvcParam->SUsedPicRect.iWidth, pSvcParam->SUsedPicRect.iHeight);
+ if (WelsPreprocessReset (pCtx,iWidth,iHeight) != 0)
return -1;
- }
- if (WelsPreprocessReset (pCtx) != 0)
- return -1;
m_iAvaliableRefInSpatialPicList = pSvcParam->iNumRefFrame;
m_bInitDone = true;
} else {
- int32_t iWidth = ((kpSrcPic->iPicWidth >> 1) << 1);
- int32_t iHeight = ((kpSrcPic->iPicHeight >> 1) << 1);
if ((iWidth != pSvcParam->SUsedPicRect.iWidth) || (iHeight != pSvcParam->SUsedPicRect.iHeight)) {
- pSvcParam->SUsedPicRect.iLeft = 0;
- pSvcParam->SUsedPicRect.iTop = 0;
- pSvcParam->SUsedPicRect.iWidth = iWidth;
- pSvcParam->SUsedPicRect.iHeight = iHeight;
- if ((pSvcParam->SUsedPicRect.iWidth < 16) || ((pSvcParam->SUsedPicRect.iHeight < 16))) {
- WelsLog (& (pCtx->sLogCtx), WELS_LOG_ERROR, "Don't support width(%d) or height(%d) which is less than 16 ",
- pSvcParam->SUsedPicRect.iWidth, pSvcParam->SUsedPicRect.iHeight);
+ if (WelsPreprocessReset (pCtx,iWidth,iHeight) != 0)
return -1;
- }
- if (WelsPreprocessReset (pCtx) != 0)
- return -1;
}
-
}
if (m_pInterfaceVp == NULL)