Opened 6 years ago
Last modified 6 years ago
#152 closed defect
Sub-PU TMVP can generate an invalid inter candidate — at Version 3
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(…)) { … } } } 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).
Change history (3)
comment:1 Changed 6 years ago by bheng
comment:2 Changed 6 years ago by bheng
- Resolution set to fixed
- Status changed from new to closed
comment:3 Changed 6 years ago by ksuehring
- Description modified (diff)
- Resolution fixed deleted
- Status changed from closed to reopened
Reopening: Another fix was submitted as MR 347
https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/merge_requests/347
One possible fix has been provided in:
https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/merge_requests/285