Opened 5 years ago

Closed 5 years ago

#152 closed defect (fixed)

Sub-PU TMVP can generate an invalid inter candidate

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

Description (last modified by ksuehring)

In UnitTools.cpp, in the function getInterMergeSubPuMvpCand():

      if (colMi.isInter ... )
        for (unsigned currRefListId = 0; currRefListId < (bBSlice ? 2 : 1); currRefListId++)
          RefPicList currRefPicList = RefPicList(currRefListId);
          if (deriveScaledMotionTemporal(…))
        // intra coded, in this case, no motion vector is available for list 0 or list 1, so use default

The code above can generate a inter motion vector with no valid reference frame (all refIdx = -1).

Assume the first if() condition passes (i.e. colMi.isInter) and the second if() condition fails. For example, if the current slice is a P-slice and deriveScaledMotionTemporal() returns false for List0 because colMi contains only List1 motion, getCheckLDC()=0, and bAllowMirrorMV=0.

In this situation, the code above will never run the else( ) condition that assigns the default motion instead. An inter motion vector will be assigned with no valid reference index (refIdxL0=-1 and refIdxL1=-1).

Change history (4)

comment:1 Changed 5 years ago by bheng

comment:2 Changed 5 years ago by bheng

  • Resolution set to fixed
  • Status changed from new to closed

comment:3 Changed 5 years ago by ksuehring

  • Description modified (diff)
  • Resolution fixed deleted
  • Status changed from closed to reopened

comment:4 Changed 5 years ago by bheng

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