1 /* DirectMusicInteractiveEngine 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_DMIME_PRIVATE_H
21 #define __WINE_DMIME_PRIVATE_H
24 #include "wine/debug.h"
34 #include "../dmusic/dmusic_private.h"
36 /*****************************************************************************
39 typedef struct IDirectMusicPerformance8Impl IDirectMusicPerformance8Impl
;
40 typedef struct IDirectMusicSegment8Impl IDirectMusicSegment8Impl
;
41 typedef struct IDirectMusicSegmentState8Impl IDirectMusicSegmentState8Impl
;
42 typedef struct IDirectMusicGraphImpl IDirectMusicGraphImpl
;
43 typedef struct IDirectMusicSongImpl IDirectMusicSongImpl
;
44 typedef struct IDirectMusicAudioPathImpl IDirectMusicAudioPathImpl
;
45 typedef struct IDirectMusicTool8Impl IDirectMusicTool8Impl
;
46 typedef struct IDirectMusicTrack8Impl IDirectMusicTrack8Impl
;
47 typedef struct IDirectMusicPatternTrackImpl IDirectMusicPatternTrackImpl
;
49 /*****************************************************************************
50 * Predeclare the interface implementation structures
52 extern ICOM_VTABLE(IDirectMusicPerformance8
) DirectMusicPerformance8_Vtbl
;
53 extern ICOM_VTABLE(IDirectMusicSegment8
) DirectMusicSegment8_Vtbl
;
54 extern ICOM_VTABLE(IDirectMusicSegmentState8
) DirectMusicSegmentState8_Vtbl
;
55 extern ICOM_VTABLE(IDirectMusicGraph
) DirectMusicGraph_Vtbl
;
56 extern ICOM_VTABLE(IDirectMusicSong
) DirectMusicSong_Vtbl
;
57 extern ICOM_VTABLE(IDirectMusicAudioPath
) DirectMusicAudioPath_Vtbl
;
58 extern ICOM_VTABLE(IDirectMusicTool8
) DirectMusicTool8_Vtbl
;
59 extern ICOM_VTABLE(IDirectMusicTrack8
) DirectMusicTrack8_Vtbl
;
60 extern ICOM_VTABLE(IDirectMusicPatternTrack
) DirectMusicPatternTrack_Vtbl
;
62 /*****************************************************************************
65 /* can support IID_IDirectMusicPerformance and IID_IDirectMusicPerformance8
66 * return always an IDirectMusicPerformance8Impl
68 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicPerformance (LPCGUID lpcGUID
, LPDIRECTMUSICPERFORMANCE8
*ppDMPerf
, LPUNKNOWN pUnkOuter
);
69 /* can support IID_IDirectMusicSegment and IID_IDirectMusicSegment8
70 * return always an IDirectMusicSegment8Impl
72 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicSegment (LPCGUID lpcGUID
, LPDIRECTMUSICSEGMENT8
*ppDMSeg
, LPUNKNOWN pUnkOuter
);
73 /* can support IID_IDirectMusicSegmentState and IID_IDirectMusicSegmentState8
74 * return always an IDirectMusicSegmentState8Impl
76 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicSegmentState (LPCGUID lpcGUID
, LPDIRECTMUSICSEGMENTSTATE8
*ppDMSeg
, LPUNKNOWN pUnkOuter
);
77 /* can support IID_IDirectMusicSegmentgraph
78 * return always an IDirectMusicGraphImpl
80 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicGraph (LPCGUID lpcGUID
, LPDIRECTMUSICGRAPH
*ppDMGrph
, LPUNKNOWN pUnkOuter
);
81 /* can support IID_IDirectMusicSong
82 * return always an IDirectMusicSong
84 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicSong (LPCGUID lpcGUID
, LPDIRECTMUSICSONG
*ppDMSng
, LPUNKNOWN pUnkOuter
);
85 /* can support IID_IDirectMusicAudioPath
86 * return always an IDirectMusicAudioPathImpl
88 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicAudioPath (LPCGUID lpcGUID
, LPDIRECTMUSICAUDIOPATH
*ppDMApath
, LPUNKNOWN pUnkOuter
);
89 /* can support IID_IDirectMusicTool and IID_IDirectMusicTool8
90 * return always an IDirectMusicTool8Impl
92 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicTool (LPCGUID lpcGUID
, LPDIRECTMUSICTOOL8
*ppDMTool
, LPUNKNOWN pUnkOuter
);
93 /* can support IID_IDirectMusicTrack and IID_IDirectMusicTrack8
94 * return always an IDirectMusicTrack8Impl
96 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicTrack (LPCGUID lpcGUID
, LPDIRECTMUSICTRACK8
*ppDMTrack
, LPUNKNOWN pUnkOuter
);
97 /* can support IID_IDirectMusicPatternTrack
98 * return always an IDirectMusicPatternTrackImpl
100 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicPatternTrack (LPCGUID lpcGUID
, LPDIRECTMUSICPATTERNTRACK
*ppDMPtrnTrack
, LPUNKNOWN pUnkOuter
);
102 /*****************************************************************************
103 * IDirectMusicPerformance8Impl implementation structure
105 struct IDirectMusicPerformance8Impl
107 /* IUnknown fields */
108 ICOM_VFIELD(IDirectMusicPerformance8
);
111 /* IDirectMusicPerformanceImpl fields */
112 IDirectMusic8
* pDirectMusic
;
113 IDirectSound
* pDirectSound
;
114 IDirectMusicGraph
* pToolGraph
;
115 DMUS_AUDIOPARAMS pParams
;
117 /* global parameters */
119 char cMasterGrooveLevel
;
123 /* performance channels */
124 DMUSIC_PRIVATE_PCHANNEL PChannel
[1];
126 /* IDirectMusicPerformance8Impl fields */
127 IDirectMusicAudioPath
* pDefaultPath
;
131 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_QueryInterface (LPDIRECTMUSICPERFORMANCE8 iface
, REFIID riid
, LPVOID
*ppobj
);
132 extern ULONG WINAPI
IDirectMusicPerformance8Impl_AddRef (LPDIRECTMUSICPERFORMANCE8 iface
);
133 extern ULONG WINAPI
IDirectMusicPerformance8Impl_Release (LPDIRECTMUSICPERFORMANCE8 iface
);
134 /* IDirectMusicPerformance: */
135 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_Init (LPDIRECTMUSICPERFORMANCE8 iface
, IDirectMusic
** ppDirectMusic
, LPDIRECTSOUND pDirectSound
, HWND hWnd
);
136 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_PlaySegment (LPDIRECTMUSICPERFORMANCE8 iface
, IDirectMusicSegment
* pSegment
, DWORD dwFlags
, __int64 i64StartTime
, IDirectMusicSegmentState
** ppSegmentState
);
137 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_Stop (LPDIRECTMUSICPERFORMANCE8 iface
, IDirectMusicSegment
* pSegment
, IDirectMusicSegmentState
* pSegmentState
, MUSIC_TIME mtTime
, DWORD dwFlags
);
138 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_GetSegmentState (LPDIRECTMUSICPERFORMANCE8 iface
, IDirectMusicSegmentState
** ppSegmentState
, MUSIC_TIME mtTime
);
139 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_SetPrepareTime (LPDIRECTMUSICPERFORMANCE8 iface
, DWORD dwMilliSeconds
);
140 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_GetPrepareTime (LPDIRECTMUSICPERFORMANCE8 iface
, DWORD
* pdwMilliSeconds
);
141 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_SetBumperLength (LPDIRECTMUSICPERFORMANCE8 iface
, DWORD dwMilliSeconds
);
142 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_GetBumperLength (LPDIRECTMUSICPERFORMANCE8 iface
, DWORD
* pdwMilliSeconds
);
143 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_SendPMsg (LPDIRECTMUSICPERFORMANCE8 iface
, DMUS_PMSG
* pPMSG
);
144 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_MusicToReferenceTime (LPDIRECTMUSICPERFORMANCE8 iface
, MUSIC_TIME mtTime
, REFERENCE_TIME
* prtTime
);
145 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_ReferenceToMusicTime (LPDIRECTMUSICPERFORMANCE8 iface
, REFERENCE_TIME rtTime
, MUSIC_TIME
* pmtTime
);
146 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_IsPlaying (LPDIRECTMUSICPERFORMANCE8 iface
, IDirectMusicSegment
* pSegment
, IDirectMusicSegmentState
* pSegState
);
147 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_GetTime (LPDIRECTMUSICPERFORMANCE8 iface
, REFERENCE_TIME
* prtNow
, MUSIC_TIME
* pmtNow
);
148 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_AllocPMsg (LPDIRECTMUSICPERFORMANCE8 iface
, ULONG cb
, DMUS_PMSG
** ppPMSG
);
149 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_FreePMsg (LPDIRECTMUSICPERFORMANCE8 iface
, DMUS_PMSG
* pPMSG
);
150 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_GetGraph (LPDIRECTMUSICPERFORMANCE8 iface
, IDirectMusicGraph
** ppGraph
);
151 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_SetGraph (LPDIRECTMUSICPERFORMANCE8 iface
, IDirectMusicGraph
* pGraph
);
152 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_SetNotificationHandle (LPDIRECTMUSICPERFORMANCE8 iface
, HANDLE hNotification
, REFERENCE_TIME rtMinimum
);
153 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_GetNotificationPMsg (LPDIRECTMUSICPERFORMANCE8 iface
, DMUS_NOTIFICATION_PMSG
** ppNotificationPMsg
);
154 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_AddNotificationType (LPDIRECTMUSICPERFORMANCE8 iface
, REFGUID rguidNotificationType
);
155 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_RemoveNotificationType (LPDIRECTMUSICPERFORMANCE8 iface
, REFGUID rguidNotificationType
);
156 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_AddPort (LPDIRECTMUSICPERFORMANCE8 iface
, IDirectMusicPort
* pPort
);
157 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_RemovePort (LPDIRECTMUSICPERFORMANCE8 iface
, IDirectMusicPort
* pPort
);
158 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_AssignPChannelBlock (LPDIRECTMUSICPERFORMANCE8 iface
, DWORD dwBlockNum
, IDirectMusicPort
* pPort
, DWORD dwGroup
);
159 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_AssignPChannel (LPDIRECTMUSICPERFORMANCE8 iface
, DWORD dwPChannel
, IDirectMusicPort
* pPort
, DWORD dwGroup
, DWORD dwMChannel
);
160 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_PChannelInfo (LPDIRECTMUSICPERFORMANCE8 iface
, DWORD dwPChannel
, IDirectMusicPort
** ppPort
, DWORD
* pdwGroup
, DWORD
* pdwMChannel
);
161 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_DownloadInstrument (LPDIRECTMUSICPERFORMANCE8 iface
, IDirectMusicInstrument
* pInst
, DWORD dwPChannel
, IDirectMusicDownloadedInstrument
** ppDownInst
, DMUS_NOTERANGE
* pNoteRanges
, DWORD dwNumNoteRanges
, IDirectMusicPort
** ppPort
, DWORD
* pdwGroup
, DWORD
* pdwMChannel
);
162 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_Invalidate (LPDIRECTMUSICPERFORMANCE8 iface
, MUSIC_TIME mtTime
, DWORD dwFlags
);
163 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_GetParam (LPDIRECTMUSICPERFORMANCE8 iface
, REFGUID rguidType
, DWORD dwGroupBits
, DWORD dwIndex
, MUSIC_TIME mtTime
, MUSIC_TIME
* pmtNext
, void* pParam
);
164 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_SetParam (LPDIRECTMUSICPERFORMANCE8 iface
, REFGUID rguidType
, DWORD dwGroupBits
, DWORD dwIndex
, MUSIC_TIME mtTime
, void* pParam
);
165 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_GetGlobalParam (LPDIRECTMUSICPERFORMANCE8 iface
, REFGUID rguidType
, void* pParam
, DWORD dwSize
);
166 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_SetGlobalParam (LPDIRECTMUSICPERFORMANCE8 iface
, REFGUID rguidType
, void* pParam
, DWORD dwSize
);
167 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_GetLatencyTime (LPDIRECTMUSICPERFORMANCE8 iface
, REFERENCE_TIME
* prtTime
);
168 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_GetQueueTime (LPDIRECTMUSICPERFORMANCE8 iface
, REFERENCE_TIME
* prtTime
);
169 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_AdjustTime (LPDIRECTMUSICPERFORMANCE8 iface
, REFERENCE_TIME rtAmount
);
170 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_CloseDown (LPDIRECTMUSICPERFORMANCE8 iface
);
171 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_GetResolvedTime (LPDIRECTMUSICPERFORMANCE8 iface
, REFERENCE_TIME rtTime
, REFERENCE_TIME
* prtResolved
, DWORD dwTimeResolveFlags
);
172 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_MIDIToMusic (LPDIRECTMUSICPERFORMANCE8 iface
, BYTE bMIDIValue
, DMUS_CHORD_KEY
* pChord
, BYTE bPlayMode
, BYTE bChordLevel
, WORD
* pwMusicValue
);
173 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_MusicToMIDI (LPDIRECTMUSICPERFORMANCE8 iface
, WORD wMusicValue
, DMUS_CHORD_KEY
* pChord
, BYTE bPlayMode
, BYTE bChordLevel
, BYTE
* pbMIDIValue
);
174 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_TimeToRhythm (LPDIRECTMUSICPERFORMANCE8 iface
, MUSIC_TIME mtTime
, DMUS_TIMESIGNATURE
* pTimeSig
, WORD
* pwMeasure
, BYTE
* pbBeat
, BYTE
* pbGrid
, short* pnOffset
);
175 extern HRESULT WINAPI
IDirectMusicPerformance8Impl_RhythmToTime (LPDIRECTMUSICPERFORMANCE8 iface
, WORD wMeasure
, BYTE bBeat
, BYTE bGrid
, short nOffset
, DMUS_TIMESIGNATURE
* pTimeSig
, MUSIC_TIME
* pmtTime
);
176 /* IDirectMusicPerformance8: */
177 extern HRESULT WINAPI
IDirectMusicPerformance8ImplInitAudio (LPDIRECTMUSICPERFORMANCE8 iface
, IDirectMusic
** ppDirectMusic
, IDirectSound
** ppDirectSound
, HWND hWnd
, DWORD dwDefaultPathType
, DWORD dwPChannelCount
, DWORD dwFlags
, DMUS_AUDIOPARAMS
* pParams
);
178 extern HRESULT WINAPI
IDirectMusicPerformance8ImplPlaySegmentEx (LPDIRECTMUSICPERFORMANCE8 iface
, IUnknown
* pSource
, WCHAR
* pwzSegmentName
, IUnknown
* pTransition
, DWORD dwFlags
, __int64 i64StartTime
, IDirectMusicSegmentState
** ppSegmentState
, IUnknown
* pFrom
, IUnknown
* pAudioPath
);
179 extern HRESULT WINAPI
IDirectMusicPerformance8ImplStopEx (LPDIRECTMUSICPERFORMANCE8 iface
, IUnknown
* pObjectToStop
, __int64 i64StopTime
, DWORD dwFlags
);
180 extern HRESULT WINAPI
IDirectMusicPerformance8ImplClonePMsg (LPDIRECTMUSICPERFORMANCE8 iface
, DMUS_PMSG
* pSourcePMSG
, DMUS_PMSG
** ppCopyPMSG
);
181 extern HRESULT WINAPI
IDirectMusicPerformance8ImplCreateAudioPath (LPDIRECTMUSICPERFORMANCE8 iface
, IUnknown
* pSourceConfig
, BOOL fActivate
, IDirectMusicAudioPath
** ppNewPath
);
182 extern HRESULT WINAPI
IDirectMusicPerformance8ImplCreateStandardAudioPath (LPDIRECTMUSICPERFORMANCE8 iface
, DWORD dwType
, DWORD dwPChannelCount
, BOOL fActivate
, IDirectMusicAudioPath
** ppNewPath
);
183 extern HRESULT WINAPI
IDirectMusicPerformance8ImplSetDefaultAudioPath (LPDIRECTMUSICPERFORMANCE8 iface
, IDirectMusicAudioPath
* pAudioPath
);
184 extern HRESULT WINAPI
IDirectMusicPerformance8ImplGetDefaultAudioPath (LPDIRECTMUSICPERFORMANCE8 iface
, IDirectMusicAudioPath
** ppAudioPath
);
185 extern HRESULT WINAPI
IDirectMusicPerformance8ImplGetParamEx (LPDIRECTMUSICPERFORMANCE8 iface
, REFGUID rguidType
, DWORD dwTrackID
, DWORD dwGroupBits
, DWORD dwIndex
, MUSIC_TIME mtTime
, MUSIC_TIME
* pmtNext
, void* pParam
);
187 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicPerformance8 (LPCGUID lpcGUID
, LPDIRECTMUSICPERFORMANCE8
*ppDMPerf8
, LPUNKNOWN pUnkOuter
);
189 /*****************************************************************************
190 * IDirectMusicSegment8Impl implementation structure
192 struct IDirectMusicSegment8Impl
194 /* IUnknown fields */
195 ICOM_VFIELD(IDirectMusicSegment8
);
198 /* IDirectMusicSegment8Impl fields */
202 extern HRESULT WINAPI
IDirectMusicSegment8Impl_QueryInterface (LPDIRECTMUSICSEGMENT8 iface
, REFIID riid
, LPVOID
*ppobj
);
203 extern ULONG WINAPI
IDirectMusicSegment8Impl_AddRef (LPDIRECTMUSICSEGMENT8 iface
);
204 extern ULONG WINAPI
IDirectMusicSegment8Impl_Release (LPDIRECTMUSICSEGMENT8 iface
);
205 /* IDirectMusicSegment: */
206 extern HRESULT WINAPI
IDirectMusicSegment8Impl_GetLength (LPDIRECTMUSICSEGMENT8 iface
, MUSIC_TIME
* pmtLength
);
207 extern HRESULT WINAPI
IDirectMusicSegment8Impl_SetLength (LPDIRECTMUSICSEGMENT8 iface
, MUSIC_TIME mtLength
);
208 extern HRESULT WINAPI
IDirectMusicSegment8Impl_GetRepeats (LPDIRECTMUSICSEGMENT8 iface
, DWORD
* pdwRepeats
);
209 extern HRESULT WINAPI
IDirectMusicSegment8Impl_SetRepeats (LPDIRECTMUSICSEGMENT8 iface
, DWORD dwRepeats
);
210 extern HRESULT WINAPI
IDirectMusicSegment8Impl_GetDefaultResolution (LPDIRECTMUSICSEGMENT8 iface
, DWORD
* pdwResolution
);
211 extern HRESULT WINAPI
IDirectMusicSegment8Impl_SetDefaultResolution (LPDIRECTMUSICSEGMENT8 iface
, DWORD dwResolution
);
212 extern HRESULT WINAPI
IDirectMusicSegment8Impl_GetTrack (LPDIRECTMUSICSEGMENT8 iface
, REFGUID rguidType
, DWORD dwGroupBits
, DWORD dwIndex
, IDirectMusicTrack
** ppTrack
);
213 extern HRESULT WINAPI
IDirectMusicSegment8Impl_GetTrackGroup (LPDIRECTMUSICSEGMENT8 iface
, IDirectMusicTrack
* pTrack
, DWORD
* pdwGroupBits
);
214 extern HRESULT WINAPI
IDirectMusicSegment8Impl_InsertTrack (LPDIRECTMUSICSEGMENT8 iface
, IDirectMusicTrack
* pTrack
, DWORD dwGroupBits
);
215 extern HRESULT WINAPI
IDirectMusicSegment8Impl_RemoveTrack (LPDIRECTMUSICSEGMENT8 iface
, IDirectMusicTrack
* pTrack
);
216 extern HRESULT WINAPI
IDirectMusicSegment8Impl_InitPlay (LPDIRECTMUSICSEGMENT8 iface
, IDirectMusicSegmentState
** ppSegState
, IDirectMusicPerformance
* pPerformance
, DWORD dwFlags
);
217 extern HRESULT WINAPI
IDirectMusicSegment8Impl_GetGraph (LPDIRECTMUSICSEGMENT8 iface
, IDirectMusicGraph
** ppGraph
);
218 extern HRESULT WINAPI
IDirectMusicSegment8Impl_SetGraph (LPDIRECTMUSICSEGMENT8 iface
, IDirectMusicGraph
* pGraph
);
219 extern HRESULT WINAPI
IDirectMusicSegment8Impl_AddNotificationType (LPDIRECTMUSICSEGMENT8 iface
, REFGUID rguidNotificationType
);
220 extern HRESULT WINAPI
IDirectMusicSegment8Impl_RemoveNotificationType (LPDIRECTMUSICSEGMENT8 iface
, REFGUID rguidNotificationType
);
221 extern HRESULT WINAPI
IDirectMusicSegment8Impl_GetParam (LPDIRECTMUSICSEGMENT8 iface
, REFGUID rguidType
, DWORD dwGroupBits
, DWORD dwIndex
, MUSIC_TIME mtTime
, MUSIC_TIME
* pmtNext
, void* pParam
);
222 extern HRESULT WINAPI
IDirectMusicSegment8Impl_SetParam (LPDIRECTMUSICSEGMENT8 iface
, REFGUID rguidType
, DWORD dwGroupBits
, DWORD dwIndex
, MUSIC_TIME mtTime
, void* pParam
);
223 extern HRESULT WINAPI
IDirectMusicSegment8Impl_Clone (LPDIRECTMUSICSEGMENT8 iface
, MUSIC_TIME mtStart
, MUSIC_TIME mtEnd
, IDirectMusicSegment
** ppSegment
);
224 extern HRESULT WINAPI
IDirectMusicSegment8Impl_SetStartPoint (LPDIRECTMUSICSEGMENT8 iface
, MUSIC_TIME mtStart
);
225 extern HRESULT WINAPI
IDirectMusicSegment8Impl_GetStartPoint (LPDIRECTMUSICSEGMENT8 iface
, MUSIC_TIME
* pmtStart
);
226 extern HRESULT WINAPI
IDirectMusicSegment8Impl_SetLoopPoints (LPDIRECTMUSICSEGMENT8 iface
, MUSIC_TIME mtStart
, MUSIC_TIME mtEnd
);
227 extern HRESULT WINAPI
IDirectMusicSegment8Impl_GetLoopPoints (LPDIRECTMUSICSEGMENT8 iface
, MUSIC_TIME
* pmtStart
, MUSIC_TIME
* pmtEnd
);
228 extern HRESULT WINAPI
IDirectMusicSegment8Impl_SetPChannelsUsed (LPDIRECTMUSICSEGMENT8 iface
, DWORD dwNumPChannels
, DWORD
* paPChannels
);
229 /* IDirectMusicSegment8: */
230 extern HRESULT WINAPI
IDirectMusicSegment8Impl_SetTrackConfig (LPDIRECTMUSICSEGMENT8 iface
, REFGUID rguidTrackClassID
, DWORD dwGroupBits
, DWORD dwIndex
, DWORD dwFlagsOn
, DWORD dwFlagsOff
);
231 extern HRESULT WINAPI
IDirectMusicSegment8Impl_GetAudioPathConfig (LPDIRECTMUSICSEGMENT8 iface
, IUnknown
** ppAudioPathConfig
);
232 extern HRESULT WINAPI
IDirectMusicSegment8Impl_Compose (LPDIRECTMUSICSEGMENT8 iface
, MUSIC_TIME mtTime
, IDirectMusicSegment
* pFromSegment
, IDirectMusicSegment
* pToSegment
, IDirectMusicSegment
** ppComposedSegment
);
233 extern HRESULT WINAPI
IDirectMusicSegment8Impl_Download (LPDIRECTMUSICSEGMENT8 iface
, IUnknown
*pAudioPath
);
234 extern HRESULT WINAPI
IDirectMusicSegment8Impl_Unload (LPDIRECTMUSICSEGMENT8 iface
, IUnknown
*pAudioPath
);
236 /*****************************************************************************
237 * IDirectMusicSegmentState8Impl implementation structure
239 struct IDirectMusicSegmentState8Impl
241 /* IUnknown fields */
242 ICOM_VFIELD(IDirectMusicSegmentState8
);
245 /* IDirectMusicSegmentState8Impl fields */
249 extern HRESULT WINAPI
IDirectMusicSegmentState8Impl_QueryInterface (LPDIRECTMUSICSEGMENTSTATE8 iface
, REFIID riid
, LPVOID
*ppobj
);
250 extern ULONG WINAPI
IDirectMusicSegmentState8Impl_AddRef (LPDIRECTMUSICSEGMENTSTATE8 iface
);
251 extern ULONG WINAPI
IDirectMusicSegmentState8Impl_Release (LPDIRECTMUSICSEGMENTSTATE8 iface
);
252 /* IDirectMusicSegmentState: */
253 extern HRESULT WINAPI
IDirectMusicSegmentState8Impl_GetRepeats (LPDIRECTMUSICSEGMENTSTATE8 iface
, DWORD
* pdwRepeats
);
254 extern HRESULT WINAPI
IDirectMusicSegmentState8Impl_GetSegment (LPDIRECTMUSICSEGMENTSTATE8 iface
, IDirectMusicSegment
** ppSegment
);
255 extern HRESULT WINAPI
IDirectMusicSegmentState8Impl_GetStartTime (LPDIRECTMUSICSEGMENTSTATE8 iface
, MUSIC_TIME
* pmtStart
);
256 extern HRESULT WINAPI
IDirectMusicSegmentState8Impl_GetSeek (LPDIRECTMUSICSEGMENTSTATE8 iface
, MUSIC_TIME
* pmtSeek
);
257 extern HRESULT WINAPI
IDirectMusicSegmentState8Impl_GetStartPoint (LPDIRECTMUSICSEGMENTSTATE8 iface
, MUSIC_TIME
* pmtStart
);
258 /* IDirectMusicSegmentState8: */
259 extern HRESULT WINAPI
IDirectMusicSegmentState8Impl_SetTrackConfig (LPDIRECTMUSICSEGMENTSTATE8 iface
, REFGUID rguidTrackClassID
, DWORD dwGroupBits
, DWORD dwIndex
, DWORD dwFlagsOn
, DWORD dwFlagsOff
);
260 extern HRESULT WINAPI
IDirectMusicSegmentState8Impl_GetObjectInPath (LPDIRECTMUSICSEGMENTSTATE8 iface
, DWORD dwPChannel
, DWORD dwStage
, DWORD dwBuffer
, REFGUID guidObject
, DWORD dwIndex
, REFGUID iidInterface
, void** ppObject
);
262 /*****************************************************************************
263 * IDirectMusicGraphImpl implementation structure
265 struct IDirectMusicGraphImpl
267 /* IUnknown fields */
268 ICOM_VFIELD(IDirectMusicGraph
);
271 /* IDirectMusicGraphImpl fields */
272 IDirectMusicTool8Impl
* pFirst
;
273 IDirectMusicTool8Impl
* pLast
;
278 extern HRESULT WINAPI
IDirectMusicGraphImpl_QueryInterface (LPDIRECTMUSICGRAPH iface
, REFIID riid
, LPVOID
*ppobj
);
279 extern ULONG WINAPI
IDirectMusicGraphImpl_AddRef (LPDIRECTMUSICGRAPH iface
);
280 extern ULONG WINAPI
IDirectMusicGraphImpl_Release (LPDIRECTMUSICGRAPH iface
);
281 /* IDirectMusicGraph: */
282 extern HRESULT WINAPI
IDirectMusicGraphImpl_StampPMsg (LPDIRECTMUSICGRAPH iface
, DMUS_PMSG
* pPMSG
);
283 extern HRESULT WINAPI
IDirectMusicGraphImpl_InsertTool (LPDIRECTMUSICGRAPH iface
, IDirectMusicTool
* pTool
, DWORD
* pdwPChannels
, DWORD cPChannels
, LONG lIndex
);
284 extern HRESULT WINAPI
IDirectMusicGraphImpl_GetTool (LPDIRECTMUSICGRAPH iface
, DWORD dwIndex
, IDirectMusicTool
** ppTool
);
285 extern HRESULT WINAPI
IDirectMusicGraphImpl_RemoveTool (LPDIRECTMUSICGRAPH iface
, IDirectMusicTool
* pTool
);
287 /*****************************************************************************
288 * IDirectMusicSongImpl implementation structure
290 struct IDirectMusicSongImpl
292 /* IUnknown fields */
293 ICOM_VFIELD(IDirectMusicSong
);
296 /* IDirectMusicSongImpl fields */
300 extern HRESULT WINAPI
IDirectMusicSongImpl_QueryInterface (LPDIRECTMUSICSONG iface
, REFIID riid
, LPVOID
*ppobj
);
301 extern ULONG WINAPI
IDirectMusicSongImpl_AddRef (LPDIRECTMUSICSONG iface
);
302 extern ULONG WINAPI
IDirectMusicSongImpll_Release (LPDIRECTMUSICSONG iface
);
303 /* IDirectMusicContainer: */
304 extern HRESULT WINAPI
IDirectMusicSongImpl_Compose (LPDIRECTMUSICSONG iface
);
305 extern HRESULT WINAPI
IDirectMusicSongImpl_GetParam (LPDIRECTMUSICSONG iface
, REFGUID rguidType
, DWORD dwGroupBits
, DWORD dwIndex
, MUSIC_TIME mtTime
, MUSIC_TIME
* pmtNext
, void* pParam
);
306 extern HRESULT WINAPI
IDirectMusicSongImpl_GetSegment (LPDIRECTMUSICSONG iface
, WCHAR
* pwzName
, IDirectMusicSegment
** ppSegment
);
307 extern HRESULT WINAPI
IDirectMusicSongImpl_GetAudioPathConfig (LPDIRECTMUSICSONG iface
, IUnknown
** ppAudioPathConfig
);
308 extern HRESULT WINAPI
IDirectMusicSongImpl_Download (LPDIRECTMUSICSONG iface
, IUnknown
* pAudioPath
);
309 extern HRESULT WINAPI
IDirectMusicSongImpl_Unload (LPDIRECTMUSICSONG iface
, IUnknown
* pAudioPath
);
310 extern HRESULT WINAPI
IDirectMusicSongImpl_EnumSegment (LPDIRECTMUSICSONG iface
, DWORD dwIndex
, IDirectMusicSegment
** ppSegment
);
312 /*****************************************************************************
313 * IDirectMusicAudioPathImpl implementation structure
315 struct IDirectMusicAudioPathImpl
317 /* IUnknown fields */
318 ICOM_VFIELD(IDirectMusicAudioPath
);
321 /* IDirectMusicAudioPathImpl fields */
322 IDirectMusicPerformance8
* pPerf
;
323 IDirectMusicGraph
* pToolGraph
;
324 IDirectSoundBuffer
* pDSBuffer
;
325 IDirectSoundBuffer
* pPrimary
;
329 extern HRESULT WINAPI
IDirectMusicAudioPathImpl_QueryInterface (LPDIRECTMUSICAUDIOPATH iface
, REFIID riid
, LPVOID
*ppobj
);
330 extern ULONG WINAPI
IDirectMusicAudioPathImpl_AddRef (LPDIRECTMUSICAUDIOPATH iface
);
331 extern ULONG WINAPI
IDirectMusicAudioPathImpl_Release (LPDIRECTMUSICAUDIOPATH iface
);
332 /* IDirectMusicAudioPath: */
333 extern HRESULT WINAPI
IDirectMusicAudioPathImpl_GetObjectInPath (LPDIRECTMUSICAUDIOPATH iface
, DWORD dwPChannel
, DWORD dwStage
, DWORD dwBuffer
, REFGUID guidObject
, WORD dwIndex
, REFGUID iidInterface
, void** ppObject
);
334 extern HRESULT WINAPI
IDirectMusicAudioPathImpl_Activate (LPDIRECTMUSICAUDIOPATH iface
, BOOL fActivate
);
335 extern HRESULT WINAPI
IDirectMusicAudioPathImpl_SetVolume (LPDIRECTMUSICAUDIOPATH iface
, long lVolume
, DWORD dwDuration
);
336 extern HRESULT WINAPI
IDirectMusicAudioPathImpl_ConvertPChannel (LPDIRECTMUSICAUDIOPATH iface
, DWORD dwPChannelIn
, DWORD
* pdwPChannelOut
);
338 /*****************************************************************************
339 * IDirectMusicTool8Impl implementation structure
341 struct IDirectMusicTool8Impl
343 /* IUnknown fields */
344 ICOM_VFIELD(IDirectMusicTool8
);
347 /* IDirectMusicTool8Impl fields */
348 IDirectMusicTool8Impl
* pPrev
;
349 IDirectMusicTool8Impl
* pNext
;
353 extern HRESULT WINAPI
IDirectMusicTool8Impl_QueryInterface (LPDIRECTMUSICTOOL8 iface
, REFIID riid
, LPVOID
*ppobj
);
354 extern ULONG WINAPI
IDirectMusicTool8Impl_AddRef (LPDIRECTMUSICTOOL8 iface
);
355 extern ULONG WINAPI
IDirectMusicTool8Impl_Release (LPDIRECTMUSICTOOL8 iface
);
356 /* IDirectMusicTool8Impl: */
357 extern HRESULT WINAPI
IDirectMusicTool8Impl_Init (LPDIRECTMUSICTOOL8 iface
, IDirectMusicGraph
* pGraph
);
358 extern HRESULT WINAPI
IDirectMusicTool8Impl_GetMsgDeliveryType (LPDIRECTMUSICTOOL8 iface
, DWORD
* pdwDeliveryType
);
359 extern HRESULT WINAPI
IDirectMusicTool8Impl_GetMediaTypeArraySize (LPDIRECTMUSICTOOL8 iface
, DWORD
* pdwNumElements
);
360 extern HRESULT WINAPI
IDirectMusicTool8Impl_GetMediaTypes (LPDIRECTMUSICTOOL8 iface
, DWORD
** padwMediaTypes
, DWORD dwNumElements
);
361 extern HRESULT WINAPI
IDirectMusicTool8Impl_ProcessPMsg (LPDIRECTMUSICTOOL8 iface
, IDirectMusicPerformance
* pPerf
, DMUS_PMSG
* pPMSG
);
362 extern HRESULT WINAPI
IDirectMusicTool8Impl_Flush (LPDIRECTMUSICTOOL8 iface
, IDirectMusicPerformance
* pPerf
, DMUS_PMSG
* pPMSG
, REFERENCE_TIME rtTime
);
363 /* IDirectMusicToolImpl8: */
364 extern HRESULT WINAPI
IDirectMusicTool8Impl_Clone (LPDIRECTMUSICTOOL8 iface
, IDirectMusicTool
** ppTool
);
366 /*****************************************************************************
367 * IDirectMusicTrack8Impl implementation structure
369 struct IDirectMusicTrack8Impl
371 /* IUnknown fields */
372 ICOM_VFIELD(IDirectMusicTrack8
);
375 /* IDirectMusicTrack8Impl fields */
379 extern HRESULT WINAPI
IDirectMusicTrack8Impl_QueryInterface (LPDIRECTMUSICTRACK8 iface
, REFIID riid
, LPVOID
*ppobj
);
380 extern ULONG WINAPI
IDirectMusicTrack8Impl_AddRef (LPDIRECTMUSICTRACK8 iface
);
381 extern ULONG WINAPI
IDirectMusicTrack8Impl_Release (LPDIRECTMUSICTRACK8 iface
);
382 /* IDirectMusicTrack: */
383 extern HRESULT WINAPI
IDirectMusicTrack8Impl_Init (LPDIRECTMUSICTRACK8 iface
, IDirectMusicSegment
* pSegment
);
384 extern HRESULT WINAPI
IDirectMusicTrack8Impl_InitPlay (LPDIRECTMUSICTRACK8 iface
, IDirectMusicSegmentState
* pSegmentState
, IDirectMusicPerformance
* pPerformance
, void** ppStateData
, DWORD dwVirtualTrackID
, DWORD dwFlags
);
385 extern HRESULT WINAPI
IDirectMusicTrack8Impl_EndPlay (LPDIRECTMUSICTRACK8 iface
, void* pStateData
);
386 extern HRESULT WINAPI
IDirectMusicTrack8Impl_Play (LPDIRECTMUSICTRACK8 iface
, void* pStateData
, MUSIC_TIME mtStart
, MUSIC_TIME mtEnd
, MUSIC_TIME mtOffset
, DWORD dwFlags
, IDirectMusicPerformance
* pPerf
, IDirectMusicSegmentState
* pSegSt
, DWORD dwVirtualID
);
387 extern HRESULT WINAPI
IDirectMusicTrack8Impl_GetParam (LPDIRECTMUSICTRACK8 iface
, REFGUID rguidType
, MUSIC_TIME mtTime
, MUSIC_TIME
* pmtNext
, void* pParam
);
388 extern HRESULT WINAPI
IDirectMusicTrack8Impl_SetParam (LPDIRECTMUSICTRACK8 iface
, REFGUID rguidType
, MUSIC_TIME mtTime
, void* pParam
);
389 extern HRESULT WINAPI
IDirectMusicTrack8Impl_IsParamSupported (LPDIRECTMUSICTRACK8 iface
, REFGUID rguidType
);
390 extern HRESULT WINAPI
IDirectMusicTrack8Impl_AddNotificationType (LPDIRECTMUSICTRACK8 iface
, REFGUID rguidNotificationType
);
391 extern HRESULT WINAPI
IDirectMusicTrack8Impl_RemoveNotificationType (LPDIRECTMUSICTRACK8 iface
, REFGUID rguidNotificationType
);
392 extern HRESULT WINAPI
IDirectMusicTrack8Impl_Clone (LPDIRECTMUSICTRACK8 iface
, MUSIC_TIME mtStart
, MUSIC_TIME mtEnd
, IDirectMusicTrack
** ppTrack
);
393 /* IDirectMusicTrack8: */
394 extern HRESULT WINAPI
IDirectMusicTrack8Impl_PlayEx (LPDIRECTMUSICTRACK8 iface
, void* pStateData
, REFERENCE_TIME rtStart
, REFERENCE_TIME rtEnd
, REFERENCE_TIME rtOffset
, DWORD dwFlags
, IDirectMusicPerformance
* pPerf
, IDirectMusicSegmentState
* pSegSt
, DWORD dwVirtualID
);
395 extern HRESULT WINAPI
IDirectMusicTrack8Impl_GetParamEx (LPDIRECTMUSICTRACK8 iface
, REFGUID rguidType
, REFERENCE_TIME rtTime
, REFERENCE_TIME
* prtNext
, void* pParam
, void* pStateData
, DWORD dwFlags
);
396 extern HRESULT WINAPI
IDirectMusicTrack8Impl_SetParamEx (LPDIRECTMUSICTRACK8 iface
, REFGUID rguidType
, REFERENCE_TIME rtTime
, void* pParam
, void* pStateData
, DWORD dwFlags
);
397 extern HRESULT WINAPI
IDirectMusicTrack8Impl_Compose (LPDIRECTMUSICTRACK8 iface
, IUnknown
* pContext
, DWORD dwTrackGroup
, IDirectMusicTrack
** ppResultTrack
);
398 extern HRESULT WINAPI
IDirectMusicTrack8Impl_Join (LPDIRECTMUSICTRACK8 iface
, IDirectMusicTrack
* pNewTrack
, MUSIC_TIME mtJoin
, IUnknown
* pContext
, DWORD dwTrackGroup
, IDirectMusicTrack
** ppResultTrack
);
400 /*****************************************************************************
401 * IDirectMusicPatternTrackImpl implementation structure
403 struct IDirectMusicPatternTrackImpl
405 /* IUnknown fields */
406 ICOM_VFIELD(IDirectMusicPatternTrack
);
409 /* IDirectMusicComposerImpl fields */
413 extern HRESULT WINAPI
IDirectMusicPatternTrackImpl_QueryInterface (LPDIRECTMUSICPATTERNTRACK iface
, REFIID riid
, LPVOID
*ppobj
);
414 extern ULONG WINAPI
IDirectMusicPatternTrackImpl_AddRef (LPDIRECTMUSICPATTERNTRACK iface
);
415 extern ULONG WINAPI
IDirectMusicPatternTrackImpl_Release (LPDIRECTMUSICPATTERNTRACK iface
);
416 /* IDirectMusicPatternTrack: */
417 extern HRESULT WINAPI
IDirectMusicPatternTrackImpl_CreateSegment (LPDIRECTMUSICPATTERNTRACK iface
, IDirectMusicStyle
* pStyle
, IDirectMusicSegment
** ppSegment
);
418 extern HRESULT WINAPI
IDirectMusicPatternTrackImpl_SetVariation (LPDIRECTMUSICPATTERNTRACK iface
, IDirectMusicSegmentState
* pSegState
, DWORD dwVariationFlags
, DWORD dwPart
);
419 extern HRESULT WINAPI
IDirectMusicPatternTrackImpl_SetPatternByName (LPDIRECTMUSICPATTERNTRACK iface
, IDirectMusicSegmentState
* pSegState
, WCHAR
* wszName
, IDirectMusicStyle
* pStyle
, DWORD dwPatternType
, DWORD
* pdwLength
);
421 #endif /* __WINE_DMIME_PRIVATE_H */