Showing the changes to codec/encoder/core/src/encoder_ext.cpp (1 of 6 files). Show all
Unified · Split
| @@ -764,7 +764,6 @@ static void InitMbInfo (sWelsEncCtx* pEnc, SMB* pList, SDqLayer* pLayer, con · 763 unmodified lines | ||
| 764 | 764 | int32_t iMbHeight = pLayer->iMbHeight; |
| 765 | 765 | int32_t iIdx; |
| 766 | 766 | int32_t iMbNum = iMbWidth * iMbHeight; |
| 767 | − SSliceCtx* pSliceCtx = &pLayer->sSliceEncCtx; | |
| 768 | 767 | uint32_t uiNeighborAvail; |
| 769 | 768 | const int32_t kiOffset = (kiDlayerId & 0x01) * kiMaxMbNum; |
| 770 | 769 | SMVUnitXY (*pLayerMvUnitBlock4x4)[MB_BLOCK4x4_NUM] = (SMVUnitXY (*)[MB_BLOCK4x4_NUM]) ( |
| @@ -784,18 +783,18 @@ static void InitMbInfo (sWelsEncCtx* pEnc, SMB* pList, SDqLayer* pLayer, con · 13 unmodified lines | ||
| 784 | 783 | pList[iIdx].iMbY = pEnc->pStrideTab->pMbIndexY[kiDlayerId][iIdx]; |
| 785 | 784 | pList[iIdx].iMbXY = iIdx; |
| 786 | 785 | |
| 787 | − uiSliceIdc = WelsMbToSliceIdc (pSliceCtx, iIdx); | |
| 786 | + uiSliceIdc = WelsMbToSliceIdc (pLayer, iIdx); | |
| 788 | 787 | iLeftXY = iIdx - 1; |
| 789 | 788 | iTopXY = iIdx - iMbWidth; |
| 790 | 789 | iLeftTopXY = iTopXY - 1; |
| 791 | 790 | iRightTopXY = iTopXY + 1; |
| 792 | 791 | |
| 793 | − bLeft = (pList[iIdx].iMbX > 0) && (uiSliceIdc == WelsMbToSliceIdc (pSliceCtx, iLeftXY)); | |
| 794 | − bTop = (pList[iIdx].iMbY > 0) && (uiSliceIdc == WelsMbToSliceIdc (pSliceCtx, iTopXY)); | |
| 792 | + bLeft = (pList[iIdx].iMbX > 0) && (uiSliceIdc == WelsMbToSliceIdc (pLayer, iLeftXY)); | |
| 793 | + bTop = (pList[iIdx].iMbY > 0) && (uiSliceIdc == WelsMbToSliceIdc (pLayer, iTopXY)); | |
| 795 | 794 | bLeftTop = (pList[iIdx].iMbX > 0) && (pList[iIdx].iMbY > 0) && (uiSliceIdc == |
| 796 | − WelsMbToSliceIdc (pSliceCtx, iLeftTopXY)); | |
| 795 | + WelsMbToSliceIdc (pLayer, iLeftTopXY)); | |
| 797 | 796 | bRightTop = (pList[iIdx].iMbX < (iMbWidth - 1)) && (pList[iIdx].iMbY > 0) && (uiSliceIdc == |
| 798 | − WelsMbToSliceIdc (pSliceCtx, iRightTopXY)); | |
| 797 | + WelsMbToSliceIdc (pLayer, iRightTopXY)); | |
| 799 | 798 | |
| 800 | 799 | uiNeighborAvail = 0; |
| 801 | 800 | if (bLeft) { |
| @@ -2682,7 +2681,8 @@ int32_t GetTemporalLevel (SSpatialLayerInternal* fDlp, const int32_t kiFrameNum, · 1880 unmodified lines | ||
| 2682 | 2681 | return fDlp->uiCodingIdx2TemporalId[kiCodingIdx]; |
| 2683 | 2682 | } |
| 2684 | 2683 | |
| 2685 | −void DynslcUpdateMbNeighbourInfoListForAllSlices (SSliceCtx* pSliceCtx, SMB* pMbList) { | |
| 2684 | +void DynslcUpdateMbNeighbourInfoListForAllSlices (SDqLayer* pCurDq, SMB* pMbList) { | |
| 2685 | + SSliceCtx* pSliceCtx = &pCurDq->sSliceEncCtx; | |
| 2686 | 2686 | const int32_t kiMbWidth = pSliceCtx->iMbWidth; |
| 2687 | 2687 | const int32_t kiEndMbInSlice = pSliceCtx->iMbNumInFrame - 1; |
| 2688 | 2688 | int32_t iIdx = 0; |
| @@ -2700,17 +2700,17 @@ void DynslcUpdateMbNeighbourInfoListForAllSlices (SSliceCtx* pSliceCtx, SMB* pMb · 11 unmodified lines | ||
| 2700 | 2700 | uint16_t uiSliceIdc; |
| 2701 | 2701 | int32_t iLeftXY, iTopXY, iLeftTopXY, iRightTopXY; |
| 2702 | 2702 | |
| 2703 | − uiSliceIdc = WelsMbToSliceIdc (pSliceCtx, kiMbXY); | |
| 2703 | + uiSliceIdc = WelsMbToSliceIdc (pCurDq, kiMbXY); | |
| 2704 | 2704 | pMb->uiSliceIdc = uiSliceIdc; |
| 2705 | 2705 | iLeftXY = kiMbXY - 1; |
| 2706 | 2706 | iTopXY = kiMbXY - kiMbWidth; |
| 2707 | 2707 | iLeftTopXY = iTopXY - 1; |
| 2708 | 2708 | iRightTopXY = iTopXY + 1; |
| 2709 | 2709 | |
| 2710 | − bLeft = (kiMbX > 0) && (uiSliceIdc == WelsMbToSliceIdc (pSliceCtx, iLeftXY)); | |
| 2711 | − bTop = (kiMbY > 0) && (uiSliceIdc == WelsMbToSliceIdc (pSliceCtx, iTopXY)); | |
| 2712 | − bLeftTop = (kiMbX > 0) && (kiMbY > 0) && (uiSliceIdc == WelsMbToSliceIdc (pSliceCtx, iLeftTopXY)); | |
| 2713 | − bRightTop = (kiMbX < (kiMbWidth - 1)) && (kiMbY > 0) && (uiSliceIdc == WelsMbToSliceIdc (pSliceCtx, iRightTopXY)); | |
| 2710 | + bLeft = (kiMbX > 0) && (uiSliceIdc == WelsMbToSliceIdc (pCurDq, iLeftXY)); | |
| 2711 | + bTop = (kiMbY > 0) && (uiSliceIdc == WelsMbToSliceIdc (pCurDq, iTopXY)); | |
| 2712 | + bLeftTop = (kiMbX > 0) && (kiMbY > 0) && (uiSliceIdc == WelsMbToSliceIdc (pCurDq, iLeftTopXY)); | |
| 2713 | + bRightTop = (kiMbX < (kiMbWidth - 1)) && (kiMbY > 0) && (uiSliceIdc == WelsMbToSliceIdc (pCurDq, iRightTopXY)); | |
| 2714 | 2714 | |
| 2715 | 2715 | if (bLeft) { |
| 2716 | 2716 | uiNeighborAvailFlag |= LEFT_MB_POS; |
| @@ -2744,10 +2744,8 @@ int32_t PicPartitionNumDecision (sWelsEncCtx* pCtx) { · 27 unmodified lines | ||
| 2744 | 2744 | void WelsInitCurrentQBLayerMltslc (sWelsEncCtx* pCtx) { |
| 2745 | 2745 | //pData init |
| 2746 | 2746 | SDqLayer* pCurDq = pCtx->pCurDqLayer; |
| 2747 | − SSliceCtx* pSliceCtx = &(pCurDq->sSliceEncCtx); | |
| 2748 | − | |
| 2749 | 2747 | //mb_neighbor |
| 2750 | − DynslcUpdateMbNeighbourInfoListForAllSlices (pSliceCtx, pCurDq->sMbDataP); | |
| 2748 | + DynslcUpdateMbNeighbourInfoListForAllSlices (pCurDq, pCurDq->sMbDataP); | |
| 2751 | 2749 | } |
| 2752 | 2750 | |
| 2753 | 2751 | void UpdateSlicepEncCtxWithPartition (SDqLayer* pCurDq, int32_t iPartitionNum) { |