diff --git a/source/Lib/CommonLib/AdaptiveLoopFilter.cpp b/source/Lib/CommonLib/AdaptiveLoopFilter.cpp index 912fb32ab20c827e246a41ed70473c35906ada27..425a0929b31b56a884affffb2780d1f3af1e5453 100644 --- a/source/Lib/CommonLib/AdaptiveLoopFilter.cpp +++ b/source/Lib/CommonLib/AdaptiveLoopFilter.cpp @@ -447,7 +447,11 @@ void AdaptiveLoopFilter::ALFProcess(CodingStructure& cs) m_filter7x7Blk(m_classifier, recYuv, buf, blkDst, blkSrc, COMPONENT_Y, coeff, clip, m_clpRngs.comp[COMPONENT_Y], cs , m_alfVBLumaCTUHeight #if JVET_O0625_ALF_PADDING +#if JVET_P0158_ALIGN_ALF_VB + , m_alfVBLumaPos, alfBryList +#else , ( ( yPos + pcv.maxCUHeight >= pcv.lumaHeight ) ? pcv.lumaHeight : m_alfVBLumaPos ), alfBryList +#endif #else , ((yPos + pcv.maxCUHeight >= pcv.lumaHeight) ? pcv.lumaHeight : m_alfVBLumaPos) #endif @@ -468,7 +472,11 @@ void AdaptiveLoopFilter::ALFProcess(CodingStructure& cs) m_filter5x5Blk(m_classifier, recYuv, buf, blkDst, blkSrc, compID, m_chromaCoeffFinal[alt_num], m_chromaClippFinal[alt_num], m_clpRngs.comp[compIdx], cs , m_alfVBChmaCTUHeight #if JVET_O0625_ALF_PADDING +#if JVET_P0158_ALIGN_ALF_VB + , m_alfVBChmaPos, alfBryList); +#else , ( ( yPos + pcv.maxCUHeight >= pcv.lumaHeight ) ? pcv.lumaHeight : m_alfVBChmaPos ), alfBryList ); +#endif #else , ((yPos + pcv.maxCUHeight >= pcv.lumaHeight) ? pcv.lumaHeight : m_alfVBChmaPos)); #endif @@ -508,7 +516,11 @@ void AdaptiveLoopFilter::ALFProcess(CodingStructure& cs) m_filter7x7Blk(m_classifier, recYuv, tmpYuv, blk, blk, COMPONENT_Y, coeff, clip, m_clpRngs.comp[COMPONENT_Y], cs , m_alfVBLumaCTUHeight #if JVET_O0625_ALF_PADDING +#if JVET_P0158_ALIGN_ALF_VB + , m_alfVBLumaPos, alfBryList +#else , ( ( yPos + pcv.maxCUHeight >= pcv.lumaHeight ) ? pcv.lumaHeight : m_alfVBLumaPos ), alfBryList +#endif #else , ((yPos + pcv.maxCUHeight >= pcv.lumaHeight) ? pcv.lumaHeight : m_alfVBLumaPos) #endif @@ -528,7 +540,11 @@ void AdaptiveLoopFilter::ALFProcess(CodingStructure& cs) m_filter5x5Blk(m_classifier, recYuv, tmpYuv, blk, blk, compID, m_chromaCoeffFinal[alt_num], m_chromaClippFinal[alt_num], m_clpRngs.comp[compIdx], cs , m_alfVBChmaCTUHeight #if JVET_O0625_ALF_PADDING +#if JVET_P0158_ALIGN_ALF_VB + , m_alfVBChmaPos, alfBryList); +#else , ( ( yPos + pcv.maxCUHeight >= pcv.lumaHeight ) ? pcv.lumaHeight : m_alfVBChmaPos ), alfBryList ); +#endif #else , ((yPos + pcv.maxCUHeight >= pcv.lumaHeight) ? pcv.lumaHeight : m_alfVBChmaPos)); #endif diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h index 841a7f0f43b1a53f68c3f889ef6c9a8702c9e4e7..9ebce3ec624bb2cc125c99a02768ec42cf9acf47 100644 --- a/source/Lib/CommonLib/TypeDef.h +++ b/source/Lib/CommonLib/TypeDef.h @@ -94,6 +94,8 @@ #define JVET_P0418_ALIGN_MLRP_CCLM 1 // JVET-P0418: Align MLRP with CCLM in terms of reference lines/columns +#define JVET_P0158_ALIGN_ALF_VB 1 // JVET-P0158: Apply ALF VB on the bottom CTU row + #define JVET_O0145_ENTRYPOINT_SIGNALLING 0 // JVET-O0145: Not signalling num_entry_point_offsets but derive it at decoder #define JVET_O0625_ALF_PADDING 1 // JVET-O0625/O0654/O0662: Unified padding method in ALF diff --git a/source/Lib/EncoderLib/EncAdaptiveLoopFilter.cpp b/source/Lib/EncoderLib/EncAdaptiveLoopFilter.cpp index 35aa25c7688bbbce6656b98bfb2cff2d4405a3f4..bdb6e92eb10348af6e5eb5a11fd672bc85cf5330 100644 --- a/source/Lib/EncoderLib/EncAdaptiveLoopFilter.cpp +++ b/source/Lib/EncoderLib/EncAdaptiveLoopFilter.cpp @@ -2961,7 +2961,11 @@ void EncAdaptiveLoopFilter::alfReconstructor(CodingStructure& cs, const PelUnitB m_filter7x7Blk(m_classifier, recBuf, buf, blkDst, blkSrc, COMPONENT_Y, coeff, clip, m_clpRngs.comp[COMPONENT_Y], cs , m_alfVBLumaCTUHeight #if JVET_O0625_ALF_PADDING +#if JVET_P0158_ALIGN_ALF_VB + , m_alfVBLumaPos, alfBryList +#else , ( ( yPos + pcv.maxCUHeight >= pcv.lumaHeight ) ? pcv.lumaHeight : m_alfVBLumaPos ), alfBryList +#endif #else , ((yPos + pcv.maxCUHeight >= pcv.lumaHeight) ? pcv.lumaHeight : m_alfVBLumaPos) #endif @@ -2981,7 +2985,11 @@ void EncAdaptiveLoopFilter::alfReconstructor(CodingStructure& cs, const PelUnitB m_filter5x5Blk(m_classifier, recBuf, buf, blkDst, blkSrc, compID, m_chromaCoeffFinal[alt_num], m_chromaClippFinal[alt_num], m_clpRngs.comp[compIdx], cs , m_alfVBChmaCTUHeight #if JVET_O0625_ALF_PADDING +#if JVET_P0158_ALIGN_ALF_VB + , m_alfVBChmaPos, alfBryList +#else , ( ( yPos + pcv.maxCUHeight >= pcv.lumaHeight ) ? pcv.lumaHeight : m_alfVBChmaPos ), alfBryList +#endif #else , ((yPos + pcv.maxCUHeight >= pcv.lumaHeight) ? pcv.lumaHeight : m_alfVBChmaPos) #endif @@ -3018,7 +3026,11 @@ void EncAdaptiveLoopFilter::alfReconstructor(CodingStructure& cs, const PelUnitB m_filter7x7Blk(m_classifier, recBuf, recExtBuf, blk, blk, COMPONENT_Y, coeff, clip, m_clpRngs.comp[COMPONENT_Y], cs , m_alfVBLumaCTUHeight #if JVET_O0625_ALF_PADDING +#if JVET_P0158_ALIGN_ALF_VB + , m_alfVBLumaPos, alfBryList +#else , ( ( yPos + pcv.maxCUHeight >= pcv.lumaHeight ) ? pcv.lumaHeight : m_alfVBLumaPos ), alfBryList +#endif #else , ((yPos + pcv.maxCUHeight >= pcv.lumaHeight) ? pcv.lumaHeight : m_alfVBLumaPos) #endif @@ -3037,7 +3049,11 @@ void EncAdaptiveLoopFilter::alfReconstructor(CodingStructure& cs, const PelUnitB m_filter5x5Blk(m_classifier, recBuf, recExtBuf, blk, blk, compID, m_chromaCoeffFinal[alt_num], m_chromaClippFinal[alt_num], m_clpRngs.comp[compIdx], cs , m_alfVBChmaCTUHeight #if JVET_O0625_ALF_PADDING +#if JVET_P0158_ALIGN_ALF_VB + , m_alfVBChmaPos, alfBryList +#else , ( ( yPos + pcv.maxCUHeight >= pcv.lumaHeight ) ? pcv.lumaHeight : m_alfVBChmaPos ), alfBryList +#endif #else , ((yPos + pcv.maxCUHeight >= pcv.lumaHeight) ? pcv.lumaHeight : m_alfVBChmaPos) #endif