арифметическое кодирование по законным причинам. JPEG файлы, использующие арифметическое кодирование не могут быть обработаны.
DHT: Определение Таблицы Хаффмана:
* $ff, $c4 (DHT)
* длина (старший байт, младший байт)
* информация о таблице Хаффмана (1 байт):
биты 0..3: число таблиц (0..3, в противном случае ошибка)
бит 4 : тип таблицы, 0 = таблица DC, 1 = таблица AC
биты 5..7: не используются, должны быть 0
* 16 байт: количество символов с кодами длины 1..16, сумма этих байтов является общим числом кодов, которые должны быть <= 256
* n байт: таблица, содержащая символы в порядке повышения длины кода (n = общее число кодов)
Замечания:
* Единственный сегмент DHT может содержать несколько таблиц, каждая со своим собственным байтом информации.
COM: Комментарий:
* $ff, $fe (COM)
* длина (старший байт, младший байт) комментария = L+2
* Комментарий = байтовый поток длиной L
SOS: Начало Сканирования:
* $ff, $da (SOS)
* длина (старший байт, младший байт), должна быть 6+2*(количество компонентов сканирования)
* количество компонентов сканирования (1 байт), должно быть >=1 и <=4 (в противном случае ошибка), обычно 1 или 3
* для каждого компонента: 2 байта
* идентификатор компонента (1 = Y, 2 = Cb, 3 = Cr, 4 = I, 5 = Q), смотри SOF0
* использование таблицы Хаффмана:
биты 0..3: таблица AC (0..3)
биты 4..7: таблица DC (0..3)
* 3 байта, которые должны игнорироваться
Замечания:
* Данные об изображении (данные сканирования) следуют сразу за сегментом SOS.