Opened 6 years ago
Closed 6 years 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:1 Changed 6 years ago by bheng
comment:2 Changed 6 years ago by XiangLi
- Milestone set to VTM-4.1
- Resolution set to fixed
- Status changed from new to closed
One potential fix can be found here:
https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/merge_requests/344