38 WARN(
"Failed to de-init track %p, hr %#lx\n",
entry->pTrack,
hr);
74 *ret_iface = &
This->dmobj.IDirectMusicObject_iface;
76 *ret_iface = &
This->dmobj.IPersistStream_iface;
82 IUnknown_AddRef((
IUnknown*)*ret_iface);
147 *repeats =
This->header.dwRepeats;
157 This->header.dwRepeats = repeats;
169 *resolution =
This->header.dwResolution;
179 This->header.dwResolution = resolution;
206 hr = IPersistStream_GetClassID(persist, &entry_type);
208 IPersistStream_Release(persist);
216 *ret_track =
entry->pTrack;
238 *ret_group =
entry->dwGroupBits;
357 IDirectMusicTrack *track;
361 TRACE(
"(%p, %s, %#lx, %lu, %ld, %p, %p)\n",
This,
debugstr_dmguid(
type),
group,
index,
time,
409 WARN(
"SetParam for track %p failed, hr %#lx\n",
entry->pTrack,
hr);
420 IDirectMusicTrack *track;
502 FIXME(
"(%p, %ld, %p): stub\n",
This, dwNumPChannels, paPChannels);
511 dwGroupBits, dwIndex, dwFlagsOn, dwFlagsOff);
518 FIXME(
"(%p, %p): stub\n",
This, ppAudioPathConfig);
523 IDirectMusicSegment *pFromSegment, IDirectMusicSegment *pToSegment, IDirectMusicSegment **ppComposedSegment)
526 FIXME(
"(%p, %ld, %p, %p, %p): stub\n",
This, mtTime, pFromSegment, pToSegment, ppComposedSegment);
607 desc->guidClass = CLSID_DirectMusicSegment;
627 IDirectMusicTrack *track =
NULL;
643 TRACE(
"Found DMUS_IO_TRACK_HEADER\n");
650 WARN(
"One and only one of the ckid (%s) and fccType (%s) need to be set\n",
664 FIXME(
"DMUS_IO_TRACK_EXTRAS_HEADER chunk not fully handled\n");
684 hr = IPersistStream_Load(ps, clone);
692 IPersistStream_Release(ps);
695 IStream_Release(clone);
722 TRACE(
"Found DirectX%d DMUS_IO_SEGMENT_HEADER\n",
dx);
723 TRACE(
"\tdwRepeats: %lu\n",
h->dwRepeats);
724 TRACE(
"\tmtLength: %lu\n",
h->mtLength);
725 TRACE(
"\tmtPlayStart: %lu\n",
h->mtPlayStart);
726 TRACE(
"\tmtLoopStart: %lu\n",
h->mtLoopStart);
727 TRACE(
"\tmtLoopEnd: %lu\n",
h->mtLoopEnd);
728 TRACE(
"\tdwResolution: %lu\n",
h->dwResolution);
731 TRACE(
"\tdwFlags: %lu\n",
h->dwFlags);
732 TRACE(
"\tdwReserved: %lu\n",
h->dwReserved);
815 IDirectMusicTrack8 *track;
817 TRACE(
"Loading segment %p from wave file\n",
This);
819 This->header.mtLength = 1;
838 WARN(
"Failed to load segment from stream %p, hr %#lx\n",
stream,
hr);
842 This->dmobj.desc.guidClass = CLSID_DirectMusicSegment;
#define InterlockedIncrement
#define InterlockedDecrement
#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)
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
#define DMUS_E_UNSUPPORTED_STREAM
#define DMUS_E_TRACK_HDR_NOT_FIRST_CK
#define DMUS_E_INVALID_TRACK_HDR
#define DMUS_E_TRACK_NOT_FOUND
#define DMUS_E_OUT_OF_RANGE
HRESULT parse_midi(IStream *stream, IDirectMusicSegment8 *segment)
HRESULT wave_track_create_from_chunk(IStream *stream, struct chunk_entry *parent, IDirectMusicTrack8 **ret_iface)
HRESULT create_dmsegmentstate(REFIID riid, void **ret_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_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_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)
static HRESULT stream_reset_chunk_data(IStream *stream, const struct chunk_entry *chunk)
static HRESULT stream_reset_chunk_start(IStream *stream, const struct chunk_entry *chunk)
#define DMUS_OBJ_NAME_INFO
#define MAKE_IDTYPE(id, type)
#define IDirectMusicTrack8_Release(p)
#define IDirectMusicTrack_SetParam(p, a, b, c)
#define IDirectMusicTrack_GetParam(p, a, b, c, d)
#define IDirectMusicTrack_Release(p)
#define IDirectMusicTrack_Init(p, a)
#define IDirectMusicTrack_QueryInterface(p, a, b)
#define IDirectMusicTrack_IsParamSupported(p, a)
#define IDirectMusicTrack_AddRef(p)
#define IDirectMusicTrack_Clone(p, a, b, c)
#define DMUS_FOURCC_TRACK_FORM
#define DMUS_FOURCC_SEGMENT_FORM
#define DMUS_FOURCC_TRACK_EXTRAS_CHUNK
#define DMUS_FOURCC_SEGMENT_CHUNK
#define DMUS_FOURCC_TRACK_LIST
#define DMUS_FOURCC_TRACK_CHUNK
#define DMUS_SEG_ALLTRACKS
#define IDirectMusicSegment8_Release(p)
#define DMUS_SEG_ANYTRACK
#define IDirectMusicSegment8_QueryInterface(p, a, b)
#define IDirectMusicSegment8_SetParam(p, a, b, c, d, e)
#define IDirectMusicGraph_Release(p)
#define IDirectMusicGraph_AddRef(p)
#define DMUS_OBJ_CATEGORY
GLuint GLuint GLsizei count
GLuint GLuint GLsizei GLenum type
GLuint GLsizei GLsizei * length
GLfloat GLfloat GLfloat GLfloat h
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 mmioFOURCC(c0, c1, c2, c3)
D3D11_SHADER_VARIABLE_DESC desc
const GUID IID_IPersistStream
#define IsEqualGUID(rguid1, rguid2)
#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)
static const IDirectMusicSegment8Vtbl segment_vtbl
static HRESULT parse_track_form(struct segment *This, IStream *stream, const struct chunk_entry *riff)
static ULONG WINAPI segment_AddRef(IDirectMusicSegment8 *iface)
static HRESULT WINAPI segment_GetStartPoint(IDirectMusicSegment8 *iface, MUSIC_TIME *start)
static HRESULT WINAPI segment_SetLoopPoints(IDirectMusicSegment8 *iface, MUSIC_TIME start, MUSIC_TIME end)
static HRESULT WINAPI segment_InitPlay(IDirectMusicSegment8 *iface, IDirectMusicSegmentState **state, IDirectMusicPerformance *performance, DWORD flags)
static struct segment * segment_create(void)
static HRESULT WINAPI segment_SetStartPoint(IDirectMusicSegment8 *iface, MUSIC_TIME start)
static HRESULT parse_dmsg_chunk(struct segment *This, IStream *stream, const struct chunk_entry *riff)
static const IPersistStreamVtbl segment_persist_stream_vtbl
static HRESULT WINAPI segment_SetRepeats(IDirectMusicSegment8 *iface, DWORD repeats)
static ULONG WINAPI segment_Release(IDirectMusicSegment8 *iface)
static HRESULT WINAPI segment_Download(IDirectMusicSegment8 *iface, IUnknown *audio_path)
static HRESULT WINAPI segment_RemoveTrack(IDirectMusicSegment8 *iface, IDirectMusicTrack *track)
static void track_entry_destroy(struct track_entry *entry)
static struct segment * impl_from_IDirectMusicSegment8(IDirectMusicSegment8 *iface)
static HRESULT WINAPI segment_SetTrackConfig(IDirectMusicSegment8 *iface, REFGUID rguidTrackClassID, DWORD dwGroupBits, DWORD dwIndex, DWORD dwFlagsOn, DWORD dwFlagsOff)
static HRESULT WINAPI segment_GetGraph(IDirectMusicSegment8 *iface, IDirectMusicGraph **graph)
static HRESULT WINAPI segment_GetDefaultResolution(IDirectMusicSegment8 *iface, DWORD *resolution)
static HRESULT WINAPI segment_QueryInterface(IDirectMusicSegment8 *iface, REFIID riid, void **ret_iface)
static HRESULT WINAPI segment_AddNotificationType(IDirectMusicSegment8 *iface, REFGUID rguidNotificationType)
static HRESULT WINAPI segment_GetLength(IDirectMusicSegment8 *iface, MUSIC_TIME *length)
static HRESULT WINAPI segment_GetParam(IDirectMusicSegment8 *iface, REFGUID type, DWORD group, DWORD index, MUSIC_TIME time, MUSIC_TIME *next, void *param)
static HRESULT WINAPI segment_GetRepeats(IDirectMusicSegment8 *iface, DWORD *repeats)
static HRESULT segment_append_track(struct segment *This, IDirectMusicTrack *track, DWORD group, DWORD flags)
static HRESULT parse_track_list(struct segment *This, IStream *stream, const struct chunk_entry *trkl)
static HRESULT WINAPI segment_SetDefaultResolution(IDirectMusicSegment8 *iface, DWORD resolution)
static HRESULT WINAPI segment_Unload(IDirectMusicSegment8 *iface, IUnknown *audio_path)
static HRESULT WINAPI segment_RemoveNotificationType(IDirectMusicSegment8 *iface, REFGUID rguidNotificationType)
static HRESULT WINAPI segment_SetLength(IDirectMusicSegment8 *iface, MUSIC_TIME length)
static HRESULT WINAPI segment_SetParam(IDirectMusicSegment8 *iface, REFGUID type, DWORD group, DWORD index, MUSIC_TIME music_time, void *param)
static void dump_segment_header(DMUS_IO_SEGMENT_HEADER *h, DWORD size)
static HRESULT WINAPI segment_GetLoopPoints(IDirectMusicSegment8 *iface, MUSIC_TIME *start, MUSIC_TIME *end)
static HRESULT WINAPI segment_Clone(IDirectMusicSegment8 *iface, MUSIC_TIME start, MUSIC_TIME end, IDirectMusicSegment **segment)
HRESULT create_dmsegment(REFIID guid, void **ret_iface)
static const IDirectMusicObjectVtbl segment_object_vtbl
static HRESULT WINAPI segment_persist_stream_Load(IPersistStream *iface, IStream *stream)
static HRESULT WINAPI segment_InsertTrack(IDirectMusicSegment8 *iface, IDirectMusicTrack *track, DWORD group)
static HRESULT WINAPI segment_GetTrack(IDirectMusicSegment8 *iface, REFGUID type, DWORD group, DWORD index, IDirectMusicTrack **ret_track)
static HRESULT WINAPI segment_object_ParseDescriptor(IDirectMusicObject *iface, IStream *stream, DMUS_OBJECTDESC *desc)
static HRESULT WINAPI segment_Compose(IDirectMusicSegment8 *iface, MUSIC_TIME mtTime, IDirectMusicSegment *pFromSegment, IDirectMusicSegment *pToSegment, IDirectMusicSegment **ppComposedSegment)
static struct segment * impl_from_IPersistStream(IPersistStream *iface)
static HRESULT WINAPI segment_GetAudioPathConfig(IDirectMusicSegment8 *iface, IUnknown **ppAudioPathConfig)
static HRESULT WINAPI segment_SetPChannelsUsed(IDirectMusicSegment8 *iface, DWORD dwNumPChannels, DWORD *paPChannels)
static HRESULT WINAPI segment_SetGraph(IDirectMusicSegment8 *iface, IDirectMusicGraph *graph)
static HRESULT WINAPI segment_GetTrackGroup(IDirectMusicSegment8 *iface, IDirectMusicTrack *track, DWORD *ret_group)
IDirectMusicSegment8 IDirectMusicSegment8_iface
DMUS_IO_SEGMENT_HEADER header
IDirectMusicGraph * pGraph
IDirectMusicTrack * pTrack
IDirectMusicTrack * track
#define CONTAINING_RECORD(address, type, field)