﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
1517	Potential Mismatch between VVC Spec and VTM Reference C Decoder Model	swong10		"cu_coded_flag in the VVC Spec : 
When cu_coded_flag is not present, it is inferred as follows:
– If cu_skip_flag[ x0 ][ y0 ] is equal to 1 or pred_mode_plt_flag is equal to 1, cu_coded_flag is inferred to be equal to 0.
– Otherwise, cu_coded_flag is inferred to be equal to 1.

This flag is corresponding to cu.rootCbf in the VTM Decoder C Model.  In the VVC Spec, if cu_coded_flag is not present, and if cu_skip_flag is set to 1, then cu_coded_flag is inferred to 0. 
But in the VTM, as long as cu_skip_flag is present in the bitstream, the cu_coded_flag is set to 0, not just when cu_skip_flag is equal to 1.

Below is the VTM code segment that the cu_coded_flag is pre-set to 0 when cu_skip_flag is present in the bitstream.  Is it a mismatch with the VVC spec.?

void CABACReader::cu_skip_flag( CodingUnit& cu )
{
  RExt__DECODER_DEBUG_BIT_STATISTICS_CREATE_SET( STATS__CABAC_BITS__SKIP_FLAG );

  if ((cu.slice->isIntra() || cu.isConsIntra()) && cu.cs->slice->getSPS()->getIBCFlag())
  {
    cu.skip = false;
    cu.rootCbf = false;
    cu.predMode = MODE_INTRA;
    cu.mmvdSkip = false;
    if (cu.lwidth() < 128 && cu.lheight() < 128) // disable IBC mode larger than 64x64
    {
    unsigned ctxId = DeriveCtx::CtxSkipFlag(cu);
    unsigned skip = m_BinDecoder.decodeBin(Ctx::SkipFlag(ctxId));
    DTRACE( g_trace_ctx, D_SYNTAX, ""cu_skip_flag() ctx=%d skip=%d\n"", ctxId, skip ? 1 : 0 );
    if (skip)
    {
      cu.skip = true;
      cu.rootCbf = false;
      cu.predMode = MODE_IBC;
      cu.mmvdSkip = false;
    }
    }
    return;"	defect	closed	critical		spec		wontfix	cu_coded_flag, mismatch	ksuehring bbross XiangLi fbossen jvet@…
