ref: 462af17a77ca91ea3b04489b2ea1d1f949b4e0a2
parent: e448da82e4555c40d7d4b437cfa1dd22bc6c02c0
author: huade <[email protected]>
date: Wed Dec 21 10:40:51 EST 2016
Multi-thread-fixed:RBC#1716:refactoring for InitSliceRC
--- a/codec/encoder/core/src/encoder_ext.cpp
+++ b/codec/encoder/core/src/encoder_ext.cpp
@@ -3826,7 +3826,6 @@
WelsLoadNal (pCtx->pOut, eNalType, eNalRefIdc);
pCurSlice = pCtx->pCurDqLayer->ppSliceInLayer[iSliceIdx];
assert (iSliceIdx == (int) pCurSlice->uiSliceIdx);
-
pCtx->iEncoderError = SetSliceBoundaryInfo(pCtx->pCurDqLayer, pCurSlice, iSliceIdx);
WELS_VERIFY_RETURN_IFNEQ (pCtx->iEncoderError, ENC_RETURN_SUCCESS)
--- a/codec/encoder/core/src/ratectl.cpp
+++ b/codec/encoder/core/src/ratectl.cpp
@@ -711,6 +711,7 @@
}
+
void RcCalculateGomQp (sWelsEncCtx* pEncCtx, SSlice* pSlice, SMB* pCurMb) {
SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId];
SRCSlicing* pSOverRc = &pSlice->sSlicingOverRc;
--- a/codec/encoder/core/src/slice_multi_threading.cpp
+++ b/codec/encoder/core/src/slice_multi_threading.cpp
@@ -637,7 +637,6 @@
WelsLoadNalForSlice (pSliceBs, eNalType, eNalRefIdc);
pCurSlice = pEncPEncCtx->pCurDqLayer->ppSliceInLayer[iSliceIdx];
assert (iSliceIdx == (int) pCurSlice->uiSliceIdx);
-
iReturn = SetSliceBoundaryInfo(pEncPEncCtx->pCurDqLayer, pCurSlice, iSliceIdx);
if (ENC_RETURN_SUCCESS != iReturn) {
uiThrdRet = iReturn;
--- a/codec/encoder/core/src/svc_encode_slice.cpp
+++ b/codec/encoder/core/src/svc_encode_slice.cpp
@@ -1127,9 +1127,9 @@
}
-static inline int32_t InitSliceRC (SSlice* pSlice, const int32_t kiGlobalQp, const int32_t kiBitsPerMb) {
+static inline int32_t InitSliceRC (SSlice* pSlice, const int32_t kiGlobalQp) {
- if (NULL == pSlice || kiGlobalQp < 0 || kiBitsPerMb < 0)
+ if (NULL == pSlice || kiGlobalQp < 0)
return ENC_RETURN_INVALIDINPUT;
pSlice->sSlicingOverRc.iComplexityIndexSlice = 0;
@@ -1136,9 +1136,7 @@
pSlice->sSlicingOverRc.iCalculatedQpSlice = kiGlobalQp;
pSlice->sSlicingOverRc.iTotalQpSlice = 0;
pSlice->sSlicingOverRc.iTotalMbSlice = 0;
- pSlice->sSlicingOverRc.iTargetBitsSlice = WELS_DIV_ROUND (kiBitsPerMb *
- pSlice->iCountMbNumInSlice,
- INT_MULTIPLY);
+ pSlice->sSlicingOverRc.iTargetBitsSlice = 0;
pSlice->sSlicingOverRc.iFrameBitsSlice = 0;
pSlice->sSlicingOverRc.iGomBitsSlice = 0;
@@ -1158,8 +1156,6 @@
int32_t iRet = 0;
const int32_t kiCurDid = pCtx->uiDependencyId;
int32_t iMaxSliceBufferSize = (pCtx)->iSliceBufferSize[kiCurDid];
- int32_t iBitsPerMb = WELS_DIV_ROUND (pCtx->pWelsSvcRc[kiCurDid].iTargetBits * INT_MULTIPLY,
- pCtx->pWelsSvcRc[kiCurDid].iNumberMbFrame);
bool bIndependenceBsBuffer = (pCtx->pSvcParam->iMultipleThreadIdc > 1 &&
SM_SINGLE_SLICE != pSliceArgument->uiSliceMode) ? true : false;
@@ -1211,7 +1207,7 @@
InitSliceHeadWithBase (pSlice, pBaseSlice);
InitSliceRefInfoWithBase (pSlice, pBaseSlice, pCtx->iNumRef0);
- iRet = InitSliceRC (pSlice, pCtx->iGlobalQp, iBitsPerMb);
+ iRet = InitSliceRC (pSlice, pCtx->iGlobalQp);
if (ENC_RETURN_SUCCESS != iRet) {
FreeSliceBuffer(pNewSliceList, kiMaxSliceNumNew, pMA, "ReallocateSliceList()::InitSliceBsBuffer()");
return iRet;
@@ -1345,6 +1341,7 @@
pMA->WelsFree (pCurLayer->pCountMbNumInSlice, "pCountMbNumInSlice");
pCurLayer->pCountMbNumInSlice = pCountMbNumInSlice;
+
for (iSliceIdx = 0; iSliceIdx < iMaxSliceNumNew; iSliceIdx++) {
pCurLayer->ppSliceInLayer[iSliceIdx] = pCurLayer->sSliceThreadInfo.pSliceInThread[0] + iSliceIdx;
}
@@ -1357,7 +1354,6 @@
pCurLayer->iMaxSliceNum = iMaxSliceNumNew;
return ENC_RETURN_SUCCESS;
}
-
/*
int32_t ReOrderSliceInLayer (SDqLayer* pCurLayer,