mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
Merged New Inventory Project into main branch
git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@1871 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+224
-224
@@ -19,11 +19,11 @@
|
||||
|
||||
typedef struct
|
||||
{
|
||||
BYTE *pbWaveData; // pointer into wave resource (for restore)
|
||||
DWORD cbWaveSize; // size of wave data (for restore)
|
||||
int iAlloc; // number of buffers.
|
||||
int iCurrent; // current buffer
|
||||
IDirectSoundBuffer* Buffers[1]; // list of buffers
|
||||
BYTE *pbWaveData; // pointer into wave resource (for restore)
|
||||
DWORD cbWaveSize; // size of wave data (for restore)
|
||||
int iAlloc; // number of buffers.
|
||||
int iCurrent; // current buffer
|
||||
IDirectSoundBuffer* Buffers[1]; // list of buffers
|
||||
|
||||
} SNDOBJ, *HSNDOBJ;
|
||||
|
||||
@@ -40,30 +40,30 @@ static const char c_szWAV[] = "WAVE";
|
||||
|
||||
IDirectSoundBuffer *DSLoadSoundBuffer(IDirectSound *pDS, LPCTSTR lpName)
|
||||
{
|
||||
IDirectSoundBuffer *pDSB = NULL;
|
||||
DSBUFFERDESC dsBD = {0};
|
||||
BYTE *pbWaveData;
|
||||
IDirectSoundBuffer *pDSB = NULL;
|
||||
DSBUFFERDESC dsBD = {0};
|
||||
BYTE *pbWaveData;
|
||||
|
||||
if (DSGetWaveResource(NULL, lpName, &dsBD.lpwfxFormat, &pbWaveData, &dsBD.dwBufferBytes))
|
||||
{
|
||||
dsBD.dwSize = sizeof(dsBD);
|
||||
dsBD.dwFlags = DSBCAPS_STATIC | DSBCAPS_CTRLDEFAULT; // | DSBCAPS_GETCURRENTPOSITION2;
|
||||
if (DSGetWaveResource(NULL, lpName, &dsBD.lpwfxFormat, &pbWaveData, &dsBD.dwBufferBytes))
|
||||
{
|
||||
dsBD.dwSize = sizeof(dsBD);
|
||||
dsBD.dwFlags = DSBCAPS_STATIC | DSBCAPS_CTRLDEFAULT; // | DSBCAPS_GETCURRENTPOSITION2;
|
||||
|
||||
if (SUCCEEDED(IDirectSound_CreateSoundBuffer(pDS, &dsBD, &pDSB, NULL)))
|
||||
{
|
||||
if (!DSFillSoundBuffer(pDSB, pbWaveData, dsBD.dwBufferBytes))
|
||||
{
|
||||
IDirectSoundBuffer_Release(pDSB);
|
||||
pDSB = NULL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
pDSB = NULL;
|
||||
}
|
||||
}
|
||||
if (SUCCEEDED(IDirectSound_CreateSoundBuffer(pDS, &dsBD, &pDSB, NULL)))
|
||||
{
|
||||
if (!DSFillSoundBuffer(pDSB, pbWaveData, dsBD.dwBufferBytes))
|
||||
{
|
||||
IDirectSoundBuffer_Release(pDSB);
|
||||
pDSB = NULL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
pDSB = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
return pDSB;
|
||||
return pDSB;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
@@ -74,20 +74,20 @@ IDirectSoundBuffer *DSLoadSoundBuffer(IDirectSound *pDS, LPCTSTR lpName)
|
||||
|
||||
BOOL DSReloadSoundBuffer(IDirectSoundBuffer *pDSB, LPCTSTR lpName)
|
||||
{
|
||||
BOOL result=FALSE;
|
||||
BYTE *pbWaveData;
|
||||
DWORD cbWaveSize;
|
||||
BOOL result=FALSE;
|
||||
BYTE *pbWaveData;
|
||||
DWORD cbWaveSize;
|
||||
|
||||
if (DSGetWaveResource(NULL, lpName, NULL, &pbWaveData, &cbWaveSize))
|
||||
{
|
||||
if (SUCCEEDED(IDirectSoundBuffer_Restore(pDSB)) &&
|
||||
DSFillSoundBuffer(pDSB, pbWaveData, cbWaveSize))
|
||||
{
|
||||
result = TRUE;
|
||||
}
|
||||
}
|
||||
if (DSGetWaveResource(NULL, lpName, NULL, &pbWaveData, &cbWaveSize))
|
||||
{
|
||||
if (SUCCEEDED(IDirectSoundBuffer_Restore(pDSB)) &&
|
||||
DSFillSoundBuffer(pDSB, pbWaveData, cbWaveSize))
|
||||
{
|
||||
result = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
return result;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
@@ -97,21 +97,21 @@ BOOL DSReloadSoundBuffer(IDirectSoundBuffer *pDSB, LPCTSTR lpName)
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
BOOL DSGetWaveResource(HMODULE hModule, LPCTSTR lpName,
|
||||
WAVEFORMATEX **ppWaveHeader, BYTE **ppbWaveData, DWORD *pcbWaveSize)
|
||||
WAVEFORMATEX **ppWaveHeader, BYTE **ppbWaveData, DWORD *pcbWaveSize)
|
||||
{
|
||||
HRSRC hResInfo;
|
||||
HGLOBAL hResData;
|
||||
void *pvRes;
|
||||
HRSRC hResInfo;
|
||||
HGLOBAL hResData;
|
||||
void *pvRes;
|
||||
|
||||
if (((hResInfo = FindResource(hModule, lpName, c_szWAV)) != NULL) &&
|
||||
((hResData = LoadResource(hModule, hResInfo)) != NULL) &&
|
||||
((pvRes = LockResource(hResData)) != NULL) &&
|
||||
DSParseWaveResource(pvRes, ppWaveHeader, ppbWaveData, pcbWaveSize))
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
if (((hResInfo = FindResource(hModule, lpName, c_szWAV)) != NULL) &&
|
||||
((hResData = LoadResource(hModule, hResInfo)) != NULL) &&
|
||||
((pvRes = LockResource(hResData)) != NULL) &&
|
||||
DSParseWaveResource(pvRes, ppWaveHeader, ppbWaveData, pcbWaveSize))
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
@@ -120,43 +120,43 @@ BOOL DSGetWaveResource(HMODULE hModule, LPCTSTR lpName,
|
||||
|
||||
SNDOBJ *SndObjCreate(IDirectSound *pDS, LPCTSTR lpName, int iConcurrent)
|
||||
{
|
||||
SNDOBJ *pSO = NULL;
|
||||
LPWAVEFORMATEX pWaveHeader;
|
||||
BYTE *pbData;
|
||||
UINT cbData;
|
||||
SNDOBJ *pSO = NULL;
|
||||
LPWAVEFORMATEX pWaveHeader;
|
||||
BYTE *pbData;
|
||||
UINT cbData;
|
||||
|
||||
if (DSGetWaveResource(NULL, lpName, &pWaveHeader, &pbData, (DWORD *)&cbData))
|
||||
{
|
||||
if (iConcurrent < 1)
|
||||
iConcurrent = 1;
|
||||
if (DSGetWaveResource(NULL, lpName, &pWaveHeader, &pbData, (DWORD *)&cbData))
|
||||
{
|
||||
if (iConcurrent < 1)
|
||||
iConcurrent = 1;
|
||||
|
||||
if ((pSO = (SNDOBJ *)LocalAlloc(LPTR, sizeof(SNDOBJ) +
|
||||
(iConcurrent-1) * sizeof(IDirectSoundBuffer *))) != NULL)
|
||||
{
|
||||
int i;
|
||||
if ((pSO = (SNDOBJ *)LocalAlloc(LPTR, sizeof(SNDOBJ) +
|
||||
(iConcurrent-1) * sizeof(IDirectSoundBuffer *))) != NULL)
|
||||
{
|
||||
int i;
|
||||
|
||||
pSO->iAlloc = iConcurrent;
|
||||
pSO->pbWaveData = pbData;
|
||||
pSO->cbWaveSize = cbData;
|
||||
pSO->Buffers[0] = DSLoadSoundBuffer(pDS, lpName);
|
||||
pSO->iAlloc = iConcurrent;
|
||||
pSO->pbWaveData = pbData;
|
||||
pSO->cbWaveSize = cbData;
|
||||
pSO->Buffers[0] = DSLoadSoundBuffer(pDS, lpName);
|
||||
|
||||
for (i=1; i<pSO->iAlloc; i++)
|
||||
{
|
||||
if (FAILED(IDirectSound_DuplicateSoundBuffer(pDS,
|
||||
pSO->Buffers[0], &pSO->Buffers[i])))
|
||||
{
|
||||
pSO->Buffers[i] = DSLoadSoundBuffer(pDS, lpName);
|
||||
if (!pSO->Buffers[i]) {
|
||||
SndObjDestroy(pSO);
|
||||
pSO = NULL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (i=1; i<pSO->iAlloc; i++)
|
||||
{
|
||||
if (FAILED(IDirectSound_DuplicateSoundBuffer(pDS,
|
||||
pSO->Buffers[0], &pSO->Buffers[i])))
|
||||
{
|
||||
pSO->Buffers[i] = DSLoadSoundBuffer(pDS, lpName);
|
||||
if (!pSO->Buffers[i]) {
|
||||
SndObjDestroy(pSO);
|
||||
pSO = NULL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return pSO;
|
||||
return pSO;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
@@ -164,20 +164,20 @@ SNDOBJ *SndObjCreate(IDirectSound *pDS, LPCTSTR lpName, int iConcurrent)
|
||||
|
||||
void SndObjDestroy(SNDOBJ *pSO)
|
||||
{
|
||||
if (pSO)
|
||||
{
|
||||
int i;
|
||||
if (pSO)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i=0; i<pSO->iAlloc; i++)
|
||||
{
|
||||
if (pSO->Buffers[i])
|
||||
{
|
||||
IDirectSoundBuffer_Release(pSO->Buffers[i]);
|
||||
pSO->Buffers[i] = NULL;
|
||||
}
|
||||
}
|
||||
LocalFree((HANDLE)pSO);
|
||||
}
|
||||
for (i=0; i<pSO->iAlloc; i++)
|
||||
{
|
||||
if (pSO->Buffers[i])
|
||||
{
|
||||
IDirectSoundBuffer_Release(pSO->Buffers[i]);
|
||||
pSO->Buffers[i] = NULL;
|
||||
}
|
||||
}
|
||||
LocalFree((HANDLE)pSO);
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
@@ -185,54 +185,54 @@ void SndObjDestroy(SNDOBJ *pSO)
|
||||
|
||||
IDirectSoundBuffer *SndObjGetFreeBuffer(SNDOBJ *pSO)
|
||||
{
|
||||
IDirectSoundBuffer *pDSB;
|
||||
IDirectSoundBuffer *pDSB;
|
||||
|
||||
if (pSO == NULL)
|
||||
return NULL;
|
||||
if (pSO == NULL)
|
||||
return NULL;
|
||||
|
||||
if (pDSB = pSO->Buffers[pSO->iCurrent])
|
||||
{
|
||||
HRESULT hres;
|
||||
DWORD dwStatus;
|
||||
if (pDSB = pSO->Buffers[pSO->iCurrent])
|
||||
{
|
||||
HRESULT hres;
|
||||
DWORD dwStatus;
|
||||
|
||||
hres = IDirectSoundBuffer_GetStatus(pDSB, &dwStatus);
|
||||
hres = IDirectSoundBuffer_GetStatus(pDSB, &dwStatus);
|
||||
|
||||
if (FAILED(hres))
|
||||
dwStatus = 0;
|
||||
if (FAILED(hres))
|
||||
dwStatus = 0;
|
||||
|
||||
if ((dwStatus & DSBSTATUS_PLAYING) == DSBSTATUS_PLAYING)
|
||||
{
|
||||
if (pSO->iAlloc > 1)
|
||||
{
|
||||
if (++pSO->iCurrent >= pSO->iAlloc)
|
||||
pSO->iCurrent = 0;
|
||||
if ((dwStatus & DSBSTATUS_PLAYING) == DSBSTATUS_PLAYING)
|
||||
{
|
||||
if (pSO->iAlloc > 1)
|
||||
{
|
||||
if (++pSO->iCurrent >= pSO->iAlloc)
|
||||
pSO->iCurrent = 0;
|
||||
|
||||
pDSB = pSO->Buffers[pSO->iCurrent];
|
||||
hres = IDirectSoundBuffer_GetStatus(pDSB, &dwStatus);
|
||||
pDSB = pSO->Buffers[pSO->iCurrent];
|
||||
hres = IDirectSoundBuffer_GetStatus(pDSB, &dwStatus);
|
||||
|
||||
if (SUCCEEDED(hres) && (dwStatus & DSBSTATUS_PLAYING) == DSBSTATUS_PLAYING)
|
||||
{
|
||||
IDirectSoundBuffer_Stop(pDSB);
|
||||
IDirectSoundBuffer_SetCurrentPosition(pDSB, 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
pDSB = NULL;
|
||||
}
|
||||
}
|
||||
if (SUCCEEDED(hres) && (dwStatus & DSBSTATUS_PLAYING) == DSBSTATUS_PLAYING)
|
||||
{
|
||||
IDirectSoundBuffer_Stop(pDSB);
|
||||
IDirectSoundBuffer_SetCurrentPosition(pDSB, 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
pDSB = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if (pDSB && (dwStatus & DSBSTATUS_BUFFERLOST))
|
||||
{
|
||||
if (FAILED(IDirectSoundBuffer_Restore(pDSB)) ||
|
||||
!DSFillSoundBuffer(pDSB, pSO->pbWaveData, pSO->cbWaveSize))
|
||||
{
|
||||
pDSB = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (pDSB && (dwStatus & DSBSTATUS_BUFFERLOST))
|
||||
{
|
||||
if (FAILED(IDirectSoundBuffer_Restore(pDSB)) ||
|
||||
!DSFillSoundBuffer(pDSB, pSO->pbWaveData, pSO->cbWaveSize))
|
||||
{
|
||||
pDSB = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return pDSB;
|
||||
return pDSB;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
@@ -240,20 +240,20 @@ IDirectSoundBuffer *SndObjGetFreeBuffer(SNDOBJ *pSO)
|
||||
|
||||
BOOL SndObjPlay(SNDOBJ *pSO, DWORD dwPlayFlags)
|
||||
{
|
||||
BOOL result = FALSE;
|
||||
BOOL result = FALSE;
|
||||
|
||||
if (pSO == NULL)
|
||||
return FALSE;
|
||||
if (pSO == NULL)
|
||||
return FALSE;
|
||||
|
||||
if ((!(dwPlayFlags & DSBPLAY_LOOPING) || (pSO->iAlloc == 1)))
|
||||
{
|
||||
IDirectSoundBuffer *pDSB = SndObjGetFreeBuffer(pSO);
|
||||
if (pDSB != NULL) {
|
||||
result = SUCCEEDED(IDirectSoundBuffer_Play(pDSB, 0, 0, dwPlayFlags));
|
||||
}
|
||||
}
|
||||
if ((!(dwPlayFlags & DSBPLAY_LOOPING) || (pSO->iAlloc == 1)))
|
||||
{
|
||||
IDirectSoundBuffer *pDSB = SndObjGetFreeBuffer(pSO);
|
||||
if (pDSB != NULL) {
|
||||
result = SUCCEEDED(IDirectSoundBuffer_Play(pDSB, 0, 0, dwPlayFlags));
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
return result;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
@@ -261,18 +261,18 @@ BOOL SndObjPlay(SNDOBJ *pSO, DWORD dwPlayFlags)
|
||||
|
||||
BOOL SndObjStop(SNDOBJ *pSO)
|
||||
{
|
||||
int i;
|
||||
int i;
|
||||
|
||||
if (pSO == NULL)
|
||||
return FALSE;
|
||||
if (pSO == NULL)
|
||||
return FALSE;
|
||||
|
||||
for (i=0; i<pSO->iAlloc; i++)
|
||||
{
|
||||
IDirectSoundBuffer_Stop(pSO->Buffers[i]);
|
||||
IDirectSoundBuffer_SetCurrentPosition(pSO->Buffers[i], 0);
|
||||
}
|
||||
for (i=0; i<pSO->iAlloc; i++)
|
||||
{
|
||||
IDirectSoundBuffer_Stop(pSO->Buffers[i]);
|
||||
IDirectSoundBuffer_SetCurrentPosition(pSO->Buffers[i], 0);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
@@ -280,25 +280,25 @@ BOOL SndObjStop(SNDOBJ *pSO)
|
||||
|
||||
BOOL DSFillSoundBuffer(IDirectSoundBuffer *pDSB, BYTE *pbWaveData, DWORD cbWaveSize)
|
||||
{
|
||||
if (pDSB && pbWaveData && cbWaveSize)
|
||||
{
|
||||
LPVOID pMem1, pMem2;
|
||||
DWORD dwSize1, dwSize2;
|
||||
if (pDSB && pbWaveData && cbWaveSize)
|
||||
{
|
||||
LPVOID pMem1, pMem2;
|
||||
DWORD dwSize1, dwSize2;
|
||||
|
||||
if (SUCCEEDED(IDirectSoundBuffer_Lock(pDSB, 0, cbWaveSize,
|
||||
&pMem1, &dwSize1, &pMem2, &dwSize2, 0)))
|
||||
{
|
||||
CopyMemory(pMem1, pbWaveData, dwSize1);
|
||||
if (SUCCEEDED(IDirectSoundBuffer_Lock(pDSB, 0, cbWaveSize,
|
||||
&pMem1, &dwSize1, &pMem2, &dwSize2, 0)))
|
||||
{
|
||||
CopyMemory(pMem1, pbWaveData, dwSize1);
|
||||
|
||||
if ( 0 != dwSize2 )
|
||||
CopyMemory(pMem2, pbWaveData+dwSize1, dwSize2);
|
||||
if ( 0 != dwSize2 )
|
||||
CopyMemory(pMem2, pbWaveData+dwSize1, dwSize2);
|
||||
|
||||
IDirectSoundBuffer_Unlock(pDSB, pMem1, dwSize1, pMem2, dwSize2);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
IDirectSoundBuffer_Unlock(pDSB, pMem1, dwSize1, pMem2, dwSize2);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
@@ -306,76 +306,76 @@ BOOL DSFillSoundBuffer(IDirectSoundBuffer *pDSB, BYTE *pbWaveData, DWORD cbWaveS
|
||||
|
||||
BOOL DSParseWaveResource(void *pvRes, WAVEFORMATEX **ppWaveHeader, BYTE **ppbWaveData,DWORD *pcbWaveSize)
|
||||
{
|
||||
DWORD *pdw;
|
||||
DWORD *pdwEnd;
|
||||
DWORD dwRiff;
|
||||
DWORD dwType;
|
||||
DWORD dwLength;
|
||||
DWORD *pdw;
|
||||
DWORD *pdwEnd;
|
||||
DWORD dwRiff;
|
||||
DWORD dwType;
|
||||
DWORD dwLength;
|
||||
|
||||
if (ppWaveHeader)
|
||||
*ppWaveHeader = NULL;
|
||||
if (ppWaveHeader)
|
||||
*ppWaveHeader = NULL;
|
||||
|
||||
if (ppbWaveData)
|
||||
*ppbWaveData = NULL;
|
||||
if (ppbWaveData)
|
||||
*ppbWaveData = NULL;
|
||||
|
||||
if (pcbWaveSize)
|
||||
*pcbWaveSize = 0;
|
||||
if (pcbWaveSize)
|
||||
*pcbWaveSize = 0;
|
||||
|
||||
pdw = (DWORD *)pvRes;
|
||||
dwRiff = *pdw++;
|
||||
dwLength = *pdw++;
|
||||
dwType = *pdw++;
|
||||
pdw = (DWORD *)pvRes;
|
||||
dwRiff = *pdw++;
|
||||
dwLength = *pdw++;
|
||||
dwType = *pdw++;
|
||||
|
||||
if (dwRiff != mmioFOURCC('R', 'I', 'F', 'F'))
|
||||
goto exit; // not even RIFF
|
||||
if (dwRiff != mmioFOURCC('R', 'I', 'F', 'F'))
|
||||
goto exit; // not even RIFF
|
||||
|
||||
if (dwType != mmioFOURCC('W', 'A', 'V', 'E'))
|
||||
goto exit; // not a WAV
|
||||
if (dwType != mmioFOURCC('W', 'A', 'V', 'E'))
|
||||
goto exit; // not a WAV
|
||||
|
||||
pdwEnd = (DWORD *)((BYTE *)pdw + dwLength-4);
|
||||
pdwEnd = (DWORD *)((BYTE *)pdw + dwLength-4);
|
||||
|
||||
while (pdw < pdwEnd)
|
||||
{
|
||||
dwType = *pdw++;
|
||||
dwLength = *pdw++;
|
||||
while (pdw < pdwEnd)
|
||||
{
|
||||
dwType = *pdw++;
|
||||
dwLength = *pdw++;
|
||||
|
||||
switch (dwType)
|
||||
{
|
||||
case mmioFOURCC('f', 'm', 't', ' '):
|
||||
if (ppWaveHeader && !*ppWaveHeader)
|
||||
{
|
||||
if (dwLength < sizeof(WAVEFORMAT))
|
||||
goto exit; // not a WAV
|
||||
switch (dwType)
|
||||
{
|
||||
case mmioFOURCC('f', 'm', 't', ' '):
|
||||
if (ppWaveHeader && !*ppWaveHeader)
|
||||
{
|
||||
if (dwLength < sizeof(WAVEFORMAT))
|
||||
goto exit; // not a WAV
|
||||
|
||||
*ppWaveHeader = (WAVEFORMATEX *)pdw;
|
||||
*ppWaveHeader = (WAVEFORMATEX *)pdw;
|
||||
|
||||
if ((!ppbWaveData || *ppbWaveData) &&
|
||||
(!pcbWaveSize || *pcbWaveSize))
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
if ((!ppbWaveData || *ppbWaveData) &&
|
||||
(!pcbWaveSize || *pcbWaveSize))
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case mmioFOURCC('d', 'a', 't', 'a'):
|
||||
if ((ppbWaveData && !*ppbWaveData) ||
|
||||
(pcbWaveSize && !*pcbWaveSize))
|
||||
{
|
||||
if (ppbWaveData)
|
||||
*ppbWaveData = (LPBYTE)pdw;
|
||||
case mmioFOURCC('d', 'a', 't', 'a'):
|
||||
if ((ppbWaveData && !*ppbWaveData) ||
|
||||
(pcbWaveSize && !*pcbWaveSize))
|
||||
{
|
||||
if (ppbWaveData)
|
||||
*ppbWaveData = (LPBYTE)pdw;
|
||||
|
||||
if (pcbWaveSize)
|
||||
*pcbWaveSize = dwLength;
|
||||
if (pcbWaveSize)
|
||||
*pcbWaveSize = dwLength;
|
||||
|
||||
if (!ppWaveHeader || *ppWaveHeader)
|
||||
return TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (!ppWaveHeader || *ppWaveHeader)
|
||||
return TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
pdw = (DWORD *)((BYTE *)pdw + ((dwLength+1)&~1));
|
||||
}
|
||||
pdw = (DWORD *)((BYTE *)pdw + ((dwLength+1)&~1));
|
||||
}
|
||||
|
||||
exit:
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user