Opened 5 years ago

Closed 5 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 5 years ago by bheng

comment:2 Changed 5 years ago by fbossen

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