Главная » Программирование звука » Дифференциальная ИКМ

0

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

Пусть,  например,  вы  хотите  сжать  8-битные  данные  ИКМ  в  последовательность 4-битных приращений. Если вы позаботитесь о корректной обработке ситуации  переполнения,  то  сложностей  не  возникнет.  Рассмотрим,  в  частности,  три выборки: 17, 28, 30. Получаются два приращения: 11 и 2. Поскольку вы используете  для  записи  каждого  приращения  четыре  бита,  вы  можете  записывать  значения в диапазоне от -8 до +7. Если вы примитивно сократите 11 до 7 и запишите приращения как 7 и 2, то при декодировании получатся величины 17, 24, 26. Однако  если  записать  приращения  как 7  и  6,  при  декодировании получится  17,  24,

30. B таком случае ошибочно будет восстановлено только одно значение.

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

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

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

По теме:

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