diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h index 060b9a7c30ed56b544c1d6c83748e7d03cf559ed..013b045e5ee0fb37b0849eb7e61fb7a38e2892e3 100644 --- a/source/Lib/CommonLib/TypeDef.h +++ b/source/Lib/CommonLib/TypeDef.h @@ -224,6 +224,8 @@ #define JVET_R0099_DPB_HRD_PARAMETERS_SIGNALLING 1 // JVET-R0099: DPB and HRD parameter signalling for OLS +#define JVET_R0101_PROPOSAL2 1 // JVET-R0101 Proposal 2: Bug fix for signalling some syntax elements length + //########### place macros to be be kept below this line ############### #define JVET_R0164_MEAN_SCALED_SATD 1 // JVET-R0164: Use a mean scaled version of SATD in encoder decisions diff --git a/source/Lib/DecoderLib/SEIread.cpp b/source/Lib/DecoderLib/SEIread.cpp index efe6681f54ffdfdae78095d3e521348731a6a31b..4973c93b6d56b4509f3617af87cb8932fc5a3e21 100644 --- a/source/Lib/DecoderLib/SEIread.cpp +++ b/source/Lib/DecoderLib/SEIread.cpp @@ -771,10 +771,17 @@ void SEIReader::xParseSEIPictureTiming(SEIPictureTiming& sei, uint32_t payloadSi "nal_cpb_alt_initial_cpb_removal_offset_delta[ i ][ j ]"); sei.m_nalCpbAltInitialRemovalOffsetDelta[i][j] = symbol; } +#if JVET_R0101_PROPOSAL2 + sei_read_code(pDecodedMessageOutputStream, bp.m_cpbRemovalDelayLength, sei.m_nalCpbDelayOffset[i], + "nal_cpb_delay_offset[ i ]"); + sei_read_code(pDecodedMessageOutputStream, bp.m_dpbOutputDelayLength, sei.m_nalDpbDelayOffset[i], + "nal_dpb_delay_offset[ i ]"); +#else sei_read_code(pDecodedMessageOutputStream, bp.m_initialCpbRemovalDelayLength, sei.m_nalCpbDelayOffset[i], "nal_cpb_delay_offset[ i ]"); sei_read_code(pDecodedMessageOutputStream, bp.m_initialCpbRemovalDelayLength, sei.m_nalDpbDelayOffset[i], "nal_dpb_delay_offset[ i ]"); +#endif } } @@ -810,10 +817,17 @@ void SEIReader::xParseSEIPictureTiming(SEIPictureTiming& sei, uint32_t payloadSi "vcl_cpb_alt_initial_cpb_removal_offset_delta[ i ][ j ]"); sei.m_vclCpbAltInitialRemovalOffsetDelta[i][j] = symbol; } +#if JVET_R0101_PROPOSAL2 + sei_read_code(pDecodedMessageOutputStream, bp.m_cpbRemovalDelayLength, sei.m_vclCpbDelayOffset[i], + "vcl_cpb_delay_offset[ i ]"); + sei_read_code(pDecodedMessageOutputStream, bp.m_dpbOutputDelayLength, sei.m_vclDpbDelayOffset[i], + "vcl_dpb_delay_offset[ i ]"); +#else sei_read_code(pDecodedMessageOutputStream, bp.m_initialCpbRemovalDelayLength, sei.m_vclCpbDelayOffset[i], "vcl_cpb_delay_offset[ i ]"); sei_read_code(pDecodedMessageOutputStream, bp.m_initialCpbRemovalDelayLength, sei.m_vclDpbDelayOffset[i], "vcl_dpb_delay_offset[ i ]"); +#endif } } #else diff --git a/source/Lib/EncoderLib/SEIwrite.cpp b/source/Lib/EncoderLib/SEIwrite.cpp index 7a004ebab11b323b83a6223e20499162e2aeca5b..52b7ac2775dbb44ee8f496e7b42f7f7b2c6ad3e5 100644 --- a/source/Lib/EncoderLib/SEIwrite.cpp +++ b/source/Lib/EncoderLib/SEIwrite.cpp @@ -366,8 +366,13 @@ void SEIWriter::xWriteSEIPictureTiming(const SEIPictureTiming& sei, const SEIBuf WRITE_CODE(sei.m_nalCpbAltInitialRemovalOffsetDelta[i][j], bp.m_initialCpbRemovalDelayLength, "nal_cpb_alt_initial_cpb_removal_offset_delta[ i ][ j ]"); } +#if JVET_R0101_PROPOSAL2 + WRITE_CODE(sei.m_nalCpbDelayOffset[i], bp.m_cpbRemovalDelayLength, "nal_cpb_delay_offset[ i ]"); + WRITE_CODE(sei.m_nalDpbDelayOffset[i], bp.m_dpbOutputDelayLength, "nal_dpb_delay_offset[ i ]"); +#else WRITE_CODE(sei.m_nalCpbDelayOffset[i], bp.m_initialCpbRemovalDelayLength, "nal_cpb_delay_offset[ i ]"); WRITE_CODE(sei.m_nalDpbDelayOffset[i], bp.m_initialCpbRemovalDelayLength, "nal_dpb_delay_offset[ i ]"); +#endif } } @@ -383,8 +388,13 @@ void SEIWriter::xWriteSEIPictureTiming(const SEIPictureTiming& sei, const SEIBuf WRITE_CODE(sei.m_vclCpbAltInitialRemovalOffsetDelta[i][j], bp.m_initialCpbRemovalDelayLength, "vcl_cpb_alt_initial_cpb_removal_offset_delta[ i ][ j ]"); } +#if JVET_R0101_PROPOSAL2 + WRITE_CODE(sei.m_vclCpbDelayOffset[i], bp.m_cpbRemovalDelayLength, "vcl_cpb_delay_offset[ i ]"); + WRITE_CODE(sei.m_vclDpbDelayOffset[i], bp.m_dpbOutputDelayLength, "vcl_dpb_delay_offset[ i ]"); +#else WRITE_CODE(sei.m_vclCpbDelayOffset[i], bp.m_initialCpbRemovalDelayLength, "vcl_cpb_delay_offset[ i ]"); WRITE_CODE(sei.m_vclDpbDelayOffset[i], bp.m_initialCpbRemovalDelayLength, "vcl_dpb_delay_offset[ i ]"); +#endif } } #else