27 IDirectMusicPerformance8*
pPerf;
106 *ppobj = &
This->IDirectMusicAudioPath_iface;
152 FIXME(
"(%p, %ld, %ld, %ld, %s, %ld, %s, %p): stub\n",
This, dwPChannel, dwStage, dwBuffer,
debugstr_dmguid(guidObject),
160 IsEqualIID (iidInterface, &IID_IDirectSoundBuffer) ||
161 IsEqualIID (iidInterface, &IID_IDirectSoundBuffer8) ||
162 IsEqualIID (iidInterface, &IID_IDirectSound3DBuffer)) {
173 if (
IsEqualIID (iidInterface, &IID_IDirectSound3DListener)) {
177 FIXME(
"bad iid...\n");
184 if (
IsEqualIID (iidInterface, &IID_IDirectMusicGraph)) {
186 IDirectMusicGraph* pGraph;
190 This->pToolGraph = pGraph;
192 *ppObject =
This->pToolGraph;
208 *ppObject =
This->pPerf;
216 IDirectMusicGraph* pPerfoGraph =
NULL;
218 if (
NULL == pPerfoGraph) {
219 IDirectMusicGraph* pGraph =
NULL;
224 pPerfoGraph = pGraph;
226 *ppObject = pPerfoGraph;
244 FIXME(
"(%p, %d): semi-stub\n",
This, activate);
246 if (!!activate ==
This->fActive)
249 if (!activate &&
This->pDSBuffer) {
254 This->fActive = !!activate;
262 FIXME(
"(%p, %li, %ld): stub\n",
This, lVolume, dwDuration);
269 FIXME(
"(%p, %ld, %p): stub\n",
This, dwPChannelIn, pdwPChannelOut);
310 desc->guidClass = CLSID_DirectMusicAudioPathConfig;
344 TRACE(
"Got PChannelToBuffer header:\n");
345 TRACE(
"\tdwPChannelCount: %lu\n",
header.dwPChannelCount);
346 TRACE(
"\tdwPChannelBase: %lu\n",
header.dwPChannelBase);
347 TRACE(
"\tdwBufferCount: %lu\n",
header.dwBufferCount);
354 WARN(
"Invalid size of GUIDs array\n");
359 pchannel_to_buffer =
calloc(1,
sizeof(*pchannel_to_buffer) +
bytes);
360 if (!pchannel_to_buffer)
377 pchannel_to_buffer =
NULL;
381 TRACE(
"Unfo list in PChannelToBuffer is ignored\n");
397 if (
FAILED(
hr) && pchannel_to_buffer)
398 free(pchannel_to_buffer);
409 free(pchannel_to_buffer);
433 TRACE(
"Got PortConfig header:\n");
443 TRACE(
"Got PortConfig params:\n");
463 FIXME(
"DirectSound buffer descriptors is not supported\n");
467 TRACE(
"Unfo list in PortConfig is ignored\n");
523 WARN(
"Failed to get chunk %#lx.\n",
hr);
537 WARN(
"Failed to parse descriptor %#lx.\n",
hr);
540 This->dmobj.desc.guidClass = CLSID_DirectMusicAudioPathConfig;
543 chunk.parent = &riff;
553 FIXME(
"buffer attributes are not supported\n");
570 TRACE(
"Finished parsing %#lx\n",
hr);
599 *ppobj = &
This->IUnknown_iface;
601 *ppobj = &
This->dmobj.IDirectMusicObject_iface;
603 *ppobj = &
This->dmobj.IPersistStream_iface;
655 struct list *first_port_config, *first_pchannel_to_buffer;
661 if (
list_next(&
This->port_config_entries, first_port_config))
662 FIXME(
"Only one port config supported. %p -> %p\n", first_port_config,
list_next(&
This->port_config_entries, first_port_config));
666 FIXME(
"Only one pchannel to buffer entry supported.\n");
673 format->nSamplesPerSec = 44000;
674 format->nAvgBytesPerSec = 44000 * 2;
676 format->wBitsPerSample = 16;
680 desc->dwSize =
sizeof(*desc);
683 desc->dwReserved = 0;
693 FIXME(
"Only a stereo plus reverb buffer is supported\n");
699 format->nAvgBytesPerSec *= 2;
709 format->nAvgBytesPerSec *= 2;
719 FIXME(
"Multiple buffers not supported\n");
766 hr = IUnknown_QueryInterface(&
obj->IUnknown_iface,
riid, ppobj);
767 IUnknown_Release(&
obj->IUnknown_iface);
static unsigned char bytes[4]
#define InterlockedIncrement
#define InterlockedDecrement
static ULONG WINAPI path_config_IUnknown_Release(IUnknown *unk)
static struct audio_path_config * impl_from_IPersistStream(IPersistStream *iface)
static struct audio_path_config * impl_from_IUnknown(IUnknown *iface)
HRESULT create_dmaudiopath(REFIID riid, void **ppobj)
static const IDirectMusicAudioPathVtbl DirectMusicAudioPathVtbl
static struct IDirectMusicAudioPathImpl * impl_from_IDirectMusicAudioPath(IDirectMusicAudioPath *iface)
void set_audiopath_primary_dsound_buffer(IDirectMusicAudioPath *iface, IDirectSoundBuffer *buffer)
static ULONG WINAPI IDirectMusicAudioPathImpl_Release(IDirectMusicAudioPath *iface)
static const IDirectMusicObjectVtbl dmobject_vtbl
static void port_config_destroy(struct audio_path_port_config *port_config)
static HRESULT WINAPI path_config_IPersistStream_Load(IPersistStream *iface, IStream *stream)
void set_audiopath_dsound_buffer(IDirectMusicAudioPath *iface, IDirectSoundBuffer *buffer)
static const IPersistStreamVtbl persiststream_vtbl
static HRESULT WINAPI path_config_IUnknown_QueryInterface(IUnknown *iface, REFIID riid, void **ppobj)
static HRESULT WINAPI IDirectMusicAudioPathImpl_QueryInterface(IDirectMusicAudioPath *iface, REFIID riid, void **ppobj)
static HRESULT parse_port_configs_list(struct audio_path_config *This, IStream *stream, const struct chunk_entry *pcsl)
static HRESULT parse_port_config_list(struct audio_path_config *This, IStream *stream, const struct chunk_entry *pcfl)
static HRESULT WINAPI IDirectMusicAudioPathImpl_GetObjectInPath(IDirectMusicAudioPath *iface, DWORD dwPChannel, DWORD dwStage, DWORD dwBuffer, REFGUID guidObject, DWORD dwIndex, REFGUID iidInterface, void **ppObject)
HRESULT path_config_get_audio_path_params(IUnknown *iface, WAVEFORMATEX *format, DSBUFFERDESC *desc, DMUS_PORTPARAMS *params)
static ULONG WINAPI IDirectMusicAudioPathImpl_AddRef(IDirectMusicAudioPath *iface)
static HRESULT WINAPI IDirectMusicAudioPathImpl_Activate(IDirectMusicAudioPath *iface, BOOL activate)
static const IUnknownVtbl path_config_unk_vtbl
static ULONG WINAPI path_config_IUnknown_AddRef(IUnknown *unk)
static HRESULT WINAPI path_config_IDirectMusicObject_ParseDescriptor(IDirectMusicObject *iface, IStream *stream, DMUS_OBJECTDESC *desc)
static HRESULT parse_pchannel_to_buffers_list(struct audio_path_port_config *This, IStream *stream, const struct chunk_entry *pchl)
static HRESULT WINAPI IDirectMusicAudioPathImpl_SetVolume(IDirectMusicAudioPath *iface, LONG lVolume, DWORD dwDuration)
HRESULT create_dmaudiopath_config(REFIID riid, void **ppobj)
void set_audiopath_perf_pointer(IDirectMusicAudioPath *iface, IDirectMusicPerformance8 *performance)
static HRESULT WINAPI IDirectMusicAudioPathImpl_ConvertPChannel(IDirectMusicAudioPath *iface, DWORD dwPChannelIn, DWORD *pdwPChannelOut)
#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)
const struct sortguid * guids
#define DMUS_E_CHUNKNOTFOUND
HRESULT create_dmgraph(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)
#define MAKE_IDTYPE(id, type)
struct IDirectMusicGraph * LPDIRECTMUSICGRAPH
#define DMUS_PORTPARAMS_CHANNELGROUPS
#define DMUS_PORTPARAMS_SAMPLERATE
#define DMUS_PORTPARAMS_AUDIOCHANNELS
#define DMUS_PORTPARAMS_SHARE
#define DMUS_PORTPARAMS_FEATURES
#define DMUS_PORTPARAMS_VOICES
#define DMUS_PORTPARAMS_EFFECTS
#define DMUS_FOURCC_DSBUFFER_LIST
#define DMUS_FOURCC_PCHANNELS_ITEM
#define DMUS_FOURCC_GUID_CHUNK
#define DMUS_FOURCC_PORTCONFIGS_LIST
#define DMUS_FOURCC_VERSION_CHUNK
#define DMUS_FOURCC_AUDIOPATH_FORM
#define DMUS_FOURCC_PORTPARAMS_ITEM
#define DMUS_FOURCC_PCHANNELS_LIST
#define DMUS_FOURCC_PORTCONFIG_LIST
#define DMUS_FOURCC_UNFO_LIST
#define DMUS_FOURCC_PORTCONFIG_ITEM
#define IDirectMusicPerformance8_SetGraph(p, a)
#define IDirectMusicPerformance8_GetGraph(p, a)
#define DMUS_PATH_AUDIOPATH_TOOL
#define IDirectMusicAudioPath_QueryInterface(p, a, b)
#define DMUS_PATH_PERFORMANCE_GRAPH
#define DMUS_PATH_AUDIOPATH_GRAPH
#define DMUS_PATH_PERFORMANCE_TOOL
#define DMUS_PATH_PRIMARY_BUFFER
#define IDirectMusicAudioPath_Release(p)
#define DMUS_PATH_PERFORMANCE
#define IDirectMusicGraph_AddRef(p)
#define DMUS_OBJ_CATEGORY
#define DSBCAPS_GLOBALFOCUS
#define DSBCAPS_CTRLVOLUME
#define DSBCAPS_MUTE3DATMAXDISTANCE
#define IDirectSoundBuffer_Stop(p)
#define DSBCAPS_CTRLFREQUENCY
#define IDirectSoundBuffer_QueryInterface(p, a, b)
#define IDirectSoundBuffer_Release(p)
GLenum const GLfloat * params
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
D3D11_SHADER_VARIABLE_DESC desc
const GUID IID_IPersistStream
#define IsEqualGUID(rguid1, rguid2)
#define IsEqualIID(riid1, riid2)
#define offsetof(TYPE, MEMBER)
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
__WINE_SERVER_LIST_INLINE struct list * list_next(const struct list *list, const struct list *elem)
IDirectSoundBuffer * pPrimary
IDirectSoundBuffer * pDSBuffer
IDirectMusicPerformance8 * pPerf
IDirectMusicGraph * pToolGraph
IDirectMusicAudioPath IDirectMusicAudioPath_iface
struct list port_config_entries
DMUS_IO_PCHANNELTOBUFFER_HEADER header
DMUS_IO_PORTCONFIG_HEADER header
struct list pchannel_to_buffer_entries
#define CONTAINING_RECORD(address, type, field)