encode method
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;
}