History

Multi-thread-fixed:RBC#1752:change sSliceThreadInfo structure

huade committed 9 years ago

Commit b8ba4181 parent 095f0b66 files · +57 −63Browse files

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

Unified · Split

codec/encoder/core/src/encoder_ext.cpp+7−8
@@ -925,8 +925,8 @@ int32_t InitMbListD (sWelsEncCtx** ppCtx) { · 924 unmodified lines
925925 void FreeSliceInLayer (SDqLayer* pDq, CMemoryAlign* pMa) {
926926 int32_t iIdx = 0;
927927 for (; iIdx < MAX_THREADS_NUM; iIdx ++) {
928− FreeSliceBuffer (pDq->sSliceThreadInfo.pSliceInThread[iIdx],
929− pDq->sSliceThreadInfo.iMaxSliceNumInThread[iIdx],
928+ FreeSliceBuffer (pDq->sSliceThreadInfo[iIdx].pSliceInThread,
929+ pDq->sSliceThreadInfo[iIdx].iMaxSliceNum,
930930 pMa, "pSliceInThread");
931931 }
932932 }
@@ -3646,8 +3646,7 @@ int32_t WelsEncoderEncodeExt (sWelsEncCtx* pCtx, SFrameBSInfo* pFbi, const SSour · 2713 unmodified lines
36463646 if (SM_SINGLE_SLICE == pParam->sSliceArgument.uiSliceMode) { // only one slice within a sQualityStat layer
36473647 int32_t iSliceSize = 0;
36483648 int32_t iPayloadSize = 0;
3649− uint32_t uiTheadIdx = 0;
3650− SSlice* pCurSlice = &pCtx->pCurDqLayer->sSliceThreadInfo.pSliceInThread[uiTheadIdx][0];
3649+ SSlice* pCurSlice = &pCtx->pCurDqLayer->sSliceThreadInfo[0].pSliceInThread[0];
36513650
36523651 if (pCtx->bNeedPrefixNalFlag) {
36533652 pCtx->iEncoderError = AddPrefixNal (pCtx, pLayerBsInfo, &pLayerBsInfo->pNalLengthInByte[0], &iNalIdxInLayer, eNalType,
@@ -3833,7 +3832,7 @@ int32_t WelsEncoderEncodeExt (sWelsEncCtx* pCtx, SFrameBSInfo* pFbi, const SSour · 179 unmodified lines
38333832
38343833 WelsLoadNal (pCtx->pOut, eNalType, eNalRefIdc);
38353834
3836− pCurSlice = &pCtx->pCurDqLayer->sSliceThreadInfo.pSliceInThread[uiTheadIdx][iSliceIdx];
3835+ pCurSlice = &pCtx->pCurDqLayer->sSliceThreadInfo[uiTheadIdx].pSliceInThread[iSliceIdx];
38373836 assert (iSliceIdx == pCurSlice->iSliceIdx);
38383837 pCtx->iEncoderError = SetSliceBoundaryInfo(pCtx->pCurDqLayer, pCurSlice, iSliceIdx);
38393838
@@ -4481,7 +4480,7 @@ int32_t WelsCodeOnePicPartition (sWelsEncCtx* pCtx, · 641 unmodified lines
44814480
44824481 SDqLayer* pCurLayer = pCtx->pCurDqLayer;
44834482 uint32_t uiTheadIdx = 0;
4484− SSlice* pStartSlice = &pCurLayer->sSliceThreadInfo.pSliceInThread[uiTheadIdx][iStartSliceIdx];
4483+ SSlice* pStartSlice = &pCurLayer->sSliceThreadInfo[uiTheadIdx].pSliceInThread[iStartSliceIdx];
44854484 int32_t iNalIdxInLayer = *pNalIdxInLayer;
44864485 int32_t iSliceIdx = iStartSliceIdx;
44874486 const int32_t kiSliceStep = pCtx->iActiveThreadsNum;
@@ -4501,7 +4500,7 @@ int32_t WelsCodeOnePicPartition (sWelsEncCtx* pCtx, · 13 unmodified lines
45014500 int32_t iPayloadSize = 0;
45024501 SSlice* pCurSlice = NULL;
45034502
4504− if (iSliceIdx >= (pCurLayer->sSliceThreadInfo.iMaxSliceNumInThread[uiTheadIdx] - kiSliceIdxStep)) { // insufficient memory in pSliceInLayer[]
4503+ if (iSliceIdx >= (pCurLayer->sSliceThreadInfo[uiTheadIdx].iMaxSliceNum - kiSliceIdxStep)) { // insufficient memory in pSliceInLayer[]
45054504 if (pCtx->iActiveThreadsNum == 1) {
45064505 //only single thread support re-alloc now
45074506 if (DynSliceRealloc (pCtx, pFrameBSInfo, pLayerBsInfo)) {
@@ -4525,7 +4524,7 @@ int32_t WelsCodeOnePicPartition (sWelsEncCtx* pCtx, · 17 unmodified lines
45254524 }
45264525
45274526 WelsLoadNal (pCtx->pOut, keNalType, keNalRefIdc);
4528− pCurSlice = &pCtx->pCurDqLayer->sSliceThreadInfo.pSliceInThread[uiTheadIdx][iSliceIdx];
4527+ pCurSlice = &pCtx->pCurDqLayer->sSliceThreadInfo[uiTheadIdx].pSliceInThread[iSliceIdx];
45294528 pCurSlice->iSliceIdx = iSliceIdx;
45304529
45314530 iReturn = WelsCodeOneSlice (pCtx, pCurSlice, keNalType);

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