Moved DDK level material to new include/mmddk.h file.
Copied some SDK level material from include/multimedia.h file.

diff --git a/include/mmddk.h b/include/mmddk.h
new file mode 100644
index 0000000..e61e593
--- /dev/null
+++ b/include/mmddk.h
@@ -0,0 +1,412 @@
+/* -*- tab-width: 8; c-basic-offset: 4 -*- */
+
+/*****************************************************************************
+ * Copyright 1998, Luiz Otavio L. Zorzella
+ *           1999, Eric Pouech
+ *
+ * File:      mmddk.h
+ * Purpose:   multimedia declarations (external to WINMM & MMSYSTEM DLLs
+ *                                     for other DLLs (MCI, drivers...))
+ *
+ *****************************************************************************
+ */
+#ifndef __MMDDK_H 
+#define __MMDDK_H
+
+#include "mmsystem.h"
+#include "winbase.h"
+
+#define MAX_MIDIINDRV 	(16)
+/* For now I'm making 16 the maximum number of midi devices one can
+ * have. This should be more than enough for everybody. But as a purist,
+ * I intend to make it unbounded in the future, as soon as I figure
+ * a good way to do so.
+ */
+#define MAX_MIDIOUTDRV 	(16)
+
+/* ================================== 
+ *   Multimedia DDK compatible part
+ * ================================== */
+
+#include "pshpack1.h"
+
+#define DRVM_INIT		100
+#define DRVM_EXIT		101
+#define DRVM_DISABLE		102
+#define DRVM_ENABLE		103
+
+/* messages that have IOCTL format
+ *    dw1 = NULL or handle
+ *    dw2 = NULL or ptr to DRVM_IOCTL_DATA
+ *    return is MMRESULT
+ */
+#define DRVM_IOCTL		0x100
+#define DRVM_ADD_THRU		(DRVM_IOCTL+1)
+#define DRVM_REMOVE_THRU	(DRVM_IOCTL+2)
+#define DRVM_IOCTL_LAST		(DRVM_IOCTL+5)
+typedef struct {
+    DWORD  dwSize; 	/* size of this structure */
+    DWORD  dwCmd;  	/* IOCTL command code, 0x80000000 and above reserved for system */
+} DRVM_IOCTL_DATA, *LPDRVM_IOCTL_DATA;
+
+/* command code ranges for dwCmd field of DRVM_IOCTL message
+ * - codes from 0 to 0x7FFFFFFF are user defined
+ * - codes from 0x80000000 to 0xFFFFFFFF are reserved for future definition by microsoft
+ */
+#define DRVM_IOCTL_CMD_USER   0x00000000L
+#define DRVM_IOCTL_CMD_SYSTEM 0x80000000L
+
+#define DRVM_MAPPER		0x2000
+#define DRVM_USER               0x4000
+#define DRVM_MAPPER_STATUS      (DRVM_MAPPER+0)
+#define DRVM_MAPPER_RECONFIGURE (DRVM_MAPPER+1)
+
+#define WODM_INIT		DRVM_INIT
+#define WODM_GETNUMDEVS		 3
+#define WODM_GETDEVCAPS		 4
+#define WODM_OPEN		 5
+#define WODM_CLOSE		 6
+#define WODM_PREPARE		 7
+#define WODM_UNPREPARE		 8
+#define WODM_WRITE		 9
+#define WODM_PAUSE		10
+#define WODM_RESTART		11
+#define WODM_RESET		12 
+#define WODM_GETPOS		13
+#define WODM_GETPITCH		14
+#define WODM_SETPITCH		15
+#define WODM_GETVOLUME		16
+#define WODM_SETVOLUME		17
+#define WODM_GETPLAYBACKRATE	18
+#define WODM_SETPLAYBACKRATE	19
+#define WODM_BREAKLOOP		20
+
+#define WODM_MAPPER_STATUS      (DRVM_MAPPER_STATUS + 0)
+#define WAVEOUT_MAPPER_STATUS_DEVICE    0
+#define WAVEOUT_MAPPER_STATUS_MAPPED    1
+#define WAVEOUT_MAPPER_STATUS_FORMAT    2
+
+#define WIDM_INIT		DRVM_INIT
+#define WIDM_GETNUMDEVS		50
+#define WIDM_GETDEVCAPS		51
+#define WIDM_OPEN		52
+#define WIDM_CLOSE		53
+#define WIDM_PREPARE		54
+#define WIDM_UNPREPARE		55
+#define WIDM_ADDBUFFER		56
+#define WIDM_START		57
+#define WIDM_STOP		58
+#define WIDM_RESET		59
+#define WIDM_GETPOS		60
+
+#define WIDM_MAPPER_STATUS      (DRVM_MAPPER_STATUS + 0)
+#define WAVEIN_MAPPER_STATUS_DEVICE     0
+#define WAVEIN_MAPPER_STATUS_MAPPED     1
+#define WAVEIN_MAPPER_STATUS_FORMAT     2
+
+#define MODM_INIT		DRVM_INIT
+#define MODM_GETNUMDEVS		1
+#define MODM_GETDEVCAPS		2
+#define MODM_OPEN		3
+#define MODM_CLOSE		4
+#define MODM_PREPARE		5
+#define MODM_UNPREPARE		6
+#define MODM_DATA		7
+#define MODM_LONGDATA		8
+#define MODM_RESET          	9
+#define MODM_GETVOLUME		10
+#define MODM_SETVOLUME		11
+#define MODM_CACHEPATCHES	12      
+#define MODM_CACHEDRUMPATCHES	13     
+
+#define MIDM_INIT		DRVM_INIT
+#define MIDM_GETNUMDEVS  	53
+#define MIDM_GETDEVCAPS  	54
+#define MIDM_OPEN        	55
+#define MIDM_CLOSE       	56
+#define MIDM_PREPARE     	57
+#define MIDM_UNPREPARE   	58
+#define MIDM_ADDBUFFER   	59
+#define MIDM_START       	60
+#define MIDM_STOP        	61
+#define MIDM_RESET       	62
+
+
+#define AUXM_INIT             DRVM_INIT
+#define AUXDM_GETNUMDEVS    	3
+#define AUXDM_GETDEVCAPS    	4
+#define AUXDM_GETVOLUME     	5
+#define AUXDM_SETVOLUME     	6
+
+#define	MXDM_GETNUMDEVS		1
+#define	MXDM_GETDEVCAPS		2
+#define	MXDM_OPEN		3
+#define	MXDM_CLOSE		4
+#define	MXDM_GETLINEINFO	5
+#define	MXDM_GETLINECONTROLS	6
+#define	MXDM_GETCONTROLDETAILS	7
+#define	MXDM_SETCONTROLDETAILS	8
+
+#define MCI_MAX_DEVICE_TYPE_LENGTH 80
+
+#define MCI_FALSE                       (MCI_STRING_OFFSET + 19)
+#define MCI_TRUE                        (MCI_STRING_OFFSET + 20)
+
+#define MCI_FORMAT_RETURN_BASE          MCI_FORMAT_MILLISECONDS_S
+#define MCI_FORMAT_MILLISECONDS_S       (MCI_STRING_OFFSET + 21)
+#define MCI_FORMAT_HMS_S                (MCI_STRING_OFFSET + 22)
+#define MCI_FORMAT_MSF_S                (MCI_STRING_OFFSET + 23)
+#define MCI_FORMAT_FRAMES_S             (MCI_STRING_OFFSET + 24)
+#define MCI_FORMAT_SMPTE_24_S           (MCI_STRING_OFFSET + 25)
+#define MCI_FORMAT_SMPTE_25_S           (MCI_STRING_OFFSET + 26)
+#define MCI_FORMAT_SMPTE_30_S           (MCI_STRING_OFFSET + 27)
+#define MCI_FORMAT_SMPTE_30DROP_S       (MCI_STRING_OFFSET + 28)
+#define MCI_FORMAT_BYTES_S              (MCI_STRING_OFFSET + 29)
+#define MCI_FORMAT_SAMPLES_S            (MCI_STRING_OFFSET + 30)
+#define MCI_FORMAT_TMSF_S               (MCI_STRING_OFFSET + 31)
+
+#define MCI_VD_FORMAT_TRACK_S           (MCI_VD_OFFSET + 5)
+
+#define WAVE_FORMAT_PCM_S               (MCI_WAVE_OFFSET + 0)
+#define WAVE_MAPPER_S                   (MCI_WAVE_OFFSET + 1)
+
+#define MCI_SEQ_MAPPER_S                (MCI_SEQ_OFFSET + 5)
+#define MCI_SEQ_FILE_S                  (MCI_SEQ_OFFSET + 6)
+#define MCI_SEQ_MIDI_S                  (MCI_SEQ_OFFSET + 7)
+#define MCI_SEQ_SMPTE_S                 (MCI_SEQ_OFFSET + 8)
+#define MCI_SEQ_FORMAT_SONGPTR_S        (MCI_SEQ_OFFSET + 9)
+#define MCI_SEQ_NONE_S                  (MCI_SEQ_OFFSET + 10)
+#define MIDIMAPPER_S                    (MCI_SEQ_OFFSET + 11)
+
+#define MCI_RESOURCE_RETURNED       0x00010000  /* resource ID */
+#define MCI_COLONIZED3_RETURN       0x00020000  /* colonized ID, 3 bytes data */
+#define MCI_COLONIZED4_RETURN       0x00040000  /* colonized ID, 4 bytes data */
+#define MCI_INTEGER_RETURNED        0x00080000  /* integer conversion needed */
+#define MCI_RESOURCE_DRIVER         0x00100000  /* driver owns returned resource */
+
+#define MCI_NO_COMMAND_TABLE    0xFFFF
+
+#define MCI_COMMAND_HEAD        0
+#define MCI_STRING              1
+#define MCI_INTEGER             2
+#define MCI_END_COMMAND         3
+#define MCI_RETURN              4
+#define MCI_FLAG                5
+#define MCI_END_COMMAND_LIST    6
+#define MCI_RECT                7
+#define MCI_CONSTANT            8
+#define MCI_END_CONSTANT        9
+
+#define MAKEMCIRESOURCE(wRet, wRes) MAKELRESULT((wRet), (wRes))
+
+typedef struct {
+	DWORD   		dwCallback;
+	DWORD   		dwInstance;
+	HMIDIOUT		hMidi;
+	DWORD   		dwFlags;
+} PORTALLOC16, *LPPORTALLOC16;
+
+typedef struct {
+	DWORD   		dwCallback;
+	DWORD   		dwInstance;
+	HMIDIOUT		hMidi;
+	DWORD   		dwFlags;
+} PORTALLOC, *LPPORTALLOC;
+
+#if 0
+/* FIXME: the ???OPENDESC structs will be fixed when low
+ * level driver loading is available
+ * for now comment them out, and use non corrrect ones in winemm.h
+ * to be uncommented ASAP
+ */
+typedef struct {
+	HWAVE16			hWave;
+	LPWAVEFORMATEX		lpFormat;
+	DWORD			dwCallback;
+	DWORD			dwInstance;
+	UINT16			uMappedDeviceID;
+        DWORD			dnDevNode;
+} WAVEOPENDESC16, *LPWAVEOPENDESC16;
+
+typedef struct {
+	HWAVE			hWave;
+	LPWAVEFORMATEX		lpFormat;
+	DWORD			dwCallback;
+	DWORD			dwInstance;
+	UINT			uMappedDeviceID;
+        DWORD			dnDevNode;
+} WAVEOPENDESC, *LPWAVEOPENDESC;
+
+typedef struct {
+        DWORD  			dwStreamID;
+        WORD   			wDeviceID;
+} MIDIOPENSTRMID;
+
+typedef struct {
+	HMIDI16			hMidi;
+	DWORD			dwCallback;
+	DWORD			dwInstance;
+        UINT16		        reserved;
+        DWORD          		dnDevNode;
+        DWORD          		cIds;
+        MIDIOPENSTRMID 		rgIds;
+} MIDIOPENDESC16, *LPMIDIOPENDESC16;
+
+typedef struct {
+	HMIDI			hMidi;
+	DWORD			dwCallback;
+	DWORD			dwInstance;
+        DWORD          		dnDevNode;
+        DWORD          		cIds;
+        MIDIOPENSTRMID 		rgIds;
+} MIDIOPENDESC, *LPMIDIOPENDESC;
+
+#if 0
+typedef struct {
+	UINT16			wDelay;
+	UINT16			wResolution;
+	LPTIMECALLBACK16	lpFunction;
+	DWORD			dwUser;
+	UINT16			wFlags;
+} TIMEREVENT, *LPTIMEREVENT;
+#endif
+
+typedef struct tMIXEROPENDESC16
+{
+	HMIXEROBJ16		hmx;
+        LPVOID			pReserved0;
+	DWORD			dwCallback;
+	DWORD			dwInstance;
+} MIXEROPENDESC16, *LPMIXEROPENDESC16;
+
+typedef struct tMIXEROPENDESC
+{
+	HMIXEROBJ		hmx;
+        LPVOID			pReserved0;
+	DWORD			dwCallback;
+	DWORD			dwInstance;
+} MIXEROPENDESC, *LPMIXEROPENDESC;
+#else
+/* those definitions are still wine tainted
+ * keep them in a temporary phase
+ */
+typedef struct {
+	HWAVE16			hWave;
+	LPWAVEFORMAT		lpFormat;
+	DWORD			dwCallBack;
+	DWORD			dwInstance;
+	UINT16			uDeviceID;
+} WAVEOPENDESC, *LPWAVEOPENDESC;
+
+typedef struct {
+        DWORD  			dwStreamID;
+        WORD   			wDeviceID;
+} MIDIOPENSTRMID;
+
+/* FIXME: this structure has a different mapping in 16 & 32 bit mode
+ * Since, I don't plan to add support for native 16 bit low level
+ * multimedia drivers, it'll do.
+ */
+typedef struct {
+	HMIDI16			hMidi;
+	DWORD			dwCallback;
+	DWORD			dwInstance;
+	UINT16			wDevID;
+        DWORD          		dnDevNode;
+        DWORD          		cIds;
+        MIDIOPENSTRMID 		rgIds;
+} MIDIOPENDESC, *LPMIDIOPENDESC;
+
+typedef struct tMIXEROPENDESC
+{
+	HMIXEROBJ16		hmx;
+	DWORD			dwCallback;
+	DWORD			dwInstance;
+	UINT16			uDeviceID;
+} MIXEROPENDESC,*LPMIXEROPENDESC;
+#endif
+
+typedef struct {
+	UINT16			wDeviceID;		/* device ID */
+	LPSTR			lpstrParams;		/* parameter string for entry in SYSTEM.INI */
+	UINT16			wCustomCommandTable;	/* custom command table (0xFFFF if none)
+							 * filled in by the driver */
+	UINT16			wType;			/* driver type (filled in by the driver) */
+} MCI_OPEN_DRIVER_PARMS16, *LPMCI_OPEN_DRIVER_PARMS16;
+
+typedef struct {
+	UINT			wDeviceID;		/* device ID */
+	LPSTR			lpstrParams;		/* parameter string for entry in SYSTEM.INI */
+	UINT			wCustomCommandTable;	/* custom command table (0xFFFF if none) * filled in by the driver */
+	UINT			wType;			/* driver type (filled in by the driver) */
+} MCI_OPEN_DRIVER_PARMSA, *LPMCI_OPEN_DRIVER_PARMSA;
+
+typedef struct {
+	UINT			wDeviceID;		/* device ID */
+	LPWSTR			lpstrParams;		/* parameter string for entry in SYSTEM.INI */
+	UINT			wCustomCommandTable;	/* custom command table (0xFFFF if none) * filled in by the driver */
+	UINT			wType;			/* driver type (filled in by the driver) */
+} MCI_OPEN_DRIVER_PARMSW, *LPMCI_OPEN_DRIVER_PARMSW;
+DECL_WINELIB_TYPE_AW(MCI_OPEN_DRIVER_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_OPEN_DRIVER_PARMS)
+
+DWORD 			WINAPI	mciGetDriverData16(UINT16 uDeviceID);
+DWORD 			WINAPI	mciGetDriverData(UINT uDeviceID);
+
+BOOL16			WINAPI	mciSetDriverData16(UINT16 uDeviceID, DWORD dwData);
+BOOL			WINAPI	mciSetDriverData(UINT uDeviceID, DWORD dwData);
+
+UINT16			WINAPI	mciDriverYield16(UINT16 uDeviceID);
+UINT			WINAPI	mciDriverYield(UINT uDeviceID);
+
+BOOL16			WINAPI	mciDriverNotify16(HWND16 hwndCallback, UINT16 uDeviceID,
+						  UINT16 uStatus);
+BOOL			WINAPI	mciDriverNotify(HWND hwndCallback, UINT uDeviceID,
+						UINT uStatus);
+
+UINT16			WINAPI	mciLoadCommandResource16(HINSTANCE16 hInstance,
+						 LPCSTR lpResName, UINT16 uType);
+UINT			WINAPI	mciLoadCommandResource(HINSTANCE hInstance,
+					       LPCWSTR lpResName, UINT uType);
+
+BOOL16			WINAPI	mciFreeCommandResource16(UINT16 uTable);
+BOOL			WINAPI	mciFreeCommandResource(UINT uTable);
+
+HINSTANCE16		WINAPI	mmTaskCreate16(SEGPTR spProc, HINSTANCE16 *lphMmTask, DWORD dwPmt);
+void    		WINAPI  mmTaskBlock16(HINSTANCE16 hInst);
+LRESULT 		WINAPI 	mmTaskSignal16(HTASK16 ht);
+void    		WINAPI  mmTaskYield16(void);
+
+LRESULT 		WINAPI 	mmThreadCreate16(FARPROC16 fpThreadAddr, LPHANDLE lpHndl,
+						 DWORD dwPmt, DWORD dwFlags);
+void 			WINAPI 	mmThreadSignal16(HANDLE16 hndl);
+void    		WINAPI	mmThreadBlock16(HANDLE16 hndl);
+HANDLE16 		WINAPI	mmThreadGetTask16(HANDLE16 hndl);
+BOOL16   		WINAPI	mmThreadIsValid16(HANDLE16 hndl);
+BOOL16  		WINAPI	mmThreadIsCurrent16(HANDLE16 hndl);
+
+#define DCB_NULL		0x0000
+#define DCB_WINDOW		0x0001			/* dwCallback is a HWND */
+#define DCB_TASK		0x0002			/* dwCallback is a HTASK */
+#define DCB_FUNCTION		0x0003			/* dwCallback is a FARPROC */
+#define DCB_EVENT		0x0005			/* dwCallback is an EVENT Handler */
+#define DCB_TYPEMASK		0x0007
+#define DCB_NOSWITCH		0x0008			/* don't switch stacks for callback */
+
+BOOL16			WINAPI	DriverCallback16(DWORD dwCallBack, UINT16 uFlags, HANDLE16 hDev, 
+						 WORD wMsg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2);
+BOOL		 	WINAPI	DriverCallback(DWORD dwCallBack, UINT uFlags, HANDLE hDev, 
+					       UINT wMsg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2);
+
+/* FIXME: the Wine builtin MCI drivers still use those winmm internal functions
+ * 		remove them ASAP
+ */
+extern DWORD			MCI_WriteString(LPSTR lpDstStr, DWORD dstSize, LPCSTR lpSrcStr);
+extern const char* 		MCI_MessageToString(UINT16 wMsg);
+extern DWORD 			MCI_SendCommandAsync(UINT wDevID, UINT wMsg, DWORD dwParam1, DWORD dwParam2, UINT size);
+
+
+#include "poppack.h"
+
+#endif /* __MMDDK_H */
+
diff --git a/include/mmsystem.h b/include/mmsystem.h
index 83b94c5..29571d6 100644
--- a/include/mmsystem.h
+++ b/include/mmsystem.h
@@ -148,9 +148,6 @@
 #define CALLBACK_THREAD		(CALLBACK_TASK)	/* dwCallback is a thread ID */
 #define CALLBACK_FUNCTION   	0x00030000l    	/* dwCallback is a FARPROC */
 #define CALLBACK_EVENT		0x00050000l	/* dwCallback is an EVENT Handler */
