/[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 3477 by schoenebeck, Wed Feb 20 16:04:19 2019 UTC revision 3478 by schoenebeck, Thu Feb 21 20:10:08 2019 UTC
# Line 122  namespace DLS { Line 122  namespace DLS {
122              artl->GetChunkID() != CHUNK_ID_ARTL) {              artl->GetChunkID() != CHUNK_ID_ARTL) {
123                throw DLS::Exception("<artl-ck> or <art2-ck> chunk expected");                throw DLS::Exception("<artl-ck> or <art2-ck> chunk expected");
124          }          }
125    
126            artl->SetPos(0);
127    
128          HeaderSize  = artl->ReadUint32();          HeaderSize  = artl->ReadUint32();
129          Connections = artl->ReadUint32();          Connections = artl->ReadUint32();
130          artl->SetPos(HeaderSize);          artl->SetPos(HeaderSize);
# Line 164  namespace DLS { Line 167  namespace DLS {
167          }          }
168      }      }
169    
170        /** @brief Remove all RIFF chunks associated with this Articulation object.
171         *
172         * At the moment Articulation::DeleteChunks() does nothing. It is
173         * recommended to call this method explicitly though from deriving classes's
174         * own overridden implementation of this method to avoid potential future
175         * compatiblity issues.
176         *
177         * See Storage::DeleteChunks() for details.
178         */
179        void Articulation::DeleteChunks() {
180        }
181    
182    
183    
184  // *************** Articulator  ***************  // *************** Articulator  ***************
# Line 232  namespace DLS { Line 247  namespace DLS {
247              }              }
248          }          }
249      }      }
250        
251        /** @brief Remove all RIFF chunks associated with this Articulator object.
252         *
253         * See Storage::DeleteChunks() for details.
254         */
255        void Articulator::DeleteChunks() {
256            if (pArticulations) {
257                ArticulationList::iterator iter = pArticulations->begin();
258                ArticulationList::iterator end  = pArticulations->end();
259                for (; iter != end; ++iter) {
260                    (*iter)->DeleteChunks();
261                }
262            }
263        }
264    
265      /**      /**
266       * Not yet implemented in this version, since the .gig format does       * Not yet implemented in this version, since the .gig format does
267       * not need to copy DLS articulators and so far nobody used pure       * not need to copy DLS articulators and so far nobody used pure
# Line 399  namespace DLS { Line 428  namespace DLS {
428          SaveString(CHUNK_ID_ISRF, lstINFO, SourceForm, String(""));          SaveString(CHUNK_ID_ISRF, lstINFO, SourceForm, String(""));
429          SaveString(CHUNK_ID_ITCH, lstINFO, Technician, String(""));          SaveString(CHUNK_ID_ITCH, lstINFO, Technician, String(""));
430      }      }
431        
432        /** @brief Remove all RIFF chunks associated with this Info object.
433         *
434         * At the moment Info::DeleteChunks() does nothing. It is
435         * recommended to call this method explicitly though from deriving classes's
436         * own overridden implementation of this method to avoid potential future
437         * compatiblity issues.
438         *
439         * See Storage::DeleteChunks() for details.
440         */
441        void Info::DeleteChunks() {
442        }
443    
444      /**      /**
445       * Make a deep copy of the Info object given by @a orig and assign it to       * Make a deep copy of the Info object given by @a orig and assign it to
446       * this object.       * this object.
# Line 450  namespace DLS { Line 491  namespace DLS {
491    
492          RIFF::Chunk* ckDLSID = lstResource->GetSubChunk(CHUNK_ID_DLID);          RIFF::Chunk* ckDLSID = lstResource->GetSubChunk(CHUNK_ID_DLID);
493          if (ckDLSID) {          if (ckDLSID) {
494                ckDLSID->SetPos(0);
495    
496              pDLSID = new dlsid_t;              pDLSID = new dlsid_t;
497              ckDLSID->Read(&pDLSID->ulData1, 1, 4);              ckDLSID->Read(&pDLSID->ulData1, 1, 4);
498              ckDLSID->Read(&pDLSID->usData2, 1, 2);              ckDLSID->Read(&pDLSID->usData2, 1, 2);
# Line 464  namespace DLS { Line 507  namespace DLS {
507          if (pInfo)  delete pInfo;          if (pInfo)  delete pInfo;
508      }      }
509    
510        /** @brief Remove all RIFF chunks associated with this Resource object.
511         *
512         * At the moment Resource::DeleteChunks() does nothing. It is recommended
513         * to call this method explicitly though from deriving classes's own
514         * overridden implementation of this method to avoid potential future
515         * compatiblity issues.
516         *
517         * See Storage::DeleteChunks() for details.
518         */
519        void Resource::DeleteChunks() {
520        }
521    
522      /** @brief Update chunks with current Resource data.      /** @brief Update chunks with current Resource data.
523       *       *
524       * Apply Resource data persistently below the previously given resource       * Apply Resource data persistently below the previously given resource
# Line 555  namespace DLS { Line 610  namespace DLS {
610          pParentList       = ParentList;          pParentList       = ParentList;
611          RIFF::Chunk* wsmp = ParentList->GetSubChunk(CHUNK_ID_WSMP);          RIFF::Chunk* wsmp = ParentList->GetSubChunk(CHUNK_ID_WSMP);
612          if (wsmp) {          if (wsmp) {
613                wsmp->SetPos(0);
614    
615              uiHeaderSize   = wsmp->ReadUint32();              uiHeaderSize   = wsmp->ReadUint32();
616              UnityNote      = wsmp->ReadUint16();              UnityNote      = wsmp->ReadUint16();
617              FineTune       = wsmp->ReadInt16();              FineTune       = wsmp->ReadInt16();
# Line 629  namespace DLS { Line 686  namespace DLS {
686          }          }
687      }      }
688    
689        /** @brief Remove all RIFF chunks associated with this Sampler object.
690         *
691         * At the moment Sampler::DeleteChunks() does nothing. It is
692         * recommended to call this method explicitly though from deriving classes's
693         * own overridden implementation of this method to avoid potential future
694         * compatiblity issues.
695         *
696         * See Storage::DeleteChunks() for details.
697         */
698        void Sampler::DeleteChunks() {
699        }
700    
701      /**      /**
702       * Adds a new sample loop with the provided loop definition.       * Adds a new sample loop with the provided loop definition.
703       *       *
# Line 721  namespace DLS { Line 790  namespace DLS {
790          pCkFormat = waveList->GetSubChunk(CHUNK_ID_FMT);          pCkFormat = waveList->GetSubChunk(CHUNK_ID_FMT);
791          pCkData   = waveList->GetSubChunk(CHUNK_ID_DATA);          pCkData   = waveList->GetSubChunk(CHUNK_ID_DATA);
792          if (pCkFormat) {          if (pCkFormat) {
793                pCkFormat->SetPos(0);
794    
795              // common fields              // common fields
796              FormatTag              = pCkFormat->ReadUint16();              FormatTag              = pCkFormat->ReadUint16();
797              Channels               = pCkFormat->ReadUint16();              Channels               = pCkFormat->ReadUint16();
# Line 751  namespace DLS { Line 822  namespace DLS {
822    
823      /** @brief Destructor.      /** @brief Destructor.
824       *       *
825       * Removes RIFF chunks associated with this Sample and frees all       * Frees all memory occupied by this sample.
      * memory occupied by this sample.  
826       */       */
827      Sample::~Sample() {      Sample::~Sample() {
828          RIFF::List* pParent = pWaveList->GetParent();          if (pCkData)
829          pParent->DeleteSubChunk(pWaveList);              pCkData->ReleaseChunkData();
830            if (pCkFormat)
831                pCkFormat->ReleaseChunkData();
832      }      }
833        
834        /** @brief Remove all RIFF chunks associated with this Sample object.
835         *
836         * See Storage::DeleteChunks() for details.
837         */
838        void Sample::DeleteChunks() {
839            // handle base class
840            Resource::DeleteChunks();
841    
842            // handle own RIFF chunks
843            if (pWaveList) {
844                RIFF::List* pParent = pWaveList->GetParent();
845                pParent->DeleteSubChunk(pWaveList);
846                pWaveList = NULL;
847            }
848        }
849    
850      /**      /**
851       * Make a deep copy of the Sample object given by @a orig (without the       * Make a deep copy of the Sample object given by @a orig (without the
852       * actual sample waveform data however) and assign it to this object.       * actual sample waveform data however) and assign it to this object.
# Line 1003  namespace DLS { Line 1091  namespace DLS {
1091          // articulation information          // articulation information
1092          RIFF::Chunk* rgnh = rgnList->GetSubChunk(CHUNK_ID_RGNH);          RIFF::Chunk* rgnh = rgnList->GetSubChunk(CHUNK_ID_RGNH);
1093          if (rgnh) {          if (rgnh) {
1094                rgnh->SetPos(0);
1095    
1096              rgnh->Read(&KeyRange, 2, 2);              rgnh->Read(&KeyRange, 2, 2);
1097              rgnh->Read(&VelocityRange, 2, 2);              rgnh->Read(&VelocityRange, 2, 2);
1098              FormatOptionFlags = rgnh->ReadUint16();              FormatOptionFlags = rgnh->ReadUint16();
# Line 1025  namespace DLS { Line 1115  namespace DLS {
1115          // sample information          // sample information
1116          RIFF::Chunk* wlnk = rgnList->GetSubChunk(CHUNK_ID_WLNK);          RIFF::Chunk* wlnk = rgnList->GetSubChunk(CHUNK_ID_WLNK);
1117          if (wlnk) {          if (wlnk) {
1118                wlnk->SetPos(0);
1119    
1120              WaveLinkOptionFlags = wlnk->ReadUint16();              WaveLinkOptionFlags = wlnk->ReadUint16();
1121              PhaseGroup          = wlnk->ReadUint16();              PhaseGroup          = wlnk->ReadUint16();
1122              Channel             = wlnk->ReadUint32();              Channel             = wlnk->ReadUint32();
# Line 1043  namespace DLS { Line 1135  namespace DLS {
1135    
1136      /** @brief Destructor.      /** @brief Destructor.
1137       *       *
1138       * Removes RIFF chunks associated with this Region.       * Intended to free up all memory occupied by this Region object. ATM this
1139         * destructor implementation does nothing though.
1140       */       */
1141      Region::~Region() {      Region::~Region() {
1142          RIFF::List* pParent = pCkRegion->GetParent();      }
1143          pParent->DeleteSubChunk(pCkRegion);  
1144        /** @brief Remove all RIFF chunks associated with this Region object.
1145         *
1146         * See Storage::DeleteChunks() for details.
1147         */
1148        void Region::DeleteChunks() {
1149            // handle base classes
1150            Resource::DeleteChunks();
1151            Articulator::DeleteChunks();
1152            Sampler::DeleteChunks();
1153    
1154            // handle own RIFF chunks
1155            if (pCkRegion) {
1156                RIFF::List* pParent = pCkRegion->GetParent();
1157                pParent->DeleteSubChunk(pCkRegion);
1158                pCkRegion = NULL;
1159            }
1160      }      }
1161    
1162      Sample* Region::GetSample() {      Sample* Region::GetSample() {
# Line 1229  namespace DLS { Line 1338  namespace DLS {
1338          midi_locale_t locale;          midi_locale_t locale;
1339          RIFF::Chunk* insh = pCkInstrument->GetSubChunk(CHUNK_ID_INSH);          RIFF::Chunk* insh = pCkInstrument->GetSubChunk(CHUNK_ID_INSH);
1340          if (insh) {          if (insh) {
1341                insh->SetPos(0);
1342    
1343              Regions = insh->ReadUint32();              Regions = insh->ReadUint32();
1344              insh->Read(&locale, 2, 4);              insh->Read(&locale, 2, 4);
1345          } else { // 'insh' chunk missing          } else { // 'insh' chunk missing
# Line 1300  namespace DLS { Line 1411  namespace DLS {
1411          if (iter == pRegions->end()) return;          if (iter == pRegions->end()) return;
1412          pRegions->erase(iter);          pRegions->erase(iter);
1413          Regions = (uint32_t) pRegions->size();          Regions = (uint32_t) pRegions->size();
1414            pRegion->DeleteChunks();
1415          delete pRegion;          delete pRegion;
1416      }      }
1417    
# Line 1344  namespace DLS { Line 1456  namespace DLS {
1456    
1457      /** @brief Destructor.      /** @brief Destructor.
1458       *       *
1459       * Removes RIFF chunks associated with this Instrument and frees all       * Frees all memory occupied by this instrument.
      * memory occupied by this instrument.  
1460       */       */
1461      Instrument::~Instrument() {      Instrument::~Instrument() {
1462          if (pRegions) {          if (pRegions) {
# Line 1357  namespace DLS { Line 1468  namespace DLS {
1468              }              }
1469              delete pRegions;              delete pRegions;
1470          }          }
         // remove instrument's chunks  
         RIFF::List* pParent = pCkInstrument->GetParent();  
         pParent->DeleteSubChunk(pCkInstrument);  
1471      }      }
1472        
1473        /** @brief Remove all RIFF chunks associated with this Instrument object.
1474         *
1475         * See Storage::DeleteChunks() for details.
1476         */
1477        void Instrument::DeleteChunks() {
1478            // handle base classes
1479            Resource::DeleteChunks();
1480            Articulator::DeleteChunks();
1481    
1482            // handle RIFF chunks of members
1483            if (pRegions) {
1484                RegionList::iterator it  = pRegions->begin();
1485                RegionList::iterator end = pRegions->end();
1486                for (; it != end; ++it)
1487                    (*it)->DeleteChunks();
1488            }
1489    
1490            // handle own RIFF chunks
1491            if (pCkInstrument) {
1492                RIFF::List* pParent = pCkInstrument->GetParent();
1493                pParent->DeleteSubChunk(pCkInstrument);
1494                pCkInstrument = NULL;
1495            }
1496        }
1497    
1498      void Instrument::CopyAssignCore(const Instrument* orig) {      void Instrument::CopyAssignCore(const Instrument* orig) {
1499          // handle base classes          // handle base classes
1500          Resource::CopyAssign(orig);          Resource::CopyAssign(orig);
# Line 1445  namespace DLS { Line 1578  namespace DLS {
1578          bOwningRiff = false;          bOwningRiff = false;
1579          RIFF::Chunk* ckVersion = pRIFF->GetSubChunk(CHUNK_ID_VERS);          RIFF::Chunk* ckVersion = pRIFF->GetSubChunk(CHUNK_ID_VERS);
1580          if (ckVersion) {          if (ckVersion) {
1581                ckVersion->SetPos(0);
1582    
1583              pVersion = new version_t;              pVersion = new version_t;
1584              ckVersion->Read(pVersion, 4, 2);              ckVersion->Read(pVersion, 4, 2);
1585          }          }
# Line 1452  namespace DLS { Line 1587  namespace DLS {
1587    
1588          RIFF::Chunk* colh = pRIFF->GetSubChunk(CHUNK_ID_COLH);          RIFF::Chunk* colh = pRIFF->GetSubChunk(CHUNK_ID_COLH);
1589          if (!colh) throw DLS::Exception("Mandatory chunks in RIFF list chunk not found.");          if (!colh) throw DLS::Exception("Mandatory chunks in RIFF list chunk not found.");
1590            colh->SetPos(0);
1591          Instruments = colh->ReadUint32();          Instruments = colh->ReadUint32();
1592    
1593          RIFF::Chunk* ptbl = pRIFF->GetSubChunk(CHUNK_ID_PTBL);          RIFF::Chunk* ptbl = pRIFF->GetSubChunk(CHUNK_ID_PTBL);
# Line 1462  namespace DLS { Line 1598  namespace DLS {
1598              WavePoolHeaderSize = 8;              WavePoolHeaderSize = 8;
1599              b64BitWavePoolOffsets = false;              b64BitWavePoolOffsets = false;
1600          } else {          } else {
1601                ptbl->SetPos(0);
1602    
1603              WavePoolHeaderSize = ptbl->ReadUint32();              WavePoolHeaderSize = ptbl->ReadUint32();
1604              WavePoolCount  = ptbl->ReadUint32();              WavePoolCount  = ptbl->ReadUint32();
1605              pWavePoolTable = new uint32_t[WavePoolCount];              pWavePoolTable = new uint32_t[WavePoolCount];
# Line 1535  namespace DLS { Line 1673  namespace DLS {
1673          if (!pSamples) pSamples = new SampleList;          if (!pSamples) pSamples = new SampleList;
1674          RIFF::List* wvpl = pRIFF->GetSubList(LIST_TYPE_WVPL);          RIFF::List* wvpl = pRIFF->GetSubList(LIST_TYPE_WVPL);
1675          if (wvpl) {          if (wvpl) {
1676              file_offset_t wvplFileOffset = wvpl->GetFilePos();              file_offset_t wvplFileOffset = wvpl->GetFilePos() -
1677                                               wvpl->GetPos(); // should be zero, but just to be sure
1678              RIFF::List* wave = wvpl->GetFirstSubList();              RIFF::List* wave = wvpl->GetFirstSubList();
1679              while (wave) {              while (wave) {
1680                  if (wave->GetListType() == LIST_TYPE_WAVE) {                  if (wave->GetListType() == LIST_TYPE_WAVE) {
1681                      file_offset_t waveFileOffset = wave->GetFilePos();                      file_offset_t waveFileOffset = wave->GetFilePos() -
1682                                                       wave->GetPos(); // should be zero, but just to be sure
1683                      pSamples->push_back(new Sample(this, wave, waveFileOffset - wvplFileOffset));                      pSamples->push_back(new Sample(this, wave, waveFileOffset - wvplFileOffset));
1684                  }                  }
1685                  wave = wvpl->GetNextSubList();                  wave = wvpl->GetNextSubList();
# Line 1548  namespace DLS { Line 1688  namespace DLS {
1688          else { // Seen a dwpl list chunk instead of a wvpl list chunk in some file (officially not DLS compliant)          else { // Seen a dwpl list chunk instead of a wvpl list chunk in some file (officially not DLS compliant)
1689              RIFF::List* dwpl = pRIFF->GetSubList(LIST_TYPE_DWPL);              RIFF::List* dwpl = pRIFF->GetSubList(LIST_TYPE_DWPL);
1690              if (dwpl) {              if (dwpl) {
1691                  file_offset_t dwplFileOffset = dwpl->GetFilePos();                  file_offset_t dwplFileOffset = dwpl->GetFilePos() -
1692                                                   dwpl->GetPos(); // should be zero, but just to be sure
1693                  RIFF::List* wave = dwpl->GetFirstSubList();                  RIFF::List* wave = dwpl->GetFirstSubList();
1694                  while (wave) {                  while (wave) {
1695                      if (wave->GetListType() == LIST_TYPE_WAVE) {                      if (wave->GetListType() == LIST_TYPE_WAVE) {
1696                          file_offset_t waveFileOffset = wave->GetFilePos();                          file_offset_t waveFileOffset = wave->GetFilePos() -
1697                                                           wave->GetPos(); // should be zero, but just to be sure
1698                          pSamples->push_back(new Sample(this, wave, waveFileOffset - dwplFileOffset));                          pSamples->push_back(new Sample(this, wave, waveFileOffset - dwplFileOffset));
1699                      }                      }
1700                      wave = dwpl->GetNextSubList();                      wave = dwpl->GetNextSubList();
# Line 1591  namespace DLS { Line 1733  namespace DLS {
1733          SampleList::iterator iter = find(pSamples->begin(), pSamples->end(), pSample);          SampleList::iterator iter = find(pSamples->begin(), pSamples->end(), pSample);
1734          if (iter == pSamples->end()) return;          if (iter == pSamples->end()) return;
1735          pSamples->erase(iter);          pSamples->erase(iter);
1736            pSample->DeleteChunks();
1737          delete pSample;          delete pSample;
1738      }      }
1739    
# Line 1650  namespace DLS { Line 1793  namespace DLS {
1793          InstrumentList::iterator iter = find(pInstruments->begin(), pInstruments->end(), pInstrument);          InstrumentList::iterator iter = find(pInstruments->begin(), pInstruments->end(), pInstrument);
1794          if (iter == pInstruments->end()) return;          if (iter == pInstruments->end()) return;
1795          pInstruments->erase(iter);          pInstruments->erase(iter);
1796            pInstrument->DeleteChunks();
1797          delete pInstrument;          delete pInstrument;
1798      }      }
1799    
# Line 2113  namespace DLS { Line 2257  namespace DLS {
2257          if (!pSamples) return;          if (!pSamples) return;
2258          // update offsets in wave pool table          // update offsets in wave pool table
2259          RIFF::List* wvpl = pRIFF->GetSubList(LIST_TYPE_WVPL);          RIFF::List* wvpl = pRIFF->GetSubList(LIST_TYPE_WVPL);
2260          uint64_t wvplFileOffset = wvpl->GetFilePos();          uint64_t wvplFileOffset = wvpl->GetFilePos() -
2261                                      wvpl->GetPos(); // mandatory, since position might have changed
2262          if (!b64BitWavePoolOffsets) { // conventional 32 bit offsets (and no extension files) ...          if (!b64BitWavePoolOffsets) { // conventional 32 bit offsets (and no extension files) ...
2263              SampleList::iterator iter = pSamples->begin();              SampleList::iterator iter = pSamples->begin();
2264              SampleList::iterator end  = pSamples->end();              SampleList::iterator end  = pSamples->end();
2265              for (int i = 0 ; iter != end ; ++iter, i++) {              for (int i = 0 ; iter != end ; ++iter, i++) {
2266                  uint64_t _64BitOffset = (*iter)->pWaveList->GetFilePos() - wvplFileOffset - LIST_HEADER_SIZE(pRIFF->GetFileOffsetSize());                  uint64_t _64BitOffset =
2267                        (*iter)->pWaveList->GetFilePos() -
2268                        (*iter)->pWaveList->GetPos() - // should be zero, but just to be sure
2269                        wvplFileOffset -
2270                        LIST_HEADER_SIZE(pRIFF->GetFileOffsetSize());
2271                  (*iter)->ullWavePoolOffset = _64BitOffset;                  (*iter)->ullWavePoolOffset = _64BitOffset;
2272                  pWavePoolTable[i] = (uint32_t) _64BitOffset;                  pWavePoolTable[i] = (uint32_t) _64BitOffset;
2273              }              }
# Line 2127  namespace DLS { Line 2276  namespace DLS {
2276                  SampleList::iterator iter = pSamples->begin();                  SampleList::iterator iter = pSamples->begin();
2277                  SampleList::iterator end  = pSamples->end();                  SampleList::iterator end  = pSamples->end();
2278                  for (int i = 0 ; iter != end ; ++iter, i++) {                  for (int i = 0 ; iter != end ; ++iter, i++) {
2279                      uint64_t _64BitOffset = (*iter)->pWaveList->GetFilePos() - wvplFileOffset - LIST_HEADER_SIZE(pRIFF->GetFileOffsetSize());                      uint64_t _64BitOffset =
2280                            (*iter)->pWaveList->GetFilePos() -
2281                            (*iter)->pWaveList->GetPos() - // should be zero, but just to be sure
2282                            wvplFileOffset -
2283                            LIST_HEADER_SIZE(pRIFF->GetFileOffsetSize());
2284                      (*iter)->ullWavePoolOffset = _64BitOffset;                      (*iter)->ullWavePoolOffset = _64BitOffset;
2285                      pWavePoolTableHi[i] = (uint32_t) (_64BitOffset >> 32);                      pWavePoolTableHi[i] = (uint32_t) (_64BitOffset >> 32);
2286                      pWavePoolTable[i]   = (uint32_t) _64BitOffset;                      pWavePoolTable[i]   = (uint32_t) _64BitOffset;
# Line 2160  namespace DLS { Line 2313  namespace DLS {
2313                          RIFF::List* extWvpl = pCurPoolFile->GetSubList(LIST_TYPE_WVPL);                          RIFF::List* extWvpl = pCurPoolFile->GetSubList(LIST_TYPE_WVPL);
2314                          if (!extWvpl)                          if (!extWvpl)
2315                              throw DLS::Exception("Fatal error, pool file has no 'wvpl' list chunk");                              throw DLS::Exception("Fatal error, pool file has no 'wvpl' list chunk");
2316                          waveOffset = extWvpl->GetFilePos() + LIST_HEADER_SIZE(pCurPoolFile->GetFileOffsetSize());                          waveOffset =
2317                                extWvpl->GetFilePos() -
2318                                extWvpl->GetPos() + // mandatory, since position might have changed
2319                                LIST_HEADER_SIZE(pCurPoolFile->GetFileOffsetSize());
2320                      }                      }
2321                      uint64_t _64BitOffset = (*iter)->pWaveList->GetFilePos() - waveOffset;                      uint64_t _64BitOffset =
2322                            (*iter)->pWaveList->GetFilePos() -
2323                            (*iter)->pWaveList->GetPos() - // should be zero, but just to be sure
2324                            waveOffset;
2325                      // pWavePoolTableHi stores file number when extension files are in use                      // pWavePoolTableHi stores file number when extension files are in use
2326                      pWavePoolTableHi[i] = (uint32_t) fileNo;                      pWavePoolTableHi[i] = (uint32_t) fileNo;
2327                      pWavePoolTable[i]   = (uint32_t) _64BitOffset;                      pWavePoolTable[i]   = (uint32_t) _64BitOffset;

Legend:
Removed from v.3477  
changed lines
  Added in v.3478

  ViewVC Help
Powered by ViewVC