Hi red5goahead,
First I should say I am most definitely NOT a Reclock dev (as you said in the MediaPortal thread). I am just an end-user, albeit one with a professional IT development background, who, due to OCD, happens to have spent more time studying Reclock and vsync than just about anyone else! If you want changes to Reclock you need to take it up with James.
I would suggest the renderer devs on MediaPortal try to contact ar-jar on Doom9. He is the developer of the mpc-hc "EVR Sync renderer" and it sounds like what the MP guys are trying to do, he has already done.
Here is his own site, which has a link to his open source code:
http://www.ostrogothia.com/?page_id=1050
Here is his own thread @Doom9:
http://forum.doom9.org/showthread.php?t=148221
He does not have much time for this project right now but he may be able to shortcut the process with a few quick pointers.
A few observations from me:
The thing Reclock measures as its "vsync target" is the end of frame presentation. However, the method it uses to determine this is fixed in hardware to vsync when conventional double-buffering is used. It always returns "End of Presentation" at the time of the buffer "flip". As a consequence Reclock cannot move its target and will perpetually run the frame rate too fast or slow causing periodic judder. Not good! If MP EVR worked before with Aero ON and does not now I think they have turned on double buffering, or used a method which does this, probably to fix tearing. Maybe they were not using the "standad EVR Mixer" before and are now? It may be possible to allow this to be disabled for those using Reclock. You seem to have allowed them to forget that it used to work and now it does not!
Something has changed.
I did NOT say that the standard EVR renderer works with Reclock vsync correction if Aero is ON. However the
EVR CP and
EVR Sync renderers DO work with Aero on, if their internal vsync correction methods are turned off. Then it seems to work in a way similar to D3D mode, without the normal downsides. It is possible this could cause an increased risk of tearing although Aero should deal with this in the same way it does with Flash video.
For the devs working on improving MP, ignoring his very experimental, best avoided, attempts to change the display timings to fix the issue, ar-jar's best method for vsync correction, like that chosen by Reclock's original developer, Ogo, runs the frame rate slightly too fast or slightly too slow in order to pull the point of presentation to a safe position, rather than "waiting", as I think is curently being tried by MP. This method though will not work if Reclock is being used at all (not just with vsync correction on) as two things then fight to control the frame rate.
His second, less perfect, method "Present at nearest vsync" sounds similar to the current attempt @MP. This will work really pretty well when Reclock is used (without vsync correction enabled), better in fact than when Reclock is not used, as then any difference in frame rate will lead to periodic dropped/repeated frames. Note, the ar-jar method ensures that any drop/repeat at any such time is only a single "clean" frame and not a "burst" of frames as is normally the case. Better I think than just turning vsync correction off as Owlsroost currently does. Using this method I am not sure there is any real need to get info direct from Reclock.
By the way, unlike what is said in the opening post of the MP thread, Reclock vsync correction, when it works, also works fine with DXVA, except, for obvious reasons, it is not possible to display any of the Reclock vsync information overlays (tearing bar, vsync position/target). If you need the onscreen display to correctly set the marker you need to do that with DXVA off, then set it on when you are done. It is arguable that turning on DXVA might change the ideal marker position, but normally the range of acceptable values is high enough that it does not matter. If you are very close to the edge then turning on DXVA might cause a problem, in which case you might need to experiment with moving the target a little one way or the other and seeing if that solves the issue, but really you should set the target well away from where judder might start anyway. The opening post is now very out of date. Predates Slysoft developments. It should probably be updated.