1. A method for coding video data using motion estimation, the method comprising: a) identifying a macroblock out of a plurality of macroblocks, the plurality of macroblocks representing a frame; b) performing a pass on the macroblock, the pass being configured to check one set of candidate motion vectors for the macroblock and to determine a new starting point for a next pass on the macroblock during processing of the same frame; repeating steps a) and b) until a best motion vector is identified for each macroblock within the frame or a computation limit associated with a device performing the passes has been reached.