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
999999 void WelsRcMbInfoUpdateDisable (void* pCtx, SMB* pCurMb, int32_t iCostLuma, SSlice* pSlice) {
10001000 }
10011001
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);
10021006
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) {
10041019 sWelsEncCtx* pEncCtx = (sWelsEncCtx*)pCtx;
10051020 SWelsRcFunc* pRcf = &pEncCtx->pFuncList->pfRc;
10061021
1007− switch (iModule) {
1008− case WELS_RC_DISABLE:
1022+ switch (iRcMode) {
1023+ case RC_OFF_MODE:
10091024 pRcf->pfWelsRcPictureInit = WelsRcPictureInitDisable;
10101025 pRcf->pfWelsRcPicDelayJudge = NULL;
10111026 pRcf->pfWelsRcPictureInfoUpdate = WelsRcPictureInfoUpdateDisable;
10121027 pRcf->pfWelsRcMbInit = WelsRcMbInitDisable;
10131028 pRcf->pfWelsRcMbInfoUpdate = WelsRcMbInfoUpdateDisable;
10141029 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:
10161040 default:
10171041 pRcf->pfWelsRcPictureInit = WelsRcPictureInitGom;
10181042 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