-#define CALLBACK_FUNC32     	0x00070000l    	/* (ugly hack) 32-bit FARPROC */
-#define CALLBACK32CONV(x)   ((((x)&CALLBACK_TYPEMASK)==CALLBACK_FUNCTION) ? \
-                             (((x)&~CALLBACK_TYPEMASK)|CALLBACK_FUNC32) : (x))
 
 typedef void (CALLBACK *LPDRVCALLBACK16) (HDRVR16 h, UINT16 uMessage, DWORD dwUser, DWORD dw1, DWORD dw2);
 typedef void (CALLBACK *LPDRVCALLBACK) (HDRVR h, UINT uMessage, DWORD dwUser, DWORD dw1, DWORD dw2);
@@ -177,6 +174,9 @@
 UINT16		WINAPI	mmsystemGetVersion16(void);
 UINT 		WINAPI 	mmsystemGetVersion(void);
 BOOL16 		WINAPI 	sndPlaySound(LPCSTR lpszSoundName, UINT16 uFlags);
+BOOL 		WINAPI	sndPlaySoundA(LPCSTR lpszSound, UINT fuSound);
+BOOL 		WINAPI	sndPlaySoundW(LPCWSTR lpszSound, UINT fuSound);
+#define 		sndPlaySound WINELIB_NAME_AW(sndPlaySound) 
 BOOL 		WINAPI 	PlaySoundA(LPCSTR pszSound, HMODULE hmod, DWORD fdwSound);
 BOOL 		WINAPI 	PlaySoundW(LPCWSTR pszSound, HMODULE hmod, DWORD fdwSound);
 #define 		PlaySound WINELIB_NAME_AW(PlaySound)
