Пробовал на Qt 5 в Windows 7 сделать простую передачу звука с микрофона на линейный выход - задержки слишком большие, чтобы это можно было назвать "реальным временем" (ну то есть около 0.3 - 0.5 сек. И это при размере буфера не более 0.001 сек). Конкретно пользовался классами QAudioInput и QAudioOutput.
Сейчас рассматриваю два основных варианта реализации - на одноплатном компьютере и на контроллере.
Будет ли Qt работать в Linux существенно быстрее со звуком? Если нет, то какую быструю библиотеку ввода/вывода звука стоит посмотреть?
upd: код:
// Создание аудио объектов
void cwin::createAudio()
{
QAudioFormat format;
format.setSampleRate(44100);
format.setChannelCount(1);
format.setSampleSize(16);
format.setCodec("audio/pcm");
format.setByteOrder(QAudioFormat::LittleEndian);
format.setSampleType(QAudioFormat::SignedInt);
m_pAudioInput = new QAudioInput(format, this);
m_pAudioInput->setBufferSize(440 * sizeof(qint16));
QIODevice *device = m_pAudioInput->start();
connect(device, &QIODevice::readyRead,
this, &cwin::onSound);
m_pAudioOutput = new QAudioOutput(format, this);
m_pAudioDevice = m_pAudioOutput->start();
}
// Прием, обработка и вывод
void cwin::onSound()
{
QIODevice *device = (QIODevice *)(sender());
QByteArray sound_data_in = device->readAll();
QByteArray sound_data_out;
/* здесь простая обработка */
m_pAudioDevice->write(sound_data_out);
}