ГОСТ Р 53556.11—2014
ки различия уникально определяется абсолютным значением связанного усеченного целого числа. На
заключительном этапе процесса декодирования обе последовательности от целого числа и мантиссы
различия суммируются, чтобы восстановить последовательность в формате с плавающей точкой.
6.9.3.1 Декодирование размера данных элемента различия
В процессе, названном frame_data. декодируется num_bytes_diffJoat. Следующие байты пит_
bytes_diff_f!oat являются сжатыми данными различия.
6.9.3.2 Декодирование элемента различия
6.9.3.2.1 Инициализация переменных
В первом фрейме или фреймах произвольного доступа некоторые переменные должны быть ини
циализированы следующим образом.
Iast_acf_mantissa [с] устанавливается в
0
.
Iast_shift_value [с] устанавливается в
0
.
В FlushDict () флаг freezeJag устанавливается в 0. code_bits устанавливается в 9. bump_code
устанавливается в 511. next_code устанавливается в 258.
Т а б л и ц а 44 — Начальные значения
Переменная
Начальное значение
Описание
last_acf_mantissa[c]
0
Это означает общий множитель 1.0
last_shift_value[c]
0
freezeJ a g
0
Инициализировано в FlushDict().
codejrls
9
Инициализировано в FtushDictQ.
bump_code
511
Инициализировано в FlushDict().
next_code
258
Инициализировано в FlusbDictQ.
6.9.3.2.2 Параметры нормализации
Перед декодированием разностного сигнала параметры нормализации должны декодироваться
следующим способом.
Во-первых, декодируется use_acd. Если use_acfне 0. для каждого каналадекодируется acf_fiag[с].
Если acf_fiag [с] не 0, декодируется acf_mantissa [с]. Если acfjlag [с] равняется 0. то же самое значение
last_acf_mantissa [с] устанавливается в acf_mantissa [с]. Когда use_acf равняется 0. Iast_acf_mantissa
[с], и acf_mantissa[с] устанавливаются в 0. Это означает, что общий множитель инициализируется в
1,0.
Кроме того, для каждого канала декодируются highest_byte [с]. partAJag [с] и shift_amp [с]. Когда
partAJlag [с] равно 0. значения всех выборок в части А являются всеми нулями, или нет никакой вы
борки. для которой соответствующее усеченное целое число равняется 0. Если shift_amp [с] равня ется
0. значение last_shift_value [с] колируется в shift_value [с]. Иначе shift_value [с] декодируется из потока
битов. Заключительная выходная последовательность с плавающей точкой, восстановленная из
усеченного целого числа, денормализовывается добавлением shift_value [с] к экспоненте выходных
данных. В конце концов last_acf_mantissa [с] и last_shift_value [с] обновляются текущими величинами
acf_mantissa [с] и shift_value [с].
6.9.3.2.3 Различия мантиссы (когда acf_mantissa [с] равняется 0)
Если acf_mantissa [с] равняется 0. мантисса различия восстанавливается следующим способом.
Последовательность различий во фрейме упаковывается. У каждой выборки имеется уникальная
длина слова фактической информации, где длина определяется значением соответствующего целого
числа. Каждое значение различия мантиссы 0(с][л) восстанавливается следующим образом.
Поток битов для восстановления значения различия разделяется на две части (часть А и часть В).
Часть А содержит выборки, необходимые для кодирования всех 32 битов. Это выборки, для которых
соответствующее усеченное целое число у равняется 0. Если усеченное целочисленное значение яв
ляется нулем, получаются исходные данные с плавающей точкой.
Если partAJlag [с] равняется 0. все значения в части А являются нулями или в части А нет ни
каких выборок. Когда partAJag (с) не является нулем, в части А есть выборки и должен быть считан
compressed_flag. Если compressedJ a g [с] равняется 0. все потоки битов упаковываются несжатыми.
Если compressedjag [с] равняется 1. выборки части А сжимаются, используя схему сжатия Masked-LZ. В
этом случае распаковка Masked-LZ применяется для потока битов в части А.
60