In some embodiments, MV* is calculated as the average of all corresponding sub-block MVs in the Y component: MV*=(MV0+MV1+MV2+MV3)/4. Suppose MV*=(MV*x, MV*y), MV0=(MV0x, MV0y), MV1=(MV1x, MV1y), MV2=(MV2x, MV2y) and MV3=(MV3x, MV3y).
In some embodiments, MV*x=Shift (MV0x+MV1x+MV2x+MV3x, 2), MV*y=Shift (MV0y+MV1y+MV2y+MV3y, 2). In some embodiments, MV*x=SignShift (MV0x+MV1x+MV2x+MV3x, 2), MV*y=SignShift (MV0y+MV1y+MV2y+MV3y, 2).
In some embodiments, the calculation of MV* can be performed using the following operations:
1.a MV′x=Shift (MV0x+MV1x, 1),
1.b MV′y=Shift (MV0y+MV1y, 1),
1.c MV″x=Shift (MV2x+MV3x, 1),