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

Page 18

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

Image 18
Contents Motion Estimation Engine UG453 v1.1 April 23, 2008 optionalRevision History Date Version Revision10/24/07 Initial Xilinx release 04/23/08 Table of Contents Appendix Supporting Information Schedule of Figures 1H.264 EncoderUG453 v1.1 April 23 Schedule of Tables Table A-1Regression Test SummaryMotion Estimation Engine Additional Resources Guide ContentsAbout This Guide ConventionsFile → Open Preface About This GuideMeaning or Use Example Helvetica boldConventions Hyperlink to a website URL For the latest speed filesUG453 v1.1 April 23 Recommended Design Experience IntroductionAbout the Core Additional Core ResourcesFeedback IntroductionSystem Requirements Installing the H.264 Motion Estimation Engine CoreManual Installation WindowsInstalling the H.264 Motion Estimation Engine Core NetlistsMotion Estimation in the H.264 Encoder Designing with the H.264 Motion Estimation Engine CoreVhdl Template Files Model Tech Vhdl simulator test bench codeDesigning with the H.264 Motion Estimation Engine Core 2Motion Estimation Engine Block Diagram Motion Estimation in the H.264 EncoderDesigning with the H.264 Motion Estimation Engine Core Test bench stimulus files Simulating the H Motion Estimation Engine CoreTest Bench Release ModelSim-specific script filesTestbench source file Running the Test BenchSimulating the H Motion Estimation Engine Core Simulation generates these output filesVerifying the System Verification Platform ReleaseRunning the Verification Tests Verification Process LevelVerifying the System Verification Notes Verification Notes…and the expected output reference file Verifying the System Directory Tree Structure Supporting InformationInput Sequences Regression Test DescriptionsReferences Figure A-1Directory Tree Structure