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.
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
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 |