ГОСТ Р 53556.4—2013
tmpnpOJ= tmpnp1_i/N_FR;
npcount = tmpnpOJ/32768;
;
iscount=0;
for (jj =
0
:jj <npcount/2: jj +♦/ {
pit_seq [<_ch] [jj] = pit [jj+i_ch’N_FR_P]:
iscount ♦+;
;
for (ii = 0; ii <(ntt_N_FR_P) && (iscount <ntt_N_FR_P): ii **) (
tmpnpOJ = pitchJ * (tf+1),
tmpnpOJ * - 8192;
i_smp = tmpnpOJ/16384.
for (jj = - npcount/2;jj <(npcount-1)/
2
+
1
.jj ♦+/ {
pit_seq [i_ch] [i_smp+jj] = pit [iscount+i_ch‘N_FR_P];
iscount ♦+;
if (iscount> = N_FR_P) break;
;
}
}
}■
В случае пропуска процесса декодирования периодических пиковых компонентов все элементы мас
сива компонентов шага pit_seq ^//обнуляются.
6.10.3.4 Декодирование огибающей bark-scale
Огибающая bark-scale декодируется в каждом подфрейме. Существуют два этапа процедуры; ин
версное квантование векторов огибающей env [] [] и проектирование огибающих bark-scale env [] [] в
огибающие линейной шкалы Inenv[][]].
6.10.3.4.1 Инверсное квантование вектора огибающих
for (i_ch - 0. i_ch <N_CH: i_ch ++) {
for (isf = 0; isf <N_SF; isf *■+) {
alfq [i_ch] [isf] = indexJw_alf[i_ch] [isf] * FW_ALF_STEP;
for (ifdiv = 0; ifdiv <FW_N_DIV; ifdiv ++) {
for (icv = 0; Zcv <FW_CB_LEN: icv ++) {
ienv = FW_N_DIV *icv + ifdiv;
dtmp = cv_env [indox_env [ich] [isf] [ifdiv]] [icv]:
env fi_ch] [isf] [ienv] = dtmp + alfq [i_ch] [isf] * p_cv_env [i_ch] [icv] *
1
p_cv_env [i_ch] [icv) = dtmp;
}
}
}
}■
cv_env[}[] является сборником кодов огибающей bark-scale, перечисленных в таблице А.29.
6.10.3.4.2 Проектирование огибающей bark-scale влинейную шкалу
Огибающие env[][)[] выражаются, используя шкалу Baric на оси частот. Процедура денормализации
требует огибающихлинейной шкалы.
Перед процессом проектирования определяется граничная таблица подполосы bark-scale, crbjblf).
В случае базового уровня (lyr = 0).
if(sampling_rate <= 16000/
use the scalefactor band table of AAC for 16 kHz up to 41st value
else
use the scalefactorband table ofAAC for 24 kHz up to 41st value.
Число полос масштабного коэффициента равно 42 для размера длинного фрейма.
42-ое значение является длиной фреймадлинного фрейма (1024 или 960).
Оценка Barkscalo не используется для коротких фреймов.
Если 1уг>= 1. значения таблицы подполос Bark-scale вычисляются следующим образом;
for (i_ch = 0;i_ch <N_CH; i_ch ++/ {
k>v/er_bandj = (int) (AC_BTM [lyr][i_ch] [fb_shift] *16384./.
159