[PATCH 2/2] dmime: Record DMUS_IO_TRACK_EXTRAS_HEADER information with track
Michael Stefaniuc
mstefani at winehq.org
Wed Mar 25 16:44:51 CDT 2020
Hello AListair,
do you have more in this series?
I had looked into this and it didn't seem that simple so I have settled
to just do commit 4ccdf3e58a8.
Most likely the flags should be set with
IDirectMusicSegment8::SetTrackConfig() as the documentation of
DMUS_IO_TRACK_EXTRAS_HEADER alludes too.
Also while that stuff is for a track it needs to be duplicated to a
SegmentState; see the Remarks in
http://doc.51windows.net/Directx9_SDK/htm/idirectmusicsegment8settrackconfig.htm
And there's
http://doc.51windows.net/directx9_sdk/htm/idirectmusicsegmentstate8settrackconfig.htm
And no clue what the dwPriority is for. The only priority stuff I can
find is for the channels.
So most likely we will need a helper for InsertTrack() that either
returns the index in the corresponding group or a
LPDMUS_PRIVATE_SEGMENT_TRACK.
But I wouldn't bother to store the info if we don't know how to use it.
bye
michael
On 3/25/20 12:17 PM, Alistair Leslie-Hughes wrote:
> Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
> ---
> dlls/dmime/dmime_private.h | 2 ++
> dlls/dmime/segment.c | 11 +++++++++--
> 2 files changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/dlls/dmime/dmime_private.h b/dlls/dmime/dmime_private.h
> index 576ebc1ae8..020c1660cb 100644
> --- a/dlls/dmime/dmime_private.h
> +++ b/dlls/dmime/dmime_private.h
> @@ -77,6 +77,8 @@ extern void set_audiopath_primary_dsound_buffer(IDirectMusicAudioPath*,IDirectSo
> typedef struct _DMUS_PRIVATE_SEGMENT_TRACK {
> struct list entry; /* for listing elements */
> DWORD dwGroupBits;
> + DWORD flags;
> + DWORD priority;
> IDirectMusicTrack* pTrack;
> } DMUS_PRIVATE_SEGMENT_TRACK, *LPDMUS_PRIVATE_SEGMENT_TRACK;
>
> diff --git a/dlls/dmime/segment.c b/dlls/dmime/segment.c
> index cfc67a7757..0fdfb2a10a 100644
> --- a/dlls/dmime/segment.c
> +++ b/dlls/dmime/segment.c
> @@ -630,7 +630,8 @@ static HRESULT parse_track_form(IDirectMusicSegment8Impl *This, IStream *stream,
> IPersistStream *ps = NULL;
> IStream *clone;
> DMUS_IO_TRACK_HEADER thdr;
> - DMUS_IO_TRACK_EXTRAS_HEADER txhdr;
> + DMUS_IO_TRACK_EXTRAS_HEADER txhdr = {0};
> + LPDMUS_PRIVATE_SEGMENT_TRACK item;
> HRESULT hr;
>
> TRACE("Parsing track form in %p: %s\n", stream, debugstr_chunk(riff));
> @@ -663,7 +664,6 @@ static HRESULT parse_track_form(IDirectMusicSegment8Impl *This, IStream *stream,
>
> if (chunk.id == DMUS_FOURCC_TRACK_EXTRAS_CHUNK &&
> SUCCEEDED(stream_chunk_get_data(stream, &chunk, &txhdr, sizeof(txhdr)))) {
> - FIXME("DMUS_IO_TRACK_EXTRAS_HEADER chunk not handled\n");
> TRACE("dwFlags: %#x, dwPriority: %u\n", txhdr.dwFlags, txhdr.dwPriority);
> }
> }
> @@ -688,7 +688,14 @@ static HRESULT parse_track_form(IDirectMusicSegment8Impl *This, IStream *stream,
> goto done;
>
> hr = IDirectMusicSegment8_InsertTrack(&This->IDirectMusicSegment8_iface, track, thdr.dwGroup);
> + if (FAILED(hr))
> + goto done;
>
> + item = get_track_entry(This, &thdr.guidClassID, thdr.dwGroup, 0);
> + if (item) {
> + item->flags = txhdr.dwFlags;
> + item->priority = txhdr.dwPriority;
> + }
> done:
> if (ps)
> IPersistStream_Release(ps);
>
More information about the wine-devel
mailing list