﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
152	Sub-PU TMVP can generate an invalid inter candidate	bheng		"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(…))
          {
            …
          }
        }
      }
      else
      {
        // 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).
"	defect	closed	minor		VTM	VTM-3.0	fixed		ksuehring XiangLi fbossen jvet@…
