Opened 2 years ago

Closed 2 years ago

#1558 closed defect (fixed)

Mismatch Between Spec & VTM for MipChromaDirectFlag Derivation In YUV444

Reported by: ksthey Owned by:
Priority: minor Milestone:
Component: spec Version:
Keywords: Cc: ksuehring, bbross, XiangLi, fbossen, jvet@…

Description

In “8.4.3 Derivation process for chroma intra prediction mode":
If treeType is equal to SINGLE_TREE, sps_chroma_format_idc is equal to 3, intra_chroma_pred_mode is equal to 4, and IntraMipFlag[ xCb ][ yCb ] is equal to 1, the following applies:
– The MIP chroma direct mode flag MipChromaDirectFlag[ xCb ][ yCb ] is set equal to 1.

When cu_act_enabled_flag is equal to 1, intra_chroma_pred_mode is not present in bitstream, and according to specification, "When intra_chroma_pred_mode is not present, it is inferred to be equal to 0.".
As the result, MipChromaDirectFlag should be 0.

However, according to CABACReader::intra_chroma_pred_mode() of CABACReader.cpp:
if (pu.cu->colorTransform)

{

pu.intraDir[CHANNEL_TYPE_CHROMA] = DM_CHROMA_IDX;
return;

}


and PU::isMIP() in UnitTools.cpp considered "(pu.intraDir[CHANNEL_TYPE_CHROMA] == DM_CHROMA_IDX)" as one of the condition to judge MipChromaDirectFlag.

As the result, under the conditions below:

  • treeType is equal to SINGLE_TREE &&
  • sps_chroma_format_idc is equal to 3 &&
  • IntraMipFlag[ xCb ][ yCb ] is equal to 1 &&
  • cu_act_enabled_flag is equal to 1

specification & VTM will give different result of MipChromaDirectFlag, due to different default value for intra_chroma_pred_mode when cu_act_enabled_flag is 1.

Change history (2)

comment:1 Changed 2 years ago by bbross

Thanks for bringing that up! Good catch und in that case the VTM behaviour is the intended one as proposed in JVET-R0350.
Hence, I suggest the following fix:

The MIP chroma direct mode flag MipChromaDirectFlag[ xCb ][ yCb ] is derived as follows:

  • If all of the following conditions are true, MipChromaDirectFlag[ xCb ][ yCb ] is set equal to 1:

treeType is equal to SINGLE_TREE.
sps_chroma_format_idc is equal to 3.
intra_chroma_pred_mode is equal to 4 or cu_act_enabled_flag[ xCb ][ yCb ] is equal to 1.
IntraMipFlag[ xCb ][ yCb ] is equal to 1.

  • Otherwise, MipChromaDirectFlag[ xCb ][ yCb ] is set equal to 0.

The chroma intra prediction mode IntraPredModeC[ xCb ][ yCb ] is derived as follows:

  • If MipChromaDirectFlag[ xCb ][ yCb ] is equal to 1, the chroma intra prediction mode IntraPredModeC[ xCb ][ yCb ] is set equal to IntraPredModeY[ xCb ][ yCb ].
  • Otherwise, the following applies:
    • The corresponding luma intra prediction mode lumaIntraPredMode is derived as follows:

...

comment:2 Changed 2 years ago by yk

  • Resolution set to fixed
  • Status changed from new to closed

Thanks! Fixed in JVET-AA2005-v1.

Note: See TracTickets for help on using tickets.