JVET-M0059 CE4: Non-scaling STMVP (Test 4.2.1) [T. Zhou, T. Ikai (Sharp)]
The proposed method derives an averaging candidate as STMVP candidate using two spatial merge candidates and one collocated merge candidate.
i = 0
if( availableFlagA1 )
mergeCandList[ i++ ] = A1
if( availableFlagB1 )
mergeCandList[ i++ ] = B1
if( availableFlagB0 )
mergeCandList[ i++ ] = B0 (8-118)
if( availableFlagA0 )
mergeCandList[ i++ ] = A0
if( availableFlagSbCol )
mergeCandList[ i++ ] = STMVP
if( availableFlagB2 )
mergeCandList[ i++ ] = B2
if( availableFlagCol )
mergeCandList[ i++ ] = Col
For the spatial candidates, the first and second candidates in the current merge candidate list is used.
For the temporal candidate, the same position as VTM / HEVC collocated position is used.
If three candidates, of which the reference are equal to zero, are available, the following apply.
mvLX[0] = (mvLX_A[0] * 3 + mvLX_L[0] * 3 + mvLX_C[0] * 2 ) / 8
mvLX[1] = (mvLX_A[1] * 3 + mvLX_L[1] * 3 + mvLX_C[1] * 2 ) / 8
If two motion information, of which the reference are equal to zero, is available, the following apply
mvLX[0] = (mvLX_A[0] + mvLX_C[0] ) / 2
mvLX[1] = (mvLX_A[1] + mvLX_C[1] ) / 2
or
mvLX[0] = (mvLX_B[0] + mvLX_C[0] ) / 2
mvLX[1] = (mvLX_B[1] + mvLX_C[1] ) / 2
Note: If the temporal candidate is unavailable, the STMVP mode is off.