﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
900	SW and SW mismatch on parsing condition of lfnst_idx	wzeng		"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 )



"	defect	closed	minor		spec	VVC D8 vB	fixed		ksuehring bbross XiangLi fbossen jvet@…
