Описание кодера
А.1 Технический обзор
В алгоритме аудиокодирования без потерь имеют место три основных процесса: формирование фреймов (структурирование), прогноз и кодирование энтропии. В кодере входящие одноразрядные данные сначала структурируются, а затем передаются этапу прогноза. После этапа прогноза ошибочный сигнал, вычисленный на основе прогноза и исходного сигнала, передается этапу кодирования энтропии. На этом последнем этапе ошибочный сигнал кодируется, используя арифметическое кодирование, у которого производительность близка к (оптимальному) кодированию энтропии. Фильтры прогноза и таблицы вероятности могут быть сгруппированы для каналов с целью еще лучшей эффективности кодирования. Сгенерированные арифметическим кодером данные объединяются с коэффициентами прогноза и мультиплексируются в потоке битов.
А.1.1 Структурирование
Цель структурирования (формирования фрейма) является двоякой. Во-первых, структурирование необходимо, чтобы обеспечить легкий, "случайный" доступ к аудиоданным во время воспроизведения. По той же самой причине каждый фрейм должен быть независимо закодирован, что позволяет проигрывателю декодировать отдельные фреймы без знания о предыдущих фреймах. Во-вторых, структурирование позволяет аудиоконтенты во фрейме расценивать как стационарные (или по крайней мере, квазистационарные). Это базовое предположение в процессе прогноза.
Процесс структурирования делит исходный одноразрядный аудиопоток, состоящий из выборок b{0, 1}, на фреймы длиной = 37,632 битов, соответствующие 1/75 с, принимая частоту дискретизации 2,8224 MS/c.
А.1.2 Прогноз
Фильтрация прогноза является первым необходимым шагом в процессе сжатия (аудио) данных. Шаг фильтрации прогноза пытается удалить избыточность из аудиопотока битов , создавая новый поток битов
, который не избыточен. Вместе с коэффициентами фильтра прогноза поток с ошибками е переносит ту же самую информацию, что и . Фильтр прогноза обозначается как , чтобы подчеркнуть тот факт, что передача фильтра содержит задержку, которая обязательна, чтобы создать кодер, который может быть инвертирован по времени.
Фильтр прогноза FIR может быть разработан согласно стандартным методам, самый известный из них основан на минимальной среднеквадратической ошибке (MMSE). Применение критерия MMSE приводит к уравнению ошибочного прогноза, которое должно быть минимизировано:
,
где является числом битов на фрейм и - числом коэффициентов прогноза, которые кодируются как 'Coded_Pred_Order+1'. После дальнейшего манипулирования это приводит к коэффициентам . Фильтр FIR, найденный таким образом, будет минимальным фазовым фильтром. Чтобы получить оптимальный баланс между точностью прогноза и числом битов, взятых описанием фильтра прогноза, коэффициенты фильтра прогноза квантуются в 9-разрядные числа с фиксированной точкой первым масштабированием их на 256. Полученные коэффициенты сохраняются в 'Coef[Filter_Nr] [Coef_Nr]', где Filter_Nr обозначает индекс фильтра, а Coef_Nr - индекс коэффициента фильтра, соответственно. Сигнал прогноза является мультибитовым. Биты прогноза q получаются из мультибитовых значений простым усечением, обозначенным блоком, который маркирован как (). Ошибка между потоком битов и мультибитовым сигналом минимизируется, тогда как в идеале было бы минимизировано различие между и , однобитовая квантованная версия . Это, однако, приводит к трудоемким расчетам.
Ошибочный сигнал вычисляется операцией исключающего или (XOR) между и . Цель фильтра прогноза состоит в том, чтобы создать столько нулей в , сколько возможно, поскольку это обеспечит существенное снижение объема данных энтропийным кодированием.
А.1.3 Арифметическое кодирование
Когда используются надлежащие фильтры прогноза, сигнал е будет состоять из большего количества нулей, чем единиц, и может таким образом привести к возможному усилению компрессии. Предположите, что вероятность '1' в обозначается как , тогда вероятность '0' равняется . Минимальное число битов , которым может быть представлен в среднем единственный бит потока , тогда равняется
.
Предположим, что 90% всех прогнозов корректны, тогда и . Как правило, возможна компрессия приблизительно с коэффициентом 2. В то время как этот подсчет, основанный на вычислении энтропии, представляет верхний предел достижимого сжатия, алгоритм, который при практических обстоятельствах приближается к этому пределу, является алгоритмом арифметического кодирования.
Методы арифметического кодирования могут успешно использоваться только тогда, когда доступна точная информация о вероятностях символов "0" или "1".
Вероятности символов, необходимые для арифметического кодирования, вычисляются, составляя гистограмму (или таблицу). Обозначая вероятность, что прогноз корректен , видим, что, так как , нет необходимости вычислять две таблицы: для арифметического кодирования используется только таблица вероятности ошибки для , и передается декодеру.
А.1.4 Мультиплексирование канала
В предыдущих разделах "модель источника", состоящая из фильтра прогноза и таблицы вероятности, обсуждалась для одного канала. В полном кодере у каждого канала имеется своя собственная модель источника, тогда как используется только единственный арифметический кодер. Однако чтобы использовать корреляцию между каналами также можно позволить каналам совместно использовать фильтры прогноза и/или таблицы вероятности. Совместное использование фильтров или таблиц вероятности выгодно, когда уменьшение числа битов метаданных, необходимых чтобы передать информацию о фильтре или таблице с кодера на декодер, выше, чем увеличение числа битов арифметического кода. Последнее число обычно будет несколько больше, так как не всегда возможно создать фильтр прогноза (или таблицу вероятности), который приводит к оптимальному арифметическому кодированию для всех каналов, которые его используют.
Арифметический кодер получает для каждого канала потоки е и р, которые поставляются отдельными моделями источника.