6.7.1 Описания инструмента
Долгосрочный прогноз (LTP) является эффективным инструментом для уменьшения избыточности сигнала между последовательными фреймами кодирования. Этот инструмент особенно эффективен для частей сигнала, у которых имеется четкое свойство шага. Сложность реализации LTP значительно ниже, чем сложность обратного адаптивного прогноза. Поскольку долгосрочное прогнозирующее устройство является прямым адаптивным прогнозирующим устройством (коэффициенты прогноза отправляются как дополнительная информация), оно по сути менее чувствительно к числовым ошибкам округления в декодере или битовым ошибкам в переданных спектральных коэффициентах.
LTP ограничивается только длинными окнами.
6.7.2 Определения
Itp_data_present | 1 бит, указывающий, используется ли прогноз в текущем фрейме (1) или нет (0) (всегда существует). |
Itp_lag | 11-разрядное число, определяющее оптимальную задержку от 0 до 2047. |
Itp_coef | 3-разрядный индекс, указывающий коэффициент LTP в таблице 152. |
Таблица 152 - коэффициент LTP
Значение ltp_coef | Значение коэффициента LTP |
000 | 0,570829 |
001 | 0,696616 |
010 | 0,813004 |
011 | 0,911304 |
100 | 0,984900 |
101 | 1,067894 |
110 | 1,194601 |
111 | 1,369533 |
Itp_long_used | 1 бит для каждой полосы масштабного коэффициента (sfb), где LTP может использоваться для указания включен ли LTP (1) в этом sfb или выключен (0). |
Для аудиообъектного типа ER AAC LD доступны следующие элементы данных:
Itp_lag_update | 1 бит, указывающий, передается ли новое значение для задержки Itp. В силу высокой повторяемости запаздывания LTP для многих сигналов один дополнительный бит сигнализирует, что запаздывание предыдущего фрейма повторяется (Itp_lag_update == 0). В ином случае передается новое значение для запаздывания Itp (Itp_lag_update == 1). |
Itp_lag | 10-разрядное число, определяющее оптимальную задержку от 0 до 1023. |
Максимальное количество полос масштабного коэффициента, используемых в прогнозе, ограничивается константой:
MAX_LTP_LONG_SFB = 40 (для длинных фреймов).
6.7.3 Процесс декодирования
Процесс декодирования для LTP выполняется в каждом окне текущего фрейма путем применения фильтрации 1-tap IIR во временном интервале, чтобы предсказать выборки в текущем фрейме по выборкам в предыдущих фреймах. Процессом управляет переданная дополнительная информация методом двух шагов. Первый шаг управления определяет, используется ли LTP вообще для текущего фрейма. В случае длинного окна второй шаг управления определяет, на каких полосах масштабного коэффициента используется LTP. В начале процесса декодирования восстановленные выборки временного интервала инициализируются нулями.
Для каждого фрейма дополнительная информация LTP извлекается из полезной нагрузки потока битов, чтобы управлять дальнейшей работой прогнозирующего устройства в декодере. В случае single_channel_element () управляющая информация допустима для канала с этим элементом. В случае channel_pair_element () имеются два набора управляющей информации. Порядок появления наборов управляющей информации LTP в случае common_window == 1 таков, что дополнительная информация LTP сначала извлекается для левого канала, а затем для правого канала соответствующего channel_pair_element ().
Вначале читается бит Itp_data_present. Если этот бит не установлен в (0), тогда LTP выключается для текущего фрейма и какая-либо дальнейшая дополнительная информация прогнозирующего устройства отсутствует. В этом случае флаг Itp_long_used для каждой полосы масштабного коэффициента, сохраняемый в декодере, должен быть обнулен. Если бит Itp_data_present устанавливается в (1), тогда LTP используется для текущего фрейма и параметры LTP читаются.
Для длинных окон параметры LTP используются, чтобы вычислить предсказанные сигналы временного интервала, используя следующую формулу:
x_est (i) = ltp_coef*x_rec (i - M. - ltp_lag)
i = 0, ..., N-1,