A method of encoding video data, the method comprising: selecting a bi-predictive merge mode for encoding a current video block; identifying a first set of two different neighboring video blocks coded in uni-predictive modes from a set of candidate neighboring blocks, the set of candidate neighboring blocks comprising a top neighbor, top right neighbor, left neighbor, bottom left neighbor, and co-located temporal neighbor from another video frame; using two different uni-predictive motion vectors, one associated with each of the two different neighboring video blocks of said first set, as a first candidate set of motion vectors to encode the current video block according to the bi-predictive merge mode; identifying a second set of two different neighboring video blocks coded in uni-predictive modes from the set of candidate neighboring blocks, and using two different uni predictive motion vectors, one associated with each of the two different neighboring video blocks of said second set, as a second candidate set of motion vectors to encode the current video block according to the bi-predictive merge mode; identifying at least one of the neighboring blocks from the set of candidate neighboring blocks that is coded in bi-predictive mode, and using the two bi-predictive motion vectors of said at least one of the neighboring blocks as a third candidate set of motion vectors to encode the current video block according to the bi-predictive merge mode; selecting one of the candidate sets of motion vectors for encoding the current video block according to the bi-predictive merge mode; and generating one or more syntax elements to identify the selected candidate set of motion vectors. selecting a bi-predictive merge mode for encoding a current video block; identifying a first set of two different neighboring video blocks coded in uni-predictive modes from a set of candidate neighboring blocks, the set of candidate neighboring blocks comprising a top neighbor, top right neighbor, left neighbor, bottom left neighbor, and co-located temporal neighbor from another video frame; using two different uni-predictive motion vectors, one associated with each of the two different neighboring video blocks of said first set, as a first candidate set of motion vectors to encode the current video block according to the bi-predictive merge mode; identifying a second set of two different neighboring video blocks coded in uni-predictive modes from the set of candidate neighboring blocks, and using two different uni predictive motion vectors, one associated with each of the two different neighboring video blocks of said second set, as a second candidate set of motion vectors to encode the current video block according to the bi-predictive merge mode; identifying at least one of the neighboring blocks from the set of candidate neighboring blocks that is coded in bi-predictive mode, and using the two bi-predictive motion vectors of said at least one of the neighboring blocks as a third candidate set of motion vectors to encode the current video block according to the bi-predictive merge mode; selecting one of the candidate sets of motion vectors for encoding the current video block according to the bi-predictive merge mode; and generating one or more syntax elements to identify the selected candidate set of motion vectors.