- merge audio headers
authorJohannes Anderwald <johannes.anderwald@reactos.org>
Sat, 6 Nov 2010 12:10:50 +0000 (12:10 +0000)
committerJohannes Anderwald <johannes.anderwald@reactos.org>
Sat, 6 Nov 2010 12:10:50 +0000 (12:10 +0000)
svn path=/branches/audio-bringup/; revision=49511

include/ddk/dmusicks.h
include/ddk/dmusprop.h [new file with mode: 0644]
include/ddk/portcls.h
include/psdk/ks.h
include/psdk/ksmedia.h
include/reactos/libs/sound/mmebuddy.h

index 27cd6ac..c5586e4 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef _DMUSICKS_
 #define _DMUSICKS_
 
+#include <dmusprop.h>
+
 #define DONT_HOLD_FOR_SEQUENCING 0x8000000000000000
 
 #ifndef REFERENCE_TIME
@@ -230,4 +232,35 @@ typedef IMiniportDMus *PMINIPORTDMUS;
     IN PMASTERCLOCK MasterClock,        \
     OUT PULONGLONG SchedulePreFetch)
 
+
+#define STATIC_KSAUDFNAME_DMUSIC_MPU_OUT\
+    0xA4DF0EB5, 0xBAC9, 0x11d2, {0xB7, 0xA8, 0x00, 0x60, 0x08, 0x33, 0x16, 0xC1}
+DEFINE_GUIDSTRUCT("A4DF0EB5-BAC9-11d2-B7A8-0060083316C1", KSAUDFNAME_DMUSIC_MPU_OUT);
+#define KSAUDFNAME_DMUSIC_MPU_OUT DEFINE_GUIDNAMED(KSAUDFNAME_DMUSIC_MPU_OUT)
+
+#define STATIC_KSAUDFNAME_DMUSIC_MPU_IN\
+    0xB2EC0A7D, 0xBAC9, 0x11d2, {0xB7, 0xA8, 0x00, 0x60, 0x08, 0x33, 0x16, 0xC1}
+DEFINE_GUIDSTRUCT("B2EC0A7D-BAC9-11d2-B7A8-0060083316C1", KSAUDFNAME_DMUSIC_MPU_IN);
+#define KSAUDFNAME_DMUSIC_MPU_IN DEFINE_GUIDNAMED(KSAUDFNAME_DMUSIC_MPU_IN)
+
+#define STATIC_IID_IMXF\
+    0xc096df9e, 0xfb09, 0x11d1, {0x81, 0xb0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1}
+DEFINE_GUIDSTRUCT("c096df9e-fb09-11d1-81b0-0060083316c1", IID_IMXF);
+#define IID_IMXF DEFINE_GUIDNAMED(IID_IMXF)
+
+#define DMUS_KEF_EVENT_COMPLETE     0x0000
+#define DMUS_KEF_EVENT_INCOMPLETE   0x0001
+#define DMUS_KEF_PACKAGE_EVENT      0x0002
+#define kBytePositionNone   (~(ULONGLONG)0)
+
+#define SHORT_EVT(evt)       ((evt)->cbEvent <= sizeof(PBYTE))
+#define PACKAGE_EVT(evt)     ((evt)->usFlags & DMUS_KEF_PACKAGE_EVENT)
+#define INCOMPLETE_EVT(evt)  ((evt)->usFlags & DMUS_KEF_EVENT_INCOMPLETE)
+#define COMPLETE_EVT(evt)    (((evt)->usFlags & DMUS_KEF_EVENT_INCOMPLETE) == 0)
+
+#define SET_INCOMPLETE_EVT(evt) ((evt)->usFlags |= DMUS_KEF_EVENT_INCOMPLETE)
+#define SET_COMPLETE_EVT(evt)   ((evt)->usFlags &= (~DMUS_KEF_EVENT_INCOMPLETE))
+#define SET_PACKAGE_EVT(evt)    ((evt)->usFlags |= DMUS_KEF_PACKAGE_EVENT)
+#define CLEAR_PACKAGE_EVT(evt)  ((evt)->usFlags &= (~DMUS_KEF_PACKAGE_EVENT))
+
 #endif /* _DMUSICKS_ */
