(Аналогично ГОСТ Р 54713-2011)
6.9.1 Описание инструмента
Временное формирование шума используется, чтобы управлять временной формой шума квантования в пределах каждого окна преобразования. Это делается, применяя процесс фильтрации к частям спектральных данных каждого канала.
6.9.2 Определения
n_filt[w] | Число фильтров формирования шума, используемое для окна w. |
coef_res[w] | Маркер, указывающий на разрешение переданных коэффициентов фильтра для окна w, переключающееся между разрешением 3 бита (0) и 4 бита (1). |
length [w] [filt] | Длина области, к которой применяется один фильтр в окне w (в единицах полос масштабного коэффициента). |
order [w] [filt] | Порядок одного фильтра формирования шума примененного к окну w. |
direction [w] [filt] | Один бит, указывающий, применяется ли фильтр в восходящем (0) или нисходящем (1) направлении. |
coef_compress [w] [filt] | Один бит, указывающий, опускаются ли при передаче (1) или нет (0) старшие значащие биты коэффициентов фильтра формирования шума в окне w. |
coef [w] [filt] [i] | Коэффициенты одного фильтра формирования шума применяемые к окну w. |
spec [w] [k] | Массив, содержащий спектр для окна w обрабатываемого канала. |
В зависимости от window_sequence размер следующих элементов данных переключается для каждого окна преобразовывания согласно размеру этого окна:
Таблица 155 - Размер элементов данных
Имя | Окно с 128 спектральными линиями | Другой размер окна |
'n filt' | 1 | 2 |
Длина | 4 | 6 |
Порядок | 3 | 5 |
6.9.3 Процесс декодирования
Процесс декодирования для временного формирования шума выполняется отдельно в каждом окне текущего фрейма, применяя полюсную фильтрацию к выбранным областям спектральных коэффициентов. Число фильтров формирования шума, применяемых к каждому окну, определяется "n_filt". Целевой диапазон спектральных коэффициентов определяется в единицах полос масштабного коэффициента, считающих в обратном порядке полосы длины от верхней полосы (или нижней предыдущей полосы формирования шума).
Сначала переданные коэффициенты фильтра должны декодироваться, то есть преобразовываться в числа со знаком, инверсно квантоваться, преобразовываться в коэффициенты LPC, как описано в функции tns_decode_coef(). Затем к целевым частотным областям спектральных коэффициентов канала применяются полюсные фильтры. Чтобы определить направление, в котором фильтр продвигают через коэффициенты, используется маркер "направление" (0=upward, 1=downward). Константа TNS_MAX_BANDS определяет максимальное количество полос масштабного коэффициента, к которым применяется временное формирование шума. Максимальный возможный порядок фильтра определяется константой TNS_MAX_ORDER. Обе константы являются зависимыми параметрами объектного типа.
Процесс декодирования для одного канала может быть описан следующим псевдокодом:
/* TNS decoding for one channel and frame */
tns_decode_frame ()
{
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;