Opened 9 months ago

Closed 8 months ago

#211 closed defect (fixed)

M0483 IBC Bugs

Reported by: bheng Owned by:
Priority: minor Milestone: VTM-4.1
Component: VTM Version: VTM-4.0
Keywords: Cc: ksuehring, XiangLi, fbossen, jvet@…

Description

1.) The motion vector history LUT needs to be reset for each CTU row in I-slices because of IBC. The code below currently only resets it in P/B slices.

if (cs.slice->getSliceType() != I_SLICE && ctuXPosInCtus == 0)
{

cs.slice->resetMotionLUTs();

}

2.) I believe the following check for CPR collocated picture is no longer needed with IBC, and checking this can crash the decoder for I-slices.

CHECK(pcSlice->getRefPic(RefPicList(pcSlice->isInterB() ? 1 - pcSlice->getColFromL0Flag() : 0), pcSlice->getColRefIdx())->getPOC() == pcSlice->getPOC(), "curr ref picture cannot be collocated picture");

3.) The rasterIdx for non-intra chroma edges in dual-tree I-slices is not correct. The following code calculates the raster index:

const Position& posQ = Position{ localPos.x >> shiftHor, localPos.y >> shiftVer };
const unsigned rasterIdx = getRasterIdx( posQ, pcv );

In the IBC dual-tree case, posQ is the chroma position, and using this to calculate rasterIdx will point to the wrong edge for m_aapucBS[edgeDir][rasterIdx]. The luma position should be used to find the correct edge.

Change history (2)

comment:2 Changed 8 months ago by XiangLi

  • Milestone set to VTM-4.1
  • Resolution set to fixed
  • Status changed from new to closed
Note: See TracTickets for help on using tickets.