1 /* DirectMusicInteractiveEngine Private Include
3 * Copyright (C) 2003-2004 Rok Mandeljc
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (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 GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, 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"
46 /*****************************************************************************
49 typedef struct IDirectMusicSegment8Impl IDirectMusicSegment8Impl
;
50 typedef struct IDirectMusicGraphImpl IDirectMusicGraphImpl
;
51 typedef struct IDirectMusicAudioPathImpl IDirectMusicAudioPathImpl
;
53 typedef struct IDirectMusicLyricsTrack IDirectMusicLyricsTrack
;
54 typedef struct IDirectMusicMarkerTrack IDirectMusicMarkerTrack
;
55 typedef struct IDirectMusicParamControlTrack IDirectMusicParamControlTrack
;
56 typedef struct IDirectMusicSegTriggerTrack IDirectMusicSegTriggerTrack
;
57 typedef struct IDirectMusicSeqTrack IDirectMusicSeqTrack
;
58 typedef struct IDirectMusicSysExTrack IDirectMusicSysExTrack
;
59 typedef struct IDirectMusicTempoTrack IDirectMusicTempoTrack
;
60 typedef struct IDirectMusicTimeSigTrack IDirectMusicTimeSigTrack
;
61 typedef struct IDirectMusicWaveTrack IDirectMusicWaveTrack
;
63 /*****************************************************************************
66 extern HRESULT WINAPI
create_dmperformance(REFIID riid
, void **ret_iface
) DECLSPEC_HIDDEN
;
67 extern HRESULT WINAPI
create_dmsegment(REFIID riid
, void **ret_iface
) DECLSPEC_HIDDEN
;
68 extern HRESULT WINAPI
create_dmsegmentstate(REFIID riid
, void **ret_iface
) DECLSPEC_HIDDEN
;
69 extern HRESULT WINAPI
create_dmgraph(REFIID riid
, void **ret_iface
) DECLSPEC_HIDDEN
;
70 extern HRESULT WINAPI
create_dmaudiopath(REFIID riid
, void **ret_iface
) DECLSPEC_HIDDEN
;
72 extern HRESULT WINAPI
create_dmlyricstrack(REFIID riid
, void **ret_iface
) DECLSPEC_HIDDEN
;
73 extern HRESULT WINAPI
create_dmmarkertrack(REFIID riid
, void **ret_iface
) DECLSPEC_HIDDEN
;
74 extern HRESULT WINAPI
create_dmparamcontroltrack(REFIID riid
, void **ret_iface
) DECLSPEC_HIDDEN
;
75 extern HRESULT WINAPI
create_dmsegtriggertrack(REFIID riid
, void **ret_iface
) DECLSPEC_HIDDEN
;
76 extern HRESULT WINAPI
create_dmseqtrack(REFIID riid
, void **ret_iface
) DECLSPEC_HIDDEN
;
77 extern HRESULT WINAPI
create_dmsysextrack(REFIID riid
, void **ret_iface
) DECLSPEC_HIDDEN
;
78 extern HRESULT WINAPI
create_dmtempotrack(REFIID riid
, void **ret_iface
) DECLSPEC_HIDDEN
;
79 extern HRESULT WINAPI
create_dmtimesigtrack(REFIID riid
, void **ret_iface
) DECLSPEC_HIDDEN
;
80 extern HRESULT WINAPI
create_dmwavetrack(REFIID riid
, void **ret_iface
) DECLSPEC_HIDDEN
;
83 /*****************************************************************************
84 * Auxiliary definitions
86 typedef struct _DMUS_PRIVATE_SEGMENT_TRACK
{
87 struct list entry
; /* for listing elements */
89 IDirectMusicTrack
* pTrack
;
90 } DMUS_PRIVATE_SEGMENT_TRACK
, *LPDMUS_PRIVATE_SEGMENT_TRACK
;
92 typedef struct _DMUS_PRIVATE_TEMPO_ITEM
{
93 struct list entry
; /* for listing elements */
94 DMUS_IO_TEMPO_ITEM item
;
95 } DMUS_PRIVATE_TEMPO_ITEM
, *LPDMUS_PRIVATE_TEMPO_ITEM
;
97 typedef struct _DMUS_PRIVATE_SEGMENT_ITEM
{
98 struct list entry
; /* for listing elements */
99 DMUS_IO_SEGMENT_ITEM_HEADER header
;
100 IDirectMusicObject
* pObject
;
101 WCHAR wszName
[DMUS_MAX_NAME
];
102 } DMUS_PRIVATE_SEGMENT_ITEM
, *LPDMUS_PRIVATE_SEGMENT_ITEM
;
104 typedef struct _DMUS_PRIVATE_GRAPH_TOOL
{
105 struct list entry
; /* for listing elements */
107 IDirectMusicTool
* pTool
;
108 } DMUS_PRIVATE_GRAPH_TOOL
, *LPDMUS_PRIVATE_GRAPH_TOOL
;
110 typedef struct _DMUS_PRIVATE_TEMPO_PLAY_STATE
{
112 } DMUS_PRIVATE_TEMPO_PLAY_STATE
, *LPDMUS_PRIVATE_TEMPO_PLAY_STATE
;
114 /* some sort of aux. performance channel: as far as i can understand, these are
115 used to represent a particular midi channel in particular group at particular
116 group; so all we need to do is to fill it with parent port, group and midi
118 typedef struct DMUSIC_PRIVATE_PCHANNEL_
{
119 DWORD channel
; /* map to this channel... */
120 DWORD group
; /* ... in this group ... */
121 IDirectMusicPort
*port
; /* ... at this port */
122 } DMUSIC_PRIVATE_PCHANNEL
, *LPDMUSIC_PRIVATE_PCHANNEL
;
124 /*****************************************************************************
125 * IDirectMusicSegment8Impl implementation structure
127 struct IDirectMusicSegment8Impl
{
128 IDirectMusicSegment8 IDirectMusicSegment8_iface
;
129 const IDirectMusicObjectVtbl
*ObjectVtbl
;
130 const IPersistStreamVtbl
*PersistStreamVtbl
;
133 /* IDirectMusicSegment8Impl fields */
134 LPDMUS_OBJECTDESC pDesc
;
135 DMUS_IO_SEGMENT_HEADER header
;
136 IDirectMusicGraph
* pGraph
;
140 /*****************************************************************************
141 * IDirectMusicAudioPathImpl implementation structure
143 struct IDirectMusicAudioPathImpl
{
144 /* IUnknown fields */
145 const IUnknownVtbl
*UnknownVtbl
;
146 const IDirectMusicAudioPathVtbl
*AudioPathVtbl
;
147 const IDirectMusicObjectVtbl
*ObjectVtbl
;
148 const IPersistStreamVtbl
*PersistStreamVtbl
;
151 /* IDirectMusicAudioPathImpl fields */
152 LPDMUS_OBJECTDESC pDesc
;
154 IDirectMusicPerformance8
* pPerf
;
155 IDirectMusicGraph
* pToolGraph
;
156 IDirectSoundBuffer
* pDSBuffer
;
157 IDirectSoundBuffer
* pPrimary
;
162 /*****************************************************************************
163 * IDirectMusicLyricsTrack implementation structure
165 struct IDirectMusicLyricsTrack
167 /* IUnknown fields */
168 const IUnknownVtbl
*UnknownVtbl
;
169 const IDirectMusicTrack8Vtbl
*TrackVtbl
;
170 const IPersistStreamVtbl
*PersistStreamVtbl
;
173 /* IDirectMusicLyricsTrack fields */
174 LPDMUS_OBJECTDESC pDesc
;
177 /*****************************************************************************
178 * IDirectMusicMarkerTrack implementation structure
180 struct IDirectMusicMarkerTrack
{
181 /* IUnknown fields */
182 const IUnknownVtbl
*UnknownVtbl
;
183 const IDirectMusicTrack8Vtbl
*TrackVtbl
;
184 const IPersistStreamVtbl
*PersistStreamVtbl
;
187 /* IDirectMusicMarkerTrack fields */
188 LPDMUS_OBJECTDESC pDesc
;
191 /*****************************************************************************
192 * IDirectMusicParamControlTrack implementation structure
194 struct IDirectMusicParamControlTrack
{
195 /* IUnknown fields */
196 const IUnknownVtbl
*UnknownVtbl
;
197 const IDirectMusicTrack8Vtbl
*TrackVtbl
;
198 const IPersistStreamVtbl
*PersistStreamVtbl
;
201 /* IDirectMusicParamControlTrack fields */
202 LPDMUS_OBJECTDESC pDesc
;
205 /*****************************************************************************
206 * IDirectMusicSegTriggerTrack implementation structure
208 struct IDirectMusicSegTriggerTrack
{
209 /* IUnknown fields */
210 const IUnknownVtbl
*UnknownVtbl
;
211 const IDirectMusicTrack8Vtbl
*TrackVtbl
;
212 const IPersistStreamVtbl
*PersistStreamVtbl
;
215 /* IDirectMusicSegTriggerTrack fields */
216 LPDMUS_OBJECTDESC pDesc
;
221 /*****************************************************************************
222 * IDirectMusicSeqTrack implementation structure
224 struct IDirectMusicSeqTrack
{
225 /* IUnknown fields */
226 const IUnknownVtbl
*UnknownVtbl
;
227 const IDirectMusicTrack8Vtbl
*TrackVtbl
;
228 const IPersistStreamVtbl
*PersistStreamVtbl
;
231 /* IDirectMusicSeqTrack fields */
232 LPDMUS_OBJECTDESC pDesc
;
235 /*****************************************************************************
236 * IDirectMusicSysExTrack implementation structure
238 struct IDirectMusicSysExTrack
{
239 /* IUnknown fields */
240 const IUnknownVtbl
*UnknownVtbl
;
241 const IDirectMusicTrack8Vtbl
*TrackVtbl
;
242 const IPersistStreamVtbl
*PersistStreamVtbl
;
245 /* IDirectMusicSysExTrack fields */
246 LPDMUS_OBJECTDESC pDesc
;
249 /*****************************************************************************
250 * IDirectMusicTempoTrack implementation structure
252 struct IDirectMusicTempoTrack
{
253 /* IUnknown fields */
254 const IUnknownVtbl
*UnknownVtbl
;
255 const IDirectMusicTrack8Vtbl
*TrackVtbl
;
256 const IPersistStreamVtbl
*PersistStreamVtbl
;
259 /* IDirectMusicTempoTrack fields */
260 LPDMUS_OBJECTDESC pDesc
;
265 /*****************************************************************************
266 * IDirectMusicTimeSigTrack implementation structure
268 struct IDirectMusicTimeSigTrack
{
269 /* IUnknown fields */
270 const IUnknownVtbl
*UnknownVtbl
;
271 const IDirectMusicTrack8Vtbl
*TrackVtbl
;
272 const IPersistStreamVtbl
*PersistStreamVtbl
;
275 /* IDirectMusicTimeSigTrack fields */
276 LPDMUS_OBJECTDESC pDesc
;
279 /*****************************************************************************
280 * IDirectMusicWaveTrack implementation structure
282 struct IDirectMusicWaveTrack
{
283 /* IUnknown fields */
284 const IUnknownVtbl
*UnknownVtbl
;
285 const IDirectMusicTrack8Vtbl
*TrackVtbl
;
286 const IPersistStreamVtbl
*PersistStreamVtbl
;
289 /* IDirectMusicWaveTrack fields */
290 LPDMUS_OBJECTDESC pDesc
;
293 /**********************************************************************
294 * Dll lifetime tracking declaration for dmime.dll
296 extern LONG DMIME_refCount DECLSPEC_HIDDEN
;
297 static inline void DMIME_LockModule(void) { InterlockedIncrement( &DMIME_refCount
); }
298 static inline void DMIME_UnlockModule(void) { InterlockedDecrement( &DMIME_refCount
); }
300 /*****************************************************************************
306 #endif /* __WINE_DMIME_PRIVATE_H */