LinuxでALSAドライバーを使用するオーディオアプリケーションがあり、コードはIntelLinuxデスクトップマシンで非常にうまく機能します。ただし、Raspberry Piもサポートしたいので、そのプラットフォームで定期的にオーディオのドロップアウトとバッファアンダーランが発生します。公平を期すために、アンダーランはIntel Linuxでも発生しますが、厄介な静的バーストは発生しません。これは、おそらくそのプラットフォームのALSAドライバーに関係しています。
とにかく、2種類のエラーが発生します。まず、への呼び出しでコードsnd_pcm_wait()
が返されることがあり-EPIPE
ます。このコードをキャッチしてから呼び出してみますがsnd_pcm_recover()
、その後snd_pcm_prepare()
のへの呼び出しで少し静的な歪みが発生しsnd_pcm_writei()
ます。これはそのようなエラーから回復する正しい方法ですか?静的なしでこれから回復する方法はありますか?
正常に戻ったときsnd_pcm_wait()
、私は電話しsnd_pcm_avail_update()
ます...から正常に戻った後もこれを行う必要がありますsnd_pcm_recover()
か?
私が抱えている2番目の問題は、リターンコードsnd_pcm_writei()
も返されることがあるということです。-EPIPE
繰り返しにsnd_pcm_recover()
なりますが、この場合は電話をかけてみますが、クリック音やその他の不快感が聞こえます。このエラーからより適切に回復する方法はありますか?