Patent ID: 8374242

Claim:
An apparatus comprising: a central processing unit; and a graphics processing unit comprising an array of software-configurable general purpose parallel processors, a globally shared memory, wherein each of the software-configurable general purpose parallel processors in said array of software-configurable general purpose parallel processors has access to said globally shared memory, and a shared memory, wherein (i) said shared memory is accessible by said central processing unit to program said shared memory with computer executable instructions for controlling said graphics processing unit, (ii) said computer executable instructions comprise a motion estimation program which when executed by said graphics processing unit performs motion estimation on a current frame using a reference frame, (iii) said current frame and said reference frame are stored in said globally shared memory of the graphics processing unit, (iv) said motion estimation program comprises a decimation subroutine and a search subroutine, (v) said decimation subroutine is configured to receive pixel data of an input frame and pixel data of a reference frame as inputs and produce multiple versions of the input and the reference frames, each version with smaller resolutions, (vi) said search subroutine is configured to search the multiple versions of the input and the reference frames in parallel to determine a best full pel motion vector, (vii) the decimation subroutine decimates the input frame and the reference frames into a number of levels, (viii) the decimation performed by the decimation subroutine comprises a square of a power of two, and (ix) the decimation subroutine is configured to read from respective global memory buffers and store a number of decimated versions of the frame in the globally shared memory of the graphics processing unit.