M
Кто-нибудь в курсе, как устроен звук в Qt? У меня на целевой железке звук глючит, и я пытаюсь понять, в чём вообще дело. Глючит как QSoundEffect, так и QMediaPlayer, но по-разному.
Создаю простейшее консольное приложение с QSoundEffect, воспроизвожу любой WAV 16-bit 44100. Слышу равномерные заикания много раз в секунду и вижу, как в консоль сыпется примерно 20 сообщений в секунду с таким содержанием:
ALSA lib ../../../alsa-lib-1.1.6/src/pcm/pcm.c:8424:(snd_pcm_recover) underrun occurredЧерез aplay всё работает нормально. QMediaPlayer сам со себе звук воспроизводит хорошо, но если добавить нагрузку, например, рисовать что-то в QML, то звук тоже начинает заикаться. При этом aplay, запущенный в фоновом процессе даёт идеальный звук даже при нагрузке. Так что возникает вопрос, который почему-то не удаётся нагуглить: в каком потоке работает заполнение буфера? Зависит ли это от используемого бекенда для аудио или это делает Qt код, общий для всех бекендов? А то похоже, что аудио микшируется в главном потоке, чего я никак не ожидал от такой высокоуровневой библиотеки как Qt. И если так, то как я могу это исправить с минимальными усилиями?