Сжатие звука 5-bit compression
От: Михaил  
Дата: 13.10.22 08:12
Оценка:
Пытаюсь разобраться с алгоритмом сжатия, описанным здесь следующим образом:

Music is stored in SF.DLL resources in 5BS format (short for 5-bit compression) sampled at 22050 Hz.

Audio samples are grouped by eight (i.e. a group occupying 5 bytes). In case of stereo it should be 5 bytes for left samples, 5 bytes for right samples, 5 bytes for left samples etc. Each channel is decompressed independently.

Audio compression

Data is stored LSB first, first it’s 4-bit step index update plus seven, then 1-bit difference sign.

Overall decoding looks like this:

for (all samples) {
step += get_bits(4) — 7;
sign = get_bit();
diff = step_table[step];
if (sign)
diff = -diff;
sample[x] = sample[x — 1] * 2 — sample[x — 2] + diff;
}

Step table:

0x0, 0x5, 0xB, 0x24, 0x57, 0xAA, 0x127, 0x1D5,
0x2BC, 0x3E5, 0x557, 0x71C, 0x93B, 0xBBC, 0xEA8, 0x1207,
0x15E1, 0x1A3F, 0x1F28, 0x24A4, 0x2ABD, 0x3179, 0x38E2, 0x40FF,
0x49DA, 0x5379, 0x5DE5, 0x6927, 0x7546, 0x824B, 0x903E, 0x9F27,
0xAF0E, 0xBFFC, 0xD1F9, 0xE50D, 0xF940, 0x10E9A, 0x12524, 0x13CE6


Что это за способ сжатия (поиск по 5 bit compression ничего вразумительного не выдает) и как он работает?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.