~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Wine Cross Reference
wine/dlls/dmime/dmime_private.h

Version: ~ [ wine-1.1.33 ] ~ [ wine-1.1.32 ] ~ [ wine-1.1.31 ] ~ [ wine-1.1.30 ] ~ [ wine-1.1.29 ] ~ [ wine-1.1.28 ] ~ [ wine-1.1.27 ] ~ [ wine-1.1.26 ] ~ [ wine-1.1.25 ] ~ [ wine-1.1.24 ] ~ [ wine-1.1.23 ] ~ [ wine-1.1.22 ] ~ [ wine-1.1.21 ] ~ [ wine-1.1.20 ] ~ [ wine-1.1.19 ] ~ [ wine-1.1.18 ] ~ [ wine-1.1.17 ] ~ [ wine-1.1.16 ] ~ [ wine-1.1.15 ] ~ [ wine-1.1.14 ] ~ [ wine-1.1.13 ] ~ [ wine-1.1.12 ] ~ [ wine-1.1.11 ] ~ [ wine-1.1.10 ] ~ [ wine-1.1.9 ] ~ [ wine-1.1.8 ] ~ [ wine-1.1.7 ] ~ [ wine-1.0.1 ] ~ [ wine-1.1.6 ] ~ [ wine-1.1.5 ] ~ [ wine-1.1.4 ] ~ [ wine-1.1.3 ] ~ [ wine-1.1.2 ] ~ [ wine-1.1.1 ] ~ [ wine-1.1.0 ] ~ [ wine-1.0 ] ~

  1 /* DirectMusicInteractiveEngine Private Include
  2  *
  3  * Copyright (C) 2003-2004 Rok Mandeljc
  4  *
  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.
  9  *
 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.
 14  *
 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
 18  */
 19 
 20 #ifndef __WINE_DMIME_PRIVATE_H
 21 #define __WINE_DMIME_PRIVATE_H
 22 
 23 #include <stdio.h>
 24 #include <stdarg.h>
 25 #include <string.h>
 26 
 27 #define COBJMACROS
 28 
 29 #include "windef.h"
 30 #include "winbase.h"
 31 #include "winnt.h"
 32 #include "wingdi.h"
 33 #include "winuser.h"
 34 
 35 #include "wine/debug.h"
 36 #include "wine/list.h"
 37 #include "wine/unicode.h"
 38 #include "winreg.h"
 39 #include "objbase.h"
 40 
 41 #include "dmusici.h"
 42 #include "dmusicf.h"
 43 #include "dmusics.h"
 44 #include "dmusicc.h"
 45 
 46 /*****************************************************************************
 47  * Interfaces
 48  */
 49 typedef struct IDirectMusicPerformance8Impl IDirectMusicPerformance8Impl;
 50 typedef struct IDirectMusicSegment8Impl IDirectMusicSegment8Impl;
 51 typedef struct IDirectMusicSegmentState8Impl IDirectMusicSegmentState8Impl;
 52 typedef struct IDirectMusicGraphImpl IDirectMusicGraphImpl;
 53 typedef struct IDirectMusicAudioPathImpl IDirectMusicAudioPathImpl;
 54 
 55 typedef struct IDirectMusicLyricsTrack IDirectMusicLyricsTrack;
 56 typedef struct IDirectMusicMarkerTrack IDirectMusicMarkerTrack;
 57 typedef struct IDirectMusicParamControlTrack IDirectMusicParamControlTrack;
 58 typedef struct IDirectMusicSegTriggerTrack IDirectMusicSegTriggerTrack;
 59 typedef struct IDirectMusicSeqTrack IDirectMusicSeqTrack;
 60 typedef struct IDirectMusicSysExTrack IDirectMusicSysExTrack;
 61 typedef struct IDirectMusicTempoTrack IDirectMusicTempoTrack;
 62 typedef struct IDirectMusicTimeSigTrack IDirectMusicTimeSigTrack;
 63 typedef struct IDirectMusicWaveTrack IDirectMusicWaveTrack;
 64         
 65 /*****************************************************************************
 66  * ClassFactory
 67  */
 68 extern HRESULT WINAPI DMUSIC_CreateDirectMusicPerformanceImpl (LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter);
 69 extern HRESULT WINAPI DMUSIC_CreateDirectMusicSegmentImpl (LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter);
 70 extern HRESULT WINAPI DMUSIC_CreateDirectMusicSegmentStateImpl (LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter);
 71 extern HRESULT WINAPI DMUSIC_CreateDirectMusicGraphImpl (LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter);
 72 extern HRESULT WINAPI DMUSIC_CreateDirectMusicAudioPathImpl (LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter);
 73 
 74 extern HRESULT WINAPI DMUSIC_CreateDirectMusicLyricsTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter);
 75 extern HRESULT WINAPI DMUSIC_CreateDirectMusicMarkerTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter);
 76 extern HRESULT WINAPI DMUSIC_CreateDirectMusicParamControlTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter);
 77 extern HRESULT WINAPI DMUSIC_CreateDirectMusicSegTriggerTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter);
 78 extern HRESULT WINAPI DMUSIC_CreateDirectMusicSeqTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter);
 79 extern HRESULT WINAPI DMUSIC_CreateDirectMusicSysExTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter);
 80 extern HRESULT WINAPI DMUSIC_CreateDirectMusicTempoTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter);
 81 extern HRESULT WINAPI DMUSIC_CreateDirectMusicTimeSigTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter);
 82 extern HRESULT WINAPI DMUSIC_CreateDirectMusicWaveTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter);
 83 
 84 
 85 /*****************************************************************************
 86  * Auxiliary definitions
 87  */
 88 typedef struct _DMUS_PRIVATE_SEGMENT_TRACK {
 89   struct list entry; /* for listing elements */
 90   DWORD dwGroupBits;
 91   IDirectMusicTrack* pTrack;
 92 } DMUS_PRIVATE_SEGMENT_TRACK, *LPDMUS_PRIVATE_SEGMENT_TRACK;
 93 
 94 typedef struct _DMUS_PRIVATE_TEMPO_ITEM {
 95   struct list entry; /* for listing elements */
 96   DMUS_IO_TEMPO_ITEM item;
 97 } DMUS_PRIVATE_TEMPO_ITEM, *LPDMUS_PRIVATE_TEMPO_ITEM;
 98 
 99 typedef struct _DMUS_PRIVATE_SEGMENT_ITEM {
100   struct list entry; /* for listing elements */
101   DMUS_IO_SEGMENT_ITEM_HEADER header;
102   IDirectMusicObject* pObject;
103   WCHAR wszName[DMUS_MAX_NAME];
104 } DMUS_PRIVATE_SEGMENT_ITEM, *LPDMUS_PRIVATE_SEGMENT_ITEM;
105 
106 typedef struct _DMUS_PRIVATE_GRAPH_TOOL {
107   struct list entry; /* for listing elements */
108   DWORD dwIndex;
109   IDirectMusicTool* pTool;
110 } DMUS_PRIVATE_GRAPH_TOOL, *LPDMUS_PRIVATE_GRAPH_TOOL;
111 
112 typedef struct _DMUS_PRIVATE_TEMPO_PLAY_STATE {
113   DWORD dummy;
114 } DMUS_PRIVATE_TEMPO_PLAY_STATE, *LPDMUS_PRIVATE_TEMPO_PLAY_STATE;
115 
116 /* some sort of aux. performance channel: as far as i can understand, these are 
117    used to represent a particular midi channel in particular group at particular
118    group; so all we need to do is to fill it with parent port, group and midi 
119    channel ? */
120 typedef struct DMUSIC_PRIVATE_PCHANNEL_ {
121         DWORD channel; /* map to this channel... */
122         DWORD group; /* ... in this group ... */
123         IDirectMusicPort *port; /* ... at this port */
124 } DMUSIC_PRIVATE_PCHANNEL, *LPDMUSIC_PRIVATE_PCHANNEL;
125 
126 /*****************************************************************************
127  * IDirectMusicPerformance8Impl implementation structure
128  */
129 struct IDirectMusicPerformance8Impl {
130   /* IUnknown fields */
131   const IDirectMusicPerformance8Vtbl *lpVtbl;
132   LONG                   ref;
133 
134   /* IDirectMusicPerformanceImpl fields */
135   IDirectMusic8*         pDirectMusic;
136   IDirectSound*          pDirectSound;
137   IDirectMusicGraph*     pToolGraph;
138   DMUS_AUDIOPARAMS       pParams;
139 
140   /* global parameters */
141   BOOL  fAutoDownload;
142   char  cMasterGrooveLevel;
143   float fMasterTempo;
144   long  lMasterVolume;
145         
146   /* performance channels */
147   DMUSIC_PRIVATE_PCHANNEL PChannel[32];
148 
149    /* IDirectMusicPerformance8Impl fields */
150   IDirectMusicAudioPath* pDefaultPath;
151   HANDLE hNotification;
152   REFERENCE_TIME rtMinimum;
153 
154   REFERENCE_TIME rtLatencyTime;
155   DWORD dwBumperLength;
156   DWORD dwPrepareTime;
157   /** Message Processing */
158   HANDLE         procThread;
159   DWORD          procThreadId;
160   REFERENCE_TIME procThreadStartTime;
161   BOOL           procThreadTicStarted;
162   CRITICAL_SECTION safe;
163   struct DMUS_PMSGItem* head; 
164   struct DMUS_PMSGItem* imm_head; 
165 };
166 
167 /*****************************************************************************
168  * IDirectMusicSegment8Impl implementation structure
169  */
170 struct IDirectMusicSegment8Impl {
171   /* IUnknown fields */
172   const IUnknownVtbl *UnknownVtbl;
173   const IDirectMusicSegment8Vtbl *SegmentVtbl;
174   const IDirectMusicObjectVtbl *ObjectVtbl;
175   const IPersistStreamVtbl *PersistStreamVtbl;
176   LONG           ref;
177 
178   /* IDirectMusicSegment8Impl fields */
179   LPDMUS_OBJECTDESC      pDesc;
180   DMUS_IO_SEGMENT_HEADER header;
181   IDirectMusicGraph*     pGraph; 
182   struct list Tracks;
183 };
184 
185 /*****************************************************************************
186  * IDirectMusicSegmentState8Impl implementation structure
187  */
188 struct IDirectMusicSegmentState8Impl {
189   /* IUnknown fields */
190   const IDirectMusicSegmentState8Vtbl *lpVtbl;
191   LONG           ref;
192 
193   /* IDirectMusicSegmentState8Impl fields */
194 };
195 
196 /*****************************************************************************
197  * IDirectMusicGraphImpl implementation structure
198  */
199 struct IDirectMusicGraphImpl {
200   /* IUnknown fields */
201   const IUnknownVtbl *UnknownVtbl;
202   const IDirectMusicGraphVtbl *GraphVtbl;
203   const IDirectMusicObjectVtbl *ObjectVtbl;
204   const IPersistStreamVtbl *PersistStreamVtbl;
205   LONG           ref;
206 
207   /* IDirectMusicGraphImpl fields */
208   LPDMUS_OBJECTDESC pDesc;
209   WORD              num_tools;
210   struct list       Tools;
211 };
212 
213 /*****************************************************************************
214  * IDirectMusicAudioPathImpl implementation structure
215  */
216 struct IDirectMusicAudioPathImpl {
217   /* IUnknown fields */
218   const IUnknownVtbl *UnknownVtbl;
219   const IDirectMusicAudioPathVtbl *AudioPathVtbl;
220   const IDirectMusicObjectVtbl *ObjectVtbl;
221   const IPersistStreamVtbl *PersistStreamVtbl;
222   LONG           ref;
223 
224   /* IDirectMusicAudioPathImpl fields */
225   LPDMUS_OBJECTDESC pDesc;
226         
227   IDirectMusicPerformance8* pPerf;
228   IDirectMusicGraph*        pToolGraph;
229   IDirectSoundBuffer*       pDSBuffer;
230   IDirectSoundBuffer*       pPrimary;
231 
232   BOOL fActive;
233 };
234 
235 /*****************************************************************************
236  * IDirectMusicLyricsTrack implementation structure
237  */
238 struct IDirectMusicLyricsTrack
239 {
240   /* IUnknown fields */
241   const IUnknownVtbl *UnknownVtbl;
242   const IDirectMusicTrack8Vtbl *TrackVtbl;
243   const IPersistStreamVtbl *PersistStreamVtbl;
244   LONG           ref;
245 
246   /* IDirectMusicLyricsTrack fields */
247   LPDMUS_OBJECTDESC pDesc;
248 };
249 
250 /*****************************************************************************
251  * IDirectMusicMarkerTrack implementation structure
252  */
253 struct IDirectMusicMarkerTrack {
254   /* IUnknown fields */
255   const IUnknownVtbl *UnknownVtbl;
256   const IDirectMusicTrack8Vtbl *TrackVtbl;
257   const IPersistStreamVtbl *PersistStreamVtbl;
258   LONG           ref;
259 
260   /* IDirectMusicMarkerTrack fields */
261   LPDMUS_OBJECTDESC pDesc;
262 };
263 
264 /*****************************************************************************
265  * IDirectMusicParamControlTrack implementation structure
266  */
267 struct IDirectMusicParamControlTrack {
268   /* IUnknown fields */
269   const IUnknownVtbl *UnknownVtbl;
270   const IDirectMusicTrack8Vtbl *TrackVtbl;
271   const IPersistStreamVtbl *PersistStreamVtbl;
272   LONG           ref;
273 
274   /* IDirectMusicParamControlTrack fields */
275   LPDMUS_OBJECTDESC pDesc;
276 };
277 
278 /*****************************************************************************
279  * IDirectMusicSegTriggerTrack implementation structure
280  */
281 struct IDirectMusicSegTriggerTrack {
282   /* IUnknown fields */
283   const IUnknownVtbl *UnknownVtbl;
284   const IDirectMusicTrack8Vtbl *TrackVtbl;
285   const IPersistStreamVtbl *PersistStreamVtbl;
286   LONG           ref;
287 
288   /* IDirectMusicSegTriggerTrack fields */
289   LPDMUS_OBJECTDESC pDesc;
290 
291   struct list Items;
292 };
293 
294 /*****************************************************************************
295  * IDirectMusicSeqTrack implementation structure
296  */
297 struct IDirectMusicSeqTrack {
298   /* IUnknown fields */
299   const IUnknownVtbl *UnknownVtbl;
300   const IDirectMusicTrack8Vtbl *TrackVtbl;
301   const IPersistStreamVtbl *PersistStreamVtbl;
302   LONG           ref;
303 
304   /* IDirectMusicSeqTrack fields */
305   LPDMUS_OBJECTDESC pDesc;
306 };
307 
308 /*****************************************************************************
309  * IDirectMusicSysExTrack implementation structure
310  */
311 struct IDirectMusicSysExTrack {
312   /* IUnknown fields */
313   const IUnknownVtbl *UnknownVtbl;
314   const IDirectMusicTrack8Vtbl *TrackVtbl;
315   const IPersistStreamVtbl *PersistStreamVtbl;
316   LONG           ref;
317 
318   /* IDirectMusicSysExTrack fields */
319   LPDMUS_OBJECTDESC pDesc;
320 };
321 
322 /*****************************************************************************
323  * IDirectMusicTempoTrack implementation structure
324  */
325 struct IDirectMusicTempoTrack {
326   /* IUnknown fields */
327   const IUnknownVtbl *UnknownVtbl;
328   const IDirectMusicTrack8Vtbl *TrackVtbl;
329   const IPersistStreamVtbl *PersistStreamVtbl;
330   LONG           ref;
331 
332   /* IDirectMusicTempoTrack fields */
333   LPDMUS_OBJECTDESC pDesc;
334   BOOL enabled;
335   struct list Items;
336 };
337 
338 /*****************************************************************************
339  * IDirectMusicTimeSigTrack implementation structure
340  */
341 struct IDirectMusicTimeSigTrack {
342   /* IUnknown fields */
343   const IUnknownVtbl *UnknownVtbl;
344   const IDirectMusicTrack8Vtbl *TrackVtbl;
345   const IPersistStreamVtbl *PersistStreamVtbl;
346   LONG           ref;
347 
348   /* IDirectMusicTimeSigTrack fields */
349   LPDMUS_OBJECTDESC pDesc;
350 };
351 
352 /*****************************************************************************
353  * IDirectMusicWaveTrack implementation structure
354  */
355 struct IDirectMusicWaveTrack {
356   /* IUnknown fields */
357   const IUnknownVtbl *UnknownVtbl;
358   const IDirectMusicTrack8Vtbl *TrackVtbl;
359   const IPersistStreamVtbl *PersistStreamVtbl;
360   LONG           ref;
361 
362   /* IDirectMusicWaveTrack fields */
363   LPDMUS_OBJECTDESC pDesc;
364 };
365 
366 /**********************************************************************
367  * Dll lifetime tracking declaration for dmime.dll
368  */
369 extern LONG DMIME_refCount;
370 static inline void DMIME_LockModule(void) { InterlockedIncrement( &DMIME_refCount ); }
371 static inline void DMIME_UnlockModule(void) { InterlockedDecrement( &DMIME_refCount ); }
372 
373 /*****************************************************************************
374  * Misc.
375  */
376 
377 #include "dmutils.h"
378 
379 #endif  /* __WINE_DMIME_PRIVATE_H */
380 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.