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