Opened 5 years ago
Closed 5 years ago
#754 closed defect (fixed)
SW/Spec mismatch on tu_cbf_luma signalling
Reported by: | jason | Owned by: | |
---|---|---|---|
Priority: | minor | Milestone: | VVC D10 |
Component: | spec | Version: | VVC D9 vB |
Keywords: | ACT, tu_cbf_luma | Cc: | ksuehring, bbross, XiangLi, fbossen, jvet@… |
Description ¶
In the current master branch, tu_cbf_luma signalling depends on tu_cbf_cb, tu_cbf_cr and transform depth when ACT is applied to intra block.
// 'transform_unit' function in CABACReader.cpp #if JVET_P0517_ADAPTIVE_COLOR_TRANSFORM bool lumaCbfIsInferredACT = (cu.colorTransform && cu.predMode == MODE_INTRA && trDepth == 0 && !chromaCbfs.sigChroma(area.chromaFormat)); bool lastCbfIsInferred = lumaCbfIsInferredACT; // ISP and ACT are mutually exclusive bool previousCbf = false; bool rootCbfSoFar = false; #else bool previousCbf = false; bool rootCbfSoFar = false; bool lastCbfIsInferred = false; #endif ... bool cbfY = lastCbfIsInferred ? true : cbf_comp(cs, tu.Y(), trDepth, previousCbf, cu.ispMode); TU::setCbfAtDepth(tu, COMPONENT_Y, trDepth, (cbfY ? 1 : 0));
Meanwhile, in JVET-P2001-vE, tu_cbf_luma is always parsed for intra block with ACT mode.
7.3.9.10 Transform unit syntax if( treeType == SINGLE_TREE || treeType == DUAL_TREE_LUMA ) { if( ( IntraSubPartitionsSplitType == ISP_NO_SPLIT && !( cu_sbt_flag && ( ( subTuIndex == 0 && cu_sbt_pos_flag ) || ( subTuIndex == 1 && !cu_sbt_pos_flag ) ) ) && ( CuPredMode[ chType ][ x0 ][ y0 ] == MODE_INTRA || ( chromaAvailable && ( tu_cbf_cb[ xC ][ yC ] || tu_cbf_cr[ xC ][ yC ] ) || CbWidth[ chType ][ x0 ][ y0 ] > MaxTbSizeY || CbHeight[ chType ][ x0 ][ y0 ] > MaxTbSizeY ) ) || ( IntraSubPartitionsSplitType != ISP_NO_SPLIT && ( subTuIndex < NumIntraSubPartitions - 1 || !InferTuCbfLuma ) ) ) tu_cbf_luma[ x0 ][ y0 ] ... }
Suggestion: Aligning spec with SW
if( treeType == SINGLE_TREE | | treeType == DUAL_TREE_LUMA ) {
if( ( IntraSubPartitionsSplitType == ISP_NO_SPLIT && !( cu_sbt_flag &&
( ( subTuIndex == 0 && cu_sbt_pos_flag ) | |
( subTuIndex == 1 && !cu_sbt_pos_flag ) ) ) &&
( ( CuPredMode[ chType ][ x0 ][ y0 ] == MODE_INTRA &&
!cu_act_enabled_flag[ x0 ][ y0 ] ) | |
( chromaAvailable && ( tu_cbf_cb[ xC ][ yC ] | | tu_cbf_cr[ xC ][ yC ] ) | |
CbWidth[ chType ][ x0 ][ y0 ] > MaxTbSizeY | |
CbHeight[ chType ][ x0 ][ y0 ] > MaxTbSizeY ) ) | |
( IntraSubPartitionsSplitType != ISP_NO_SPLIT &&
( subTuIndex < NumIntraSubPartitions - 1 | | InferTuCbfLuma ) ) )
tu_cbf_luma[ x0 ][ y0 ]
...
}
Change history (3)
comment:1 Changed 5 years ago by bbross
- Version changed from VVC D7 vE to VVC D8 vB
comment:2 Changed 5 years ago by bbross
- Milestone set to VVC D10
- Version changed from VVC D8 vB to VVC D9 vB
comment:3 Changed 5 years ago by bbross
- Resolution set to fixed
- Status changed from new to closed
This will be fixed in JVET-S2001-v7 with the adoption of JVET-S0233.
Thanks for reporting.
Can anyone confirm that this mismatch still exists between VTM-9.1 and D9?