History

Multi-thread-fixed:RBC#1716:refactoring for InitSliceRC

huade committed 9 years ago

Commit 462af171 parent e448da84 files · +6 −11Browse files

Unified · Split

4 files
  1. codec/encoder/core/src/encoder_ext.cpp +0 −1
  2. codec/encoder/core/src/ratectl.cpp +1 −0
  3. codec/encoder/core/src/slice_multi_threading.cpp +0 −1
  4. codec/encoder/core/src/svc_encode_slice.cpp +5 −9
codec/encoder/core/src/encoder_ext.cpp+0−1
@@ -3826,7 +3826,6 @@ int32_t WelsEncoderEncodeExt (sWelsEncCtx* pCtx, SFrameBSInfo* pFbi, const SSour · 3825 unmodified lines
3826 WelsLoadNal (pCtx->pOut, eNalType, eNalRefIdc);3826 WelsLoadNal (pCtx->pOut, eNalType, eNalRefIdc);
3827 pCurSlice = pCtx->pCurDqLayer->ppSliceInLayer[iSliceIdx];3827 pCurSlice = pCtx->pCurDqLayer->ppSliceInLayer[iSliceIdx];
3828 assert (iSliceIdx == (int) pCurSlice->uiSliceIdx);3828 assert (iSliceIdx == (int) pCurSlice->uiSliceIdx);
3829
3830 pCtx->iEncoderError = SetSliceBoundaryInfo(pCtx->pCurDqLayer, pCurSlice, iSliceIdx);3829 pCtx->iEncoderError = SetSliceBoundaryInfo(pCtx->pCurDqLayer, pCurSlice, iSliceIdx);
3831 WELS_VERIFY_RETURN_IFNEQ (pCtx->iEncoderError, ENC_RETURN_SUCCESS)3830 WELS_VERIFY_RETURN_IFNEQ (pCtx->iEncoderError, ENC_RETURN_SUCCESS)
3832 3831
codec/encoder/core/src/ratectl.cpp+1−0
@@ -711,6 +711,7 @@ void RcGomTargetBits (sWelsEncCtx* pEncCtx, SSlice* pSlice) { · 710 unmodified lines
711}711}
712 712
713 713
714
714void RcCalculateGomQp (sWelsEncCtx* pEncCtx, SSlice* pSlice, SMB* pCurMb) {715void RcCalculateGomQp (sWelsEncCtx* pEncCtx, SSlice* pSlice, SMB* pCurMb) {
715 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId];716 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId];
716 SRCSlicing* pSOverRc = &pSlice->sSlicingOverRc;717 SRCSlicing* pSOverRc = &pSlice->sSlicingOverRc;
codec/encoder/core/src/slice_multi_threading.cpp+0−1
@@ -637,7 +637,6 @@ WELS_THREAD_ROUTINE_TYPE CodingSliceThreadProc (void* arg) { · 636 unmodified lines
637 WelsLoadNalForSlice (pSliceBs, eNalType, eNalRefIdc);637 WelsLoadNalForSlice (pSliceBs, eNalType, eNalRefIdc);
638 pCurSlice = pEncPEncCtx->pCurDqLayer->ppSliceInLayer[iSliceIdx];638 pCurSlice = pEncPEncCtx->pCurDqLayer->ppSliceInLayer[iSliceIdx];
639 assert (iSliceIdx == (int) pCurSlice->uiSliceIdx);639 assert (iSliceIdx == (int) pCurSlice->uiSliceIdx);
640
641 iReturn = SetSliceBoundaryInfo(pEncPEncCtx->pCurDqLayer, pCurSlice, iSliceIdx);640 iReturn = SetSliceBoundaryInfo(pEncPEncCtx->pCurDqLayer, pCurSlice, iSliceIdx);
642 if (ENC_RETURN_SUCCESS != iReturn) {641 if (ENC_RETURN_SUCCESS != iReturn) {
643 uiThrdRet = iReturn;642 uiThrdRet = iReturn;
codec/encoder/core/src/svc_encode_slice.cpp+5−9
@@ -1127,18 +1127,16 @@ void InitSliceRefInfoWithBase (SSlice* pSlice, SSlice* pBaseSlice, const uint8_t · 1126 unmodified lines
1127 1127
1128}1128}
1129 1129
1130static inline int32_t InitSliceRC (SSlice* pSlice, const int32_t kiGlobalQp, const int32_t kiBitsPerMb) {1130static inline int32_t InitSliceRC (SSlice* pSlice, const int32_t kiGlobalQp) {
1131 1131
1132 if (NULL == pSlice || kiGlobalQp < 0 || kiBitsPerMb < 0)1132 if (NULL == pSlice || kiGlobalQp < 0)
1133 return ENC_RETURN_INVALIDINPUT;1133 return ENC_RETURN_INVALIDINPUT;
1134 1134
1135 pSlice->sSlicingOverRc.iComplexityIndexSlice = 0;1135 pSlice->sSlicingOverRc.iComplexityIndexSlice = 0;
1136 pSlice->sSlicingOverRc.iCalculatedQpSlice = kiGlobalQp;1136 pSlice->sSlicingOverRc.iCalculatedQpSlice = kiGlobalQp;
1137 pSlice->sSlicingOverRc.iTotalQpSlice = 0;1137 pSlice->sSlicingOverRc.iTotalQpSlice = 0;
1138 pSlice->sSlicingOverRc.iTotalMbSlice = 0;1138 pSlice->sSlicingOverRc.iTotalMbSlice = 0;
1139 pSlice->sSlicingOverRc.iTargetBitsSlice = WELS_DIV_ROUND (kiBitsPerMb *1139 pSlice->sSlicingOverRc.iTargetBitsSlice = 0;
1140 pSlice->iCountMbNumInSlice,
1141 INT_MULTIPLY);
1142 pSlice->sSlicingOverRc.iFrameBitsSlice = 0;1140 pSlice->sSlicingOverRc.iFrameBitsSlice = 0;
1143 pSlice->sSlicingOverRc.iGomBitsSlice = 0;1141 pSlice->sSlicingOverRc.iGomBitsSlice = 0;
1144 1142
@@ -1158,8 +1156,6 @@ int32_t ReallocateSliceList (sWelsEncCtx* pCtx, · 13 unmodified lines
1158 int32_t iRet = 0;1156 int32_t iRet = 0;
1159 const int32_t kiCurDid = pCtx->uiDependencyId;1157 const int32_t kiCurDid = pCtx->uiDependencyId;
1160 int32_t iMaxSliceBufferSize = (pCtx)->iSliceBufferSize[kiCurDid];1158 int32_t iMaxSliceBufferSize = (pCtx)->iSliceBufferSize[kiCurDid];
1161 int32_t iBitsPerMb = WELS_DIV_ROUND (pCtx->pWelsSvcRc[kiCurDid].iTargetBits * INT_MULTIPLY,
1162 pCtx->pWelsSvcRc[kiCurDid].iNumberMbFrame);
1163 bool bIndependenceBsBuffer = (pCtx->pSvcParam->iMultipleThreadIdc > 1 &&1159 bool bIndependenceBsBuffer = (pCtx->pSvcParam->iMultipleThreadIdc > 1 &&
1164 SM_SINGLE_SLICE != pSliceArgument->uiSliceMode) ? true : false;1160 SM_SINGLE_SLICE != pSliceArgument->uiSliceMode) ? true : false;
1165 1161
@@ -1211,7 +1207,7 @@ int32_t ReallocateSliceList (sWelsEncCtx* pCtx, · 45 unmodified lines
1211 InitSliceHeadWithBase (pSlice, pBaseSlice);1207 InitSliceHeadWithBase (pSlice, pBaseSlice);
1212 InitSliceRefInfoWithBase (pSlice, pBaseSlice, pCtx->iNumRef0);1208 InitSliceRefInfoWithBase (pSlice, pBaseSlice, pCtx->iNumRef0);
1213 1209
1214 iRet = InitSliceRC (pSlice, pCtx->iGlobalQp, iBitsPerMb);1210 iRet = InitSliceRC (pSlice, pCtx->iGlobalQp);
1215 if (ENC_RETURN_SUCCESS != iRet) {1211 if (ENC_RETURN_SUCCESS != iRet) {
1216 FreeSliceBuffer(pNewSliceList, kiMaxSliceNumNew, pMA, "ReallocateSliceList()::InitSliceBsBuffer()");1212 FreeSliceBuffer(pNewSliceList, kiMaxSliceNumNew, pMA, "ReallocateSliceList()::InitSliceBsBuffer()");
1217 return iRet;1213 return iRet;
@@ -1345,6 +1341,7 @@ int32_t ReallocSliceBuffer (sWelsEncCtx* pCtx) { · 127 unmodified lines
1345 pMA->WelsFree (pCurLayer->pCountMbNumInSlice, "pCountMbNumInSlice");1341 pMA->WelsFree (pCurLayer->pCountMbNumInSlice, "pCountMbNumInSlice");
1346 pCurLayer->pCountMbNumInSlice = pCountMbNumInSlice;1342 pCurLayer->pCountMbNumInSlice = pCountMbNumInSlice;
1347 1343
1344
1348 for (iSliceIdx = 0; iSliceIdx < iMaxSliceNumNew; iSliceIdx++) {1345 for (iSliceIdx = 0; iSliceIdx < iMaxSliceNumNew; iSliceIdx++) {
1349 pCurLayer->ppSliceInLayer[iSliceIdx] = pCurLayer->sSliceThreadInfo.pSliceInThread[0] + iSliceIdx;1346 pCurLayer->ppSliceInLayer[iSliceIdx] = pCurLayer->sSliceThreadInfo.pSliceInThread[0] + iSliceIdx;
1350 }1347 }
@@ -1358,7 +1355,6 @@ int32_t ReallocSliceBuffer (sWelsEncCtx* pCtx) { · 7 unmodified lines
1358 return ENC_RETURN_SUCCESS;1355 return ENC_RETURN_SUCCESS;
1359}1356}
1360 1357
1361
1362/*1358/*
1363int32_t ReOrderSliceInLayer (SDqLayer* pCurLayer,1359int32_t ReOrderSliceInLayer (SDqLayer* pCurLayer,
1364 const int32_t kiThreadNum,1360 const int32_t kiThreadNum,

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