Showing the changes to codec/encoder/core/src/svc_encode_slice.cpp (1 of 6 files). Show all
Unified · Split
| @@ -483,8 +483,7 @@ void UpdateQpForOverflow (SMB* pCurMb, uint8_t kuiChromaQpIndexOffset) { · 482 unmodified lines | ||
| 483 | 483 | //second. lower than highest Dependency Layer, and for every Dependency Layer with one quality layer(single layer) |
| 484 | 484 | int32_t WelsISliceMdEnc (sWelsEncCtx* pEncCtx, SSlice* pSlice) { //pMd + encoding |
| 485 | 485 | SDqLayer* pCurLayer = pEncCtx->pCurDqLayer; |
| 486 | − SSliceCtx* pSliceCtx = &pCurLayer->sSliceEncCtx; | |
| 487 | − SMbCache* pMbCache = &pSlice->sMbCacheInfo; | |
| 486 | + SMbCache* pMbCache = &pSlice->sMbCacheInfo; | |
| 488 | 487 | SSliceHeaderExt* pSliceHdExt = &pSlice->sSliceHeaderExt; |
| 489 | 488 | SMB* pMbList = pCurLayer->sMbDataP; |
| 490 | 489 | SMB* pCurMb = NULL; |
| @@ -533,7 +532,7 @@ TRY_REENCODING: · 42 unmodified lines | ||
| 533 | 532 | pEncCtx->pFuncList->pfRc.pfWelsRcMbInfoUpdate (pEncCtx, pCurMb, sMd.iCostLuma, pSlice); |
| 534 | 533 | |
| 535 | 534 | ++iNumMbCoded; |
| 536 | − iNextMbIdx = WelsGetNextMbOfSlice (pSliceCtx, iCurMbIdx); | |
| 535 | + iNextMbIdx = WelsGetNextMbOfSlice (pCurLayer, iCurMbIdx); | |
| 537 | 536 | if (iNextMbIdx == -1 || iNextMbIdx >= kiTotalNumMb || iNumMbCoded >= kiTotalNumMb) { |
| 538 | 537 | break; |
| 539 | 538 | } |
| @@ -615,7 +614,7 @@ TRY_REENCODING: · 75 unmodified lines | ||
| 615 | 614 | |
| 616 | 615 | ++iNumMbCoded; |
| 617 | 616 | |
| 618 | − iNextMbIdx = WelsGetNextMbOfSlice (pSliceCtx, iCurMbIdx); | |
| 617 | + iNextMbIdx = WelsGetNextMbOfSlice (pCurLayer, iCurMbIdx); | |
| 619 | 618 | //whether all of MB in current pSlice encoded or not |
| 620 | 619 | if (iNextMbIdx == -1 || iNextMbIdx >= kiTotalNumMb || iNumMbCoded >= kiTotalNumMb) { |
| 621 | 620 | pSliceCtx->pCountMbNumInSlice[kiSliceIdx] = iCurMbIdx - pCurLayer->pLastCodedMbIdxOfPartition[kiPartitionId]; |
| @@ -759,10 +758,11 @@ int32_t WelsCodeOneSlice (sWelsEncCtx* pEncCtx, const int32_t kiSliceIdx, const · 137 unmodified lines | ||
| 759 | 758 | } |
| 760 | 759 | |
| 761 | 760 | //pFunc: UpdateMbNeighbourInfoForNextSlice() |
| 762 | −void UpdateMbNeighbourInfoForNextSlice (SSliceCtx* pSliceCtx, | |
| 761 | +void UpdateMbNeighbourInfoForNextSlice (SDqLayer* pCurDq, | |
| 763 | 762 | SMB* pMbList, |
| 764 | 763 | const int32_t kiFirstMbIdxOfNextSlice, |
| 765 | 764 | const int32_t kiLastMbIdxInPartition) { |
| 765 | + SSliceCtx* pSliceCtx = &pCurDq->sSliceEncCtx; | |
| 766 | 766 | const int32_t kiMbWidth = pSliceCtx->iMbWidth; |
| 767 | 767 | int32_t iIdx = kiFirstMbIdxOfNextSlice; |
| 768 | 768 | int32_t iNextSliceFirstMbIdxRowStart = ((kiFirstMbIdxOfNextSlice % kiMbWidth) ? 1 : 0); |
| @@ -781,7 +781,7 @@ void UpdateMbNeighbourInfoForNextSlice (SSliceCtx* pSliceCtx, · 12 unmodified lines | ||
| 781 | 781 | bool bLeftTop; |
| 782 | 782 | bool bRightTop; |
| 783 | 783 | int32_t iLeftXY, iTopXY, iLeftTopXY, iRightTopXY; |
| 784 | − const uint16_t kuiSliceIdc = WelsMbToSliceIdc (pSliceCtx, kiMbXY); | |
| 784 | + const uint16_t kuiSliceIdc = WelsMbToSliceIdc (pCurDq, kiMbXY); | |
| 785 | 785 | |
| 786 | 786 | pMb->uiSliceIdc = kuiSliceIdc; |
| 787 | 787 | iLeftXY = kiMbXY - 1; |
| @@ -789,10 +789,10 @@ void UpdateMbNeighbourInfoForNextSlice (SSliceCtx* pSliceCtx, · 1 unmodified line | ||
| 789 | 789 | iLeftTopXY = iTopXY - 1; |
| 790 | 790 | iRightTopXY = iTopXY + 1; |
| 791 | 791 | |
| 792 | − bLeft = (kiMbX > 0) && (kuiSliceIdc == WelsMbToSliceIdc (pSliceCtx, iLeftXY)); | |
| 793 | − bTop = (kiMbY > 0) && (kuiSliceIdc == WelsMbToSliceIdc (pSliceCtx, iTopXY)); | |
| 794 | − bLeftTop = (kiMbX > 0) && (kiMbY > 0) && (kuiSliceIdc == WelsMbToSliceIdc (pSliceCtx, iLeftTopXY)); | |
| 795 | − bRightTop = (kiMbX < (kiMbWidth - 1)) && (kiMbY > 0) && (kuiSliceIdc == WelsMbToSliceIdc (pSliceCtx, iRightTopXY)); | |
| 792 | + bLeft = (kiMbX > 0) && (kuiSliceIdc == WelsMbToSliceIdc (pCurDq, iLeftXY)); | |
| 793 | + bTop = (kiMbY > 0) && (kuiSliceIdc == WelsMbToSliceIdc (pCurDq, iTopXY)); | |
| 794 | + bLeftTop = (kiMbX > 0) && (kiMbY > 0) && (kuiSliceIdc == WelsMbToSliceIdc (pCurDq, iLeftTopXY)); | |
| 795 | + bRightTop = (kiMbX < (kiMbWidth - 1)) && (kiMbY > 0) && (kuiSliceIdc == WelsMbToSliceIdc (pCurDq, iRightTopXY)); | |
| 796 | 796 | |
| 797 | 797 | if (bLeft) { |
| 798 | 798 | uiNeighborAvailFlag |= LEFT_MB_POS; |
| @@ -848,7 +848,7 @@ void AddSliceBoundary (sWelsEncCtx* pEncCtx, SSlice* pCurSlice, SSliceCtx* pSlic · 49 unmodified lines | ||
| 848 | 848 | (kiLastMbIdxInPartition - iFirstMbIdxOfNextSlice + 1), sizeof (uint16_t)); |
| 849 | 849 | |
| 850 | 850 | //DYNAMIC_SLICING_ONE_THREAD: update pMbList slice_neighbor_info |
| 851 | − UpdateMbNeighbourInfoForNextSlice (pSliceCtx, pMbList, iFirstMbIdxOfNextSlice, kiLastMbIdxInPartition); | |
| 851 | + UpdateMbNeighbourInfoForNextSlice (pCurLayer, pMbList, iFirstMbIdxOfNextSlice, kiLastMbIdxInPartition); | |
| 852 | 852 | } |
| 853 | 853 | |
| 854 | 854 | bool DynSlcJudgeSliceBoundaryStepBack (void* pCtx, void* pSlice, SSliceCtx* pSliceCtx, SMB* pCurMb, |
| @@ -942,7 +942,6 @@ int32_t WelsMdInterMbLoop (sWelsEncCtx* pEncCtx, SSlice* pSlice, void* pWelsMd, · 87 unmodified lines | ||
| 942 | 942 | SWelsMD* pMd = (SWelsMD*)pWelsMd; |
| 943 | 943 | SBitStringAux* pBs = pSlice->pSliceBsa; |
| 944 | 944 | SDqLayer* pCurLayer = pEncCtx->pCurDqLayer; |
| 945 | − SSliceCtx* pSliceCtx = &pCurLayer->sSliceEncCtx; | |
| 946 | 945 | SMbCache* pMbCache = &pSlice->sMbCacheInfo; |
| 947 | 946 | SMB* pMbList = pCurLayer->sMbDataP; |
| 948 | 947 | SMB* pCurMb = NULL; |
| @@ -1013,7 +1012,7 @@ TRY_REENCODING: · 64 unmodified lines | ||
| 1013 | 1012 | |
| 1014 | 1013 | /*judge if all pMb in cur pSlice has been encoded*/ |
| 1015 | 1014 | ++ iNumMbCoded; |
| 1016 | − iNextMbIdx = WelsGetNextMbOfSlice (pSliceCtx, iCurMbIdx); | |
| 1015 | + iNextMbIdx = WelsGetNextMbOfSlice (pCurLayer, iCurMbIdx); | |
| 1017 | 1016 | //whether all of MB in current pSlice encoded or not |
| 1018 | 1017 | if (iNextMbIdx == -1 || iNextMbIdx >= kiTotalNumMb || iNumMbCoded >= kiTotalNumMb) { |
| 1019 | 1018 | break; |
| @@ -1130,7 +1129,7 @@ TRY_REENCODING: · 110 unmodified lines | ||
| 1130 | 1129 | |
| 1131 | 1130 | /*judge if all pMb in cur pSlice has been encoded*/ |
| 1132 | 1131 | ++ iNumMbCoded; |
| 1133 | − iNextMbIdx = WelsGetNextMbOfSlice (pSliceCtx, iCurMbIdx); | |
| 1132 | + iNextMbIdx = WelsGetNextMbOfSlice (pCurLayer, iCurMbIdx); | |
| 1134 | 1133 | //whether all of MB in current pSlice encoded or not |
| 1135 | 1134 | if (iNextMbIdx == -1 || iNextMbIdx >= kiTotalNumMb || iNumMbCoded >= kiTotalNumMb) { |
| 1136 | 1135 | pCurLayer->pLastCodedMbIdxOfPartition[kiPartitionId] = |