PTS is right after ffmpeg decoder. For vdpau (and xvba) those decoded frames queue up in IHardwareDecoder::Decode for post processing. After this stage the frames go to the queue in renderer. For simplicity consider an entire queue (after ffmpeg) of 10 frames. Lateness detection is done best at the end of renderer, just before the frames get rendered to screen. Now if we are late and need to drop a frame it takes a while that this gain in time will become noticeable at the state we determine lateness.

 CDVDPlayerVideo::CalcDropRequirement askes for PTS right after decoder. Doing this it can detect gaps, dropped frames, and correct lateness by already dropped frames. Otherwise we would drop the following 9 frames as well.