From b4ae8bceba3f74c9a9485e96641961a55f19f156 Mon Sep 17 00:00:00 2001 From: Yue Yu <yue.yu@oppo.com> Date: Thu, 28 Oct 2021 16:52:29 +0000 Subject: [PATCH] JVET-X0128 method 2, WPP --- source/Lib/CommonLib/TypeDef.h | 3 +++ source/Lib/DecoderLib/DecSlice.cpp | 3 +++ source/Lib/EncoderLib/EncSlice.cpp | 10 ++++++++++ 3 files changed, 16 insertions(+) diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h index b5fc0c048..2c5a8993f 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 df27bae1c..81bca9782 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 f640dd112..8c0560d07 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); } } -- GitLab