6.13.1 Описание инструмента
Этот инструмент используется, чтобы реализовать кодирование замены перцепционного шума в пределах ICS. Таким образом, определенные наборы спектральных коэффициентов получают из случайных векторов, а не из кодированных по Хаффману символов и процесса инверсного квантования. Это делается выборочно на базе полосы масштабного коэффициента и группы, когда перцепционная шумовая замена отмечается как активная.
PNS также может быть использован в сочетании с bit sliced арифметическим кодированием. В то время как синтаксис полезной нагрузки потока битов там отличается, процесс декодирования является тем же самым.
6.13.2 Определения
hcod_sf [] | Кодовая комбинация Хаффмана из таблицы кодов Хаффмана, используемая для кодирования масштабных коэффициентов. |
dpcm_noise_nrg [] [] | Дифференцированно закодированная шумовая энергия. |
noise_nrg [группа] [sfb] | Шумовая энергия для каждой группы и полосы масштабного коэффициента. |
spec [] | Массив, содержащий спектр соответствующего канала. |
6.13.3 Процесс декодирования
Об использовании инструмента замены перцепционного шума сообщается при помощи использования псевдо сборника кодов NOISE_HCB (13).
Если та же самая полоса масштабного коэффициента и группа кодируются перцепционной шумовой заменой в обоих каналах из пары каналов, корреляцией шумового сигнала можно управлять посредством поля ms_used. В то время как процесс генерации шума по умолчанию работает независимо для каждого канала (отдельная генерация случайных векторов), тот же самый случайный вектор используется для обоих каналов, если ms_used [] устанавливается для определенной полосы масштабного коэффициента и группы или ms_mask_present устанавливается в '10'. В этом случае никакое кодирование стерео M/S не выполняется (потому что кодирование стерео M/S и кодирование замены шума являются взаимоисключающими). Если та же самая полоса масштабного коэффициента и группа кодируются перцепционной шумовой заменой только водном канале пары каналов, установка ms_used [] не учитывается.
Информация об энергии для декодирования перцепционной шумовой замены представляется величиной шумовой энергии, указывающей полную энергию заменяющих спектральных коэффициентов с шагом 1,5 дБ. Если кодирование шумовой замены является активным для определенной группы и полосы масштабного коэффициента, вместо масштабного коэффициента соответствующего канала передается величина шумовой энергии.
Шумовые энергии кодируются точно так же как масштабные коэффициенты, то есть методом кодирования Хаффмана дифференциальных значений:
- стартовое значение для декодирования DPCM дается global_gain;
- дифференциальное декодирование производится отдельно между масштабными коэффициентами, позициями интенсивности стерео и энергиями шума. Иначе говоря, декодер шумовой энергии игнорирует значения вставленных масштабных коэффициентов и позиции интенсивности стерео и наоборот.
Для кодирования шумовых энергий используется тот же самый сборник кодов, что и для кодирования масштабных коэффициентов.
Для использования в декодировании замены перцепционного шума определяется одна псевдофункция:
function is_noise(group,sfb) {
1 for window groups / scalefactor bands with
codebook sfb_cb[group][sfb] == NOISE_HCB
0 otherwise
}.
Процесс декодирования шумовой замены для одного канала определяется следующим псевдокодом:
nrg = global_gain - NOISE_OFFSET - 256;
for (g=0; g<num_window_groups; g++) {
/* Decode noise energies for this group */
for (sfb=0; sfb<max_sfb; sfb++) {