diff --git a/source/Lib/CommonLib/InterPrediction.cpp b/source/Lib/CommonLib/InterPrediction.cpp index eeb93d83eab0d294384adc98b971ef731d46e2fc..ea55023c1a7a3d512c60238e82cab25357776b4b 100644 --- a/source/Lib/CommonLib/InterPrediction.cpp +++ b/source/Lib/CommonLib/InterPrediction.cpp @@ -220,7 +220,11 @@ void InterPrediction::init( RdCost* pcRdCost, ChromaFormat chromaFormatIDC, cons } if (m_IBCBuffer.bufs.empty()) { +#if JVET_P1018_IBC_NO_WRAPAROUND + m_IBCBufferWidth = g_IBCBufferSize / ctuSize; +#else m_IBCBufferWidth = 128 * 128 / ctuSize; +#endif m_IBCBuffer.create(UnitArea(chromaFormatIDC, Area(0, 0, m_IBCBufferWidth, ctuSize))); } } diff --git a/source/Lib/CommonLib/Rom.h b/source/Lib/CommonLib/Rom.h index fe144b2dfe8dde685fb8d40bf447019d4dc3b66b..8c61f66b77c3f4ce59c3f9607b0b8282aca85a28 100644 --- a/source/Lib/CommonLib/Rom.h +++ b/source/Lib/CommonLib/Rom.h @@ -226,5 +226,9 @@ extern const uint8_t g_paletteQuant[52]; extern uint8_t g_paletteRunTopLut[5]; extern uint8_t g_paletteRunLeftLut[5]; +#if JVET_P1018_IBC_NO_WRAPAROUND +const int g_IBCBufferSize = 256 * 128; +#endif + #endif //__TCOMROM__ diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h index b528e74c15e574f68290fd2f9dadffd43326727b..c66902d8668d33cb3116f101a73a3919bffbd551 100644 --- a/source/Lib/CommonLib/TypeDef.h +++ b/source/Lib/CommonLib/TypeDef.h @@ -83,6 +83,8 @@ #define JVET_P0325_CHANGE_MERGE_CANDIDATE_ORDER 1 // JVET-P0325: reorder the spatial merge candidates +#define JVET_P1018_IBC_NO_WRAPAROUND 1 // JVET-P1018: Disable reference sample wrapping around + #define JVET_P0406_YUV_FMT_GENERALIZATION_LDT 1 // JVET-P0406: Generalization of local dual tree (LDT) for different YUV formats #define JVET_P0578_MINIMUM_CU_SIZE_CONSTRAINT 1 // JVET-P0578: minimum CU size constraint diff --git a/source/Lib/DecoderLib/DecCu.cpp b/source/Lib/DecoderLib/DecCu.cpp index 66c22c9f70b57b90913e33794c27216ef83972b9..f56cb731305ff1555fad1c6df893aa0863d66cb5 100644 --- a/source/Lib/DecoderLib/DecCu.cpp +++ b/source/Lib/DecoderLib/DecCu.cpp @@ -129,7 +129,11 @@ void DecCu::decompressCtu( CodingStructure& cs, const UnitArea& ctuArea ) const int vSize = cs.slice->getSPS()->getMaxCUHeight() > 64 ? 64 : cs.slice->getSPS()->getMaxCUHeight(); if((currCU.Y().x % vSize) == 0 && (currCU.Y().y % vSize) == 0) { +#if JVET_P1018_IBC_NO_WRAPAROUND + m_pcInterPred->resetVPDUforIBC(cs.pcv->chrFormat, cs.slice->getSPS()->getMaxCUHeight(), vSize, currCU.Y().x + g_IBCBufferSize / cs.slice->getSPS()->getMaxCUHeight() / 2, currCU.Y().y); +#else m_pcInterPred->resetVPDUforIBC(cs.pcv->chrFormat, cs.slice->getSPS()->getMaxCUHeight(), vSize, currCU.Y().x, currCU.Y().y); +#endif } } #if !JVET_P0400_REMOVE_SHARED_MERGE_LIST