我在Ubuntu上使用PulseAudio(8.0版),在其中创建一个空接收器并通过监视设备从其捕获数据
我已使用Pulse api编写了自己的实用程序,其中我正在做类似的事情
if(pa_stream_readable_size(_recStream) > 0)
{
sampleDataSize = 0;sampleData = NULL;
if (pa_stream_peek(_recStream, &sampleData, &sampleDataSize) != 0)
{
break;
}
if(sampleData && sampleDataSize)
{
fwrite(sampleData,1,sampleDataSize,fp);
fflush(fp);
}
if (sampleDataSize > 0 && pa_stream_drop(_recStream) != 0)
{
cerr << "failed to drop, err=" << pa_context_errno(_paContext);
}
}
有时候我会像这样崩溃
__GI_raise(int sig)
__GI_abort()
pa_queue_pop
pa_mainloop_dispatch
pa_mainloop_iterate
pa_mainloop_run
我不遵循正确的顺序吗?