VirtualBox

Changeset 89082 in vbox


Ignore:
Timestamp:
May 17, 2021 9:29:53 AM (4 years ago)
Author:
vboxsync
Message:

AudioTest/Wave: Skip loop. bugref:10008

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Audio/AudioTest.cpp

    r89078 r89082  
    994994                     */
    995995                    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                    }
    9961013                    if (RT_SUCCESS(rc))
    9971014                    {
    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_MAGIC
    1001                             && uBuf.List.uListType ==  RTRIFFLIST_TYPE_INFO
    1002                             && 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_MAGIC
    1010                             && 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 
    10161015                        pWaveFile->offSamples += sizeof(uBuf.Data.Chunk);
    10171016                        pWaveFile->cbSamples   = (uint32_t)cbFile - pWaveFile->offSamples;
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette