changeset 26441:586d7ee3c106

Add support for msn siren audio coced via binary dll sirenacm.dll Based on a patch by Ruuds "roadrunnerswife" "users sourceforge net" Closes bugzilla #963
author rtogni
date Sun, 20 Apr 2008 16:06:41 +0000
parents 9dc0b217fce4
children 83fdf3030da7
files etc/codecs.conf loader/win32.c
diffstat 2 files changed, 37 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/etc/codecs.conf	Sun Apr 20 00:36:45 2008 +0000
+++ b/etc/codecs.conf	Sun Apr 20 16:06:41 2008 +0000
@@ -3319,3 +3319,10 @@
   fourcc "MP3 "      ; used in .nsv files
   fourcc "LAME"      ; used in mythtv .nuv files
   driver hwmpa
+
+audiocodec msnsiren
+  info "msn siren audio codec"
+  status working
+  format 0x28E
+  driver acm
+  dll "sirenacm.dll"
--- a/loader/win32.c	Sun Apr 20 00:36:45 2008 +0000
+++ b/loader/win32.c	Sun Apr 20 16:06:41 2008 +0000
@@ -4046,6 +4046,16 @@
 }
 #endif
 
+/* Fake _initterm_e from msvcr80.dll, needed by sirenacm.dll
+ * NOTE: If I make this an alias for _initterm, then sirenacm.dll tries to call
+   other uninmplemented functions; keep this in mind if some future codec needs
+   a real implementation of this function */
+static int exp_initterm_e(INITTERMFUNC *start, INITTERMFUNC *end)
+{
+    dbgprintf("_initterm_e(0x%x, 0x%x)\n", start, end);
+    return 0;
+}
+
 static void* exp__dllonexit()
 {
     // FIXME extract from WINE
@@ -4819,6 +4829,14 @@
     return 1;
 }
 
+// Fake implementation of _decode_pointer from msvcr80.dll, needed by sirenacm.dll
+// NOTE: undocumented function, probably the declaration is not right
+static int exp_decode_pointer(void *ptr)
+{
+    dbgprintf("_decode_pointer (0x%08x)\n", ptr);
+    return 0;
+}
+
 struct exports
 {
     char name[64];
@@ -5247,6 +5265,17 @@
     FF(PathFindFileNameA, -1)
 };
 
+struct exports exp_msvcr80[]={
+    FF(_CIpow,-1)
+    FF(_CIsin,-1)
+    FF(_CIcos,-1)
+    FF(_CIsqrt,-1)
+    FF(memset,-1)
+    FF(_initterm_e, -1)
+    FF(_initterm, -1)
+    FF(_decode_pointer, -1)
+};
+
 #define LL(X) \
     {#X".dll", sizeof(exp_##X)/sizeof(struct exports), exp_##X},
 
@@ -5272,6 +5301,7 @@
 #endif
     LL(comdlg32)
     LL(shlwapi)
+    LL(msvcr80)
 };
 
 static WIN_BOOL WINAPI ext_stubs(void)