Showing the changes to codec/encoder/core/src/encoder_ext.cpp (1 of 12 files). Show all
Unified · Split
| @@ -231,7 +231,7 @@ int32_t ParamValidationExt (sWelsEncCtx*pCtx,SWelsSvcCodingParam* pCodingParam) · 230 unmodified lines | ||
| 231 | 231 | fDlp->sSliceCfg.uiSliceMode = SM_SINGLE_SLICE; |
| 232 | 232 | break; |
| 233 | 233 | } |
| 234 | − if (pCodingParam->bEnableRc) { // multiple slices verify with gom | |
| 234 | + if (pCodingParam->iRCMode != RC_OFF_MODE) { // multiple slices verify with gom | |
| 235 | 235 | //check uiSliceNum |
| 236 | 236 | GomValidCheckSliceNum (iMbWidth, iMbHeight, &fDlp->sSliceCfg.sSliceArgument.uiSliceNum); |
| 237 | 237 | assert (fDlp->sSliceCfg.sSliceArgument.uiSliceNum > 1); |
| @@ -285,7 +285,7 @@ int32_t ParamValidationExt (sWelsEncCtx*pCtx,SWelsSvcCodingParam* pCodingParam) · 47 unmodified lines | ||
| 285 | 285 | fDlp->sSliceCfg.uiSliceMode = SM_SINGLE_SLICE; |
| 286 | 286 | break; |
| 287 | 287 | } |
| 288 | − if (pCodingParam->bEnableRc && fDlp->sSliceCfg.sSliceArgument.uiSliceNum > 1) { | |
| 288 | + if ((pCodingParam->iRCMode!=RC_OFF_MODE) && fDlp->sSliceCfg.sSliceArgument.uiSliceNum > 1) { | |
| 289 | 289 | WelsLog (pCtx, WELS_LOG_ERROR, "ParamValidationExt(), WARNING: GOM based RC do not support SM_RASTER_SLICE!\n"); |
| 290 | 290 | } |
| 291 | 291 | // considering the coding efficient and performance, iCountMbNum constraint by MIN_NUM_MB_PER_SLICE condition of multi-pSlice mode settting |
| @@ -853,7 +853,7 @@ static inline int32_t InitDqLayers (sWelsEncCtx** ppCtx) { · 561 unmodified lines | ||
| 853 | 853 | // Need port pSps/pPps initialization due to spatial scalability changed |
| 854 | 854 | if (!bUseSubsetSps) { |
| 855 | 855 | WelsInitSps (pSps, pDlayerParam, pParam->uiIntraPeriod, pParam->iNumRefFrame, iSpsId, |
| 856 | − pParam->bEnableFrameCroppingFlag, pParam->bEnableRc); | |
| 856 | + pParam->bEnableFrameCroppingFlag, pParam->iRCMode != RC_OFF_MODE); | |
| 857 | 857 | |
| 858 | 858 | if (iDlayerCount > 1) { |
| 859 | 859 | pSps->bConstraintSet0Flag = true; |
| @@ -862,7 +862,7 @@ static inline int32_t InitDqLayers (sWelsEncCtx** ppCtx) { · 2 unmodified lines | ||
| 862 | 862 | } |
| 863 | 863 | } else { |
| 864 | 864 | WelsInitSubsetSps (pSubsetSps, pDlayerParam, pParam->uiIntraPeriod, pParam->iNumRefFrame, iSpsId, |
| 865 | − pParam->bEnableFrameCroppingFlag, pParam->bEnableRc); | |
| 865 | + pParam->bEnableFrameCroppingFlag, pParam->iRCMode!=RC_OFF_MODE); | |
| 866 | 866 | } |
| 867 | 867 | |
| 868 | 868 | // initialize pPps |
| @@ -1674,7 +1674,7 @@ int32_t InitSliceSettings (SWelsSvcCodingParam* pCodingParam, const int32_t kiCp · 805 unmodified lines | ||
| 1674 | 1674 | if (iSliceNum > iMaxSliceCount) |
| 1675 | 1675 | iMaxSliceCount = iSliceNum; |
| 1676 | 1676 | // need perform check due uiSliceNum might change, although has been initialized somewhere outside |
| 1677 | − if (pCodingParam->bEnableRc) { | |
| 1677 | + if (pCodingParam->iRCMode!=RC_OFF_MODE) { | |
| 1678 | 1678 | GomValidCheckSliceMbNum (kiMbWidth, kiMbHeight, pSlcArg); |
| 1679 | 1679 | } else { |
| 1680 | 1680 | CheckFixedSliceNumMultiSliceSetting (kiMbNumInFrame, pSlcArg); |
| @@ -1705,7 +1705,7 @@ int32_t InitSliceSettings (SWelsSvcCodingParam* pCodingParam, const int32_t kiCp · 24 unmodified lines | ||
| 1705 | 1705 | pDlp->sSliceCfg.uiSliceMode = SM_SINGLE_SLICE; |
| 1706 | 1706 | break; |
| 1707 | 1707 | } |
| 1708 | − if (pCodingParam->bEnableRc) { // multiple slices verify with gom | |
| 1708 | + if (pCodingParam->iRCMode != RC_OFF_MODE) { // multiple slices verify with gom | |
| 1709 | 1709 | //check uiSliceNum |
| 1710 | 1710 | GomValidCheckSliceNum (kiMbWidth, kiMbHeight, &pDlp->sSliceCfg.sSliceArgument.uiSliceNum); |
| 1711 | 1711 | assert (pDlp->sSliceCfg.sSliceArgument.uiSliceNum > 1); |
| @@ -1922,7 +1922,7 @@ int32_t WelsInitEncoderExt (sWelsEncCtx** ppCtx, SWelsSvcCodingParam* pCodingPar · 210 unmodified lines | ||
| 1922 | 1922 | if (pCodingParam->iMultipleThreadIdc > 1) |
| 1923 | 1923 | iRet = CreateSliceThreads (pCtx); |
| 1924 | 1924 | |
| 1925 | − WelsRcInitModule (pCtx, pCtx->pSvcParam->bEnableRc ? WELS_RC_GOM : WELS_RC_DISABLE); | |
| 1925 | + WelsRcInitModule (pCtx, pCtx->pSvcParam->iRCMode!=RC_OFF_MODE ? WELS_RC_GOM : WELS_RC_DISABLE); | |
| 1926 | 1926 | |
| 1927 | 1927 | pCtx->pVpp = new CWelsPreProcess (pCtx); |
| 1928 | 1928 | if (pCtx->pVpp == NULL) { |
| @@ -2194,7 +2194,7 @@ void WelsInitCurrentDlayerMltslc (sWelsEncCtx* pCtx, int32_t iPartitionNum) { · 265 unmodified lines | ||
| 2194 | 2194 | uint8_t iCurDid = pCtx->uiDependencyId; |
| 2195 | 2195 | uint32_t uiFrmByte = 0; |
| 2196 | 2196 | |
| 2197 | − if (pCtx->pSvcParam->bEnableRc) { | |
| 2197 | + if (pCtx->pSvcParam->iRCMode != RC_OFF_MODE) { | |
| 2198 | 2198 | //RC case |
| 2199 | 2199 | uiFrmByte = ( |
| 2200 | 2200 | ((uint32_t) (pCtx->pSvcParam->sDependencyLayers[iCurDid].iSpatialBitrate) |
| @@ -3475,7 +3475,6 @@ int32_t WelsEncoderParamAdjust (sWelsEncCtx** ppCtx, SWelsSvcCodingParam* pNewPa · 1274 unmodified lines | ||
| 3475 | 3475 | pOldParam->iLoopFilterBetaOffset = pNewParam->iLoopFilterBetaOffset; // BetaOffset: valid range [-6, 6], default 0 |
| 3476 | 3476 | |
| 3477 | 3477 | /* Rate Control */ |
| 3478 | − pOldParam->bEnableRc = pNewParam->bEnableRc; | |
| 3479 | 3478 | pOldParam->iRCMode = pNewParam->iRCMode; |
| 3480 | 3479 | pOldParam->iTargetBitrate = pNewParam->iTargetBitrate; // overall target bitrate introduced in RC module |
| 3481 | 3480 | pOldParam->iPaddingFlag = pNewParam->iPaddingFlag; |