Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
libasound函数snd_pcm_hw_参数的混淆错误_Libasound - Fatal编程技术网

libasound函数snd_pcm_hw_参数的混淆错误

libasound函数snd_pcm_hw_参数的混淆错误,libasound,Libasound,我的问题与名为“snd_pcm_hw_params”的libasound函数有关,该函数与播放声音文件的代码有关。我是ALSA编程新手。使用我在互联网上找到的一个编码示例,我编写了一个小程序,将一个7秒的.wav文件播放到默认声卡。当我连续几次运行此代码时,偶尔(但不总是)调用snd_pcm_hw_params将之前填写的snd_hw_params_t结构写入驱动程序时,我会返回一个错误代码-2(enoint)。我不知道这意味着什么,也不知道如何处理或预防它。我的代码只是发出一条错误消息并退出。

我的问题与名为“snd_pcm_hw_params”的libasound函数有关,该函数与播放声音文件的代码有关。我是ALSA编程新手。使用我在互联网上找到的一个编码示例,我编写了一个小程序,将一个7秒的.wav文件播放到默认声卡。当我连续几次运行此代码时,偶尔(但不总是)调用snd_pcm_hw_params将之前填写的snd_hw_params_t结构写入驱动程序时,我会返回一个错误代码-2(enoint)。我不知道这意味着什么,也不知道如何处理或预防它。我的代码只是发出一条错误消息并退出。通常,如果我再次运行它,代码运行正常。这对我来说很好,但最终,这段代码应该交给非程序员使用,我想要么防止错误,要么在不涉及非编程用户的情况下在内部解决它。我注意到,听说用户应该能够通过单击按钮使程序提前中止,当这种情况发生时,我的代码调用snd_pcm_drop,然后是snd_pcm_close。如果程序运行到结束,并播放wav文件的所有7秒,那么它将通过调用snd_pcm_drain,然后调用snd_pcm_close来结束。如有任何帮助或建议,将不胜感激。:)

作为补充说明——我发现,在-enoint错误发生后,如果我重新运行程序,即使只是一秒钟后的一小部分,相同的代码也会毫无错误地完成。我假设snd_pcm_stop()函数以某种方式使默认声卡设备在短时间内处于“脱机”或“不可访问”状态。我正在试图找到某种方法来防止或恢复这种情况。有人清楚snd_pcm_reset()是什么吗实际上是这样吗?另外,仅供参考-I更改代码,以便如果它被激活,它将休眠约10毫秒。然后再次发出相同的调用。第二次调用返回一个“无效参数”错误。我不知道为什么。Thx。对所有人:我仍然不理解错误的原因。我通过模拟观察到的行为修复了它,因此:对于(int i=0;i<10;i++){打开默认声音设备;配置声音参数;rc=snd_pcm_hw_params(…);if(rc=-enoint){关闭默认声音设备;睡眠25毫秒。}否则中断;}并且只有在十次尝试后问题仍然存在时才会退出错误。仅供参考,如果有问题,默认声卡是:英特尔[hda英特尔],设备0:92HD71B7X模拟(每个应用程序--列出设备)如果看不到代码,我们无法帮助您修复代码。