ГОСТ Р 53556.4—2013
к индексу. lndex_offset имеет значение -60, как показано втаблице 150. Аналогично результатомдекодиро
вания по Хаффману каждого л-кортежа спектра является индекс кодовой комбинации, приведенный в пер
вом столбце таблицы А.2 через таблицуА.12. Этот индекс преобразовывается в спектральные значения л-
кортежа. как определено в следующем псевдо С-коде:
unsigned
dim
lav
idx
Булево значение unsigned_cb[i], приведенное во второй графе таблицы 151.
Размерность сборника кодов, приведенная во второй графе таблицы 151.
LAV. приведенный в четвертой графе таблицы 151.
Индекс кодовой комбинации.
if(unsigned) {
mod = lav ♦
1
;
off =
0
:
;
else {
mod = 2Vav +
1
;
off = lav.
}
if (dim == 4) {
w - INT(idx/(mod’mod’mod)) - off:
idx -= (w+off)’(mod’mod’mod):
x = INT(idx/(mod’mod)) - off:
idx -= (x+off)’(mod’mod):
у = INT(idx/mod) - off:
idx -= (y*off)’mod:
z = idx - off:
}
else {
у = INT(idx/mod) - off:
idx -= (y*off)’mod:
z - idx - off:
}
Если сборник кодов Хаффмана представляет значения со знаком,декодирование квантованного спек
трального л-кортежа заканчивается последекодирования Хаффмана и преобразования индекса кодовой
комбинации в квантованные спектральные коэффициенты. Если сборниккодов представляет значения без
знака, тогда биты знака, ассоциированные с ненулевыми коэффициентами следуют сразу за кодовой ком
бинацией Хаффмана с ’1’, указывающей наотрицательный коэффициент, и ’0’, указывающим наположитель
ный. Например, если кодовая комбинация Хаффмана изсборника кодов 7 hood[7][y][z] была проанализи
рована, тогда сразу после этого в полезной нагрузке потока битов имеется pair_sign_bits. который является
полем переменнойдлины от 0до 2 битов. Это можетбыть проанализировано непосредственно из полезной
нагрузки потока битое как:
1
i f ( y ! = 0 )
if (one_sign_bi( == )
у = -у:
if (z 1=0)
if (one_sign_bit == 1)
z - -z,
где ono_sign_bit является следующим битом в полезной нагрузке потока битов, и pair_sign_bits явля
ется связью полей one_sign_bH.
Сборник кодов ESC является особым случаем. Он представляет значения от 0до 16 включительно,
но значения от
0
до 15 кодируют фактические значения данных, а значение 16 является escape_flag. кото
рый сигнализирует о присутствии hcod_esc_y или hcod_esc_z, любой из которых будет обозначен как
escape_sequenco. Этот escape_sequence разрешает закодировать квантованные спектральные элементы
LAV > 15. Он состоит из escape_prefix N 1’s, сопровождаемый escape_soparatorодного нуля, сопровожда
емого escape_word N+4 битов, представляющих целочисленное значение без знака. У
escape_sequence имеется декодированное значение 2 Л(W+4) +cscape_word. Требуемый квантованный
спектральный коэф фициент является тогда знаком, указанным pair_sign_bits. применяемым к
значению escape_sequence. Другими словами. escape_sequence 00000 будет декодироваться как 16,
escape_sequertce 01111 как 31,
126