[Encoder] put duplicated codes into one function
Showing the changes to codec/encoder/core/src/slice_multi_threading.cpp (1 of 4 files). Show all
Unified · Split
| @@ -82,48 +82,12 @@ void UpdateMbListNeighborParallel (SDqLayer* pCurDq, · 81 unmodified lines | |||
| 82 | const int32_t uiSliceIdc) { | 82 | const int32_t uiSliceIdc) { |
| 83 | SSliceCtx* pSliceCtx = &pCurDq->sSliceEncCtx; | 83 | SSliceCtx* pSliceCtx = &pCurDq->sSliceEncCtx; |
| 84 | SSlice* pUpdateSlice = &pCurDq->sLayerInfo.pSliceInLayer[uiSliceIdc]; | 84 | SSlice* pUpdateSlice = &pCurDq->sLayerInfo.pSliceInLayer[uiSliceIdc]; |
| 85 | const uint16_t* kpMbMap = pSliceCtx->pOverallMbMap; | ||
| 86 | const int32_t kiMbWidth = pSliceCtx->iMbWidth; | 85 | const int32_t kiMbWidth = pSliceCtx->iMbWidth; |
| 87 | int32_t iIdx = pUpdateSlice->sSliceHeaderExt.sSliceHeader.iFirstMbInSlice; | 86 | int32_t iIdx = pUpdateSlice->sSliceHeaderExt.sSliceHeader.iFirstMbInSlice; |
| 88 | const int32_t kiEndMbInSlice = iIdx + pUpdateSlice->iCountMbNumInSlice - 1; | 87 | const int32_t kiEndMbInSlice = iIdx + pUpdateSlice->iCountMbNumInSlice - 1; |
| 89 | 88 | ||
| 90 | do { | 89 | do { |
| 91 | SMB* pMb = &pMbList[iIdx]; | 90 | UpdateMbNeighbor(pCurDq, &pMbList[iIdx], kiMbWidth, uiSliceIdc); |
| 92 | uint32_t uiNeighborAvailFlag = 0; | ||
| 93 | const int32_t kiMbXY = pMb->iMbXY; | ||
| 94 | const int32_t kiMbX = pMb->iMbX; | ||
| 95 | const int32_t kiMbY = pMb->iMbY; | ||
| 96 | bool bLeft; | ||
| 97 | bool bTop; | ||
| 98 | bool bLeftTop; | ||
| 99 | bool bRightTop; | ||
| 100 | int32_t iLeftXY, iTopXY, iLeftTopXY, iRightTopXY; | ||
| 101 | |||
| 102 | iLeftXY = kiMbXY - 1; | ||
| 103 | iTopXY = kiMbXY - kiMbWidth; | ||
| 104 | iLeftTopXY = iTopXY - 1; | ||
| 105 | iRightTopXY = iTopXY + 1; | ||
| 106 | |||
| 107 | bLeft = (kiMbX > 0) && (uiSliceIdc == kpMbMap[iLeftXY]); | ||
| 108 | bTop = (kiMbY > 0) && (uiSliceIdc == kpMbMap[iTopXY]); | ||
| 109 | bLeftTop = (kiMbX > 0) && (kiMbY > 0) && (uiSliceIdc == kpMbMap[iLeftTopXY]); | ||
| 110 | bRightTop = (kiMbX < (kiMbWidth - 1)) && (kiMbY > 0) && (uiSliceIdc == kpMbMap[iRightTopXY]); | ||
| 111 | |||
| 112 | if (bLeft) { | ||
| 113 | uiNeighborAvailFlag |= LEFT_MB_POS; | ||
| 114 | } | ||
| 115 | if (bTop) { | ||
| 116 | uiNeighborAvailFlag |= TOP_MB_POS; | ||
| 117 | } | ||
| 118 | if (bLeftTop) { | ||
| 119 | uiNeighborAvailFlag |= TOPLEFT_MB_POS; | ||
| 120 | } | ||
| 121 | if (bRightTop) { | ||
| 122 | uiNeighborAvailFlag |= TOPRIGHT_MB_POS; | ||
| 123 | } | ||
| 124 | pMb->uiNeighborAvail = (uint8_t)uiNeighborAvailFlag; | ||
| 125 | pMb->uiSliceIdc = uiSliceIdc; | ||
| 126 | |||
| 127 | ++ iIdx; | 91 | ++ iIdx; |
| 128 | } while (iIdx <= kiEndMbInSlice); | 92 | } while (iIdx <= kiEndMbInSlice); |
| 129 | } | 93 | } |