History

remove RC enable flag, use RC Mode to indicate RC on or off

volvet committed 12 years ago

Commit d98ba611 parent 501c77f12 files · +40 −44Browse files

Showing the changes to codec/encoder/core/src/encoder_ext.cpp (1 of 12 files). Show all

Unified · Split

codec/encoder/core/src/encoder_ext.cpp+8−9
@@ -231,7 +231,7 @@ int32_t ParamValidationExt (sWelsEncCtx*pCtx,SWelsSvcCodingParam* pCodingParam) · 230 unmodified lines
231231 fDlp->sSliceCfg.uiSliceMode = SM_SINGLE_SLICE;
232232 break;
233233 }
234− if (pCodingParam->bEnableRc) { // multiple slices verify with gom
234+ if (pCodingParam->iRCMode != RC_OFF_MODE) { // multiple slices verify with gom
235235 //check uiSliceNum
236236 GomValidCheckSliceNum (iMbWidth, iMbHeight, &fDlp->sSliceCfg.sSliceArgument.uiSliceNum);
237237 assert (fDlp->sSliceCfg.sSliceArgument.uiSliceNum > 1);
@@ -285,7 +285,7 @@ int32_t ParamValidationExt (sWelsEncCtx*pCtx,SWelsSvcCodingParam* pCodingParam) · 47 unmodified lines
285285 fDlp->sSliceCfg.uiSliceMode = SM_SINGLE_SLICE;
286286 break;
287287 }
288− if (pCodingParam->bEnableRc && fDlp->sSliceCfg.sSliceArgument.uiSliceNum > 1) {
288+ if ((pCodingParam->iRCMode!=RC_OFF_MODE) && fDlp->sSliceCfg.sSliceArgument.uiSliceNum > 1) {
289289 WelsLog (pCtx, WELS_LOG_ERROR, "ParamValidationExt(), WARNING: GOM based RC do not support SM_RASTER_SLICE!\n");
290290 }
291291 // 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
853853 // Need port pSps/pPps initialization due to spatial scalability changed
854854 if (!bUseSubsetSps) {
855855 WelsInitSps (pSps, pDlayerParam, pParam->uiIntraPeriod, pParam->iNumRefFrame, iSpsId,
856− pParam->bEnableFrameCroppingFlag, pParam->bEnableRc);
856+ pParam->bEnableFrameCroppingFlag, pParam->iRCMode != RC_OFF_MODE);
857857
858858 if (iDlayerCount > 1) {
859859 pSps->bConstraintSet0Flag = true;
@@ -862,7 +862,7 @@ static inline int32_t InitDqLayers (sWelsEncCtx** ppCtx) { · 2 unmodified lines
862862 }
863863 } else {
864864 WelsInitSubsetSps (pSubsetSps, pDlayerParam, pParam->uiIntraPeriod, pParam->iNumRefFrame, iSpsId,
865− pParam->bEnableFrameCroppingFlag, pParam->bEnableRc);
865+ pParam->bEnableFrameCroppingFlag, pParam->iRCMode!=RC_OFF_MODE);
866866 }
867867
868868 // initialize pPps
@@ -1674,7 +1674,7 @@ int32_t InitSliceSettings (SWelsSvcCodingParam* pCodingParam, const int32_t kiCp · 805 unmodified lines
16741674 if (iSliceNum > iMaxSliceCount)
16751675 iMaxSliceCount = iSliceNum;
16761676 // need perform check due uiSliceNum might change, although has been initialized somewhere outside
1677− if (pCodingParam->bEnableRc) {
1677+ if (pCodingParam->iRCMode!=RC_OFF_MODE) {
16781678 GomValidCheckSliceMbNum (kiMbWidth, kiMbHeight, pSlcArg);
16791679 } else {
16801680 CheckFixedSliceNumMultiSliceSetting (kiMbNumInFrame, pSlcArg);
@@ -1705,7 +1705,7 @@ int32_t InitSliceSettings (SWelsSvcCodingParam* pCodingParam, const int32_t kiCp · 24 unmodified lines
17051705 pDlp->sSliceCfg.uiSliceMode = SM_SINGLE_SLICE;
17061706 break;
17071707 }
1708− if (pCodingParam->bEnableRc) { // multiple slices verify with gom
1708+ if (pCodingParam->iRCMode != RC_OFF_MODE) { // multiple slices verify with gom
17091709 //check uiSliceNum
17101710 GomValidCheckSliceNum (kiMbWidth, kiMbHeight, &pDlp->sSliceCfg.sSliceArgument.uiSliceNum);
17111711 assert (pDlp->sSliceCfg.sSliceArgument.uiSliceNum > 1);
@@ -1922,7 +1922,7 @@ int32_t WelsInitEncoderExt (sWelsEncCtx** ppCtx, SWelsSvcCodingParam* pCodingPar · 210 unmodified lines
19221922 if (pCodingParam->iMultipleThreadIdc > 1)
19231923 iRet = CreateSliceThreads (pCtx);
19241924
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);
19261926
19271927 pCtx->pVpp = new CWelsPreProcess (pCtx);
19281928 if (pCtx->pVpp == NULL) {
@@ -2194,7 +2194,7 @@ void WelsInitCurrentDlayerMltslc (sWelsEncCtx* pCtx, int32_t iPartitionNum) { · 265 unmodified lines
21942194 uint8_t iCurDid = pCtx->uiDependencyId;
21952195 uint32_t uiFrmByte = 0;
21962196
2197− if (pCtx->pSvcParam->bEnableRc) {
2197+ if (pCtx->pSvcParam->iRCMode != RC_OFF_MODE) {
21982198 //RC case
21992199 uiFrmByte = (
22002200 ((uint32_t) (pCtx->pSvcParam->sDependencyLayers[iCurDid].iSpatialBitrate)
@@ -3475,7 +3475,6 @@ int32_t WelsEncoderParamAdjust (sWelsEncCtx** ppCtx, SWelsSvcCodingParam* pNewPa · 1274 unmodified lines
34753475 pOldParam->iLoopFilterBetaOffset = pNewParam->iLoopFilterBetaOffset; // BetaOffset: valid range [-6, 6], default 0
34763476
34773477 /* Rate Control */
3478− pOldParam->bEnableRc = pNewParam->bEnableRc;
34793478 pOldParam->iRCMode = pNewParam->iRCMode;
34803479 pOldParam->iTargetBitrate = pNewParam->iTargetBitrate; // overall target bitrate introduced in RC module
34813480 pOldParam->iPaddingFlag = pNewParam->iPaddingFlag;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t