Opened 3 months ago

Closed 3 months ago

#417 closed defect (fixed)

Mismatch with spec on regular_merge_flag parsing

Reported by: forayr Owned by:
Priority: minor Milestone: VTM-6.0
Component: VTM Version: VTM-5.2
Keywords: Cc: ksuehring, XiangLi, fbossen, jvet@…

Description

In spec:

  if( ( cbWidth * cbHeight ) >= 64  &&  ( (sps_ciip_enabled_flag &&  
     cu_skip_flag[ x0 ][ y0 ] = = 0  &&  cbWidth < 128  &&  cbHeight < 128) | | 
     ( sps_triangle_enabled_flag  &&  MaxNumTriangleMergeCand > 1  &&  
     slice_type = = B ) ) )
     regular_merge_flag[ x0 ][ y0 ]

In vtm:

const bool triangleAvailable = pu.cu->cs->slice->getSPS()->getUseTriangle() && pu.cu->cs->slice->isInterB();
const bool ciipAvailable = pu.cs->sps->getUseMHIntra() && !pu.cu->skip && pu.cu->lwidth() < MAX_CU_SIZE && pu.cu->lheight() < MAX_CU_SIZE;
if (pu.cu->lwidth() * pu.cu->lheight() >= 64
    && (triangleAvailable || ciipAvailable))
{
  cu.firstPU->regularMergeFlag = m_BinDecoder.decodeBin(Ctx::RegularMergeFlag(cu.skip ? 0 : 1));
}

The condition on MaxNumTriangleMergeCand is missing in the derivation of triangleAvailable.

Change history (1)

comment:1 Changed 3 months ago by XiangLi

  • Milestone set to VTM-6.0
  • Resolution set to fixed
  • Status changed from new to closed
Note: See TracTickets for help on using tickets.