ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

dmusicc.h
Go to the documentation of this file.
00001 /* DirectMusic Core API Stuff
00002  *
00003  * Copyright (C) 2003-2004 Rok Mandeljc
00004  *
00005  * This program is free software; you can redistribute it and/or
00006  * modify it under the terms of the GNU Lesser General Public
00007  * License as published by the Free Software Foundation; either
00008  * version 2.1 of the License, or (at your option) any later version.
00009  *
00010  * This program is distributed in the hope that it will be useful,
00011  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013  * Lesser General Public License for more details.
00014  *
00015  * You should have received a copy of the GNU Lesser General Public
00016  * License along with this program; if not, write to the Free Software
00017  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
00018  */
00019 
00020 #ifndef __WINE_DMUSIC_CORE_H
00021 #define __WINE_DMUSIC_CORE_H
00022 
00023 #ifndef __WINESRC__
00024 #include <windows.h>
00025 #endif /* __WINESRC__ */
00026 
00027 #define COM_NO_WINDOWS_H
00028 #include <objbase.h>
00029 #include <mmsystem.h>
00030 
00031 #include <dls1.h>
00032 #include <dmerror.h>
00033 #include <dmdls.h>
00034 #include <dsound.h>
00035 #include <dmusbuff.h>
00036 
00037 #include <pshpack8.h>
00038 
00039 #ifdef __cplusplus
00040 extern "C" {
00041 #endif
00042 
00043 
00044 /*****************************************************************************
00045  * Predeclare the interfaces
00046  */
00047 /* CLSIDs */
00048 DEFINE_GUID(CLSID_DirectMusic,                    0x636b9f10,0x0c7d,0x11d1,0x95,0xb2,0x00,0x20,0xaf,0xdc,0x74,0x21);
00049 DEFINE_GUID(CLSID_DirectMusicCollection,          0x480ff4b0,0x28b2,0x11d1,0xbe,0xf7,0x00,0xc0,0x4f,0xbf,0x8f,0xef);
00050 DEFINE_GUID(CLSID_DirectMusicSynth,               0x58c2b4d0,0x46e7,0x11d1,0x89,0xac,0x00,0xa0,0xc9,0x05,0x41,0x29);
00051     
00052 /* IIDs */
00053 DEFINE_GUID(IID_IDirectMusic,                     0x6536115a,0x7b2d,0x11d2,0xba,0x18,0x00,0x00,0xf8,0x75,0xac,0x12);
00054 DEFINE_GUID(IID_IDirectMusic2,                    0x6fc2cae1,0xbc78,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
00055 DEFINE_GUID(IID_IDirectMusic8,                    0x2d3629f7,0x813d,0x4939,0x85,0x08,0xf0,0x5c,0x6b,0x75,0xfd,0x97);
00056 DEFINE_GUID(IID_IDirectMusicBuffer,               0xd2ac2878,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00057 DEFINE_GUID(IID_IDirectMusicCollection,           0xd2ac287c,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00058 DEFINE_GUID(IID_IDirectMusicDownload,             0xd2ac287b,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00059 DEFINE_GUID(IID_IDirectMusicDownloadedInstrument, 0xd2ac287e,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00060 DEFINE_GUID(IID_IDirectMusicInstrument,           0xd2ac287d,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00061 DEFINE_GUID(IID_IDirectMusicPort,                 0x08f2d8c9,0x37c2,0x11d2,0xb9,0xf9,0x00,0x00,0xf8,0x75,0xac,0x12);
00062 DEFINE_GUID(IID_IDirectMusicPortDownload,         0xd2ac287a,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00063 DEFINE_GUID(IID_IDirectMusicThru,                 0xced153e7,0x3606,0x11d2,0xb9,0xf9,0x00,0x00,0xf8,0x75,0xac,0x12);
00064 
00065 #define IID_IDirectMusicCollection8 IID_IDirectMusicCollection
00066 #define IID_IDirectMusicDownload8 IID_IDirectMusicDownload
00067 #define IID_IDirectMusicDownloadedInstrument8 IID_IDirectMusicDownloadedInstrument
00068 #define IID_IDirectMusicInstrument8 IID_IDirectMusicInstrument
00069 #define IID_IDirectMusicPort8 IID_IDirectMusicPort
00070 #define IID_IDirectMusicPortDownload8 IID_IDirectMusicPortDownload
00071 #define IID_IDirectMusicThru8 IID_IDirectMusicThru
00072 
00073 /* GUIDs - property set */
00074 DEFINE_GUID(GUID_DMUS_PROP_GM_Hardware,           0x178f2f24,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
00075 DEFINE_GUID(GUID_DMUS_PROP_GS_Capable,            0x6496aba2,0x61b0,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
00076 DEFINE_GUID(GUID_DMUS_PROP_GS_Hardware,           0x178f2f25,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
00077 DEFINE_GUID(GUID_DMUS_PROP_DLS1,                  0x178f2f27,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
00078 DEFINE_GUID(GUID_DMUS_PROP_DLS2,                  0xf14599e5,0x4689,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
00079 DEFINE_GUID(GUID_DMUS_PROP_Effects,               0xcda8d611,0x684a,0x11d2,0x87,0x1e,0x00,0x60,0x08,0x93,0xb1,0xbd);
00080 DEFINE_GUID(GUID_DMUS_PROP_INSTRUMENT2,           0x865fd372,0x9f67,0x11d2,0x87,0x2a,0x00,0x60,0x08,0x93,0xb1,0xbd);
00081 DEFINE_GUID(GUID_DMUS_PROP_LegacyCaps,            0xcfa7cdc2,0x00a1,0x11d2,0xaa,0xd5,0x00,0x00,0xf8,0x75,0xac,0x12);
00082 DEFINE_GUID(GUID_DMUS_PROP_MemorySize,            0x178f2f28,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
00083 DEFINE_GUID(GUID_DMUS_PROP_SampleMemorySize,      0x178f2f28,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
00084 DEFINE_GUID(GUID_DMUS_PROP_SamplePlaybackRate,    0x2a91f713,0xa4bf,0x11d2,0xbb,0xdf,0x00,0x60,0x08,0x33,0xdb,0xd8);
00085 DEFINE_GUID(GUID_DMUS_PROP_SynthSink_DSOUND,      0x0aa97844,0xc877,0x11d1,0x87,0x0c,0x00,0x60,0x08,0x93,0xb1,0xbd);
00086 DEFINE_GUID(GUID_DMUS_PROP_SynthSink_WAVE,        0x0aa97845,0xc877,0x11d1,0x87,0x0c,0x00,0x60,0x08,0x93,0xb1,0xbd);
00087 DEFINE_GUID(GUID_DMUS_PROP_Volume,                0xfedfae25,0xe46e,0x11d1,0xaa,0xce,0x00,0x00,0xf8,0x75,0xac,0x12);
00088 DEFINE_GUID(GUID_DMUS_PROP_WavesReverb,           0x04cb5622,0x32e5,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
00089 DEFINE_GUID(GUID_DMUS_PROP_WriteLatency,          0x268a0fa0,0x60f2,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
00090 DEFINE_GUID(GUID_DMUS_PROP_WritePeriod,           0x268a0fa1,0x60f2,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
00091 DEFINE_GUID(GUID_DMUS_PROP_XG_Capable,            0x6496aba1,0x61b0,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
00092 DEFINE_GUID(GUID_DMUS_PROP_XG_Hardware,           0x178f2f26,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);    
00093 
00094 /* typedef definitions */
00095 typedef struct IDirectMusic *LPDIRECTMUSIC;
00096 typedef struct IDirectMusic8 *LPDIRECTMUSIC8;
00097 typedef struct IDirectMusicBuffer *LPDIRECTMUSICBUFFER;
00098 typedef struct IDirectMusicBuffer IDirectMusicBuffer8, *LPDIRECTMUSICBUFFER8;
00099 typedef struct IDirectMusicInstrument *LPDIRECTMUSICINSTRUMENT;
00100 typedef struct IDirectMusicInstrument IDirectMusicInstrument8, *LPDIRECTMUSICINSTRUMENT8;
00101 typedef struct IDirectMusicDownloadedInstrument *LPDIRECTMUSICDOWNLOADEDINSTRUMENT;
00102 typedef struct IDirectMusicDownloadedInstrument IDirectMusicDownloadedInstrument8, *LPDIRECTMUSICDOWNLOADEDINSTRUMENT8;
00103 typedef struct IDirectMusicCollection *LPDIRECTMUSICCOLLECTION;
00104 typedef struct IDirectMusicCollection IDirectMusicCollection8, *LPDIRECTMUSICCOLLECTION8;
00105 typedef struct IDirectMusicDownload *LPDIRECTMUSICDOWNLOAD;
00106 typedef struct IDirectMusicDownload IDirectMusicDownload8, *LPDIRECTMUSICDOWNLOAD8;
00107 typedef struct IDirectMusicPortDownload *LPDIRECTMUSICPORTDOWNLOAD;
00108 typedef struct IDirectMusicPortDownload IDirectMusicPortDownload8, *LPDIRECTMUSICPORTDOWNLOAD8;
00109 typedef struct IDirectMusicPort *LPDIRECTMUSICPORT;
00110 typedef struct IDirectMusicPort IDirectMusicPort8, *LPDIRECTMUSICPORT8;
00111 typedef struct IDirectMusicThru *LPDIRECTMUSICTHRU;
00112 typedef struct IDirectMusicThru IDirectMusicThru8, *LPDIRECTMUSICTHRU8;
00113 typedef struct IReferenceClock *LPREFERENCECLOCK;
00114 
00115 
00116 /*****************************************************************************
00117  * Typedef definitions
00118  */
00119 typedef ULONGLONG    SAMPLE_TIME, *LPSAMPLE_TIME;
00120 typedef ULONGLONG    SAMPLE_POSITION, *LPSAMPLE_POSITION;   
00121 
00122 
00123 /*****************************************************************************
00124  * Flags
00125  */
00126 #ifndef _DIRECTAUDIO_PRIORITIES_DEFINED_
00127 #define _DIRECTAUDIO_PRIORITIES_DEFINED_
00128 
00129 #define DAUD_CRITICAL_VOICE_PRIORITY 0xF0000000
00130 #define DAUD_HIGH_VOICE_PRIORITY     0xC0000000
00131 #define DAUD_STANDARD_VOICE_PRIORITY 0x80000000
00132 #define DAUD_LOW_VOICE_PRIORITY      0x40000000
00133 #define DAUD_PERSIST_VOICE_PRIORITY  0x10000000
00134 
00135 #define DAUD_CHAN1_VOICE_PRIORITY_OFFSET  0x0000000E
00136 #define DAUD_CHAN2_VOICE_PRIORITY_OFFSET  0x0000000D
00137 #define DAUD_CHAN3_VOICE_PRIORITY_OFFSET  0x0000000C
00138 #define DAUD_CHAN4_VOICE_PRIORITY_OFFSET  0x0000000B
00139 #define DAUD_CHAN5_VOICE_PRIORITY_OFFSET  0x0000000A
00140 #define DAUD_CHAN6_VOICE_PRIORITY_OFFSET  0x00000009
00141 #define DAUD_CHAN7_VOICE_PRIORITY_OFFSET  0x00000008
00142 #define DAUD_CHAN8_VOICE_PRIORITY_OFFSET  0x00000007
00143 #define DAUD_CHAN9_VOICE_PRIORITY_OFFSET  0x00000006
00144 #define DAUD_CHAN10_VOICE_PRIORITY_OFFSET 0x0000000F
00145 #define DAUD_CHAN11_VOICE_PRIORITY_OFFSET 0x00000005
00146 #define DAUD_CHAN12_VOICE_PRIORITY_OFFSET 0x00000004
00147 #define DAUD_CHAN13_VOICE_PRIORITY_OFFSET 0x00000003
00148 #define DAUD_CHAN14_VOICE_PRIORITY_OFFSET 0x00000002
00149 #define DAUD_CHAN15_VOICE_PRIORITY_OFFSET 0x00000001
00150 #define DAUD_CHAN16_VOICE_PRIORITY_OFFSET 0x00000000
00151 
00152 #define DAUD_CHAN1_DEF_VOICE_PRIORITY  (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN1_VOICE_PRIORITY_OFFSET)
00153 #define DAUD_CHAN2_DEF_VOICE_PRIORITY  (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN2_VOICE_PRIORITY_OFFSET)
00154 #define DAUD_CHAN3_DEF_VOICE_PRIORITY  (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN3_VOICE_PRIORITY_OFFSET)
00155 #define DAUD_CHAN4_DEF_VOICE_PRIORITY  (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN4_VOICE_PRIORITY_OFFSET)
00156 #define DAUD_CHAN5_DEF_VOICE_PRIORITY  (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN5_VOICE_PRIORITY_OFFSET)
00157 #define DAUD_CHAN6_DEF_VOICE_PRIORITY  (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN6_VOICE_PRIORITY_OFFSET)
00158 #define DAUD_CHAN7_DEF_VOICE_PRIORITY  (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN7_VOICE_PRIORITY_OFFSET)
00159 #define DAUD_CHAN8_DEF_VOICE_PRIORITY  (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN8_VOICE_PRIORITY_OFFSET)
00160 #define DAUD_CHAN9_DEF_VOICE_PRIORITY  (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN9_VOICE_PRIORITY_OFFSET)
00161 #define DAUD_CHAN10_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN10_VOICE_PRIORITY_OFFSET)
00162 #define DAUD_CHAN11_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN11_VOICE_PRIORITY_OFFSET)
00163 #define DAUD_CHAN12_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN12_VOICE_PRIORITY_OFFSET)
00164 #define DAUD_CHAN13_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN13_VOICE_PRIORITY_OFFSET)
00165 #define DAUD_CHAN14_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN14_VOICE_PRIORITY_OFFSET)
00166 #define DAUD_CHAN15_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN15_VOICE_PRIORITY_OFFSET)
00167 #define DAUD_CHAN16_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN16_VOICE_PRIORITY_OFFSET)
00168 #endif  /* _DIRECTAUDIO_PRIORITIES_DEFINED_ */
00169 
00170 #define DMUS_CLOCKF_GLOBAL 0x1
00171 
00172 #define DMUS_EFFECT_NONE   0x0
00173 #define DMUS_EFFECT_REVERB 0x1
00174 #define DMUS_EFFECT_CHORUS 0x2
00175 #define DMUS_EFFECT_DELAY  0x4
00176     
00177 #define DMUS_MAX_DESCRIPTION 0x80
00178 #define DMUS_MAX_DRIVER 0x80
00179 
00180 #define DMUS_PC_INPUTCLASS  0x0
00181 #define DMUS_PC_OUTPUTCLASS 0x1
00182 
00183 #define DMUS_PC_DLS             0x00000001
00184 #define DMUS_PC_EXTERNAL        0x00000002
00185 #define DMUS_PC_SOFTWARESYNTH   0x00000004
00186 #define DMUS_PC_MEMORYSIZEFIXED 0x00000008
00187 #define DMUS_PC_GMINHARDWARE    0x00000010
00188 #define DMUS_PC_GSINHARDWARE    0x00000020
00189 #define DMUS_PC_XGINHARDWARE    0x00000040
00190 #define DMUS_PC_DIRECTSOUND     0x00000080
00191 #define DMUS_PC_SHAREABLE       0x00000100
00192 #define DMUS_PC_DLS2            0x00000200
00193 #define DMUS_PC_AUDIOPATH       0x00000400
00194 #define DMUS_PC_WAVE            0x00000800
00195 #define DMUS_PC_SYSTEMMEMORY    0x7FFFFFFF
00196 
00197 #define DMUS_PORT_WINMM_DRIVER    0x0
00198 #define DMUS_PORT_USER_MODE_SYNTH 0x1
00199 #define DMUS_PORT_KERNEL_MODE     0x2
00200 
00201 #define DMUS_PORT_FEATURE_AUDIOPATH     0x1
00202 #define DMUS_PORT_FEATURE_STREAMING     0x2
00203 
00204 #define DMUS_PORTPARAMS_VOICES           0x01
00205 #define DMUS_PORTPARAMS_CHANNELGROUPS    0x02
00206 #define DMUS_PORTPARAMS_AUDIOCHANNELS    0x04
00207 #define DMUS_PORTPARAMS_SAMPLERATE       0x08
00208 #define DMUS_PORTPARAMS_EFFECTS          0x20
00209 #define DMUS_PORTPARAMS_SHARE            0x40
00210 #define DMUS_PORTPARAMS_FEATURES         0x80
00211 
00212 #define DMUS_VOLUME_MAX     2000
00213 #define DMUS_VOLUME_MIN   -20000
00214 
00215 #define DMUS_SYNTHSTATS_VOICES        0x01
00216 #define DMUS_SYNTHSTATS_TOTAL_CPU     0x02
00217 #define DMUS_SYNTHSTATS_CPU_PER_VOICE 0x04
00218 #define DMUS_SYNTHSTATS_LOST_NOTES    0x08
00219 #define DMUS_SYNTHSTATS_PEAK_VOLUME   0x10
00220 #define DMUS_SYNTHSTATS_FREE_MEMORY   0x20
00221 #define DMUS_SYNTHSTATS_SYSTEMMEMORY  DMUS_PC_SYSTEMMEMORY
00222 
00223 #define DSBUSID_FIRST_SPKR_LOC        0x00000000
00224 #define DSBUSID_FRONT_LEFT            0x00000000
00225 #define DSBUSID_LEFT                  0x00000000
00226 #define DSBUSID_FRONT_RIGHT           0x00000001
00227 #define DSBUSID_RIGHT                 0x00000001
00228 #define DSBUSID_FRONT_CENTER          0x00000002
00229 #define DSBUSID_LOW_FREQUENCY         0x00000003
00230 #define DSBUSID_BACK_LEFT             0x00000004
00231 #define DSBUSID_BACK_RIGHT            0x00000005
00232 #define DSBUSID_FRONT_LEFT_OF_CENTER  0x00000006 
00233 #define DSBUSID_FRONT_RIGHT_OF_CENTER 0x00000007
00234 #define DSBUSID_BACK_CENTER           0x00000008
00235 #define DSBUSID_SIDE_LEFT             0x00000009
00236 #define DSBUSID_SIDE_RIGHT            0x0000000A
00237 #define DSBUSID_TOP_CENTER            0x0000000B
00238 #define DSBUSID_TOP_FRONT_LEFT        0x0000000C
00239 #define DSBUSID_TOP_FRONT_CENTER      0x0000000D
00240 #define DSBUSID_TOP_FRONT_RIGHT       0x0000000E
00241 #define DSBUSID_TOP_BACK_LEFT         0x0000000F
00242 #define DSBUSID_TOP_BACK_CENTER       0x00000010
00243 #define DSBUSID_TOP_BACK_RIGHT        0x011
00244 #define DSBUSID_LAST_SPKR_LOC         0x00000011
00245 #define DSBUSID_IS_SPKR_LOC(id)       (((id) >= DSBUSID_FIRST_SPKR_LOC) && ((id) <= DSBUSID_LAST_SPKR_LOC))
00246 
00247 #define DSBUSID_REVERB_SEND           0x00000040
00248 #define DSBUSID_CHORUS_SEND           0x00000041
00249 
00250 #define DSBUSID_DYNAMIC_0             0x00000200 
00251 
00252 #define DSBUSID_NULL                  0xFFFFFFFF
00253 
00254 /*****************************************************************************
00255  * Enumerations
00256  */
00257 typedef enum {
00258     DMUS_CLOCK_SYSTEM = 0x0,
00259     DMUS_CLOCK_WAVE   = 0x1
00260 } DMUS_CLOCKTYPE;
00261 
00262 
00263 /*****************************************************************************
00264  * Structures
00265  */
00266 /* typedef definitions */
00267 typedef struct _DMUS_BUFFERDESC          DMUS_BUFFERDESC,          *LPDMUS_BUFFERDESC;
00268 typedef struct _DMUS_PORTCAPS            DMUS_PORTCAPS,            *LPDMUS_PORTCAPS;
00269 typedef struct _DMUS_PORTPARAMS          DMUS_PORTPARAMS7,         *LPDMUS_PORTPARAMS7;
00270 typedef struct _DMUS_PORTPARAMS8         DMUS_PORTPARAMS8,         *LPDMUS_PORTPARAMS8;
00271 typedef         DMUS_PORTPARAMS8         DMUS_PORTPARAMS,          *LPDMUS_PORTPARAMS;
00272 typedef struct _DMUS_SYNTHSTATS          DMUS_SYNTHSTATS,          *LPDMUS_SYNTHSTATS;
00273 typedef struct _DMUS_SYNTHSTATS8         DMUS_SYNTHSTATS8,         *LPDMUS_SYNTHSTATS8;
00274 typedef struct _DMUS_WAVES_REVERB_PARAMS DMUS_WAVES_REVERB_PARAMS, *LPDMUS_WAVES_REVERB_PARAMS;
00275 typedef struct _DMUS_CLOCKINFO7          DMUS_CLOCKINFO7,          *LPDMUS_CLOCKINFO7;
00276 typedef struct _DMUS_CLOCKINFO8          DMUS_CLOCKINFO8,          *LPDMUS_CLOCKINFO8;
00277 typedef         DMUS_CLOCKINFO8          DMUS_CLOCKINFO,           *LPDMUS_CLOCKINFO;
00278 
00279 
00280 /* actual structures */
00281 struct _DMUS_BUFFERDESC {
00282     DWORD dwSize;
00283     DWORD dwFlags;
00284     GUID guidBufferFormat;
00285     DWORD cbBuffer;
00286 } ;
00287 
00288 struct _DMUS_PORTCAPS {
00289     DWORD dwSize;
00290     DWORD dwFlags;
00291     GUID  guidPort;
00292     DWORD dwClass;
00293     DWORD dwType;
00294     DWORD dwMemorySize;
00295     DWORD dwMaxChannelGroups;
00296     DWORD dwMaxVoices;    
00297     DWORD dwMaxAudioChannels;
00298     DWORD dwEffectFlags;
00299     WCHAR wszDescription[DMUS_MAX_DESCRIPTION];
00300 };
00301 
00302 struct _DMUS_PORTPARAMS {
00303     DWORD dwSize;
00304     DWORD dwValidParams;
00305     DWORD dwVoices;
00306     DWORD dwChannelGroups;
00307     DWORD dwAudioChannels;
00308     DWORD dwSampleRate;
00309     DWORD dwEffectFlags;
00310     BOOL  fShare;
00311 };
00312 
00313 struct _DMUS_PORTPARAMS8 {
00314     DWORD dwSize;
00315     DWORD dwValidParams;
00316     DWORD dwVoices;
00317     DWORD dwChannelGroups;
00318     DWORD dwAudioChannels;
00319     DWORD dwSampleRate;
00320     DWORD dwEffectFlags;
00321     BOOL  fShare;
00322     DWORD dwFeatures;
00323 };
00324 
00325 struct _DMUS_SYNTHSTATS {
00326     DWORD dwSize;
00327     DWORD dwValidStats;
00328     DWORD dwVoices;
00329     DWORD dwTotalCPU;
00330     DWORD dwCPUPerVoice;
00331     DWORD dwLostNotes;
00332     DWORD dwFreeMemory;
00333     LONG  lPeakVolume;
00334 };
00335 
00336 struct _DMUS_SYNTHSTATS8 {
00337     DWORD dwSize;
00338     DWORD dwValidStats;
00339     DWORD dwVoices;
00340     DWORD dwTotalCPU;
00341     DWORD dwCPUPerVoice;
00342     DWORD dwLostNotes;
00343     DWORD dwFreeMemory;
00344     LONG  lPeakVolume;
00345     DWORD dwSynthMemUse;
00346 };
00347 
00348 struct _DMUS_WAVES_REVERB_PARAMS {
00349     float fInGain;
00350     float fReverbMix;
00351     float fReverbTime;
00352     float fHighFreqRTRatio;
00353 };
00354 
00355 struct _DMUS_CLOCKINFO7 {
00356     DWORD          dwSize;
00357     DMUS_CLOCKTYPE ctType;
00358     GUID           guidClock;
00359     WCHAR          wszDescription[DMUS_MAX_DESCRIPTION];
00360 };
00361 
00362 struct _DMUS_CLOCKINFO8 {
00363     DWORD          dwSize;
00364     DMUS_CLOCKTYPE ctType;
00365     GUID           guidClock;
00366     WCHAR          wszDescription[DMUS_MAX_DESCRIPTION];
00367     DWORD          dwFlags;           
00368 };
00369 
00370 
00371 /*****************************************************************************
00372  * IDirectMusic interface
00373  */
00374 #define INTERFACE IDirectMusic
00375 DECLARE_INTERFACE_(IDirectMusic,IUnknown)
00376 {
00377     /*** IUnknown methods ***/
00378     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00379     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00380     STDMETHOD_(ULONG,Release)(THIS) PURE;
00381     /*** IDirectMusic methods ***/
00382     STDMETHOD(EnumPort)(THIS_ DWORD dwIndex, LPDMUS_PORTCAPS pPortCaps) PURE;
00383     STDMETHOD(CreateMusicBuffer)(THIS_ LPDMUS_BUFFERDESC pBufferDesc, LPDIRECTMUSICBUFFER **ppBuffer, LPUNKNOWN pUnkOuter) PURE;
00384     STDMETHOD(CreatePort)(THIS_ REFCLSID rclsidPort, LPDMUS_PORTPARAMS pPortParams, LPDIRECTMUSICPORT *ppPort, LPUNKNOWN pUnkOuter) PURE;
00385     STDMETHOD(EnumMasterClock)(THIS_ DWORD dwIndex, LPDMUS_CLOCKINFO lpClockInfo) PURE;
00386     STDMETHOD(GetMasterClock)(THIS_ LPGUID pguidClock, struct IReferenceClock **ppReferenceClock) PURE;
00387     STDMETHOD(SetMasterClock)(THIS_ REFGUID rguidClock) PURE;
00388     STDMETHOD(Activate)(THIS_ BOOL fEnable) PURE;
00389     STDMETHOD(GetDefaultPort)(THIS_ LPGUID pguidPort) PURE;
00390     STDMETHOD(SetDirectSound)(THIS_ LPDIRECTSOUND pDirectSound, HWND hWnd) PURE;
00391 };
00392 #undef INTERFACE
00393 
00394 #if !defined(__cplusplus) || defined(CINTERFACE)
00395 /*** IUnknown methods ***/
00396 #define IDirectMusic_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
00397 #define IDirectMusic_AddRef(p)                  (p)->lpVtbl->AddRef(p)
00398 #define IDirectMusic_Release(p)                 (p)->lpVtbl->Release(p)
00399 /*** IDirectMusic methods ***/
00400 #define IDirectMusic_EnumPort(p,a,b)            (p)->lpVtbl->EnumPort(p,a,b)
00401 #define IDirectMusic_CreateMusicBuffer(p,a,b,c) (p)->lpVtbl->CreateMusicBuffer(p,a,b,c)
00402 #define IDirectMusic_CreatePort(p,a,b,c,d)      (p)->lpVtbl->CreatePort(p,a,b,c,d)
00403 #define IDirectMusic_EnumMasterClock(p,a,b)     (p)->lpVtbl->EnumMasterClock(p,a,b)
00404 #define IDirectMusic_GetMasterClock(p,a,b)      (p)->lpVtbl->GetMasterClock(p,a,b)
00405 #define IDirectMusic_SetMasterClock(p,a)        (p)->lpVtbl->SetMasterClock(p,a)
00406 #define IDirectMusic_Activate(p,a)              (p)->lpVtbl->Activate(p,a)
00407 #define IDirectMusic_GetDefaultPort(p,a)        (p)->lpVtbl->GetDefaultPort(p,a)
00408 #define IDirectMusic_SetDirectSound(p,a,b)      (p)->lpVtbl->SetDirectSound(p,a,b)
00409 #endif
00410 
00411 
00412 /*****************************************************************************
00413  * IDirectMusic8 interface
00414  */
00415 #define INTERFACE IDirectMusic8
00416 DECLARE_INTERFACE_(IDirectMusic8,IDirectMusic)
00417 {
00418     /*** IUnknown methods ***/
00419     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00420     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00421     STDMETHOD_(ULONG,Release)(THIS) PURE;
00422     /*** IDirectMusic methods ***/
00423     STDMETHOD(EnumPort)(THIS_ DWORD dwIndex, LPDMUS_PORTCAPS pPortCaps) PURE;
00424     STDMETHOD(CreateMusicBuffer)(THIS_ LPDMUS_BUFFERDESC pBufferDesc, LPDIRECTMUSICBUFFER **ppBuffer, LPUNKNOWN pUnkOuter) PURE;
00425     STDMETHOD(CreatePort)(THIS_ REFCLSID rclsidPort, LPDMUS_PORTPARAMS pPortParams, LPDIRECTMUSICPORT *ppPort, LPUNKNOWN pUnkOuter) PURE;
00426     STDMETHOD(EnumMasterClock)(THIS_ DWORD dwIndex, LPDMUS_CLOCKINFO lpClockInfo) PURE;
00427     STDMETHOD(GetMasterClock)(THIS_ LPGUID pguidClock, struct IReferenceClock **ppReferenceClock) PURE;
00428     STDMETHOD(SetMasterClock)(THIS_ REFGUID rguidClock) PURE;
00429     STDMETHOD(Activate)(THIS_ BOOL fEnable) PURE;
00430     STDMETHOD(GetDefaultPort)(THIS_ LPGUID pguidPort) PURE;
00431     STDMETHOD(SetDirectSound)(THIS_ LPDIRECTSOUND pDirectSound, HWND hWnd) PURE;
00432     /*** IDirectMusic8 methods ***/
00433     STDMETHOD(SetExternalMasterClock)(THIS_ struct IReferenceClock *pClock) PURE;
00434 };
00435 #undef INTERFACE
00436 
00437 #if !defined(__cplusplus) || defined(CINTERFACE)
00438 /*** IUnknown methods ***/
00439 #define IDirectMusic8_QueryInterface(p,a,b)       (p)->lpVtbl->QueryInterface(p,a,b)
00440 #define IDirectMusic8_AddRef(p)                   (p)->lpVtbl->AddRef(p)
00441 #define IDirectMusic8_Release(p)                  (p)->lpVtbl->Release(p)
00442 /*** IDirectMusic methods ***/
00443 #define IDirectMusic8_EnumPort(p,a,b)             (p)->lpVtbl->EnumPort(p,a,b)
00444 #define IDirectMusic8_CreateMusicBuffer(p,a,b,c)  (p)->lpVtbl->CreateMusicBuffer(p,a,b,c)
00445 #define IDirectMusic8_CreatePort(p,a,b,c,d)       (p)->lpVtbl->CreatePort(p,a,b,c,d)
00446 #define IDirectMusic8_EnumMasterClock(p,a,b)      (p)->lpVtbl->EnumMasterClock(p,a,b)
00447 #define IDirectMusic8_GetMasterClock(p,a,b)       (p)->lpVtbl->GetMasterClock(p,a,b)
00448 #define IDirectMusic8_SetMasterClock(p,a)         (p)->lpVtbl->SetMasterClock(p,a)
00449 #define IDirectMusic8_Activate(p,a)               (p)->lpVtbl->Activate(p,a)
00450 #define IDirectMusic8_GetDefaultPort(p,a)         (p)->lpVtbl->GetDefaultPort(p,a)
00451 #define IDirectMusic8_SetDirectSound(p,a,b)       (p)->lpVtbl->SetDirectSound(p,a,b)
00452 /*** IDirectMusic8 methods ***/
00453 #define IDirectMusic8_SetExternalMasterClock(p,a) (p)->lpVtbl->SetExternalMasterClock(p,a)
00454 #endif
00455 
00456 
00457 /*****************************************************************************
00458  * IDirectMusicBuffer interface
00459  */
00460 #define INTERFACE IDirectMusicBuffer
00461 DECLARE_INTERFACE_(IDirectMusicBuffer,IUnknown)
00462 {
00463     /*** IUnknown methods ***/
00464     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00465     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00466     STDMETHOD_(ULONG,Release)(THIS) PURE;
00467     /*** IDirectMusicBuffer methods ***/
00468     STDMETHOD(Flush)(THIS) PURE;
00469     STDMETHOD(TotalTime)(THIS_ LPREFERENCE_TIME prtTime) PURE;
00470     STDMETHOD(PackStructured)(THIS_ REFERENCE_TIME rt, DWORD dwChannelGroup, DWORD dwChannelMessage) PURE;
00471     STDMETHOD(PackUnstructured)(THIS_ REFERENCE_TIME rt, DWORD dwChannelGroup, DWORD cb, LPBYTE lpb) PURE;
00472     STDMETHOD(ResetReadPtr)(THIS) PURE;
00473     STDMETHOD(GetNextEvent)(THIS_ LPREFERENCE_TIME prt, LPDWORD pdwChannelGroup, LPDWORD pdwLength, LPBYTE *ppData) PURE;
00474     STDMETHOD(GetRawBufferPtr)(THIS_ LPBYTE *ppData) PURE;
00475     STDMETHOD(GetStartTime)(THIS_ LPREFERENCE_TIME prt) PURE;
00476     STDMETHOD(GetUsedBytes)(THIS_ LPDWORD pcb) PURE;
00477     STDMETHOD(GetMaxBytes)(THIS_ LPDWORD pcb) PURE;
00478     STDMETHOD(GetBufferFormat)(THIS_ LPGUID pGuidFormat) PURE;
00479     STDMETHOD(SetStartTime)(THIS_ REFERENCE_TIME rt) PURE;
00480     STDMETHOD(SetUsedBytes)(THIS_ DWORD cb) PURE;
00481 };
00482 #undef INTERFACE
00483 
00484 #if !defined(__cplusplus) || defined(CINTERFACE)
00485 /*** IUnknown methods ***/
00486 #define IDirectMusicBuffer_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
00487 #define IDirectMusicBuffer_AddRef(p)                        (p)->lpVtbl->AddRef(p)
00488 #define IDirectMusicBuffer_Release(p)                       (p)->lpVtbl->Release(p)
00489 /*** IDirectMusicBuffer methods ***/
00490 #define IDirectMusicBuffer_Flush(p)                         (p)->lpVtbl->Flush(p)
00491 #define IDirectMusicBuffer_TotalTime(p,a)                   (p)->lpVtbl->TotalTime(p,a)
00492 #define IDirectMusicBuffer_PackStructured(p,a,b,c)          (p)->lpVtbl->PackStructured(p,a,b,c)
00493 #define IDirectMusicBuffer_PackUnstructured(p,a,b,c,d)      (p)->lpVtbl->PackUnstructured(p,a,b,c,d)
00494 #define IDirectMusicBuffer_ResetReadPtr(p)                  (p)->lpVtbl->ResetReadPtr(p)
00495 #define IDirectMusicBuffer_GetNextEvent(p,a,b,c,d)          (p)->lpVtbl->GetNextEvent(p,a,b,c,d)
00496 #define IDirectMusicBuffer_GetRawBufferPtr(p,a)             (p)->lpVtbl->GetRawBufferPtr(p,a)
00497 #define IDirectMusicBuffer_GetStartTime(p,a)                (p)->lpVtbl->GetStartTime(p,a)
00498 #define IDirectMusicBuffer_GetUsedBytes(p,a)                (p)->lpVtbl->GetUsedBytes(p,a)
00499 #define IDirectMusicBuffer_GetMaxBytes(p,a)                 (p)->lpVtbl->GetMaxBytes(p,a)
00500 #define IDirectMusicBuffer_GetBufferFormat(p,a)             (p)->lpVtbl->GetBufferFormat(p,a)
00501 #define IDirectMusicBuffer_SetStartTime(p,a)                (p)->lpVtbl->SetStartTime(p,a)
00502 #define IDirectMusicBuffer_SetUsedBytes(p,a)                (p)->lpVtbl->SetUsedBytes(p,a)
00503 #endif
00504 
00505 
00506 /*****************************************************************************
00507  * IDirectMusicInstrument interface
00508  */
00509 #define INTERFACE IDirectMusicInstrument
00510 DECLARE_INTERFACE_(IDirectMusicInstrument,IUnknown)
00511 {
00512     /*** IUnknown methods ***/
00513     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00514     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00515     STDMETHOD_(ULONG,Release)(THIS) PURE;
00516     /*** IDirectMusicInstrument methods ***/
00517     STDMETHOD(GetPatch)(THIS_ DWORD *pdwPatch) PURE;
00518     STDMETHOD(SetPatch)(THIS_ DWORD dwPatch) PURE;
00519 };
00520 #undef INTERFACE
00521 
00522 #if !defined(__cplusplus) || defined(CINTERFACE)
00523 /*** IUnknown methods ***/
00524 #define IDirectMusicInstrument_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
00525 #define IDirectMusicInstrument_AddRef(p)             (p)->lpVtbl->AddRef(p)
00526 #define IDirectMusicInstrument_Release(p)            (p)->lpVtbl->Release(p)
00527 /*** IDirectMusicInstrument methods ***/
00528 #define IDirectMusicInstrument_GetPatch(p,a)         (p)->lpVtbl->GetPatch(p,a)
00529 #define IDirectMusicInstrument_SetPatch(p,a)         (p)->lpVtbl->SetPatch(p,a)
00530 #endif
00531 
00532 
00533 /*****************************************************************************
00534  * IDirectMusicDownloadedInstrument interface
00535  */
00536 #define INTERFACE IDirectMusicDownloadedInstrument
00537 DECLARE_INTERFACE_(IDirectMusicDownloadedInstrument,IUnknown)
00538 {
00539     /*** IUnknown methods ***/
00540     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00541     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00542     STDMETHOD_(ULONG,Release)(THIS) PURE;
00543     /* no IDirectMusicDownloadedInstrument methods at this time */
00544 };
00545 #undef INTERFACE
00546 
00547 #if !defined(__cplusplus) || defined(CINTERFACE)
00548 /*** IUnknown methods ***/
00549 #define IDirectMusicDownloadedInstrument_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
00550 #define IDirectMusicDownloadedInstrument_AddRef(p)             (p)->lpVtbl->AddRef(p)
00551 #define IDirectMusicDownloadedInstrument_Release(p)            (p)->lpVtbl->Release(p)
00552 /*** IDirectMusicDownloadedInstrument methods ***/
00553 /* none at this time */
00554 #endif
00555 
00556 
00557 /*****************************************************************************
00558  * IDirectMusicCollection interface
00559  */
00560 #define INTERFACE IDirectMusicCollection
00561 DECLARE_INTERFACE_(IDirectMusicCollection,IUnknown)
00562 {
00563     /*** IUnknown methods ***/
00564     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00565     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00566     STDMETHOD_(ULONG,Release)(THIS) PURE;
00567     /*** IDirectMusicCollection methods ***/
00568     STDMETHOD(GetInstrument)(THIS_ DWORD dwPatch, IDirectMusicInstrument **ppInstrument) PURE;
00569     STDMETHOD(EnumInstrument)(THIS_ DWORD dwIndex, DWORD *pdwPatch, LPWSTR pwszName, DWORD dwNameLen) PURE;
00570 };
00571 #undef INTERFACE
00572 
00573 #if !defined(__cplusplus) || defined(CINTERFACE)
00574 /*** IUnknown methods ***/
00575 #define IDirectMusicCollection_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
00576 #define IDirectMusicCollection_AddRef(p)                        (p)->lpVtbl->AddRef(p)
00577 #define IDirectMusicCollection_Release(p)                       (p)->lpVtbl->Release(p)
00578 /*** IDirectMusicCollection methods ***/
00579 #define IDirectMusicCollection_GetInstrument(p,a,b)             (p)->lpVtbl->GetInstrument(p,a,b)
00580 #define IDirectMusicCollection_EnumInstrument(p,a,b,c,d)        (p)->lpVtbl->EnumInstrument(p,a,b,c,d)
00581 #endif
00582 
00583 
00584 /*****************************************************************************
00585  * IDirectMusicDownload interface
00586  */
00587 #define INTERFACE IDirectMusicDownload
00588 DECLARE_INTERFACE_(IDirectMusicDownload,IUnknown)
00589 {
00590     /*** IUnknown methods ***/
00591     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00592     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00593     STDMETHOD_(ULONG,Release)(THIS) PURE;
00594     /*** IDirectMusicDownload methods ***/
00595     STDMETHOD(GetBuffer)(THIS_ void **ppvBuffer, DWORD *pdwSize) PURE;
00596 };
00597 #undef INTERFACE
00598 
00599 #if !defined(__cplusplus) || defined(CINTERFACE)
00600 /*** IUnknown methods ***/
00601 #define IDirectMusicDownload_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
00602 #define IDirectMusicDownload_AddRef(p)                      (p)->lpVtbl->AddRef(p)
00603 #define IDirectMusicDownload_Release(p)                     (p)->lpVtbl->Release(p)
00604 /*** IDirectMusicDownload methods ***/
00605 #define IDirectMusicDownload_GetBuffer(p,a,b)               (p)->lpVtbl->GetBuffer(p,a,b)
00606 #endif
00607 
00608 
00609 /*****************************************************************************
00610  * IDirectMusicPortDownload interface
00611  */
00612 #define INTERFACE IDirectMusicPortDownload
00613 DECLARE_INTERFACE_(IDirectMusicPortDownload,IUnknown)
00614 {
00615     /*** IUnknown methods ***/
00616     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00617     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00618     STDMETHOD_(ULONG,Release)(THIS) PURE;
00619     /*** IDirectMusicPortDownload methods ***/
00620     STDMETHOD(GetBuffer)(THIS_ DWORD dwDLId, IDirectMusicDownload **ppIDMDownload) PURE;
00621     STDMETHOD(AllocateBuffer)(THIS_ DWORD dwSize, IDirectMusicDownload **ppIDMDownload) PURE;
00622     STDMETHOD(GetDLId)(THIS_ DWORD *pdwStartDLId, DWORD dwCount) PURE;
00623     STDMETHOD(GetAppend)(THIS_ DWORD *pdwAppend) PURE;
00624     STDMETHOD(Download)(THIS_ IDirectMusicDownload *pIDMDownload) PURE;
00625     STDMETHOD(Unload)(THIS_ IDirectMusicDownload *pIDMDownload) PURE;
00626 };
00627 #undef INTERFACE
00628 
00629 #if !defined(__cplusplus) || defined(CINTERFACE)
00630 /*** IUnknown methods ***/
00631 #define IDirectMusicPortDownload_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
00632 #define IDirectMusicPortDownload_AddRef(p)             (p)->lpVtbl->AddRef(p)
00633 #define IDirectMusicPortDownload_Release(p)            (p)->lpVtbl->Release(p)
00634 /*** IDirectMusicPortDownload methods ***/
00635 #define IDirectMusicPortDownload_GetBuffer(p,a,b)      (p)->lpVtbl->GetBuffer(p,a,b)
00636 #define IDirectMusicPortDownload_AllocateBuffer(p,a,b) (p)->lpVtbl->AllocateBuffer(p,a,b)
00637 #define IDirectMusicPortDownload_GetDLId(p,a,b)        (p)->lpVtbl->GetDLId(p,a,b)
00638 #define IDirectMusicPortDownload_GetAppend(p,a)        (p)->lpVtbl->GetAppend(p,a)
00639 #define IDirectMusicPortDownload_Download(p,a)         (p)->lpVtbl->Download(p,a)
00640 #define IDirectMusicPortDownload_Unload(p,a)           (p)->lpVtbl->GetBuffer(p,a)
00641 #endif
00642 
00643 
00644 /*****************************************************************************
00645  * IDirectMusicPort interface
00646  */
00647 #define INTERFACE IDirectMusicPort
00648 DECLARE_INTERFACE_(IDirectMusicPort,IUnknown)
00649 {
00650     /*** IUnknown methods ***/
00651     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00652     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00653     STDMETHOD_(ULONG,Release)(THIS) PURE;
00654     /*** IDirectMusicPort methods ***/
00655     STDMETHOD(PlayBuffer)(THIS_ LPDIRECTMUSICBUFFER pBuffer) PURE;
00656     STDMETHOD(SetReadNotificationHandle)(THIS_ HANDLE hEvent) PURE;
00657     STDMETHOD(Read)(THIS_ LPDIRECTMUSICBUFFER pBuffer) PURE;
00658     STDMETHOD(DownloadInstrument)(THIS_ IDirectMusicInstrument *pInstrument, IDirectMusicDownloadedInstrument **ppDownloadedInstrument, DMUS_NOTERANGE *pNoteRanges, DWORD dwNumNoteRanges) PURE;
00659     STDMETHOD(UnloadInstrument)(THIS_ IDirectMusicDownloadedInstrument *pDownloadedInstrument) PURE;
00660     STDMETHOD(GetLatencyClock)(THIS_ struct IReferenceClock **ppClock) PURE;
00661     STDMETHOD(GetRunningStats)(THIS_ LPDMUS_SYNTHSTATS pStats) PURE;
00662     STDMETHOD(Compact)(THIS) PURE;
00663     STDMETHOD(GetCaps)(THIS_ LPDMUS_PORTCAPS pPortCaps) PURE;
00664     STDMETHOD(DeviceIoControl)(THIS_ DWORD dwIoControlCode, LPVOID lpInBuffer, DWORD nInBufferSize, LPVOID lpOutBuffer, DWORD nOutBufferSize, LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped) PURE;
00665     STDMETHOD(SetNumChannelGroups)(THIS_ DWORD dwChannelGroups) PURE;
00666     STDMETHOD(GetNumChannelGroups)(THIS_ LPDWORD pdwChannelGroups) PURE;
00667     STDMETHOD(Activate)(THIS_ BOOL fActive) PURE;
00668     STDMETHOD(SetChannelPriority)(THIS_ DWORD dwChannelGroup, DWORD dwChannel, DWORD dwPriority) PURE;
00669     STDMETHOD(GetChannelPriority)(THIS_ DWORD dwChannelGroup, DWORD dwChannel, LPDWORD pdwPriority) PURE;
00670     STDMETHOD(SetDirectSound)(THIS_ LPDIRECTSOUND pDirectSound, LPDIRECTSOUNDBUFFER pDirectSoundBuffer) PURE;
00671     STDMETHOD(GetFormat)(THIS_ LPWAVEFORMATEX pWaveFormatEx, LPDWORD pdwWaveFormatExSize, LPDWORD pdwBufferSize) PURE;
00672 };
00673 #undef INTERFACE
00674 
00675 #if !defined(__cplusplus) || defined(CINTERFACE)
00676 /*** IUnknown methods ***/
00677 #define IDirectMusicPort_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
00678 #define IDirectMusicPort_AddRef(p)                        (p)->lpVtbl->AddRef(p)
00679 #define IDirectMusicPort_Release(p)                       (p)->lpVtbl->Release(p)
00680 /*** IDirectMusicPort methods ***/
00681 #define IDirectMusicPort_PlayBuffer(p,a)                  (p)->lpVtbl->PlayBuffer(p,a)
00682 #define IDirectMusicPort_SetReadNotificationHandle(p,a)   (p)->lpVtbl->SetReadNotificationHandle(p,a)
00683 #define IDirectMusicPort_Read(p,a)                        (p)->lpVtbl->Read(p,a)
00684 #define IDirectMusicPort_DownloadInstrument(p,a,b,c,d)    (p)->lpVtbl->DownloadInstrument(p,a,b,c,d)
00685 #define IDirectMusicPort_UnloadInstrument(p,a)            (p)->lpVtbl->UnloadInstrument(p,a)
00686 #define IDirectMusicPort_GetLatencyClock(p,a)             (p)->lpVtbl->GetLatencyClock(p,a)
00687 #define IDirectMusicPort_GetRunningStats(p,a)             (p)->lpVtbl->GetRunningStats(p,a)
00688 #define IDirectMusicPort_Compact(p)                       (p)->lpVtbl->Compact(p)
00689 #define IDirectMusicPort_GetCaps(p,a)                     (p)->lpVtbl->GetCaps(p,a)
00690 #define IDirectMusicPort_DeviceIoControl(p,a,b,c,d,e,f,g) (p)->lpVtbl->DeviceIoControl(p,a,b,c,d,e,f,g)
00691 #define IDirectMusicPort_SetNumChannelGroups(p,a)         (p)->lpVtbl->SetNumChannelGroups(p,a)
00692 #define IDirectMusicPort_GetNumChannelGroups(p,a)         (p)->lpVtbl->GetNumChannelGroups(p,a)
00693 #define IDirectMusicPort_Activate(p,a)                    (p)->lpVtbl->Activate(p,a)
00694 #define IDirectMusicPort_SetChannelPriority(p,a,b,c)      (p)->lpVtbl->SetChannelPriority(p,a,b,c)
00695 #define IDirectMusicPort_GetChannelPriority(p,a,b,c)      (p)->lpVtbl->GetChannelPriority(p,a,b,c)
00696 #define IDirectMusicPort_SetDirectSound(p,a,b)            (p)->lpVtbl->SetDirectSound(p,a,b)
00697 #define IDirectMusicPort_GetFormat(p,a,b,c)               (p)->lpVtbl->GetFormat(p,a,b,c)
00698 #endif
00699 
00700 
00701 /*****************************************************************************
00702  * IDirectMusicThru interface
00703  */
00704 #define INTERFACE IDirectMusicThru
00705 DECLARE_INTERFACE_(IDirectMusicThru,IUnknown)
00706 {
00707     /*** IUnknown methods ***/
00708     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00709     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00710     STDMETHOD_(ULONG,Release)(THIS) PURE;
00711     /*** IDirectMusicThru methods ***/
00712     STDMETHOD(ThruChannel)(THIS_ DWORD dwSourceChannelGroup, DWORD dwSourceChannel, DWORD dwDestinationChannelGroup, DWORD dwDestinationChannel, LPDIRECTMUSICPORT pDestinationPort) PURE;
00713 };
00714 #undef INTERFACE
00715 
00716 #if !defined(__cplusplus) || defined(CINTERFACE)
00717 /*** IUnknown methods ***/
00718 #define IDirectMusicThru_QueryInterface(p,a,b)                  (p)->lpVtbl->QueryInterface(p,a,b)
00719 #define IDirectMusicThru_AddRef(p)                              (p)->lpVtbl->AddRef(p)
00720 #define IDirectMusicThru_Release(p)                             (p)->lpVtbl->Release(p)
00721 /*** IDirectMusicThru methods ***/
00722 #define IDirectMusicThru_ThruChannel(p,a,b,c,d,e)               (p)->lpVtbl->ThruChannel(p,a,b,c,d,e)
00723 #endif
00724 
00725 
00726 #ifndef __IReferenceClock_INTERFACE_DEFINED__
00727 #define __IReferenceClock_INTERFACE_DEFINED__
00728 DEFINE_GUID(IID_IReferenceClock,0x56a86897,0x0ad4,0x11ce,0xb0,0x3a,0x00,0x20,0xaf,0x0b,0xa7,0x70);
00729 
00730 /*****************************************************************************
00731  * IReferenceClock interface
00732  */
00733 #define INTERFACE IReferenceClock
00734 DECLARE_INTERFACE_(IReferenceClock,IUnknown)
00735 {
00736     /*** IUnknown methods ***/
00737     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00738     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00739     STDMETHOD_(ULONG,Release)(THIS) PURE;
00740     /*** IReferenceClock methods ***/
00741     STDMETHOD(GetTime)(THIS_ REFERENCE_TIME *pTime) PURE;
00742     STDMETHOD(AdviseTime)(THIS_ REFERENCE_TIME baseTime, REFERENCE_TIME streamTime, HANDLE hEvent, DWORD *pdwAdviseCookie) PURE;
00743     STDMETHOD(AdvisePeriodic)(THIS_ REFERENCE_TIME startTime, REFERENCE_TIME periodTime, HANDLE hSemaphore, DWORD *pdwAdviseCookie) PURE;
00744     STDMETHOD(Unadvise)(THIS_ DWORD dwAdviseCookie) PURE;
00745 };
00746 #undef INTERFACE
00747 
00748 #if !defined(__cplusplus) || defined(CINTERFACE)
00749 /*** IUnknown methods ***/
00750 #define IReferenceClock_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
00751 #define IReferenceClock_AddRef(p)                               (p)->lpVtbl->AddRef(p)
00752 #define IReferenceClock_Release(p)                              (p)->lpVtbl->Release(p)
00753 /*** IReferenceClock methods ***/
00754 #define IReferenceClock_GetTime(p,a)                            (p)->lpVtbl->GetTime(p,a)
00755 #define IReferenceClock_AdviseTime(p,a,b,c,d)                   (p)->lpVtbl->AdviseTime(p,a,b,c,d)
00756 #define IReferenceClock_AdvisePeriodic(p,a,b,c,d)               (p)->lpVtbl->AdvisePeriodic(p,a,b,c,d)
00757 #define IReferenceClock_Unadvise(p,a)                           (p)->lpVtbl->Unadvise(p,a)
00758 #endif
00759 
00760 #endif /* __IReferenceClock_INTERFACE_DEFINED__ */
00761 
00762 #ifdef __cplusplus
00763 }
00764 #endif
00765 
00766 #include <poppack.h>
00767 
00768 #endif /* __WINE_DMUSIC_CORE_H */

Generated on Sun May 27 2012 04:30:39 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.