diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h index b5fc0c048c827e594f712a1ca0b0ab498a809133..2c5a8993f5a098250eb1ef2a866454b1c10afdd3 100644 --- a/source/Lib/CommonLib/TypeDef.h +++ b/source/Lib/CommonLib/TypeDef.h @@ -53,6 +53,9 @@ // clang-format off //########### place macros to be removed in next cycle below this line ############### + +#define JVET_X0128_V2_WPP 1 // JVET-X0128 method 2, VVC v2 WPP + #define JVET_X0079_MODIFIED_BITRATE 1 // JVET-X0079v3 (changes to JVET-W2005) #define JVET_X0106_INTRA_CONSTRAINT 1 // JVET-X0106 Constraint on non I=frames in Intra profiles diff --git a/source/Lib/DecoderLib/DecSlice.cpp b/source/Lib/DecoderLib/DecSlice.cpp index df27bae1ce4b014468107f9a82983fdd40e95c98..81bca9782dd50076e1ff85d51eed64aece92b17d 100644 --- a/source/Lib/DecoderLib/DecSlice.cpp +++ b/source/Lib/DecoderLib/DecSlice.cpp @@ -203,6 +203,9 @@ void DecSlice::decompressSlice( Slice* slice, InputBitstream* bitstream, int deb { // Top is available, so use it. cabacReader.getCtx() = m_entropyCodingSyncContextState; +#if JVET_X0128_V2_WPP + cabacReader.getCtx().riceStatReset(slice->getSPS()->getBitDepth(CHANNEL_TYPE_LUMA), slice->getSPS()->getSpsRangeExtension().getPersistentRiceAdaptationEnabledFlag()); +#endif cs.setPrevPLT(m_palettePredictorSyncState); } pic->m_prevQP[0] = pic->m_prevQP[1] = slice->getSliceQp(); diff --git a/source/Lib/EncoderLib/EncSlice.cpp b/source/Lib/EncoderLib/EncSlice.cpp index f640dd112481e745f1c15daf604085c77555cf2e..8c0560d0723d97d8be8fdeb7fdb8a5cc42fa6984 100644 --- a/source/Lib/EncoderLib/EncSlice.cpp +++ b/source/Lib/EncoderLib/EncSlice.cpp @@ -1774,6 +1774,11 @@ void EncSlice::encodeCtus( Picture* pcPic, const bool bCompressEntireSlice, cons { // Top is available, we use it. pCABACWriter->getCtx() = pEncLib->m_entropyCodingSyncContextState; +#if JVET_X0128_V2_WPP + pCABACWriter->getCtx().riceStatReset( + pcSlice->getSPS()->getBitDepth(CHANNEL_TYPE_LUMA), + pcSlice->getSPS()->getSpsRangeExtension().getPersistentRiceAdaptationEnabledFlag()); +#endif cs.setPrevPLT(pEncLib->m_palettePredictorSyncState); } prevQP[0] = prevQP[1] = pcSlice->getSliceQp(); @@ -2054,6 +2059,11 @@ void EncSlice::encodeSlice ( Picture* pcPic, OutputBitstream* pcSubstreams, ui { // Top is available, so use it. m_CABACWriter->getCtx() = m_entropyCodingSyncContextState; +#if JVET_X0128_V2_WPP + m_CABACWriter->getCtx().riceStatReset( + pcSlice->getSPS()->getBitDepth(CHANNEL_TYPE_LUMA), + pcSlice->getSPS()->getSpsRangeExtension().getPersistentRiceAdaptationEnabledFlag()); +#endif cs.setPrevPLT(m_palettePredictorSyncState); } }