I clean up my patch and remove some recent experiments with the drifting timer (0.2ms inaccuracy on my machine per frame) and add proper comments as well as detailed bug description for the root cause. Will be ready Saturday. Need to watch my new Blu-Rays first
Hopefully that drifting is caused by the inaccuracy of the current query performance counter code (I'll provide the fixed GetCurrentTimestamp() method as soon as I have done my own testing...).
I'll send it first to you for peer review because you have different hardware and know the code better than I do. After all it's my first patch for MP. This should speed up things before we go to public testing of the complete patch. With a base component we need to be more careful as this now changes more than the quick fix I posted last week.
Yep, testing on the different hardware might show some issues (hopefully not). But it is a good to test those before going into public test mode.
Everything now depends on a file's fps and there are no hardcoded ms values anymore related to the issue. I still have some experimental stuff in it. But you'll see.
There are few known oddities that could be need to taken care:
1) our TsReader is not able to report the fps rate of the played file (old EVR code is assuming every thing is 40.000 ms per frame if no rate is provided). This might break NTSC videos... Fixing f the TsReader is on the way, but I'm not sure if we can push that change into 1.1.0 (depends how busy djblu and gemx are )
2) Some other files might as well sometimes report no frame duration / fps. I guess we need to build some detection to workaround the possible issues.
Once submitted I try to find out why samples are coming late from the mixer depending on how a file is encoded. Probably filter related but I'm not sure here. I also check why rewind doesn't show any frames regardless of the material on my machine (same with the unpatched DLL).
codec might be responsible for sending the frame too late. maybe we could adjust that by having for example 40 ms (adjusted based on the source content) "buffer" for the arriving frames. Not sure if it works in practice, but at least it should be possible in theory.
Probably that I've broken this feature for installations where it worked. But because it never worked for me I can't find out.
I'll test that.