A method for processing video signal comprising: determining a current frame of the video signal by a central processing unit and providing said current frame to a graphics processing unit; determining motion estimation data associated with the current frame using the graphics processing unit by finding the best prediction for pixels in the current frame from a previously encoded reference frame; encoding the video signal into digital video data using the central processing unit, wherein the current frame is encoded into the digital video data based, at least in part, on the motion estimation data, and wherein the determining motion estimation data comprises the steps of: determining a reference frame associated with the current frame; padding the current frame and the reference frame with a horizontal and vertical band of pixels; collocating the padded current frame and the padded reference frame, wherein collocating the padded current frame and the padded reference frame involves making copies of the padded current frame and the padded reference frame so that each of the four channels of the graphics processing unit processes a pixel corresponding to one of the four channels of a texel in parallel; partitioning the collocated current frame and the) collocated reference frame into macroblocks; offsetting the pixels on the macroblocks of the collocated frames to enable different sections of the macroblocks of the current frame to be processed by the four different channels of the graphics processing unit in parallel the parallel processing by the four different channels of the graphics processing unit further comprising: identifying seed positions for starting a motion vector search; identifying corresponding blocks in the current frame and in the reference frame; determining the difference values for blocks in the current frame based, at least in part, on the seed positions; and generating motion vectors for the blocks based, at least in part, on the difference values. determining a current frame of the video signal by a central processing unit and providing said current frame to a graphics processing unit; determining motion estimation data associated with the current frame using the graphics processing unit by finding the best prediction for pixels in the current frame from a previously encoded reference frame; encoding the video signal into digital video data using the central processing unit, wherein the current frame is encoded into the digital video data based, at least in part, on the motion estimation data, and wherein the determining motion estimation data comprises the steps of: determining a reference frame associated with the current frame; padding the current frame and the reference frame with a horizontal and vertical band of pixels; collocating the padded current frame and the padded reference frame, wherein collocating the padded current frame and the padded reference frame involves making copies of the padded current frame and the padded reference frame so that each of the four channels of the graphics processing unit processes a pixel corresponding to one of the four channels of a texel in parallel; partitioning the collocated current frame and the) collocated reference frame into macroblocks; offsetting the pixels on the macroblocks of the collocated frames to enable different sections of the macroblocks of the current frame to be processed by the four different channels of the graphics processing unit in parallel the parallel processing by the four different channels of the graphics processing unit further comprising: identifying seed positions for starting a motion vector search; identifying corresponding blocks in the current frame and in the reference frame; determining the difference values for blocks in the current frame based, at least in part, on the seed positions; and generating motion vectors for the blocks based, at least in part, on the difference values. determining a reference frame associated with the current frame; padding the current frame and the reference frame with a horizontal and vertical band of pixels; collocating the padded current frame and the padded reference frame, wherein collocating the padded current frame and the padded reference frame involves making copies of the padded current frame and the padded reference frame so that each of the four channels of the graphics processing unit processes a pixel corresponding to one of the four channels of a texel in parallel; partitioning the collocated current frame and the) collocated reference frame into macroblocks; offsetting the pixels on the macroblocks of the collocated frames to enable different sections of the macroblocks of the current frame to be processed by the four different channels of the graphics processing unit in parallel the parallel processing by the four different channels of the graphics processing unit further comprising: identifying seed positions for starting a motion vector search; identifying corresponding blocks in the current frame and in the reference frame; determining the difference values for blocks in the current frame based, at least in part, on the seed positions; and generating motion vectors for the blocks based, at least in part, on the difference values. identifying seed positions for starting a motion vector search; identifying corresponding blocks in the current frame and in the reference frame; determining the difference values for blocks in the current frame based, at least in part, on the seed positions; and generating motion vectors for the blocks based, at least in part, on the difference values.