VirtualDub cannot find its codecs

Waldeck Schutzer schutzer at math.rutgers.edu
Sat Jan 18 23:40:30 CST 2003


Hello,

I'm not a computer geek but after some code chasing I found the reason 
why VirtualDub (and any other video compression engine, I suppose) could 
not find its video codecs. I am sending a patch that worked fine for me. 
I simply noticed the problem is in msvideo_main.c, function ICInfo, 
which is used to enumerate the installed codecs. The main loop in that 
function is going through the codecs listed in the System.ini file under 
drivers32 section. The problem is that the list returned by 
GetPrivateProfile show only the keys and not the expected key=value 
pairs. To fix that I simply removed the checking for an equal sign. 
Moreover, I noticed that it would stop enumerating at the first codec 
that failed to open. I found better to keep going down the list and just 
ignore the faulty codec, since I presume that is what Windows would do. 
Well there you are.

Enjoy,
Waldeck
-------------- next part --------------
Index: wine/dlls/msvideo/msvideo_main.c
===================================================================
RCS file: /home/wine/wine/dlls/msvideo/msvideo_main.c,v
retrieving revision 1.45
diff -r1.45 msvideo_main.c
81a82,83
>     // The "Case of the missing codecs"
>     // A fix proposed by Waldeck Schutzer <waldeck at dm.ufscar.br>
88c90,91
<             if (!strncasecmp((char*)&fccType, s, 4) && s[4] == '.' && s[9] == '=')
---
>             if (!strncasecmp((char*)&fccType, s, 4) && s[4] == '.' /* && s[9] == '=' */ )
>             // buf is a list of keys, not keys followed by their values!
97a101,103
> 			// Some bad codecs can make wine crash right here.
> 			// It would be nice to know why and to find ways
> 			// to preventing it from happening. I can't do it.
102c108,110
<                     return FALSE;
---
>                     // return FALSE;
> 		    // This one failed to open, but keep going down the list!
> 		    fccHandler++;


More information about the wine-patches mailing list