[Bug 23175] Zak McKracken - Between Time and Space fails to play back intro video (ICM_DECOMPRESS_GET_FORMAT problems with Xvid)

wine-bugs at winehq.org wine-bugs at winehq.org
Wed Mar 30 10:13:18 CDT 2016


https://bugs.winehq.org/show_bug.cgi?id=23175

Bruno Jesus <00cpxxx at gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|Zak McKracken - Between     |Zak McKracken - Between
                   |Time and Space fails to     |Time and Space fails to
                   |play back intro video       |play back intro video
                   |                            |(ICM_DECOMPRESS_GET_FORMAT
                   |                            |problems with Xvid)
          Component|-unknown                    |msvfw32

--- Comment #4 from Bruno Jesus <00cpxxx at gmail.com> ---
I remember this problem from years ago, I tried contacting Xvid developers to
no response. 

In the process of reproducing video Wine issues a ICM_DECOMPRESS_GET_FORMAT
message so that the codec can fill the output structure with the correct output
video frame information, but unfortunately Xvid (unlike every other codec)
checks the output data before filling it (!?) with the requested information.

That is why the log varies depending on the attempt to run, different garbage
is present in lpbiOut when the message is sent to the codec.

So probably wine implements this in a little bit different way since it works
in Windows.

There are 2 separate problems. The problem starts in
msvfw32/msvideo_main.c:ICGetDisplayFormat because:

 738         ICSendMessage(tmphic, ICM_DECOMPRESS_GET_FORMAT,
(DWORD_PTR)lpbiIn,      (DWORD_PTR)lpbiOut);
 739 
 740         if (lpbiOut->biCompression != 0) {
 741            FIXME("Ooch, how come decompressor outputs compressed data
(%d)?     ?\n",
 742                          lpbiOut->biCompression);
 743         }

The return of ICSendMessage is not checked, so the rest of IF conditions are
tested over garbage when ICSendMessage returns error (in this case
ICERR_BADFORMAT).

Anyway, the main problem is in how to request for the output format in a way
Xvid does not complain.

-- 
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.



More information about the wine-bugs mailing list