/
f1rment2
/
lab8
Обзор
Документация
Войти
/
f1rment2
/
lab8
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Codec.java
30 строк
1 KB
Ilya
First commit: P2P Voice Chat with Multicast and Codec
02 июн 2026, 00:00
02 июн 2026, 00:00
ecd9191
Код
Авторство
О чём код?
public class Codec { // Сжатие: из 16-бит (2 байта) в 8-бит (1 байт) public static byte[] compress16to8(byte[] pcm16) { byte[] pcm8 = new byte[pcm16.length / 2]; for (int i = 0; i < pcm8.length; i++) { // Собираем два байта в одно 16-битное число short int low = pcm16[2 * i] & 0xFF; int high = pcm16[2 * i + 1]; short sample = (short) ((high << 8) | low); // Сдвигаем на 8 бит вправо (деление на 256) для получения 8-битного значения pcm8[i] = (byte) (sample >> 8); } return pcm8; } // Распаковка: из 8-бит (1 байт) в 16-бит (2 байта) public static byte[] decompress8to16(byte[] pcm8, int length) { byte[] pcm16 = new byte[length * 2]; for (int i = 0; i < length; i++) { // Восстанавливаем 8-битное значение до 16-битного уровня short sample = (short) (pcm8[i] << 8); // Распределяем по двум байтам pcm16[2 * i] = (byte) (sample & 0xFF); pcm16[2 * i + 1] = (byte) ((sample >> 8) & 0xFF); } return pcm16; } }