Opened 6 years ago
Closed 6 years ago
#150 closed defect (fixed)
Triangle merge list zero-MV candidates not properly initialized
Reported by: | bheng | Owned by: | |
---|---|---|---|
Priority: | minor | Milestone: | |
Component: | VTM | Version: | VTM-3.0 |
Keywords: | Cc: | ksuehring, XiangLi, fbossen, jvet@… |
Description
In UnitTools.cpp, in function getTriangleMergeCandidates(), the “fill with Mv(0, 0)” section of code can reuse leftover data from earlier steps in the candidate construction process.
Specifically, if a vector was considered in one of the earlier steps, but rejected because the isUniqueTriangleCandidates() check failed, the rejected vector data is still left in that candidate position and is not reinitialized.
Then, in the final zero-MV-fill stage, it can reuse that same candidate position, but only the List0 or List1 data is set. This leaves leftover data from some previous candidate in the other half of the zero-MV.
triangleMrgCtx.interDirNeighbours[triangleMrgCtx.numValidMergeCand] = 1;
triangleMrgCtx.mvFieldNeighbours[triangleMrgCtx.numValidMergeCand << 1].setMvField(Mv(0, 0), cnt);
triangleMrgCtx.numValidMergeCand++;
So you can end up with a bidirectional candidate in the triangle merge list.
Change history (2)
comment:1 Changed 6 years ago by bheng
comment:2 Changed 6 years ago by fbossen
- Resolution set to fixed
- Status changed from new to closed
One possible fix has been provided in:
https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/merge_requests/284