@@ -215,8 +215,11 @@
 
 #define WAVE_MAPPER     (-1)
 
-#define  WAVE_FORMAT_QUERY     0x0001
-#define  WAVE_ALLOWSYNC        0x0002
+#define  WAVE_FORMAT_QUERY     		0x0001
+#define  WAVE_ALLOWSYNC        		0x0002
+#define  WAVE_MAPPED               	0x0004
+#define  WAVE_FORMAT_DIRECT        	0x0008
+#define  WAVE_FORMAT_DIRECT_QUERY  	(WAVE_FORMAT_QUERY | WAVE_FORMAT_DIRECT)
 
 typedef struct wavehdr_tag {
     LPSTR       lpData;		/* pointer to locked data buffer */
@@ -410,8 +413,8 @@
 UINT 		WINAPI 	waveInGetErrorTextA(UINT,LPSTR,UINT);
 UINT 		WINAPI 	waveInGetErrorTextW(UINT,LPWSTR,UINT);
 #define 		waveInGetErrorText WINELIB_NAME_AW(waveInGetErrorText)
-UINT16 		WINAPI  waveInOpen16(HWAVEIN16*,UINT16,const LPWAVEFORMAT,DWORD,DWORD,DWORD);
-UINT 		WINAPI  waveInOpen(HWAVEIN*,UINT,const LPWAVEFORMAT,DWORD,DWORD,DWORD);
+UINT16 		WINAPI  waveInOpen16(HWAVEIN16*,UINT16,const LPWAVEFORMATEX,DWORD,DWORD,DWORD);
+UINT 		WINAPI  waveInOpen(HWAVEIN*,UINT,const LPWAVEFORMATEX,DWORD,DWORD,DWORD);
 UINT16 		WINAPI  waveInClose16(HWAVEIN16);
 UINT 		WINAPI  waveInClose(HWAVEIN);
 UINT16 		WINAPI  waveInPrepareHeader16(HWAVEIN16,WAVEHDR*,UINT16);
@@ -980,6 +983,7 @@
 UINT		WINAPI	joyGetNumDevs(void);
 MMRESULT16	WINAPI	joyGetPos16(UINT16,LPJOYINFO16);
 MMRESULT	WINAPI	joyGetPos(UINT,LPJOYINFO);
+MMRESULT16	WINAPI	joyGetPosEx16(UINT16,LPJOYINFOEX);
 MMRESULT	WINAPI	joyGetPosEx(UINT,LPJOYINFOEX);
 MMRESULT16	WINAPI	joyGetThreshold16(UINT16,UINT16*);
 MMRESULT	WINAPI	joyGetThreshold(UINT,UINT*);
@@ -1034,6 +1038,20 @@
 #define	MIXERLINE_LINEF_DISCONNECTED	0x00008000
 #define	MIXERLINE_LINEF_SOURCE		0x80000000
 
+/* Mixer flags */
+#define MIXER_OBJECTF_HANDLE	0x80000000L
+#define MIXER_OBJECTF_MIXER	0x00000000L
+#define MIXER_OBJECTF_HMIXER	(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIXER)
+#define MIXER_OBJECTF_WAVEOUT	0x10000000L
+#define MIXER_OBJECTF_HWAVEOUT	(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEOUT)
+#define MIXER_OBJECTF_WAVEIN	0x20000000L
+#define MIXER_OBJECTF_HWAVEIN	(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEIN)
+#define MIXER_OBJECTF_MIDIOUT	0x30000000L
+#define MIXER_OBJECTF_HMIDIOUT	(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIOUT)
+#define MIXER_OBJECTF_MIDIIN	0x40000000L
+#define MIXER_OBJECTF_HMIDIIN	(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIIN)
+#define MIXER_OBJECTF_AUX	0x50000000L
+
 /*  MIXERLINE.dwComponentType */
 /*  component types for destinations and sources */
 #define	MIXERLINE_COMPONENTTYPE_DST_FIRST	0x00000000L
@@ -2597,275 +2615,6 @@
 DECL_WINELIB_TYPE_AW(MCI_OVLY_LOAD_PARMS)
 DECL_WINELIB_TYPE_AW(LPMCI_OVLY_LOAD_PARMS)
 
-/**************************************************************
- * 		Linux MMSYSTEM Internals & Sample Audio Drivers
- */
-
-#define DRVM_INIT             100
-#define WODM_INIT             DRVM_INIT
-#define WIDM_INIT             DRVM_INIT
-#define MODM_INIT             DRVM_INIT
-#define MIDM_INIT             DRVM_INIT
-#define AUXM_INIT             DRVM_INIT
-
-#define WODM_GETNUMDEVS       3
-#define WODM_GETDEVCAPS       4
-#define WODM_OPEN             5
-#define WODM_CLOSE            6
-#define WODM_PREPARE          7
-#define WODM_UNPREPARE        8
-#define WODM_WRITE            9
-#define WODM_PAUSE            10
-#define WODM_RESTART          11
-#define WODM_RESET            12 
-#define WODM_GETPOS           13
-#define WODM_GETPITCH         14
-#define WODM_SETPITCH         15
-#define WODM_GETVOLUME        16
-#define WODM_SETVOLUME        17
-#define WODM_GETPLAYBACKRATE  18
-#define WODM_SETPLAYBACKRATE  19
-#define WODM_BREAKLOOP        20
-#define WODM_STOP             21
-
-#define WIDM_GETNUMDEVS  50
-#define WIDM_GETDEVCAPS  51
-#define WIDM_OPEN        52
-#define WIDM_CLOSE       53
-#define WIDM_PREPARE     54
-#define WIDM_UNPREPARE   55
-#define WIDM_ADDBUFFER   56
-#define WIDM_START       57
-#define WIDM_STOP        58
-#define WIDM_RESET       59
-#define WIDM_GETPOS      60
-#define WIDM_PAUSE       61
-
-#define MODM_GETNUMDEVS		1
-#define MODM_GETDEVCAPS		2
-#define MODM_OPEN		3
-#define MODM_CLOSE		4
-#define MODM_PREPARE		5
-#define MODM_UNPREPARE		6
-#define MODM_DATA		7
-#define MODM_LONGDATA		8
-#define MODM_RESET          	9
-#define MODM_GETVOLUME		10
-#define MODM_SETVOLUME		11
-#define MODM_CACHEPATCHES	12      
-#define MODM_CACHEDRUMPATCHES	13     
-
-#define MIDM_GETNUMDEVS  53
-#define MIDM_GETDEVCAPS  54
-#define MIDM_OPEN        55
-#define MIDM_CLOSE       56
-#define MIDM_PREPARE     57
-#define MIDM_UNPREPARE   58
-#define MIDM_ADDBUFFER   59
-#define MIDM_START       60
-#define MIDM_STOP        61
-#define MIDM_RESET       62
-
-#define AUXDM_GETNUMDEVS    3
-#define AUXDM_GETDEVCAPS    4
-#define AUXDM_GETVOLUME     5
-#define AUXDM_SETVOLUME     6
-
-#define	MXDM_GETNUMDEVS		1
-#define	MXDM_GETDEVCAPS		2
-#define	MXDM_OPEN		3
-#define	MXDM_CLOSE		4
-#define	MXDM_GETLINEINFO	5
-#define	MXDM_GETLINECONTROLS	6
-#define	MXDM_GETCONTROLDETAILS	7
-#define	MXDM_SETCONTROLDETAILS	8
-
-#define MCI_MAX_DEVICE_TYPE_LENGTH 80
-
-#define MCI_FALSE                       (MCI_STRING_OFFSET + 19)
-#define MCI_TRUE                        (MCI_STRING_OFFSET + 20)
-
-#define MCI_FORMAT_RETURN_BASE          MCI_FORMAT_MILLISECONDS_S
-#define MCI_FORMAT_MILLISECONDS_S       (MCI_STRING_OFFSET + 21)
-#define MCI_FORMAT_HMS_S                (MCI_STRING_OFFSET + 22)
-#define MCI_FORMAT_MSF_S                (MCI_STRING_OFFSET + 23)
-#define MCI_FORMAT_FRAMES_S             (MCI_STRING_OFFSET + 24)
-#define MCI_FORMAT_SMPTE_24_S           (MCI_STRING_OFFSET + 25)
-#define MCI_FORMAT_SMPTE_25_S           (MCI_STRING_OFFSET + 26)
-#define MCI_FORMAT_SMPTE_30_S           (MCI_STRING_OFFSET + 27)
-#define MCI_FORMAT_SMPTE_30DROP_S       (MCI_STRING_OFFSET + 28)
-#define MCI_FORMAT_BYTES_S              (MCI_STRING_OFFSET + 29)
-#define MCI_FORMAT_SAMPLES_S            (MCI_STRING_OFFSET + 30)
-#define MCI_FORMAT_TMSF_S               (MCI_STRING_OFFSET + 31)
-
-#define MCI_VD_FORMAT_TRACK_S           (MCI_VD_OFFSET + 5)
-
-#define WAVE_FORMAT_PCM_S               (MCI_WAVE_OFFSET + 0)
-#define WAVE_MAPPER_S                   (MCI_WAVE_OFFSET + 1)
-
-#define MCI_SEQ_MAPPER_S                (MCI_SEQ_OFFSET + 5)
-#define MCI_SEQ_FILE_S                  (MCI_SEQ_OFFSET + 6)
-#define MCI_SEQ_MIDI_S                  (MCI_SEQ_OFFSET + 7)
-#define MCI_SEQ_SMPTE_S                 (MCI_SEQ_OFFSET + 8)
-#define MCI_SEQ_FORMAT_SONGPTR_S        (MCI_SEQ_OFFSET + 9)
-#define MCI_SEQ_NONE_S                  (MCI_SEQ_OFFSET + 10)
-#define MIDIMAPPER_S                    (MCI_SEQ_OFFSET + 11)
-
-#define MCI_RESOURCE_RETURNED       0x00010000  /* resource ID */
-#define MCI_COLONIZED3_RETURN       0x00020000  /* colonized ID, 3 bytes data */
-#define MCI_COLONIZED4_RETURN       0x00040000  /* colonized ID, 4 bytes data */
-#define MCI_INTEGER_RETURNED        0x00080000  /* integer conversion needed */
-#define MCI_RESOURCE_DRIVER         0x00100000  /* driver owns returned resource */
-
-#define MCI_NO_COMMAND_TABLE    0xFFFF
-
-#define MCI_COMMAND_HEAD        0
-#define MCI_STRING              1
-#define MCI_INTEGER             2
-#define MCI_END_COMMAND         3
-#define MCI_RETURN              4
-#define MCI_FLAG                5
-#define MCI_END_COMMAND_LIST    6
-#define MCI_RECT                7
-#define MCI_CONSTANT            8
-#define MCI_END_CONSTANT        9
-
-/* Mixer flags */
-#define MIXER_OBJECTF_HANDLE	0x80000000L
-#define MIXER_OBJECTF_MIXER	0x00000000L
-#define MIXER_OBJECTF_HMIXER	(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIXER)
-#define MIXER_OBJECTF_WAVEOUT	0x10000000L
-#define MIXER_OBJECTF_HWAVEOUT	(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEOUT)
-#define MIXER_OBJECTF_WAVEIN	0x20000000L
-#define MIXER_OBJECTF_HWAVEIN	(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEIN)
-#define MIXER_OBJECTF_MIDIOUT	0x30000000L
-#define MIXER_OBJECTF_HMIDIOUT	(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIOUT)
-#define MIXER_OBJECTF_MIDIIN	0x40000000L
-#define MIXER_OBJECTF_HMIDIIN	(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIIN)
-#define MIXER_OBJECTF_AUX	0x50000000L
-
-#define MAKEMCIRESOURCE(wRet, wRes) MAKELRESULT((wRet), (wRes))
-
-/* the 95 DDK defines those slightly different, but they are internal anyway */
-typedef struct {
-	DWORD   		dwCallback;
-	DWORD   		dwInstance;
-	HMIDIOUT16		hMidi;
-	DWORD   		dwFlags;
-} PORTALLOC, *LPPORTALLOC;
-
-typedef struct {
-	HWAVE16			hWave;
-	LPWAVEFORMAT		lpFormat;
-	DWORD			dwCallBack;
-	DWORD			dwInstance;
-	UINT16			uDeviceID;
-} WAVEOPENDESC, *LPWAVEOPENDESC;
-
-typedef struct {
-        DWORD  			dwStreamID;
-        WORD   			wDeviceID;
-} MIDIOPENSTRMID;
-
-/* FIXME: this structure has a different mapping in 16 & 32 bit mode
- * Since, I don't plan to add support for native 16 bit low level
- * multimedia drivers, it'll do.
- */
-typedef struct {
-	HMIDI16			hMidi;
-	DWORD			dwCallback;
-	DWORD			dwInstance;
-	UINT16			wDevID;
-        DWORD          		dnDevNode;
-        DWORD          		cIds;
-        MIDIOPENSTRMID 		rgIds;
-} MIDIOPENDESC, *LPMIDIOPENDESC;
-
-typedef struct {
-	UINT16			wDelay;
-	UINT16			wResolution;
-	LPTIMECALLBACK16	lpFunction;
-	DWORD			dwUser;
-	UINT16			wFlags;
-} TIMEREVENT, *LPTIMEREVENT;
-
-typedef struct tMIXEROPENDESC
-{
-	HMIXEROBJ16	hmx;
-	DWORD			dwCallback;
-	DWORD			dwInstance;
-	UINT16		uDeviceID;
-} MIXEROPENDESC,*LPMIXEROPENDESC;
-
-typedef struct {
-	UINT16	wDeviceID;		/* device ID */
-	LPSTR		lpstrParams;	/* parameter string for entry in SYSTEM.INI */
-	UINT16	wCustomCommandTable;	/* custom command table (0xFFFF if none)
-					 * filled in by the driver */
-	UINT16	wType;			/* driver type (filled in by the driver) */
-} MCI_OPEN_DRIVER_PARMS16, *LPMCI_OPEN_DRIVER_PARMS16;
-
-typedef struct {
-	UINT	wDeviceID;		/* device ID */
-	LPSTR	lpstrParams;		/* parameter string for entry in SYSTEM.INI */
-	UINT	wCustomCommandTable;	/* custom command table (0xFFFF if none) * filled in by the driver */
-	UINT	wType;			/* driver type (filled in by the driver) */
-} MCI_OPEN_DRIVER_PARMSA, *LPMCI_OPEN_DRIVER_PARMSA;
-
-typedef struct {
-	UINT	wDeviceID;		/* device ID */
-	LPWSTR	lpstrParams;		/* parameter string for entry in SYSTEM.INI */
-	UINT	wCustomCommandTable;	/* custom command table (0xFFFF if none) * filled in by the driver */
-	UINT	wType;			/* driver type (filled in by the driver) */
-} MCI_OPEN_DRIVER_PARMSW, *LPMCI_OPEN_DRIVER_PARMSW;
-DECL_WINELIB_TYPE_AW(MCI_OPEN_DRIVER_PARMS)
-DECL_WINELIB_TYPE_AW(LPMCI_OPEN_DRIVER_PARMS)
-
-DWORD 		WINAPI	mciGetDriverData16(UINT16 uDeviceID);
-DWORD 		WINAPI	mciGetDriverData(UINT uDeviceID);
-
-BOOL16		WINAPI	mciSetDriverData16(UINT16 uDeviceID, DWORD dwData);
-BOOL		WINAPI	mciSetDriverData(UINT uDeviceID, DWORD dwData);
-
-UINT16		WINAPI	mciDriverYield16(UINT16 uDeviceID);
-UINT		WINAPI	mciDriverYield(UINT uDeviceID);
-
-BOOL16		WINAPI	mciDriverNotify16(HWND16 hwndCallback, UINT16 uDeviceID,
-					  UINT16 uStatus);
-BOOL		WINAPI	mciDriverNotify(HWND hwndCallback, UINT uDeviceID,
-					UINT uStatus);
-
-UINT16		WINAPI	mciLoadCommandResource16(HINSTANCE16 hInstance,
-						 LPCSTR lpResName, UINT16 uType);
-UINT		WINAPI	mciLoadCommandResource(HINSTANCE hInstance,
-					       LPCWSTR lpResName, UINT uType);
-
-BOOL16		WINAPI	mciFreeCommandResource16(UINT16 uTable);
-BOOL		WINAPI	mciFreeCommandResource(UINT uTable);
-
-#define DCB_NULL		0x0000
-#define DCB_WINDOW		0x0001			/* dwCallback is a HWND */
-#define DCB_TASK		0x0002			/* dwCallback is a HTASK */
-#define DCB_FUNCTION		0x0003			/* dwCallback is a FARPROC */
-#define DCB_EVENT		0x0005			/* dwCallback is an EVENT Handler */
-#define DCB_FUNC32		0x0007			/* (ugly hack) 32-bit FARPROC */
-#define DCB_TYPEMASK		0x0007
-#define DCB_NOSWITCH		0x0008			/* don't switch stacks for callback */
-
-BOOL16		WINAPI	DriverCallback16(DWORD dwCallBack, UINT16 uFlags, HANDLE16 hDev, 
-					 WORD wMsg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2);
-DWORD		WINAPI	auxMessage(WORD wDevID, WORD wMsg, DWORD dwUser, 
-				   DWORD dwParam1, DWORD dwParam2);
-DWORD		WINAPI	mixMessage(WORD wDevID, WORD wMsg, DWORD dwUser, 
-				   DWORD dwParam1, DWORD dwParam2);
-DWORD		WINAPI	midMessage(WORD wDevID, WORD wMsg, DWORD dwUser, 
-				   DWORD dwParam1, DWORD dwParam2);
-DWORD		WINAPI	modMessage(WORD wDevID, WORD wMsg, DWORD dwUser, 
-				   DWORD dwParam1, DWORD dwParam2);
-DWORD		WINAPI	widMessage(WORD wDevID, WORD wMsg, DWORD dwUser, 
-				   DWORD dwParam1, DWORD dwParam2);
-DWORD		WINAPI	wodMessage(WORD wDevID, WORD wMsg, DWORD dwUser, 
-				   DWORD dwParam1, DWORD dwParam2);
 #include "poppack.h"
 
 #ifdef __cplusplus
diff --git a/include/multimedia.h b/include/multimedia.h
deleted file mode 100644
index 6f41b43..0000000
--- a/include/multimedia.h
+++ /dev/null
@@ -1,163 +0,0 @@
-/* -*- tab-width: 8; c-basic-offset: 4 -*- */
-
-/*****************************************************************************
- * Copyright 1998, Luiz Otavio L. Zorzella
- *           1999, Eric Pouech
- *
- * File:      multimedia.h
- * Purpose:   multimedia declarations (internal to multimedia DLLs)
- *
- *****************************************************************************
- */
-#ifndef __WINE_MULTIMEDIA_H 
-#define __WINE_MULTIMEDIA_H
-
-#include "mmsystem.h"
-#include "winbase.h"
-
-#define MAX_MIDIINDRV 	(16)
-/* For now I'm making 16 the maximum number of midi devices one can
- * have. This should be more than enough for everybody. But as a purist,
- * I intend to make it unbounded in the future, as soon as I figure
- * a good way to do so.
- */
-#define MAX_MIDIOUTDRV 	(16)
-
-#if defined(HAVE_SYS_SOUNDCARD_H)
-# include <sys/soundcard.h>
-#elif defined(HAVE_MACHINE_SOUNDCARD_H)
-# include <machine/soundcard.h>
-#elif defined(HAVE_SOUNDCARD_H)
-# include <soundcard.h>
-#endif
-
-#ifdef HAVE_SYS_ERRNO_H
-#include <sys/errno.h>
-#endif
-
-#ifdef HAVE_OSS
-#define MIDI_SEQ "/dev/sequencer"
-#else
-#define MIDI_DEV "/dev/midi"
-#endif
-
-#ifdef SOUND_VERSION
-#define IOCTL(a,b,c)		ioctl(a,b,&c)
-#else
-#define IOCTL(a,b,c)		(c = ioctl(a,b,c))
-#endif
-
-#define WINE_MMTHREAD_CREATED	0x4153494C	/* "BSIL" */
-#define WINE_MMTHREAD_DELETED	0xDEADDEAD
-
-typedef struct {
-       DWORD			dwSignature;		/* 00 "BSIL" when ok, 0xDEADDEAD when being deleted */
-       DWORD			dwCounter;		/* 04 > 1 when in mmThread functions */
-       HANDLE			hThread;		/* 08 hThread */
-       DWORD                    dwThreadID;     	/* 0C */
-       FARPROC16		fpThread;		/* 10 address of thread proc (segptr or lin depending on dwFlags) */
-       DWORD			dwThreadPmt;    	/* 14 parameter to be passed upon thread creation to fpThread */
-       DWORD                    dwSignalCount;	     	/* 18 counter used for signaling */
-       HANDLE                   hEvent;     		/* 1C event */
-       HANDLE                   hVxD;		     	/* 20 return from OpenVxDHandle */
-       DWORD                    dwStatus;       	/* 24 0x00, 0x10, 0x20, 0x30 */
-       DWORD			dwFlags;		/* 28 dwFlags upon creation */
-       HANDLE16			hTask;          	/* 2C handle to created task */
-} WINE_MMTHREAD;
-
-typedef struct tagWINE_MCIDRIVER {
-        UINT			wDeviceID;
-        UINT			wType;
-	LPSTR			lpstrElementName;
-        LPSTR			lpstrDeviceType;
-        LPSTR			lpstrAlias;
-	HDRVR			hDrv;
-	DRIVERPROC16		driverProc;
-	DWORD			dwPrivate;
-        YIELDPROC		lpfnYieldProc;
-        DWORD	                dwYieldData;
-        BOOL			bIs32;
-        HTASK16			hCreatorTask;
-        UINT			uTypeCmdTable;
-        UINT			uSpecificCmdTable;
-        struct tagWINE_MCIDRIVER*	lpNext;
-} WINE_MCIDRIVER, *LPWINE_MCIDRIVER;
-
-typedef enum {
-    MCI_MAP_NOMEM, 	/* ko, memory problem */
-    MCI_MAP_MSGERROR, 	/* ko, unknown message */
-    MCI_MAP_OK, 	/* ok, no memory allocated. to be sent to 16 bit proc. */
-    MCI_MAP_OKMEM, 	/* ok, some memory allocated, need to call MCI_UnMapMsg32ATo16. to be sent to 16 bit proc. */
-    MCI_MAP_PASS	/* ok, no memory allocated. to be sent to 32 bit proc */
-} MCI_MapType;
-
-#define WINE_TIMER_IS32	0x80
-
-typedef struct tagTIMERENTRY {
-    UINT			wDelay;
-    UINT			wResol;
-    FARPROC16 			lpFunc;
-    DWORD			dwUser;
-    UINT16			wFlags;
-    UINT16			wTimerID;
-    UINT			wCurTime;
-    struct tagTIMERENTRY*	lpNext;
-} WINE_TIMERENTRY, *LPWINE_TIMERENTRY;
-
-typedef struct tagWINE_MM_IDATA {
-    /* iData reference */
-    DWORD			dwThisProcess;
-    struct tagWINE_MM_IDATA*	lpNextIData;
-    /* winmm part */
-    HANDLE			hWinMM32Instance;
-    HANDLE			hWinMM16Instance;
-    HANDLE			h16Module32;
-    CRITICAL_SECTION		cs;
-    /* mm timer part */
-    HANDLE			hMMTimer;
-    DWORD			mmSysTimeMS;
-    LPWINE_TIMERENTRY 		lpTimerList;
-    int				nSizeLpTimers;
-    LPWINE_TIMERENTRY		lpTimers;
-    /* mci part */
-    LPWINE_MCIDRIVER 		lpMciDrv;
-} WINE_MM_IDATA, *LPWINE_MM_IDATA;
-
-/* function prototypes */
-
-typedef LONG			(*MCIPROC16)(DWORD, HDRVR16, WORD, DWORD, DWORD);
-typedef LONG			(*MCIPROC)(DWORD, HDRVR, DWORD, DWORD, DWORD);
-
-extern LPWINE_MCIDRIVER		MCI_GetDriver(UINT16 uDevID);
-extern UINT			MCI_GetDriverFromString(LPCSTR str);
-extern DWORD			MCI_WriteString(LPSTR lpDstStr, DWORD dstSize, LPCSTR lpSrcStr);
-extern const char* 		MCI_MessageToString(UINT16 wMsg);
-
-extern UINT16		WINAPI	MCI_DefYieldProc(UINT16 wDevID, DWORD data);
-
-extern LRESULT			MCI_CleanUp(LRESULT dwRet, UINT wMsg, DWORD dwParam2, BOOL bIs32);
-
-extern DWORD			MCI_SendCommand(UINT wDevID, UINT16 wMsg, DWORD dwParam1, DWORD dwParam2, BOOL bFrom32);
-extern DWORD 			MCI_SendCommandFrom32(UINT wDevID, UINT16 wMsg, DWORD dwParam1, DWORD dwParam2);
-extern DWORD 			MCI_SendCommandFrom16(UINT wDevID, UINT16 wMsg, DWORD dwParam1, DWORD dwParam2);
-extern DWORD 			MCI_SendCommandAsync(UINT wDevID, UINT wMsg, DWORD dwParam1, DWORD dwParam2, UINT size);
-
-HINSTANCE16		WINAPI	mmTaskCreate16(SEGPTR spProc, HINSTANCE16 *lphMmTask, DWORD dwPmt);
-void    		WINAPI  mmTaskBlock16(HINSTANCE16 hInst);
-LRESULT 		WINAPI 	mmTaskSignal16(HTASK16 ht);
-void    		WINAPI  mmTaskYield16(void);
-
-void		        WINAPI  WINE_mmThreadEntryPoint(DWORD _pmt);
-LRESULT 		WINAPI 	mmThreadCreate16(FARPROC16 fpThreadAddr, LPHANDLE lpHndl, DWORD dwPmt, DWORD dwFlags);
-void 			WINAPI 	mmThreadSignal16(HANDLE16 hndl);
-void    		WINAPI	mmThreadBlock16(HANDLE16 hndl);
-HANDLE16 		WINAPI	mmThreadGetTask16(HANDLE16 hndl);
-BOOL16   		WINAPI	mmThreadIsValid16(HANDLE16 hndl);
-BOOL16  		WINAPI	mmThreadIsCurrent16(HANDLE16 hndl);
-
-BOOL				MULTIMEDIA_MciInit(void);
-LPWINE_MM_IDATA			MULTIMEDIA_GetIData(void);
-
-BOOL				MULTIMEDIA_MidiInit(void);
-
-#endif /* __WINE_MULTIMEDIA_H */