53 *ret_iface = &
This->dmobj.IDirectMusicObject_iface;
55 *ret_iface = &
This->dmobj.IPersistStream_iface;
61 IUnknown_AddRef((
IUnknown*)*ret_iface);
91 FIXME(
"(%p, %p): stub\n",
This, pdwScale);
126 desc->guidClass = CLSID_DirectMusicChordMap;
129 TRACE(
"returning descriptor:\n");
154 DWORD chunkSize, StreamSize, StreamCount, ListSize[3], ListCount[3];
157 FIXME(
"(%p, %p): Loading not implemented yet\n",
This, pStm);
158 IStream_Read (pStm, &chunkID,
sizeof(
FOURCC),
NULL);
159 IStream_Read (pStm, &chunkSize,
sizeof(
DWORD),
NULL);
163 IStream_Read (pStm, &chunkID,
sizeof(
FOURCC),
NULL);
165 StreamSize = chunkSize -
sizeof(
FOURCC);
169 TRACE_(dmfile)(
": chordmap form\n");
171 IStream_Read (pStm, &chunkID,
sizeof(
FOURCC),
NULL);
172 IStream_Read (pStm, &chunkSize,
sizeof(
FOURCC),
NULL);
173 StreamCount +=
sizeof(
FOURCC) +
sizeof(
DWORD) + chunkSize;
177 TRACE_(dmfile)(
": GUID chunk\n");
179 IStream_Read (pStm, &
This->dmobj.desc.guidObject, chunkSize,
NULL);
183 TRACE_(dmfile)(
": version chunk\n");
185 IStream_Read (pStm, &
This->dmobj.desc.vVersion, chunkSize,
NULL);
189 TRACE_(dmfile)(
": category chunk\n");
191 IStream_Read (pStm,
This->dmobj.desc.wszCategory, chunkSize,
NULL);
195 IStream_Read (pStm, &chunkID,
sizeof(
FOURCC),
NULL);
197 ListSize[0] = chunkSize -
sizeof(
FOURCC);
201 TRACE_(dmfile)(
": UNFO list\n");
203 IStream_Read (pStm, &chunkID,
sizeof(
FOURCC),
NULL);
204 IStream_Read (pStm, &chunkSize,
sizeof(
FOURCC),
NULL);
205 ListCount[0] +=
sizeof(
FOURCC) +
sizeof(
DWORD) + chunkSize;
212 TRACE_(dmfile)(
": name chunk\n");
214 IStream_Read (pStm,
This->dmobj.desc.wszName, chunkSize,
NULL);
219 TRACE_(dmfile)(
": artist chunk (ignored)\n");
221 IStream_Seek (pStm, liMove, STREAM_SEEK_CUR,
NULL);
226 TRACE_(dmfile)(
": copyright chunk (ignored)\n");
228 IStream_Seek (pStm, liMove, STREAM_SEEK_CUR,
NULL);
233 TRACE_(dmfile)(
": subject chunk (ignored)\n");
235 IStream_Seek (pStm, liMove, STREAM_SEEK_CUR,
NULL);
240 TRACE_(dmfile)(
": comment chunk (ignored)\n");
242 IStream_Seek (pStm, liMove, STREAM_SEEK_CUR,
NULL);
246 TRACE_(dmfile)(
": unknown chunk (irrelevant & skipping)\n");
248 IStream_Seek (pStm, liMove, STREAM_SEEK_CUR,
NULL);
252 TRACE_(dmfile)(
": ListCount[0] = %ld < ListSize[0] = %ld\n", ListCount[0], ListSize[0]);
253 }
while (ListCount[0] < ListSize[0]);
257 TRACE_(dmfile)(
": unknown (skipping)\n");
259 IStream_Seek (pStm, liMove, STREAM_SEEK_CUR,
NULL);
266 TRACE_(dmfile)(
": unknown chunk (irrelevant & skipping)\n");
268 IStream_Seek (pStm, liMove, STREAM_SEEK_CUR,
NULL);
272 TRACE_(dmfile)(
": StreamCount[0] = %ld < StreamSize[0] = %ld\n", StreamCount, StreamSize);
273 }
while (StreamCount < StreamSize);
277 TRACE_(dmfile)(
": unexpected chunk; loading failed)\n");
279 IStream_Seek (pStm, liMove, STREAM_SEEK_CUR,
NULL);
283 TRACE_(dmfile)(
": reading finished\n");
287 TRACE_(dmfile)(
": unexpected chunk; loading failed)\n");
289 IStream_Seek (pStm, liMove, STREAM_SEEK_CUR,
NULL);
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static ULONG WINAPI IDirectMusicChordMapImpl_AddRef(IDirectMusicChordMap *iface)
static IDirectMusicChordMapImpl * impl_from_IDirectMusicChordMap(IDirectMusicChordMap *iface)
static const IDirectMusicObjectVtbl dmobject_vtbl
static ULONG WINAPI IDirectMusicChordMapImpl_Release(IDirectMusicChordMap *iface)
static HRESULT WINAPI IDirectMusicChordMapImpl_QueryInterface(IDirectMusicChordMap *iface, REFIID riid, void **ret_iface)
static const IPersistStreamVtbl persiststream_vtbl
static const IDirectMusicChordMapVtbl dmchordmap_vtbl
static HRESULT WINAPI chord_IDirectMusicObject_ParseDescriptor(IDirectMusicObject *iface, IStream *stream, DMUS_OBJECTDESC *desc)
HRESULT create_dmchordmap(REFIID lpcGUID, void **ppobj)
static HRESULT WINAPI IPersistStreamImpl_Load(IPersistStream *iface, IStream *pStm)
static HRESULT WINAPI IDirectMusicChordMapImpl_GetScale(IDirectMusicChordMap *iface, DWORD *pdwScale)
static IDirectMusicChordMapImpl * impl_from_IPersistStream(IPersistStream *iface)
#define WINE_DECLARE_DEBUG_CHANNEL(x)
#define DMUS_E_CHUNKNOTFOUND
HRESULT WINAPI dmobj_IDirectMusicObject_GetDescriptor(IDirectMusicObject *iface, DMUS_OBJECTDESC *desc)
void dmobject_init(struct dmobject *dmobj, const GUID *class, IUnknown *outer_unk)
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)
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)
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 WINAPI dmobj_IPersistStream_QueryInterface(IPersistStream *iface, REFIID riid, void **ret_iface)
ULONG WINAPI dmobj_IDirectMusicObject_AddRef(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 WINAPI unimpl_IPersistStream_Save(IPersistStream *iface, IStream *stream, BOOL clear_dirty)
#define DMUS_FOURCC_GUID_CHUNK
#define DMUS_FOURCC_UNAM_CHUNK
#define DMUS_FOURCC_VERSION_CHUNK
#define DMUS_FOURCC_CHORDMAP_FORM
#define DMUS_FOURCC_UCOP_CHUNK
#define DMUS_FOURCC_UART_CHUNK
#define DMUS_FOURCC_UNFO_LIST
#define DMUS_FOURCC_UCMT_CHUNK
#define DMUS_FOURCC_USBJ_CHUNK
#define DMUS_FOURCC_CATEGORY_CHUNK
#define IDirectMusicChordMap_Release(p)
#define IDirectMusicChordMap_QueryInterface(p, a, b)
#define DMUS_OBJ_CATEGORY
#define FOURCC(a, b, c, d)
#define mmioFOURCC(c0, c1, c2, c3)
D3D11_SHADER_VARIABLE_DESC desc
const GUID IID_IPersistStream
#define IsEqualIID(riid1, riid2)
static __inline const char * debugstr_fourcc(unsigned int cc)
IDirectMusicChordMap IDirectMusicChordMap_iface
#define CONTAINING_RECORD(address, type, field)