https://bugs.winehq.org/show_bug.cgi?id=55596
Bug ID: 55596 Summary: ANONYMOUS;CODE: Media playback is broken Product: Wine Version: 8.16 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: mfplat Assignee: wine-bugs@winehq.org Reporter: dmrcghn@gmail.com Distribution: ---
Created attachment 75128 --> https://bugs.winehq.org/attachment.cgi?id=75128 Log with WINEDEBUG: +timestamp,+pid,+tid,+seh,+unwind,+threadname,+debugstr,+loaddll,+mscoree,+mfplat,+mfreadwrite
ANONYMOUS;CODE has video files it plays as cutscenes. They currently do not play (both audio and video).
Reproduction: Start a new game and hold left CTRL key to skip until main character enters a car. After the line "Why's all this happening anyway?", proceed to trigger a video playback. While the video is supposed to be playing, you can use mouse right click to bring up the option to skip to determine that the game has not crashed and is still running.
Setup: Proton Experimental (bleeding-edge branch) which as of writing is based on https://github.com/ValveSoftware/wine/commits/4dafea82d6098f67dda9edc8534827... . A WINEDEBUG log with traces for mfplat is attached as a file. This is on Arch Linux x86_64 with Mesa drivers on Intel CPU and GPU (Intel Tiger Lake-LP GT2 and 11th Gen Intel i3-1115G4 to be exact). Notice I'm using a XAudio2_9 redistributable native DLL instead of the built-in ones to bypass a voiceline related crash. I'm unable to provide a non-Proton log as the game is DRM'd, unfortunately.
Related information: The related lines are as follows: $ cat steam-2291020.log | grep mfplat | grep -v "trace:" Effective WINEDEBUG: +timestamp,+pid,+tid,+seh,+unwind,+threadname,+debugstr,+loaddll,+mscoree,+mfplat,+mfreadwrite 934.461:016c:0170:warn:mfplat:bytestream_QueryInterface Unsupported {279a808d-aec7-40c8-9c6b-a6b492c78a66}. 934.499:016c:0170:fixme:mfplat:src_reader_QueryInterface ({7b981cf0-560e-4116-9875-b099895f23d7}, 09EDD0FC)
Notice that there is a patch in the mailing list for IMFSourceReaderEx from a year ago that was put on hold until deemed necessary: https://www.winehq.org/pipermail/wine-devel/2022-February/208575.html https://www.winehq.org/pipermail/wine-devel/2022-February/208576.html Patching Wine with this patch makes video playback's audio work correctly. I couldn't find anything related to IMFMediaSource, unfortunately.
https://bugs.winehq.org/show_bug.cgi?id=55596
Rufusovis dmrcghn@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Distribution|--- |ArchLinux
https://bugs.winehq.org/show_bug.cgi?id=55596
--- Comment #1 from Rufusovis dmrcghn@gmail.com --- Note that the GStreamer related "wrong ELF class: ELFCLASS64" warnings in the provided log are unrelated as redirecting them to 32-bit ones get rid of that error and do not change anything.
https://bugs.winehq.org/show_bug.cgi?id=55596
--- Comment #2 from Nikolay Sivov bunglehead@gmail.com --- Thanks, I submitted this change again https://gitlab.winehq.org/wine/wine/-/merge_requests/3867. We'll see if it breaks anything.
https://bugs.winehq.org/show_bug.cgi?id=55596
--- Comment #3 from Nikolay Sivov bunglehead@gmail.com --- This is now merged, https://source.winehq.org/git/wine.git/commit/07f50ee66b45b550b8e973f71e0164.... Please check current wine tree, if it works for you.
https://bugs.winehq.org/show_bug.cgi?id=55596
--- Comment #4 from Rufusovis dmrcghn@gmail.com --- I think merging the patch directly caused https://bugs.winehq.org/show_bug.cgi?id=55635 as IMFSourceReaderEx was first implemented in Windows 8. AFAII lower versions should still advertise the old interface.
https://bugs.winehq.org/show_bug.cgi?id=55596
--- Comment #5 from Rufusovis dmrcghn@gmail.com --- (cont.) ...or the old interface should still be advertised alongside the new one?
https://bugs.winehq.org/show_bug.cgi?id=55596
--- Comment #6 from Nikolay Sivov bunglehead@gmail.com --- Both interfaces are not exposed. We don't hide things based on returned Windows version.
https://bugs.winehq.org/show_bug.cgi?id=55596
Rufusovis dmrcghn@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #75128|0 |1 is obsolete| |
--- Comment #7 from Rufusovis dmrcghn@gmail.com --- Created attachment 75183 --> https://bugs.winehq.org/attachment.cgi?id=75183 Log with WINEDEBUG=+timestamp,+pid,+tid,+seh,+unwind,+threadname,+debugstr,+loaddll,+mscoree,+mfplat (upstream as of 25-09-2023)
Sorry about the previous wrong comment and for taking too long to test the applied patch on upstream. I was trying to make Proton work with upstream Wine but ended up failing. Instead, I ended up installing Steam with Wine instead.
As expected, applying said patch made cutscene audio work. Cutscene movie playback is still broken. I'm uploading the first 50K lines of the new log as an attachment.
Some lines I think to be of relevance: 27298.050:08e8:08ec:fixme:dxgi:DXGID3D10CreateDevice Ignoring flags 0x20. 27298.053:08e8:08ec:fixme:d3d11:d3d10_multithread_SetMultithreadProtected iface 01B142A0, enable 0x1 stub! 27298.055:08e8:08ec:fixme:d3d:wined3d_swapchain_init The application requested more than one back buffer, this is not properly supported. 27298.056:08e8:08ec:fixme:d3d:wined3d_swapchain_init The application requested more than one back buffer, this is not properly supported. 27298.057:08e8:08ec:fixme:dxgi:d3d11_swapchain_ResizeBuffers Ignoring flags 0x2. 27298.102:08e8:08ec:fixme:d3dcompiler:d3dcompiler_shader_reflection_GetDesc iface 01B1EA70, desc 0012FB98 partial stub! 27298.102:08e8:08ec:fixme:d3dcompiler:skip_u32_unknown Skipping 1 unknown u32s: 27298.102:08e8:08ec:fixme:d3dcompiler:skip_u32_unknown 0x00000008 27298.102:08e8:08ec:fixme:d3dcompiler:skip_u32_unknown Skipping 1 unknown u32s: 27298.102:08e8:08ec:fixme:d3dcompiler:skip_u32_unknown 0x00000000 27356.342:08e8:08fc:fixme:d3d:surface_cpu_blt Unsupported blit between height-scaled formats (src WINED3DFMT_NV12, dst WINED3DFMT_NV12). 27356.342:08e8:08fc:fixme:d3d:wined3d_cs_exec_blt_sub_resource Blit failed. 27337.387:08e8:08ec:warn:mfplat:bytestream_QueryInterface Unsupported {279a808d-aec7-40c8-9c6b-a6b492c78a66}. 27337.387:08e8:08ec:fixme:mfplat:stream_handler_BeginCreateObject Unimplemented flags 0x11
https://bugs.winehq.org/show_bug.cgi?id=55596
--- Comment #8 from Rufusovis dmrcghn@gmail.com --- (cont.) Note that I was using the experimental WoW64 mode as my distribution does not package lib32-gst-bad and lib32-gst-ugly and installing them from AUR would require auditing 60 PKGBUILDs. If you'd like a log without said mode enabled, please let me know and I will get a log on a new system.
https://bugs.winehq.org/show_bug.cgi?id=55596
--- Comment #9 from Nikolay Sivov bunglehead@gmail.com --- (In reply to Rufusovis from comment #0)
Patching Wine with this patch makes video playback's audio work correctly. I couldn't find anything related to IMFMediaSource, unfortunately.
You said it helped when you tested, at some point. How did you do that originally?
https://bugs.winehq.org/show_bug.cgi?id=55596
--- Comment #10 from Rufusovis dmrcghn@gmail.com --- I patched Proton's fork of Wine with said patch. Why?
https://bugs.winehq.org/show_bug.cgi?id=55596
--- Comment #11 from Nikolay Sivov bunglehead@gmail.com --- (In reply to Rufusovis from comment #10)
I patched Proton's fork of Wine with said patch. Why?
Then we can consider this done. You could open a PR for proton wine, to make sure this is merged there.
https://bugs.winehq.org/show_bug.cgi?id=55596
--- Comment #12 from Rufusovis dmrcghn@gmail.com --- Video playback is still broken on plain upstream Wine. Is this going to be closed?
https://bugs.winehq.org/show_bug.cgi?id=55596
--- Comment #13 from Rufusovis dmrcghn@gmail.com --- Ah, I feel like I should be more clear. Video's audio playback works. Video's displaying graphics on screen playback is broken, still.
https://bugs.winehq.org/show_bug.cgi?id=55596
--- Comment #14 from Nikolay Sivov bunglehead@gmail.com --- (In reply to Rufusovis from comment #13)
Ah, I feel like I should be more clear. Video's audio playback works. Video's displaying graphics on screen playback is broken, still.
Right, so it's basically the same for proton wine and winehq? We could still have this report open until it's fully resolved, have two reports - this one for audio, which is fixed, and another one for video. Either way is fine.
https://bugs.winehq.org/show_bug.cgi?id=55596
--- Comment #15 from Rufusovis dmrcghn@gmail.com --- (In reply to Nikolay Sivov from comment #14)
(In reply to Rufusovis from comment #13)
Ah, I feel like I should be more clear. Video's audio playback works. Video's displaying graphics on screen playback is broken, still.
Right, so it's basically the same for proton wine and winehq?
That's correct. I believe it's because of the lines I said I think of to be relevance in the second log's post.
We could still have this report open until it's fully resolved, have two reports - this one for audio, which is fixed, and another one for video. Either way is fine.
Please let me know which one you prefer so I can post the log again if you prefer to make a new issue.
https://bugs.winehq.org/show_bug.cgi?id=55596
--- Comment #16 from Rufusovis dmrcghn@gmail.com --- The reason for video playback not working is now known. Here is a workaround patch for it that applies to Proton: https://github.com/GloriousEggroll/proton-ge-custom/compare/master...Hawkhea...
In the words of the patch author, the behaviour is as follows: "It's trying to stuff a 1920x1080 video in a 1920x1088 buffer which gstreamer does not like" "it sets up to display a 1920x1088 video, tries to play back a 1080p video into it, and then asks MF 'so how big is the video anyways'"
Apparently Windows tolerates this but Wine doesn't.