Support for vp5 and vp6 dll decoders

Patch by Reimar Doeffinger


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@12043 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
rtognimp 2004-03-18 22:00:31 +00:00
parent e8a1b37130
commit 1fac9f9861
2 changed files with 51 additions and 0 deletions

View File

@ -1147,6 +1147,24 @@ videocodec vp4
out YUY2
out BGR32,BGR24
videocodec vp5
info "On2 VP5 Personal Codec"
status working
fourcc VP50
driver vfwex
dll "vp5vfw.dll"
out YUY2
out BGR32,BGR24
videocodec vp6
info "On2 VP6 Personal Codec"
status working
fourcc VP60,VP61,VP62
driver vfwex
dll "vp6vfw.dll"
out YUY2
out BGR32,BGR24
videocodec mwv1
info "Motion Wavelets"
status working

View File

@ -422,6 +422,39 @@ HMODULE WINAPI LoadLibraryExA(LPCSTR libname, HANDLE hfile, DWORD flags)
if (!wm)
printf("Win32 LoadLibrary failed to load: %s\n", checked);
// remove a few divs in the VP codecs that make trouble
if (strstr(libname,"vp5vfw.dll") && wm)
{
int i;
if (PE_FindExportedFunction(wm, "DriverProc", TRUE)==(void*)0x10003930) {
for (i=0;i<3;i++) ((char*)0x10004e86)[i]=0x90;
for (i=0;i<3;i++) ((char*)0x10005a23)[i]=0x90;
for (i=0;i<3;i++) ((char*)0x10005bff)[i]=0x90;
} else {
fprintf(stderr, "Unsupported VP5 version\n");
return 0;
}
}
if (strstr(libname,"vp6vfw.dll") && wm)
{
int i;
if (PE_FindExportedFunction(wm, "DriverProc", TRUE)==(void*)0x10003ef0) {
// looks like VP 6.1.0.2
for (i=0;i<6;i++) ((char*)0x10007268)[i]=0x90;
for (i=0;i<6;i++) ((char*)0x10007e83)[i]=0x90;
for (i=0;i<6;i++) ((char*)0x1000806a)[i]=0x90;
} else if (PE_FindExportedFunction(wm, "DriverProc", TRUE)==(void*)0x10004120) {
// looks like VP 6.2.0.10
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;
} else {
fprintf(stderr, "Unsupported VP6 version\n");
return 0;
}
}
if (strstr(libname,"QuickTime.qts") && wm)
{
void** ptr;