/[svn]/libgig/trunk/src/DLS.cpp
ViewVC logotype

Diff of /libgig/trunk/src/DLS.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 518 by schoenebeck, Sun May 8 16:19:34 2005 UTC revision 666 by persson, Sun Jun 19 15:18:59 2005 UTC
# Line 413  namespace DLS { Line 413  namespace DLS {
413          uint32_t headersize = ptbl->ReadUint32();          uint32_t headersize = ptbl->ReadUint32();
414          WavePoolCount  = ptbl->ReadUint32();          WavePoolCount  = ptbl->ReadUint32();
415          pWavePoolTable = new uint32_t[WavePoolCount];          pWavePoolTable = new uint32_t[WavePoolCount];
416            pWavePoolTableHi = new uint32_t[WavePoolCount];
417          ptbl->SetPos(headersize);          ptbl->SetPos(headersize);
418    
419          // Check for 64 bit offsets (used in gig v3 files)          // Check for 64 bit offsets (used in gig v3 files)
420          if (ptbl->GetSize() - headersize == WavePoolCount * 8) {          if (ptbl->GetSize() - headersize == WavePoolCount * 8) {
421              for (int i = 0 ; i < WavePoolCount ; i++) {              for (int i = 0 ; i < WavePoolCount ; i++) {
422                  // Just ignore the upper bits for now                  pWavePoolTableHi[i] = ptbl->ReadUint32();
                 uint32_t upper = ptbl->ReadUint32();  
423                  pWavePoolTable[i] = ptbl->ReadUint32();                  pWavePoolTable[i] = ptbl->ReadUint32();
424                  if (upper || (pWavePoolTable[i] & 0x80000000))                  if (pWavePoolTable[i] & 0x80000000)
425                      throw DLS::Exception("Files larger than 2 GB not yet supported");                      throw DLS::Exception("Files larger than 2 GB not yet supported");
426              }              }
427          }          }
428          else ptbl->Read(pWavePoolTable, WavePoolCount, sizeof(uint32_t));          else {
429                ptbl->Read(pWavePoolTable, WavePoolCount, sizeof(uint32_t));
430                for (int i = 0 ; i < WavePoolCount ; i++) pWavePoolTableHi[i] = 0;
431            }
432    
433          pSamples     = NULL;          pSamples     = NULL;
434          pInstruments = NULL;          pInstruments = NULL;
# Line 453  namespace DLS { Line 456  namespace DLS {
456          }          }
457    
458          if (pWavePoolTable) delete[] pWavePoolTable;          if (pWavePoolTable) delete[] pWavePoolTable;
459            if (pWavePoolTableHi) delete[] pWavePoolTableHi;
460          if (pVersion) delete pVersion;          if (pVersion) delete pVersion;
461      }      }
462    

Legend:
Removed from v.518  
changed lines
  Added in v.666

  ViewVC Help
Powered by ViewVC