VirtualBox

Changeset 89078 in vbox


Ignore:
Timestamp:
May 17, 2021 8:59:39 AM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
144418
Message:

AudioTest/Wave: Hack to skip PAD chunk. bugref:10008

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/iprt/formats/riff.h

    r89073 r89078  
    157157
    158158/** Magic value for RTRIFFWAVEFMT::uMagic ('data'). */
    159 #define RTRIFFWAVEDATACHUNK_MAGIC RT_BE2H_U32_C(0x64617461)
     159#define RTRIFFWAVEDATACHUNK_MAGIC   RT_BE2H_U32_C(0x64617461)
     160
     161
     162/** Magic value padding chunks ('PAD '). */
     163#define RTRIFFPADCHUNK_MAGIC        RT_BE2H_U32_C(0x50414420)
    160164
    161165/** @} */
  • trunk/src/VBox/Devices/Audio/AudioTest.cpp

    r89075 r89078  
    940940            } Wave;
    941941            RTRIFFLIST              List;
     942            RTRIFFCHUNK             Chunk;
    942943            RTRIFFWAVEDATACHUNK     Data;
    943944        } uBuf;
     
    995996                    if (RT_SUCCESS(rc))
    996997                    {
     998                        /** @todo Use a loop here?   */
    997999                        /* HACK ALERT: Skip one INFO list and hope we find a data chunk following it: */
    9981000                        if (   uBuf.List.uMagic    == RTRIFFLIST_MAGIC
     
    10041006                        }
    10051007
     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
    10061016                        pWaveFile->offSamples += sizeof(uBuf.Data.Chunk);
    10071017                        pWaveFile->cbSamples   = (uint32_t)cbFile - pWaveFile->offSamples;
     
    10131023                        {
    10141024                            pWaveFile->cbSamples = uBuf.Data.Chunk.cbChunk;
     1025
    10151026                            /*
    10161027                             * We're good!
Note: See TracChangeset for help on using the changeset viewer.

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