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@…