https://bugs.winehq.org/show_bug.cgi?id=48769
Bug ID: 48769 Summary: Attack on Titan 2 requires support for 64-bit codec drivers Product: Wine Version: unspecified Hardware: x86 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: wmp&wmvcore Assignee: wine-bugs@winehq.org Reporter: qsniyg@mail.com Distribution: ---
To get to this stage in the first place, native wmvcore, qasf, wmasf, and media foundation libraries must be used.
... 00dd:warn:msvideo:ICInfo No driver found for codec vidc.0x00000004. 00dd:warn:msvideo:ICLocate Could not find a driver for codec vidc.WMV3. 00dd:trace:quartz:avi_decompressor_sink_connect Unable to find a suitable VFW decompressor 00dd:trace:quartz:avi_decompressor_sink_connect Connection refused 00dd:warn:quartz:FilterGraph2_Render Unable to connect L"AVI Decompressor" to renderer (80040207) 00dd:trace:quartz:FilterGraph2_RemoveFilter (000000005F262510/000000005F262518)->(0000000070488BF0) 00dd:trace:quartz:FilterGraph2_RemoveFilter Removing filter L"AVI Decompressor". ...
Using winetricks wmv9vcm should work, but unfortunately it doesn't due to wmv9vcm.dll being 32-bit only. It's also not included in any modern windows installation. I'm not sure where the 64-bit drivers are stored, but my guess is possibly wmvdecod.dll?
Related bug (tracking WMV9 support): https://bugs.winehq.org/show_bug.cgi?id=32723 . It's not a duplicate however, as this bug is about supporting the new 64-bit codec driver model (whatever that may be).
https://bugs.winehq.org/show_bug.cgi?id=48769
--- Comment #1 from Nikolay Sivov bunglehead@gmail.com --- What doesn't work and why do you need to mix mostly native modules with a few of builtins? It's usually advisable to stay away of debugging such combinations because it might expose implementation details.
https://bugs.winehq.org/show_bug.cgi?id=48769
Nikolay Sivov bunglehead@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|wmp&wmvcore |-unknown
https://bugs.winehq.org/show_bug.cgi?id=48769
--- Comment #2 from qsniyg qsniyg@mail.com --- (In reply to Nikolay Sivov from comment #1)
What doesn't work and why do you need to mix mostly native modules with a few of builtins? It's usually advisable to stay away of debugging such combinations because it might expose implementation details.
These are required in order to get the game to get this far. Otherwise it'll crash after one of:
* err:ole:CoGetClassObject no class object {187463a0-5bb7-11d3-acbe-0080c75e246e} could be created for context 0x3 (native qasf fixes this) * fixme:wmvcore:WMReader_QueryInterface ... (native wmvcore + media foundation libraries fix this, specifically mfperfhelper.dll) * wine: Call from 0x7b02e528 to unimplemented function wmasf.dll.ASFFindHeaderObject, aborting (native wmasf.dll fixes this)
https://bugs.winehq.org/show_bug.cgi?id=48769
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Version|unspecified |5.4 CC| |focht@gmx.net Hardware|x86 |x86-64
https://bugs.winehq.org/show_bug.cgi?id=48769
maniikarabera@protonmail.ch changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |maniikarabera@protonmail.ch
https://bugs.winehq.org/show_bug.cgi?id=48769
Zebediah Figura z.figura12@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |z.figura12@gmail.com Summary|Attack on Titan 2 requires |Attack on Titan 2 can't |support for 64-bit codec |play WMV3 video |drivers |
--- Comment #3 from Zebediah Figura z.figura12@gmail.com --- This specific application wants to create the ASF reader manually but autoplug from its pins.
The way this works on Windows is:
* the ASF reader filter, which lives in qasf and is implemented on top of wmvcore, outputs compressed media samples;
* the CWMVDecMediaObject DMO (wrapped using the DMO wrapper filter), which lives in wmvdecod.dll or wmvdmod.dll (depending on Windows version), decodes the video.
This is true regardless of architecture, at least since XP and probably earlier wmv9vcm isn't shipped with the OS. I'm not sure that bug 32723 is particularly valid.
How we want this to work in Wine is less clear. We probably want to implement the ASF reader on top of wmvcore. We *may* want it to output compressed media samples, though I'm not sure that any application yet depends on this, and it probably wouldn't be too difficult to correct if we did find one.
If we did output compressed media samples, we'd need a way to uncompress them. Bug 34622 mentions that native .NET XNA creates the WMA decoder DMO manually. (I'm not sure if it also creates the WMV decoder manually). That would probably have to make use of gstreamer (which is directly wrapping libav for WMV/WMA formats; I'm of the opinion that we should use libav directly, but better maintainers than I have disagreed).
Since you're interested in making this work using native components, you probably want `winetricks wmp9`. I think you'll also need native devenum, since ours doesn't enumerate DMOs yet.
https://bugs.winehq.org/show_bug.cgi?id=48769
--- Comment #4 from qsniyg qsniyg@mail.com --- (In reply to Zebediah Figura from comment #3)
Thank you very much for the detailed reply!
This specific application wants to create the ASF reader manually but autoplug from its pins.
The way this works on Windows is:
- the ASF reader filter, which lives in qasf and is implemented on top of
wmvcore, outputs compressed media samples;
- the CWMVDecMediaObject DMO (wrapped using the DMO wrapper filter), which
lives in wmvdecod.dll or wmvdmod.dll (depending on Windows version), decodes the video.
This is true regardless of architecture, at least since XP and probably earlier wmv9vcm isn't shipped with the OS. I'm not sure that bug 32723 is particularly valid.
How we want this to work in Wine is less clear. We probably want to implement the ASF reader on top of wmvcore. We *may* want it to output compressed media samples, though I'm not sure that any application yet depends on this, and it probably wouldn't be too difficult to correct if we did find one.
If we did output compressed media samples, we'd need a way to uncompress them. Bug 34622 mentions that native .NET XNA creates the WMA decoder DMO manually. (I'm not sure if it also creates the WMV decoder manually). That would probably have to make use of gstreamer (which is directly wrapping libav for WMV/WMA formats; I'm of the opinion that we should use libav directly, but better maintainers than I have disagreed).
I initially tried doing a prototype by rather painfully attempting to integrate ffmpeg's VC1 decoder code directly into wine, for an implementation of wmv9vcm. Though being several thousand lines of code, it might not be as desirable as using gstreamer like you've mentioned (I'm not familiar with it which is why I opted for ffmpeg instead).
The issue I ran into however was communicating the information found in the header to the decompressor. Clearly it's possible as windows found a way to do it, but I haven't yet found a method. I'll look into the DMO method you suggested, thanks again!
Since you're interested in making this work using native components, you probably want `winetricks wmp9`. I think you'll also need native devenum, since ours doesn't enumerate DMOs yet.
Unfortunately it doesn't work, since the game is 64-bit. If it helps, I wrote what I found so far here: https://github.com/ValveSoftware/Proton/issues/2830
https://bugs.winehq.org/show_bug.cgi?id=48769
Zebediah Figura z.figura12@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|Attack on Titan 2 can't |Attack on Titan 2 needs |play WMV3 video |support for debugging WMV3 | |video in push mode
--- Comment #5 from Zebediah Figura z.figura12@gmail.com --- (In reply to qsniyg from comment #4)
I initially tried doing a prototype by rather painfully attempting to integrate ffmpeg's VC1 decoder code directly into wine, for an implementation of wmv9vcm. Though being several thousand lines of code, it might not be as desirable as using gstreamer like you've mentioned (I'm not familiar with it which is why I opted for ffmpeg instead).
I don't think we want to use code directly, for patent reasons.
Using ffmpeg directly has also been rejected in the past due to the instability of the library's API.
The issue I ran into however was communicating the information found in the header to the decompressor. Clearly it's possible as windows found a way to do it, but I haven't yet found a method. I'll look into the DMO method you suggested, thanks again!
Which information do you mean?
https://bugs.winehq.org/show_bug.cgi?id=48769
Zebediah Figura z.figura12@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|Attack on Titan 2 needs |Attack on Titan 2 can't |support for debugging WMV3 |play WMV3 video |video in push mode |
https://bugs.winehq.org/show_bug.cgi?id=48769
joaopa jeremielapuree@yahoo.fr changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |jeremielapuree@yahoo.fr
--- Comment #6 from joaopa jeremielapuree@yahoo.fr --- Does the bug still occur with wine-7.0?
https://bugs.winehq.org/show_bug.cgi?id=48769
soredake broaden_acid002@simplelogin.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC|broaden_acid002@simplelogin | |.com |