ГОСТ Р 54713—2011
lav =LAV. приведенный вчетвертом графе таблицы 59.
idx = индекс кодового слова.
if(unsigned){
mod = lav + 1;
off = 0:
}
else {
nxid = 2‘lav + 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 (idxVmod) - off:
idx -= (y+off) *mod
z = idx - off;
}
else {
Y = INT (idx/mod) - off:
idx -= (y+off) *mod
z = idx - off;
Если кодовая книга Хаффмана представляетзнаковые значения,декодирование п квантованных спек
тральных значений заканчивается после декодирования Хаффмана и преобразования индекса кодового
слова вквантованные спектральные коэффициенты.
Если кодовая книга представляет беззнаковые значения, биты знака, связанные с ненулевыми коэф
фициентами. следуют сразу за кодовой комбинацией Хаффмана. ’1’ указывает на отрицательный коэффици
ент. а ’0’— на положительный. Например, если кодовая комбинация Хаффмана из сборника кодов 7
hood [7] [y)[z]
была обнаружена, то сразу после нее в потоке битов следует
pair_sign_bits. которое является полем переменной длины от 0 до 2 битов. Это может быть обнаружено в
потоке битов как
if (у! = 0)
if (one_sign_bit == 1)
у —у;
if (z! = 0)
if (one_sign_bit == 1)
2 = -Z .
где oiie_sign_bit — следующий бит в потоке битое, a pair_sign_bits — объединение one_sign_bit полей.
Кодовая книга ESC является особым случаем. Она представляет значения от 0до 16 включительно,
однако кодирует фактически значения от 0 до 15. и значение 16 является флагом escape_flag,
который сигнализирует присутствие hcod_esc_y или hcod_esc_z. любой из которых будет обозначен как
escape_sequence. Этот escape_sequence разрешает кодирование квантованных спектральных элементов с
LAV> 15. Он состоит из escape_prefix из N единичных бит, escape_separator из одного нулевого бита,
escape_word из (N+4) битов, представляющих беззнаковое целое. Декодированное значение
вscape_sequonce равно 2 (N-*4) +escape_v/ord. Требуемый квантованный спектральный коэффициент
получен, когда знак, определяемый pair_sign_bits. применен к значению escape_sequence. Другими слова
ми.escape_sequonce 00000 декодируется как 16. escape_sequence 01111 как 31. escape_sequence 1000000
как 32, один из 1011111 как 63. и т. д. Следует учесть, что ограничения в 10.3 диктуют, что длина
escape_sequence всегда меньше, чем 22 бита. Для escape кодовых слов Хаффмана порядок элементов
данных является кодовой комбинацией Хаффмана, сопровождаемой от 0 до 2 битов знака, сопровождае
мых от 0 до 2 escape-последовательностями.
Когда pulse_data_present равен 1(используется импульсный escape), один или несколько квантован
ных коэффициентов были заменены в кодере коэффициентами с меньшими амплитудами. Число заменен
ных коэффициентов обозначается number_pulse. При восстановлении квантованных спектральных коэф-
57