Когда стандарт говорит о ECS, он не относится к нему как к типу сегмента, как SOS, с заголовком и компонентом размера; это буквально необработанный битовый поток, сжатый Хаффманом, представляющий MCU, которые составляют данные изображения. Он дополняется для заполнения целого числа байтов и может дополнительно чередоваться с заголовками RST (формально заголовки RST отделены от ECS).
Когда стандарт гласит ECS 0 , это означает 0-й (первый) запуск ECS, а не конкретный тип ECS, например, как SOF0 / SOF1 / SOF2 / и т. Д. Являются различными типами.
Пример базового DCT:
FF DA // SOS header
00 08 // 8 bytes
01 // 1 channel
01 00 // channel 1 QT 0 HT 0
00 3F 00 // start/end spectral selector, successive approximation bit high/low
12 34 56 78 ... // Huffman-compressed MCU raw data
(sequence of Fuffman codes looked-up in AC/DC Huffman tables)
FF D9 // EOI
Удобной бесплатной программой для объяснения структуры JFIF является JPEGsnoop (http://www.impulseadventure.com/photo/jpeg-snoop.html). В меню есть опция «Полное декодирование», которая показывает необработанный битовый поток Хаффмана, как он отображается на символы Хаффмана, деквантован и затем сопоставлен с компонентами DCT.