我有一个大小为 4096 的缓冲区,并将数据存储到其中,如果缓冲区已满,它将从缓冲区的开头开始。看起来这很好用。
但是我从缓冲区播放数据有问题。
QByteArray m_buffer;
QBuffer m_audioOutputIODevice;
QAudioOutput* m_audioOutput;
m_audioOutputIODevice.close();
m_audioOutputIODevice.setBuffer(&m_buffer);
m_audioOutputIODevice.open(QIODevice::ReadOnly);
m_audioOutput->start(&m_audioOutputIODevice);
现在我可以从缓冲区播放声音,但是当它到达缓冲区末尾时,播放停止。我怎么能改变代码,所以当它到达缓冲区的末尾时,它会从头开始?非常感谢你
更新代码:
connect(m_audioOutput,SIGNAL(stateChanged(QAudio::State)),SLOT(resetPlayBuffer(QAudio::State)));
void bufferPlayback::resetPlayBuffer (QAudio::State state)
{
if (state == QAudio::IdleState) {
m_audioOutputIODevice.close();
m_audioOutputIODevice.setBuffer(&m_buffer);
m_audioOutputIODevice.open(QIODevice::ReadOnly);
}
}