Qingyuan Guo
Abhishek Kedia
Macroblock
..
..
(discussed in class)
Group of Pictures:
16x16 Y
8x8 Cb
8x8 Cr
Uses only current slice
Uses previously encoded frames
Very small blocks
Large Blocks
-1
+1
+1
-1
Macroblock partitions: 16x16, 8x16, 16x8, 8x8
Macroblock sub-partitions: 8x8, 4x8, 8x4, 4x4
separate motion vector for each partition /sub-partition
Encoder selects “best” partition size for each part of the frame
Minimizes both residue and # motion vectors
little change between the frames 16x16 partition is chosen
areas of detailed motion, smaller partitions are more efficient.
Current Frame
Reference Frame
MV
Slow moving regions in the image?
In between frames, some blocks can move less then a pixel.
Need to decrease the quantization step in motion vectors
=>
But how?
samples don't exist at sub-pixel location!
or
For computing half pixel values
For computing quater pixel values
Recall : Chroma was sub-sampled by 2 in each direction
So we need to interpolate at every 1/8 interval, instead of 1/4 in luma
So we predict motion vectors from neighboring values
Finally encode and transmit the MVD (prediction error)
MVD = MV – MVp
E : Current Partition
A : Partition to immediate left
B : Partition to immediate above
C : Top-Right partition
1. Partition size excluding 16x8 and 8x16 : MVp median of MV for A, B and C.
2. For 16x8 partitions: MVp upper partition = MV B, MVp lower partition = MV A
3. For 8x16 partitions: MVp left partition = MV A, MVp right partition = MV C
[1]. "Prediction of Inter Macroblocks in P-slices" - Iain E. G. Richardson
[2]. "Overview of the H. 264/AVC video coding standard" - Thomas Wiegand, Gary J. Sullivan, Gisle Bjøntegaard, and Ajay Luthra [PDF]
[3]. "H.264 and MPEG-4 Video Compression" - Iain E. G. Richardson [PDF]
[4]. "The Emerging H.264/AVC standard" - Ralf Schäfer,
Thomas Wiegand and Heiko Schwarz [PDF]
[5]. NPTEL course on "Digital Voice & Picture Communication" - Prof. S. Sengupta, IIT Kharagpur [link]