runLength static method

Uint8List runLength(
  1. Uint8List input
)

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);
}