Skip to content
Snippets Groups Projects

Fix for Ticket #866 - Chroma deblocking issues with max transform size

Merged Brian Heng requested to merge bheng/VVCSoftware_VTM:fix_ticket_866 into master
1 file
+ 10
2
Compare changes
  • Side-by-side
  • Inline
@@ -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;
Loading