https://bugs.winehq.org/show_bug.cgi?id=25180
--- Comment #17 from Bruno Jesus 00cpxxx@gmail.com --- (In reply to Michael Müller from comment #16)
(In reply to Bruno Jesus from comment #15)
It is interesting that forcing 32 bpp would make the video work. The input video is supposed to be 24 so I expected the output to be 24 too.
I don't force anything. My tests show that the ICGetDisplayFormat implementation behaves in the same way as on Windows. If you think that the video output should be 24 bit, then the problem is located in a different part of Wine. I would also prefer to see tests backing up your statements instead of wild guesses.
I just found interesting that our current iccvid always try to output the video in the same bpp from input, your patch changes this by using the screen depth during the get format call. That was my point only, I trust your tests and I trust your judgement and I see no problem with wild guesses =)
Nevertheless, I updated the patchset to fix the original bug with the 24 bit playback. The wrong rendering was caused by the call to StretchDIBits in MCIAVI_PaintFrame. The windows / wine GDI API expects a row stride which is dividable by 4 bytes and iccvid just sets stride = width.
This is very good to known, thanks for working on this. The original set did not fix the playback in VirtualDub which does not use the GET FORMAT message, it manually attempts to find the format with ICDecompressQuery. But now everything works out of the box.