16,814
社区成员




audioOutput->setBufferSize(data.size());
QIODevice* io = audioOutput->start();
io->write(data);
不重写就OK了
qint64 MyDevice::readData(char *data, qint64 maxlen) // data为声卡的数据缓冲区地址, maxlen为声卡缓冲区最大能存放的字节数
{
if (len_written >= Data_sum)
{
return 0;
}
//计算未播放的数据的长度
int len = 0;
if((len_written + maxlen) > Data_sum)
len = Data_sum - len_written;
else
len = maxlen;
if(len < 0)
{
len = 0;
}
memcpy(data, (char*)(Data3 + len_written), len); //把要播放的pcm数据存入声卡缓冲区里,Data3 为全局变量uint8_t格式,
len_written = len_written + len; //更新已播放的数据长度
return len;
}