当我设置非阻塞模式时,我的播放在大约20秒后停止。我首先读取一个完成RAM的文件,缓冲区被称为" buffer_alsa&#34 ;,其中有bframes帧(这里是6894888)。在阻止模式下播放它的工作原理。使用非阻塞模式,它在1048576帧后停止。我循环了,但没有变化。有什么想法吗?
snd_pcm_open(&handle, carddevice, SND_PCM_STREAM_PLAYBACK,SND_PCM_NONBLOCK)
//...
pcm = snd_pcm_writei(handle, buffer_alsa, bframes);
if (pcm < 0)
pcm = snd_pcm_recover(handle, pcm, 0);
if (pcm < 0)
{
std::cout << " snd_pcm_writei failed: " << snd_strerror(pcm) << std::endl;
return;
}
if (pcm > 0 && pcm < bframes)
{
std::cout << " expected / wrote: " << bframes << " / " << pcm << std::endl;
//return;
}
output:
expected / wrote: 6894888 / 1048576