I'm successfully running xmpeg 4.5 with the current snapshot of wine. However, occasionally I get this very strange glitches:
1. When the splash screen desapears, so does all of my desktop. I have to make a Refresh Desktop to get it back. Judging by the log below, I am suspecting of something in the DirectDraw functions. Upon request I will gladily send a (45Kb) screen shot of this.
2. Whenever I click on a radio button for YV12 under Project Options/Post Processing, it crashes with the message
wine: main.c:572: DDRAW_width_bpp_to_pitch: Assertion `bpp != 0' failed.
I traced this down to the ddraw module and made the following very ugly hack around it by changing the macro PFGET_BPP to make sure it never returns zero:
Index: wine/dlls/ddraw/ddraw_private.h =================================================================== RCS file: /home/wine/wine/dlls/ddraw/ddraw_private.h,v retrieving revision 1.35 diff -u -p -r1.35 ddraw_private.h --- wine/dlls/ddraw/ddraw_private.h 2 Jan 2003 19:51:25 -0000 1.35 +++ wine/dlls/ddraw/ddraw_private.h 20 Jan 2003 20:02:45 -0000 @@ -331,7 +331,8 @@ const ddraw_driver* DDRAW_FindDriver(con /* Get DDSCAPS of surface (shortcutmacro) */ #define SDDSCAPS(iface) ((iface)->s.surface_desc.ddsCaps.dwCaps) /* Get the number of bytes per pixel for a given surface */ -#define PFGET_BPP(pf) (pf.dwFlags&DDPF_PALETTEINDEXED8?1:((pf.u1.dwRGBBitCount+7)/8)) +#define PFGET_BPPZ(pf) (pf.dwFlags&DDPF_PALETTEINDEXED8?1:((pf.u1.dwRGBBitCount+7)/8)) +#define PFGET_BPP(x) (PFGET_BPPZ(x)==0?1:PFGET_BPPZ(x)) #define GET_BPP(desc) PFGET_BPP(desc.u4.ddpfPixelFormat)
LONG DDRAW_width_bpp_to_pitch(DWORD width, DWORD bpp);
Now it won't crash anymore, but when I click on that button, the whole dialog box gets misteriously sent to the back!
Anybody else having these problems? Any hints as to what could to be the problem?
Waldeck
fixme:keyboard:X11DRV_KEYBOARD_DetectLayout Your keyboard layout was not found! Using closest match instead (United States keyboard layout) for scancode mapping. Please define your layout in windows/x11drv/keyboard.c and submit them to us for inclusion into future Wine releases. See the Wine User Guide, chapter "Keyboard" for more information. mcop warning: user defined signal handler found for SIG_PIPE, overriding fixme:ole:MSFT_DoTypeInfo Assign constructor/destructor memid fixme:ole:MSFT_DoTypeInfo Assign constructor/destructor memid fixme:win32:PE_CreateModule Unknown directory 15 ignored fixme:win32:PE_CreateModule Unknown directory 15 ignored fixme:win32:PE_CreateModule Unknown directory 15 ignored fixme:win32:PE_CreateModule Unknown directory 15 ignored fixme:commctrl:InitCommonControlsEx Unknown class! dwICC=0x8000 fixme:ddraw:Main_DirectDraw_SetCooperativeLevel (0x402c3f50)->(00010021,00000008) fixme:ddraw:Main_DirectDraw_CreateSurface App didn't request a valid surface type - assuming offscreenplain
I have more data on item (2). I traced back the problem to be in Main_DirectDraw_CreateSurface. The application (or even wine itself) had requested a surface with flags DDSCAPS_VIDEOMEMORY and DDSCAPS_OVERLAY set. These are apparently not supported and, instead of failing, that function assumes the creation of an offscreen surface instead. However, it seems the other parameters (including surface BPP) were not adequately set, which causes wine to crash later on in DDRAW_width_bpp_to_pitch.
I'd like to include the backtrace and other debug stuff here but I don't know how to copy and paste from winedbg window. Since this seems to be an implementation issue, I will make no attempt to fixing it. For the time being, I'll just keep the hack I told you before.
Best, Waldeck
On Wed, Jan 22, 2003 at 09:10:19PM -0500, Waldeck Schutzer wrote:
I have more data on item (2). I traced back the problem to be in Main_DirectDraw_CreateSurface. The application (or even wine itself) had requested a surface with flags DDSCAPS_VIDEOMEMORY and DDSCAPS_OVERLAY set. These are apparently not supported and, instead of failing, that function assumes the creation of an offscreen surface instead. However, it seems the other parameters (including surface BPP) were not adequately set, which causes wine to crash later on in DDRAW_width_bpp_to_pitch.
Well, no need to debug further, OVERLAY are not supported anymore in Wine right now.
Re-adding support this is on my TODO list but I am now doing Direct3D work and do no want to 'spread too thin' on multiple things so it may be a while (if ever) before it's re-added.
I guess that a patch would be to return an error at surface creation when OVERLAY are requested.
Lionel
Thanks for letting me know, Lionel. I was getting tired of debugging anyway, but not before I found the real cause for the crashing. Xmpeg was requesting not just overlays but also it was using FourCC codes for YV12, and apparently these are also not yet supported or fully implemented. On my machine, I had to force GDI mode to get xmpeg to run smoothly (of course without preview in YUV modes), but I'm very comfortable with the way it is.
Patching to return an error for overlays was the first thing I tried but for some obscure reason this caused xmpeg to crash internally (perhaps it had previously detected overlays). I have the source code for xmpeg but no time to dig into it. Besides, as I just said, it is now running fine without DDRAW. Anybody else is interested?
Waldeck
Lionel Ulmer wrote:
On Wed, Jan 22, 2003 at 09:10:19PM -0500, Waldeck Schutzer wrote:
I have more data on item (2). I traced back the problem to be in Main_DirectDraw_CreateSurface. The application (or even wine itself) had requested a surface with flags DDSCAPS_VIDEOMEMORY and DDSCAPS_OVERLAY set. These are apparently not supported and, instead of failing, that function assumes the creation of an offscreen surface instead. However, it seems the other parameters (including surface BPP) were not adequately set, which causes wine to crash later on in DDRAW_width_bpp_to_pitch.
Well, no need to debug further, OVERLAY are not supported anymore in Wine right now.
Re-adding support this is on my TODO list but I am now doing Direct3D work and do no want to 'spread too thin' on multiple things so it may be a
while
(if ever) before it's re-added.
I guess that a patch would be to return an error at surface creation when OVERLAY are requested.
Lionel
- When the splash screen desapears, so does all of my desktop. I have
to make a Refresh Desktop to get it back. Judging by the log below, I am suspecting of something in the DirectDraw functions. Upon request I will gladily send a (45Kb) screen shot of this.
This problem also occurs with QuickTime when it's using DirectDraw.
It was easier to switch it to GDI mode than debug though :)
On Thursday 23 January 2003 10:59, Mike Hearn wrote:
- When the splash screen desapears, so does all of my desktop. I have
to make a Refresh Desktop to get it back. Judging by the log below, I am suspecting of something in the DirectDraw functions. Upon request I will gladily send a (45Kb) screen shot of this.
This problem also occurs with QuickTime when it's using DirectDraw.
It was easier to switch it to GDI mode than debug though :)
And how do you switch to GDI mode?
It's in the preferences/settings dialog. You can get to it from the player I think. Then select Video mode, then Safe Mode (GDI Only)
On Thu, 2003-01-23 at 15:42, Zsolt Rizsanyi wrote:
On Thursday 23 January 2003 10:59, Mike Hearn wrote:
- When the splash screen desapears, so does all of my desktop. I have
to make a Refresh Desktop to get it back. Judging by the log below, I am suspecting of something in the DirectDraw functions. Upon request I will gladily send a (45Kb) screen shot of this.
This problem also occurs with QuickTime when it's using DirectDraw.
It was easier to switch it to GDI mode than debug though :)
And how do you switch to GDI mode?