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