I recently downloaded Wine-20050628 (self contained install with fake
Windows drive) and tried to use the aviplay program in programs/avitools
directory. However, this program fails with this odd error trace:
[bash$] WINEDEBUG=shell,ole wine
~/temp/wine/wine-20050628-patch/programs/aviplay.exe.so blur24.avi
...
trace:shell:SIC_IconAppend L"c:\\windows\\system\\shell32.dll" 37 0x1126
0x112e
trace:shell:SHAlloc 20 bytes at 0x65f43068
trace:shell:SIC_IconAppend L"c:\\windows\\system\\shell32.dll" -38
0x1126 0x112e
trace:shell:SHAlloc 20 bytes at 0x65f430d0
trace:shell:SIC_Initialize hIconSmall=0x65f2f5e0 hIconBig=0x65f31190
fixme:avifile:AVIFileInit (): stub!
trace:shell:HCR_RegOpenClassIDKey
CLSID\{00020020-0000-0000-c000-000000000046}
trace:shell:HCR_GetClassNameA --
trace:shell:HCR_RegOpenClassIDKey
CLSID\{00020000-0000-0000-c000-000000000046}
trace:shell:HCR_GetClassNameA -- Microsoft AVI Files
trace:shell:SHCoCreateInstance ((nil),
{00020000-0000-0000-c000-000000000046} (Microsoft AVI
Files),unk:(nil),
{00020020-0000-0000-c000-000000000046} (unknown),0x65cbf8fc)
trace:shell:SHQueryValueExW
(hkey=0x64,(null),(nil),(nil),0x65cbf338,0x65cbf330=520)
trace:shell:SHQueryValueExW
(hkey=0x64,L"LoadWithoutCOM",(nil),(nil),(nil),(nil)=0)
trace:shell:PathFindFileNameW (L"avifil32.dll")
trace:shell:SHCoCreateInstance WithoutCom=0 FromShell=0
trace:shell:HCR_RegOpenClassIDKey
CLSID\{00020020-0000-0000-c000-000000000046}
trace:shell:HCR_GetClassNameA --
trace:shell:HCR_RegOpenClassIDKey
CLSID\{00020000-0000-0000-c000-000000000046}
trace:shell:HCR_GetClassNameA -- Microsoft AVI Files
err:shell:SHCoCreateInstance failed (0x800401f0) to create CLSID:
{00020000-0000-0000-c000-000000000046} (Microsoft AVI Files) IID:
{00020020-0000-0000-c000-000000000046} (unknown)
err:shell:SHCoCreateInstance class not found in registry
trace:shell:SHCoCreateInstance -- instance: (nil)
AVIFileOpen: 0x800401f0
I looked up in the include files, and the value of 0x800410f0 is
CO_E_NOTINITIALIZED. This is confirmed by a check in the source code
that indicates that the apartment was not initialized (please correct me
if I get the terminology wrong). The code for aviplay and aviinfo does
not attempt to initialize any apartment prior to calling AVIFileOpen
with /pclsidHandler/ set to NULL. I looked up in MSDN, and the
documentation for AVIFileOpen does not suggest (to me at least), that an
apartment should be initialized by the caller. This seems odd, since
this means that the program should never have worked in the first place,
yet the comments in the source suggest that it worked at least once.
Are these avitools maintained? If so, does this result from a
misconfiguration (the same one in two different machines so far), or
from a genuine incomplete implementation? I would like to hear any
comment on this. The original purpose of messing with aviplay was to
test whether the Indeo video codecs are actually usable after being
installed under Wine, but this problems affects even files not encoded
with Indeo.
Alex Villacís Lasso