ГО СТ Р 54712-2011
huffmancodebits
{) - Данные, закодированные с помощью кода Хаффмана.
Синтаксис
huffmancodebitsQ
показывает, как кодируются квантованные значения. В пределах участ
ка
big_values
пары квантованных значений с абсолютным значением меньше 15 кодируются напрямую
с использованием кодов Хаффмана. Коды выбираются из таблиц Хаффмана с 0 по 31 в ГОСТ Р 54711.
таблица Б.7. Всегда кодируются пары значений (х. у). Если квантованные значения имеют амплитуду
больше или равно 15. то они кодируются отдельно. Если одно или оба значения пары отличны от нуля,
один или два знаковых бита должны быть добавлены к кодовой комбинации.
Таблицы Хаффмана для
big_valuos
раздела состоят из трех параметров.
hcod [\х\][\у\]~
элемент таблицы значений кода Хаффмана для значений х.
у.
hlen [\х\]
М - элемент таблицы длин кода Хаффмана для значений
х. у:
linbits
- длина
linbitsx
или
linbitsy,
если они кодируются.
Синтаксис для
huffmancodebits
содержит следующие поля и параметры:
signv
- знак v (0. если положительный. 1, если отрицательный);
signw-
знак
w
(0. если положительный. 1, если отрицательный);
signx
- знак х(0. если положительный. 1. если отрицательный);
signy-
знаку (0. если положительный. 1, если отрицательный);
linbilsx
- используется, чтобы закодировать значение
х.
большее или равное 15. Это поле кодиру
ется. только если |х|в
hcod
равен 15. Если
linbits
равно нулю, то есть никакие биты не были фактически
кодированы, когда |х|==15. то значение
linbitsx
приравнивается нулю;
linbitsy -
то же самое что и
linbitsx,
но для у;
/s[1J - квантованное значение спектральной линии номер 1.
Поля
linbitsx
или
linbitsy
используются только при кодировании значений больших или равных 15.
Эти поля интерпретируются как целые числа без знака и добавляются к 15. чтобы получить кодиро
ванное значение. Поля
linbitsx
и
linbitsy
никогда не используются, если выбрана таблица для блоков с
максимальным квантованным значением меньшим 15. Следует обратить внимание, что значение 15 все
еще может быть закодировано таблицей Хаффмана, для которой
linbits
является нулем. В этом случае
поля
linbitsx
или
linbitsy
не кодируются, так как
linbits
является нулем.
В пределах раздела
count!
кодируются четверки значений с амплитудой, меньшей или равной еди нице.
Значения кодируются с использованием кодов Хаффмана. Снова для каждого ненулевого значе
ния добавляется битов знака после символа кода Хаффмана.
Таблицы Хаффмана для раздела
countl
состоят из следующих параметров
hcod [\v\J
flwjj
[\х\][\у\]
- элемент таблицы значений кода Хаффмана для значений
v, w. х. у:
hlen
/]
v\]l\w\][\х\][[у\] -
элемент таблицы длин кода Хаффмана для значений
v.
iv. х. у.
Таблица кода Хаффмана Б не является настоящим 4-мерным кодом, потому что она создается из
тривиального кода: 0 кодируется с 1, и 1 кодируется с 0.
Квантованные значения выше раздела
count!
являются нулями, таким образом, они не ко
дируются.
Для ясности, параметр
count!
используется здесь для указания на число кодов Хаффмана в
count!
области. Однако, в отличие от раздела
bigvalues,
число значений в разделе
count!
не кодируется явным
образом. Конец раздела
соипП
известен только, когда все битовы гранулы (определяемые
part2_3_
length)
были исчерпаны и значение
count!
становится точно известным после декодирования области
count!.
Порядок следования данных кода Хаффмана зависит от
blockjype
гранулы. Если
blockjype
равен
’00’. ’01’ или ’11’. данные кода Хаффмана упорядочиваются по нарастанию частоты.
Если
block_type=-
10’ (короткие блоки), данные Хаффмана организуются в том же самом порядке,
что и значения масштабных коэффициентов для гранулы. Данные Хаффмана даются для последова
тельных полос масштабных коэффициентов, начиная с полосы 0. В пределах каждой полосы данные
соответствуют последовательным временным окнам, начиная с окна 0 и заканчивая окном 2. В пределах
каждого окна квантованные значения располагаются в порядке увеличения частоты.
4.2.4.20
LFE
дополнительные данные. Уровень III
IfeJablejelect -
Определяет таблицу кода Хаффмана, которая используется для декодирования
спектральных значений канала низкой частоты. Аналогично
table_select.
lfo_hc_len -
Определяет полную длину кодированных с помощью кода Хаффмана спектральных
значения канала низкой частоты для обеих гранул.
Ife_gain
- Определяет размер шага квантователя канала низкой частоты. Аналогично global_gain.
44