crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Ищу библиотеку обработки звука, обработка в реальном времени
mezmay
  опции профиля:
сообщение 18.12.2014, 14:19
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 272
Регистрация: 13.7.2009
Из: Ростов-на-Дону
Пользователь №: 904

Спасибо сказали: 16 раз(а)




Репутация:   1  


Задача: сделать устройство эквализации звука в реальном времени.
Пробовал на 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);
}


Сообщение отредактировал mezmay - 18.12.2014, 14:29
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
mezmay
  опции профиля:
сообщение 18.12.2014, 17:12
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 272
Регистрация: 13.7.2009
Из: Ростов-на-Дону
Пользователь №: 904

Спасибо сказали: 16 раз(а)




Репутация:   1  


Попробовал сделать опять же в винде на библиотеке PortAudio. Задержки все равно слишком большие.
Возможно, это потому что используется стандартный аудио драйвер (т.е. не с малыми задержками = не ASIO).

Будет ли в линуксе быстрее со стандартным драйвером? Или в операционной системе это нереально, даже с ASIO?

Сообщение отредактировал mezmay - 18.12.2014, 17:22
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 24.11.2024, 23:27