[Перевод] Регрессивные JPEG

Одно из удобных свойств файлов JPEG заключается в том, что в них можно опционально сохранять первыми низкочастотные компоненты. Это означает, что частично скачанное изображение будет отображаться в низком разрешении, а не обрезаться снизу.
Внутри файла это реализуется разбиением сжатых данных на несколько «сканов», перед каждым из которых добавляется заголовок. Вот первый скан изображения:
FF DA - Маркер "начало скана"
00 0C - Поле длины в big endian (12 байт); включает и свою длину
03 - Количество каналов в скане (3)
01 - Глобальный id первого включённого канала
00 - Индекс 1 таблицы Хаффмана (DC: 0, AC: 0)
02 - Глобальный id второго включённого канала
10 - Индекс 2 таблицы Хаффмана (DC: 1, AC: 0)
03 - Глобальный id третьего включённого канала
10 - Индекс 2 таблицы Хаффмана (DC: 0, AC: 0)
00 - Начальный коэффициент DCT (DC)
00 - Конечный коэффициент DCT (тоже DC)
01 - Точность: половинная, предыдущие данные отсутствуют.
f8ad 512d d3f1 cd96 - Зашифрованные кодом Хаффмана коэффициенты DCT
bcb0 58df 53d5 5d97 [...и так далее]
В него включён самый низкочастотный коэффициент (DC-компонент) преобразования Фурье для всех трёх цветовых каналов.
В качестве трёх цветовых каналов вместо привычного RGB используется YCbCr. Яркость (Luminance, Y) отделена, потому что должна иметь высокое качество, а цвета можно передавать кое-как и они всё равно будут выглядеть неплохо.
Читать далее