https://bugs.winehq.org/show_bug.cgi?id=51324
Bug ID: 51324 Summary: Imperium Great Battles of Rome can't play videos Product: Wine Version: 5.16 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: lorenzofer@live.it Distribution: ArchLinux
Imerium GBR can't play videos anymore (either the intro video of the campaign videos) from wine 5.16 onwards (current master or wine 6.11). It do instead work on wine 5.15 albeit with some slight lag or glitches. This is with a fully clean prefix.
Will do a regression test as soon as possible
https://bugs.winehq.org/show_bug.cgi?id=51324
Lorenzo Ferrillo lorenzofer@live.it changed:
What |Removed |Added ---------------------------------------------------------------------------- Regression SHA1| |bdf860033860973bf2b516a1083 | |d5bea86ad8c14
--- Comment #1 from Lorenzo Ferrillo lorenzofer@live.it --- Regrssion test results
bdf860033860973bf2b516a1083d5bea86ad8c14 is the first bad commit commit bdf860033860973bf2b516a1083d5bea86ad8c14 Author: Gijs Vermeulen gijsvrm@gmail.com Date: Thu Aug 6 20:32:30 2020 +0200
amstream: Return VFW_E_CANNOT_CONNECT in IAMMultiMediaStream::OpenFile() when no renderers are present and AMMSF_NORENDER is not specified.
Signed-off-by: Gijs Vermeulen gijsvrm@gmail.com Signed-off-by: Zebediah Figura z.figura12@gmail.com Signed-off-by: Alexandre Julliard julliard@winehq.org
dlls/amstream/multimedia.c | 17 ++++++++++++++++- dlls/amstream/tests/amstream.c | 38 ++++++++++++++++++++++++++++++++++++-- 2 files changed, 52 insertions(+), 3 deletions(-)
https://bugs.winehq.org/show_bug.cgi?id=51324
Gijs Vermeulen gijsvrm@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |regression Component|-unknown |quartz
--- Comment #2 from Gijs Vermeulen gijsvrm@gmail.com --- Is there a demo/legal download to reproduce this?
If not, could you attach a +amstream,+quartz,+strmbase,+gstreamer log from a working and a non-working build?
https://bugs.winehq.org/show_bug.cgi?id=51324
--- Comment #3 from Lorenzo Ferrillo lorenzofer@live.it --- Created attachment 70190 --> https://bugs.winehq.org/attachment.cgi?id=70190 amstream repsect renderallstreams flag
Hi Gijs A demo is not aviable.
The game creqate the multimeda_stream object and then call IAMMultiMediaStream_Initialize with type = 0, flags= 0x1 (AMMSF_NOGRAPHTHREAD) and nullptr graph.
Then it call IAMMultiMediaStream_OpenFile with the movie path and the flag 0x1 (AMMSF_RENDERALLSTREAMS)
Now before commit bdf860033860973bf2b516a1083d5bea86ad8c14 the codepath involved IGraphBuilder_Render(This->graph, This->ipin); that probably was creating the intermediate filters or renderers. And it worked.
After the commit it use IFilterGraph2_RenderEx with AM_RENDEREX_RENDERTOEXISTINGRENDERERS . This fails if no suitable renderer aren't present. And it's probably the intended behaviours of IAMMultiMediaStream_OpenFile in normal conditions.
But Imperium use OpenFile with AMMSF_RENDERALLSTREAMS. MSDN state that "The AMMSF_RENDERALLSTREAMS flag will create default rendering filters for video and audio if they do not exist" So it seems that in this specific case the filters are supposed to be created dynamically, and this application actually require this behaviour to be respected.
I tested that if I use IFilterGraph2_RenderEx passing 0 instead of AM_RENDEREX_RENDERTOEXISTINGRENDERERS when AMMSF_RENDERALLSTREAMS is passed the application works. It also works if it revert to use IGraphBuilder_Render for this specific case.
Attaching a patch for the first option. I don't know if this is what is supposed to happen, and testing the exact behaviours with the testbot may not be trivial.
https://bugs.winehq.org/show_bug.cgi?id=51324
Gijs Vermeulen gijsvrm@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Assignee|wine-bugs@winehq.org |gijsvrm@gmail.com Ever confirmed|0 |1 Status|UNCONFIRMED |NEW
--- Comment #4 from Gijs Vermeulen gijsvrm@gmail.com --- Created attachment 70219 --> https://bugs.winehq.org/attachment.cgi?id=70219 patch
Hi Lorenzo,
Thanks for the detailed explanation, it seems the main problem is that we weren't handling AMMSF_RENDERALLSTREAMS in OpenFile() at all.
Does the attached patch work for you as well? If so, I'll send it upstream.
https://bugs.winehq.org/show_bug.cgi?id=51324
--- Comment #5 from Lorenzo Ferrillo lorenzofer@live.it --- IT works. (It's also functionally equivalent to the one I was already using locally)
https://bugs.winehq.org/show_bug.cgi?id=51324
Gijs Vermeulen gijsvrm@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Fixed by SHA1| |3319526fda6cb7955df617c5076 | |6820caa807eaa Resolution|--- |FIXED
--- Comment #6 from Gijs Vermeulen gijsvrm@gmail.com --- Fixed by https://source.winehq.org/git/wine.git/commit/3319526fda6cb7955df617c50766820caa807eaa
Thanks again for the report and the detailed explanation!
https://bugs.winehq.org/show_bug.cgi?id=51324
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #7 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 6.12.
https://bugs.winehq.org/show_bug.cgi?id=51324
Michael Stefaniuc mstefani@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |6.0.x
https://bugs.winehq.org/show_bug.cgi?id=51324
Michael Stefaniuc mstefani@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|6.0.x |---
--- Comment #8 from Michael Stefaniuc mstefani@winehq.org --- Removing the 6.0.x milestone from bug fixes included in 6.0.2.