History

fix decodestatus uiEcRatio calc bug

dong zhang committed 11 years ago

Commit ecc8ae61 parent 065c3a74 files · +15 −19Browse files

Showing the changes to codec/decoder/core/src/error_concealment.cpp (1 of 4 files). Show all

Unified · Split

codec/decoder/core/src/error_concealment.cpp+8−14
@@ -82,6 +82,8 @@ void DoErrorConFrameCopy (PWelsDecoderContext pCtx) { · 81 unmodified lines
8282 uint32_t uiHeightInPixelY = (pCtx->pSps->iMbHeight) << 4;
8383 int32_t iStrideY = pDstPic->iLinesize[0];
8484 int32_t iStrideUV = pDstPic->iLinesize[1];
85+ pCtx->iMbNum = pCtx->pSps->iMbWidth * pCtx->pSps->iMbHeight;
86+ pCtx->iMbEcedNum = pCtx->iMbNum;
8587 if ((pCtx->eErrorConMethod == ERROR_CON_FRAME_COPY) && (pCtx->pCurDqLayer->sLayerInfo.sNalHeaderExt.bIdrFlag))
8688 pSrcPic = NULL; //no cross IDR method, should fill in data instead of copy
8789 if (pSrcPic == NULL) { //no ref pic, assign specific data to picture
@@ -105,10 +107,10 @@ void DoErrorConSliceCopy (PWelsDecoderContext pCtx) { · 17 unmodified lines
105107 if ((pCtx->eErrorConMethod == ERROR_CON_SLICE_COPY) && (pCtx->pCurDqLayer->sLayerInfo.sNalHeaderExt.bIdrFlag))
106108 pSrcPic = NULL; //no cross IDR method, should fill in data instead of copy
107109
108− int32_t iMbNum = pCtx->pSps->iMbWidth * pCtx->pSps->iMbHeight;
110+ pCtx->iMbNum = pCtx->pSps->iMbWidth * pCtx->pSps->iMbHeight;
109111 //uint8_t *pDstData[3], *pSrcData[3];
110112 bool* pMbCorrectlyDecodedFlag = pCtx->pCurDqLayer->pMbCorrectlyDecodedFlag;
111− int32_t iMbEcedNum = 0;
113+ pCtx->iMbEcedNum = 0;
112114 //Do slice copy late
113115 int32_t iMbXyIndex;
114116 uint8_t* pSrcData, *pDstData;
@@ -118,7 +120,7 @@ void DoErrorConSliceCopy (PWelsDecoderContext pCtx) { · 3 unmodified lines
118120 for (int32_t iMbX = 0; iMbX < iMbWidth; ++iMbX) {
119121 iMbXyIndex = iMbY * iMbWidth + iMbX;
120122 if (!pMbCorrectlyDecodedFlag[iMbXyIndex]) {
121− iMbEcedNum++;
123+ pCtx->iMbEcedNum++;
122124 if (pSrcPic != NULL) {
123125 iSrcStride = pSrcPic->iLinesize[0];
124126 //Y component
@@ -156,10 +158,6 @@ void DoErrorConSliceCopy (PWelsDecoderContext pCtx) { · 31 unmodified lines
156158 } //!pMbCorrectlyDecodedFlag[iMbXyIndex]
157159 } //iMbX
158160 } //iMbY
159−
160− if (!pCtx->bFreezeOutput)
161− pCtx->sDecoderStatistics.uiAvgEcRatio = (pCtx->sDecoderStatistics.uiAvgEcRatio * pCtx->sDecoderStatistics.uiEcFrameNum)
162− + ((iMbEcedNum * 100) / iMbNum) ;
163161 }
164162
165163 //Do error concealment using slice MV copy method
@@ -368,9 +366,9 @@ void DoErrorConSliceMVCopy (PWelsDecoderContext pCtx) { · 202 unmodified lines
368366 PPicture pDstPic = pCtx->pDec;
369367 PPicture pSrcPic = pCtx->pPreviousDecodedPictureInDpb;
370368
371− int32_t iMbNum = pCtx->pSps->iMbWidth * pCtx->pSps->iMbHeight;
369+ pCtx->iMbNum = pCtx->pSps->iMbWidth * pCtx->pSps->iMbHeight;
372370 bool* pMbCorrectlyDecodedFlag = pCtx->pCurDqLayer->pMbCorrectlyDecodedFlag;
373− int32_t iMbEcedNum = 0;
371+ pCtx->iMbEcedNum = 0;
374372 int32_t iMbXyIndex;
375373 uint8_t* pDstData;
376374 uint32_t iDstStride = pDstPic->iLinesize[0];
@@ -395,7 +393,7 @@ void DoErrorConSliceMVCopy (PWelsDecoderContext pCtx) { · 18 unmodified lines
395393 for (int32_t iMbX = 0; iMbX < iMbWidth; ++iMbX) {
396394 iMbXyIndex = iMbY * iMbWidth + iMbX;
397395 if (!pMbCorrectlyDecodedFlag[iMbXyIndex]) {
398− iMbEcedNum++;
396+ pCtx->iMbEcedNum++;
399397 if (pSrcPic != NULL) {
400398 DoMbECMvCopy (pCtx, pDstPic, pSrcPic, iMbXyIndex, iMbX, iMbY, &sMCRefMem);
401399 } else { //pSrcPic == NULL
@@ -422,10 +420,6 @@ void DoErrorConSliceMVCopy (PWelsDecoderContext pCtx) { · 20 unmodified lines
422420 } //!pMbCorrectlyDecodedFlag[iMbXyIndex]
423421 } //iMbX
424422 } //iMbY
425−
426− if (!pCtx->bFreezeOutput)
427− pCtx->sDecoderStatistics.uiAvgEcRatio = (pCtx->sDecoderStatistics.uiAvgEcRatio * pCtx->sDecoderStatistics.uiEcFrameNum)
428− + ((iMbEcedNum * 100) / iMbNum) ;
429423 }
430424
431425 //Mark erroneous frame as Ref Pic into DPB

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t