Xilinx UG4153 Blood Glucose Meter User Manual


 
18 www.xilinx.com H.264 Motion Estimation Engine
UG453 (v1.1) April 23, 2008
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.