History

add buffer based rc

ruil2 committed 12 years ago

Commit 36cfb3b1 parent 4cdee3b9 files · +56 −24Browse files

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

Unified · Split

codec/encoder/core/src/ratectl.cpp+28−4
@@ -999,20 +999,44 @@ void WelsRcMbInitDisable (void* pCtx, SMB* pCurMb, SSlice* pSlice) { · 998 unmodified lines
999void WelsRcMbInfoUpdateDisable (void* pCtx, SMB* pCurMb, int32_t iCostLuma, SSlice* pSlice) {999void WelsRcMbInfoUpdateDisable (void* pCtx, SMB* pCurMb, int32_t iCostLuma, SSlice* pSlice) {
1000}1000}
1001 1001
1002void 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
1003void 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}
1018void 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;

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