This is a very strange if it works. MSDN says 
>The past and future reference frames must be placed in the arrays in temporal order, from oldest to newest. 
 
http://msdn.microsoft.com/en-us/library/windows/desktop/dd318757(v=vs.85).aspx
so past frames should be { .., T-3, T-2, T-1 }. This will works correctly if PastFrames into DXVAHD_VPCAPS structure equals or less 1. For Intel this value equals 1. For nVidia (if I remeber correctly) it equals zero.