mem mem decstatictis time change time change set decTime=0
Showing the changes to codec/decoder/core/src/error_concealment.cpp (1 of 9 files). Show all
Unified · Split
| @@ -98,9 +98,10 @@ void DoErrorConSliceCopy (PWelsDecoderContext pCtx) { · 97 unmodified lines | ||
| 98 | 98 | PPicture pDstPic = pCtx->pDec; |
| 99 | 99 | PPicture pSrcPic = pCtx->pPreviousDecodedPictureInDpb; |
| 100 | 100 | |
| 101 | + int32_t iMbNum = pCtx->pSps->iMbWidth * pCtx->pSps->iMbHeight; | |
| 101 | 102 | //uint8_t *pDstData[3], *pSrcData[3]; |
| 102 | 103 | bool* pMbCorrectlyDecodedFlag = pCtx->pCurDqLayer->pMbCorrectlyDecodedFlag; |
| 103 | − | |
| 104 | + int32_t iMbEcedNum = 0; | |
| 104 | 105 | //Do slice copy late |
| 105 | 106 | int32_t iMbXyIndex; |
| 106 | 107 | uint8_t* pSrcData, *pDstData; |
| @@ -110,6 +111,7 @@ void DoErrorConSliceCopy (PWelsDecoderContext pCtx) { · 3 unmodified lines | ||
| 110 | 111 | for (int32_t iMbX = 0; iMbX < iMbWidth; ++iMbX) { |
| 111 | 112 | iMbXyIndex = iMbY * iMbWidth + iMbX; |
| 112 | 113 | if (!pMbCorrectlyDecodedFlag[iMbXyIndex]) { |
| 114 | + iMbEcedNum++; | |
| 113 | 115 | if (pSrcPic != NULL) { |
| 114 | 116 | iSrcStride = pSrcPic->iLinesize[0]; |
| 115 | 117 | //Y component |
| @@ -147,6 +149,9 @@ void DoErrorConSliceCopy (PWelsDecoderContext pCtx) { · 31 unmodified lines | ||
| 147 | 149 | } //!pMbCorrectlyDecodedFlag[iMbXyIndex] |
| 148 | 150 | } //iMbX |
| 149 | 151 | } //iMbY |
| 152 | + | |
| 153 | + pCtx->sDecoderStatistics.uiAvgEcRatio = (pCtx->sDecoderStatistics.uiAvgEcRatio * pCtx->sDecoderStatistics.uiEcFrameNum) | |
| 154 | + + ((iMbEcedNum * 100) / iMbNum) ; | |
| 150 | 155 | } |
| 151 | 156 | |
| 152 | 157 | |