Bug 32889

Summary: Need to understand if InitializeQTML(kInitializeQTMLEnableDoubleBufferedSurface) affects performance in QTMovieWin
Product: WebKit Reporter: Chris Marrin <cmarrin>
Component: MediaAssignee: Chris Marrin <cmarrin>
Status: RESOLVED WONTFIX    
Severity: Normal CC: aroben, eric.carlson, simon.fraser
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: PC   
OS: Windows XP   

Description Chris Marrin 2009-12-22 16:38:33 PST
I had to add the kInitializeQTMLEnableDoubleBufferedSurface to the initialization of QT on Windows to make the full-screen HUD render correctly. It doesn't seem to affect non-full-screen performance, but I'm not sure if that will be true in all cases.
Comment 1 Eric Carlson 2010-01-05 13:36:30 PST
Setting the flag *shouldn't* do anything to non-fullscreen playback because it causes QuickTime to automatically use double-buffering for screen updates [1], and we never allow QuickTime to draw to the screen when doing inline playback. 

Having said that, we should definitely test the performance to make sure.

[1] http://developer.apple.com/mac/library/technotes/tn2005/tn2153.html
Comment 2 Chris Marrin 2010-01-05 14:17:46 PST
What would you say is a definitive performance test? I've tried a couple of videos and can't see any difference visually or in CPU load. But I may not be trying very challenging videos.
Comment 3 Chris Marrin 2010-01-07 14:37:51 PST
Eric and I discussed this and did some experimentation. Looks like there is a small amount of performance loss. It's hard to tell but it could be as high as 30% on a movie that was not taxing the CPU much. Once I land the FS video patch I will try it on a less capable machine.

But we also decided that there's really no way around this. You can reinitialize QT once you've called InitializeQTML and this flag has to be set or the FS HUD flickers wildly.

But first I need to do more testing...
Comment 4 Eric Carlson 2011-11-16 13:29:33 PST
This can be closed, we no longer initialize QTML with kInitializeQTMLEnableDoubleBufferedSurface.