Opened 5 years ago
Closed 5 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 5 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.