http://bugs.winehq.org/show_bug.cgi?id=58193
Bug ID: 58193 Summary: Dragon Quest X Online fails to play livestream video Product: Wine Version: 10.6 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: mfplat Assignee: wine-bugs@winehq.org Reporter: achurch+wine@achurch.org Distribution: ---
Created attachment 78496 --> http://bugs.winehq.org/attachment.cgi?id=78496 +mfplat,+dmo debug log
Dragon Quest X Online has a feature in which official livestreams can be viewed in-game, but this fails under Wine when using the FFmpeg backend for Media Foundation:
0530:trace:mfplat:source_resolver_CreateObjectFromByteStream 43D86A20, 43E8B754, L"C:/users/dqx/Documents/My Games/DRAGON QUEST X/work/Bin/hls00000470010000058d.aac", 0x1, 00000000, 4573FDE4, 4573FDE8. [...] 0530:trace:mfplat:async_result_SetStatus 43DCBC58, 0xc00d36c4.
(This file is an AAC audio chunk downloaded from the livestream. An MPEG-TS video chunk with a similar filename and .ts extension is also stored but never referenced, presumably because this initialization fails.)
The MF_E_UNSUPPORTED_BYTESTREAM_TYPE error appears to be returned by mfplat/main.c:resolver_get_bytestream_handler(); this iterates through registry keys for specific supported MIME types and extensions and then falls back to resolver_create_gstreamer_handler(), which naturally fails because Wine is built without GStreamer support. I can get past that error by adding a registry key for .aac (HKCU/Software/Microsoft/Windows Media Foundation/ByteStreamHandlers/.aac) with values copied from an existing bytestream handler (I arbitrarily chose the .mp3 handler), and FFmpeg (via winedmo) appears to correctly recognize the bytestream as AAC audio, but the game's livestream playback thread immediately crashes with a divide-by-zero exception (the game itself is still playable, but an error dialog pops up and no stream is played).
Unfortunately, this issue may be difficult to track down because the relevant code is only executed when an official livestream is actually running, and the game does not have any "test" functionality for the livestream viewer.