http://bugs.winehq.org/show_bug.cgi?id=14578
Summary: Thief, System Shock 2 - video intros hang/crash in the end Product: Wine Version: CVS/GIT Platform: PC OS/Version: Linux Status: NEW Severity: minor Priority: P2 Component: quartz AssignedTo: wine-bugs@winehq.org ReportedBy: alexd4@inbox.lv CC: m.b.lankhorst@gmail.com
After recent fixes, videos now start playing in Wine with builtin quartz.dll. But some new problems now appeared.
There was a regression - some crashes because of "quartz: Fix reference leak in avi splitter on end of stream." (28d6203ca9bd0ba17ce38e309f340b518f954c08) patch. So far it appears to have been fixed by recently submitted "quartz: Fix handling of zero byte samples and endofstreams".
The latter patch, although fixing the crash, seems to introduce hangs of intro videos in Thief (i.e. it works before "fix reference leak", it crashes after "fix reference leak" and it doesn't crash but hangs after also applying "fix handling of zero byte samples". Very likely it simply exposes a previously hidden underlying problem. Because, for example, system shock 2 (also a Looking Glass game with similar engine) has some videos for which I can't find a working Wine version, probably they always had this hang problem. I've analyzed +quartz logs for differences, and it looks to me that the critical difference is lack of AVISplitter_SendEndOfFile on the video (0) stream in NON-working cases, which possibly makes game unaware that video ended. Non-working cases have either "END OF STREAM" detected on stream 1 only or not at all.
+quartz log of Thief session in Wine build that works fine has: err:quartz:AVISplitter_next_request END OF STREAM ON 1 trace:quartz:AVISplitter_SendEndOfFile End of file reached [...] err:quartz:AVISplitter_next_request END OF STREAM ON 0 trace:quartz:AVISplitter_SendEndOfFile End of file reached
+quartz log of Thief session in Wine build that hangs has no SendEndOfFile at all.
+quartz log of System Shock 2 in Wine build that works for Thief (but SS2 still hangs) has err:quartz:AVISplitter_next_request END OF STREAM ON 1 trace:quartz:AVISplitter_SendEndOfFile End of file reached
System Shock 2 with 28d6203ca9bd0ba17ce38e309f340b518f954c08 and "fix zero size samples" patch - can't compare because it now crashes (assert failed) :/
filesource.c:1250: FileAsyncReader_WaitForNext: Assertion `rtStop == rtSampleStop' failed.
This pattern shows when watching videos outside the game in the graphedit tool as well.