ГОСТ Р 53556.4—2013
direction [w] [tilt]
Один бит. указывающий, применяется ли фильтр в восходящем (0) или нисходя
щем (
1
) направлении.
Один бит. указывающий, опускаются ли при передаче (1) или нет (0) старшие
значащие биты коэффициентов фильтра формирования шума вокне w.
Коэффициенты одного фильтра формирования шума применяемые кокну w.
Массив, содержащий спектр для окна ivобрабатываемого канала.
В зависимости от window_sequence размер следующих элементов данных переключается для каждо
го окна преобразовывания согласно размеру этого окна:
coef_compress [w] [fill]
coef [w] [flit] [i]
spec [w] [k]
Т а б л и ц а 155 — Р азм ер элем ентов данны х
Имя
Окно с 128 спектральными пиниями
Другой размер окна
’nfW
1
2
Д л ина
4
6
П о р я д о к
3
5
6.9.3 Процесс декодирования
Процессдекодирования для временного формирования шума выполняется отдельно в каждом окне
текущего фрейма, применяя полюснуюфильтрацию к выбранным областям спектральных коэффициентов.
Число фильтров формирования шума, применяемых к каждому окну, определяется "n jitf. Целевойдиапа
зон спектральных коэффициентов определяется в единицах полос масштабного коэффициента, считающих в
обратном порядке полосы длины от верхней полосы (или нижней предыдущей полосы формирования
шума).
Сначала переданные коэффициенты фильтра должны декодироваться, то есть преобразовываться в
числа со знаком, инверсно квантоваться, преобразовываться в коэффициенты LPC, как описано вфункции
tns_decode_coef(). Затем к целевым частотным областям спектральных коэффициентов канала применяют ся
полосные фильтры. Чтобы определить направление, в которомфильтр продвигают через коэффициенты,
используется маркер "направление’ (0=upward. 1-downward). Константа TNS_MAX_BANDS определяет мак
симальное количество полосмасштабного коэффициента, ккоторым применяется временное формирова
ние шума. Максимальный возможный порядок фильтра определяется константой TNS_MAX_ORDER. Обе
константы являются зависимыми параметрами объектного типа.
Процессдекодирования для одного канала может быть описан следующим псевдокодом:
Г TNS decoding for one channel and frame */
tns_decode_frame()
1
{
for(w =
0
; w <num_windows; w++) {
bottom = num_swb:
for (f =
0
:f< n_filt[w]; f++) {
top = bottom:
bottom - max( top - length[w][f],
0
);
tns_order=min(order[w][f]. TNS_MAX_ORDER):
if (!tns_order) continue:
tns_decode_coef( tns_order. coef_ros{w]+3. coef_compress[w][f],
coef[w][f]. Ipcl]).
start = swb_offsot[min(bottom.TNS_MAX_BANDS.max_sfb)]:
end = swb_offset(min(top. TNS_MAX_BANDS.max_sfb)]:
if ((size = end - start) <= 0) continue:
if (direction[w][f]) {
inc = -
1
: start = end -
1
,
} else {
inc = ;}
tns_ar_filter( &spec[w][start]. size. inc. IpcQ. tns_order);
}
}
}
151