1 /* DirectMusic Private Include
3 * Copyright (C) 2003 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_DMUSIC_PRIVATE_H
21 #define __WINE_DMUSIC_PRIVATE_H
24 #include "wine/debug.h"
34 /*****************************************************************************
37 typedef struct IDirectMusic8Impl IDirectMusic8Impl
;
38 typedef struct IDirectMusicBufferImpl IDirectMusicBufferImpl
;
39 typedef struct IDirectMusicInstrumentImpl IDirectMusicInstrumentImpl
;
40 typedef struct IDirectMusicDownloadedInstrumentImpl IDirectMusicDownloadedInstrumentImpl
;
41 typedef struct IDirectMusicCollectionImpl IDirectMusicCollectionImpl
;
42 typedef struct IDirectMusicDownloadImpl IDirectMusicDownloadImpl
;
43 typedef struct IDirectMusicPortDownloadImpl IDirectMusicPortDownloadImpl
;
44 typedef struct IDirectMusicPortImpl IDirectMusicPortImpl
;
45 typedef struct IDirectMusicThruImpl IDirectMusicThruImpl
;
46 typedef struct IDirectMusicObjectImpl IDirectMusicObjectImpl
;
47 typedef struct IReferenceClockImpl IReferenceClockImpl
;
49 /*****************************************************************************
50 * Predeclare the interface implementation structures
52 extern ICOM_VTABLE(IDirectMusic8
) DirectMusic8_Vtbl
;
53 extern ICOM_VTABLE(IDirectMusicBuffer
) DirectMusicBuffer_Vtbl
;
54 extern ICOM_VTABLE(IDirectMusicInstrument
) DirectMusicInstrument_Vtbl
;
55 extern ICOM_VTABLE(IDirectMusicDownloadedInstrument
) DirectMusicDownloadedInstrument_Vtbl
;
56 extern ICOM_VTABLE(IDirectMusicCollection
) DirectMusicCollection_Vtbl
;
57 extern ICOM_VTABLE(IDirectMusicDownload
) DirectMusicDownload_Vtbl
;
58 extern ICOM_VTABLE(IDirectMusicPortDownload
) DirectMusicPortDownload_Vtbl
;
59 extern ICOM_VTABLE(IDirectMusicPort
) DirectMusicPort_Vtbl
;
60 extern ICOM_VTABLE(IDirectMusicThru
) DirectMusicThru_Vtbl
;
61 extern ICOM_VTABLE(IDirectMusicObject
) DirectMusicObject_Vtbl
;
62 extern ICOM_VTABLE(IReferenceClock
) ReferenceClock_Vtbl
;
64 /*****************************************************************************
65 * Some stuff to make my life easier :=)
68 /* some sort of aux. performance channel: as far as i can understand, these are
69 used to represent a particular midi channel in particular group at particular
70 group; so all we need to do is to fill it with parent port, group and midi
72 typedef struct DMUSIC_PRIVATE_PCHANNEL_
74 DWORD channel
; /* map to this channel... */
75 DWORD group
; /* ... in this group ... */
76 IDirectMusicPort
*port
; /* ... at this port */
77 } DMUSIC_PRIVATE_PCHANNEL
, *LPDMUSIC_PRIVATE_PCHANNEL
;
79 /* some sort of aux. midi channel: big fake at the moment; accepts only priority
80 changes... more coming soon */
81 typedef struct DMUSIC_PRIVATE_MCHANNEL_
84 } DMUSIC_PRIVATE_MCHANNEL
, *LPDMUSIC_PRIVATE_MCHANNEL
;
86 /* some sort of aux. channel group: collection of 16 midi channels */
87 typedef struct DMUSIC_PRIVATE_CHANNEL_GROUP_
89 DMUSIC_PRIVATE_MCHANNEL channel
[16]; /* 16 channels in a group */
90 } DMUSIC_PRIVATE_CHANNEL_GROUP
, *LPDMUSIC_PRIVATE_CHANNEL_GROUP
;
92 /* used for loading chunks of data from files */
93 typedef struct _rawChunk
95 FOURCC id
; /* FOURCC */
96 DWORD size
; /* size of chunk_riff */
97 /* BYTE* data; */ /* chunk_riff data */
100 /* struct in which UNFO data is stored */
101 typedef struct _UNFO_List
111 typedef struct _ChordData
115 DMUS_IO_SUBCHORD
*subchord
;
118 typedef struct _Reference
120 DMUS_IO_REFERENCE header
;
126 DMUS_IO_VERSION version
;
129 typedef struct _BandTrack
131 DMUS_IO_BAND_TRACK_HEADER header
;
133 DMUS_IO_VERSION version
;
136 DMUS_IO_BAND_ITEM_HEADER header1
;
137 DMUS_IO_BAND_ITEM_HEADER2 header2
;
139 /* IDirectMusicBandImpl **band; */
145 DMUS_IO_STYLEPART header
;
148 DMUS_IO_STYLENOTE
* notes
;
150 DMUS_IO_STYLECURVE
* curves
;
152 DMUS_IO_STYLEMARKER
* markers
;
153 DWORD nrofresolutions
;
154 DMUS_IO_STYLERESOLUTION
* resolutions
;
155 DWORD nrofanticipations
;
156 DMUS_IO_STYLE_ANTICIPATION
* anticipations
;
159 typedef struct _Pattern
161 DMUS_IO_PATTERN header
;
165 DMUS_IO_MOTIFSETTINGS motsettings
;
166 /* IDirectMusicBandImpl band */
168 /* FIXME: only in singular form for now */
169 UNFO_List partrefUNFO
;
170 DMUS_IO_PARTREF partref
;
173 typedef struct _WaveTrack
175 DMUS_IO_WAVE_TRACK_HEADER header
;
176 /* FIXME: only in singular form now */
177 DMUS_IO_WAVE_PART_HEADER partHeader
;
178 DMUS_IO_WAVE_ITEM_HEADER itemHeader
;
182 typedef struct _SegTriggerTrack
184 DMUS_IO_SEGMENT_TRACK_HEADER header
;
185 /* FIXME: only in singular form now */
186 DMUS_IO_SEGMENT_ITEM_HEADER itemHeader
;
191 typedef struct _TimeSigTrack
{
193 DMUS_IO_TIMESIGNATURE_ITEM
* items
;
196 typedef struct _ScriptEvent
{
197 DMUS_IO_SCRIPTTRACK_EVENTHEADER header
;
202 /*****************************************************************************
205 /* can support IID_IDirectMusic, IID_IDirectMusic2 and IID_IDirectMusic8
206 * return always an IDirectMusic8Impl
208 extern HRESULT WINAPI
DMUSIC_CreateDirectMusic (LPCGUID lpcGUID
, LPDIRECTMUSIC8
* ppDM
, LPUNKNOWN pUnkOuter
);
209 /* can support IID_IDirectMusicBuffer
210 * return always an IDirectMusicBufferImpl
212 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicBuffer (LPCGUID lpcGUID
, LPDIRECTMUSICBUFFER
* ppDMBuff
, LPUNKNOWN pUnkOuter
);
213 /* can support IID_IDirectMusicInstrument
214 * return always an IDirectMusicInstrumentImpl
216 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicInstrument (LPCGUID lpcGUID
, LPDIRECTMUSICINSTRUMENT
* ppDMInstr
, LPUNKNOWN pUnkOuter
);
217 /* can support IID_IDirectMusicDownloadedInstrument
218 * return always an IDirectMusicDownloadedInstrumentImpl
220 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicDownloadedInstrument (LPCGUID lpcGUID
, LPDIRECTMUSICDOWNLOADEDINSTRUMENT
* ppDMDLInstrument
, LPUNKNOWN pUnkOuter
);
221 /* can support IID_IDirectMusicCollection
222 * return always an IDirectMusicCollectionImpl
224 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicCollection (LPCGUID lpcGUID
, LPDIRECTMUSICCOLLECTION
* ppDMColl
, LPUNKNOWN pUnkOuter
);
225 /* can support IID_IDirectMusicDownload
226 * return always an IDirectMusicDownload
228 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicDownload (LPCGUID lpcGUID
, LPDIRECTMUSICDOWNLOAD
* ppDMDL
, LPUNKNOWN pUnkOuter
);
229 /* can support IID_IDirectMusicPortDownload
230 * return always an IDirectMusicPortDownload
232 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicPortDownload (LPCGUID lpcGUID
, LPDIRECTMUSICPORTDOWNLOAD
* ppDMPortDL
, LPUNKNOWN pUnkOuter
);
233 /* can support IID_IDirectMusicPort
234 * return always an IDirectMusicPortImpl
236 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicPort (LPCGUID lpcGUID
, LPDIRECTMUSICPORT
* ppDMPort
, LPUNKNOWN pUnkOuter
);
237 /* can support IID_IDirectMusicThru
238 * return always an IDirectMusicThruImpl
240 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicThru (LPCGUID lpcGUID
, LPDIRECTMUSICTHRU
* ppDMThru
, LPUNKNOWN pUnkOuter
);
241 /* can support IID_IDirectMusicObject
242 * return always an IDirectMusicObjectImpl
244 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicObject (LPCGUID lpcGUID
, LPDIRECTMUSICOBJECT
* ppDMObj
, LPUNKNOWN pUnkOuter
);
245 /* can support IID_IReferenceClock
246 * return always an IReferenceClockImpl
248 extern HRESULT WINAPI
DMUSIC_CreateReferenceClock (LPCGUID lpcGUID
, IReferenceClock
** ppDM
, LPUNKNOWN pUnkOuter
);
250 /*****************************************************************************
251 * IDirectMusic8Impl implementation structure
253 struct IDirectMusic8Impl
255 /* IUnknown fields */
256 ICOM_VFIELD(IDirectMusic8
);
259 /* IDirectMusicImpl fields */
260 IReferenceClockImpl
* pMasterClock
;
261 IDirectMusicPortImpl
** ppPorts
;
266 extern HRESULT WINAPI
IDirectMusic8Impl_QueryInterface (LPDIRECTMUSIC8 iface
, REFIID riid
, LPVOID
*ppobj
);
267 extern ULONG WINAPI
IDirectMusic8Impl_AddRef (LPDIRECTMUSIC8 iface
);
268 extern ULONG WINAPI
IDirectMusic8Impl_Release (LPDIRECTMUSIC8 iface
);
270 extern HRESULT WINAPI
IDirectMusic8Impl_EnumPort (LPDIRECTMUSIC8 iface
, DWORD dwIndex
, LPDMUS_PORTCAPS pPortCaps
);
271 extern HRESULT WINAPI
IDirectMusic8Impl_CreateMusicBuffer (LPDIRECTMUSIC8 iface
, LPDMUS_BUFFERDESC pBufferDesc
, LPDIRECTMUSICBUFFER
** ppBuffer
, LPUNKNOWN pUnkOuter
);
272 extern HRESULT WINAPI
IDirectMusic8Impl_CreatePort (LPDIRECTMUSIC8 iface
, REFCLSID rclsidPort
, LPDMUS_PORTPARAMS pPortParams
, LPDIRECTMUSICPORT
* ppPort
, LPUNKNOWN pUnkOuter
);
273 extern HRESULT WINAPI
IDirectMusic8Impl_EnumMasterClock (LPDIRECTMUSIC8 iface
, DWORD dwIndex
, LPDMUS_CLOCKINFO lpClockInfo
);
274 extern HRESULT WINAPI
IDirectMusic8Impl_GetMasterClock (LPDIRECTMUSIC8 iface
, LPGUID pguidClock
, IReferenceClock
** ppReferenceClock
);
275 extern HRESULT WINAPI
IDirectMusic8Impl_SetMasterClock (LPDIRECTMUSIC8 iface
, REFGUID rguidClock
);
276 extern HRESULT WINAPI
IDirectMusic8Impl_Activate (LPDIRECTMUSIC8 iface
, BOOL fEnable
);
277 extern HRESULT WINAPI
IDirectMusic8Impl_GetDefaultPort (LPDIRECTMUSIC8 iface
, LPGUID pguidPort
);
278 extern HRESULT WINAPI
IDirectMusic8Impl_SetDirectSound (LPDIRECTMUSIC8 iface
, LPDIRECTSOUND pDirectSound
, HWND hWnd
);
280 extern HRESULT WINAPI
IDirectMusic8Impl_SetExternalMasterClock (LPDIRECTMUSIC8 iface
, IReferenceClock
* pClock
);
282 /*****************************************************************************
283 * IDirectMusicBufferImpl implementation structure
285 struct IDirectMusicBufferImpl
287 /* IUnknown fields */
288 ICOM_VFIELD(IDirectMusicBuffer
);
291 /* IDirectMusicBufferImpl fields */
295 extern HRESULT WINAPI
IDirectMusicBufferImpl_QueryInterface (LPDIRECTMUSICBUFFER iface
, REFIID riid
, LPVOID
*ppobj
);
296 extern ULONG WINAPI
IDirectMusicBufferImpl_AddRef (LPDIRECTMUSICBUFFER iface
);
297 extern ULONG WINAPI
IDirectMusicBufferImpl_Release (LPDIRECTMUSICBUFFER iface
);
298 /* IDirectMusicBufferImpl: */
299 extern HRESULT WINAPI
IDirectMusicBufferImpl_Flush (LPDIRECTMUSICBUFFER iface
);
300 extern HRESULT WINAPI
IDirectMusicBufferImpl_TotalTime (LPDIRECTMUSICBUFFER iface
, LPREFERENCE_TIME prtTime
);
301 extern HRESULT WINAPI
IDirectMusicBufferImpl_PackStructured (LPDIRECTMUSICBUFFER iface
, REFERENCE_TIME rt
, DWORD dwChannelGroup
, DWORD dwChannelMessage
);
302 extern HRESULT WINAPI
IDirectMusicBufferImpl_PackUnstructured (LPDIRECTMUSICBUFFER iface
, REFERENCE_TIME rt
, DWORD dwChannelGroup
, DWORD cb
, LPBYTE lpb
);
303 extern HRESULT WINAPI
IDirectMusicBufferImpl_ResetReadPtr (LPDIRECTMUSICBUFFER iface
);
304 extern HRESULT WINAPI
IDirectMusicBufferImpl_GetNextEvent (LPDIRECTMUSICBUFFER iface
, LPREFERENCE_TIME prt
, LPDWORD pdwChannelGroup
, LPDWORD pdwLength
, LPBYTE
* ppData
);
305 extern HRESULT WINAPI
IDirectMusicBufferImpl_GetRawBufferPtr (LPDIRECTMUSICBUFFER iface
, LPBYTE
* ppData
);
306 extern HRESULT WINAPI
IDirectMusicBufferImpl_GetStartTime (LPDIRECTMUSICBUFFER iface
, LPREFERENCE_TIME prt
);
307 extern HRESULT WINAPI
IDirectMusicBufferImpl_GetUsedBytes (LPDIRECTMUSICBUFFER iface
, LPDWORD pcb
);
308 extern HRESULT WINAPI
IDirectMusicBufferImpl_GetMaxBytes (LPDIRECTMUSICBUFFER iface
, LPDWORD pcb
);
309 extern HRESULT WINAPI
IDirectMusicBufferImpl_GetBufferFormat (LPDIRECTMUSICBUFFER iface
, LPGUID pGuidFormat
);
310 extern HRESULT WINAPI
IDirectMusicBufferImpl_SetStartTime (LPDIRECTMUSICBUFFER iface
, REFERENCE_TIME rt
);
311 extern HRESULT WINAPI
IDirectMusicBufferImpl_SetUsedBytes (LPDIRECTMUSICBUFFER iface
, DWORD cb
);
313 /*****************************************************************************
314 * IDirectMusicInstrumentImpl implementation structure
316 struct IDirectMusicInstrumentImpl
318 /* IUnknown fields */
319 ICOM_VFIELD(IDirectMusicInstrument
);
322 /* IDirectMusicInstrumentImpl fields */
327 extern HRESULT WINAPI
IDirectMusicInstrumentImpl_QueryInterface (LPDIRECTMUSICINSTRUMENT iface
, REFIID riid
, LPVOID
*ppobj
);
328 extern ULONG WINAPI
IDirectMusicInstrumentImpl_AddRef (LPDIRECTMUSICINSTRUMENT iface
);
329 extern ULONG WINAPI
IDirectMusicInstrumentImpl_Release (LPDIRECTMUSICINSTRUMENT iface
);
330 /* IDirectMusicInstrumentImpl: */
331 extern HRESULT WINAPI
IDirectMusicInstrumentImpl_GetPatch (LPDIRECTMUSICINSTRUMENT iface
, DWORD
* pdwPatch
);
332 extern HRESULT WINAPI
IDirectMusicInstrumentImpl_SetPatch (LPDIRECTMUSICINSTRUMENT iface
, DWORD dwPatch
);
334 /*****************************************************************************
335 * IDirectMusicDownloadedInstrumentImpl implementation structure
337 struct IDirectMusicDownloadedInstrumentImpl
339 /* IUnknown fields */
340 ICOM_VFIELD(IDirectMusicDownloadedInstrument
);
343 /* IDirectMusicDownloadedInstrumentImpl fields */
347 extern HRESULT WINAPI
IDirectMusicDownloadedInstrumentImpl_QueryInterface (LPDIRECTMUSICDOWNLOADEDINSTRUMENT iface
, REFIID riid
, LPVOID
*ppobj
);
348 extern ULONG WINAPI
IDirectMusicDownloadedInstrumentImpl_AddRef (LPDIRECTMUSICDOWNLOADEDINSTRUMENT iface
);
349 extern ULONG WINAPI
IDirectMusicDownloadedInstrumentImpl_Release (LPDIRECTMUSICDOWNLOADEDINSTRUMENT iface
);
350 /* IDirectMusicDownloadedInstrumentImpl: */
353 /*****************************************************************************
354 * IDirectMusicCollectionImpl implementation structure
356 struct IDirectMusicCollectionImpl
358 /* IUnknown fields */
359 ICOM_VFIELD(IDirectMusicCollection
);
362 /* IDirectMusicCollectionImpl fields */
366 extern HRESULT WINAPI
IDirectMusicCollectionImpl_QueryInterface (LPDIRECTMUSICCOLLECTION iface
, REFIID riid
, LPVOID
*ppobj
);
367 extern ULONG WINAPI
IDirectMusicCollectionImpl_AddRef (LPDIRECTMUSICCOLLECTION iface
);
368 extern ULONG WINAPI
IDirectMusicCollectionImpl_Release (LPDIRECTMUSICCOLLECTION iface
);
369 /* IDirectMusicImpl: */
370 HRESULT WINAPI
IDirectMusicCollectionImpl_GetInstrument (LPDIRECTMUSICCOLLECTION iface
, DWORD dwPatch
, IDirectMusicInstrument
** ppInstrument
);
371 HRESULT WINAPI
IDirectMusicCollectionImpl_EnumInstrument (LPDIRECTMUSICCOLLECTION iface
, DWORD dwIndex
, DWORD
* pdwPatch
, LPWSTR pwszName
, DWORD dwNameLen
);
373 /*****************************************************************************
374 * IDirectMusicDownloadImpl implementation structure
376 struct IDirectMusicDownloadImpl
378 /* IUnknown fields */
379 ICOM_VFIELD(IDirectMusicDownload
);
382 /* IDirectMusicDownloadImpl fields */
386 extern HRESULT WINAPI
IDirectMusicDownloadImpl_QueryInterface (LPDIRECTMUSICDOWNLOAD iface
, REFIID riid
, LPVOID
*ppobj
);
387 extern ULONG WINAPI
IDirectMusicDownloadImpl_AddRef (LPDIRECTMUSICDOWNLOAD iface
);
388 extern ULONG WINAPI
IDirectMusicDownloadImpl_Release (LPDIRECTMUSICDOWNLOAD iface
);
389 /* IDirectMusicImpl: */
390 extern HRESULT WINAPI
IDirectMusicDownloadImpl_GetBuffer (LPDIRECTMUSICDOWNLOAD iface
, void** ppvBuffer
, DWORD
* pdwSize
);
393 /*****************************************************************************
394 * IDirectMusicPortDownloadImpl implementation structure
396 struct IDirectMusicPortDownloadImpl
398 /* IUnknown fields */
399 ICOM_VFIELD(IDirectMusicPortDownload
);
402 /* IDirectMusicPortDownloadImpl fields */
406 extern HRESULT WINAPI
IDirectMusicPortDownloadImpl_QueryInterface (LPDIRECTMUSICPORTDOWNLOAD iface
, REFIID riid
, LPVOID
*ppobj
);
407 extern ULONG WINAPI
IDirectMusicPortDownloadImpl_AddRef (LPDIRECTMUSICPORTDOWNLOAD iface
);
408 extern ULONG WINAPI
IDirectMusicPortDownloadImpl_Release (LPDIRECTMUSICPORTDOWNLOAD iface
);
409 /* IDirectMusicPortDownloadImpl: */
410 extern HRESULT WINAPI
IDirectMusicPortDownloadImpl_GetBuffer (LPDIRECTMUSICPORTDOWNLOAD iface
, DWORD dwDLId
, IDirectMusicDownload
** ppIDMDownload
);
411 extern HRESULT WINAPI
IDirectMusicPortDownloadImpl_AllocateBuffer (LPDIRECTMUSICPORTDOWNLOAD iface
, DWORD dwSize
, IDirectMusicDownload
** ppIDMDownload
);
412 extern HRESULT WINAPI
IDirectMusicPortDownloadImpl_GetDLId (LPDIRECTMUSICPORTDOWNLOAD iface
, DWORD
* pdwStartDLId
, DWORD dwCount
);
413 extern HRESULT WINAPI
IDirectMusicPortDownloadImpl_GetAppend (LPDIRECTMUSICPORTDOWNLOAD iface
, DWORD
* pdwAppend
);
414 extern HRESULT WINAPI
IDirectMusicPortDownloadImpl_Download (LPDIRECTMUSICPORTDOWNLOAD iface
, IDirectMusicDownload
* pIDMDownload
);
415 extern HRESULT WINAPI
IDirectMusicPortDownloadImpl_Unload (LPDIRECTMUSICPORTDOWNLOAD iface
, IDirectMusicDownload
* pIDMDownload
);
417 /*****************************************************************************
418 * IDirectMusicPortImpl implementation structure
420 struct IDirectMusicPortImpl
422 /* IUnknown fields */
423 ICOM_VFIELD(IDirectMusicPort
);
426 /* IDirectMusicPortImpl fields */
427 IDirectSound
* pDirectSound
;
428 IReferenceClock
* pLatencyClock
;
430 LPDMUS_PORTCAPS pCaps
;
431 LPDMUS_PORTPARAMS pParams
;
433 DMUSIC_PRIVATE_CHANNEL_GROUP group
[1];
437 extern HRESULT WINAPI
IDirectMusicPortImpl_QueryInterface (LPDIRECTMUSICPORT iface
, REFIID riid
, LPVOID
*ppobj
);
438 extern ULONG WINAPI
IDirectMusicPortImpl_AddRef (LPDIRECTMUSICPORT iface
);
439 extern ULONG WINAPI
IDirectMusicPortImpl_Release (LPDIRECTMUSICPORT iface
);
440 /* IDirectMusicPortImpl: */
441 extern HRESULT WINAPI
IDirectMusicPortImpl_PlayBuffer (LPDIRECTMUSICPORT iface
, LPDIRECTMUSICBUFFER pBuffer
);
442 extern HRESULT WINAPI
IDirectMusicPortImpl_SetReadNotificationHandle (LPDIRECTMUSICPORT iface
, HANDLE hEvent
);
443 extern HRESULT WINAPI
IDirectMusicPortImpl_Read (LPDIRECTMUSICPORT iface
, LPDIRECTMUSICBUFFER pBuffer
);
444 extern HRESULT WINAPI
IDirectMusicPortImpl_DownloadInstrument (LPDIRECTMUSICPORT iface
, IDirectMusicInstrument
* pInstrument
, IDirectMusicDownloadedInstrument
** ppDownloadedInstrument
, DMUS_NOTERANGE
* pNoteRanges
, DWORD dwNumNoteRanges
);
445 extern HRESULT WINAPI
IDirectMusicPortImpl_UnloadInstrument (LPDIRECTMUSICPORT iface
, IDirectMusicDownloadedInstrument
*pDownloadedInstrument
);
446 extern HRESULT WINAPI
IDirectMusicPortImpl_GetLatencyClock (LPDIRECTMUSICPORT iface
, IReferenceClock
** ppClock
);
447 extern HRESULT WINAPI
IDirectMusicPortImpl_GetRunningStats (LPDIRECTMUSICPORT iface
, LPDMUS_SYNTHSTATS pStats
);
448 extern HRESULT WINAPI
IDirectMusicPortImpl_GetCaps (LPDIRECTMUSICPORT iface
, LPDMUS_PORTCAPS pPortCaps
);
449 extern HRESULT WINAPI
IDirectMusicPortImpl_DeviceIoControl (LPDIRECTMUSICPORT iface
, DWORD dwIoControlCode
, LPVOID lpInBuffer
, DWORD nInBufferSize
, LPVOID lpOutBuffer
, DWORD nOutBufferSize
, LPDWORD lpBytesReturned
, LPOVERLAPPED lpOverlapped
);
450 extern HRESULT WINAPI
IDirectMusicPortImpl_SetNumChannelGroups (LPDIRECTMUSICPORT iface
, DWORD dwChannelGroups
);
451 extern HRESULT WINAPI
IDirectMusicPortImpl_GetNumChannelGroups (LPDIRECTMUSICPORT iface
, LPDWORD pdwChannelGroups
);
452 extern HRESULT WINAPI
IDirectMusicPortImpl_Activate (LPDIRECTMUSICPORT iface
, BOOL fActive
);
453 extern HRESULT WINAPI
IDirectMusicPortImpl_SetChannelPriority (LPDIRECTMUSICPORT iface
, DWORD dwChannelGroup
, DWORD dwChannel
, DWORD dwPriority
);
454 extern HRESULT WINAPI
IDirectMusicPortImpl_GetChannelPriority (LPDIRECTMUSICPORT iface
, DWORD dwChannelGroup
, DWORD dwChannel
, LPDWORD pdwPriority
);
455 extern HRESULT WINAPI
IDirectMusicPortImpl_SetDirectSound (LPDIRECTMUSICPORT iface
, LPDIRECTSOUND pDirectSound
, LPDIRECTSOUNDBUFFER pDirectSoundBuffer
);
456 extern HRESULT WINAPI
IDirectMusicPortImpl_GetFormat (LPDIRECTMUSICPORT iface
, LPWAVEFORMATEX pWaveFormatEx
, LPDWORD pdwWaveFormatExSize
, LPDWORD pdwBufferSize
);
458 /*****************************************************************************
459 * IDirectMusicThruImpl implementation structure
461 struct IDirectMusicThruImpl
463 /* IUnknown fields */
464 ICOM_VFIELD(IDirectMusicThru
);
467 /* IDirectMusicThruImpl fields */
471 extern HRESULT WINAPI
IDirectMusicThruImpl_QueryInterface (LPDIRECTMUSICTHRU iface
, REFIID riid
, LPVOID
*ppobj
);
472 extern ULONG WINAPI
IDirectMusicThruImpl_AddRef (LPDIRECTMUSICTHRU iface
);
473 extern ULONG WINAPI
IDirectMusicThruImpl_Release (LPDIRECTMUSICTHRU iface
);
474 /* IDirectMusicPortDownloadImpl: */
475 extern HRESULT WINAPI
ThruChannel (LPDIRECTMUSICTHRU iface
, DWORD dwSourceChannelGroup
, DWORD dwSourceChannel
, DWORD dwDestinationChannelGroup
, DWORD dwDestinationChannel
, LPDIRECTMUSICPORT pDestinationPort
);
477 /*****************************************************************************
478 * IDirectMusicObjectImpl implementation structure
480 struct IDirectMusicObjectImpl
482 /* IUnknown fields */
483 ICOM_VFIELD(IDirectMusicObject
);
486 /* IDirectMusicObjectImpl fields */
487 LPDMUS_OBJECTDESC pDesc
;
491 extern HRESULT WINAPI
IDirectMusicObjectImpl_QueryInterface (LPDIRECTMUSICOBJECT iface
, REFIID riid
, LPVOID
*ppobj
);
492 extern ULONG WINAPI
IDirectMusicObjectImpl_AddRef (LPDIRECTMUSICOBJECT iface
);
493 extern ULONG WINAPI
IDirectMusicObjectImpl_Release (LPDIRECTMUSICOBJECT iface
);
494 /* IDirectMusicObject: */
495 extern HRESULT WINAPI
IDirectMusicObjectImpl_GetDescriptor (LPDIRECTMUSICOBJECT iface
, LPDMUS_OBJECTDESC pDesc
);
496 extern HRESULT WINAPI
IDirectMusicObjectImpl_SetDescriptor (LPDIRECTMUSICOBJECT iface
, LPDMUS_OBJECTDESC pDesc
);
497 extern HRESULT WINAPI
IDirectMusicObjectImpl_ParseDescriptor (LPDIRECTMUSICOBJECT iface
, LPSTREAM pStream
, LPDMUS_OBJECTDESC pDesc
);
499 /*****************************************************************************
500 * IReferenceClockImpl implementation structure
502 struct IReferenceClockImpl
504 /* IUnknown fields */
505 ICOM_VFIELD(IReferenceClock
);
508 /* IReferenceClockImpl fields */
509 REFERENCE_TIME rtTime
;
510 DMUS_CLOCKINFO pClockInfo
;
514 extern HRESULT WINAPI
IReferenceClockImpl_QueryInterface (IReferenceClock
*iface
, REFIID riid
, LPVOID
*ppobj
);
515 extern ULONG WINAPI
IReferenceClockImpl_AddRef (IReferenceClock
*iface
);
516 extern ULONG WINAPI
IReferenceClockImpl_Release (IReferenceClock
*iface
);
517 /* IReferenceClock: */
518 extern HRESULT WINAPI
IReferenceClockImpl_GetTime (IReferenceClock
*iface
, REFERENCE_TIME
* pTime
);
519 extern HRESULT WINAPI
IReferenceClockImpl_AdviseTime (IReferenceClock
*iface
, REFERENCE_TIME baseTime
, REFERENCE_TIME streamTime
, HANDLE hEvent
, DWORD
* pdwAdviseCookie
);
520 extern HRESULT WINAPI
IReferenceClockImpl_AdvisePeriodic (IReferenceClock
*iface
, REFERENCE_TIME startTime
, REFERENCE_TIME periodTime
, HANDLE hSemaphore
, DWORD
* pdwAdviseCookie
);
521 extern HRESULT WINAPI
IReferenceClockImpl_Unadvise (IReferenceClock
*iface
, DWORD dwAdviseCookie
);
524 /*****************************************************************************
527 void register_waveport (LPGUID lpGUID
, LPCSTR lpszDesc
, LPCSTR lpszDrvName
, LPVOID lpContext
);
529 #endif /* __WINE_DMUSIC_PRIVATE_H */