ГОСТ Р 54711—2011
Данные помещаются в поток битов согласно синтаксису кода Хаффмана.
Фактический блок кода Хаффмана для
big_vatues
части описывается на псевдоязыке высокого уровня:
for
номер области от 0 до 2
if table_select
для этой области равен 0. то все значения в области нулевые
else
if lable_select
для этой области >15
используется ESC-таблицэ: поиск значения
BnbUs,
связанного с используемой таблицей
for
I от начала до конца области, счет по парам
х = &(/).
у = is [i +
1)
ifx >
14
linbitsx = х
— 15. х = 15
end if
signx = sign{x). x = abs
(x)
if у >
14
(inbitsy
=
у
— 15. у = 15
end if
signy
=
sign(y). у
=
abs (y)
искать кодовую комбинацию =
hcod
([x] [у]) в таблице
table_select
записать hcod((x] [yj). начиная с крайнего левого бита, количество битое
Ыеп
([х] [у])
if х > 14
записать
linbilsx
в поток битов, количество битов
linbits
end if
if х! = О
записать
signx
в поток битов
end if
ify >
14
записать
linbitsy
в поток битов, количество битов
linbits
end if
if у! = 0
записать
signy
в поток битов
end if
end do
else
ESC-комбинации не используются в этой области:
for i
от начала области до конца области, счет по парам
х = &(/). y = /s(f + 1)
signx
=
sign
(х). х =
abs
(х)
signy
=
sign
(у), у =
abs
(у)
искать кодовую комбинацию =
hcod
([х] [у]) в таблице
tab!e_seletct
записать
hcod
([х] [у]), начиная с крайнего левого бита, количество битов
Ыеп
([х] [у])
if х! -
О
записать
signx
в поток битов
end if
if yf
= О
записать
signy
в поток битов
end if
end do
end if
end if
end for
Возможный вариант использования
private_bits
в качестве счетчика фреймов.
В.1.5.4 Итеративные циклы на Уровне III
В.1.5.4.1 Введение
Описание цикла Уровня III подразделяется на три уровня. Верхний уровень вызывают программой фреймо
вого цикла. Эта подпрограмма вызывает подпрограмму «внешний итеративный цикл», который вызывает подпро
грамму «внутренний итеративный цикл». Для каждого уровня ниже показана соответствующая блок-схема (Рисун
ки В.9а, В.96. В.9в).
Внутри цикла входной вектор коэффициентов преобразования квантуется в итеративном процессе в соот
ветствии с несколькими требованиями. Во внутреннем цикле квантуется входной вектор, и увеличивается размер
шага квантователя до тех пор. пока выходной вектор не может быть кодирован с доступным числом битов. После
завершения внутреннего цикла во внешнем цикле проверяются искажения в каждой полосе масштабных коэффи
циентов. и если допустимый уровень искажений превышен, то происходит усиление полосы масштабных коэффи
циентов и снова вызывается внутренний цикл.
108