diff --git a/source/Lib/CommonLib/CommonDef.h b/source/Lib/CommonLib/CommonDef.h index 281ff8ef4ac1c238223ec10ef9d5d40c3e20fe31..5583401204a114b10696ffc344f8e44d09d34ec7 100644 --- a/source/Lib/CommonLib/CommonDef.h +++ b/source/Lib/CommonLib/CommonDef.h @@ -350,7 +350,8 @@ static const int IQUANT_SHIFT = 6; static constexpr int SCALE_BITS = 15; // Precision for fractional bit estimates static constexpr double FRAC_BITS_SCALE = 1.0 / (1 << SCALE_BITS); -static const int SCALING_LIST_NUM = MAX_NUM_COMPONENT * (NUMBER_OF_PREDICTION_MODES - 1); ///< list number for quantization matrix +static const int SCALING_LIST_PRED_MODES = NUMBER_OF_PREDICTION_MODES - 2; +static const int SCALING_LIST_NUM = MAX_NUM_COMPONENT * SCALING_LIST_PRED_MODES; ///< list number for quantization matrix static const int SCALING_LIST_START_VALUE = 8; ///< start value for dpcm mode static const int MAX_MATRIX_COEF_NUM = 64; ///< max coefficient number for quantization matrix diff --git a/source/Lib/DecoderLib/VLCReader.cpp b/source/Lib/DecoderLib/VLCReader.cpp index c891672666dd723c7ea417fcb94f387010da2710..312fdeb0b6ac310c52c2ce02ad5acf639538cbc0 100644 --- a/source/Lib/DecoderLib/VLCReader.cpp +++ b/source/Lib/DecoderLib/VLCReader.cpp @@ -2682,7 +2682,7 @@ void HLSyntaxReader::parseScalingList(ScalingList* scalingList) { for(listId = 0; listId < SCALING_LIST_NUM; listId++) { - if (!(((sizeId == SCALING_LIST_2x2) && (listId % (SCALING_LIST_NUM / (NUMBER_OF_PREDICTION_MODES - 1)) == 0)) || ((sizeId > SCALING_LIST_32x32) && (listId % (SCALING_LIST_NUM / (NUMBER_OF_PREDICTION_MODES - 1)) != 0))))//2x2 luma + if (!(((sizeId == SCALING_LIST_2x2) && (listId % (SCALING_LIST_NUM / SCALING_LIST_PRED_MODES) == 0)) || ((sizeId > SCALING_LIST_32x32) && (listId % (SCALING_LIST_NUM / SCALING_LIST_PRED_MODES) != 0))))//2x2 luma { READ_FLAG( code, "scaling_list_pred_mode_flag"); scalingListPredModeFlag = (code) ? true : false; @@ -2693,7 +2693,7 @@ void HLSyntaxReader::parseScalingList(ScalingList* scalingList) if (sizeId == SCALING_LIST_64x64) { - code *= (SCALING_LIST_NUM / (NUMBER_OF_PREDICTION_MODES - 1)); // Adjust the decoded code for this size, to cope with the missing 32x32 chroma entries. + code *= (SCALING_LIST_NUM / SCALING_LIST_PRED_MODES); // Adjust the decoded code for this size, to cope with the missing 32x32 chroma entries. } scalingList->setRefMatrixId (sizeId,listId,(uint32_t)((int)(listId)-(code))); diff --git a/source/Lib/EncoderLib/VLCWriter.cpp b/source/Lib/EncoderLib/VLCWriter.cpp index 440b3ac71dcb74b234388e6c71b6e2f866eaa90a..90f9f3345bbb1413e20e4539484c82c6bdb6bd0e 100644 --- a/source/Lib/EncoderLib/VLCWriter.cpp +++ b/source/Lib/EncoderLib/VLCWriter.cpp @@ -1863,11 +1863,11 @@ void HLSWriter::codeScalingList( const ScalingList &scalingList ) //for each size for(uint32_t sizeId = SCALING_LIST_FIRST_CODED; sizeId <= SCALING_LIST_LAST_CODED; sizeId++) { - const int predListStep = (sizeId > SCALING_LIST_32x32 ? (SCALING_LIST_NUM / (NUMBER_OF_PREDICTION_MODES - 1)) : 1); // if 64x64, skip over chroma entries. + const int predListStep = (sizeId > SCALING_LIST_32x32 ? (SCALING_LIST_NUM / SCALING_LIST_PRED_MODES) : 1); // if 64x64, skip over chroma entries. for(uint32_t listId = 0; listId < SCALING_LIST_NUM; listId+=predListStep) { - if ((sizeId == SCALING_LIST_2x2) && ((listId % (SCALING_LIST_NUM / (NUMBER_OF_PREDICTION_MODES - 1)) == 0))) + if ((sizeId == SCALING_LIST_2x2) && ((listId % (SCALING_LIST_NUM / SCALING_LIST_PRED_MODES) == 0))) { continue; } @@ -1878,7 +1878,7 @@ void HLSWriter::codeScalingList( const ScalingList &scalingList ) if (sizeId > SCALING_LIST_32x32) //64x64 luma { // adjust the code, to cope with the missing chroma entries - WRITE_UVLC( ((int)listId - (int)scalingList.getRefMatrixId(sizeId, listId)) / (SCALING_LIST_NUM / (NUMBER_OF_PREDICTION_MODES - 1)), "scaling_list_pred_matrix_id_delta"); + WRITE_UVLC( ((int)listId - (int)scalingList.getRefMatrixId(sizeId, listId)) / (SCALING_LIST_NUM / SCALING_LIST_PRED_MODES), "scaling_list_pred_matrix_id_delta"); } else {