Проблема с декодированием коэффициентов переменного тока файла JPEG - PullRequest
0 голосов
/ 13 января 2019

Я пытаюсь сделать JPEG-декодер с нуля, сосредоточившись в первую очередь на последовательном DCT-декодировании Хаффмана (надеюсь, это правильная терминология). Файл JPEG представляет собой 8-битный файл серой шкалы. Коэффициенты постоянного тока такие же, как указанные в стандарте в таблице K.3, а коэффициенты переменного тока такие же, как указанные в таблице K.5. Я сталкиваюсь с проблемой декодирования значений переменного тока во время декодирования переменной длины. Поток битов (начиная с начала сканирования) выглядит следующим образом:

1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0

Я могу декодировать данные, пока не достигну двух битов, выделенных жирным шрифтом в процедуре DECODE. Во время этой процедуры (используя термины из стандарта, рисунок F.16) я получаю Code = 0, VALPTR[2] = 0, MINCODE[2] = 0, в результате чего предпринимаются следующие попытки: VALUE = HUFFVAL[0], что выходит за пределы HUFFVAL. Для справки, мой расчетный VALPTR составляет

[- 1, 0, 2, 3, 6, 9, 11, 15, 18, 23, 28, 32, -1, -1, 36, 37]

и мой рассчитанный МИНКОД

[- 1, 0, 4, 10, 26, 58, 120, 248, 502, 1014, 2038, 4084, -1, -1, 8176, 16354].

Мои значения декодирования до тех пор, пока полужирные биты не будут следующими:

-64, 0, -1, -1, -2, -1

Кто-нибудь знает, где я иду не так?

...