ГОСТ Р 54711—2011
- если после предыдущего шага число байтов в резервуаре превышает максимально допустимый обьем.
то к потоку добавляются биты стзффинга и содержимое резервуара битое соответственно корректируется.
В.1.5.4.2.3 Вычисление информации о выборе масштабных коэффициентов
(scfsi)
В
scfsi
содержится информация о том. какие масштабные коэффициенты (сгруппированные в
scfsi_bands)
первой гранулы могут быть использованы для второй гранулы. Указанные масштабные коэффициенты не пере
даются и полученные за их счет биты могут использоваться для кодирования методом Хаффмана.
Чтобы определить использование
scfsi, о
каждой грануле должна храниться следующая информация:
а) тип блока;
б) суммарная энергия гранулы
i_ to l
=intjtog2 | l | x / ,(/)|2 jb
где л — количество спектральных значений;
в) энергия каждой полосы масштабных коэффициентов
Юдг|
IHof
1
{ ®1|l6l.Dw(s£| 12
en(sb) = int
Ь\а
0
)’
где
Ibl(sb)
— номер первого коэффициента, принадлежащего полосе масштабного коэффициента sb;
bw{sb)
— количество коэффициентов в полосе масштабного коэффициента sb;
г) допустимый уровень искажений для каждой полосы
xm(sb) = intjlog2(xmin(r))|.
xmin(sb) вычисляется с помощью психоакустической (/одели.
Масштабные коэффициенты первой гранулы передаются всегда. При кодировании второй гранулы сравни
вается информация об этих двух гранулах. Существует четыре критерия возможности использования общего
scfsi.
Если один из четырех критериев не выполняется,
scfsi
отключается
(scfsi
устанавливается в 0 во всех
scfsi_bands).
Указанными критериями являются (индекс 0 соответствует первой грануле, индекс 1— второй):
а) существование спектральных значений, отличных от нуля;
б) отсутствие в гранулах коротких блоков;
в) |ел_/оЮ — ег?_/о/11
<en_totkrit.
о
б)
1 |en(sb)0 - en(sb),| <
вп _ <Шш .
art scalafactor bands
Если
scfsi
не отключается после проверки этих условий, то используются еще два критерия для каждого sc/s(_
band,
причем, для включения
scfsi
(то есть установки 1 в этой
scfsi_band)
оба эти условия должны быть выполнены;
а)
У
|ел( sb )0 - ел(sb)^| < ел(scfsi _ band )t
|xm(sb)Q-xm (sb).| <
xm(
scfsi_ band)A
1
Константы (с индексом
kht)
должны быть выбраны так. чтобы
scfsi
включался в случае близости значений
энергии/искажений.
Рекомендованные значения;
вп_ о!кп,
=10.
en_difkri1
=100.
вп
(
scfsi_band)knt
=10 для каждой
scfsi_band,
хт (scfsi_band)krit
=10 для каждой
scfsi_band.
В.1.5.4.3 Внешний итеративный цикл (цикл управления искажениями)
Внешний итеративный цикл управляет шумами квантования, которые возникают из-за квантования частот
ных линий в пределах внутреннего итеративного цикла. Шум окрашивается путем умножения линий в пределах
полос масштабных коэффициентов на масштабные коэффициенты перед квантованием. Следующий псевдокод
иллюстрирует этот процесс:
do
для каждой полосы масштабных коэффициентов:
do
от нижнего до верхнего индекса / полосы
хг(г) =(2)A((1 + scate/ac_scafe)«scate/ac|sb))
end do
end do.
где
scalefac
— либо
scalefac^.
либо
scalefac__s.
110