diff --git a/source/Lib/CommonLib/Quant.cpp b/source/Lib/CommonLib/Quant.cpp index c73ad6c79de801331fadffe5952a249460349ccc..fe8eb0ea95094461f917e266da78235c4d4caecc 100644 --- a/source/Lib/CommonLib/Quant.cpp +++ b/source/Lib/CommonLib/Quant.cpp @@ -1003,8 +1003,12 @@ void Quant::quant(TransformUnit &tu, const ComponentID &compID, const CCoeffBuf const uint32_t lfnstIdx = tu.cu->lfnstIdx; const int maxNumberOfCoeffs = lfnstIdx > 0 ? ((( uiWidth == 4 && uiHeight == 4 ) || ( uiWidth == 8 && uiHeight == 8) ) ? 8 : 16) : piQCoef.area(); memset( piQCoef.buf, 0, sizeof(TCoeff) * piQCoef.area() ); - for (int uiBlockPos = 0; uiBlockPos < maxNumberOfCoeffs; uiBlockPos++ ) + + const ScanElement* scan = g_scanOrder[SCAN_GROUPED_4x4][SCAN_DIAG][gp_sizeIdxInfo->idxFrom(uiWidth)][gp_sizeIdxInfo->idxFrom(uiHeight)]; + + for (int uiScanPos = 0; uiScanPos < maxNumberOfCoeffs; uiScanPos++) { + const int uiBlockPos = scan[uiScanPos].idx; const TCoeff iLevel = piCoef.buf[uiBlockPos]; const TCoeff iSign = (iLevel < 0 ? -1: 1);