При этом способе для представления группы используется не 2, а 3 байта.
1-ый байт – флаговое значение, указывает на то, что следующие 2 байта являются частью закодированного пакета
2-ой байт – счетчик группы
3-ий байт – значение группы
Если в процессе кодирования встречаются группы, состоящие из 1, 2х или 3х символов, то эти данные не кодируются, а непосредственно записываются в поток сжатых данных.
флаг
счетчик
значение
Для значения флага выбирают значение, которое редко встречается.
При декодировании флаговое значение анализируется прочитанный символ, если это флаговое значение, то следующий байт обрабатывается как счетчик., 3-ий байт – как значение. Результат записывается в выходной поток данных.
Если прочитанный символ не является флаговым значением, то он записывается в выходной поток напрямую.
Минимальный размер группы, пригодный для кодирования таким способом возрастает с 3 до 4 одинаковых символов.
Если поток незакодированных данных содержит значение символов, равное флаговому значению, то этот символ должен быть закодирован в 3-х байтовый пакет. Алгоритмы RLE используют такие флаговые значения, которые в потоке несжатых данных встречаются крайне редко.
Многие RLE схемы для повышения эффективности сжатия используют пакеты повторения строк развертки, называемые пакетами вертикального повторения. Этот пакет не хранит реальных данных строк развертки, он лишь указывает на то, что необходимо повторить предыдущую строку.
Пакет вертикального повторения, если содержит 1 байт информации, то это счетчик группы =0, указывает на то, что строка должна быть повторена 1 раз. Если за этим байтом следует значение, то это значение повторяющихся строк развертки.
Т.е. одним пакетом, состоящим из счетчика группы + значением, можно описать количество повторяющихся строк.
100 строк развертки белых пикселей, в строке – 12380 пикселей