encode method

Uint8List encode()

Encodes the chunk to a Uint8List.

Implementation

Uint8List encode() {
// First, encode the header and temporarily store the result
  final Uint8List encodedHeader = header.encode();

  Uint8List encodedContents;

  if (header.chunkType == ChunkTypes.audioDescription) {
    final AudioFormat audioFormat = contents as AudioFormat;
    encodedContents = audioFormat.encode();
  } else if (header.chunkType == ChunkTypes.channelLayout) {
    final ChannelLayout channelLayout = contents as ChannelLayout;
    encodedContents = channelLayout.encode();
  } else if (header.chunkType == ChunkTypes.information) {
    final CAFStringsChunk cafStringsChunk = contents as CAFStringsChunk;
    encodedContents = cafStringsChunk.encode();
  } else if (header.chunkType == ChunkTypes.audioData) {
    final AudioData dataX = contents as AudioData;
    encodedContents = dataX.encode();
  } else if (header.chunkType == ChunkTypes.packetTable) {
    final PacketTable packetTable = contents as PacketTable;
    encodedContents = packetTable.encode();
  } else if (header.chunkType == ChunkTypes.midi) {
    final Midi midi = contents as Midi;
    encodedContents = midi;
  } else {
    final UnknownContents unknownContents = contents as UnknownContents;
    encodedContents = unknownContents.encode();
  }

  final int totalLength = encodedHeader.length + encodedContents.length;

  final Uint8List data = Uint8List(totalLength);

  data.setRange(0, encodedHeader.length, encodedHeader);
  data.setRange(encodedHeader.length, totalLength, encodedContents);

  return data;
}