Showing the changes to codec/decoder/core/src/decoder.cpp (1 of 3 files). Show all
Unified · Split
| @@ -1017,10 +1017,15 @@ void UpdateDecStatNoFreezingInfo (PWelsDecoderContext pCtx) { · 1016 unmodified lines | |||
| 1017 | //update QP info | 1017 | //update QP info |
| 1018 | int32_t iTotalQp = 0; | 1018 | int32_t iTotalQp = 0; |
| 1019 | const int32_t kiMbNum = pCurDq->iMbWidth * pCurDq->iMbHeight; | 1019 | const int32_t kiMbNum = pCurDq->iMbWidth * pCurDq->iMbHeight; |
| 1020 | int32_t iCorrectMbNum = 0; | ||
| 1020 | for (int32_t iMb = 0; iMb < kiMbNum; ++iMb) { | 1021 | for (int32_t iMb = 0; iMb < kiMbNum; ++iMb) { |
| 1022 | iCorrectMbNum += (int32_t) pCurDq->pMbCorrectlyDecodedFlag[iMb]; | ||
| 1021 | iTotalQp += pCurDq->pLumaQp[iMb] * pCurDq->pMbCorrectlyDecodedFlag[iMb]; | 1023 | iTotalQp += pCurDq->pLumaQp[iMb] * pCurDq->pMbCorrectlyDecodedFlag[iMb]; |
| 1022 | } | 1024 | } |
| 1023 | iTotalQp /= kiMbNum; | 1025 | if (iCorrectMbNum == 0) //non MB is correct, should remain QP statistic info |
| 1026 | iTotalQp = pDecStat->iAvgLumaQp; | ||
| 1027 | else | ||
| 1028 | iTotalQp /= iCorrectMbNum; | ||
| 1024 | if (pDecStat->uiDecodedFrameCount + 1 == 0) { //maximum uint32_t reached | 1029 | if (pDecStat->uiDecodedFrameCount + 1 == 0) { //maximum uint32_t reached |
| 1025 | ResetDecStatNums (pDecStat); | 1030 | ResetDecStatNums (pDecStat); |
| 1026 | pDecStat->iAvgLumaQp = iTotalQp; | 1031 | pDecStat->iAvgLumaQp = iTotalQp; |