И вроде бы все прекрасно, но при вызове метода start перед началом воспроизведения и stop по окончании слышен негромкий, но довольно неприятных щелчок.
Часть кода:
Player::Player()
{
QAudioFormat format;
format.setFrequency(22050);
format.setChannels(2);
format.setSampleSize(16);
format.setCodec("audio/pcm");
format.setByteOrder(QAudioFormat::LittleEndian);
format.setSampleType(QAudioFormat::SignedInt);
output = new QAudioOutput(format);
connect(output, SIGNAL(stateChanged(QAudio::State)), SLOT(finished(QAudio::State)));
}
void Player::play(QIODevice& source)
{
output->start(&source);
}
void Player::finished(QAudio::State state)
{
if (state == QAudio::IdleState) {
output->stop();
}
}
Для начала проигрывания я передаю в метод play файл, при окончании вызывается finished.
Возможно ли как-либо избавиться от этих щелчков или хотя бы работать с QAudioOutput так, чтобы ресурсы выделялись только при запуске и завершении программы, а не при каждом вызове start?
Система - Linux x86_64, Qt 4.7