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

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

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

revision 3053 by schoenebeck, Wed Dec 14 18:55:08 2016 UTC revision 3057 by schoenebeck, Fri Dec 16 13:05:56 2016 UTC
# Line 70  namespace RIFF { Line 70  namespace RIFF {
70  // *  // *
71    
72      Chunk::Chunk(File* pFile) {      Chunk::Chunk(File* pFile) {
73          #if DEBUG          #if DEBUG_RIFF
74          std::cout << "Chunk::Chunk(File* pFile)" << std::endl;          std::cout << "Chunk::Chunk(File* pFile)" << std::endl;
75          #endif // DEBUG          #endif // DEBUG_RIFF
76          ullPos     = 0;          ullPos     = 0;
77          pParent    = NULL;          pParent    = NULL;
78          pChunkData = NULL;          pChunkData = NULL;
# Line 84  namespace RIFF { Line 84  namespace RIFF {
84      }      }
85    
86      Chunk::Chunk(File* pFile, file_offset_t StartPos, List* Parent) {      Chunk::Chunk(File* pFile, file_offset_t StartPos, List* Parent) {
87          #if DEBUG          #if DEBUG_RIFF
88          std::cout << "Chunk::Chunk(File*,file_offset_t,List*),StartPos=" << StartPos << std::endl;          std::cout << "Chunk::Chunk(File*,file_offset_t,List*),StartPos=" << StartPos << std::endl;
89          #endif // DEBUG          #endif // DEBUG_RIFF
90          this->pFile   = pFile;          this->pFile   = pFile;
91          ullStartPos   = StartPos + CHUNK_HEADER_SIZE(pFile->FileOffsetSize);          ullStartPos   = StartPos + CHUNK_HEADER_SIZE(pFile->FileOffsetSize);
92          pParent       = Parent;          pParent       = Parent;
# Line 115  namespace RIFF { Line 115  namespace RIFF {
115      }      }
116    
117      void Chunk::ReadHeader(file_offset_t filePos) {      void Chunk::ReadHeader(file_offset_t filePos) {
118          #if DEBUG          #if DEBUG_RIFF
119          std::cout << "Chunk::Readheader(" << filePos << ") ";          std::cout << "Chunk::Readheader(" << filePos << ") ";
120          #endif // DEBUG          #endif // DEBUG_RIFF
121          ChunkID = 0;          ChunkID = 0;
122          ullNewChunkSize = ullCurrentChunkSize = 0;          ullNewChunkSize = ullCurrentChunkSize = 0;
123          #if POSIX          #if POSIX
# Line 153  namespace RIFF { Line 153  namespace RIFF {
153                  else                  else
154                      swapBytes_64(&ullCurrentChunkSize);                      swapBytes_64(&ullCurrentChunkSize);
155              }              }
156              #if DEBUG              #if DEBUG_RIFF
157              std::cout << "ckID=" << convertToString(ChunkID) << " ";              std::cout << "ckID=" << convertToString(ChunkID) << " ";
158              std::cout << "ckSize=" << ullCurrentChunkSize << " ";              std::cout << "ckSize=" << ullCurrentChunkSize << " ";
159              std::cout << "bEndianNative=" << pFile->bEndianNative << std::endl;              std::cout << "bEndianNative=" << pFile->bEndianNative << std::endl;
160              #endif // DEBUG              #endif // DEBUG_RIFF
161              ullNewChunkSize = ullCurrentChunkSize;              ullNewChunkSize = ullCurrentChunkSize;
162          }          }
163      }      }
# Line 222  namespace RIFF { Line 222  namespace RIFF {
222       *                  data       *                  data
223       */       */
224      file_offset_t Chunk::SetPos(file_offset_t Where, stream_whence_t Whence) {      file_offset_t Chunk::SetPos(file_offset_t Where, stream_whence_t Whence) {
225          #if DEBUG          #if DEBUG_RIFF
226          std::cout << "Chunk::SetPos(file_offset_t,stream_whence_t)" << std::endl;          std::cout << "Chunk::SetPos(file_offset_t,stream_whence_t)" << std::endl;
227          #endif // DEBUG          #endif // DEBUG_RIFF
228          switch (Whence) {          switch (Whence) {
229              case stream_curpos:              case stream_curpos:
230                  ullPos += Where;                  ullPos += Where;
# Line 254  namespace RIFF { Line 254  namespace RIFF {
254       *  @returns  number of bytes left to read       *  @returns  number of bytes left to read
255       */       */
256      file_offset_t Chunk::RemainingBytes() const {      file_offset_t Chunk::RemainingBytes() const {
257          #if DEBUG          #if DEBUG_RIFF
258          std::cout << "Chunk::Remainingbytes()=" << ullCurrentChunkSize - ullPos << std::endl;          std::cout << "Chunk::Remainingbytes()=" << ullCurrentChunkSize - ullPos << std::endl;
259          #endif // DEBUG          #endif // DEBUG_RIFF
260          return (ullCurrentChunkSize > ullPos) ? ullCurrentChunkSize - ullPos : 0;          return (ullCurrentChunkSize > ullPos) ? ullCurrentChunkSize - ullPos : 0;
261      }      }
262    
# Line 285  namespace RIFF { Line 285  namespace RIFF {
285       *    possible without SetPos()       *    possible without SetPos()
286       */       */
287      stream_state_t Chunk::GetState() const {      stream_state_t Chunk::GetState() const {
288          #if DEBUG          #if DEBUG_RIFF
289          std::cout << "Chunk::GetState()" << std::endl;          std::cout << "Chunk::GetState()" << std::endl;
290          #endif // DEBUG          #endif // DEBUG_RIFF
291          #if POSIX          #if POSIX
292          if (pFile->hFileRead == 0) return stream_closed;          if (pFile->hFileRead == 0) return stream_closed;
293          #elif defined (WIN32)          #elif defined (WIN32)
# Line 316  namespace RIFF { Line 316  namespace RIFF {
316       *                    of file reached or error occurred       *                    of file reached or error occurred
317       */       */
318      file_offset_t Chunk::Read(void* pData, file_offset_t WordCount, file_offset_t WordSize) {      file_offset_t Chunk::Read(void* pData, file_offset_t WordCount, file_offset_t WordSize) {
319          #if DEBUG          #if DEBUG_RIFF
320          std::cout << "Chunk::Read(void*,file_offset_t,file_offset_t)" << std::endl;          std::cout << "Chunk::Read(void*,file_offset_t,file_offset_t)" << std::endl;
321          #endif // DEBUG          #endif // DEBUG_RIFF
322          //if (ulStartPos == 0) return 0; // is only 0 if this is a new chunk, so nothing to read (yet)          //if (ulStartPos == 0) return 0; // is only 0 if this is a new chunk, so nothing to read (yet)
323          if (ullPos >= ullCurrentChunkSize) return 0;          if (ullPos >= ullCurrentChunkSize) return 0;
324          if (ullPos + WordCount * WordSize >= ullCurrentChunkSize) WordCount = (ullCurrentChunkSize - ullPos) / WordSize;          if (ullPos + WordCount * WordSize >= ullCurrentChunkSize) WordCount = (ullCurrentChunkSize - ullPos) / WordSize;
# Line 326  namespace RIFF { Line 326  namespace RIFF {
326          if (lseek(pFile->hFileRead, ullStartPos + ullPos, SEEK_SET) < 0) return 0;          if (lseek(pFile->hFileRead, ullStartPos + ullPos, SEEK_SET) < 0) return 0;
327          ssize_t readWords = read(pFile->hFileRead, pData, WordCount * WordSize);          ssize_t readWords = read(pFile->hFileRead, pData, WordCount * WordSize);
328          if (readWords < 1) {          if (readWords < 1) {
329              #if DEBUG              #if DEBUG_RIFF
330              std::cerr << "POSIX read() failed: " << strerror(errno) << std::endl << std::flush;              std::cerr << "POSIX read() failed: " << strerror(errno) << std::endl << std::flush;
331              #endif // DEBUG              #endif // DEBUG_RIFF
332              return 0;              return 0;
333          }          }
334          readWords /= WordSize;          readWords /= WordSize;
# Line 459  namespace RIFF { Line 459  namespace RIFF {
459       *                          \a WordCount integers could be read!       *                          \a WordCount integers could be read!
460       */       */
461      file_offset_t Chunk::ReadInt8(int8_t* pData, file_offset_t WordCount) {      file_offset_t Chunk::ReadInt8(int8_t* pData, file_offset_t WordCount) {
462          #if DEBUG          #if DEBUG_RIFF
463          std::cout << "Chunk::ReadInt8(int8_t*,file_offset_t)" << std::endl;          std::cout << "Chunk::ReadInt8(int8_t*,file_offset_t)" << std::endl;
464          #endif // DEBUG          #endif // DEBUG_RIFF
465          return ReadSceptical(pData, WordCount, 1);          return ReadSceptical(pData, WordCount, 1);
466      }      }
467    
# Line 496  namespace RIFF { Line 496  namespace RIFF {
496       *                          \a WordCount integers could be read!       *                          \a WordCount integers could be read!
497       */       */
498      file_offset_t Chunk::ReadUint8(uint8_t* pData, file_offset_t WordCount) {      file_offset_t Chunk::ReadUint8(uint8_t* pData, file_offset_t WordCount) {
499          #if DEBUG          #if DEBUG_RIFF
500          std::cout << "Chunk::ReadUint8(uint8_t*,file_offset_t)" << std::endl;          std::cout << "Chunk::ReadUint8(uint8_t*,file_offset_t)" << std::endl;
501          #endif // DEBUG          #endif // DEBUG_RIFF
502          return ReadSceptical(pData, WordCount, 1);          return ReadSceptical(pData, WordCount, 1);
503      }      }
504    
# Line 533  namespace RIFF { Line 533  namespace RIFF {
533       *                          \a WordCount integers could be read!       *                          \a WordCount integers could be read!
534       */       */
535      file_offset_t Chunk::ReadInt16(int16_t* pData, file_offset_t WordCount) {      file_offset_t Chunk::ReadInt16(int16_t* pData, file_offset_t WordCount) {
536          #if DEBUG          #if DEBUG_RIFF
537          std::cout << "Chunk::ReadInt16(int16_t*,file_offset_t)" << std::endl;          std::cout << "Chunk::ReadInt16(int16_t*,file_offset_t)" << std::endl;
538          #endif // DEBUG          #endif // DEBUG_RIFF
539          return ReadSceptical(pData, WordCount, 2);          return ReadSceptical(pData, WordCount, 2);
540      }      }
541    
# Line 570  namespace RIFF { Line 570  namespace RIFF {
570       *                          \a WordCount integers could be read!       *                          \a WordCount integers could be read!
571       */       */
572      file_offset_t Chunk::ReadUint16(uint16_t* pData, file_offset_t WordCount) {      file_offset_t Chunk::ReadUint16(uint16_t* pData, file_offset_t WordCount) {
573          #if DEBUG          #if DEBUG_RIFF
574          std::cout << "Chunk::ReadUint16(uint16_t*,file_offset_t)" << std::endl;          std::cout << "Chunk::ReadUint16(uint16_t*,file_offset_t)" << std::endl;
575          #endif // DEBUG          #endif // DEBUG_RIFF
576          return ReadSceptical(pData, WordCount, 2);          return ReadSceptical(pData, WordCount, 2);
577      }      }
578    
# Line 607  namespace RIFF { Line 607  namespace RIFF {
607       *                          \a WordCount integers could be read!       *                          \a WordCount integers could be read!
608       */       */
609      file_offset_t Chunk::ReadInt32(int32_t* pData, file_offset_t WordCount) {      file_offset_t Chunk::ReadInt32(int32_t* pData, file_offset_t WordCount) {
610          #if DEBUG          #if DEBUG_RIFF
611          std::cout << "Chunk::ReadInt32(int32_t*,file_offset_t)" << std::endl;          std::cout << "Chunk::ReadInt32(int32_t*,file_offset_t)" << std::endl;
612          #endif // DEBUG          #endif // DEBUG_RIFF
613          return ReadSceptical(pData, WordCount, 4);          return ReadSceptical(pData, WordCount, 4);
614      }      }
615    
# Line 644  namespace RIFF { Line 644  namespace RIFF {
644       *                          \a WordCount integers could be read!       *                          \a WordCount integers could be read!
645       */       */
646      file_offset_t Chunk::ReadUint32(uint32_t* pData, file_offset_t WordCount) {      file_offset_t Chunk::ReadUint32(uint32_t* pData, file_offset_t WordCount) {
647          #if DEBUG          #if DEBUG_RIFF
648          std::cout << "Chunk::ReadUint32(uint32_t*,file_offset_t)" << std::endl;          std::cout << "Chunk::ReadUint32(uint32_t*,file_offset_t)" << std::endl;
649          #endif // DEBUG          #endif // DEBUG_RIFF
650          return ReadSceptical(pData, WordCount, 4);          return ReadSceptical(pData, WordCount, 4);
651      }      }
652    
# Line 693  namespace RIFF { Line 693  namespace RIFF {
693       * @throws RIFF::Exception  if an error occurred       * @throws RIFF::Exception  if an error occurred
694       */       */
695      int8_t Chunk::ReadInt8() {      int8_t Chunk::ReadInt8() {
696          #if DEBUG          #if DEBUG_RIFF
697          std::cout << "Chunk::ReadInt8()" << std::endl;          std::cout << "Chunk::ReadInt8()" << std::endl;
698          #endif // DEBUG          #endif // DEBUG_RIFF
699          int8_t word;          int8_t word;
700          ReadSceptical(&word,1,1);          ReadSceptical(&word,1,1);
701          return word;          return word;
# Line 709  namespace RIFF { Line 709  namespace RIFF {
709       * @throws RIFF::Exception  if an error occurred       * @throws RIFF::Exception  if an error occurred
710       */       */
711      uint8_t Chunk::ReadUint8() {      uint8_t Chunk::ReadUint8() {
712          #if DEBUG          #if DEBUG_RIFF
713          std::cout << "Chunk::ReadUint8()" << std::endl;          std::cout << "Chunk::ReadUint8()" << std::endl;
714          #endif // DEBUG          #endif // DEBUG_RIFF
715          uint8_t word;          uint8_t word;
716          ReadSceptical(&word,1,1);          ReadSceptical(&word,1,1);
717          return word;          return word;
# Line 726  namespace RIFF { Line 726  namespace RIFF {
726       * @throws RIFF::Exception  if an error occurred       * @throws RIFF::Exception  if an error occurred
727       */       */
728      int16_t Chunk::ReadInt16() {      int16_t Chunk::ReadInt16() {
729          #if DEBUG          #if DEBUG_RIFF
730          std::cout << "Chunk::ReadInt16()" << std::endl;          std::cout << "Chunk::ReadInt16()" << std::endl;
731          #endif // DEBUG          #endif // DEBUG_RIFF
732          int16_t word;          int16_t word;
733          ReadSceptical(&word,1,2);          ReadSceptical(&word,1,2);
734          return word;          return word;
# Line 743  namespace RIFF { Line 743  namespace RIFF {
743       * @throws RIFF::Exception  if an error occurred       * @throws RIFF::Exception  if an error occurred
744       */       */
745      uint16_t Chunk::ReadUint16() {      uint16_t Chunk::ReadUint16() {
746          #if DEBUG          #if DEBUG_RIFF
747          std::cout << "Chunk::ReadUint16()" << std::endl;          std::cout << "Chunk::ReadUint16()" << std::endl;
748          #endif // DEBUG          #endif // DEBUG_RIFF
749          uint16_t word;          uint16_t word;
750          ReadSceptical(&word,1,2);          ReadSceptical(&word,1,2);
751          return word;          return word;
# Line 760  namespace RIFF { Line 760  namespace RIFF {
760       * @throws RIFF::Exception  if an error occurred       * @throws RIFF::Exception  if an error occurred
761       */       */
762      int32_t Chunk::ReadInt32() {      int32_t Chunk::ReadInt32() {
763          #if DEBUG          #if DEBUG_RIFF
764          std::cout << "Chunk::ReadInt32()" << std::endl;          std::cout << "Chunk::ReadInt32()" << std::endl;
765          #endif // DEBUG          #endif // DEBUG_RIFF
766          int32_t word;          int32_t word;
767          ReadSceptical(&word,1,4);          ReadSceptical(&word,1,4);
768          return word;          return word;
# Line 777  namespace RIFF { Line 777  namespace RIFF {
777       * @throws RIFF::Exception  if an error occurred       * @throws RIFF::Exception  if an error occurred
778       */       */
779      uint32_t Chunk::ReadUint32() {      uint32_t Chunk::ReadUint32() {
780          #if DEBUG          #if DEBUG_RIFF
781          std::cout << "Chunk::ReadUint32()" << std::endl;          std::cout << "Chunk::ReadUint32()" << std::endl;
782          #endif // DEBUG          #endif // DEBUG_RIFF
783          uint32_t word;          uint32_t word;
784          ReadSceptical(&word,1,4);          ReadSceptical(&word,1,4);
785          return word;          return word;
# Line 1008  namespace RIFF { Line 1008  namespace RIFF {
1008  // *  // *
1009    
1010      List::List(File* pFile) : Chunk(pFile) {      List::List(File* pFile) : Chunk(pFile) {
1011          #if DEBUG          #if DEBUG_RIFF
1012          std::cout << "List::List(File* pFile)" << std::endl;          std::cout << "List::List(File* pFile)" << std::endl;
1013          #endif // DEBUG          #endif // DEBUG_RIFF
1014          pSubChunks    = NULL;          pSubChunks    = NULL;
1015          pSubChunksMap = NULL;          pSubChunksMap = NULL;
1016      }      }
1017    
1018      List::List(File* pFile, file_offset_t StartPos, List* Parent)      List::List(File* pFile, file_offset_t StartPos, List* Parent)
1019        : Chunk(pFile, StartPos, Parent) {        : Chunk(pFile, StartPos, Parent) {
1020          #if DEBUG          #if DEBUG_RIFF
1021          std::cout << "List::List(File*,file_offset_t,List*)" << std::endl;          std::cout << "List::List(File*,file_offset_t,List*)" << std::endl;
1022          #endif // DEBUG          #endif // DEBUG_RIFF
1023          pSubChunks    = NULL;          pSubChunks    = NULL;
1024          pSubChunksMap = NULL;          pSubChunksMap = NULL;
1025          ReadHeader(StartPos);          ReadHeader(StartPos);
# Line 1034  namespace RIFF { Line 1034  namespace RIFF {
1034      }      }
1035    
1036      List::~List() {      List::~List() {
1037          #if DEBUG          #if DEBUG_RIFF
1038          std::cout << "List::~List()" << std::endl;          std::cout << "List::~List()" << std::endl;
1039          #endif // DEBUG          #endif // DEBUG_RIFF
1040          DeleteChunkList();          DeleteChunkList();
1041      }      }
1042    
# Line 1069  namespace RIFF { Line 1069  namespace RIFF {
1069       *                   that ID       *                   that ID
1070       */       */
1071      Chunk* List::GetSubChunk(uint32_t ChunkID) {      Chunk* List::GetSubChunk(uint32_t ChunkID) {
1072          #if DEBUG          #if DEBUG_RIFF
1073          std::cout << "List::GetSubChunk(uint32_t)" << std::endl;          std::cout << "List::GetSubChunk(uint32_t)" << std::endl;
1074          #endif // DEBUG          #endif // DEBUG_RIFF
1075          if (!pSubChunksMap) LoadSubChunks();          if (!pSubChunksMap) LoadSubChunks();
1076          return (*pSubChunksMap)[ChunkID];          return (*pSubChunksMap)[ChunkID];
1077      }      }
# Line 1088  namespace RIFF { Line 1088  namespace RIFF {
1088       *                    that type       *                    that type
1089       */       */
1090      List* List::GetSubList(uint32_t ListType) {      List* List::GetSubList(uint32_t ListType) {
1091          #if DEBUG          #if DEBUG_RIFF
1092          std::cout << "List::GetSubList(uint32_t)" << std::endl;          std::cout << "List::GetSubList(uint32_t)" << std::endl;
1093          #endif // DEBUG          #endif // DEBUG_RIFF
1094          if (!pSubChunks) LoadSubChunks();          if (!pSubChunks) LoadSubChunks();
1095          ChunkList::iterator iter = pSubChunks->begin();          ChunkList::iterator iter = pSubChunks->begin();
1096          ChunkList::iterator end  = pSubChunks->end();          ChunkList::iterator end  = pSubChunks->end();
# Line 1114  namespace RIFF { Line 1114  namespace RIFF {
1114       *            otherwise       *            otherwise
1115       */       */
1116      Chunk* List::GetFirstSubChunk() {      Chunk* List::GetFirstSubChunk() {
1117          #if DEBUG          #if DEBUG_RIFF
1118          std::cout << "List::GetFirstSubChunk()" << std::endl;          std::cout << "List::GetFirstSubChunk()" << std::endl;
1119          #endif // DEBUG          #endif // DEBUG_RIFF
1120          if (!pSubChunks) LoadSubChunks();          if (!pSubChunks) LoadSubChunks();
1121          ChunksIterator = pSubChunks->begin();          ChunksIterator = pSubChunks->begin();
1122          return (ChunksIterator != pSubChunks->end()) ? *ChunksIterator : NULL;          return (ChunksIterator != pSubChunks->end()) ? *ChunksIterator : NULL;
# Line 1131  namespace RIFF { Line 1131  namespace RIFF {
1131       *            end of list is reached       *            end of list is reached
1132       */       */
1133      Chunk* List::GetNextSubChunk() {      Chunk* List::GetNextSubChunk() {
1134          #if DEBUG          #if DEBUG_RIFF
1135          std::cout << "List::GetNextSubChunk()" << std::endl;          std::cout << "List::GetNextSubChunk()" << std::endl;
1136          #endif // DEBUG          #endif // DEBUG_RIFF
1137          if (!pSubChunks) return NULL;          if (!pSubChunks) return NULL;
1138          ChunksIterator++;          ChunksIterator++;
1139          return (ChunksIterator != pSubChunks->end()) ? *ChunksIterator : NULL;          return (ChunksIterator != pSubChunks->end()) ? *ChunksIterator : NULL;
# Line 1149  namespace RIFF { Line 1149  namespace RIFF {
1149       *            otherwise       *            otherwise
1150       */       */
1151      List* List::GetFirstSubList() {      List* List::GetFirstSubList() {
1152          #if DEBUG          #if DEBUG_RIFF
1153          std::cout << "List::GetFirstSubList()" << std::endl;          std::cout << "List::GetFirstSubList()" << std::endl;
1154          #endif // DEBUG          #endif // DEBUG_RIFF
1155          if (!pSubChunks) LoadSubChunks();          if (!pSubChunks) LoadSubChunks();
1156          ListIterator            = pSubChunks->begin();          ListIterator            = pSubChunks->begin();
1157          ChunkList::iterator end = pSubChunks->end();          ChunkList::iterator end = pSubChunks->end();
# Line 1171  namespace RIFF { Line 1171  namespace RIFF {
1171       *            end of list is reached       *            end of list is reached
1172       */       */
1173      List* List::GetNextSubList() {      List* List::GetNextSubList() {
1174          #if DEBUG          #if DEBUG_RIFF
1175          std::cout << "List::GetNextSubList()" << std::endl;          std::cout << "List::GetNextSubList()" << std::endl;
1176          #endif // DEBUG          #endif // DEBUG_RIFF
1177          if (!pSubChunks) return NULL;          if (!pSubChunks) return NULL;
1178          if (ListIterator == pSubChunks->end()) return NULL;          if (ListIterator == pSubChunks->end()) return NULL;
1179          ListIterator++;          ListIterator++;
# Line 1375  namespace RIFF { Line 1375  namespace RIFF {
1375      }      }
1376    
1377      void List::ReadHeader(file_offset_t filePos) {      void List::ReadHeader(file_offset_t filePos) {
1378          #if DEBUG          #if DEBUG_RIFF
1379          std::cout << "List::Readheader(file_offset_t) ";          std::cout << "List::Readheader(file_offset_t) ";
1380          #endif // DEBUG          #endif // DEBUG_RIFF
1381          Chunk::ReadHeader(filePos);          Chunk::ReadHeader(filePos);
1382          if (ullCurrentChunkSize < 4) return;          if (ullCurrentChunkSize < 4) return;
1383          ullNewChunkSize = ullCurrentChunkSize -= 4;          ullNewChunkSize = ullCurrentChunkSize -= 4;
# Line 1394  namespace RIFF { Line 1394  namespace RIFF {
1394          fseeko(pFile->hFileRead, filePos + CHUNK_HEADER_SIZE(pFile->FileOffsetSize), SEEK_SET);          fseeko(pFile->hFileRead, filePos + CHUNK_HEADER_SIZE(pFile->FileOffsetSize), SEEK_SET);
1395          fread(&ListType, 4, 1, pFile->hFileRead);          fread(&ListType, 4, 1, pFile->hFileRead);
1396          #endif // POSIX          #endif // POSIX
1397          #if DEBUG          #if DEBUG_RIFF
1398          std::cout << "listType=" << convertToString(ListType) << std::endl;          std::cout << "listType=" << convertToString(ListType) << std::endl;
1399          #endif // DEBUG          #endif // DEBUG_RIFF
1400          if (!pFile->bEndianNative) {          if (!pFile->bEndianNative) {
1401              //swapBytes_32(&ListType);              //swapBytes_32(&ListType);
1402          }          }
# Line 1423  namespace RIFF { Line 1423  namespace RIFF {
1423      }      }
1424    
1425      void List::LoadSubChunks(progress_t* pProgress) {      void List::LoadSubChunks(progress_t* pProgress) {
1426          #if DEBUG          #if DEBUG_RIFF
1427          std::cout << "List::LoadSubChunks()";          std::cout << "List::LoadSubChunks()";
1428          #endif // DEBUG          #endif // DEBUG_RIFF
1429          if (!pSubChunks) {          if (!pSubChunks) {
1430              pSubChunks    = new ChunkList();              pSubChunks    = new ChunkList();
1431              pSubChunksMap = new ChunkMap();              pSubChunksMap = new ChunkMap();
# Line 1440  namespace RIFF { Line 1440  namespace RIFF {
1440                  Chunk* ck;                  Chunk* ck;
1441                  uint32_t ckid;                  uint32_t ckid;
1442                  Read(&ckid, 4, 1);                  Read(&ckid, 4, 1);
1443                  #if DEBUG                  #if DEBUG_RIFF
1444                  std::cout << " ckid=" << convertToString(ckid) << std::endl;                  std::cout << " ckid=" << convertToString(ckid) << std::endl;
1445                  #endif // DEBUG                  #endif // DEBUG_RIFF
1446                  if (ckid == CHUNK_ID_LIST) {                  if (ckid == CHUNK_ID_LIST) {
1447                      ck = new RIFF::List(pFile, ullStartPos + ullPos - 4, this);                      ck = new RIFF::List(pFile, ullStartPos + ullPos - 4, this);
1448                      SetPos(ck->GetSize() + LIST_HEADER_SIZE(pFile->FileOffsetSize) - 4, RIFF::stream_curpos);                      SetPos(ck->GetSize() + LIST_HEADER_SIZE(pFile->FileOffsetSize) - 4, RIFF::stream_curpos);
# Line 1583  namespace RIFF { Line 1583  namespace RIFF {
1583          : List(this), Filename(path), bIsNewFile(false), Layout(layout_standard),          : List(this), Filename(path), bIsNewFile(false), Layout(layout_standard),
1584            FileOffsetPreference(offset_size_auto)            FileOffsetPreference(offset_size_auto)
1585      {      {
1586          #if DEBUG          #if DEBUG_RIFF
1587          std::cout << "File::File("<<path<<")" << std::endl;          std::cout << "File::File("<<path<<")" << std::endl;
1588          #endif // DEBUG          #endif // DEBUG_RIFF
1589          bEndianNative = true;          bEndianNative = true;
1590          FileOffsetSize = 4;          FileOffsetSize = 4;
1591          try {          try {
# Line 2079  namespace RIFF { Line 2079  namespace RIFF {
2079      }      }
2080    
2081      File::~File() {      File::~File() {
2082          #if DEBUG          #if DEBUG_RIFF
2083          std::cout << "File::~File()" << std::endl;          std::cout << "File::~File()" << std::endl;
2084          #endif // DEBUG          #endif // DEBUG_RIFF
2085          Cleanup();          Cleanup();
2086      }      }
2087    

Legend:
Removed from v.3053  
changed lines
  Added in v.3057

  ViewVC Help
Powered by ViewVC