Russian Qt Forum

Qt => Мультимедиа => Тема начата: Evil_Genius от Октябрь 12, 2015, 09:18



Название: Got a buffer underflow!
Отправлено: Evil_Genius от Октябрь 12, 2015, 09:18
После каждого воспроизведения звукового фрагмента с использованием QAudioOutput в Application Output получаю сообщение: "Got a buffer underflow!". Из-за чего оно может появляться?


Название: Re: Got a buffer underflow!
Отправлено: Evil_Genius от Октябрь 13, 2015, 15:55
Код, вызывающий сообщение:
Код:
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QFile file;
    file.setFileName("/home/path/to/file/1.wav");
    file.open(QIODevice::ReadOnly);
    QByteArray ba = file.readAll();
    QAudioFormat outputFormat;
    outputFormat.setSampleRate(44100);
    outputFormat.setChannelCount(1);
    outputFormat.setSampleSize(16);
    outputFormat.setCodec("audio/pcm");
    outputFormat.setByteOrder(QAudioFormat::LittleEndian);
    outputFormat.setSampleType(QAudioFormat::SignedInt);
    QAudioOutput* player = new QAudioOutput(outputFormat);
    QBuffer buffer(&ba);
    buffer.open(QIODevice::ReadOnly);
    player->start(&buffer);
    QEventLoop audioLoop;
    QObject::connect(player, SIGNAL(stateChanged(QAudio::State)), &audioLoop, SLOT(quit()));
    do{
        audioLoop.exec();
    }while(player->state() == QAudio::ActiveState);
    buffer.close();
    delete player;
    return 0;
}