History

Multi-thread-fixed:RBC#1680:ppSliceInLayer instead of pSliceInLayer for all slice buffer management

huade committed 9 years ago

Commit 8ff579b1 parent 01e31ff11 files · +162 −153Browse files

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

Unified · Split

codec/encoder/core/src/svc_encode_slice.cpp+5−5
@@ -94,7 +94,7 @@ void WelsSliceHeaderExtInit (sWelsEncCtx* pEncCtx, SDqLayer* pCurLayer, SSlice* · 93 unmodified lines
94 94
95 pCurSliceExt->bStoreRefBasePicFlag = false;95 pCurSliceExt->bStoreRefBasePicFlag = false;
96 96
97 pCurSliceHeader->iFirstMbInSlice = WelsGetFirstMbOfSlice (pCurLayer->sLayerInfo.pSliceInLayer, pSlice->uiSliceIdx);97 pCurSliceHeader->iFirstMbInSlice = WelsGetFirstMbOfSlice (pCurLayer->ppSliceInLayer, pSlice->uiSliceIdx);
98 98
99 pCurSliceHeader->iFrameNum = pParamInternal->iFrameNum;99 pCurSliceHeader->iFrameNum = pParamInternal->iFrameNum;
100 pCurSliceHeader->uiIdrPicId = pParamInternal->uiIdrPicId;100 pCurSliceHeader->uiIdrPicId = pParamInternal->uiIdrPicId;
@@ -915,7 +915,7 @@ void FreeSliceBuffer (SSlice*& pSliceList, const int32_t kiMaxSliceNum, CMemoryA · 814 unmodified lines
915int32_t WelsCodeOneSlice (sWelsEncCtx* pEncCtx, const int32_t kiSliceIdx, const int32_t kiNalType) {915int32_t WelsCodeOneSlice (sWelsEncCtx* pEncCtx, const int32_t kiSliceIdx, const int32_t kiNalType) {
916 SDqLayer* pCurLayer = pEncCtx->pCurDqLayer;916 SDqLayer* pCurLayer = pEncCtx->pCurDqLayer;
917 SNalUnitHeaderExt* pNalHeadExt = &pCurLayer->sLayerInfo.sNalHeaderExt;917 SNalUnitHeaderExt* pNalHeadExt = &pCurLayer->sLayerInfo.sNalHeaderExt;
918 SSlice* pCurSlice = &pCurLayer->sLayerInfo.pSliceInLayer[kiSliceIdx];918 SSlice* pCurSlice = pCurLayer->ppSliceInLayer[kiSliceIdx];
919 SBitStringAux* pBs = pCurSlice->pSliceBsa;919 SBitStringAux* pBs = pCurSlice->pSliceBsa;
920 const int32_t kiDynamicSliceFlag =920 const int32_t kiDynamicSliceFlag =
921 (pEncCtx->pSvcParam->sSpatialLayers[pEncCtx->uiDependencyId].sSliceArgument.uiSliceMode921 (pEncCtx->pSvcParam->sSpatialLayers[pEncCtx->uiDependencyId].sSliceArgument.uiSliceMode
@@ -974,7 +974,7 @@ void UpdateMbNeighbourInfoForNextSlice (SDqLayer* pCurDq, · 52 unmodified lines
974void AddSliceBoundary (sWelsEncCtx* pEncCtx, SSlice* pCurSlice, SSliceCtx* pSliceCtx, SMB* pCurMb,974void AddSliceBoundary (sWelsEncCtx* pEncCtx, SSlice* pCurSlice, SSliceCtx* pSliceCtx, SMB* pCurMb,
975 int32_t iFirstMbIdxOfNextSlice, const int32_t kiLastMbIdxInPartition) {975 int32_t iFirstMbIdxOfNextSlice, const int32_t kiLastMbIdxInPartition) {
976 SDqLayer* pCurLayer = pEncCtx->pCurDqLayer;976 SDqLayer* pCurLayer = pEncCtx->pCurDqLayer;
977 SSlice* pSliceInLayer = pCurLayer->sLayerInfo.pSliceInLayer;977 SSlice** ppSliceInLayer = pCurLayer->ppSliceInLayer;
978 int32_t iCurMbIdx = pCurMb->iMbXY;978 int32_t iCurMbIdx = pCurMb->iMbXY;
979 uint16_t iCurSliceIdc = pSliceCtx->pOverallMbMap[ iCurMbIdx ];979 uint16_t iCurSliceIdc = pSliceCtx->pOverallMbMap[ iCurMbIdx ];
980 const int32_t kiSliceIdxStep = pEncCtx->iActiveThreadsNum;980 const int32_t kiSliceIdxStep = pEncCtx->iActiveThreadsNum;
@@ -987,7 +987,7 @@ void AddSliceBoundary (sWelsEncCtx* pEncCtx, SSlice* pCurSlice, SSliceCtx* pSlic · 6 unmodified lines
987 pCurSlice->sSliceHeaderExt.uiNumMbsInSlice = 1 + iCurMbIdx - pCurSlice->sSliceHeaderExt.sSliceHeader.iFirstMbInSlice;987 pCurSlice->sSliceHeaderExt.uiNumMbsInSlice = 1 + iCurMbIdx - pCurSlice->sSliceHeaderExt.sSliceHeader.iFirstMbInSlice;
988 988
989 //pNextSlice pointer/initialization989 //pNextSlice pointer/initialization
990 pNextSlice = & (pCurLayer->sLayerInfo.pSliceInLayer[ iNextSliceIdc ]);990 pNextSlice = pCurLayer->ppSliceInLayer[ iNextSliceIdc ];
991 991
992#if _DEBUG992#if _DEBUG
993 assert (NULL != pNextSlice);993 assert (NULL != pNextSlice);
@@ -999,7 +999,7 @@ void AddSliceBoundary (sWelsEncCtx* pEncCtx, SSlice* pCurSlice, SSliceCtx* pSlic · 5 unmodified lines
999 (NAL_UNIT_CODED_SLICE_EXT == pCurLayer->sLayerInfo.sNalHeaderExt.sNalUnitHeader.eNalUnitType);999 (NAL_UNIT_CODED_SLICE_EXT == pCurLayer->sLayerInfo.sNalHeaderExt.sNalUnitHeader.eNalUnitType);
1000 memcpy (&pNextSlice->sSliceHeaderExt, &pCurSlice->sSliceHeaderExt,1000 memcpy (&pNextSlice->sSliceHeaderExt, &pCurSlice->sSliceHeaderExt,
1001 sizeof (SSliceHeaderExt)); // confirmed_safe_unsafe_usage1001 sizeof (SSliceHeaderExt)); // confirmed_safe_unsafe_usage
1002 pSliceInLayer[iNextSliceIdc].sSliceHeaderExt.sSliceHeader.iFirstMbInSlice = iFirstMbIdxOfNextSlice;1002 ppSliceInLayer[iNextSliceIdc]->sSliceHeaderExt.sSliceHeader.iFirstMbInSlice = iFirstMbIdxOfNextSlice;
1003 WelsSetMemMultiplebytes_c (pSliceCtx->pOverallMbMap + iFirstMbIdxOfNextSlice, iNextSliceIdc,1003 WelsSetMemMultiplebytes_c (pSliceCtx->pOverallMbMap + iFirstMbIdxOfNextSlice, iNextSliceIdc,
1004 (kiLastMbIdxInPartition - iFirstMbIdxOfNextSlice + 1), sizeof (uint16_t));1004 (kiLastMbIdxInPartition - iFirstMbIdxOfNextSlice + 1), sizeof (uint16_t));
1005 1005

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