diff --git a/include/ddk/dmusprop.h b/include/ddk/dmusprop.h
new file mode 100644 (file)
index 0000000..55877e5
--- /dev/null
@@ -0,0 +1,203 @@
+#ifndef _DMusProp_
+#define _DMusProp_
+
+//#include "dmusbuff.h"
+
+#define STATIC_KSDATAFORMAT_SUBTYPE_DIRECTMUSIC\
+    0x1a82f8bc,  0x3f8b, 0x11d2, {0xb7, 0x74, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1}
+DEFINE_GUIDSTRUCT("1a82f8bc-3f8b-11d2-b774-0060083316c1", KSDATAFORMAT_SUBTYPE_DIRECTMUSIC);
+#define KSDATAFORMAT_SUBTYPE_DIRECTMUSIC DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_DIRECTMUSIC)
+
+#define STATIC_KSNODETYPE_DMSYNTH\
+    0x94824f88, 0x6183, 0x11d2, {0x8f, 0x7a, 0x0, 0xc0, 0x4f, 0xbf, 0x8f, 0xef}
+DEFINE_GUIDSTRUCT("94824F88-6183-11d2-8F7A-00C04FBF8FEF", KSNODETYPE_DMSYNTH);
+#define KSNODETYPE_DMSYNTH DEFINE_GUIDNAMED(KSNODETYPE_DMSYNTH)
+
+#define STATIC_KSNODETYPE_DMSYNTH_CAPS\
+    0xbca2a2f1, 0x93c6, 0x11d2, {0xba, 0x1d, 0x0, 0x0, 0xf8, 0x75, 0xac, 0x12}
+DEFINE_GUIDSTRUCT("bca2a2f1-93c6-11d2-ba1d-0000f875ac12", KSNODETYPE_DMSYNTH_CAPS);
+#define KSNODETYPE_DMSYNTH_CAPS DEFINE_GUIDNAMED(KSNODETYPE_DMSYNTH_CAPS)
+
+#define STATIC_KSPROPSETID_Synth_Dls\
+    0xd523fa2c, 0xdee3, 0x11d1, {0xa7, 0x89, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12}
+DEFINE_GUIDSTRUCT("d523fa2c-dee3-11d1-a789-0000f875ac12", KSPROPSETID_Synth_Dls);
+#define KSPROPSETID_Synth_Dls DEFINE_GUIDNAMED(KSPROPSETID_Synth_Dls)
+
+typedef enum
+{
+    KSPROPERTY_SYNTH_DLS_DOWNLOAD = 0,
+    KSPROPERTY_SYNTH_DLS_UNLOAD,
+    KSPROPERTY_SYNTH_DLS_COMPACT,
+    KSPROPERTY_SYNTH_DLS_APPEND,
+    KSPROPERTY_SYNTH_DLS_WAVEFORMAT
+} KSPROPERTY_SYNTH_DLS;
+
+typedef struct _SYNTH_BUFFER
+{
+    ULONG   BufferSize;
+    PVOID   BufferAddress;
+} SYNTH_BUFFER, *PSYNTH_BUFFER;
+
+typedef struct _SYNTHDOWNLOAD
+{
+    HANDLE  DownloadHandle;
+    BOOL    Free;
+} SYNTHDOWNLOAD, *PSYNTHDOWNLOAD;
+
+#define STATIC_KSPROPSETID_Synth\
+    0xfedfae25L, 0xe46e, 0x11d1, {0xaa, 0xce, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12}
+DEFINE_GUIDSTRUCT("fedfae25-e46e-11d1-aace-0000f875ac12", KSPROPSETID_Synth);
+#define KSPROPSETID_Synth DEFINE_GUIDNAMED(KSPROPSETID_Synth)
+
+typedef enum
+{
+    KSPROPERTY_SYNTH_VOLUME = 0,
+    KSPROPERTY_SYNTH_VOLUMEBOOST,
+    KSPROPERTY_SYNTH_CAPS,
+    KSPROPERTY_SYNTH_PORTPARAMETERS,
+    KSPROPERTY_SYNTH_CHANNELGROUPS,
+    KSPROPERTY_SYNTH_VOICEPRIORITY,
+    KSPROPERTY_SYNTH_LATENCYCLOCK,
+    KSPROPERTY_SYNTH_RUNNINGSTATS
+} KSPROPERTY_SYNTH;
+
+#define SYNTH_PC_DLS                (0x00000001)
+#define SYNTH_PC_EXTERNAL           (0x00000002)
+#define SYNTH_PC_SOFTWARESYNTH      (0x00000004)
+#define SYNTH_PC_MEMORYSIZEFIXED    (0x00000008)
+#define SYNTH_PC_GMINHARDWARE       (0x00000010)
+#define SYNTH_PC_GSINHARDWARE       (0x00000020)
+#define SYNTH_PC_SYSTEMMEMORY       (0x7fffffff)
+
+#if (NTDDI_VERSION < NTDDI_WINXP)
+#define SYNTH_PC_REVERB             (0x00000040)
+#elif (NTDDI_VERSION >= NTDDI_WINXP)
+#define SYNTH_PC_XGINHARDWARE       (0x00000040)
+#define SYNTH_PC_DLS2               (0x00000200)
+#define SYNTH_PC_REVERB             (0x40000000)
+#endif
+
+typedef struct _SYNTHCAPS
+{
+    GUID    Guid;
+    DWORD   Flags;
+    DWORD   MemorySize;
+    DWORD   MaxChannelGroups;
+    DWORD   MaxVoices;
+    DWORD   MaxAudioChannels;
+    DWORD   EffectFlags;
+    WCHAR   Description[128];
+} SYNTHCAPS, *PSYNTHCAPS;
+
+
+typedef struct _SYNTH_PORTPARAMS
+{
+    DWORD   ValidParams;
+    DWORD   Voices;
+    DWORD   ChannelGroups;
+    DWORD   AudioChannels;
+    DWORD   SampleRate;
+    DWORD   EffectsFlags;
+    DWORD   Share;
+} SYNTH_PORTPARAMS, *PSYNTH_PORTPARAMS;
+
+#define SYNTH_PORTPARAMS_VOICES           0x00000001
+#define SYNTH_PORTPARAMS_CHANNELGROUPS    0x00000002
+#define SYNTH_PORTPARAMS_AUDIOCHANNELS    0x00000004
+#define SYNTH_PORTPARAMS_SAMPLERATE       0x00000008
+#define SYNTH_PORTPARAMS_EFFECTS          0x00000020
+#define SYNTH_PORTPARAMS_SHARE            0x00000040
+
+#define SYNTH_EFFECT_NONE             0x00000000
+#define SYNTH_EFFECT_REVERB           0x00000001
+#define SYNTH_EFFECT_CHORUS           0x00000002
+#define SYNTH_EFFECT_DELAY            0x00000004
+
+typedef struct _SYNTHVOICEPRIORITY_INSTANCE
+{
+    DWORD   ChannelGroup;
+    DWORD   Channel;
+} SYNTHVOICEPRIORITY_INSTANCE, *PSYNTHVOICEPRIORITY_INSTANCE;
+
+typedef struct _SYNTH_STATS
+{
+    DWORD   ValidStats;
+    DWORD   Voices;
+    DWORD   TotalCPU;
+    DWORD   CPUPerVoice;
+    DWORD   LostNotes;
+    DWORD   FreeMemory;
+    LONG    PeakVolume;
+} SYNTH_STATS, *PSYNTH_STATS;
+
+
+#define SYNTH_STATS_VOICES          (1 << 0)
+#define SYNTH_STATS_TOTAL_CPU       (1 << 1)
+#define SYNTH_STATS_CPU_PER_VOICE   (1 << 2)
+#define SYNTH_STATS_LOST_NOTES      (1 << 3)
+#define SYNTH_STATS_PEAK_VOLUME     (1 << 4)
+#define SYNTH_STATS_FREE_MEMORY     (1 << 5)
+
+#ifndef _DIRECTAUDIO_PRIORITIES_DEFINED_
+#define _DIRECTAUDIO_PRIORITIES_DEFINED_
+
+#define DAUD_CRITICAL_VOICE_PRIORITY    (0xF0000000)
+#define DAUD_HIGH_VOICE_PRIORITY        (0xC0000000)
+#define DAUD_STANDARD_VOICE_PRIORITY    (0x80000000)
+#define DAUD_LOW_VOICE_PRIORITY         (0x40000000)
+#define DAUD_PERSIST_VOICE_PRIORITY     (0x10000000)
+
+#define DAUD_CHAN1_VOICE_PRIORITY_OFFSET    (0x0000000E)
+#define DAUD_CHAN2_VOICE_PRIORITY_OFFSET    (0x0000000D)
+#define DAUD_CHAN3_VOICE_PRIORITY_OFFSET    (0x0000000C)
+#define DAUD_CHAN4_VOICE_PRIORITY_OFFSET    (0x0000000B)
+#define DAUD_CHAN5_VOICE_PRIORITY_OFFSET    (0x0000000A)
+#define DAUD_CHAN6_VOICE_PRIORITY_OFFSET    (0x00000009)
+#define DAUD_CHAN7_VOICE_PRIORITY_OFFSET    (0x00000008)
+#define DAUD_CHAN8_VOICE_PRIORITY_OFFSET    (0x00000007)
+#define DAUD_CHAN9_VOICE_PRIORITY_OFFSET    (0x00000006)
+#define DAUD_CHAN10_VOICE_PRIORITY_OFFSET   (0x0000000F)
+#define DAUD_CHAN11_VOICE_PRIORITY_OFFSET   (0x00000005)
+#define DAUD_CHAN12_VOICE_PRIORITY_OFFSET   (0x00000004)
+#define DAUD_CHAN13_VOICE_PRIORITY_OFFSET   (0x00000003)
+#define DAUD_CHAN14_VOICE_PRIORITY_OFFSET   (0x00000002)
+#define DAUD_CHAN15_VOICE_PRIORITY_OFFSET   (0x00000001)
+#define DAUD_CHAN16_VOICE_PRIORITY_OFFSET   (0x00000000)
+
+#define DAUD_CHAN1_DEF_VOICE_PRIORITY   (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN1_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN2_DEF_VOICE_PRIORITY   (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN2_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN3_DEF_VOICE_PRIORITY   (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN3_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN4_DEF_VOICE_PRIORITY   (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN4_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN5_DEF_VOICE_PRIORITY   (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN5_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN6_DEF_VOICE_PRIORITY   (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN6_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN7_DEF_VOICE_PRIORITY   (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN7_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN8_DEF_VOICE_PRIORITY   (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN8_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN9_DEF_VOICE_PRIORITY   (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN9_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN10_DEF_VOICE_PRIORITY  (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN10_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN11_DEF_VOICE_PRIORITY  (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN11_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN12_DEF_VOICE_PRIORITY  (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN12_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN13_DEF_VOICE_PRIORITY  (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN13_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN14_DEF_VOICE_PRIORITY  (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN14_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN15_DEF_VOICE_PRIORITY  (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN15_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN16_DEF_VOICE_PRIORITY  (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN16_VOICE_PRIORITY_OFFSET)
+#endif
+
+typedef struct _SYNTH_REVERB_PARAMS
+{
+    float   fInGain;
+    float   fReverbMix;
+    float   fReverbTime;
+    float   fHighFreqRTRatio;
+} SYNTH_REVERB_PARAMS, *PSYNTH_REVERB_PARAMS;
+
+
+#define STATIC_KSPROPSETID_SynthClock \
+    0xfedfae26L, 0xe46e, 0x11d1, 0xaa, 0xce, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12
+DEFINE_GUIDSTRUCT("fedfae26-e46e-11d1-aace-0000f875ac12", KSPROPSETID_SynthClock);
+#define KSPROPSETID_SynthClock DEFINE_GUIDNAMED(KSPROPSETID_SynthClock)
+
+typedef enum
+{
+    KSPROPERTY_SYNTH_MASTERCLOCK
+} KSPROPERTY_SYNTHCLOCK;
+#endif
index 0a65732..226073a 100644 (file)
@@ -1958,6 +1958,12 @@ DECLARE_INTERFACE_(IPowerNotify, IUnknown)
 
 typedef IPowerNotify *PPOWERNOTIFY;
 
