Chapter 3: Designing with the H.264 Motion Estimation Engine Core

R

Motion estimation requires a definition of a search region and a search scheme to find the best match (motion vector) within a search region. Rate-Distortion theory also takes into consideration vectors that may be close together, but not necessarily the best SAD value in finding the optimal motion vector to choose for entropy coding. Searching within the search region can be done exhaustively, but the computational overhead is prohibitive. Thus, a search scheme with seed motion vectors and regions to search are desired. In this implementation of the motion estimation, 10 seed vectors are provided for each 8x4 block with eight 8x4 blocks in a 16x16 macroblock. A 4x3 region is searched to the right and down from the seed vector.

Another difficult part of motion estimation is the localization of memory to allow for easy access to the search region. In this implementation, a sliding window of eight macroblocks high and seven macroblocks wide is utilized to keep the external memory transfers efficient and the bandwidth manageable.

Processing begins with frame parameters being updated each frame and the first macroblock being sent to the core. Macroblock parameters in the form of seed vectors (80) are send to the core and the H.264 Motion Estimation Engine processes and produces SADs and the list of Motion Vectors searched corresponding to the SADs produced. See Figure 3-2.

H.264 allows for variable block sizes within a macroblock. If through the search process the best motion vector (minimum SAD) for two blocks is identical, then the block can be merged to be a larger block, that is, two 8x4 blocks to an 8x8 block. The Variable Block Size Decision block performs this processing and provides as an output the coded block pattern for a macroblock and corresponding best motion vectors and SADs.

18

www.xilinx.com

H.264 Motion Estimation Engine

 

 

UG453 (v1.1) April 23, 2008

Page 18
Image 18
Xilinx UG4153 manual Designing with the H.264 Motion Estimation Engine Core