http://bugs.winehq.org/show_bug.cgi?id=59560 Wolfgang Hartl <wolfo.dev@wolke7.net> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |wolfo.dev@wolke7.net --- Comment #10 from Wolfgang Hartl <wolfo.dev@wolke7.net> --- The Malkari intro video is an IV50 compressed video, nominal 24-bit, 512x384. The game requests in the codec the ouput of 8-bit BI_RGB, 512x384. 0130:trace:ir50_32:decompress_query in->planes = 1 0130:trace:ir50_32:decompress_query in->bpp = 24 0130:trace:ir50_32:decompress_query in->height = 384 0130:trace:ir50_32:decompress_query in->width = 512 0130:trace:ir50_32:decompress_query in->compr = 0x30355649 0130:trace:ir50_32:decompress_query in offset (0,0), size 512x384 0130:trace:ir50_32:decompress_query out->planes = 1 0130:trace:ir50_32:decompress_query out->bpp = 8 0130:trace:ir50_32:decompress_query out->height = 384 0130:trace:ir50_32:decompress_query out->width = 512 0130:trace:ir50_32:decompress_query out->compr = 0 Current Wine ir50_32 rejects the 8-bit output, so the playback stops early but the native ir50_32.dll accepts it and provides the output. I patched the ir50_32 to enable 8-bit by trying to do the output with "MFVideoFormat_RGB8". Then game intro gets further: the audio starts and playback begins. But the video is black because winegstreamer cannot create the backend transform: 0130:trace:ir50_32:decompress_begin decoder 003A9A3C, in 003A9B80, out 003A9FB0. 0:00:00.043839567 170162 0x55556467fbc0 ERROR WINE unixlib.c:225:link_element_to_sink: Failed to find src pad compatible to <'':sink> on <videoconvert1>. 0:00:00.043872465 170162 0x55556467fbc0 ERROR WINE wg_transform.c:808:wg_transform_create: Failed to create winegstreamer transform. 0130:trace:ir50_32:IV50_DriverProc 3840572 014A29E8 4013 00000000 00000000 0130:fixme:ir50_32:IV50_DriverProc Unknown message: 4013 0 0 0130:trace:ir50_32:IV50_DriverProc 3840572 014A29E8 4015 00000000 00000000 0130:fixme:ir50_32:IV50_DriverProc Unknown message: 4015 0 0 So, the MFVideoFormat_RGB8 is known/listed in Wine, but the winegstreamer path cannot actually output it for IV50. But, the missing piece is not just “8 bits per pixel”, RGB8 needs a paletted/indexed output. Possible paths: Fix locally in ir50_32, by keeping the backend decode in a known-working format: 1) IV50 -> RGB24 via winegstreamer 2) Only when the app requests 8-bit BI_RGB, accept it in ICM_DECOMPRESS_QUERY. Then, use there the RGB24 output and transform locally to 8-bit palette indexes inside ir50_32 by converting each RGB24 pixel to the nearest palette index. 3) Write it into the app's output buffer. 4) Implement palette messages. This would target the bug in ir50_32 and does not mess with the shared media backend. But feels more as a workaround and is only valid for the IV50. On the other hand the usage of IV50 is rare, 8-bit output even more and the native ir50_32.dll works. And, not sure if this implementation approach would be accepted. A second option would be a broader MFVideoFormat_RGB8 support in winegstreamer. To teach winegstreamer layer to handle paletted RGB8 properly. This could be useful for other codecs too and the defined MFVideoFormat_RGB8 would not be an empty shell. But much bigger impact, more invasive in the general media-backend, harder to test. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.