Главная » Программирование звука » Прогрессивная компрессия

0

Bo многих компьютерных приложениях хорошо известны ограничения на скорость  пропускания,  с  которыми  и  нам  предстоит  столкнуться.  Односкоростной проигрыватель компакт-дисков считываетданные со скоростью 176400 байт/с. Таким образом,  если  вам  необходимо  извлечь  данные  определенных  типов,  вы  можете точно спрогнозировать, как быстро эти данные станут доступными, и выбрать подходящий метод компрессии. Ho подобные ограничения не всегда настолько точно известны.  Полоса  пропускания  компьютерной  сети,  например,  может  изменяться в  очень  больших  пределах.  Возможность  легко  варьировать  степень  сжатия  пришлась  бы  очень  кстати.  При  поступлении  данных  с  большой  скоростью  можно было бы передавать больший объем данных и добиваться более качественного звучания. Если скорость соединения падает, то можно было бы сократить объем передаваемых данных.

Один  из  методов,  обеспечивающий  подобный  режим  работы,  называется  прогрессивной компрессией. Типичная схема прогрессивной компрессии работает приблизительно следующим образом:

1. Возьмем блок исходных данных.

2. Сожмем  его,  воспользовавшись  алгоритмом  с  очень  большим  уровнем  потерь.  B результате  получится  маленький  пакет  сжатых  данных  с низким  качеством. Будем называть этот пакет сжатъил оригиналом.

3. Теперь  подвергнем  этот  пакет  декомпрессии  и  вычтем  получившийся  резуль-

тат из оригинала. Разницу будем называть ошибкой первого порядка.

4. Сожмем ошибку первого порядка.

5. Подвергнем  сжатую  ошибку  первого  порядка  декомпрессии  и  вычтем  получившийся  результат  из  оригинала  ошибки.  Разницу  будем  называть  ошибкой второго порядка.

6. Повторим  указанные  действия  и  получим  ошибки  третьего  и   последующих порядков.

B  результате  получим,  что  один  блок  ИКМ-данных  был  преобразован  в  несколько  пакетов  сжатых  данных.  Если  правильно  подобрать  степень  сжатия,  то можно добиться, чтобы размер пакетов ошибок почти совпал с размером сжатого оригинала. Мы способны подвергнуть декомпрессии только первый пакет и получить  низкокачественный  вариант  исходного  звука.  Если  восстановить  два  первых пакета и сложить их, мы получим более качественный вариант звучания. Если использовать три первых пакета, то звучание станет еще лучше.

Рассмотренная   схема   позволяет   передающей   стороне   легко   адаптироваться к  различным  требованиям.  При  медленной  передаче  данных  передается  только сжатый  оригинал.  Если  передача  идет  быстрее,  то  вдобавок  к  оригиналу  передается  еще  один  или  более  пакетов  ошибок.  Этот  метод  позволяет  полностью  использовать  пропускную  способность  канала  даже  в  случае  ее  изменения.  B  отличие  от  ряда  альтернативных  методов,  при  использовании  данного  метода  не требуется  дублирования  информации  либо  компрессии  и  декомпрессии  данных на лету.

Этим  методом  также  можно  воспользоваться  в  том  случае,  если  вам  необходимо  хранить  одну  копию  записанного  звука,  но  иметь  возможность  воспроизводить его на большом количестве различных вычислительных систем.

Может  случиться  так,  что у более  медленных  систем  производительности  хватит только на декомпрессию и воспроизведение первого пакета; более мощные системы смогут обработать несколько пакетов и получить более качественный звук.

Источник: Кинтцель Т.  Руководство программиста по работе со звуком = A Programmer’s Guide to Sound: Пер. с англ. М.: ДМК Пресс, 2000. 432 с, ил. (Серия «Для программистов»).

По теме:

  • Комментарии