Как построить таблицу поиска для значений JEPG Хаффмана - PullRequest
0 голосов
/ 11 июня 2018

Я думаю, что прочитал itu-t81.pdf документ несколько раз.Но я не мог понять, как получить данные блока (значения постоянного и переменного тока) из потока битов.

Проблема в том, что я не мог понять, как получить значения Хаффмана из битового потока.В приложении F раздел F.2.2.3 Процедура DECODE описывает таблицы DECODE, EXTEND и декодера.

Вопрос 1: Я думаю, что я должен построить таблицы декодера после (или во время) анализа маркера DHT, я прав?

Вопрос 2: Рисунок Рисунок F.15 - Генерация таблицы декодера использует HUFFCODE , но в разделе маркера DHT есть список HUFFVAL (Li, Vi, j), B.2.4.2 Синтаксис спецификации таблицы Хаффмана говорит:

Vi, j: значение, связанное с каждым кодом Хаффмана - задает для каждого i,значение, связанное с каждым кодом Хаффмана длины i.Значение каждого значения определяется моделью кодирования Хаффмана.Vi, j - это элементы списка HUFFVAL

Так что у меня нет списка HUFFCODE У меня есть только список HUFFVAL, полученный из маркера DHT.Как я могу получить или построить список HUFFCODE?

Приложение C также определяет, как строить таблицы Хаффмана, есть раздел о том, как построить список / таблицу HUFFCODE ( Рисунок C.2 - Генерация таблицы кодов Хаффмана ) Думаю, я должен использовать это для построения таблицы HUFFCODE.Но он также использует биты (я).Что это за значение?БИТЫ (I) приходят от DHT?

Исходя из моего понимания, я должен следовать следующим шагам:

  1. Анализ маркера DHT для получения таблицы / списка HUFFVAL
  2. Создание таблицы / списка HUFFCODE с помощью???
  3. Создание таблиц декодера (MAXCODE, MINCODE, VALPTR) с использованием таблиц HUFFCODE
  4. В маркере сканирования используйте DECODE и EXTEND, чтобы получить значение Хаффмана, используя MAXCODE, MINCODE, VALPTRтаблицы

Я не уверен, какие данные передать в битах (i) для получения HUFFCODE.

Спасибо за разъяснение шагов

PS: я не понимаюЯ не хочу строить дерево Хаффмана, вместо этого я хочу построить таблицу поиска.

...