Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #44, ИЮЛЬ 2004 г.

Размер не имеет значения

Косякин Антон

Спецвыпуск Xakep, номер #044, стр. 044-010-3


Декорреляция

Второй блок lossless аудиокодека декоррелирует сэмплы в пределах одного фрейма. И прогнозирующая модель, и преобразующее кодирование используются для этих целей. Основные алгоритмы сжатия звука различаются как раз по этой фазе. Вот небольшой их список.

Прогнозирующая модель:

* Модель конечного отклика импульса (Finite Impulse Response model, FIR): Shorten, Sonarc, Philips;

* Модель бесконечного отклика импульса (Infinite Impulse Response model, IIR): OggSquish, Craven;

* Полиномиальное приближение (Polynomial approximation): Shorten, HEAR, AudioPAK.

Преобразующее кодирование:

* Ортонормальные преобразования (Orthonormal transforms): M. Purat.

Вообще, различают два вида декорреляции: intra-channel и inter-channel decorrelation. Разница между ними состоит в том, что в первом случае обрабатывается один звуковой поток (моно), а во втором - помимо первого потока, еще декоррелируется и разница между ним и вторым потоком (стерео).

Прогнозирующая модель

Идея метода заключается в том, чтобы предугадать значение нового сэмпла x[n], используя предыдущие значения x[n-1], x[n-2] etc. Для этого используются две модели: линейные предсказания (linear predictions, FIR & IIR) и приближения (полиномиальные). Например, в случае с FIR, предполагаемое значение x_[n] сэмпла x[n] выражается по формуле x_[n] = сумма (Ak*x[n-k]), где значение k пробегает от 1 до p, а коэффициенты Ak подбираются так, чтобы минимизировать оставшийся сигнал e[n] = x[n] - x_[n].

Преобразующее кодирование

Использование этого метода не особо распространено в сжатии без потерь. Фактически, оно используется только в одном кодеке, предложенном неким M.Purat. Предложенный метод использует ортонормальное преобразование для уменьшения статистической зависимости между аудиосэмплами. Входной сигнал x[n] трансформируется в результирующие коэффициенты c[k], которые и сжимаются. Так как обратная трансформация выливается в приближение y[n] оригинального сигнала x[n], декомпрессионные шаги дублируются на стороне кодировщика для подсчета оставшейся ошибки e[n] = x[n] - y[n]. Эта ошибка также сжимается и передается далее вместе с полученными коэффициентами c[k].

Сжатие

На этом этапе удаляются избытки в оставшемся сигнале e[n]. В данной части никакой информации не теряется. В известных кодеках на этой стадии используются три широко известных метода: Хаффман, RLE, сжатие Райса (Rice coding).

Ну вот, с общим устройством аудиокодеков мы разобрались, теперь давай рассмотрим конкретные алгоритмы и методы.

AudioPAK

AudioPAK расшифровывается как «An Integer Arithmetic Lossless Audio Codec» (неущербный аудиокодек, основанный на целочисленной арифметике :)).

На стадии структурирования, как и остальные аудиокодеки, AudioPAK делит сигнал на независимые фреймы. Их длина является параметром самого кодека и может быть выбрана в момент обработки потока. Как показала практика, для размеров фрейма лучше использовать число сэмплов, кратное 192.

Назад на стр. 044-010-2  Содержание  Вперед на стр. 044-010-4