Wine avitools/aviplay fails with CO_E_NOTINITIALIZED for any
AVI file
Alex Villacís Lasso
a_villacis at palosanto.com
Thu Jun 30 15:09:35 CDT 2005
>It worked in the past. When pclsidHandler is set to NULL it performs
>a registry lookup as the native version does it. If these registry
>entries are missing it has a problem and could perhaps return the
>mentioned error - don't know as I have never tested it.
>
>In the past these informations were part of the default registry of
>wine but with the addition of the self-registration of many libraries
>this has been removed. Don't ask me how to get the library to
>register itself - guess it has to do with regsrv32.exe, but I am not
>sure. I am already too long out of the substance.
>
>
Based on a certain verification in the source code, I made aviinfo to
work by adding the following to the registry:
[Software\\Classes\\CLSID\\{00020000-0000-0000-C000-000000000046}\\InProcServer32]
1110571609
@="avifil32.dll"
"LoadWithoutCOM"=dword:00000000
As far as I can see, the key "LoadWithoutCOM" only needs to exist; it
does not need to be set to any particular value. The aviplay program has
yet to work because the 128x128 AVI file I was using for the test in one
machine (apparently) mandates a 128x128 screen resolution which is (yet)
unsupported by my X configuration, and the ideal 640x480 test AVI is on
the other (currently inaccessible) machine:
trace:x11settings:X11DRV_Settings_AddOneMode initialized mode 128:
320x240x16 @60 Hz (XRandR)
trace:x11settings:X11DRV_Settings_AddOneMode initialized mode 129:
360x200x16 @85 Hz (XRandR)
trace:x11settings:X11DRV_Settings_AddOneMode initialized mode 130:
320x200x16 @85 Hz (XRandR)
trace:x11settings:X11DRV_Settings_AddOneMode initialized mode 131:
320x175x16 @85 Hz (XRandR)
trace:x11settings:X11DRV_Settings_CreateDriver Setting up display
settings for DDRAW (XRandR)
fixme:avifile:AVIFileInit (): stub!
[Stream 0: vids.cvid, cineapk.avi v�eo #0]
trace:x11settings:X11DRV_ChangeDisplaySettingsExW
((null),0x707bf768,(nil),0x00000004,(nil))
trace:x11settings:X11DRV_ChangeDisplaySettingsExW flags=FULLSCREEN
trace:x11settings:X11DRV_ChangeDisplaySettingsExW
DM_fields=BITSPERPEL,PELSWIDTH,PELSHEIGHT
trace:x11settings:X11DRV_ChangeDisplaySettingsExW width=128 height=128
bpp=24 freq=1887172668 (XRandR)
err:x11settings:X11DRV_ChangeDisplaySettingsExW No matching mode found!
(XRandR)
ddraw.SetDisplayMode: 0x88760078 (change resolution!)
But this raises the following questions:
* Why is not avifil32.dll adding this key on registration by regsvr32?
(I could submit a patch to do it, but see next questions)
* Is this the correct usage of avifil32.dll? The loading of this dll
occurs via SHCoCreateInstance in shell32/shellole.c, and the comment on
the usage of the LoadWithoutCOM key goes like this:
//* if a special registry key is set, we load a shell extension without help of OLE32 *//
bLoadWithoutCOM = (ERROR_SUCCESS == SHQueryValueExW(hKey, sLoadWithoutCOM, 0, 0, 0, 0));
Is this the correct (or even supported) usage for avifil32.dll? This
LoadWithoutCOM kludge does not appear anywhere else in my registry, and
it looks like it is intended for shell extensions only. What is the
meaning of "shell extension" here? Does avifil32.dll qualify? (I think
not, because avifil32 is concerned with AVI file handling, not with user
interface. However, I might be wrong.)
The last thing I want is to submit a patch, only to be rejected because
it attempts to use a DLL in a way not intended by its design. So, is
this approach correct (adding LoadWithoutCOM as part or regsvr32
initialization of avifil32.dll), or should an apartment actually be
initialized in full COM style? Do you know if LoadWithoutCOM is used
anywhere else in Wine?
Alex Villacís Lasso
More information about the wine-devel
mailing list