http://bugs.winehq.org/show_bug.cgi?id=25148
--- Comment #11 from Maarten Lankhorst m.b.lankhorst@gmail.com 2010-11-29 02:27:19 CST --- Ok so here is my technical analysis of what is going wrong. This might be something you could pass on to someone knowledgeable in support, probably most persons won't have a clue what I'm talking about.
The root cause is all the same, I think wine is correct here, and that if they didn't force the directsound renderer to provide the reference clock it would fail on windows too.
The time as passed by the gom source filter and retried by GetTime is media time, not stream time. Since it is confusing the 2, it will cause the whole thing to hang. I assume that the only reason it works in windows is probably that the DirectSound renderer provides the clock and notices that its far behind and has to catch up. This will reset the clock and force a unhang.
I've done a lot of work in wine to separate the 2 times.
http://msdn.microsoft.com/en-us/library/dd374626%28v=VS.85%29.aspx explains the stream time. I suspect that '# After a seek operation, stream time resets to zero.' is causing the issue here. In the GOM filter SetTime is set to media time, not stream time. SetMediaTime sets the media time.
http://msdn.microsoft.com/en-us/library/dd758085%28VS.85%29.aspx is how it's done for a source filter.
Of course if my analysis is wrong, can you tell the responsible gretech guys to contact me directly? I'd love to figure this one out.