[x264-devel] H.264 motion vector predictor?

Tuukka Toivonen tuukkat at ee.oulu.fi
Mon Feb 21 20:34:52 CET 2005


I'm trying to understand how the motion vector prediction is done in x264 
and H.264 in general. I've looked from various places but it's still 
obscure.

As far as I know, the MV predictor is obtained as median of MVs of 
(sub)partitions left, above, and above left of the current (sub)partition. 
For 16x8 and 8x16 partitions it's different, but I think I understand that case 
too.

Let's suppose that a macroblock (MB) is divided into four 8x8 partitions,
and the upper-right partition is further divided into four 4x4 partitions.

According to my understanding, when motion estimation is performed for the
lower right 8x8 partition, one of the MVs from which the median is computed 
is the lower-left 4x4 subpartition of the top-right partition of the same 
macroblock. But this is impossible, because x264 estimate the MV for that
subpartition later than the MV for the lower-right partition.

(I assume here the one uses SAD+lambda*bits(mv) for MV selection, in
which case it is necessary to know MV predictor for a (sub)partition
when performing motion estimation for it)

Can anyone point to a tutorial which describes how the MV predictor
is exactly computed?

There used to be a nice explanation at
http://www.vcodex.com/h264.html
but it was removed from a later version
(I still have the original, but I'm not sure if it is exactly correct).

Some nice figures: here's the order in which JM does motion
estimation for the (sub)partitions:
http://www.ee.oulu.fi/~tuukkat/tmp/multisize.png
Here's the order for x264:
http://www.ee.oulu.fi/~tuukkat/tmp/multisize-x264.png

-- 
This is the x264-devel mailing-list
To unsubscribe, go to: http://developers.videolan.org/lists.html



More information about the x264-devel mailing list