+#define IMP_IPowerNotify\
+    STDMETHODIMP_(void) PowerChangeNotify\
+    (   IN  POWER_STATE     PowerState\
+    )
+
+
 #undef INTERFACE
 
 /* ===============================================================
@@ -2158,6 +2164,11 @@ typedef IPortClsVersion *PPORTCLSVERSION;
 
 #undef INTERFACE
 
+#if (NTDDI_VERSION >= NTDDI_WINXP)
+DEFINE_GUID(IID_IMusicTechnology,
+0x80396C3CL, 0xCBCB, 0x409B, 0x9F, 0x65, 0x4F, 0x1E, 0x74, 0x67, 0xCD, 0xAF);
+#endif
+
 /* ===============================================================
     IDmaOperations Interface
 */
@@ -2364,6 +2375,10 @@ PORTCLASSAPI ULONGLONG NTAPI
 PcGetTimeInterval(
   IN ULONGLONG Since);
 
+#define GTI_SECONDS(t)      (ULONGLONG(t)*10000000)
+#define GTI_MILLISECONDS(t) (ULONGLONG(t)*10000)
+#define GTI_MICROSECONDS(t) (ULONGLONG(t)*10)
+
 PORTCLASSAPI NTSTATUS NTAPI
 PcRegisterSubdevice(
   IN PDEVICE_OBJECT DeviceObject,
index 62357d6..8cd467a 100644 (file)
@@ -1005,11 +1005,6 @@ DEFINE_GUIDSTRUCT("97E99BA0-BDEA-11CF-A5D6-28DB04C10000", KSPROPTYPESETID_Genera
     KSPROPERTY_DIRECTSOUND3DLISTENER_VELOCITY
 */
 
-#define KSPROPSETID_DrmAudioStream
-/*
-    KSPROPERTY_DRMAUDIOSTREAM_CONTENTID
-*/
-
 #define KSPROPSETID_Hrtf3d
 /*
     KSPROPERTY_HRTF3D_FILTER_FORMAT
@@ -1022,28 +1017,6 @@ DEFINE_GUIDSTRUCT("97E99BA0-BDEA-11CF-A5D6-28DB04C10000", KSPROPTYPESETID_Genera
     KSPROPERTY_ITD3D_PARAMS
 */
 
-#define KSPROPSETID_Synth
-/*
-    KSPROPERTY_SYNTH_CAPS
-    KSPROPERTY_SYNTH_CHANNELGROUPS
-    KSPROPERTY_SYNTH_LATENCYCLOCK
-    KSPROPERTY_SYNTH_MASTERCLOCK
-    KSPROPERTY_SYNTH_PORTPARAMETERS
-    KSPROPERTY_SYNTH_RUNNINGSTATS
-    KSPROPERTY_SYNTH_VOICEPRIORITY
-    KSPROPERTY_SYNTH_VOLUME
-    KSPROPERTY_SYNTH_VOLUMEBOOST
-*/
-
-#define KSPROPSETID_Synth_Dls
-/*
-    KSPROPERTY_SYNTH_DLS_APPEND
-    KSPROPERTY_SYNTH_DLS_COMPACT
-    KSPROPERTY_SYNTH_DLS_DOWNLOAD
-    KSPROPERTY_SYNTH_DLS_UNLOAD
-    KSPROPERTY_SYNTH_DLS_WAVEFORMAT
-*/
-
 #define KSPROPSETID_TopologyNode
 /*
     KSPROPERTY_TOPOLOGYNODE_ENABLE
index 32e5e3e..4873e1d 100644 (file)
@@ -565,6 +565,15 @@ typedef struct {
 #endif // !_NTDDK_
 } LOOPEDSTREAMING_POSITION_EVENT_DATA, *PLOOPEDSTREAMING_POSITION_EVENT_DATA ;
 
+#define STATIC_KSPROPSETID_DrmAudioStream\
+    0x2f2c8ddd, 0x4198, 0x4fac, 0xba, 0x29, 0x61, 0xbb, 0x5, 0xb7, 0xde, 0x6
+DEFINE_GUIDSTRUCT("2F2C8DDD-4198-4fac-BA29-61BB05B7DE06", KSPROPSETID_DrmAudioStream);
+#define KSPROPSETID_DrmAudioStream DEFINE_GUIDNAMED(KSPROPSETID_DrmAudioStream)
+
+typedef enum {
+    KSPROPERTY_DRMAUDIOSTREAM_CONTENTID
+} KSPROPERTY_DRMAUDIOSTREAM;
+
 
 /*
     SysAudio Properties
@@ -677,4 +686,52 @@ typedef struct {
     ULONG       Accuracy;
 } KSRTAUDIO_HWREGISTER, *PKSRTAUDIO_HWREGISTER;
 
+#define KSNODEPIN_STANDARD_IN       1
+#define KSNODEPIN_STANDARD_OUT      0
+
+#define KSNODEPIN_SUM_MUX_IN        1 
+#define KSNODEPIN_SUM_MUX_OUT       0
+
+#define KSNODEPIN_DEMUX_IN          0
+#define KSNODEPIN_DEMUX_OUT         1
+
+#if (NTDDI_VERSION < NTDDI_VISTA)
+
+#define KSNODEPIN_AEC_RENDER_IN     1
+#define KSNODEPIN_AEC_RENDER_OUT    0
+#define KSNODEPIN_AEC_CAPTURE_IN    2
+#define KSNODEPIN_AEC_CAPTURE_OUT   3
+
+#endif
+
+
+#define STATIC_KSMUSIC_TECHNOLOGY_PORT\
+    0x86C92E60L, 0x62E8, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
+DEFINE_GUIDSTRUCT("86C92E60-62E8-11CF-A5D6-28DB04C10000", KSMUSIC_TECHNOLOGY_PORT);
+#define KSMUSIC_TECHNOLOGY_PORT DEFINE_GUIDNAMED(KSMUSIC_TECHNOLOGY_PORT)
+
+#define STATIC_KSDATAFORMAT_SUBTYPE_MIDI_BUS\
+    0x2CA15FA0L, 0x6CFE, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
+DEFINE_GUIDSTRUCT("2CA15FA0-6CFE-11CF-A5D6-28DB04C10000", KSDATAFORMAT_SUBTYPE_MIDI_BUS);
+#define KSDATAFORMAT_SUBTYPE_MIDI_BUS DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MIDI_BUS)
+
+#define STATIC_KSAUDFNAME_MIDI\
+    0x185FEDF8L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
+DEFINE_GUIDSTRUCT("185FEDF8-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIDI);
+#define KSAUDFNAME_MIDI DEFINE_GUIDNAMED(KSAUDFNAME_MIDI)
+
+#define STATIC_KSNODETYPE_SYNTHESIZER\
+    DEFINE_USB_TERMINAL_GUID(0x0713)
+DEFINE_GUIDSTRUCT("DFF220F3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_SYNTHESIZER);
+#define KSNODETYPE_SYNTHESIZER DEFINE_GUIDNAMED(KSNODETYPE_SYNTHESIZER)
+
+typedef struct 
+{
+   KSDATARANGE              DataRange;
+   GUID                     Technology;
+   ULONG                    Channels;
+   ULONG                    Notes;
+   ULONG                    ChannelMask;
+} KSDATARANGE_MUSIC, *PKSDATARANGE_MUSIC;
+
 #endif
index cae6f3f..1a2a543 100644 (file)
@@ -68,7 +68,7 @@
             SND_TRACE(L"-- Current wave header list --\n"); \
             while ( CurrDumpHdr ) \
             { \
-                SND_TRACE(L"%x | %d bytes | flags: %x\n", CurrDumpHdr->lpData, \
+                SND_TRACE(L"%x | %d bytes | flags: %x\n", CurrDumpHdr, \
                           CurrDumpHdr->dwBufferLength, \
                           CurrDumpHdr->dwFlags); \
                 CurrDumpHdr = CurrDumpHdr->lpNext; \
@@ -364,6 +364,8 @@ typedef struct _SOUND_DEVICE_INSTANCE
     WAVEFORMATEX WaveFormatEx;
     HANDLE hNotifyEvent;
     HANDLE hStopEvent;
+    HANDLE hResetEvent;
+    BOOL ResetInProgress;
 } SOUND_DEVICE_INSTANCE, *PSOUND_DEVICE_INSTANCE;
 
 /* This lives in WAVEHDR.reserved */
@@ -411,7 +413,7 @@ MmeGetSoundDeviceCapabilities(
     IN  DWORD CapabilitiesSize);
 
 MMRESULT
-MmeOpenWaveDevice(
+MmeOpenDevice(
     IN  MMDEVICE_TYPE DeviceType,
     IN  UINT DeviceId,
     IN  LPWAVEOPENDESC OpenParameters,