PortAudioのPaStreamFinishedCallback
で安全な操作を知りたいのですが、私は通常、ユーザまたは他のアプリケーションのオーディオストリームにポップス/グリッチを引き起こす可能性があるので、再生のためにPaStreamCallback
をブロックする操作を試みることをお勧めしません。 PaStreamFinishedCallback
にも同じ制限が適用されますか?そのコールバックがOSのオーディオスレッドでも呼び出されているのであれば、私は最終的に私は不思議だと思います。PortAudioのPaStreamFinishedCallbackでの安全な操作
また、Pa_StopStream
のような機能があり、コールバックがpaComplete
/paAbort
を返すまでブロックされますが、停止を引き起こすことはありませんか?実際に私の使用には理想的でしょう。なぜなら、私が掃除するのに適した糸があるからです。私はそれが完了した私のスレッドに私のコールバック信号を持ってこれを達成することができると知っているスレッドはPa_StopStream
を呼び出すことができますが、それは重い手を感じる。
編集:私の使用についてもう少しコンテキストを与えるために、私はいくつかのPCMを保持するリングバッファを持っていて、バッファにスペースがあるときにシグナルを送るためにpthread condvarを使用します。 1つのスレッドがこのリングに書き込みを行い、もう一方の端からPaStreamCallback
を読み込みます。物事が終了すると、ライターはリングにクローズドフラッグをセットし、コールバックは残っているものを排除します。私は私のリングが流出し、PortAudioがフラッシュすることを確認したいと思います。コールバックはリングがいつ排除されるかを知る唯一の場所なので、paComplete
を返すことが適切であると感じます。しかし、私はリングを割り当て解除することが大丈夫であることを知るために何らかの方法が必要です。