112
nb_l (b) является порогом раздела b для последнего блока, qsthr (b) является абсолютным порогом слышимости. Значения дБ qsthr (b) показаны на рисунке В.1
Значения таблиц В.1 — В.24 даны относительно уровня частотной линии БПФ, которой соответствует синусоидальная волна амплитудой ± 1 lsb. Значения (в дБ) должны быть преобразованы в единицы энергии после нормализации БПФ.
nb (b) = max (qsthr (b), min (nb (b), nb_l (b) *rpelev))
rpelev устанавливается в '1' для коротких блоков и '2' для длинных блоков
- PE вычисляется для каждого типа блока из отношения e (b) / nb (b), где nb (b) — порог маскирования и e (b) — энергия для каждого порогового раздела.
PE = 0
do for threshold partition b
PE = PE - (w_high(b)-w_low(b)) * log10 (nb(b) / (e (b) +1)) end do
- Принимается решение об использовании длинного или короткого блока. if PE for long block is greater than switch_pe then
coding_block_type = short_block_type else
coding_block_type = long_block_type end if if (coding_block_type == short_block_type)
and
(last_coding_block_type == long_type) then last coding block type = start_ type else last_coding_block_type = short_type.
Последние четыре строки необходимы, так как в AAC нет комбинированного стартового/стопового блока. switch_pe — постоянная, зависящая от реализации.
- Вычислить отношения сигнал-маска, SMR (n) и порог маскирования xmin (n)
Таблицы 45 ... 57 дают:
- Индекс swb раздела кодера, называемого полосой масштабных коэффициентов.
- Смещение линии МДКП для полосы масштабных коэффициентов swb_offset_long/short_window.
Вводится следующая переменная:
n = swb
w_low (n) = swb_offset_long/short_window (n) w_high (n) = swb_offset_long/short_window (n+1) - 1
энергия БПФ в полосе масштабных коэффициентов, epart (n): do for each scalefactor band n epart (n) = 0
do for w = lower index w_low (n) к n = upper index w_high (n) epart (n) = epart (n) + r (w) Л2 end do end do
порог для одной спектральной линии вычисляется согласно:
do for each threshold partition b
thr (all line_indices in this partition b) =
thr (w_low (b)..., w_high (b)), =nb (b) / (w_high (b) +1-w_low (b)) end do
уровень шума в полосе масштабных коэффициентов на уровне БПФ, npart (n) вычисляется как: do for each scalefactor band n
npart (n) = minimum (thr (w_low (n))..., thr (w_high (n)))
* (w_high (n) +1-w_low (n)), end do
Где в этом случае minimum (a... z) — функция, возвращающая самый меньший положительный аргумент из a... z.