Поскольку это похоже на звук, я бы посмотрел либо на дифференциальную PCM, либо на ADPCM, либо на что-то подобное, что позволит уменьшить его до 4 бит / сэмпл без особых потерь в качестве.
В самой базовой реализации дифференциального PCM вы просто сохраняете 4-битную разность со знаком между текущей выборкой и аккумулятором, добавляете эту разницу к аккумулятору и переходите к следующей выборке. Если разница находится за пределами [-8,7], вам нужно зафиксировать значение, и аккумулятор может нагнать несколько образцов. Декодирование выполняется очень быстро, практически без памяти, просто добавляя каждое значение в аккумулятор и выводя аккумулятор в качестве следующего образца.
Небольшое улучшение по сравнению с базовым DPCM, чтобы помочь аккумулятору быстрее догонять, когда сигнал становится все громче и выше, состоит в использовании таблицы поиска для декодирования 4-битных значений в больший нелинейный диапазон, где они все еще 1 друг от друга около нуля, но увеличиваются с большими приращениями к пределам. И / или вы можете зарезервировать одно из значений для переключения множителя. Решать, когда использовать его до энкодера. Благодаря этим улучшениям вы можете либо добиться лучшего качества, либо получить 3 бита на выборку вместо 4 *. 1006 *
Если ваше устройство имеет нелинейный АЦП с µ-законом или А-законом, вы можете получить качество, сравнимое с 11-12-битным с 8-битными выборками. Или вы можете сделать это самостоятельно в своем декодере. http://en.wikipedia.org/wiki/M-law_algorithm
Там могут быть недорогие чипы, которые уже делают все это для вас, в зависимости от того, что вы делаете. Я не смотрел ни на что.