#111 closed defect (worksforme)
VP6 decoder problem
Reported by: | Owned by: | ||
---|---|---|---|
Priority: | normal | Component: | core |
Version: | unspecified | Severity: | normal |
Keywords: | Cc: | ||
Blocked By: | Blocking: | ||
Reproduced by developer: | no | Analyzed by developer: | no |
Description
I have two computers (PII 266 and Celeron 900) and MPlayer could not decode VP6
on both of them. I use VP 6.2.0.10. Debug showed that Dll crashed at some
instructions at 0x1003f9f7 and 0x1003fa04. If I turn them to NOPs all works OK.
Here is the patch for this and for VP4 as well.
--- module.c.orig 2004-03-19 00:00:30.000000000 +0200
+++ module.c 2004-03-31 17:36:14.000000000 +0300
@@ -407,6 +407,21 @@ HMODULE WINAPI LoadLibraryExA(LPCSTR lib
}
}
+ if (strstr(libname,"vp6vfw.dll") && wm)
+ {
+ if (PE_FindExportedFunction(wm, "DriverProc", TRUE)==(void*)0x10004120) {
+ for (i=0;i<2;i++) ((char*)0x1003f9f7)[i]=0x90;
+ for (i=0;i<2;i++) ((char*)0x1003fa04)[i]=0x90;
+ for (i=0;i<6;i++) ((char*)0x10007688)[i]=0x90;
+ for (i=0;i<6;i++) ((char*)0x100082c3)[i]=0x90;
+ for (i=0;i<6;i++) ((char*)0x100084aa)[i]=0x90;
+ }
+ }
+ if (strstr(libname,"vp4vfw.dll") && wm)
+ {
+ for (i=0;i<2;i++) ((char*)0x10036147)[i]=0x90;
+ for (i=0;i<2;i++) ((char*)0x10036154)[i]=0x90;
+ }
if ( wm )
{
if ( !MODULE_DllProcessAttach( wm, NULL ) )
@@ -436,7 +451,7 @@ HMODULE WINAPI LoadLibraryExA(LPCSTR lib
}
}
- if (strstr(libname,"vp6vfw.dll") && wm)
+/* if (strstr(libname,"vp6vfw.dll") && wm)
{
int i;
if (PE_FindExportedFunction(wm, "DriverProc", TRUE)==(void*)0x10003ef0) {
Change History (2)
comment:1 by , 20 years ago
comment:2 by , 20 years ago
Resolution: | → worksforme |
---|---|
Status: | new → closed |
As I am unable to see which problem this patch should fix and I don't have any
problems with these two dlls, this is resolved WORKSFORME.
Feel free to provide more explanation and reopen.
Can you explain exactly what this parch is supposed to do?
VP6 6.2.0.10 is already supported (and patched) by current loader, and VP4 never
required any patching.
What's the purpose of the instructions removed by those lines for vp6
+ for (i=0;i<2;i++) ((char*)0x1003f9f7)[i]=0x90;
+ for (i=0;i<2;i++) ((char*)0x1003fa04)[i]=0x90;
and what's the purpose of the ones removed from vp4? it's not required on other
systems.