26 TRACE(
"DMUS_IO_INSTRUMENT: %p\n", inst);
59 WARN(
"Failed to unload entry instrument, hr %#lx\n",
hr);
101 *ret_iface = &
This->dmobj.IDirectMusicObject_iface;
103 *ret_iface = &
This->dmobj.IPersistStream_iface;
157 &IID_IDirectMusicSegment, (
void**)
segment);
162 bandparam.
pBand = &
This->IDirectMusicBand_iface;
198 if (
FAILED(
hr))
WARN(
"Failed to download instruments, hr %#lx\n",
hr);
215 if (
FAILED(
hr))
WARN(
"Failed to unload instruments, hr %#lx\n",
hr);
251 IDirectMusicObject *
object;
360 desc->guidClass = CLSID_DirectMusicBand;
369 TRACE(
"returning descriptor:\n");
396 .guidClass = CLSID_DirectMusicCollection,
397 .guidObject = GUID_DefaultGMCollection,
406 (
void **)&
This->collection)))
407 WARN(
"Failed to load default collection from loader, hr %#lx\n",
hr);
431 TRACE(
"Loaded IDirectMusicBand %p\n",
This);
434 TRACE(
" - Instruments:\n");
438 TRACE(
" - collection: %p\n",
entry->collection);
507 msg->dwPChannel =
entry->instrument.dwPChannel;
508 msg->dwVirtualTrackID = track_id;
511 msg->byInstrument =
entry->instrument.dwPatch;
#define InterlockedIncrement
#define InterlockedDecrement
static const IDirectMusicObjectVtbl band_object_vtbl
static const IDirectMusicBandVtbl band_vtbl
HRESULT band_connect_to_collection(IDirectMusicBand *iface, IDirectMusicCollection *collection)
HRESULT create_dmband(REFIID lpcGUID, void **ppobj)
static void instrument_entry_destroy(struct instrument_entry *entry)
static HRESULT instrument_entry_unload(struct instrument_entry *entry)
static HRESULT WINAPI band_Download(IDirectMusicBand *iface, IDirectMusicPerformance *performance)
static HRESULT parse_dmbd_chunk(struct band *This, IStream *stream, struct chunk_entry *parent)
static struct band * impl_from_IPersistStream(IPersistStream *iface)
static ULONG WINAPI band_AddRef(IDirectMusicBand *iface)
static HRESULT WINAPI band_QueryInterface(IDirectMusicBand *iface, REFIID riid, void **ret_iface)
static const IPersistStreamVtbl band_persist_stream_vtbl
static HRESULT parse_lbil_list(struct band *This, IStream *stream, struct chunk_entry *parent)
static HRESULT WINAPI band_persist_stream_Load(IPersistStream *iface, IStream *stream)
static struct band * impl_from_IDirectMusicBand(IDirectMusicBand *iface)
static HRESULT WINAPI band_Unload(IDirectMusicBand *iface, IDirectMusicPerformance *performance)
static HRESULT parse_lbin_list(struct band *This, IStream *stream, struct chunk_entry *parent)
static ULONG WINAPI band_Release(IDirectMusicBand *iface)
static HRESULT WINAPI band_CreateSegment(IDirectMusicBand *iface, IDirectMusicSegment **segment)
HRESULT band_send_messages(IDirectMusicBand *iface, IDirectMusicPerformance *performance, IDirectMusicGraph *graph, MUSIC_TIME time, DWORD track_id)
void dump_DMUS_IO_INSTRUMENT(DMUS_IO_INSTRUMENT *inst)
HRESULT band_add_instrument(IDirectMusicBand *iface, DMUS_IO_INSTRUMENT *instrument)
static HRESULT WINAPI band_object_ParseDescriptor(IDirectMusicObject *iface, IStream *stream, DMUS_OBJECTDESC *desc)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static void list_remove(struct list_entry *entry)
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
static void list_init(struct list_entry *head)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
#define DMUS_E_UNSUPPORTED_STREAM
#define DMUS_E_INVALID_BAND
HRESULT WINAPI dmobj_IDirectMusicObject_GetDescriptor(IDirectMusicObject *iface, DMUS_OBJECTDESC *desc)
void dmobject_init(struct dmobject *dmobj, const GUID *class, IUnknown *outer_unk)
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)
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)
const char * debugstr_chunk(const struct chunk_entry *chunk)
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 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 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)
static HRESULT stream_reset_chunk_data(IStream *stream, const struct chunk_entry *chunk)
#define DMUS_OBJ_NAME_INAM
#define MAKE_IDTYPE(id, type)
#define IDirectMusicCollection_GetInstrument(p, a, b)
#define IDirectMusicPort_Release(p)
#define IDirectMusicDownloadedInstrument_Release(p)
#define IDirectMusicCollection_AddRef(p)
#define IDirectMusicCollection_Release(p)
#define IDirectMusicInstrument_Release(p)
#define IDirectMusicPort_UnloadInstrument(p, a)
#define DMUS_FOURCC_BAND_FORM
#define DMUS_FOURCC_GUID_CHUNK
#define DMUS_FOURCC_VERSION_CHUNK
#define DMUS_FOURCC_INSTRUMENT_CHUNK
#define DMUS_FOURCC_REF_LIST
#define DMUS_FOURCC_INSTRUMENTS_LIST
#define DMUS_FOURCC_UNFO_LIST
#define DMUS_FOURCC_INSTRUMENT_LIST
#define IDirectMusicObject_QueryInterface(p, a, b)
#define IDirectMusicBand_AddRef(p)
#define IDirectMusicObject_Release(p)
#define DMUS_SEG_ALLTRACKS
#define IDirectMusicBand_QueryInterface(p, a, b)
#define IDirectMusicPerformance_DownloadInstrument(p, a, b, c, d, e, f, g, h)
struct _DMUS_OBJECTDESC DMUS_OBJECTDESC
#define IDirectMusicSegment_SetParam(p, a, b, c, d, e)
#define IDirectMusicPerformance_SendPMsg(p, a)
#define IDirectMusicBand_Release(p)
#define IDirectMusicPerformance_FreePMsg(p, a)
#define IDirectMusicGraph_StampPMsg(p, a)
#define DMUS_OBJ_CATEGORY
#define IDirectMusicPerformance_AllocPMsg(p, a, b)
#define memcpy(s1, s2, n)
D3D11_SHADER_VARIABLE_DESC desc
const GUID IID_IPersistStream
#define IsEqualIID(riid1, riid2)
static unsigned __int64 next
#define offsetof(TYPE, MEMBER)
static __inline const char * debugstr_fourcc(unsigned int cc)
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
#define LIST_FOR_EACH_ENTRY_REV(elem, list, type, field)
MUSIC_TIME mtTimePhysical
struct IDirectMusicBand * pBand
IDirectMusicCollection * collection
IDirectMusicBand IDirectMusicBand_iface
IDirectMusicCollection * collection
IDirectMusicDownloadedInstrument * download
DMUS_IO_INSTRUMENT instrument
IDirectMusicPort * download_port
#define CONTAINING_RECORD(address, type, field)