Opened 5 years ago

Closed 5 years ago

#847 closed defect (fixed)

Typo of signaling condition for chroma intra prediction mode (cclm_mode_{flag,idx}, intra_chroma_pred_mode) in WD

Reported by: tsukuba.takeshi Owned by:
Priority: minor Milestone:
Component: spec Version: VVC D8 vB
Keywords: Cc: ksuehring, bbross, XiangLi, fbossen, jvet@…

Description

In SW(2b6a7e1a), intra_chroma_pred_mode or cclm_mode_{flag,idx} is signaled depending on value of intra_bdpcm_chroma_flag.

void CABACReader::cu_pred_data( CodingUnit &cu )
{
  if( CU::isIntra( cu ) )
  {
...#if JVET_Q0110_Q0785_CHROMA_BDPCM_420
    if( !cu.Y().valid() || ( !cu.isSepTree() && cu.Y().valid() ) )
    {
      bdpcm_mode(cu, ComponentID(CHANNEL_TYPE_CHROMA));
    } 
#endif
    intra_chroma_pred_modes( cu );
    return;
  }
...
}

void CABACReader::intra_chroma_pred_modes( CodingUnit& cu )
{
  if( cu.chromaFormat == CHROMA_400 || ( cu.isSepTree() && cu.chType == CHANNEL_TYPE_LUMA ) )
  {
    return;
  }

#if JVET_Q0110_Q0785_CHROMA_BDPCM_420
  if( cu.bdpcmModeChroma )
  {
    cu.firstPU->intraDir[1] = cu.bdpcmModeChroma == 2 ? VER_IDX : HOR_IDX;
    return;
  }
#endif
  PredictionUnit *pu = cu.firstPU;

  {
    CHECK( pu->cu != &cu, "Inkonsistent PU-CU mapping" );
    intra_chroma_pred_mode( *pu );
  }
}

In WD, those syntax cannot be signaled regardless of value of intra_bdpcm_chroma_flag as below:

if ( cbWidth / SubWidthC  <=  MaxTsSize  &&  cbHeight / SubHeightC  <=  MaxTsSize
	&&  sps_bdpcm_enabled_flag ) {	
	intra_bdpcm_chroma_flag				ae(v)
	if( intra_bdpcm_chroma_flag )	
		intra_bdpcm_chroma_dir_flag		ae(v)
} else {	
	if( CclmEnabled )	
		cclm_mode_flag				ae(v)
	if( cclm_mode_flag )	
		cclm_mode_idx				ae(v)
	else	
		intra_chroma_pred_mode			ae(v)
}	

Suggested fix is to align WD to SW:

if ( cbWidth / SubWidthC  <=  MaxTsSize  &&  cbHeight / SubHeightC  <=  MaxTsSize
	&&  sps_bdpcm_enabled_flag ) 	
	intra_bdpcm_chroma_flag				ae(v)
if( intra_bdpcm_chroma_flag )	
	intra_bdpcm_chroma_dir_flag			ae(v)
else {	
	if( CclmEnabled )	
		cclm_mode_flag				ae(v)
	if( cclm_mode_flag )	
		cclm_mode_idx				ae(v)
	else	
		intra_chroma_pred_mode			ae(v)
}	

Change history (2)

comment:1 Changed 5 years ago by jlchen

The fix is reasonable to me. This will be fixed in vE release if no concern is raised.

comment:2 Changed 5 years ago by bbross

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