constTransformUnit&tuP=*cuP.cs->getTU(posP,cuQ.chType);//based on chType of the current cu, because cuQ.chType and cuP.chType are not the same when local dual-tree is applied
TREE_D=0,//default tree status (for single-tree slice, TREE_D means joint tree; for dual-tree I slice, TREE_D means TREE_L for luma and TREE_C for chroma)
TREE_L=1,//separate tree only contains luma (may split)
TREE_C=2,//separate tree only contains chroma (not split), to avoid small chroma block
@@ -287,7 +287,11 @@ CodingUnit& CodingUnit::operator=( const CodingUnit& other )
smvdMode=other.smvdMode;
ispMode=other.ispMode;
mipFlag=other.mipFlag;
#if JVET_O0050_LOCAL_DUAL_TREE
treeType=other.treeType;
modeType=other.modeType;
modeTypeSeries=other.modeTypeSeries;
#endif
return*this;
}
...
...
@@ -325,14 +329,30 @@ void CodingUnit::initData()
smvdMode=0;
ispMode=0;
mipFlag=false;
#if JVET_O0050_LOCAL_DUAL_TREE
treeType=TREE_D;
modeType=MODE_TYPE_ALL;
modeTypeSeries=0;
#endif
}
#if JVET_O0050_LOCAL_DUAL_TREE
constboolCodingUnit::isSepTree()const
{
returntreeType!=TREE_D||CS::isDualITree(*cs);
}
#endif
#if JVET_O1124_ALLOW_CCLM_COND
constboolCodingUnit::checkCCLMAllowed()const
{
boolallowCCLM=false;
if(chType!=CHANNEL_TYPE_CHROMA)//single tree
#if JVET_O0050_LOCAL_DUAL_TREE
if(!CS::isDualITree(*cs))//single tree I slice or non-I slice (Note: judging chType is no longer equivalent to checking dual-tree I slice since the local dual-tree is introduced)
#else
if(chType!=CHANNEL_TYPE_CHROMA)//single tree I slice or non-I slice