alsa API错误:“Assertion 'plug->gen.slave == plug->req_slave' failed”

用ALSA进行音频播放的时候,退出程序始终报如下错误:

pcm_plug.c : 67 : snd_pcm_close : Assertion 'plug->gen.slave == plug->req_slave'  failed
Aborted
网上找了一圈,给出的解决方法主要有两种:

1、升级ALSA,据说1.0.14这版中经常出现这个错误,升级后即可。我的是1.0.23,明显不是这个原因。

2、查看声卡的设置是不是有问题,我是参考ALSA开源工程的使用代码来做的,也被我排除在外,因为那个开源工程在板子上跑是木有问题的。


郁闷了半天,后来把代码仔细看了下,发现snd_pcm_close( )函数被调用了两次,在第二次调用的时候出现了上述错误。修改调用逻辑,避免snd_pcm_close( )被二次调用,问题解决。



你可能感兴趣的:(alsa API错误:“Assertion 'plug->gen.slave == plug->req_slave' failed”)