id,summary,reporter,owner,description,type,status,priority,milestone,component,version,resolution,keywords,cc 887,SW/Spec mismatch on CclmEnable,hobingzhang,,"In the current spec Q-2001vC, the luma conditions (When CclmEnabled is equal to 1 ) are constrainedly checked when cclmEnable equal to 1 finally. {{{ 8.4.4 cross-component chroma intra prediction mode checking process If sps_cclm_enabled_flag is equal to 0, CclmEnabled is set equal to 0. Otherwise, if one or more of the following conditions are true, CclmEnabled is set equal to 1: qtbtt_dual_tree_intra_flag is equal to 0. slice_type is not equal to I. CtbLog2SizeY is less than 6. Otherwise the following applies: If one or more of the following conditions are true, the variable CclmEnabled is set equal to 1: CbWidth[ 1 ][ xCb64 ][ yCb64 ] is equal to 64 and CbHeight[ 1 ][ xCb64 ][ yCb64 ] is equal to 64. CqtDepth[ 1 ][ xCb64 ][ yCb64 ] is equal to CtbLog2SizeY − 6, MttSplitMode[ xCb64 ][ yCb64 ][ 0 ] is equal to SPLIT_BT_HOR, CbWidth[ 1 ][ xCb64 ][ yCb32 ] is equal to 64 and CbHeight[ 1 ][ xCb64 ][ yCb32 ] is equal to 32. CqtDepth[ 1 ][ xCb64 ][ yCb64 ] is greater than CtbLog2SizeY − 6. CqtDepth[ 1 ][ xCb64 ][ yCb64 ] is equal to CtbLog2SizeY − 6, MttSplitMode[ xCb64 ][ yCb64 ][ 0 ] is equal to SPLIT_BT_HOR, and MttSplitMode[ xCb64 ][ yCb32 ][ 1 ] is equal to SPLIT_BT_VER. Otherwise, the variable CclmEnabled is set equal to 0. When CclmEnabled is equal to 1 and one of the following conditions is true, CclmEnabled is set equal to 0: CbWidth[ 0 ][ xCb64 ][ yCb64 ] and CbHeight[ 0 ][ xCb64 ][ yCb64 ] are both equal to 64, and intra_subpartitions_mode_flag[ xCb64 ][ yCb64 ] is equal to 1. CbWidth[ 0 ][ xCb64 ][ yCb64 ] or CbHeight[ 0 ][ xCb64 ][ yCb64 ] is less than 64, and CqtDepth[ 0 ][ xCb64 ][ yCb64 ] is equal to CtbLog2SizeY − 6. }}} Meanwhile, the luma condition is checked in software when CclmEnable equal to 1 only for dual tree, CTU size 64 and 128 case. {{{ const bool CodingUnit::checkCCLMAllowed() const { ... else //dual tree, CTU size 64 or 128 { ... //further check luma conditions if( allowCCLM ) { const CodingUnit* colLumaCu = cs->picture->cs->getCU( lumaRefPos, CHANNEL_TYPE_LUMA ); if( colLumaCu->lwidth() < 64 || colLumaCu->lheight() < 64 ) //further split at 64x64 luma node { const PartSplit cuSplitTypeDepth1Luma = CU::getSplitAtDepth( *colLumaCu, depthFor64x64Node ); CHECK( !(cuSplitTypeDepth1Luma >= CU_QUAD_SPLIT && cuSplitTypeDepth1Luma <= CU_TRIV_SPLIT), ""split mode shall be BT, TT or QT"" ); if( cuSplitTypeDepth1Luma != CU_QUAD_SPLIT ) { allowCCLM = false; } } else if( colLumaCu->lwidth() == 64 && colLumaCu->lheight() == 64 && colLumaCu->ispMode ) //not split at 64x64 luma node and use ISP mode { allowCCLM = false; } } } return allowCCLM; } }}} It seems that the indention is missing on luma condition part in spec. The luma condition should be under ""Otherwise the following applies"". Suggestion: Aligning spec with software. ",defect,closed,minor,,spec,,fixed,CclmEnable,ksuehring bbross XiangLi fbossen jvet@… jvet@…