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

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

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

revision 2450 by persson, Wed May 8 17:53:07 2013 UTC revision 2467 by schoenebeck, Sun Sep 8 16:25:42 2013 UTC
# Line 4128  namespace { Line 4128  namespace {
4128    
4129          // update group's chunks          // update group's chunks
4130          if (pGroups) {          if (pGroups) {
4131              std::list<Group*>::iterator iter = pGroups->begin();              // make sure '3gri' and '3gnl' list chunks exist
4132              std::list<Group*>::iterator end  = pGroups->end();              // (before updating the Group chunks)
4133              for (; iter != end; ++iter) {              RIFF::List* _3gri = pRIFF->GetSubList(LIST_TYPE_3GRI);
4134                  (*iter)->UpdateChunks();              if (!_3gri) {
4135                    _3gri = pRIFF->AddSubList(LIST_TYPE_3GRI);
4136                    pRIFF->MoveSubChunk(_3gri, pRIFF->GetSubChunk(CHUNK_ID_PTBL));
4137              }              }
4138                RIFF::List* _3gnl = _3gri->GetSubList(LIST_TYPE_3GNL);
4139                if (!_3gnl) _3gnl = _3gri->AddSubList(LIST_TYPE_3GNL);
4140    
4141              // v3: make sure the file has 128 3gnm chunks              // v3: make sure the file has 128 3gnm chunks
4142                // (before updating the Group chunks)
4143              if (pVersion && pVersion->major == 3) {              if (pVersion && pVersion->major == 3) {
                 RIFF::List* _3gnl = pRIFF->GetSubList(LIST_TYPE_3GRI)->GetSubList(LIST_TYPE_3GNL);  
4144                  RIFF::Chunk* _3gnm = _3gnl->GetFirstSubChunk();                  RIFF::Chunk* _3gnm = _3gnl->GetFirstSubChunk();
4145                  for (int i = 0 ; i < 128 ; i++) {                  for (int i = 0 ; i < 128 ; i++) {
4146                      if (i >= pGroups->size()) ::SaveString(CHUNK_ID_3GNM, _3gnm, _3gnl, "", "", true, 64);                      if (i >= pGroups->size()) ::SaveString(CHUNK_ID_3GNM, _3gnm, _3gnl, "", "", true, 64);
4147                      if (_3gnm) _3gnm = _3gnl->GetNextSubChunk();                      if (_3gnm) _3gnm = _3gnl->GetNextSubChunk();
4148                  }                  }
4149              }              }
4150    
4151                std::list<Group*>::iterator iter = pGroups->begin();
4152                std::list<Group*>::iterator end  = pGroups->end();
4153                for (; iter != end; ++iter) {
4154                    (*iter)->UpdateChunks();
4155                }
4156          }          }
4157    
4158          // update einf chunk          // update einf chunk

Legend:
Removed from v.2450  
changed lines
  Added in v.2467

  ViewVC Help
Powered by ViewVC