1. A method for encoding a video stream, comprising: identifying, for each previously coded block of a plurality of previously coded blocks of a current frame of the video stream, a candidate motion vector used to inter predict the previously coded block to define a plurality of candidate motion vectors; identifying, for a current block to be encoded, a set of reconstructed pixel values corresponding to a set of previously coded pixels, the current block and the set of previously coded pixels in the current frame; generating, using each candidate motion vector of the plurality of candidate motion vectors, a corresponding set of predicted values for the set of previously coded pixel values within each reference frame of a plurality of reference frames wherein at least one of the plurality of reference frames is separated from the current frame within a temporal sequence of the video stream by at least one frame; determining, using a processor, a respective error value based on a difference between the set of reconstructed pixel values and each set of predicted values; selecting, based on the error values, a reference motion vector from the plurality of candidate motion vectors; and encoding a motion vector for the current block using the reference motion vector.