ALSA spdifが挿入/アクティブであることを確認する

ALSA spdifが挿入/アクティブであることを確認する

SPDIF Inデバイスが実際に接続されていることを確認する方法はalsa / libasoundにありますか?
私は現在、USBサウンドカードを搭載したRaspberry Piを使用して、SPDIFを介して着信PCオーディオをPiのオーディオと組み合わせてスピーカーに出力しています。
問題は、コンピュータをシャットダウンまたはスリープモードに設定すると、スピーカーが数秒間叩いて音を出し始め、静かになり、プログラムに膨大なキャプチャバッファオーバーフローが発生することです。
したがって、PCM入力を読み取る前に、デバイスが実際に接続されていることを確認する必要があります。

ベストアンサー1

私が望んでいた最善の解決策ではありませんでしたが、解決策を見つけました。
誰もがアイデアがあれば喜んで聞きたいです。それまでは、次のように問題を処理します。

私はケーブルが取り外されたときにサンプルが入ってくる速度が低下することを発見しました。コンピュータの電源が切れているときも同じことが予想されますが、これはかなり安全な仮定だと思います。
とにかくストリームを再生するか無視するかを決定するために、クロノを使用してhigh_precision_clock20サイクルの間隔を測定しました。
各サイクルで使用されている読み取りサンプルの量を収集しますsnd_pcm_readi。 1 サイクルにかかる時間よりも長い間、読み取りプロセスが中断されるのを防ぐために、非遮断モードとタイムアウトを使用します。
最後に、サンプルレートを計算し、予想サンプルレートと2kHz以上の差がある場合は、再び予想範囲に戻るまでストリームを無視します。

おすすめ記事