save method
void
save()
Implementation
void save() {
var totalData = _audioFile._rawData;
var isLast = false;
int index = 4;
while (!isLast) {
var metaBlockHeader = totalData.sublist(index, index + 1);
index += 1;
var header = metaBlockHeader[0];
isLast = ((header & 0x80) >> 7) == 1;
var sizes = totalData.sublist(index, index + 3);
index += 3;
var dataLength = (sizes[0] << 16) + (sizes[1] << 8) + sizes[2];
index += dataLength;
}
totalData = totalData.sublist(index);
_vorbisCommentBlock?.save();
_pictureBlock?.save();
List<int> flacMetaBlocksData = [];
for (var flacMetaBlock in _flacMetaBlocks) {
var header = List<int>.filled(4, 0);
if (identical(flacMetaBlock, _flacMetaBlocks.last)) {
header[0] |= 0x80;
}
header[0] |= flacMetaBlock.type;
var length = flacMetaBlock.data.length;
header[3] = length % 0x100;
length >>= 8;
header[2] = length % 0x100;
length >>= 8;
header[1] = length;
flacMetaBlocksData += header + flacMetaBlock.data;
}
totalData = 'fLaC'.codeUnits + flacMetaBlocksData + totalData;
_audioFile._rawData = totalData;
}