Mercurial > mplayer.hg
changeset 12042:ebea9d9163b0
Support for vp5 and vp6 dll decoders
Patch by Reimar Doeffinger
author | rtognimp |
---|---|
date | Thu, 18 Mar 2004 22:00:31 +0000 |
parents | c5aa951feff8 |
children | 8d45dcfc016f |
files | etc/codecs.conf loader/module.c |
diffstat | 2 files changed, 51 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/etc/codecs.conf Thu Mar 18 08:37:21 2004 +0000 +++ b/etc/codecs.conf Thu Mar 18 22:00:31 2004 +0000 @@ -1147,6 +1147,24 @@ 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
--- a/loader/module.c Thu Mar 18 08:37:21 2004 +0000 +++ b/loader/module.c Thu Mar 18 22:00:31 2004 +0000 @@ -422,6 +422,39 @@ 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;