Opened 4 years ago

Closed 4 years ago

#1066 closed defect (fixed)

Mismatch between spec and VTM in derivation process of ctxInc for the syntax element mtt_split_cu_vertical_flag

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

Description

There is a mismatch between spec and VTM in derivation process of ctxInc for the syntax element mtt_split_cu_vertical_flag.

In VTM-8.0, the derivation process is as follows:
In void DeriveCtx::CtxSplit()

  ctxHv = 0;
  const unsigned numHor = ( canSplit[2] ? 1 : 0 ) + ( canSplit[4] ? 1 : 0 );
  const unsigned numVer = ( canSplit[3] ? 1 : 0 ) + ( canSplit[5] ? 1 : 0 );

  if( numVer == numHor )
  {
    const Area& area = partitioner.currArea().blocks[partitioner.chType];
    const unsigned wAbove       = cuAbove ? cuAbove->blocks[partitioner.chType].width  : 1;
    const unsigned hLeft        = cuLeft  ? cuLeft ->blocks[partitioner.chType].height : 1;
    const unsigned depAbove     = area.width / wAbove;
    const unsigned depLeft      = area.height / hLeft;
    if( depAbove == depLeft || !cuLeft || !cuAbove ) ctxHv = 0;
    else if( depAbove < depLeft ) ctxHv = 1;
    else ctxHv = 2;
  }
  else if( numVer < numHor )
  {
    ctxHv = 3;
  }
  else
  {
    ctxHv = 4;
  }

Suggest changes in JVET-R2001-vA as follows:

9.3.4.2.3 Derivation process of ctxIncfor the syntax element mtt_split_cu_vertical_flag
The assignment of ctxInc is specified as follows:

– If allowSplitBtVer + allowSplitTtVerBtHor is greater than allowSplitBtHorTtVer + allowSplitTtHor, ctxInc is set equal to 4.
– Otherwise, if allowSplitBtVer + allowSplitTtVerBtHor is less than allowSplitBtHorTtVer + allowSplitTtHor, ctxInc is set equal to 43.
– Otherwise, the following applies:

– The variables dA and dL are derived as follows

dA = cbWidth / ( availableA ? CbWidth[ chType ][ xNbA ][ yNbA ] : 1 ) (1562)
dL = cbHeight / ( availableL ? CbHeight[ chType ][ xNbL ][ yNbL ] : 1 ) (1563)

– If any of the following conditions is true, ctxInc is set equal to 0:

– dA is equal to dL,
– availableA is equal to FALSE,
– availableL is equal to FALSE.

– Otherwise, if dA is less then dL, ctxInc is set equal to 1.
– Otherwise, ctxInc is set equal to 02.

Change history (1)

comment:1 Changed 4 years ago by bbross

  • Resolution set to fixed
  • Status changed from new to closed

Good catch, thanks!

This will be fixed in first verison of D10.

Note: See TracTickets for help on using tickets.