38#define X(guid) { &guid, #guid }
44 X(CLSID_AudioVBScript),
46 X(CLSID_DirectMusicAudioPathConfig),
47 X(CLSID_DirectMusicAuditionTrack),
48 X(CLSID_DirectMusicBand),
49 X(CLSID_DirectMusicBandTrack),
50 X(CLSID_DirectMusicChordMapTrack),
51 X(CLSID_DirectMusicChordMap),
52 X(CLSID_DirectMusicChordTrack),
53 X(CLSID_DirectMusicCollection),
54 X(CLSID_DirectMusicCommandTrack),
55 X(CLSID_DirectMusicComposer),
56 X(CLSID_DirectMusicContainer),
57 X(CLSID_DirectMusicGraph),
58 X(CLSID_DirectMusicLoader),
59 X(CLSID_DirectMusicLyricsTrack),
60 X(CLSID_DirectMusicMarkerTrack),
61 X(CLSID_DirectMusicMelodyFormulationTrack),
62 X(CLSID_DirectMusicMotifTrack),
63 X(CLSID_DirectMusicMuteTrack),
64 X(CLSID_DirectMusicParamControlTrack),
65 X(CLSID_DirectMusicPatternTrack),
66 X(CLSID_DirectMusicPerformance),
67 X(CLSID_DirectMusicScript),
68 X(CLSID_DirectMusicScriptAutoImpSegment),
69 X(CLSID_DirectMusicScriptAutoImpPerformance),
70 X(CLSID_DirectMusicScriptAutoImpSegmentState),
71 X(CLSID_DirectMusicScriptAutoImpAudioPathConfig),
72 X(CLSID_DirectMusicScriptAutoImpAudioPath),
73 X(CLSID_DirectMusicScriptAutoImpSong),
74 X(CLSID_DirectMusicScriptSourceCodeLoader),
75 X(CLSID_DirectMusicScriptTrack),
76 X(CLSID_DirectMusicSection),
77 X(CLSID_DirectMusicSegment),
78 X(CLSID_DirectMusicSegmentState),
79 X(CLSID_DirectMusicSegmentTriggerTrack),
80 X(CLSID_DirectMusicSegTriggerTrack),
81 X(CLSID_DirectMusicSeqTrack),
82 X(CLSID_DirectMusicSignPostTrack),
83 X(CLSID_DirectMusicSong),
84 X(CLSID_DirectMusicStyle),
85 X(CLSID_DirectMusicStyleTrack),
86 X(CLSID_DirectMusicSynth),
87 X(CLSID_DirectMusicSynthSink),
88 X(CLSID_DirectMusicSysExTrack),
89 X(CLSID_DirectMusicTemplate),
90 X(CLSID_DirectMusicTempoTrack),
91 X(CLSID_DirectMusicTimeSigTrack),
92 X(CLSID_DirectMusicWaveTrack),
93 X(CLSID_DirectSoundWave),
98 X(IID_IDirectMusicAudioPath),
99 X(IID_IDirectMusicBand),
100 X(IID_IDirectMusicBuffer),
101 X(IID_IDirectMusicChordMap),
102 X(IID_IDirectMusicCollection),
103 X(IID_IDirectMusicComposer),
104 X(IID_IDirectMusicContainer),
105 X(IID_IDirectMusicDownload),
106 X(IID_IDirectMusicDownloadedInstrument),
107 X(IID_IDirectMusicGetLoader),
108 X(IID_IDirectMusicGraph),
109 X(IID_IDirectMusicInstrument),
110 X(IID_IDirectMusicLoader),
111 X(IID_IDirectMusicLoader8),
112 X(IID_IDirectMusicObject),
113 X(IID_IDirectMusicPatternTrack),
114 X(IID_IDirectMusicPerformance),
115 X(IID_IDirectMusicPerformance2),
116 X(IID_IDirectMusicPerformance8),
117 X(IID_IDirectMusicPort),
118 X(IID_IDirectMusicPortDownload),
119 X(IID_IDirectMusicScript),
120 X(IID_IDirectMusicSegment),
121 X(IID_IDirectMusicSegment2),
122 X(IID_IDirectMusicSegment8),
123 X(IID_IDirectMusicSegmentState),
124 X(IID_IDirectMusicSegmentState8),
125 X(IID_IDirectMusicStyle),
126 X(IID_IDirectMusicStyle8),
127 X(IID_IDirectMusicSynth),
128 X(IID_IDirectMusicSynth8),
129 X(IID_IDirectMusicSynthSink),
130 X(IID_IDirectMusicThru),
131 X(IID_IDirectMusicTool),
132 X(IID_IDirectMusicTool8),
133 X(IID_IDirectMusicTrack),
134 X(IID_IDirectMusicTrack8),
140 X(GUID_DirectMusicAllTypes),
141 X(GUID_NOTIFICATION_CHORD),
142 X(GUID_NOTIFICATION_COMMAND),
143 X(GUID_NOTIFICATION_MEASUREANDBEAT),
144 X(GUID_NOTIFICATION_PERFORMANCE),
145 X(GUID_NOTIFICATION_RECOMPOSE),
146 X(GUID_NOTIFICATION_SEGMENT),
149 X(GUID_CommandParam),
150 X(GUID_CommandParam2),
151 X(GUID_CommandParamNext),
152 X(GUID_IDirectMusicBand),
153 X(GUID_IDirectMusicChordMap),
154 X(GUID_IDirectMusicStyle),
159 X(GUID_TimeSignature),
160 X(GUID_Valid_Start_Time),
161 X(GUID_Clear_All_Bands),
162 X(GUID_ConnectToDLSCollection),
163 X(GUID_Disable_Auto_Download),
164 X(GUID_DisableTempo),
165 X(GUID_DisableTimeSig),
167 X(GUID_DownloadToAudioPath),
168 X(GUID_Enable_Auto_Download),
170 X(GUID_EnableTimeSig),
172 X(GUID_SeedVariations),
173 X(GUID_StandardMIDIFile),
175 X(GUID_UnloadFromAudioPath),
177 X(GUID_PerfMasterTempo),
178 X(GUID_PerfMasterVolume),
179 X(GUID_PerfMasterGrooveLevel),
180 X(GUID_PerfAutoDownload),
181 X(GUID_DefaultGMCollection),
182 X(GUID_Synth_Default),
183 X(GUID_Buffer_Reverb),
184 X(GUID_Buffer_EnvReverb),
185 X(GUID_Buffer_Stereo),
186 X(GUID_Buffer_3D_Dry),
188 X(GUID_DMUS_PROP_GM_Hardware),
189 X(GUID_DMUS_PROP_GS_Capable),
190 X(GUID_DMUS_PROP_GS_Hardware),
191 X(GUID_DMUS_PROP_DLS1),
192 X(GUID_DMUS_PROP_DLS2),
193 X(GUID_DMUS_PROP_Effects),
194 X(GUID_DMUS_PROP_INSTRUMENT2),
195 X(GUID_DMUS_PROP_LegacyCaps),
196 X(GUID_DMUS_PROP_MemorySize),
197 X(GUID_DMUS_PROP_SampleMemorySize),
198 X(GUID_DMUS_PROP_SamplePlaybackRate),
199 X(GUID_DMUS_PROP_SetSynthSink),
200 X(GUID_DMUS_PROP_SinkUsesDSound),
201 X(GUID_DMUS_PROP_SynthSink_DSOUND),
202 X(GUID_DMUS_PROP_SynthSink_WAVE),
203 X(GUID_DMUS_PROP_Volume),
204 X(GUID_DMUS_PROP_WavesReverb),
205 X(GUID_DMUS_PROP_WriteLatency),
206 X(GUID_DMUS_PROP_WritePeriod),
207 X(GUID_DMUS_PROP_XG_Capable),
208 X(GUID_DMUS_PROP_XG_Hardware)
227 TRACE_(dmfile)(
"DMUS_OBJECTDESC (%p):",
desc);
228 TRACE_(dmfile)(
" - dwSize = %lu\n",
desc->dwSize);
230#define X(flag) if (desc->dwValidData & flag) TRACE_(dmfile)(#flag " ")
231 TRACE_(dmfile)(
" - dwValidData = %#08lx ( ",
desc->dwValidData);
255 TRACE_(dmfile)(
" - ftDate = \'%04u-%02u-%02u %02u:%02u:%02u\'\n",
259 TRACE_(dmfile)(
" - vVersion = \'%u,%u,%u,%u\'\n",
269 TRACE_(dmfile)(
" - llMemLength = 0x%s - pbMemData = %p\n",
272 TRACE_(dmfile)(
" - pStream = %p\n",
desc->pStream);
277#define CHUNK_HDR_SIZE (sizeof(FOURCC) + sizeof(DWORD))
281 const char *
type =
"";
297 TRACE_(dmfile)(
"IStream_Read failed: %#lx\n",
hr);
322 if (ck_end > p_end) {
323 WARN_(dmfile)(
"No space for sub-chunk header in parent chunk: ends at offset %s > %s\n",
334 if (ck_end > p_end) {
335 WARN_(dmfile)(
"No space for sub-chunk data in parent chunk: ends at offset %s > %s\n",
393 if (
size != elem_size) {
394 WARN_(dmfile)(
"%s: Array element size mismatch: got %lu, expected %lu\n",
421 WARN_(dmfile)(
"Chunk %s (size %lu, offset %s) doesn't contains the expected data size %lu\n",
442 if (len < chunk->
size)
449 IDirectMusicGetLoader *getter;
452 if (
SUCCEEDED(
hr = IStream_QueryInterface(
stream, &IID_IDirectMusicGetLoader, (
void**)&getter)))
464 IDirectMusicLoader *
loader;
488 return IUnknown_QueryInterface(
This->outer_unk,
riid, ret_iface);
494 return IUnknown_AddRef(
This->outer_unk);
500 return IUnknown_Release(
This->outer_unk);
532 desc->dwValidData &= ~DMUS_OBJ_CLASS;
537 This->desc.guidObject =
desc->guidObject;
545 This->desc.vVersion =
desc->vVersion;
549 This->desc.llMemLength =
desc->llMemLength;
553 IStream_Clone(
desc->pStream, &
This->desc.pStream);
555 This->desc.dwValidData |=
desc->dwValidData;
599 desc->dwValidData = 0;
600 desc->dwSize =
sizeof(*desc);
649 TRACE(
"Found %#lx\n",
desc->dwValidData);
655 IDirectMusicObject **dmobj)
693 return IUnknown_QueryInterface(
This->outer_unk,
riid, ret_iface);
699 return IUnknown_AddRef(
This->outer_unk);
705 return IUnknown_Release(
This->outer_unk);
725 TRACE(
"(%p, %p): method not implemented\n", iface,
class);
731 TRACE(
"(%p): method not implemented, always returning S_FALSE\n", iface);
738 TRACE(
"(%p, %p, %d): method not implemented\n", iface,
stream, clear_dirty);
744 TRACE(
"(%p, %p): method not implemented\n", iface,
size);
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
const GUID IID_IClassFactory
const char * wine_dbg_sprintf(const char *format,...)
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
#define WINE_DECLARE_DEBUG_CHANNEL(x)
#define MultiByteToWideChar
BOOL WINAPI FileTimeToSystemTime(IN CONST FILETIME *lpFileTime, OUT LPSYSTEMTIME lpSystemTime)
const struct sortguid * guids
#define DMUS_E_UNSUPPORTED_STREAM
static struct dmobject * impl_from_IPersistStream(IPersistStream *iface)
HRESULT WINAPI dmobj_IDirectMusicObject_GetDescriptor(IDirectMusicObject *iface, DMUS_OBJECTDESC *desc)
void dmobject_init(struct dmobject *dmobj, const GUID *class, IUnknown *outer_unk)
HRESULT stream_get_loader(IStream *stream, IDirectMusicLoader **ret_loader)
HRESULT stream_chunk_get_data(IStream *stream, const struct chunk_entry *chunk, void *data, ULONG size)
HRESULT stream_next_chunk(IStream *stream, struct chunk_entry *chunk)
ULONG WINAPI dmobj_IPersistStream_Release(IPersistStream *iface)
ULONG WINAPI dmobj_IDirectMusicObject_Release(IDirectMusicObject *iface)
HRESULT dmobj_parsedescriptor(IStream *stream, const struct chunk_entry *riff, DMUS_OBJECTDESC *desc, DWORD supported)
HRESULT WINAPI dmobj_IDirectMusicObject_QueryInterface(IDirectMusicObject *iface, REFIID riid, void **ret_iface)
static void info_get_name(IStream *stream, const struct chunk_entry *info, DMUS_OBJECTDESC *desc)
static void unfo_get_name(IStream *stream, const struct chunk_entry *unfo, DMUS_OBJECTDESC *desc, BOOL inam)
HRESULT WINAPI unimpl_IPersistStream_GetClassID(IPersistStream *iface, CLSID *class)
HRESULT WINAPI unimpl_IPersistStream_GetSizeMax(IPersistStream *iface, ULARGE_INTEGER *size)
HRESULT WINAPI dmobj_IDirectMusicObject_SetDescriptor(IDirectMusicObject *iface, DMUS_OBJECTDESC *desc)
void dump_DMUS_OBJECTDESC(DMUS_OBJECTDESC *desc)
HRESULT stream_chunk_get_wstr(IStream *stream, const struct chunk_entry *chunk, WCHAR *str, ULONG size)
const char * debugstr_chunk(const struct chunk_entry *chunk)
HRESULT WINAPI dmobj_IPersistStream_GetClassID(IPersistStream *iface, CLSID *class)
ULONG WINAPI dmobj_IPersistStream_AddRef(IPersistStream *iface)
const char * debugstr_dmguid(const GUID *id)
HRESULT dmobj_parsereference(IStream *stream, const struct chunk_entry *list, IDirectMusicObject **dmobj)
HRESULT stream_chunk_get_array(IStream *stream, const struct chunk_entry *chunk, void **array, unsigned int *count, DWORD elem_size)
HRESULT WINAPI dmobj_IPersistStream_QueryInterface(IPersistStream *iface, REFIID riid, void **ret_iface)
ULONG WINAPI dmobj_IDirectMusicObject_AddRef(IDirectMusicObject *iface)
static struct dmobject * impl_from_IDirectMusicObject(IDirectMusicObject *iface)
HRESULT stream_skip_chunk(IStream *stream, const struct chunk_entry *chunk)
HRESULT stream_get_chunk(IStream *stream, struct chunk_entry *chunk)
HRESULT WINAPI unimpl_IPersistStream_IsDirty(IPersistStream *iface)
HRESULT stream_get_object(IStream *stream, DMUS_OBJECTDESC *desc, REFIID iid, void **ret_iface)
HRESULT WINAPI unimpl_IPersistStream_Save(IPersistStream *iface, IStream *stream, BOOL clear_dirty)
#define DMUS_OBJ_NAME_INAM
#define DMUS_OBJ_NAME_INFO
#define DMUS_OBJ_GUID_DLID
#define DMUS_FOURCC_GUID_CHUNK
#define DMUS_FOURCC_REF_CHUNK
#define DMUS_FOURCC_UNAM_CHUNK
#define DMUS_FOURCC_VERSION_CHUNK
#define DMUS_FOURCC_FILE_CHUNK
#define DMUS_FOURCC_INFO_LIST
#define DMUS_FOURCC_NAME_CHUNK
#define DMUS_FOURCC_DATE_CHUNK
#define DMUS_FOURCC_UNFO_LIST
#define DMUS_FOURCC_CATEGORY_CHUNK
#define IDirectMusicGetLoader_GetLoader(p, a)
#define DMUS_OBJ_FULLPATH
#define IDirectMusicLoader_Release(p)
#define DMUS_MAX_CATEGORY
#define DMUS_OBJ_FILENAME
#define IDirectMusicGetLoader_Release(p)
#define DMUS_MAX_FILENAME
#define IDirectMusicLoader_GetObject(p, a, b, c)
#define DMUS_OBJ_CATEGORY
#define GUID_IgnoreBankSelectForGM
GLuint GLuint GLsizei count
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define memcpy(s1, s2, n)
#define mmioFOURCC(c0, c1, c2, c3)
D3D11_SHADER_VARIABLE_DESC desc
const GUID IID_IPersistStream
#define IsEqualGUID(rguid1, rguid2)
static __inline const char * debugstr_fourcc(unsigned int cc)
IPersistStream IPersistStream_iface
IDirectMusicObject IDirectMusicObject_iface
#define CONTAINING_RECORD(address, type, field)