runLength static method
Implementation
static Uint8List runLength(Uint8List input) {
final List<int> out = <int>[];
int index = 0;
while (index < input.length) {
final int marker = input[index++];
if (marker == 128) break;
if (marker < 128) {
final int count = marker + 1;
for (int i = 0; i < count && index < input.length; i++) {
out.add(input[index++]);
}
} else {
if (index >= input.length) break;
final int byte = input[index++];
for (int i = 0; i < 257 - marker; i++) {
out.add(byte);
}
}
}
return Uint8List.fromList(out);
}