63
0; j <number_pulse+1; j ++) { k + = pulse_offset [j];
/* translate_pulse_parameters (); */ for (sfb = pulse_start_sfb; sfb <num_swb; sfb ++) { if (k <swb_offset [sfb+1]) {
bin = k - swb_offset [sfb]; break;
}
}
/* восстановление коэффициентов */ if (x_quant [g] [win] [sfb] [bin]> 0)
x_quant [g] [win] [sfb] [мусорное ведро] + = pulse_amp [j];
else
x_quant [g] [win] [sfb] [bin] - = pulse_amp [j];
}
}
Несколько инструментов декодера (TNS, банк фильтров) получают доступ к спектральным коэффициентам без чередования, т. е. все спектральные коэффициенты упорядочиваются согласно номеру окна и частоте в пределах окна. Это обозначается указанием spec [w][k], вместо xquant[g][w][sfb][bin].
Следующий псевдо с-код указывает на соотношение между четырехмерной, с чередованием, структурой массива x quant [] [] [] [] и двумерной, без чередования, структурой массива spec[] []. В последнем массиве первый индекс увеличивается по отдельным окнам в последовательности окон, и второй индекс увеличивается по спектральным коэффициентам, которые соответствуют каждому окну, внутри которого коэффициенты следуют линейно от низких частот к верхним. quant_to_spec ()
{k = 0;
for (g = 0; g <num_window_groups; g + +) { j = 0;
for (sfb = 0; sfb <num_swb; sfb ++) {
width = swb_offset [sfb+1] - swb_offset [sfb]; for (win = 0; win<window_group_length [g]; win ++) { for (bin = 0; bin <width; bin ++) {
spec [win+k] [bin+j] = x quant [g] [win] [sfb] [bin];
}
}
j + = width;
}
k + = window_group_length [g]
}
}
- Таблицы