From e55688a82945bdfa0cdce13661cab949d80f3435 Mon Sep 17 00:00:00 2001 From: phil <cowanp@sharplabs.com> Date: Thu, 28 May 2020 09:42:23 -0700 Subject: [PATCH] JVET-R0101 Proposal 2: Bug fix for signalling some syntax elements length --- source/Lib/CommonLib/TypeDef.h | 2 ++ source/Lib/DecoderLib/SEIread.cpp | 14 ++++++++++++++ source/Lib/EncoderLib/SEIwrite.cpp | 10 ++++++++++ 3 files changed, 26 insertions(+) diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h index 060b9a7c3..013b045e5 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 efe6681f5..4973c93b6 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 7a004ebab..52b7ac277 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 -- GitLab