1 /* DirectMusicInteractiveEngine Private Include
3 * Copyright (C) 2003-2004 Rok Mandeljc
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU Library General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20 #ifndef __WINE_DMIME_PRIVATE_H
21 #define __WINE_DMIME_PRIVATE_H
35 #include "wine/debug.h"
36 #include "wine/list.h"
37 #include "wine/unicode.h"
45 /*****************************************************************************
48 typedef struct IDirectMusicPerformance8Impl IDirectMusicPerformance8Impl;
49 typedef struct IDirectMusicSegment8Impl IDirectMusicSegment8Impl;
50 typedef struct IDirectMusicSegmentState8Impl IDirectMusicSegmentState8Impl;
51 typedef struct IDirectMusicGraphImpl IDirectMusicGraphImpl;
52 typedef struct IDirectMusicAudioPathImpl IDirectMusicAudioPathImpl;
53 typedef struct IDirectMusicTool8Impl IDirectMusicTool8Impl;
54 typedef struct IDirectMusicPatternTrackImpl IDirectMusicPatternTrackImpl;
56 typedef struct IDirectMusicLyricsTrack IDirectMusicLyricsTrack;
57 typedef struct IDirectMusicMarkerTrack IDirectMusicMarkerTrack;
58 typedef struct IDirectMusicParamControlTrack IDirectMusicParamControlTrack;
59 typedef struct IDirectMusicSegTriggerTrack IDirectMusicSegTriggerTrack;
60 typedef struct IDirectMusicSeqTrack IDirectMusicSeqTrack;
61 typedef struct IDirectMusicSysExTrack IDirectMusicSysExTrack;
62 typedef struct IDirectMusicTempoTrack IDirectMusicTempoTrack;
63 typedef struct IDirectMusicTimeSigTrack IDirectMusicTimeSigTrack;
64 typedef struct IDirectMusicWaveTrack IDirectMusicWaveTrack;
66 /*****************************************************************************
69 extern HRESULT WINAPI DMUSIC_CreateDirectMusicPerformanceImpl (LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter);
70 extern HRESULT WINAPI DMUSIC_CreateDirectMusicSegmentImpl (LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter);
71 extern HRESULT WINAPI DMUSIC_CreateDirectMusicSegmentStateImpl (LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter);
72 extern HRESULT WINAPI DMUSIC_CreateDirectMusicGraphImpl (LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter);
73 extern HRESULT WINAPI DMUSIC_CreateDirectMusicAudioPathImpl (LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter);
74 extern HRESULT WINAPI DMUSIC_CreateDirectMusicToolImpl (LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter);
75 extern HRESULT WINAPI DMUSIC_CreateDirectMusicPatternTrackImpl (LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter);
77 extern HRESULT WINAPI DMUSIC_CreateDirectMusicLyricsTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter);
78 extern HRESULT WINAPI DMUSIC_CreateDirectMusicMarkerTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter);
79 extern HRESULT WINAPI DMUSIC_CreateDirectMusicParamControlTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter);
80 extern HRESULT WINAPI DMUSIC_CreateDirectMusicSegTriggerTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter);
81 extern HRESULT WINAPI DMUSIC_CreateDirectMusicSeqTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter);
82 extern HRESULT WINAPI DMUSIC_CreateDirectMusicSysExTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter);
83 extern HRESULT WINAPI DMUSIC_CreateDirectMusicTempoTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter);
84 extern HRESULT WINAPI DMUSIC_CreateDirectMusicTimeSigTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter);
85 extern HRESULT WINAPI DMUSIC_CreateDirectMusicWaveTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter);
88 /*****************************************************************************
89 * Auxiliary definitions
91 typedef struct _DMUS_PRIVATE_SEGMENT_TRACK {
92 struct list entry; /* for listing elements */
94 IDirectMusicTrack* pTrack;
95 } DMUS_PRIVATE_SEGMENT_TRACK, *LPDMUS_PRIVATE_SEGMENT_TRACK;
97 typedef struct _DMUS_PRIVATE_TEMPO_ITEM {
98 struct list entry; /* for listing elements */
99 DMUS_IO_TEMPO_ITEM item;
100 } DMUS_PRIVATE_TEMPO_ITEM, *LPDMUS_PRIVATE_TEMPO_ITEM;
102 typedef struct _DMUS_PRIVATE_SEGMENT_ITEM {
103 struct list entry; /* for listing elements */
104 DMUS_IO_SEGMENT_ITEM_HEADER header;
105 IDirectMusicObject* pObject;
106 WCHAR wszName[DMUS_MAX_NAME];
107 } DMUS_PRIVATE_SEGMENT_ITEM, *LPDMUS_PRIVATE_SEGMENT_ITEM;
109 typedef struct _DMUS_PRIVATE_GRAPH_TOOL {
110 struct list entry; /* for listing elements */
112 IDirectMusicTool* pTool;
113 } DMUS_PRIVATE_GRAPH_TOOL, *LPDMUS_PRIVATE_GRAPH_TOOL;
115 typedef struct _DMUS_PRIVATE_TEMPO_PLAY_STATE {
117 } DMUS_PRIVATE_TEMPO_PLAY_STATE, *LPDMUS_PRIVATE_TEMPO_PLAY_STATE;
119 /* some sort of aux. performance channel: as far as i can understand, these are
120 used to represent a particular midi channel in particular group at particular
121 group; so all we need to do is to fill it with parent port, group and midi
123 typedef struct DMUSIC_PRIVATE_PCHANNEL_ {
124 DWORD channel; /* map to this channel... */
125 DWORD group; /* ... in this group ... */
126 IDirectMusicPort *port; /* ... at this port */
127 } DMUSIC_PRIVATE_PCHANNEL, *LPDMUSIC_PRIVATE_PCHANNEL;
129 /*****************************************************************************
130 * IDirectMusicPerformance8Impl implementation structure
132 struct IDirectMusicPerformance8Impl {
133 /* IUnknown fields */
134 const IDirectMusicPerformance8Vtbl *lpVtbl;
137 /* IDirectMusicPerformanceImpl fields */
138 IDirectMusic8* pDirectMusic;
139 IDirectSound* pDirectSound;
140 IDirectMusicGraph* pToolGraph;
141 DMUS_AUDIOPARAMS pParams;
143 /* global parameters */
145 char cMasterGrooveLevel;
149 /* performance channels */
150 DMUSIC_PRIVATE_PCHANNEL PChannel[1];
152 /* IDirectMusicPerformance8Impl fields */
153 IDirectMusicAudioPath* pDefaultPath;
154 HANDLE hNotification;
155 REFERENCE_TIME rtMinimum;
157 REFERENCE_TIME rtLatencyTime;
158 DWORD dwBumperLength;
160 /** Message Processing */
163 REFERENCE_TIME procThreadStartTime;
164 BOOL procThreadTicStarted;
165 CRITICAL_SECTION safe;
166 struct DMUS_PMSGItem* head;
167 struct DMUS_PMSGItem* imm_head;
171 extern HRESULT WINAPI IDirectMusicPerformance8Impl_QueryInterface (LPDIRECTMUSICPERFORMANCE8 iface, REFIID riid, LPVOID *ppobj);
172 extern ULONG WINAPI IDirectMusicPerformance8Impl_AddRef (LPDIRECTMUSICPERFORMANCE8 iface);
173 /* IDirectMusicPerformance: */
174 extern HRESULT WINAPI IDirectMusicPerformance8Impl_GetTime (LPDIRECTMUSICPERFORMANCE8 iface, REFERENCE_TIME* prtNow, MUSIC_TIME* pmtNow);
175 extern HRESULT WINAPI IDirectMusicPerformance8Impl_GetGraph (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicGraph** ppGraph);
176 extern HRESULT WINAPI IDirectMusicPerformance8Impl_SetGraph (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicGraph* pGraph);
177 /* IDirectMusicPerformance8: */
178 extern HRESULT WINAPI IDirectMusicPerformance8Impl_CreateStandardAudioPath (LPDIRECTMUSICPERFORMANCE8 iface, DWORD dwType, DWORD dwPChannelCount, BOOL fActivate, IDirectMusicAudioPath** ppNewPath);
180 /*****************************************************************************
181 * IDirectMusicSegment8Impl implementation structure
183 struct IDirectMusicSegment8Impl {
184 /* IUnknown fields */
185 const IUnknownVtbl *UnknownVtbl;
186 const IDirectMusicSegment8Vtbl *SegmentVtbl;
187 const IDirectMusicObjectVtbl *ObjectVtbl;
188 const IPersistStreamVtbl *PersistStreamVtbl;
191 /* IDirectMusicSegment8Impl fields */
192 LPDMUS_OBJECTDESC pDesc;
193 DMUS_IO_SEGMENT_HEADER header;
194 IDirectMusicGraph* pGraph;
199 extern HRESULT WINAPI IDirectMusicSegment8Impl_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj);
200 extern ULONG WINAPI IDirectMusicSegment8Impl_IUnknown_AddRef (LPUNKNOWN iface);
201 /* IDirectMusicSegment(8): */
202 extern HRESULT WINAPI IDirectMusicSegment8Impl_IDirectMusicSegment8_QueryInterface (LPDIRECTMUSICSEGMENT8 iface, REFIID riid, LPVOID *ppobj);
203 extern ULONG WINAPI IDirectMusicSegment8Impl_IDirectMusicSegment8_AddRef (LPDIRECTMUSICSEGMENT8 iface);
204 /* IDirectMusicObject: */
205 extern HRESULT WINAPI IDirectMusicSegment8Impl_IDirectMusicObject_QueryInterface (LPDIRECTMUSICOBJECT iface, REFIID riid, LPVOID *ppobj);
206 extern ULONG WINAPI IDirectMusicSegment8Impl_IDirectMusicObject_AddRef (LPDIRECTMUSICOBJECT iface);
207 /* IPersistStream: */
208 extern HRESULT WINAPI IDirectMusicSegment8Impl_IPersistStream_QueryInterface (LPPERSISTSTREAM iface, REFIID riid, void** ppvObject);
209 extern ULONG WINAPI IDirectMusicSegment8Impl_IPersistStream_AddRef (LPPERSISTSTREAM iface);
211 /*****************************************************************************
212 * IDirectMusicSegmentState8Impl implementation structure
214 struct IDirectMusicSegmentState8Impl {
215 /* IUnknown fields */
216 const IDirectMusicSegmentState8Vtbl *lpVtbl;
219 /* IDirectMusicSegmentState8Impl fields */
223 extern HRESULT WINAPI IDirectMusicSegmentState8Impl_QueryInterface (LPDIRECTMUSICSEGMENTSTATE8 iface, REFIID riid, LPVOID *ppobj);
224 extern ULONG WINAPI IDirectMusicSegmentState8Impl_AddRef (LPDIRECTMUSICSEGMENTSTATE8 iface);
225 /* IDirectMusicSegmentState(8): */
226 extern HRESULT WINAPI IDirectMusicSegmentState8Impl_GetObjectInPath (LPDIRECTMUSICSEGMENTSTATE8 iface, DWORD dwPChannel, DWORD dwStage, DWORD dwBuffer, REFGUID guidObject, DWORD dwIndex, REFGUID iidInterface, void** ppObject);
228 /*****************************************************************************
229 * IDirectMusicGraphImpl implementation structure
231 struct IDirectMusicGraphImpl {
232 /* IUnknown fields */
233 const IUnknownVtbl *UnknownVtbl;
234 const IDirectMusicGraphVtbl *GraphVtbl;
235 const IDirectMusicObjectVtbl *ObjectVtbl;
236 const IPersistStreamVtbl *PersistStreamVtbl;
239 /* IDirectMusicGraphImpl fields */
240 LPDMUS_OBJECTDESC pDesc;
246 extern HRESULT WINAPI IDirectMusicGraphImpl_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj);
247 extern ULONG WINAPI IDirectMusicGraphImpl_IUnknown_AddRef (LPUNKNOWN iface);
248 /* IDirectMusicGraph: */
249 extern HRESULT WINAPI IDirectMusicGraphImpl_IDirectMusicGraph_QueryInterface (LPDIRECTMUSICGRAPH iface, REFIID riid, LPVOID *ppobj);
250 extern ULONG WINAPI IDirectMusicGraphImpl_IDirectMusicGraph_AddRef (LPDIRECTMUSICGRAPH iface);
251 /* IDirectMusicObject: */
252 extern HRESULT WINAPI IDirectMusicGraphImpl_IDirectMusicObject_QueryInterface (LPDIRECTMUSICOBJECT iface, REFIID riid, LPVOID *ppobj);
253 extern ULONG WINAPI IDirectMusicGraphImpl_IDirectMusicObject_AddRef (LPDIRECTMUSICOBJECT iface);
254 /* IPersistStream: */
255 extern HRESULT WINAPI IDirectMusicGraphImpl_IPersistStream_QueryInterface (LPPERSISTSTREAM iface, REFIID riid, void** ppvObject);
256 extern ULONG WINAPI IDirectMusicGraphImpl_IPersistStream_AddRef (LPPERSISTSTREAM iface);
258 /*****************************************************************************
259 * IDirectMusicAudioPathImpl implementation structure
261 struct IDirectMusicAudioPathImpl {
262 /* IUnknown fields */
263 const IUnknownVtbl *UnknownVtbl;
264 const IDirectMusicAudioPathVtbl *AudioPathVtbl;
265 const IDirectMusicObjectVtbl *ObjectVtbl;
266 const IPersistStreamVtbl *PersistStreamVtbl;
269 /* IDirectMusicAudioPathImpl fields */
270 LPDMUS_OBJECTDESC pDesc;
272 IDirectMusicPerformance8* pPerf;
273 IDirectMusicGraph* pToolGraph;
274 IDirectSoundBuffer* pDSBuffer;
275 IDirectSoundBuffer* pPrimary;
281 extern HRESULT WINAPI IDirectMusicAudioPathImpl_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj);
282 extern ULONG WINAPI IDirectMusicAudioPathImpl_IUnknown_AddRef (LPUNKNOWN iface);
283 /* IDirectMusicAudioPath: */
284 extern HRESULT WINAPI IDirectMusicAudioPathImpl_IDirectMusicAudioPath_QueryInterface (LPDIRECTMUSICAUDIOPATH iface, REFIID riid, LPVOID *ppobj);
285 extern ULONG WINAPI IDirectMusicAudioPathImpl_IDirectMusicAudioPath_AddRef (LPDIRECTMUSICAUDIOPATH iface);
286 extern HRESULT WINAPI IDirectMusicAudioPathImpl_IDirectMusicAudioPath_Activate (LPDIRECTMUSICAUDIOPATH iface, BOOL fActivate);
287 /* IDirectMusicObject: */
288 extern HRESULT WINAPI IDirectMusicAudioPathImpl_IDirectMusicObject_QueryInterface (LPDIRECTMUSICOBJECT iface, REFIID riid, LPVOID *ppobj);
289 extern ULONG WINAPI IDirectMusicAudioPathImpl_IDirectMusicObject_AddRef (LPDIRECTMUSICOBJECT iface);
290 /* IPersistStream: */
291 extern HRESULT WINAPI IDirectMusicAudioPathImpl_IPersistStream_QueryInterface (LPPERSISTSTREAM iface, REFIID riid, void** ppvObject);
292 extern ULONG WINAPI IDirectMusicAudioPathImpl_IPersistStream_AddRef (LPPERSISTSTREAM iface);
294 /*****************************************************************************
295 * IDirectMusicTool8Impl implementation structure
297 struct IDirectMusicTool8Impl {
298 /* IUnknown fields */
299 const IDirectMusicTool8Vtbl *lpVtbl;
302 /* IDirectMusicTool8Impl fields */
306 extern HRESULT WINAPI IDirectMusicTool8Impl_QueryInterface (LPDIRECTMUSICTOOL8 iface, REFIID riid, LPVOID *ppobj);
307 extern ULONG WINAPI IDirectMusicTool8Impl_AddRef (LPDIRECTMUSICTOOL8 iface);
309 /*****************************************************************************
310 * IDirectMusicPatternTrackImpl implementation structure
312 struct IDirectMusicPatternTrackImpl {
313 /* IUnknown fields */
314 const IDirectMusicPatternTrackVtbl *lpVtbl;
317 /* IDirectMusicPatternTrackImpl fields */
321 extern HRESULT WINAPI IDirectMusicPatternTrackImpl_QueryInterface (LPDIRECTMUSICPATTERNTRACK iface, REFIID riid, LPVOID *ppobj);
322 extern ULONG WINAPI IDirectMusicPatternTrackImpl_AddRef (LPDIRECTMUSICPATTERNTRACK iface);
324 /*****************************************************************************
325 * IDirectMusicLyricsTrack implementation structure
327 struct IDirectMusicLyricsTrack
329 /* IUnknown fields */
330 const IUnknownVtbl *UnknownVtbl;
331 const IDirectMusicTrack8Vtbl *TrackVtbl;
332 const IPersistStreamVtbl *PersistStreamVtbl;
335 /* IDirectMusicLyricsTrack fields */
336 LPDMUS_OBJECTDESC pDesc;
340 extern HRESULT WINAPI IDirectMusicLyricsTrack_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj);
341 extern ULONG WINAPI IDirectMusicLyricsTrack_IUnknown_AddRef (LPUNKNOWN iface);
342 /* IDirectMusicTrack(8): */
343 extern HRESULT WINAPI IDirectMusicLyricsTrack_IDirectMusicTrack_QueryInterface (LPDIRECTMUSICTRACK8 iface, REFIID riid, LPVOID *ppobj);
344 extern ULONG WINAPI IDirectMusicLyricsTrack_IDirectMusicTrack_AddRef (LPDIRECTMUSICTRACK8 iface);
345 /* IPersistStream: */
346 extern HRESULT WINAPI IDirectMusicLyricsTrack_IPersistStream_QueryInterface (LPPERSISTSTREAM iface, REFIID riid, void** ppvObject);
347 extern ULONG WINAPI IDirectMusicLyricsTrack_IPersistStream_AddRef (LPPERSISTSTREAM iface);
349 /*****************************************************************************
350 * IDirectMusicMarkerTrack implementation structure
352 struct IDirectMusicMarkerTrack {
353 /* IUnknown fields */
354 const IUnknownVtbl *UnknownVtbl;
355 const IDirectMusicTrack8Vtbl *TrackVtbl;
356 const IPersistStreamVtbl *PersistStreamVtbl;
359 /* IDirectMusicMarkerTrack fields */
360 LPDMUS_OBJECTDESC pDesc;
364 extern HRESULT WINAPI IDirectMusicMarkerTrack_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj);
365 extern ULONG WINAPI IDirectMusicMarkerTrack_IUnknown_AddRef (LPUNKNOWN iface);
366 /* IDirectMusicTrack(8): */
367 extern HRESULT WINAPI IDirectMusicMarkerTrack_IDirectMusicTrack_QueryInterface (LPDIRECTMUSICTRACK8 iface, REFIID riid, LPVOID *ppobj);
368 extern ULONG WINAPI IDirectMusicMarkerTrack_IDirectMusicTrack_AddRef (LPDIRECTMUSICTRACK8 iface);
369 /* IPersistStream: */
370 extern HRESULT WINAPI IDirectMusicMarkerTrack_IPersistStream_QueryInterface (LPPERSISTSTREAM iface, REFIID riid, void** ppvObject);
371 extern ULONG WINAPI IDirectMusicMarkerTrack_IPersistStream_AddRef (LPPERSISTSTREAM iface);
373 /*****************************************************************************
374 * IDirectMusicParamControlTrack implementation structure
376 struct IDirectMusicParamControlTrack {
377 /* IUnknown fields */
378 const IUnknownVtbl *UnknownVtbl;
379 const IDirectMusicTrack8Vtbl *TrackVtbl;
380 const IPersistStreamVtbl *PersistStreamVtbl;
383 /* IDirectMusicParamControlTrack fields */
384 LPDMUS_OBJECTDESC pDesc;
388 extern HRESULT WINAPI IDirectMusicParamControlTrack_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj);
389 extern ULONG WINAPI IDirectMusicParamControlTrack_IUnknown_AddRef (LPUNKNOWN iface);
390 /* IDirectMusicTrack(8): */
391 extern HRESULT WINAPI IDirectMusicParamControlTrack_IDirectMusicTrack_QueryInterface (LPDIRECTMUSICTRACK8 iface, REFIID riid, LPVOID *ppobj);
392 extern ULONG WINAPI IDirectMusicParamControlTrack_IDirectMusicTrack_AddRef (LPDIRECTMUSICTRACK8 iface);
393 /* IPersistStream: */
394 extern HRESULT WINAPI IDirectMusicParamControlTrack_IPersistStream_QueryInterface (LPPERSISTSTREAM iface, REFIID riid, void** ppvObject);
395 extern ULONG WINAPI IDirectMusicParamControlTrack_IPersistStream_AddRef (LPPERSISTSTREAM iface);
397 /*****************************************************************************
398 * IDirectMusicSegTriggerTrack implementation structure
400 struct IDirectMusicSegTriggerTrack {
401 /* IUnknown fields */
402 const IUnknownVtbl *UnknownVtbl;
403 const IDirectMusicTrack8Vtbl *TrackVtbl;
404 const IPersistStreamVtbl *PersistStreamVtbl;
407 /* IDirectMusicSegTriggerTrack fields */
408 LPDMUS_OBJECTDESC pDesc;
414 extern HRESULT WINAPI IDirectMusicSegTriggerTrack_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj);
415 extern ULONG WINAPI IDirectMusicSegTriggerTrack_IUnknown_AddRef (LPUNKNOWN iface);
416 /* IDirectMusicTrack(8): */
417 extern HRESULT WINAPI IDirectMusicSegTriggerTrack_IDirectMusicTrack_QueryInterface (LPDIRECTMUSICTRACK8 iface, REFIID riid, LPVOID *ppobj);
418 extern ULONG WINAPI IDirectMusicSegTriggerTrack_IDirectMusicTrack_AddRef (LPDIRECTMUSICTRACK8 iface);
419 /* IPersistStream: */
420 extern HRESULT WINAPI IDirectMusicSegTriggerTrack_IPersistStream_QueryInterface (LPPERSISTSTREAM iface, REFIID riid, void** ppvObject);
421 extern ULONG WINAPI IDirectMusicSegTriggerTrack_IPersistStream_AddRef (LPPERSISTSTREAM iface);
423 /*****************************************************************************
424 * IDirectMusicSeqTrack implementation structure
426 struct IDirectMusicSeqTrack {
427 /* IUnknown fields */
428 const IUnknownVtbl *UnknownVtbl;
429 const IDirectMusicTrack8Vtbl *TrackVtbl;
430 const IPersistStreamVtbl *PersistStreamVtbl;
433 /* IDirectMusicSeqTrack fields */
434 LPDMUS_OBJECTDESC pDesc;
438 extern HRESULT WINAPI IDirectMusicSeqTrack_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj);
439 extern ULONG WINAPI IDirectMusicSeqTrack_IUnknown_AddRef (LPUNKNOWN iface);
440 /* IDirectMusicTrack(8): */
441 extern HRESULT WINAPI IDirectMusicSeqTrack_IDirectMusicTrack_QueryInterface (LPDIRECTMUSICTRACK8 iface, REFIID riid, LPVOID *ppobj);
442 extern ULONG WINAPI IDirectMusicSeqTrack_IDirectMusicTrack_AddRef (LPDIRECTMUSICTRACK8 iface);
443 /* IPersistStream: */
444 extern HRESULT WINAPI IDirectMusicSeqTrack_IPersistStream_QueryInterface (LPPERSISTSTREAM iface, REFIID riid, void** ppvObject);
445 extern ULONG WINAPI IDirectMusicSeqTrack_IPersistStream_AddRef (LPPERSISTSTREAM iface);
447 /*****************************************************************************
448 * IDirectMusicSysExTrack implementation structure
450 struct IDirectMusicSysExTrack {
451 /* IUnknown fields */
452 const IUnknownVtbl *UnknownVtbl;
453 const IDirectMusicTrack8Vtbl *TrackVtbl;
454 const IPersistStreamVtbl *PersistStreamVtbl;
457 /* IDirectMusicSysExTrack fields */
458 LPDMUS_OBJECTDESC pDesc;
462 extern HRESULT WINAPI IDirectMusicSysExTrack_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj);
463 extern ULONG WINAPI IDirectMusicSysExTrack_IUnknown_AddRef (LPUNKNOWN iface);
464 /* IDirectMusicTrack(8): */
465 extern HRESULT WINAPI IDirectMusicSysExTrack_IDirectMusicTrack_QueryInterface (LPDIRECTMUSICTRACK8 iface, REFIID riid, LPVOID *ppobj);
466 extern ULONG WINAPI IDirectMusicSysExTrack_IDirectMusicTrack_AddRef (LPDIRECTMUSICTRACK8 iface);
467 /* IPersistStream: */
468 extern HRESULT WINAPI IDirectMusicSysExTrack_IPersistStream_QueryInterface (LPPERSISTSTREAM iface, REFIID riid, void** ppvObject);
469 extern ULONG WINAPI IDirectMusicSysExTrack_IPersistStream_AddRef (LPPERSISTSTREAM iface);
471 /*****************************************************************************
472 * IDirectMusicTempoTrack implementation structure
474 struct IDirectMusicTempoTrack {
475 /* IUnknown fields */
476 const IUnknownVtbl *UnknownVtbl;
477 const IDirectMusicTrack8Vtbl *TrackVtbl;
478 const IPersistStreamVtbl *PersistStreamVtbl;
481 /* IDirectMusicTempoTrack fields */
482 LPDMUS_OBJECTDESC pDesc;
488 extern HRESULT WINAPI IDirectMusicTempoTrack_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj);
489 extern ULONG WINAPI IDirectMusicTempoTrack_IUnknown_AddRef (LPUNKNOWN iface);
490 /* IDirectMusicTrack(8): */
491 extern HRESULT WINAPI IDirectMusicTempoTrack_IDirectMusicTrack_QueryInterface (LPDIRECTMUSICTRACK8 iface, REFIID riid, LPVOID *ppobj);
492 extern ULONG WINAPI IDirectMusicTempoTrack_IDirectMusicTrack_AddRef (LPDIRECTMUSICTRACK8 iface);
493 extern HRESULT WINAPI IDirectMusicTempoTrack_IDirectMusicTrack_IsParamSupported (LPDIRECTMUSICTRACK8 iface, REFGUID rguidType);
494 /* IPersistStream: */
495 extern HRESULT WINAPI IDirectMusicTempoTrack_IPersistStream_QueryInterface (LPPERSISTSTREAM iface, REFIID riid, void** ppvObject);
496 extern ULONG WINAPI IDirectMusicTempoTrack_IPersistStream_AddRef (LPPERSISTSTREAM iface);
498 /*****************************************************************************
499 * IDirectMusicTimeSigTrack implementation structure
501 struct IDirectMusicTimeSigTrack {
502 /* IUnknown fields */
503 const IUnknownVtbl *UnknownVtbl;
504 const IDirectMusicTrack8Vtbl *TrackVtbl;
505 const IPersistStreamVtbl *PersistStreamVtbl;
508 /* IDirectMusicTimeSigTrack fields */
509 LPDMUS_OBJECTDESC pDesc;
513 extern HRESULT WINAPI IDirectMusicTimeSigTrack_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj);
514 extern ULONG WINAPI IDirectMusicTimeSigTrack_IUnknown_AddRef (LPUNKNOWN iface);
515 /* IDirectMusicTrack(8): */
516 extern HRESULT WINAPI IDirectMusicTimeSigTrack_IDirectMusicTrack_QueryInterface (LPDIRECTMUSICTRACK8 iface, REFIID riid, LPVOID *ppobj);
517 extern ULONG WINAPI IDirectMusicTimeSigTrack_IDirectMusicTrack_AddRef (LPDIRECTMUSICTRACK8 iface);
518 /* IPersistStream: */
519 extern HRESULT WINAPI IDirectMusicTimeSigTrack_IPersistStream_QueryInterface (LPPERSISTSTREAM iface, REFIID riid, void** ppvObject);
520 extern ULONG WINAPI IDirectMusicTimeSigTrack_IPersistStream_AddRef (LPPERSISTSTREAM iface);
522 /*****************************************************************************
523 * IDirectMusicWaveTrack implementation structure
525 struct IDirectMusicWaveTrack {
526 /* IUnknown fields */
527 const IUnknownVtbl *UnknownVtbl;
528 const IDirectMusicTrack8Vtbl *TrackVtbl;
529 const IPersistStreamVtbl *PersistStreamVtbl;
532 /* IDirectMusicWaveTrack fields */
533 LPDMUS_OBJECTDESC pDesc;
537 extern HRESULT WINAPI IDirectMusicWaveTrack_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj);
538 extern ULONG WINAPI IDirectMusicWaveTrack_IUnknown_AddRef (LPUNKNOWN iface);
539 /* IDirectMusicTrack(8): */
540 extern HRESULT WINAPI IDirectMusicWaveTrack_IDirectMusicTrack_QueryInterface (LPDIRECTMUSICTRACK8 iface, REFIID riid, LPVOID *ppobj);
541 extern ULONG WINAPI IDirectMusicWaveTrack_IDirectMusicTrack_AddRef (LPDIRECTMUSICTRACK8 iface);
542 /* IPersistStream: */
543 extern HRESULT WINAPI IDirectMusicWaveTrack_IPersistStream_QueryInterface (LPPERSISTSTREAM iface, REFIID riid, void** ppvObject);
544 extern ULONG WINAPI IDirectMusicWaveTrack_IPersistStream_AddRef (LPPERSISTSTREAM iface);
546 /**********************************************************************
547 * Dll lifetime tracking declaration for dmime.dll
549 extern LONG DMIME_refCount;
550 static inline void DMIME_LockModule() { InterlockedIncrement( &DMIME_refCount ); }
551 static inline void DMIME_UnlockModule() { InterlockedDecrement( &DMIME_refCount ); }
553 /*****************************************************************************
559 #endif /* __WINE_DMIME_PRIVATE_H */