Opened 5 years ago
Closed 5 years ago
#900 closed defect (fixed)
SW and SW mismatch on parsing condition of lfnst_idx
Reported by: | wzeng | Owned by: | |
---|---|---|---|
Priority: | minor | Milestone: | |
Component: | spec | Version: | VVC D8 vB |
Keywords: | Cc: | ksuehring, bbross, XiangLi, fbossen, jvet@… |
Description
In VVC D8 vC,
lfnstNotTsFlag = ( treeType == DUAL_TREE_CHROMA | |
transform_skip_flag[ x0 ][ y0 ][ 0 ] == 0 ) &&
( treeType = = DUAL_TREE_LUMA | |
( transform_skip_flag[ x0 ][ y0 ][ 1 ] == 0 &&
transform_skip_flag[ x0 ][ y0 ][ 2 ] == 0 ) )
While in VTM8.0rc1,
for (uint32_t compID = COMPONENT_Y; compID < numValidComp; compID++)
{
if (currTU.blocks[compID].valid() && TU::getCbf(currTU, (ComponentID)compID) && currTU.mtsIdx[compID] == MTS_SKIP)
{
isTrSkip = true;
break;
}
}
According to the spec text, if intra_bdpcm_luma_flag=1 and tu_cbf_luma=0, transform_skip_flag[0] is derived to be 1, thus lfnstNotTsFlag=0 and lfnst_idx will not be parsed. This is regardless what the chroma mode is.
But according to VTM, if tu_cbf_cb and/or tu_cbf_cr is 1 and chroma transform_skip_flag is 0, isTrSkip will be false, thus VTM will parse lfnst_idx.
Not sure which one makes more sense. Personally I would suggest to align spec text with SW. A possible fix is:
lfnstNotTsFlag = ( !tu_cbf_luma[x0][y0] | | transform_skip_flag[ x0 ][ y0 ][ 0 ] = = 0 ) &&
( !tu_cbf_cb[x0][y0] | | transform_skip_flag[ x0 ][ y0 ][ 1 ] = = 0 ) &&
( !tu_cbf_cr[x0][y0] | | transform_skip_flag[ x0 ][ y0 ][ 2 ] = = 0 )
Change history (1)
comment:1 Changed 5 years ago by bbross
- Resolution set to fixed
- Status changed from new to closed
Thanks for bringing that up.
This has been fixed in D9 by the adoption of JVET-R0319.