ГОСТ Р 53556.4—2013
6.2.3 Процесс декодирования
6.2.3.1 Полосы масштабного коэффициента
Масштабные коэффициенты используются, чтобы сформировать шум квантования вспектральном
домене. С этой целью спектр делится на несколько полос масштабного коэффициента. У каждой полосы
масштабного коэффициента есть масштабный коэффициент, который представляетопределенное значение
усиления, которое должно быть применено ко всем спектральным коэффициентам в этой полосе масштаб
ного коэффициента. В случае EIGHT_SHORT_SEQUENCE полоса масштабного коэффициента может со
держать несколько полос окна масштабного коэффициента последующего SHORT_WINDOWS.
6.2.3.2Декодирование масштабных коэффициентов
Для всех масштабных коэффициентов разница с предыдущим значением кодируется, используя кни
гу кодов Хаффмана. Стартовое значениедается как
8
битов РСМ в элементе данных gk>bal_gain. Масштаб
ный коэффициент не передается для полос масштабного коэффициента, которые кодируются с помощью
кодовой книги Хаффмана ZERO_HCB. Если кодовая книга Хаффмана для полосы масштабного коэффици
ента кодируется с применением INTENSITY_HCB или INTENSITY_HCB2. масштабный коэффициент ис
пользуетсядля стерео-интенсивности. В этом случае обычный масштабный коэффициент не существует
(но инициализируется обнуляясь, чтобы иметьдействующий доступ в массив).
Следующий псевдокод описывает, как декодировать масштабные коэффициенты sf[g][sfb]:
last_sf = global_gain;
for(g =
0
:g<num_window_groups:g++) {
for (sfb =
0
; sfb < max_sfb; sfb++) {
if (sfb cb[g][sfb] !- ZERO_HCB && sfb_cb{g][sfb] .’= INTENSITY_HCB
&& sfb_cb[g][sfb] != INTENSITY_HCB2 ) {
dpcm_sf= decode_huffman() -index_offset;
sf[g][sfb] = dpcm_sf + last_sf:
last_sf = sf[g)(sfbj:
}
else {
sf[g][sfb] = 0:
}
}
}
Масштабные коэффициенты sf{g][sfb]должны быть в пределах диапазона от нуля до 255. оба вклю
чительно.
В случае устойчивого к ошибкам кодирования масштабного коэффициента вместо кода Хаффмана
использовался RVLC. Процессдекодирования слов RVLC является тем же самым какдля кодовых комби
наций Хаффмана, только должна использоваться другая кодовая книга. Этот сборник кодов использует
симметричные кодовые комбинации. Благодаря этому возможно обнаружитьошибки, поскольку асиммет
ричные кодовые комбинации недопустимы. Кроме того, декодирование может быть запущено на обеих
сторонах. Чтобы позволить обратное декодирование, доступнодополнительное значение в пределах по
лезной нагрузки потока битов, которое содержит последнее значение масштабного коэффициента. В слу
чае интенсивности доступна дополнительная кодовая комбинация, которая позволяет обратное декодиро
вание. В случае PNS по той же самой причине доступнодополнительное значение DPCM.
В случае sf_escapes_present == 1. в качестве ESC_FLAG используется декодированное значение
± 7. Это сигнализирует, что существует значение escape (переход), которое должно быть добавлено к + 7
или вычтено из - 7. чтобы найти фактическое значение масштабного коэффициента. Это значение escape
является закодированным по Хаффману.
6.2.3.3 Применение масштабных коэффициентов
Спектральные коэффициенты всех полос масштабного коэффициента, которые соответствуют масш
табномукоэффициенту,должны быть повторно масштабированы согласно их масштабному коэффициенту.
В случае последовательности окон, которая содержит группы короткихокон, все коэффициенты всгруппи
рованных полосах окон масштабного коэффициента должны масштабироваться, используя тот же самый
масштабный коэффициент.
В случае window_sequencesтолько с одним окном полосы масштабного коэффициента и соответству
ющие их коэффициенты находятся в спектральном порядке по возрастанию. В случае EIGHT_SHORT_
SEQUENCE и группировки спектральные коэффициенты сгруппированных коротких окон чередуются поло
сами окна масштабного коэффициента.
122