changeset 18580:d444160ee47c

Support WVC1 decoding via dmo binary codec wvc1dmod.dll
author rtogni
date Mon, 05 Jun 2006 18:41:01 +0000
parents fc3f25278021
children 7e3f1d22e43c
files etc/codecs.conf loader/win32.c
diffstat 2 files changed, 37 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/etc/codecs.conf	Mon Jun 05 11:45:33 2006 +0000
+++ b/etc/codecs.conf	Mon Jun 05 18:41:01 2006 +0000
@@ -777,6 +777,15 @@
   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
--- a/loader/win32.c	Mon Jun 05 11:45:33 2006 +0000
+++ b/loader/win32.c	Mon Jun 05 18:41:01 2006 +0000
@@ -3750,6 +3750,16 @@
     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 @@
     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 @@
     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 @@
     FF(ExitProcess,-1)
     {"LoadLibraryExA", -1, (void*)&LoadLibraryExA},
     FF(SetThreadIdealProcessor,-1)
+    FF(SetProcessAffinityMask, -1)
 };
 
 struct exports exp_msvcrt[]={
@@ -4999,6 +5025,7 @@
     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 @@
     FF(CoTaskMemAlloc, -1)
     FF(CoTaskMemFree, -1)
     FF(StringFromGUID2, -1)
+    FF(PropVariantClear, -1)
 };
 // do we really need crtdll ???
 // msvcrt is the correct place probably...