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