Showing the changes to codec/decoder (2 of 2 files). Show all
Unified · Split
| @@ -133,6 +133,7 @@ enum { · 132 unmodified lines | ||
| 133 | 133 | ERR_INFO_INVALID_CBP, |
| 134 | 134 | ERR_INFO_DQUANT_OUT_OF_RANGE, |
| 135 | 135 | ERR_INFO_CAVLC_INVALID_PREFIX, |
| 136 | + ERR_INFO_CAVLC_INVALID_LEVEL, | |
| 136 | 137 | ERR_INFO_CAVLC_INVALID_TOTAL_COEFF_OR_TRAILING_ONES, |
| 137 | 138 | ERR_INFO_CAVLC_INVALID_ZERO_LEFT, |
| 138 | 139 | ERR_INFO_CAVLC_INVALID_RUN_BEFORE, |
| @@ -718,8 +718,10 @@ int32_t WelsResidualBlockCavlc (SVlcTable* pVlcTable, uint8_t* pNonZeroCountCach · 717 unmodified lines | ||
| 718 | 718 | if ((uiTrailingOnes > 3) || (uiTotalCoeff > 16)) { /////////////////check uiTrailingOnes and uiTotalCoeff |
| 719 | 719 | return ERR_INFO_CAVLC_INVALID_TOTAL_COEFF_OR_TRAILING_ONES; |
| 720 | 720 | } |
| 721 | − iUsedBits += CavlcGetLevelVal (iLevel, &sReadBitsCache, uiTotalCoeff, uiTrailingOnes); | |
| 722 | − | |
| 721 | + if ((i = CavlcGetLevelVal (iLevel, &sReadBitsCache, uiTotalCoeff, uiTrailingOnes)) == -1) { | |
| 722 | + return ERR_INFO_CAVLC_INVALID_LEVEL; | |
| 723 | + } | |
| 724 | + iUsedBits += i; | |
| 723 | 725 | if (uiTotalCoeff < iMaxNumCoeff) { |
| 724 | 726 | iUsedBits += CavlcGetTotalZeros (iZerosLeft, &sReadBitsCache, uiTotalCoeff, pVlcTable, bChromaDc); |
| 725 | 727 | } else { |