Opened 5 years ago
Closed 5 years ago
#462 closed defect (fixed)
incorrect predModeIntra for CCLM mode in 8.7.4.1
Reported by: | hongbin | Owned by: | |
---|---|---|---|
Priority: | minor | Milestone: | |
Component: | spec | Version: | |
Keywords: | Cc: | ksuehring, bbross, XiangLi, fbossen, jvet@… |
Description
8.7.4.1 general
current specification in JVET-O2001-vE:
– When predModeIntra is equal to either INTRA_LT_CCLM, INTRA_L_CCLM, or INTRA_T_CCLM, predModeIntra is set equal to IntraPredModeY[ xTbY + nTbW / 2 ][ yTbY + nTbH / 2 ].
shall be corrected to:
– When predModeIntra is equal to either INTRA_LT_CCLM, INTRA_L_CCLM, or INTRA_T_CCLM, predModeIntra is derived as follows:
– If intra_mip_flag[ xTbY + nTbW / 2 ][ yTbY + nTbH / 2 ] is equal to 1, predModeIntra is set equal to INTRA_PLANAR.
– Otherwise, if CuPredMode[ 0 ][ xTbY + nTbW / 2 ][ yTbY + nTbH / 2 ] is equal to MODE_IBC or MODE_PLT, predModeIntra is set equal to INTRA_DC.
– Otherwise, predModeIntra is set equal to IntraPredModeY[ xTbY + nTbW / 2 ][ yTbY + nTbH / 2 ].
Change history (4)
comment:1 Changed 5 years ago by bbross
comment:2 Changed 5 years ago by bbross
For MIP, I meant PLANAR not DC of course.
Further looking into VTM code and after internal discussion with Philipp, we have the following assumption regarding INTRA_DC for IBC and palette mode.
In VTM, could it be that for IBC and palette the luma intra mode is set per default to DC and not further changed?
Setting predModeIntra to IntraPredModeY in this case would result in DC if IBC or planar is used for prediction.
So the derivation is not as explicit as in the spec and hard to understand.
Could someone familiar with the code please confirm?
If that is the case, the code is
a) hard to read as I had trouble finding it when looking for that part
b) prone to errors as the default could be change in some other place with impact the impact that the implicit assumption of DC for IBC and palette holds not true anymore. I suppose this is not easy to debug as well.
So if that is the case, I would welcome a merge request improving the code for that part.
comment:3 Changed 5 years ago by biaowang
In Unit.cpp
at the beginning of PredictionUnit::initData()
luma is by default initialized with DC_IDX
comment:4 Changed 5 years ago by bbross
- Resolution set to fixed
- Status changed from new to closed
Thanks! So this confirms our assumption and the suggested fix is correct and fixed in a document we are preparing to be submitted as an editorial input to the 16th JVET meeting.
However my comments on hard to read and hard to maintain w.r.t that code remain.
Thanks for reporting this.
When I check VTM, I can find the mapping for the collocated MIP mode to INTRA_DC in case of CCLM:
Hence, I can confirm that the first condition is missing.
However, the function getCoLocatedIntraLumaMode does not check MODE_IBC or MODE_PLT and does not set the intra mode to INTRA_DC accordingly.
Am I missing something here?