Showing the changes to codec/encoder/core/src/ratectl.cpp (1 of 9 files). Show all
Unified · Split
| @@ -999,20 +999,44 @@ void WelsRcMbInitDisable (void* pCtx, SMB* pCurMb, SSlice* pSlice) { · 998 unmodified lines | |||
| 999 | void WelsRcMbInfoUpdateDisable (void* pCtx, SMB* pCurMb, int32_t iCostLuma, SSlice* pSlice) { | 999 | void WelsRcMbInfoUpdateDisable (void* pCtx, SMB* pCurMb, int32_t iCostLuma, SSlice* pSlice) { |
| 1000 | } | 1000 | } |
| 1001 | 1001 | ||
| 1002 | void WelRcPictureInitBufferBasedQp (void* pCtx) { | ||
| 1003 | sWelsEncCtx* pEncCtx = (sWelsEncCtx*)pCtx; | ||
| 1004 | SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId]; | ||
| 1005 | SVAAFrameInfo* pVaa = static_cast<SVAAFrameInfo*> (pEncCtx->pVaa); | ||
| 1002 | 1006 | ||
| 1003 | void WelsRcInitModule (void* pCtx, int32_t iModule) { | 1007 | int32_t iMinQp = MIN_SCREEN_QP; |
| 1008 | if (pVaa->eSceneChangeIdc == LARGE_CHANGED_SCENE) | ||
| 1009 | iMinQp = MIN_SCREEN_QP + 2; | ||
| 1010 | else if (pVaa->eSceneChangeIdc == MEDIUM_CHANGED_SCENE) | ||
| 1011 | iMinQp = MIN_SCREEN_QP + 1; | ||
| 1012 | else | ||
| 1013 | iMinQp = MIN_SCREEN_QP; | ||
| 1014 | |||
| 1015 | pEncCtx->iGlobalQp += pEncCtx->iDropNumber; | ||
| 1016 | pEncCtx->iGlobalQp = WELS_CLIP3 (pEncCtx->iGlobalQp, MIN_SCREEN_QP, MAX_SCREEN_QP); | ||
| 1017 | } | ||
| 1018 | void WelsRcInitModule (void* pCtx, RC_MODES iRcMode) { | ||
| 1004 | sWelsEncCtx* pEncCtx = (sWelsEncCtx*)pCtx; | 1019 | sWelsEncCtx* pEncCtx = (sWelsEncCtx*)pCtx; |
| 1005 | SWelsRcFunc* pRcf = &pEncCtx->pFuncList->pfRc; | 1020 | SWelsRcFunc* pRcf = &pEncCtx->pFuncList->pfRc; |
| 1006 | 1021 | ||
| 1007 | switch (iModule) { | 1022 | switch (iRcMode) { |
| 1008 | case WELS_RC_DISABLE: | 1023 | case RC_OFF_MODE: |
| 1009 | pRcf->pfWelsRcPictureInit = WelsRcPictureInitDisable; | 1024 | pRcf->pfWelsRcPictureInit = WelsRcPictureInitDisable; |
| 1010 | pRcf->pfWelsRcPicDelayJudge = NULL; | 1025 | pRcf->pfWelsRcPicDelayJudge = NULL; |
| 1011 | pRcf->pfWelsRcPictureInfoUpdate = WelsRcPictureInfoUpdateDisable; | 1026 | pRcf->pfWelsRcPictureInfoUpdate = WelsRcPictureInfoUpdateDisable; |
| 1012 | pRcf->pfWelsRcMbInit = WelsRcMbInitDisable; | 1027 | pRcf->pfWelsRcMbInit = WelsRcMbInitDisable; |
| 1013 | pRcf->pfWelsRcMbInfoUpdate = WelsRcMbInfoUpdateDisable; | 1028 | pRcf->pfWelsRcMbInfoUpdate = WelsRcMbInfoUpdateDisable; |
| 1014 | break; | 1029 | break; |
| 1015 | case WELS_RC_GOM: | 1030 | case RC_BUFFERBASED_MODE: |
| 1031 | pRcf->pfWelsRcPictureInit = WelRcPictureInitBufferBasedQp; | ||
| 1032 | pRcf->pfWelsRcPicDelayJudge = NULL; | ||
| 1033 | pRcf->pfWelsRcPictureInfoUpdate = WelsRcPictureInfoUpdateDisable; | ||
| 1034 | pRcf->pfWelsRcMbInit = WelsRcMbInitDisable; | ||
| 1035 | pRcf->pfWelsRcMbInfoUpdate = WelsRcMbInfoUpdateDisable; | ||
| 1036 | break; | ||
| 1037 | case RC_QUALITY_MODE: | ||
| 1038 | case RC_BITRATE_MODE: | ||
| 1039 | case RC_LOW_BW_MODE: | ||
| 1016 | default: | 1040 | default: |
| 1017 | pRcf->pfWelsRcPictureInit = WelsRcPictureInitGom; | 1041 | pRcf->pfWelsRcPictureInit = WelsRcPictureInitGom; |
| 1018 | pRcf->pfWelsRcPicDelayJudge = WelsRcFrameDelayJudge; | 1042 | pRcf->pfWelsRcPicDelayJudge = WelsRcFrameDelayJudge; |