1. An apparatus comprising: a central processing unit; a graphics processing unit comprising an array of software-configurable general purpose parallel processors, interpolation hardware, and 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 said interpolation hardware is configured to interpolate between two or more pixels and estimate sub-pixel values; and a memory accessible by said central processing unit, said memory storing computer executable instructions, said computer executable instructions when executed by said central processing unit configuring said graphics processing unit to (i) store a current frame, at least one reference frame, and a reconstructed frame in said globally shared memory of the graphics processing unit and (ii) perform motion estimation on said current frame using said at least one reference frame, wherein a prediction routine performed by said graphics processing unit as part of said motion estimation refines said motion estimation to full-pel, half-pel and quarter pel, performs intra prediction, chooses best prediction modes based on overall encoding cost, and returns information regarding prediction modes, motion vectors, and intra and inter block partitioning to the central processing unit.