Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
10th May 2010, 16:07 | #2581 | Link | |
Registered User
Join Date: Mar 2007
Location: London, UK
Posts: 576
|
Quote:
I have yet to see a VMR9 or EVR renderers using exclusive mode or Aero, or a renderer using an overlay surface that in practice causes "blocking". For any given renderer/settings average "End present" follows a fixed duration, depending on workload, after the present() call. By default all such renderers appear to do as I suggested a few days ago. The first frame appears ASAP after it is 'ready' and frames follow an appropriate period later, with no regard to vsync. As a consequence of both the above "end present" also bears no regard to vsync and, without help, all such renderers are vulnerable to synchronised judder if using a front and back buffer. By varying the reference clock ever so slightly (say 0.1%, actually the adjustment is greater the further from the target the current measured position is) Reclock is able to move the point frames are ready/due, hence "Present()", hence the point this returns. Once the measured position is inside the Reclock target correction is turned off and the frame rate returns to normal. If average "end of presentation", i.e. the point "Present()" returns, is pinned to a particular scanline then Reclock is unable to move it, keeps running its clock slightly too fast or slow for the refresh rate , so periodically (say 20-60 secs, depending on the adjustment) a frame has to be dropped or repeated. Often things are even worse than this sounds - because the frame rate is so near to the "compatible rate" it takes a while for the frame to move through the "danger zone" and you get a few seconds of "synchronised judder" on each cycle. Examples of when average "end of presentation" are pinned are: 1. VMR/EVR in windowed mode, when it is pinned to just after vsync. 2. Custom renderers in Aero or exclusive mode that themselves dictate the scanline for the "Present()" call, i.e renderers with their own "anti-judder" code. As average "end present" follows a fixed duration after this, it is also effectively pinned to a specific scanline. I am expecting madVR will behave as in case 2 above. I.e. it will seek to present each frame at a particular point in the cycle, to avoid judder and ensure presentation is complete before the next vsync. Consequently Reclock will not be able to move this position by speeding up the reference clock - if the clock is running a little too fast madVR will simply add a slightly bigger offset to each frame in order to present at its "ideal position" until the needed offset grows to bigger than a single frame at which time it will, presumably, drop that frame and move on to the next, i.e. judder. I should say that we are assuming that what Reclock is able to infer is actually the time the "Present()" call returns. Unfortunately we do not know this for a fact. However, what is clear is that in Windowed mode the "vsync target" Reclock measures is pinned in hardware to just after vsync. It is clear that it is hard-pinned because there is almost no spread - just a single line marking its position, just below the top of the screen. However, in exclusive mode or when using Aero or overlay this measured position is random after each seek, unless Reclock vsync correction is enabled or the renderer itself is positioning "Present()", and has a spead that indicates it is software scheduled. Last edited by Jong; 10th May 2010 at 16:48. |
|
10th May 2010, 16:33 | #2582 | Link |
Registered User
Join Date: Apr 2008
Posts: 1,106
|
Hi madshi,
I didn't notice any stutters lastnight watching another blu-ray, this time with reclock vsync disabled. Seems it was having reclock vsync enabled, along with madVR caused the problem with the odd stutter here and there. The green lines on some blu-ray movies, seem to be caused by the internal mpc-hc mpeg4 decoder. I'll try to post this in the mpc thread. One more question for you guys, should madVR, or evr-cp or any renderer for that matter, when thinking about audio / video sync, consider the 1 frame delay incurred when having aero enabled. Is this something an audio renderer might have to do, or is it something thats handled automatically by Windows? I just imagine (length of 1 video frame)ms delay would need to be added to audio, when Aero is enabled to get audio and video perfectly in sync. Mark |
10th May 2010, 17:16 | #2583 | Link | |
Broadband Junkie
Join Date: Oct 2005
Posts: 1,859
|
Quote:
For reference: madVR 0.3 Defaults: Catmull-Rom for Everything madVR 0.4 Defaults: SoftCubic50 for Everything madVR 0.6 through 0.9 Defaults: Luma Up/Down SoftCubic50 | Chroma Up/Down SoftCubic100 madVR 0.10 through 0.12 Defaults: Luma Up SoftCubic50| Luma Down Lanczos4 | Chroma Up/Down Softcubic100. Last edited by cyberbeing; 10th May 2010 at 19:56. |
|
10th May 2010, 17:32 | #2584 | Link |
Registered User
Join Date: Oct 2007
Posts: 87
|
tried this on my 9400m, still doesn't work, coreavc cuda on/off, latest mpc, the player and filters load, but after that it hangs, i can alt-tab out and the video will eventually start, but will stutter pretty bad, one time i managed to enter full screen and get a few minutes without issues but i tried with another movie and failed, used windows xp, back to 0.09 again latest nvidia drivers
|
10th May 2010, 17:36 | #2585 | Link | |||||
Registered Developer
Join Date: Sep 2006
Posts: 9,140
|
Quote:
Quote:
Quote:
Quote:
Quote:
So will I add a Reclock mode? I'd say: Let's wait and see how well madVR's exclusive mode / Aero solutions will work. And then we can decide whether adding a madVR Reclock rendering mode is worth it. I think the proper solution for that would be to add an option to Reclock which allows turning VSync correction on/off for specific renderers. Or Reclock could also hard code VSync correction to be off, when it detects that the renderer is madVR. That should be very easy to implement. |
|||||
10th May 2010, 17:39 | #2586 | Link | ||
Registered Developer
Join Date: Sep 2006
Posts: 9,140
|
Quote:
Quote:
|
||
10th May 2010, 18:21 | #2588 | Link | |
Registered User
Join Date: Mar 2007
Location: London, UK
Posts: 576
|
Quote:
I also agree the right place to do all this is in the renderer. My observation (no more!) is that several other people have tried to fix synchronised judder in the renderer and all have ended up moving on to other things before they really fixed it and we end up falling back on Reclock. We are lucky in mpc-hc they included an option to turn off all vsync correction. In MediaPortal at the moment there is no such option and no fix! Any solution needs to at least allow Reclock to work in "non-vsync mode". A solution that completely stops Reclock from working to speedup/slowdown media, as some have ended up with, is IMO no solution. Lastly I'd just say that, despite the issues you correctly point out, the Reclock method is surprisingly robust, at least on a modern PC. Because the back buffer is still flipped in hardware at vsync, the timing of average point presentation does not need to be that precise. It just needs to be after the preceding vsync (say 3ms) and a little before the next, (say 6ms, ignoring any additional Aero requirements). @50Hz this means presentation can occur anywhere in about a 14ms of the total 20ms frame time. @60Hz we still have maybe 10ms. It is not until we start trying to do 96Hz or, worse, 120Hz, as some are attempting, that it gets very tough. Last edited by Jong; 10th May 2010 at 18:26. |
|
10th May 2010, 18:44 | #2589 | Link | |||
Registered Developer
Join Date: Sep 2006
Posts: 9,140
|
Quote:
All resampling algorithms have strengths and weaknesses. Some more than others. Everybody has to pick his own poison. That's also the reason why I don't consider default values to be so important. Just play with the settings and chose whatever you like best. Quote:
Quote:
I don't plan to do a 30 frame queue, though... |
|||
10th May 2010, 18:48 | #2590 | Link | |
Kid for Today
Join Date: Aug 2004
Posts: 3,477
|
Quote:
HR has a jitter figure, I think it's the jitter between the timestamps and the actual presented time...and depending on seeking, it would either slowly increase or decrease...the idea was to make it decrease from as high as possible(say 7ms), then it'd slowly fall back to 0.25ms(it would take 45mn on an HD3850 and +1H on a 8800GS) and then slowly increase(>7ms will drop frames). This "trick" does work, but it's too plain annoying to watch for jitter when all you want is watch a darn movie already ah well, Reclock on XP has disgusted me of watching movies tbh..mVR 0.11 w/o the tearing fix worked damn fine, until I realized that I was getting some weird video "glitches"(can that even be called "tearing"?)...to me watching movies on XP is indeed rocket science, it's about time I either move to W7/Aero or use D3D exclusive mode on XP...to "let the VSync hardware interrupt take control" as you said. "Help us obiwan-madshi, you're our only hope" Reclock pushes for timestamps that are IMPOSSIBLE to obey...that's my understanding anyway. Last edited by leeperry; 10th May 2010 at 18:50. |
|
10th May 2010, 22:25 | #2591 | Link | |
Registered User
Join Date: Mar 2007
Location: London, UK
Posts: 576
|
Quote:
...by the way, not sure about the whole "that's how games do it" thing. Games typically either throw as many frames up as they can and tear or they actually suffer from another nasty form of judder, where they have to drop the frame rate to half the refresh rate if the frame rate dips below it. That is why most real games put up with tearing. Last edited by Jong; 10th May 2010 at 22:36. |
|
10th May 2010, 22:40 | #2593 | Link | |
Kid for Today
Join Date: Aug 2004
Posts: 3,477
|
Quote:
and EVR is too sharp to my eyes anyway...I'll take LSF over their hardware accelerated sharpener anytime of the day. W7? let's just say that I'm perfectly happy w/ my XP box for everyday use and audio(w/uLilith+ASIO4ALL) and it's not the hollywood movies crappiness and Reclock's nonsense that will force me to move to an OS w/ +50 background processes living their life as if I did not exist. I think I sumed up the problem pretty accurately at the end of my previous post...Reclock is expecting the impossible, and all the VR's are forced to drop frames to catch up |
|
10th May 2010, 23:12 | #2594 | Link |
_
Join Date: May 2008
Location: France
Posts: 692
|
No need for a particular option to disable Aero.
You can disable Aero by application: http://forum.doom9.org/showthread.ph...22#post1375022 |
11th May 2010, 03:59 | #2595 | Link |
3 eyed CRT supporter
Join Date: Jan 2008
Location: Or-strayl-ya
Posts: 563
|
I'm worried by all this talk of Aero and Exclusive mode.
- Aero does not work with Multi-monitors. I've confirmed this myself. Beautiful playback with one monitor, turn on the second monitor and it all goes haywire (it may work if the other monitor has a refresh rate that is a multiple..haven't checked that....but doesn't mean there is an underlying bug? And anyway, I watch video with more than one source rate). - There are no players with a decent, reliable, attractive, exclusive mode interface. MPC-HC buggy, and ZP doesn't have an interface at all for exclusive mode (time to start pleading to Blight to write one..). Theatertek worked well in exclusive mode, but it's dead. |
11th May 2010, 04:53 | #2596 | Link | |
Registered User
Join Date: May 2007
Posts: 454
|
Quote:
I feel the way madshi is going about it is actually a very good way for the dev cycle of madVR, he seems very level headed and want to achive perfectly smooth playcack without the need of reclock, my fingers are crossed he gets there. |
|
11th May 2010, 10:59 | #2599 | Link | ||||
Registered User
Join Date: Mar 2007
Location: London, UK
Posts: 576
|
Quote:
I fully understand your feelings about moving from XP. As you know I was really uncertain about moving for a long time. But I would not worry about the background processes in W7. Its improved scheduling more than compensates IMO. Plus, if you ever want to play streamed video you will most likely need Aero to fix tearing. Regarding Reclock though, it is not the cause of the problems. As Madshi said: Quote:
Quote:
Only an overlay surface, or exclusive mode or Aero frees up those constraints. Furthermore, when those constraints are released, Reclock actually helps current renderers to be less time sensitive by positioning average start of presentation as early as possible in the vsync cycle to give it maximum time to complete. Ignoring for a minute Madshi's plans to pre-render multiple frames in advance (which I agree would be awesome), even a renderer that did the job properly itself (at the moment there are none!) would only be in a slightly better position. It would not have to worry about being too close to the preceding vsync, so it may have an extra 3-4ms to play with over Reclock, but it is still susceptible to scheduling delays. In practice, on a modern PC, Reclock has enough margin to work almost all the time (i.e significantly fewer than one drop per movie). If some errant process causes a big enough hiatus to stop a Reclock "controlled" renderer presenting in time I am not sure an extra 3-4ms would make any difference! In fact my main interest in having the renderer properly manage vsync was not to avoid possible scheduling problems but to avoid Reclock's "brief judder after a seek" issue. Reclock can take up to ~30 secs to get vsync into its target zone. Sometimes playback starts in, or very near, judder and Reclock cannot avoid that. A renderer that correctly controls vsync can hold onto the frame and present it at a safe spot, so judder can be avoided completely, even at the start or after a seek or pause. Lastly: Quote:
- like all other renderers not using Reclock vsync correction and without their own ability to change playback speed (i.e. EVR Sync in "sync video to display" mode), the time the first frame is available for presentation is random, relative to vsync, after each seek. It then drifts slowly if there is any mismatch between the GPU and the reference clock - the "jitter" figure is, I think, how far away from the middle of the frame that "start of presentation" is, or maybe how far away from the "ideal". It is the same measurement as the EVR Sync "av. sync offset" except it is expressed as an absolute value relative to the middle of the frame instead of the distance from the end of the frame. So, for a 20ms frame, the EVR Sync offset, with Reclock vsync correction OFF, can be any value from 0ms to -20ms. Judder occurs if the average is between, say -18 to -20ms or 0ms to -3ms. If I am right, a "jitter" figure of >7ms corresponds to an EVR offset figure either 0 to -3ms or -17ms to -20ms; If you were talking about 60Hz, with a 16.7ms frame time 7ms would correspond to times within 1.33ms either side of vsync. All of these are very much in synchronised judder territory. - So, although I understand you do not like the look of EVR, you see you could do exactly what you used to do with HR with EVR sync and no Reclock vsync correction - Start playback - look at the "Sync offset" - keep pausing until the figure is -10ms@50Hz, or, if you know the direction of drift, pause until you get -17ms or -3ms (at 60hz the figures would be -8.33ms, - 14ms or -3ms) - then you will have judder free playback until the offset drifts either to near the top or the bottom. It really does not look to me like there is anything different about HR in this respect. It is behaving just the way all other "normal" renderers behave. Last edited by Jong; 11th May 2010 at 18:31. Reason: Reclock takes UP TO ~30s to vsync, not always 30s |
||||
11th May 2010, 11:13 | #2600 | Link | ||||
Registered Developer
Join Date: Sep 2006
Posts: 9,140
|
Quote:
Quote:
Quote:
Quote:
I would guess that this is a problem between madVR and the decoder you're using. Please try at least 2 different decoders, if possible 3. If you have the same (or similar) problems with all decoders, please upload a sample for me to reproduce the problem. |
||||
Tags |
direct compute, dithering, error diffusion, madvr, ngu, nnedi3, quality, renderer, scaling, uhd upscaling, upsampling |
|
|