Motion Estimation Scan Pattern Using Shift Register Memory
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing video encoder motion estimation engines require substantial system resources and power due to the high number of memory accesses needed to calculate the sum of absolute differences (SAD) for each potential motion vector in the search area, as they typically access and process reference pixel data multiple times.
Innovation Solution
A more efficient scan pattern is implemented using a wider local memory array that shifts in both vertical and horizontal directions, allowing for the comparison of multiple reference macroblocks without loading additional pixel data, reducing memory accesses by utilizing a 23×16 shift register to process 16×16 macroblocks with extra columns for horizontal and vertical shifts.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If a typical scan pattern is used to process each potential motion vector, then the motion estimation can be performed, but the number of memory accesses and system resource consumption increases significantly
Solution Approach 1:
The patent loads a block of reference pixel data (e.g., 48 pixels for 16x16 macroblocks) into the local memory array before processing begins. This preliminary loading allows multiple SAD calculations to be performed using the same data block, eliminating the need to repeatedly access memory for each motion vector comparison. The data is prepared in advance and retained in the local memory array throughout the search process.
Solution Approach 2:
The patent introduces a spatial dimension to the data processing by organizing reference pixel data in a 2D block structure (multiple rows and columns) in the local memory array. Instead of processing motion vectors in a simple sequential manner, the scan pattern moves through multiple dimensions (horizontal and vertical shifts) within the memory array, allowing efficient access to neighboring macroblocks without additional memory accesses.
2Measurement precision
If reference pixel data is accessed multiple times for each motion vector calculation, then complete SAD comparisons can be performed, but memory access frequency increases
Solution Approach 1:
The reference pixel data block is loaded into the local memory array in advance before the motion estimation process begins. This single preliminary load provides all necessary data for multiple SAD calculations, eliminating repeated memory accesses and allowing fast processing through the memory array without compromising calculation accuracy.
Solution Approach 2:
The local memory array acts as an intermediary between the external memory and the processing units. It stores a block of reference pixel data that serves as a working buffer, allowing the motion estimation engine to perform multiple SAD calculations using this intermediate storage rather than directly accessing external memory for each calculation.
3Productivity
If a wider local memory array with extra columns is used, then horizontal and vertical shifts can be performed without additional memory accesses, but device complexity increases
Solution Approach 1:
The patent extends the local memory array with extra columns (e.g., 23 columns instead of the minimum 16) to create additional spatial dimensions for data manipulation. This allows the memory array to perform horizontal and vertical shifts of data blocks internally, enabling efficient processing of multiple motion vectors without requiring additional memory accesses or complex external memory management.
Solution Approach 2:
The extended local memory array serves multiple functions: it stores reference pixel data, performs horizontal shifts, performs vertical shifts, and supports the scan pattern movement. This multi-functional design consolidates what would otherwise require separate components or repeated memory accesses into a single versatile data structure.
Data Source
AI summary
In accordance with the teachings described herein, systems and methods are provided for scanning a search area of reference pixel data to identify a reference macroblock of pixels with a closest pixel fit to a current macroblock of pixels. An example system may include a local memory array (e.g., a shift register), a processing block and a scan sequencer. The local memory array may include a plurality of rows and columns, with N extra rows or columns in addition to a number of rows or columns necessary to store N reference macroblocks of pixels The processing block may be used to compare reference macroblocks of pixels with the current macroblock of pixels to identify the reference macroblock of pixels with the closest pixel fit to the current macroblock of pixels. The scan sequencer may be used to load reference pixel data into the local memory array and present reference macroblocks of pixels from the local memory array to the processing block according to a scan pattern.


