audioqueue を満たすために 3 つの audioQueueBufferRef があり、データが十分に速く来るとすべてがうまく機能します。しかし、データがなくなったときに、outputCallback がバッファを埋めるように要求することがあります。この場合、私は何かをエンキューせず、コールバックはもう呼び出されません。(正常 ?)
これの後、私は2つのバッファで実行し、後で(別のラグの後)1つのバッファで実行し、最後にバッファにコールバックがなくなり、音が出なくなります。
空の audioQueueBufferRef を配列に格納し、入力するデータがあるときにそれらを呼び出そうとしました。しかし、データが十分に速く到着しないため、バッファは残っている少量のデータを「食べる」だけで、サウンドが遅れます。
埋めるデータが少なくなったときの最善の方法は何ですか?
私が見つけた最善の方法は、コールバックなしでバッファーを停止させ、すべてのバッファーが空になるまで残りのバッファーにジョブを実行させることです。この後、AudioQueue を停止し、いくつかのデータを保存して、もう一度再生します。AudioqueueStop() を呼び出す必要があることに注意してください。これは、すべてのバッファーが空で、それらを補充すると、サウンドが出ないためです。これは正常ですか?
一般的に、私はそれを良い方法で行いますか、それともより良いアプローチがありますか? そして、すべての audioqueueBufferRef が死んでいることを検出するコールバックはありますか (コールバックを実行せずに) ? 2.