Changeset 89082 in vbox
- Timestamp:
- May 17, 2021 9:29:53 AM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Audio/AudioTest.cpp
r89078 r89082 994 994 */ 995 995 rc = RTFileReadAt(pWaveFile->hFile, pWaveFile->offSamples, &uBuf, sizeof(uBuf.List), NULL); 996 for (uint32_t i = 0; 997 i < 128 998 && RT_SUCCESS(rc) 999 && uBuf.Chunk.uMagic != RTRIFFWAVEDATACHUNK_MAGIC 1000 && (uint64_t)uBuf.Chunk.cbChunk + sizeof(RTRIFFCHUNK) * 2 <= cbFile - pWaveFile->offSamples; 1001 i++) 1002 { 1003 if ( uBuf.List.uMagic == RTRIFFLIST_MAGIC 1004 && uBuf.List.uListType == RTRIFFLIST_TYPE_INFO) 1005 { /*skip*/ } 1006 else if (uBuf.Chunk.uMagic == RTRIFFPADCHUNK_MAGIC) 1007 { /*skip*/ } 1008 else 1009 break; 1010 pWaveFile->offSamples += sizeof(RTRIFFCHUNK) + uBuf.Chunk.cbChunk; 1011 rc = RTFileReadAt(pWaveFile->hFile, pWaveFile->offSamples, &uBuf, sizeof(uBuf.List), NULL); 1012 } 996 1013 if (RT_SUCCESS(rc)) 997 1014 { 998 /** @todo Use a loop here? */999 /* HACK ALERT: Skip one INFO list and hope we find a data chunk following it: */1000 if ( uBuf.List.uMagic == RTRIFFLIST_MAGIC1001 && uBuf.List.uListType == RTRIFFLIST_TYPE_INFO1002 && uBuf.List.cbChunk <= (uint32_t)cbFile - pWaveFile->offSamples - sizeof(RTRIFFCHUNK))1003 {1004 pWaveFile->offSamples += sizeof(RTRIFFCHUNK) + uBuf.List.cbChunk;1005 rc = RTFileReadAt(pWaveFile->hFile, pWaveFile->offSamples, &uBuf, sizeof(uBuf.List), NULL);1006 }1007 1008 /* HACK ALERT: Skip PAD chunk found in some apple wav files */1009 if ( uBuf.Chunk.uMagic == RTRIFFPADCHUNK_MAGIC1010 && uBuf.Chunk.cbChunk <= (uint32_t)cbFile - pWaveFile->offSamples - sizeof(RTRIFFCHUNK))1011 {1012 pWaveFile->offSamples += sizeof(RTRIFFCHUNK) + uBuf.Chunk.cbChunk;1013 rc = RTFileReadAt(pWaveFile->hFile, pWaveFile->offSamples, &uBuf, sizeof(uBuf.List), NULL);1014 }1015 1016 1015 pWaveFile->offSamples += sizeof(uBuf.Data.Chunk); 1017 1016 pWaveFile->cbSamples = (uint32_t)cbFile - pWaveFile->offSamples;
Note:
See TracChangeset
for help on using the changeset viewer.