FlacFile constructor

FlacFile(
  1. AudioFile _audioFile
)

Implementation

FlacFile(this._audioFile) {
  var isLast = false;
  var index = 4;
  while (!isLast) {
    var metaBlockHeader = _audioFile._rawData.sublist(index, index + 1);
    index += 1;
    var header = metaBlockHeader[0];
    isLast = ((header & 0x80) >> 7) == 1;
    var type = header & 0x7F;
    var sizes = _audioFile._rawData.sublist(index, index + 3);
    index += 3;
    var dataLength = (sizes[0] << 16) + (sizes[1] << 8) + sizes[2];
    var metadataBytes = _audioFile._rawData.sublist(
      index,
      index + dataLength,
    );
    index += dataLength;
    _flacMetaBlocks.add(FlacMetaBlock(type, metadataBytes));
    if (type == 4) {
      _vorbisCommentBlock = VorbisCommentBlock(_flacMetaBlocks.last);
    }
    if (type == 6) {
      _pictureBlock = PictureBlock(_flacMetaBlocks.last);
    }
  }
}