[PATCH 2/3] dmime: The descriptor is already parsed for the segment form
Michael Stefaniuc
mstefani at winehq.org
Thu Mar 15 19:32:25 CDT 2018
Signed-off-by: Michael Stefaniuc <mstefani at winehq.org>
---
dlls/dmime/dmutils.c | 55 ----------------------------------------------------
dlls/dmime/dmutils.h | 2 --
dlls/dmime/segment.c | 36 ++--------------------------------
3 files changed, 2 insertions(+), 91 deletions(-)
diff --git a/dlls/dmime/dmutils.c b/dlls/dmime/dmutils.c
index 75a62a4e8e..9bb8df366b 100644
--- a/dlls/dmime/dmutils.c
+++ b/dlls/dmime/dmutils.c
@@ -92,61 +92,6 @@ HRESULT IDirectMusicUtils_IPersistStream_ParseDescGeneric (DMUS_PRIVATE_CHUNK* p
return S_OK;
}
-HRESULT IDirectMusicUtils_IPersistStream_ParseUNFOGeneric (DMUS_PRIVATE_CHUNK* pChunk, IStream* pStm, LPDMUS_OBJECTDESC pDesc) {
-
- LARGE_INTEGER liMove; /* used when skipping chunks */
-
- /**
- * don't ask me why, but M$ puts INFO elements in UNFO list sometimes
- * (though strings seem to be valid unicode)
- */
- switch (pChunk->fccID) {
-
- case mmioFOURCC('I','N','A','M'):
- case DMUS_FOURCC_UNAM_CHUNK: {
- TRACE(": name chunk\n");
- pDesc->dwValidData |= DMUS_OBJ_NAME;
- IStream_Read (pStm, pDesc->wszName, pChunk->dwSize, NULL);
- TRACE(" - wszName: %s\n", debugstr_w(pDesc->wszName));
- break;
- }
-
- case mmioFOURCC('I','A','R','T'):
- case DMUS_FOURCC_UART_CHUNK: {
- TRACE(": artist chunk (ignored)\n");
- liMove.QuadPart = pChunk->dwSize;
- IStream_Seek (pStm, liMove, STREAM_SEEK_CUR, NULL);
- break;
- }
- case mmioFOURCC('I','C','O','P'):
- case DMUS_FOURCC_UCOP_CHUNK: {
- TRACE(": copyright chunk (ignored)\n");
- liMove.QuadPart = pChunk->dwSize;
- IStream_Seek (pStm, liMove, STREAM_SEEK_CUR, NULL);
- break;
- }
- case mmioFOURCC('I','S','B','J'):
- case DMUS_FOURCC_USBJ_CHUNK: {
- TRACE(": subject chunk (ignored)\n");
- liMove.QuadPart = pChunk->dwSize;
- IStream_Seek (pStm, liMove, STREAM_SEEK_CUR, NULL);
- break;
- }
- case mmioFOURCC('I','C','M','T'):
- case DMUS_FOURCC_UCMT_CHUNK: {
- TRACE(": comment chunk (ignored)\n");
- liMove.QuadPart = pChunk->dwSize;
- IStream_Seek (pStm, liMove, STREAM_SEEK_CUR, NULL);
- break;
- }
- default:
- /* not handled */
- return S_FALSE;
- }
-
- return S_OK;
-}
-
HRESULT IDirectMusicUtils_IPersistStream_ParseReference (LPPERSISTSTREAM iface, DMUS_PRIVATE_CHUNK* pChunk, IStream* pStm, IDirectMusicObject** ppObject) {
DMUS_PRIVATE_CHUNK Chunk;
DWORD ListSize[3], ListCount[3];
diff --git a/dlls/dmime/dmutils.h b/dlls/dmime/dmutils.h
index e2902875dc..187c9ed3d4 100644
--- a/dlls/dmime/dmutils.h
+++ b/dlls/dmime/dmutils.h
@@ -30,8 +30,6 @@ typedef struct _DMUS_PRIVATE_CHUNK {
/**
* Parsing utilities
*/
-extern HRESULT IDirectMusicUtils_IPersistStream_ParseDescGeneric (DMUS_PRIVATE_CHUNK* pChunk, IStream* pStm, LPDMUS_OBJECTDESC pDesc) DECLSPEC_HIDDEN;
-extern HRESULT IDirectMusicUtils_IPersistStream_ParseUNFOGeneric (DMUS_PRIVATE_CHUNK* pChunk, IStream* pStm, LPDMUS_OBJECTDESC pDesc) DECLSPEC_HIDDEN;
extern HRESULT IDirectMusicUtils_IPersistStream_ParseReference (LPPERSISTSTREAM iface, DMUS_PRIVATE_CHUNK* pChunk, IStream* pStm, IDirectMusicObject** ppObject) DECLSPEC_HIDDEN;
/**
diff --git a/dlls/dmime/segment.c b/dlls/dmime/segment.c
index 3122d2207a..88ca212c78 100644
--- a/dlls/dmime/segment.c
+++ b/dlls/dmime/segment.c
@@ -877,7 +877,7 @@ static HRESULT parse_segment_form(IDirectMusicSegment8Impl *This, DWORD StreamSi
{
HRESULT hr = E_FAIL;
DMUS_PRIVATE_CHUNK Chunk;
- DWORD StreamCount, ListSize[3], ListCount[3];
+ DWORD StreamCount;
LARGE_INTEGER liMove; /* used when skipping chunks */
StreamSize -= sizeof(FOURCC);
@@ -888,11 +888,7 @@ static HRESULT parse_segment_form(IDirectMusicSegment8Impl *This, DWORD StreamSi
StreamCount += sizeof(FOURCC) + sizeof(DWORD) + Chunk.dwSize;
TRACE_(dmfile)(": %s chunk (size = %d)", debugstr_fourcc (Chunk.fccID), Chunk.dwSize);
- hr = IDirectMusicUtils_IPersistStream_ParseDescGeneric(&Chunk, pStm, &This->dmobj.desc);
- if (FAILED(hr)) return hr;
-
- if (hr == S_FALSE) {
- switch (Chunk.fccID) {
+ switch (Chunk.fccID) {
case DMUS_FOURCC_SEGMENT_CHUNK: {
DWORD checkSz = sizeof(FOURCC);
TRACE_(dmfile)(": segment chunk\n");
@@ -938,34 +934,7 @@ static HRESULT parse_segment_form(IDirectMusicSegment8Impl *This, DWORD StreamSi
case FOURCC_LIST: {
IStream_Read (pStm, &Chunk.fccID, sizeof(FOURCC), NULL);
TRACE_(dmfile)(": LIST chunk of type %s", debugstr_fourcc(Chunk.fccID));
- ListSize[0] = Chunk.dwSize - sizeof(FOURCC);
- ListCount[0] = 0;
switch (Chunk.fccID) {
- case DMUS_FOURCC_UNFO_LIST: {
- TRACE_(dmfile)(": UNFO list\n");
- do {
- IStream_Read (pStm, &Chunk, sizeof(FOURCC)+sizeof(DWORD), NULL);
- ListCount[0] += sizeof(FOURCC) + sizeof(DWORD) + Chunk.dwSize;
- TRACE_(dmfile)(": %s chunk (size = %d)", debugstr_fourcc (Chunk.fccID), Chunk.dwSize);
-
- hr = IDirectMusicUtils_IPersistStream_ParseUNFOGeneric(&Chunk, pStm, &This->dmobj.desc);
- if (FAILED(hr)) return hr;
-
- if (hr == S_FALSE) {
- switch (Chunk.fccID) {
- default: {
- TRACE_(dmfile)(": unknown chunk (irrelevant & skipping)\n");
- liMove.QuadPart = Chunk.dwSize;
- IStream_Seek (pStm, liMove, STREAM_SEEK_CUR, NULL);
- break;
- }
- }
- }
-
- TRACE_(dmfile)(": ListCount[0] = %d < ListSize[0] = %d\n", ListCount[0], ListSize[0]);
- } while (ListCount[0] < ListSize[0]);
- break;
- }
case DMUS_FOURCC_TRACK_LIST: {
TRACE_(dmfile)(": TRACK list\n");
hr = parse_track_list(This, &Chunk, pStm);
@@ -987,7 +956,6 @@ static HRESULT parse_segment_form(IDirectMusicSegment8Impl *This, DWORD StreamSi
IStream_Seek (pStm, liMove, STREAM_SEEK_CUR, NULL);
break;
}
- }
}
TRACE_(dmfile)(": StreamCount[0] = %d < StreamSize[0] = %d\n", StreamCount, StreamSize);
} while (StreamCount < StreamSize);
--
2.14.3
More information about the wine-devel
mailing list