From c7ff0c643adacf98337710a451762755d492c6f4 Mon Sep 17 00:00:00 2001 From: rtogni Date: Mon, 5 Jun 2006 18:41:01 +0000 Subject: [PATCH] Support WVC1 decoding via dmo binary codec wvc1dmod.dll git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@18581 b3059339-0415-0410-9bf9-f77b7e298cf2 --- etc/codecs.conf | 9 +++++++++ loader/win32.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/etc/codecs.conf b/etc/codecs.conf index 75e2462f55..7b78214ed6 100644 --- a/etc/codecs.conf +++ b/etc/codecs.conf @@ -777,6 +777,15 @@ videocodec wmvadmo out YUY2,UYVY ; out BGR32,BGR24,BGR16 ;,BGR15 +videocodec wmvvc1dmo + info "Windows Media Video (VC-1) Advanced Profile Decoder" + status working + fourcc WVC1 + driver dmo + dll "wvc1dmod.dll" + guid 0xc9bfbccf, 0xe60e, 0x4588, 0xa3, 0xdf, 0x5a, 0x03, 0xb1, 0xfd, 0x95, 0x85 + out YV12,YUY2 + videocodec wmsdmod info "Windows Media Screen Codec 2" status working diff --git a/loader/win32.c b/loader/win32.c index e756d1e4bc..2b11c2a158 100644 --- a/loader/win32.c +++ b/loader/win32.c @@ -3750,6 +3750,16 @@ static WIN_BOOL WINAPI expGetProcessAffinityMask(HANDLE hProcess, return 1; } +// Fake implementation: does nothing, but does it right :) +static WIN_BOOL WINAPI expSetProcessAffinityMask(HANDLE hProcess, + LPDWORD dwProcessAffinityMask) +{ + dbgprintf("SetProcessAffinityMask(0x%x, 0x%x) => 1\n", + hProcess, dwProcessAffinityMask); + + return 1; +}; + static int WINAPI expMulDiv(int nNumber, int nNumerator, int nDenominator) { static const long long max_int=0x7FFFFFFFLL; @@ -4778,6 +4788,14 @@ static double exp_CIsin(void) return sin(x); } +static double exp_CIsqrt(void) +{ + FPU_DOUBLE(x); + + dbgprintf("_CIsqrt(%lf)\n", x); + return sqrt(x); +} + /* Needed by rp8 sipr decoder */ static LPSTR WINAPI expCharNextA(LPCSTR ptr) { @@ -4786,6 +4804,13 @@ static LPSTR WINAPI expCharNextA(LPCSTR ptr) return (LPSTR)(ptr + 1); } +// Fake implementation, needed by wvc1dmod.dll +static int WINAPI expPropVariantClear(void *pvar) +{ +// dbgprintf("PropVariantclear (0x%08x), %s\n", ptr, ptr); + return 1; +} + struct exports { char name[64]; @@ -4957,6 +4982,7 @@ struct exports exp_kernel32[]= FF(ExitProcess,-1) {"LoadLibraryExA", -1, (void*)&LoadLibraryExA}, FF(SetThreadIdealProcessor,-1) + FF(SetProcessAffinityMask, -1) }; struct exports exp_msvcrt[]={ @@ -4999,6 +5025,7 @@ struct exports exp_msvcrt[]={ FF(_CIpow,-1) FF(_CIcos,-1) FF(_CIsin,-1) + FF(_CIsqrt,-1) FF(ldexp,-1) FF(frexp,-1) FF(sprintf,-1) @@ -5119,6 +5146,7 @@ struct exports exp_ole32[]={ FF(CoTaskMemAlloc, -1) FF(CoTaskMemFree, -1) FF(StringFromGUID2, -1) + FF(PropVariantClear, -1) }; // do we really need crtdll ??? // msvcrt is the correct place probably...