Я начинаю работать над проектом, который передает звук G.711 через Ethernet, написанный на C (не C ++) и работающий на Fedora 15. Вместо того, чтобы делать умные вещи и использовать RTP, я использую UDP для передачи аудио данные.
Чтобы немного преодолеть проблему переупорядочения пакетов, я решил использовать структуру в теле каждого пакета, которая выглядит примерно так:
struct payload {
char cc;
char audio_data[160];
};
Переменная "cc" является счетчиком непрерывности, который работает от 0-15, и когда пакет прибывает к получателю, он помещается в массив этих структур на основе значения cc. Затем процедура вывода звука проходит через этот массив и воспроизводит данные.
У меня вопрос, это лучший способ упаковать аудио? Выходной массив будет в конечном итоге двухмерным, и, конечно, он будет медленно читать каждый элемент и записывать его в выходной файл? Есть ли способ определить тип шириной 160 байт, который я могу просто записать в аудиоинтерфейс на другом конце?
Будем весьма благодарны за любые предложения, а также ссылки на полезные ресурсы по ALSA (которые кажутся очень редкими!)
Josh