From 1b4d19a60b6c8c8c99d087e558cfa70b973c30fc Mon Sep 17 00:00:00 2001 From: Brian Heng <brian.heng@broadcom.com> Date: Wed, 5 Feb 2020 16:31:19 -0800 Subject: [PATCH] Fix for Ticket #866 - Chroma deblocking issues with max transform size --- source/Lib/CommonLib/LoopFilter.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/source/Lib/CommonLib/LoopFilter.cpp b/source/Lib/CommonLib/LoopFilter.cpp index ba4ff56166..1b23fa36ce 100644 --- a/source/Lib/CommonLib/LoopFilter.cpp +++ b/source/Lib/CommonLib/LoopFilter.cpp @@ -310,7 +310,8 @@ void LoopFilter::xDeblockCU( CodingUnit& cu, const DeblockEdgeDir edgeDir ) for( auto &currTU : CU::traverseTUs( cu ) ) { - const Area& areaTu = cu.Y().valid() ? currTU.block( COMPONENT_Y ) : area; + const Area& areaTu = cu.Y().valid() ? currTU.block( COMPONENT_Y ) : Area( recalcPosition( cu.chromaFormat, cu.chType, CHANNEL_TYPE_LUMA, currTU.blocks[cu.chType].pos() ), recalcSize( cu.chromaFormat, cu.chType, CHANNEL_TYPE_LUMA, currTU.blocks[cu.chType].size() ) ); + verEdgeFilter = m_stLFCUParam.internalEdge; horEdgeFilter = m_stLFCUParam.internalEdge; if( isCuCrossedByVirtualBoundaries ) @@ -320,7 +321,14 @@ void LoopFilter::xDeblockCU( CodingUnit& cu, const DeblockEdgeDir edgeDir ) xSetEdgefilterMultiple( cu, EDGE_VER, areaTu, verEdgeFilter ); xSetEdgefilterMultiple( cu, EDGE_HOR, areaTu, horEdgeFilter ); xSetMaxFilterLengthPQFromTransformSizes( edgeDir, cu, currTU ); - edgeIdx.push_back( ( edgeDir == EDGE_HOR ) ? ( currTU.blocks[cu.chType].y - cu.blocks[cu.chType].y ) / 4 : ( currTU.blocks[cu.chType].x - cu.blocks[cu.chType].x ) / 4 ); + if( cu.Y().valid() ) + { + edgeIdx.push_back( ( edgeDir == EDGE_HOR ) ? ( currTU.blocks[cu.chType].y - cu.blocks[cu.chType].y ) / 4 : ( currTU.blocks[cu.chType].x - cu.blocks[cu.chType].x ) / 4 ); + } + else + { + edgeIdx.push_back( ( edgeDir == EDGE_HOR ) ? (( currTU.blocks[cu.chType].y - cu.blocks[cu.chType].y ) << ::getComponentScaleY(COMPONENT_Cb, cu.chromaFormat)) / 4 : (( currTU.blocks[cu.chType].x - cu.blocks[cu.chType].x ) << ::getComponentScaleX(COMPONENT_Cb, cu.chromaFormat)) / 4 ); + } } bool mvSubBlocks = false; -- GitLab