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 |