diff --git a/include/msacm.h b/include/msacm.h
new file mode 100644
index 0000000..3563628
--- /dev/null
+++ b/include/msacm.h
@@ -0,0 +1,1003 @@
+/*
+ *      msacm.h   -       Declarations for MSACM
+ */
+
+#ifndef __WINE_MSACM_H
+#define __WINE_MSACM_H
+
+#include "wintypes.h"
+#include "driver.h"
+#include "mmsystem.h"
+#include "mmreg.h"
+
+/***********************************************************************
+ * Types
+ */
+
+/* FIXME: Move to wintypes.h */
+#define DECLARE_HANDLE(a) \
+typedef HANDLE16 a##16; \
+typedef HANDLE32 a##32; \
+typedef a##16 *P##a##16; \
+typedef a##16 *NP##a##16; \
+typedef a##16 *LP##a##16; \
+typedef a##32 *P##a##32;
+
+DECLARE_HANDLE(HACMDRIVERID);
+DECLARE_HANDLE(HACMDRIVER);
+DECLARE_HANDLE(HACMSTREAM);
+DECLARE_HANDLE(HACMOBJ);
+
+/* FIXME: Remove when define moved to wintypes.h */
+#undef DECLARE_HANDLE
+
+/***********************************************************************
+ * Defines/Enums
+ */
+
+#define ACMERR_BASE        512
+#define ACMERR_NOTPOSSIBLE (ACMERR_BASE + 0)
+#define ACMERR_BUSY        (ACMERR_BASE + 1)
+#define ACMERR_UNPREPARED  (ACMERR_BASE + 2)
+#define ACMERR_CANCELED    (ACMERR_BASE + 3)
+
+#define MM_ACM_OPEN  MM_STREAM_OPEN
+#define MM_ACM_CLOSE MM_STREAM_CLOSE
+#define MM_ACM_DONE  MM_STREAM_DONE
+
+#define ACM_DRIVERADDF_FUNCTION   0x00000003L
+#define ACM_DRIVERADDF_NOTIFYHWND 0x00000004L
+#define ACM_DRIVERADDF_TYPEMASK   0x00000007L
+#define ACM_DRIVERADDF_LOCAL      0x00000000L
+#define ACM_DRIVERADDF_GLOBAL     0x00000008L
+
+#define ACMDRIVERDETAILS_SHORTNAME_CHARS  32
+#define ACMDRIVERDETAILS_LONGNAME_CHARS  128
+#define ACMDRIVERDETAILS_COPYRIGHT_CHARS  80
+#define ACMDRIVERDETAILS_LICENSING_CHARS 128
+#define ACMDRIVERDETAILS_FEATURES_CHARS  512
+
+#define ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC mmioFOURCC('a', 'u', 'd', 'c')
+#define ACMDRIVERDETAILS_FCCCOMP_UNDEFINED  mmioFOURCC('\0', '\0', '\0', '\0')
+
+#define ACMDRIVERDETAILS_SUPPORTF_CODEC     0x00000001L
+#define ACMDRIVERDETAILS_SUPPORTF_CONVERTER 0x00000002L
+#define ACMDRIVERDETAILS_SUPPORTF_FILTER    0x00000004L
+#define ACMDRIVERDETAILS_SUPPORTF_HARDWARE  0x00000008L
+#define ACMDRIVERDETAILS_SUPPORTF_ASYNC     0x00000010L
+#define ACMDRIVERDETAILS_SUPPORTF_LOCAL     0x40000000L
+#define ACMDRIVERDETAILS_SUPPORTF_DISABLED  0x80000000L
+
+#define ACM_DRIVERENUMF_NOLOCAL  0x40000000L
+#define ACM_DRIVERENUMF_DISABLED 0x80000000L
+
+#define ACM_DRIVERPRIORITYF_ENABLE    0x00000001L
+#define ACM_DRIVERPRIORITYF_DISABLE   0x00000002L
+#define ACM_DRIVERPRIORITYF_ABLEMASK  0x00000003L
+#define ACM_DRIVERPRIORITYF_BEGIN     0x00010000L
+#define ACM_DRIVERPRIORITYF_END       0x00020000L
+#define ACM_DRIVERPRIORITYF_DEFERMASK 0x00030000L
+
+#define MM_ACM_FILTERCHOOSE 0x8000
+
+#define FILTERCHOOSE_MESSAGE          0
+#define FILTERCHOOSE_FILTERTAG_VERIFY (FILTERCHOOSE_MESSAGE+0)
+#define FILTERCHOOSE_FILTER_VERIFY    (FILTERCHOOSE_MESSAGE+1)
+#define FILTERCHOOSE_CUSTOM_VERIFY    (FILTERCHOOSE_MESSAGE+2)
+
+#define ACMFILTERCHOOSE_STYLEF_SHOWHELP             0x00000004L
+#define ACMFILTERCHOOSE_STYLEF_ENABLEHOOK           0x00000008L
+#define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATE       0x00000010L
+#define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATEHANDLE 0x00000020L
+#define ACMFILTERCHOOSE_STYLEF_INITTOFILTERSTRUCT   0x00000040L
+#define ACMFILTERCHOOSE_STYLEF_CONTEXTHELP          0x00000080L
+
+#define ACMFILTERDETAILS_FILTER_CHARS 128
+
+#define ACM_FILTERDETAILSF_INDEX     0x00000000L
+#define ACM_FILTERDETAILSF_FILTER    0x00000001L
+#define ACM_FILTERDETAILSF_QUERYMASK 0x0000000FL
+
+#define ACMFILTERTAGDETAILS_FILTERTAG_CHARS 48
+
+#define ACM_FILTERTAGDETAILSF_INDEX       0x00000000L
+#define ACM_FILTERTAGDETAILSF_FILTERTAG   0x00000001L
+#define ACM_FILTERTAGDETAILSF_LARGESTSIZE 0x00000002L
+#define ACM_FILTERTAGDETAILSF_QUERYMASK   0x0000000FL
+
+#define ACM_FILTERENUMF_DWFILTERTAG 0x00010000L
+
+#define ACMHELPMSGSTRING32A       "acmchoose_help"
+#define ACMHELPMSGSTRING32W       L"acmchoose_help"
+#define ACMHELPMSGSTRING16       "acmchoose_help"
+
+#define ACMHELPMSGCONTEXTMENU32A  "acmchoose_contextmenu"
+#define ACMHELPMSGCONTEXTMENU32W  L"acmchoose_contextmenu"
+#define ACMHELPMSGCONTEXTMENU16   "acmchoose_contextmenu"
+
+#define ACMHELPMSGCONTEXTHELP32A  "acmchoose_contexthelp"
+#define ACMHELPMSGCONTEXTHELP32W  L"acmchoose_contexthelp"
+#define ACMHELPMSGCONTEXTHELP16   "acmchoose_contexthelp"
+
+#define MM_ACM_FORMATCHOOSE 0x8000
+
+#define FORMATCHOOSE_MESSAGE          0
+#define FORMATCHOOSE_FORMATTAG_VERIFY (FORMATCHOOSE_MESSAGE+0)
+#define FORMATCHOOSE_FORMAT_VERIFY    (FORMATCHOOSE_MESSAGE+1)
+#define FORMATCHOOSE_CUSTOM_VERIFY    (FORMATCHOOSE_MESSAGE+2)
+
+#define ACMFORMATCHOOSE_STYLEF_SHOWHELP             0x00000004L
+#define ACMFORMATCHOOSE_STYLEF_ENABLEHOOK           0x00000008L
+#define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATE       0x00000010L
+#define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATEHANDLE 0x00000020L
+#define ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT      0x00000040L
+#define ACMFORMATCHOOSE_STYLEF_CONTEXTHELP          0x00000080L
+
+#define ACMFORMATDETAILS_FORMAT_CHARS   128
+
+#define ACM_FORMATDETAILSF_INDEX     0x00000000L
+#define ACM_FORMATDETAILSF_FORMAT    0x00000001L
+#define ACM_FORMATDETAILSF_QUERYMASK 0x0000000FL
+
+#define ACM_FORMATENUMF_WFORMATTAG     0x00010000L
+#define ACM_FORMATENUMF_NCHANNELS      0x00020000L
+#define ACM_FORMATENUMF_NSAMPLESPERSEC 0x00040000L
+#define ACM_FORMATENUMF_WBITSPERSAMPLE 0x00080000L
+#define ACM_FORMATENUMF_CONVERT        0x00100000L
+#define ACM_FORMATENUMF_SUGGEST        0x00200000L
+#define ACM_FORMATENUMF_HARDWARE       0x00400000L
+#define ACM_FORMATENUMF_INPUT          0x00800000L
+#define ACM_FORMATENUMF_OUTPUT         0x01000000L
+
+#define ACM_FORMATSUGGESTF_WFORMATTAG     0x00010000L
+#define ACM_FORMATSUGGESTF_NCHANNELS      0x00020000L
+#define ACM_FORMATSUGGESTF_NSAMPLESPERSEC 0x00040000L
+#define ACM_FORMATSUGGESTF_WBITSPERSAMPLE 0x00080000L
+#define ACM_FORMATSUGGESTF_TYPEMASK       0x00FF0000L
+
+#define ACMFORMATTAGDETAILS_FORMATTAG_CHARS 48
+
+#define ACM_FORMATTAGDETAILSF_INDEX       0x00000000L
+#define ACM_FORMATTAGDETAILSF_FORMATTAG   0x00000001L
+#define ACM_FORMATTAGDETAILSF_LARGESTSIZE 0x00000002L
+#define ACM_FORMATTAGDETAILSF_QUERYMASK   0x0000000FL
+
+#define ACM_METRIC_COUNT_DRIVERS            1
+#define ACM_METRIC_COUNT_CODECS             2
+#define ACM_METRIC_COUNT_CONVERTERS         3
+#define ACM_METRIC_COUNT_FILTERS            4
+#define ACM_METRIC_COUNT_DISABLED           5
+#define ACM_METRIC_COUNT_HARDWARE           6
+#define ACM_METRIC_COUNT_LOCAL_DRIVERS     20
+#define ACM_METRIC_COUNT_LOCAL_CODECS      21
+#define ACM_METRIC_COUNT_LOCAL_CONVERTERS  22
+#define ACM_METRIC_COUNT_LOCAL_FILTERS     23
+#define ACM_METRIC_COUNT_LOCAL_DISABLED    24
+#define ACM_METRIC_HARDWARE_WAVE_INPUT     30
+#define ACM_METRIC_HARDWARE_WAVE_OUTPUT    31
+#define ACM_METRIC_MAX_SIZE_FORMAT         50
+#define ACM_METRIC_MAX_SIZE_FILTER         51
+#define ACM_METRIC_DRIVER_SUPPORT         100
+#define ACM_METRIC_DRIVER_PRIORITY        101
+
+#define ACM_STREAMCONVERTF_BLOCKALIGN 0x00000004
+#define ACM_STREAMCONVERTF_START      0x00000010
+#define ACM_STREAMCONVERTF_END        0x00000020
+
+#define ACMSTREAMHEADER_STATUSF_DONE     0x00010000L
+#define ACMSTREAMHEADER_STATUSF_PREPARED 0x00020000L
+#define ACMSTREAMHEADER_STATUSF_INQUEUE  0x00100000L
+
+#define ACM_STREAMOPENF_QUERY       0x00000001
+#define ACM_STREAMOPENF_ASYNC       0x00000002
+#define ACM_STREAMOPENF_NONREALTIME 0x00000004
+
+#define ACM_STREAMSIZEF_SOURCE      0x00000000L
+#define ACM_STREAMSIZEF_DESTINATION 0x00000001L
+#define ACM_STREAMSIZEF_QUERYMASK   0x0000000FL
+
+#define ACMDM_USER                  (DRV_USER + 0x0000)
+#define ACMDM_RESERVED_LOW          (DRV_USER + 0x2000)
+#define ACMDM_RESERVED_HIGH         (DRV_USER + 0x2FFF)
+
+#define ACMDM_BASE                  ACMDM_RESERVED_LOW
+
+#define ACMDM_DRIVER_ABOUT          (ACMDM_BASE + 11)
+
+/***********************************************************************
+ * Callbacks
+ */
+
+typedef BOOL32 (CALLBACK *ACMDRIVERENUMCB32)(
+  HACMDRIVERID32 hadid, DWORD dwInstance, DWORD fdwSupport
+);
+
+typedef BOOL16 (CALLBACK *ACMDRIVERENUMCB16)(
+  HACMDRIVERID16 hadid, DWORD dwInstance, DWORD fdwSupport
+);
+
+typedef UINT32 (CALLBACK *ACMFILTERCHOOSEHOOKPROC32A)(
+  HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam
+);
+
+typedef UINT32 (CALLBACK *ACMFILTERCHOOSEHOOKPROC32W)(
+  HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam
+);
+
+typedef UINT32 (CALLBACK *ACMFILTERCHOOSEHOOKPROC16)(
+  HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam
+);
+
+typedef UINT32 (CALLBACK *ACMFORMATCHOOSEHOOKPROC32A)(
+  HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam
+);
+
+typedef UINT32 (CALLBACK *ACMFORMATCHOOSEHOOKPROC32W)(
+  HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam
+);
+
+typedef UINT16 (CALLBACK *ACMFORMATCHOOSEHOOKPROC16)(
+  HWND16 hwnd, UINT16 uMsg, WPARAM16 wParam, LPARAM lParam
+);
+
+/***********************************************************************
+ * Structures
+ */
+
+typedef struct _ACMDRIVERDETAILS32A
+{
+  DWORD    cbStruct;
+
+  FOURCC   fccType;
+  FOURCC   fccComp;
+
+  WORD     wMid;
+  WORD     wPid;
+
+  DWORD    vdwACM;
+  DWORD    vdwDriver;
+
+  DWORD    fdwSupport;
+  DWORD    cFormatTags;
+  DWORD    cFilterTags;
+
+  HICON32  hicon;
+
+  CHAR     szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
+  CHAR     szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
+  CHAR     szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
+  CHAR     szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
+  CHAR     szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
+} ACMDRIVERDETAILS32A, *PACMDRIVERDETAILS32A;
+
+typedef struct _ACMDRIVERDETAILS32W
+{
+  DWORD    cbStruct;
+
+  FOURCC   fccType;
+  FOURCC   fccComp;
+
+  WORD     wMid;
+  WORD     wPid;
+
+  DWORD    vdwACM;
+  DWORD    vdwDriver;
+
+  DWORD    fdwSupport;
+  DWORD    cFormatTags;
+  DWORD    cFilterTags;
+
+  HICON32  hicon;
+
+  WCHAR    szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
+  WCHAR    szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
+  WCHAR    szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
+  WCHAR    szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
+  WCHAR    szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
+} ACMDRIVERDETAILS32W, *PACMDRIVERDETAILS32W;
+
+typedef struct _ACMDRIVERDETAILS16
+{
+  DWORD   cbStruct;
+
+  FOURCC  fccType;
+  FOURCC  fccComp;
+
+  WORD    wMid;
+  WORD    wPid;
+
+  DWORD   vdwACM;
+  DWORD   vdwDriver;
+
+  DWORD   fdwSupport;
+  DWORD   cFormatTags;
+  DWORD   cFilterTags;
+
+  HICON16 hicon;
+
+  CHAR    szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
+  CHAR    szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
+  CHAR    szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
+  CHAR    szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
+  CHAR    szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
+} ACMDRIVERDETAILS16, *NPACMDRIVERDETAILS16, *LPACMDRIVERDETAILS16;
+
+typedef struct _ACMFILTERCHOOSE32A
+{
+  DWORD         cbStruct;
+  DWORD         fdwStyle;
+
+  HWND32        hwndOwner;
+
+  PWAVEFILTER32 pwfltr;
+  DWORD         cbwfltr;
+
+  LPCSTR        pszTitle;
+
+  CHAR          szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
+  CHAR          szFilter[ACMFILTERDETAILS_FILTER_CHARS];
+  LPSTR         pszName;
+  DWORD         cchName;
+
+  DWORD         fdwEnum;
+  PWAVEFILTER32 pwfltrEnum;
+    
+  HINSTANCE32   hInstance;
+  LPCSTR        pszTemplateName;
+  LPARAM        lCustData;
+  ACMFILTERCHOOSEHOOKPROC32A pfnHook;
+} ACMFILTERCHOOSE32A, *PACMFILTERCHOOSE32A;
+
+typedef struct _ACMFILTERCHOOSE32W
+{
+  DWORD         cbStruct;
+  DWORD         fdwStyle;
+
+  HWND32        hwndOwner;
+
+  PWAVEFILTER32 pwfltr;
+  DWORD         cbwfltr;
+
+  LPCWSTR       pszTitle;
+
+  WCHAR         szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
+  WCHAR         szFilter[ACMFILTERDETAILS_FILTER_CHARS];
+  LPWSTR        pszName;
+  DWORD         cchName;
+
+  DWORD         fdwEnum;
+  PWAVEFILTER32 pwfltrEnum;
+    
+  HINSTANCE32   hInstance;
+  LPCWSTR       pszTemplateName;
+  LPARAM        lCustData;
+  ACMFILTERCHOOSEHOOKPROC32W pfnHook;
+} ACMFILTERCHOOSE32W, *PACMFILTERCHOOSE32W;
+
+typedef struct _ACMFILTERCHOOSE16
+{
+  DWORD          cbStruct;
+  DWORD          fdwStyle;
+
+  HWND16         hwndOwner;
+
+  LPWAVEFILTER16 pwfltr;
+  DWORD          cbwfltr;
+
+  LPCSTR         pszTitle;
+
+  char           szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
+  char           szFilter[ACMFILTERDETAILS_FILTER_CHARS];
+  LPSTR          pszName;
+  DWORD          cchName;
+
+  DWORD          fdwEnum;
+  LPWAVEFILTER16 pwfltrEnum;
+    
+  HINSTANCE16    hInstance;
+  LPCSTR         pszTemplateName;
+  LPARAM         lCustData;
+  ACMFILTERCHOOSEHOOKPROC16 pfnHook;
+} ACMFILTERCHOOSE16, *NPACMFILTERCHOOSE16, *LPACMFILTERCHOOSE16;
+
+typedef struct _ACMFILTERDETAILS32A
+{
+  DWORD           cbStruct;
+  DWORD           dwFilterIndex;
+  DWORD           dwFilterTag;
+  DWORD           fdwSupport;
+  PWAVEFILTER32   pwfltr;
+  DWORD           cbwfltr;
+  CHAR            szFilter[ACMFILTERDETAILS_FILTER_CHARS];
+} ACMFILTERDETAILS32A, *PACMFILTERDETAILS32A;
+
+typedef struct _ACMFILTERDETAILS32W
+{
+  DWORD          cbStruct;
+  DWORD          dwFilterIndex;
+  DWORD          dwFilterTag;
+  DWORD          fdwSupport;
+  PWAVEFILTER32  pwfltr;
+  DWORD          cbwfltr;
+  WCHAR          szFilter[ACMFILTERDETAILS_FILTER_CHARS];
+} ACMFILTERDETAILS32W, *PACMFILTERDETAILS32W;
+
+typedef struct _ACMFILTERDETAILS16
+{
+  DWORD          cbStruct;
+  DWORD          dwFilterIndex;
+  DWORD          dwFilterTag;
+  DWORD          fdwSupport;
+  LPWAVEFILTER16 pwfltr;
+  DWORD          cbwfltr;
+  CHAR           szFilter[ACMFILTERDETAILS_FILTER_CHARS];
+} ACMFILTERDETAILS16, *NPACMFILTERDETAILS16, *LPACMFILTERDETAILS16;
+
+typedef struct _ACMFILTERTAGDETAILS32A
+{
+  DWORD cbStruct;
+  DWORD dwFilterTagIndex;
+  DWORD dwFilterTag;
+  DWORD cbFilterSize;
+  DWORD fdwSupport;
+  DWORD cStandardFilters;
+  CHAR  szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
+} ACMFILTERTAGDETAILS32A, *PACMFILTERTAGDETAILS32A;
+
+typedef struct _ACMFILTERTAGDETAILS32W
+{
+  DWORD cbStruct;
+  DWORD dwFilterTagIndex;
+  DWORD dwFilterTag;
+  DWORD cbFilterSize;
+  DWORD fdwSupport;
+  DWORD cStandardFilters;
+  WCHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
+} ACMFILTERTAGDETAILS32W, *PACMFILTERTAGDETAILS32W;
+
+typedef struct _ACMFILTERTAGDETAILS16
+{
+  DWORD cbStruct;
+  DWORD dwFilterTagIndex;
+  DWORD dwFilterTag;
+  DWORD cbFilterSize;
+  DWORD fdwSupport;
+  DWORD cStandardFilters;
+  CHAR  szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
+} ACMFILTERTAGDETAILS16, *NPACMFILTERTAGDETAILS16, *LPACMFILTERTAGDETAILS16;
+
+typedef struct _ACMFORMATCHOOSE32A
+{
+  DWORD           cbStruct;
+  DWORD           fdwStyle;
+ 
+  HWND32          hwndOwner;
+
+  PWAVEFORMATEX32 pwfx;
+  DWORD           cbwfx;
+  LPCSTR          pszTitle;
+    
+  CHAR            szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
+  CHAR            szFormat[ACMFORMATDETAILS_FORMAT_CHARS];    
+
+  LPSTR           pszName;
+  DWORD           cchName;
+
+  DWORD           fdwEnum;
+  PWAVEFORMATEX32 pwfxEnum;
+    
+  HINSTANCE32     hInstance;
+  LPCSTR          pszTemplateName;
+  LPARAM          lCustData;
+  ACMFORMATCHOOSEHOOKPROC32A pfnHook;
+} ACMFORMATCHOOSE32A, *PACMFORMATCHOOSE32A;
+
+typedef struct _ACMFORMATCHOOSE32W
+{
+  DWORD           cbStruct;
+  DWORD           fdwStyle;
+    
+  HWND32          hwndOwner;
+
+  PWAVEFORMATEX32 pwfx;
+  DWORD           cbwfx;
+  LPCWSTR         pszTitle;
+    
+  WCHAR           szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
+  WCHAR           szFormat[ACMFORMATDETAILS_FORMAT_CHARS];    
+
+  LPWSTR          pszName;
+  DWORD           cchName;
+
+  DWORD           fdwEnum;
+  LPWAVEFORMATEX  pwfxEnum;
+    
+  HINSTANCE32     hInstance;
+  LPCWSTR         pszTemplateName;
+  LPARAM          lCustData;
+  ACMFORMATCHOOSEHOOKPROC32W pfnHook;
+} ACMFORMATCHOOSE32W, *PACMFORMATCHOOSE32W;
+
+typedef struct _ACMFORMATCHOOSE16
+{
+  DWORD            cbStruct;
+  DWORD            fdwStyle;
+    
+  HWND16           hwndOwner;
+
+  LPWAVEFORMATEX16 pwfx;
+  DWORD            cbwfx;
+  LPCSTR           pszTitle;
+    
+  CHAR             szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
+  CHAR             szFormat[ACMFORMATDETAILS_FORMAT_CHARS];    
+
+  LPSTR            pszName;
+  DWORD            cchName;
+
+  DWORD            fdwEnum;
+  LPWAVEFORMATEX16 pwfxEnum;
+    
+  HINSTANCE16      hInstance;
+  LPCSTR           pszTemplateName;
+  LPARAM           lCustData;
+  ACMFORMATCHOOSEHOOKPROC16 pfnHook;
+} ACMFORMATCHOOSE16, *NPACMFORMATCHOOSE16, *LPACMFORMATCHOOSE16;
+
+typedef struct _ACMFORMATDETAILS32A
+{
+  DWORD           cbStruct;
+  DWORD           dwFormatIndex;
+  DWORD           dwFormatTag;
+  DWORD           fdwSupport;
+  PWAVEFORMATEX32 pwfx;
+  DWORD           cbwfx;
+  CHAR            szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
+} ACMFORMATDETAILS32A, *PACMFORMATDETAILS32A;
+
+typedef struct _ACMFORMATDETAILS32W
+{
+    DWORD           cbStruct;
+    DWORD           dwFormatIndex;
+    DWORD           dwFormatTag;
+    DWORD           fdwSupport;
+    PWAVEFORMATEX32 pwfx;
+    DWORD           cbwfx;
+    WCHAR           szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
+} ACMFORMATDETAILS32W, *PACMFORMATDETAILS32W;
+
+typedef struct _ACMFORMATDETAILS16
+{
+    DWORD            cbStruct;
+    DWORD            dwFormatIndex;
+    DWORD            dwFormatTag;
+    DWORD            fdwSupport;
+    LPWAVEFORMATEX16 pwfx;
+    DWORD            cbwfx;
+    CHAR             szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
+} ACMFORMATDETAILS16, *NPACMFORMATDETAILS16, *LPACMFORMATDETAILS16;
+
+typedef struct _ACMFORMATTAGDETAILS32A
+{
+  DWORD cbStruct;
+  DWORD dwFormatTagIndex;
+  DWORD dwFormatTag;
+  DWORD cbFormatSize;
+  DWORD fdwSupport;
+  DWORD cStandardFormats;
+  CHAR  szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
+} ACMFORMATTAGDETAILS32A, *PACMFORMATTAGDETAILS32A;
+
+typedef struct _ACMFORMATTAGDETAILS32W
+{
+  DWORD cbStruct;
+  DWORD dwFormatTagIndex;
+  DWORD dwFormatTag;
+  DWORD cbFormatSize;
+  DWORD fdwSupport;
+  DWORD cStandardFormats;
+  WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
+} ACMFORMATTAGDETAILS32W, *PACMFORMATTAGDETAILS32W;
+
+typedef struct _ACMFORMATTAGDETAILS16
+{
+  DWORD cbStruct;
+  DWORD dwFormatTagIndex;
+  DWORD dwFormatTag;
+  DWORD cbFormatSize;
+  DWORD fdwSupport;
+  DWORD cStandardFormats;
+  CHAR  szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
+} ACMFORMATTAGDETAILS16, *NPACMFORMATTAGDETAILS16, *LPACMFORMATTAGDETAILS16;
+
+typedef struct _ACMSTREAMHEADER
+{
+  DWORD  cbStruct;
+  DWORD  fdwStatus;
+  DWORD  dwUser;
+  LPBYTE pbSrc;
+  DWORD  cbSrcLength;
+  DWORD  cbSrcLengthUsed;
+  DWORD  dwSrcUser;
+  LPBYTE pbDst;
+  DWORD  cbDstLength;
+  DWORD  cbDstLengthUsed;
+  DWORD  dwDstUser;
+  DWORD  dwReservedDriver[10];
+} ACMSTREAMHEADER16, *NPACMSTREAMHEADER16, *LPACMSTREAMHEADER16,
+  ACMSTREAMHEADER32, *PACMSTREAMHEADER32;
+
+/***********************************************************************
+ * Callbacks 2
+ */
+
+typedef BOOL32 (CALLBACK *ACMFILTERENUMCB32A)(
+  HACMDRIVERID32 hadid, PACMFILTERDETAILS32A pafd,
+  DWORD dwInstance, DWORD fdwSupport
+);
+
+typedef BOOL32 (CALLBACK *ACMFILTERENUMCB32W)(
+  HACMDRIVERID32 hadid, PACMFILTERDETAILS32W pafd,
+  DWORD dwInstance, DWORD fdwSupport
+);
+
+typedef BOOL16 (CALLBACK *ACMFILTERENUMCB16)(
+ HACMDRIVERID16 hadid, LPACMFILTERDETAILS16 pafd,
+ DWORD dwInstance, DWORD fdwSupport
+);
+
+typedef BOOL32 (CALLBACK *ACMFILTERTAGENUMCB32A)(
+  HACMDRIVERID32 hadid, PACMFILTERTAGDETAILS32A paftd,
+  DWORD dwInstance, DWORD fdwSupport
+);
+
+typedef BOOL32 (CALLBACK *ACMFILTERTAGENUMCB32W)(
+  HACMDRIVERID32 hadid, PACMFILTERTAGDETAILS32W paftd,
+  DWORD dwInstance, DWORD fdwSupport
+);
+
+typedef BOOL16 (CALLBACK *ACMFILTERTAGENUMCB16)(
+  HACMDRIVERID16 hadid, LPACMFILTERTAGDETAILS16 paftd,
+  DWORD dwInstance, DWORD fdwSupport
+);
+
+typedef BOOL32 (CALLBACK *ACMFORMATENUMCB32A)(
+  HACMDRIVERID32 hadid, PACMFORMATDETAILS32A pafd,
+  DWORD dwInstance, DWORD fdwSupport
+);
+
+typedef BOOL32 (CALLBACK *ACMFORMATENUMCB32W)(
+  HACMDRIVERID32 hadid, PACMFORMATDETAILS32W pafd,
+  DWORD dwInstance, DWORD fdwSupport
+);
+
+typedef BOOL16 (CALLBACK *ACMFORMATENUMCB16)(
+  HACMDRIVERID16 hadid, LPACMFORMATDETAILS16 pafd,
+  DWORD dwInstance, DWORD fdwSupport
+);
+
+typedef BOOL32 (CALLBACK *ACMFORMATTAGENUMCB32A)(
+  HACMDRIVERID32 hadid, PACMFORMATTAGDETAILS32A paftd,
+  DWORD dwInstance, DWORD fdwSupport
+);
+
+typedef BOOL32 (CALLBACK *ACMFORMATTAGENUMCB32W)(
+  HACMDRIVERID32 hadid, PACMFORMATTAGDETAILS32W paftd,
+  DWORD dwInstance, DWORD fdwSupport
+);
+
+typedef BOOL16 (CALLBACK *ACMFORMATTAGENUMCB16)(
+  HACMDRIVERID16 hadid, LPACMFORMATTAGDETAILS16 paftd,
+  DWORD dwInstance, DWORD fdwSupport
+);
+
+/***********************************************************************
+ * Functions - Win16
+ */
+
+DWORD WINAPI acmGetVersion16(
+);
+MMRESULT16 WINAPI acmMetrics16(
+  HACMOBJ16 hao, UINT16 uMetric, LPVOID pMetric
+);
+MMRESULT16 WINAPI acmDriverEnum16(
+  ACMDRIVERENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
+);
+MMRESULT16 WINAPI acmDriverDetails16(
+  HACMDRIVERID16 hadid, LPACMDRIVERDETAILS16 padd, DWORD fdwDetails
+);
+MMRESULT16 WINAPI acmDriverAdd16(
+  LPHACMDRIVERID16 phadid, HINSTANCE16 hinstModule,
+  LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
+);
+MMRESULT16 WINAPI acmDriverRemove16(
+  HACMDRIVERID16 hadid, DWORD fdwRemove
+);
+MMRESULT16 WINAPI acmDriverOpen16(
+  LPHACMDRIVER16 phad, HACMDRIVERID16 hadid, DWORD fdwOpen
+);
+MMRESULT16 WINAPI acmDriverClose16(
+  HACMDRIVER16 had, DWORD fdwClose
+);
+LRESULT WINAPI acmDriverMessage16(
+  HACMDRIVER16 had, UINT16 uMsg, LPARAM lParam1, LPARAM lParam2
+);
+MMRESULT16 WINAPI acmDriverID16(
+  HACMOBJ16 hao, LPHACMDRIVERID16 phadid, DWORD fdwDriverID
+);
+MMRESULT16 WINAPI acmDriverPriority16(
+ HACMDRIVERID16 hadid, DWORD dwPriority, DWORD fdwPriority
+);
+MMRESULT16 WINAPI acmFormatTagDetails16(
+  HACMDRIVER16 had, LPACMFORMATTAGDETAILS16 paftd, DWORD fdwDetails
+);
+MMRESULT16 WINAPI acmFormatTagEnum16(
+  HACMDRIVER16 had, LPACMFORMATTAGDETAILS16 paftd,
+  ACMFORMATTAGENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
+);
+MMRESULT16 WINAPI acmFormatChoose16(
+  LPACMFORMATCHOOSE16 pafmtc
+);
+MMRESULT16 WINAPI acmFormatDetails16(
+  HACMDRIVER16 had, LPACMFORMATDETAILS16 pafd, DWORD fdwDetails
+);
+MMRESULT16 WINAPI acmFormatEnum16(
+  HACMDRIVER16 had, LPACMFORMATDETAILS16 pafd,
+  ACMFORMATENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
+);
+MMRESULT16 WINAPI acmFormatSuggest16(
+  HACMDRIVER16 had, LPWAVEFORMATEX16 pwfxSrc, 
+  LPWAVEFORMATEX16 pwfxDst, DWORD cbwfxDst, DWORD fdwSuggest
+);
+MMRESULT16 WINAPI acmFilterTagDetails16(
+  HACMDRIVER16 had, LPACMFILTERTAGDETAILS16 paftd, DWORD fdwDetails
+);
+MMRESULT16 WINAPI acmFilterTagEnum16(
+  HACMDRIVER16 had, LPACMFILTERTAGDETAILS16 paftd,
+  ACMFILTERTAGENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
+);
+MMRESULT16 WINAPI acmFilterChoose16(
+  LPACMFILTERCHOOSE16 pafltrc
+);
+MMRESULT16 WINAPI acmFilterDetails16(
+  HACMDRIVER16 had, LPACMFILTERDETAILS16 pafd, DWORD fdwDetails
+);
+MMRESULT16 WINAPI acmFilterEnum16(
+  HACMDRIVER16 had, LPACMFILTERDETAILS16 pafd,
+  ACMFILTERENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
+);
+MMRESULT16 WINAPI acmStreamOpen16(
+  LPHACMSTREAM16 phas, HACMDRIVER16 had,
+  LPWAVEFORMATEX16 pwfxSrc, LPWAVEFORMATEX16 pwfxDst,
+  LPWAVEFILTER16 pwfltr, DWORD dwCallback,
+  DWORD dwInstance, DWORD fdwOpen
+);
+MMRESULT16 WINAPI acmStreamClose16(
+  HACMSTREAM16 has, DWORD fdwClose
+);
+MMRESULT16 WINAPI acmStreamSize16(
+  HACMSTREAM16 has, DWORD cbInput, 
+  LPDWORD pdwOutputBytes, DWORD fdwSize
+);
+MMRESULT16 WINAPI acmStreamConvert16(
+  HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwConvert
+);
+MMRESULT16 WINAPI acmStreamReset16(
+  HACMSTREAM16 has, DWORD fdwReset
+);
+MMRESULT16 WINAPI acmStreamPrepareHeader16(
+  HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwPrepare
+);
+MMRESULT16 WINAPI acmStreamUnprepareHeader16(
+  HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwUnprepare
+);
+
+/***********************************************************************
+ * Functions - Win32
+ */
+
+MMRESULT32 WINAPI acmDriverAdd32A(
+  PHACMDRIVERID32 phadid, HINSTANCE32 hinstModule,
+  LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
+);
+MMRESULT32 WINAPI acmDriverAdd32W(
+  PHACMDRIVERID32 phadid, HINSTANCE32 hinstModule,
+  LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
+);
+MMRESULT32 WINAPI acmDriverClose32(
+  HACMDRIVER32 had, DWORD fdwClose
+);
+MMRESULT32 WINAPI acmDriverDetails32A(
+  HACMDRIVERID32 hadid, PACMDRIVERDETAILS32A padd, DWORD fdwDetails
+);
+MMRESULT32 WINAPI acmDriverDetails32W(
+  HACMDRIVERID32 hadid, PACMDRIVERDETAILS32W padd, DWORD fdwDetails
+);
+MMRESULT32 WINAPI acmDriverEnum32(
+  ACMDRIVERENUMCB32 fnCallback, DWORD dwInstance, DWORD fdwEnum
+);
+MMRESULT32 WINAPI acmDriverID32(
+  HACMOBJ32 hao, PHACMDRIVERID32 phadid, DWORD fdwDriverID
+);
+LRESULT WINAPI acmDriverMessage32(
+  HACMDRIVER32 had, UINT32 uMsg, LPARAM lParam1, LPARAM lParam2
+);
+MMRESULT32 WINAPI acmDriverOpen32(
+  PHACMDRIVER32 phad, HACMDRIVERID32 hadid, DWORD fdwOpen
+);
+MMRESULT32 WINAPI acmDriverPriority32(
+  HACMDRIVERID32 hadid, DWORD dwPriority, DWORD fdwPriority
+);
+MMRESULT32 WINAPI acmDriverRemove32(
+  HACMDRIVERID32 hadid, DWORD fdwRemove
+);
+MMRESULT32 WINAPI acmFilterChoose32A(
+  PACMFILTERCHOOSE32A pafltrc
+);
+MMRESULT32 WINAPI acmFilterChoose32W(
+  PACMFILTERCHOOSE32W pafltrc
+);
+MMRESULT32 WINAPI acmFilterDetails32A(
+  HACMDRIVER32 had, PACMFILTERDETAILS32A pafd, DWORD fdwDetails
+);
+MMRESULT32 WINAPI acmFilterDetails32W(
+  HACMDRIVER32 had, PACMFILTERDETAILS32W pafd, DWORD fdwDetails
+);
+MMRESULT32 WINAPI acmFilterEnum32A(
+  HACMDRIVER32 had, PACMFILTERDETAILS32A pafd, 
+  ACMFILTERENUMCB32A fnCallback, DWORD dwInstance, DWORD fdwEnum
+);
+MMRESULT32 WINAPI acmFilterEnum32W(
+  HACMDRIVER32 had, PACMFILTERDETAILS32W pafd, 
+  ACMFILTERENUMCB32W fnCallback, DWORD dwInstance, DWORD fdwEnum
+);
+MMRESULT32 WINAPI acmFilterTagDetails32A(
+  HACMDRIVER32 had, PACMFILTERTAGDETAILS32A paftd, DWORD fdwDetails
+);
+MMRESULT32 WINAPI acmFilterTagDetails32W(
+  HACMDRIVER32 had, PACMFILTERTAGDETAILS32W paftd, DWORD fdwDetails
+);
+MMRESULT32 WINAPI acmFilterTagEnum32A(
+  HACMDRIVER32 had, PACMFILTERTAGDETAILS32A paftd,
+  ACMFILTERTAGENUMCB32A fnCallback, DWORD dwInstance, DWORD fdwEnum
+);
+MMRESULT32 WINAPI acmFilterTagEnum32W(
+  HACMDRIVER32 had, PACMFILTERTAGDETAILS32W paftd,
+  ACMFILTERTAGENUMCB32W fnCallback, DWORD dwInstance, DWORD fdwEnum
+);
+MMRESULT32 WINAPI acmFormatChoose32A(
+  PACMFORMATCHOOSE32A pafmtc
+);
+MMRESULT32 WINAPI acmFormatChoose32W(
+  PACMFORMATCHOOSE32W pafmtc
+);
+MMRESULT32 WINAPI acmFormatDetails32A(
+  HACMDRIVER32 had, PACMFORMATDETAILS32A pafd, DWORD fdwDetails
+);
+MMRESULT32 WINAPI acmFormatDetails32W(
+  HACMDRIVER32 had, PACMFORMATDETAILS32W pafd, DWORD fdwDetails
+);
+MMRESULT32 WINAPI acmFormatEnum32A(
+  HACMDRIVER32 had, PACMFORMATDETAILS32A pafd,
+  ACMFORMATENUMCB32A fnCallback, DWORD dwInstance, DWORD fdwEnum
+);
+MMRESULT32 WINAPI acmFormatEnum32W(
+  HACMDRIVER32 had, PACMFORMATDETAILS32W pafd,
+  ACMFORMATENUMCB32W fnCallback, DWORD dwInstance,  DWORD fdwEnum
+);
+MMRESULT32 WINAPI acmFormatSuggest32(
+  HACMDRIVER32 had, PWAVEFORMATEX32 pwfxSrc, PWAVEFORMATEX32 pwfxDst,
+  DWORD cbwfxDst, DWORD fdwSuggest
+);
+MMRESULT32 WINAPI acmFormatTagDetails32A(
+  HACMDRIVER32 had, PACMFORMATTAGDETAILS32A paftd, DWORD fdwDetails
+);
+MMRESULT32 WINAPI acmFormatTagDetails32W(
+  HACMDRIVER32 had, PACMFORMATTAGDETAILS32W paftd, DWORD fdwDetails
+);
+MMRESULT32 WINAPI acmFormatTagEnum32A(
+  HACMDRIVER32 had, PACMFORMATTAGDETAILS32A paftd,
+  ACMFORMATTAGENUMCB32A fnCallback, DWORD dwInstance, DWORD fdwEnum
+);
+MMRESULT32 WINAPI acmFormatTagEnum32W(
+  HACMDRIVER32 had, PACMFORMATTAGDETAILS32W paftd,
+  ACMFORMATTAGENUMCB32W fnCallback, DWORD dwInstance, DWORD fdwEnum
+);
+DWORD WINAPI acmGetVersion32(
+);
+MMRESULT32 WINAPI acmMetrics32(
+  HACMOBJ32 hao, UINT32  uMetric, LPVOID  pMetric
+);
+MMRESULT32 WINAPI acmStreamClose32(
+  HACMSTREAM32 has, DWORD fdwClose
+);
+MMRESULT32 WINAPI acmStreamConvert32(
+  HACMSTREAM32 has, PACMSTREAMHEADER32 pash, DWORD fdwConvert
+);
+MMRESULT32 WINAPI acmStreamMessage32(
+  HACMSTREAM32 has, UINT32 uMsg, LPARAM lParam1, LPARAM lParam2
+);
+MMRESULT32 WINAPI acmStreamOpen32(
+  PHACMSTREAM32 phas, HACMDRIVER32 had, PWAVEFORMATEX32 pwfxSrc,
+  PWAVEFORMATEX32 pwfxDst, PWAVEFILTER32 pwfltr, DWORD dwCallback,
+  DWORD dwInstance, DWORD fdwOpen
+);
+MMRESULT32 WINAPI acmStreamPrepareHeader32(
+  HACMSTREAM32 has, PACMSTREAMHEADER32 pash, DWORD fdwPrepare
+);
+MMRESULT32 WINAPI acmStreamReset32(
+  HACMSTREAM32 has, DWORD fdwReset
+);
+MMRESULT32 WINAPI acmStreamSize32(
+  HACMSTREAM32 has, DWORD cbInput, 
+  LPDWORD pdwOutputBytes, DWORD fdwSize
+);
+MMRESULT32 WINAPI acmStreamUnprepareHeader32(
+  HACMSTREAM32 has, PACMSTREAMHEADER32 pash, DWORD fdwUnprepare
+);
+
+/***********************************************************************
+ * Wine specific - Win32
+ */
+typedef struct _WINE_ACMBUILTINDRIVER32
+{
+  LPSTR        pszDriverAlias;
+  DRIVERPROC32 pfnDriverProc;
+} WINE_ACMBUILTINDRIVER32, *PWINE_ACMBUILTINDRIVER32;
+
+typedef struct _WINE_ACMLOCALDRIVER32
+{
+  DRIVERPROC32 pfnDriverProc;
+} WINE_ACMLOCALDRIVER32, *PWINE_ACMLOCALDRIVER32;
+
+typedef struct _WINE_ACMDRIVERID32 *PWINE_ACMDRIVERID32;
+
+typedef struct _WINE_ACMOBJ32
+{
+  PWINE_ACMDRIVERID32 pACMDriverID;
+} WINE_ACMOBJ32, *PWINE_ACMOBJ32;
+
+typedef struct _WINE_ACMDRIVER32
+{
+  WINE_ACMOBJ32  obj;
+  HDRVR32        hDrvr;
+} WINE_ACMDRIVER32, *PWINE_ACMDRIVER32;
+
+typedef struct _WINE_ACMSTREAM32
+{
+  WINE_ACMOBJ32  obj;
+  /* FIME: More fields needed */
+} WINE_ACMSTREAM32, *PWINE_ACMSTREAM32;
+
+typedef struct _WINE_ACMDRIVERID32
+{
+  LPSTR                    pszDriverAlias;
+  LPSTR                    pszFileName;
+  PWINE_ACMLOCALDRIVER32   pACMLocalDriver;
+  BOOL32                   bEnabled;
+  PWINE_ACMDRIVER32        pACMDriver;           /* NULL if not open */
+  PWINE_ACMDRIVERID32      pNextACMDriverID;
+  PWINE_ACMDRIVERID32      pPreviousACMDriverID;
+} WINE_ACMDRIVERID32;
+
+/* From builtin.c */
+extern WINE_ACMBUILTINDRIVER32 MSACM_BuiltinDrivers32[];
+
+/* From interal.c */
+extern HANDLE32 MSACM_hHeap32;
+extern PWINE_ACMDRIVERID32 MSACM_pFirstACMDriverID32;
+extern PWINE_ACMDRIVERID32 MSACM_pLastACMDriverID32;
+PWINE_ACMDRIVERID32 MSACM_RegisterDriver32(
+  LPSTR pszDriverAlias, LPSTR pszFileName,
+  PWINE_ACMLOCALDRIVER32 pLocalDriver);
+void MSACM_RegisterAllDrivers32();
+PWINE_ACMDRIVERID32 MSACM_UnregisterDriver32(PWINE_ACMDRIVERID32 p);
+void MSACM_UnregisterAllDrivers32();
+PWINE_ACMDRIVERID32 MSACM_GetDriverID32(HACMDRIVERID32 hDriverID);
+PWINE_ACMDRIVER32 MSACM_GetDriver32(HACMDRIVER32 hDriver);
+PWINE_ACMOBJ32 MSACM_GetObj32(HACMOBJ32 hObj);
+HDRVR32 MSACM_OpenDriverProc32(DRIVERPROC32 pfnDriverProc);
+
+#endif  /* __WINE_MSACM_H */
+
+
