diff --git a/source/Lib/DecoderLib/VLCReader.cpp b/source/Lib/DecoderLib/VLCReader.cpp index 74e3691886f2813052b9db4d9d4ee7f87e308f70..9cd43c23953fdcff74fed982adf1cab8c4749984 100644 --- a/source/Lib/DecoderLib/VLCReader.cpp +++ b/source/Lib/DecoderLib/VLCReader.cpp @@ -1854,14 +1854,21 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS) for (int i = 0; i < numQpTables; i++) { int32_t qpTableStart = 0; - READ_SVLC(qpTableStart, "qp_table_starts_minus26"); chromaQpMappingTableParams.setQpTableStartMinus26(i, qpTableStart); - READ_UVLC(uiCode, "num_points_in_qp_table_minus1"); chromaQpMappingTableParams.setNumPtsInCQPTableMinus1(i,uiCode); + READ_SVLC(qpTableStart, "sps_qp_table_starts_minus26"); + chromaQpMappingTableParams.setQpTableStartMinus26(i, qpTableStart); + CHECK(qpTableStart < -26 - pcSPS->getQpBDOffset(CHANNEL_TYPE_LUMA) || qpTableStart > 36, + "The value of sps_qp_table_start_minus26[ i ] shall be in the range of −26 − QpBdOffset to 36 inclusive"); + READ_UVLC(uiCode, "sps_num_points_in_qp_table_minus1"); + chromaQpMappingTableParams.setNumPtsInCQPTableMinus1(i, uiCode); + CHECK(uiCode > 36 - qpTableStart, "The value of sps_num_points_in_qp_table_minus1[ i ] shall be in the range of " + "0 to 36 - sps_qp_table_start_minus26[ i ], inclusive"); std::vector<int> deltaQpInValMinus1(chromaQpMappingTableParams.getNumPtsInCQPTableMinus1(i) + 1); std::vector<int> deltaQpOutVal(chromaQpMappingTableParams.getNumPtsInCQPTableMinus1(i) + 1); for (int j = 0; j <= chromaQpMappingTableParams.getNumPtsInCQPTableMinus1(i); j++) { - READ_UVLC(uiCode, "delta_qp_in_val_minus1"); deltaQpInValMinus1[j] = uiCode; - READ_UVLC(uiCode, "delta_qp_diff_val"); + READ_UVLC(uiCode, "sps_delta_qp_in_val_minus1"); + deltaQpInValMinus1[j] = uiCode; + READ_UVLC(uiCode, "sps_delta_qp_diff_val"); deltaQpOutVal[j] = uiCode ^ deltaQpInValMinus1[j]; } chromaQpMappingTableParams.setDeltaQpInValMinus1(i, deltaQpInValMinus1); diff --git a/source/Lib/EncoderLib/VLCWriter.cpp b/source/Lib/EncoderLib/VLCWriter.cpp index c3c0c5019b4dbc901a1a053f5ce5d72ea98576d9..8fe2cefbdec37c972a2ed7d65824fb14c924518b 100644 --- a/source/Lib/EncoderLib/VLCWriter.cpp +++ b/source/Lib/EncoderLib/VLCWriter.cpp @@ -1089,14 +1089,14 @@ void HLSWriter::codeSPS( const SPS* pcSPS ) CHECK(numQpTables != chromaQpMappingTable.getNumQpTables(), " numQpTables does not match at encoder side "); for (int i = 0; i < numQpTables; i++) { - WRITE_SVLC(chromaQpMappingTable.getQpTableStartMinus26(i), "qp_table_starts_minus26"); - WRITE_UVLC(chromaQpMappingTable.getNumPtsInCQPTableMinus1(i), "num_points_in_qp_table_minus1"); + WRITE_SVLC(chromaQpMappingTable.getQpTableStartMinus26(i), "sps_qp_table_starts_minus26"); + WRITE_UVLC(chromaQpMappingTable.getNumPtsInCQPTableMinus1(i), "sps_num_points_in_qp_table_minus1"); for (int j = 0; j <= chromaQpMappingTable.getNumPtsInCQPTableMinus1(i); j++) { - WRITE_UVLC(chromaQpMappingTable.getDeltaQpInValMinus1(i,j), "delta_qp_in_val_minus1"); + WRITE_UVLC(chromaQpMappingTable.getDeltaQpInValMinus1(i, j), "sps_delta_qp_in_val_minus1"); WRITE_UVLC(chromaQpMappingTable.getDeltaQpOutVal(i, j) ^ chromaQpMappingTable.getDeltaQpInValMinus1(i, j), - "delta_qp_diff_val"); + "sps_delta_qp_diff_val"); } } }