私が使用しているアプリケーションは、十分なサウンドが生成された後にのみサウンドを再生します。マウスを無音で 10 回クリックすると、10 回クリックした後、マウスのクリック音が 10 回聞こえます (たとえば)。
この問題を軽減するために私が見つけた唯一の方法は、非常に短いバッファ サイズを設定することですが、これはやりたくありません。
start_threshold sw パラメータを使用しようとしましたが、効果がありません。
指定された量のデータが書き込まれ、バッファ サイズを下回ったときに、強制的に再生できるように思えますが、これは正しいですか? 期間の長さはバッファよりもはるかに短い可能性があるため(または例で見たように)、それが start_threshold が示しているようです。
私のコードは次のようなものです:
コール HW パラメータ設定
データを含むバイト配列を取得する
ループスルーし、毎回バッファに 1 バイト オフセットを加えた値に書き込みます
開始を呼び出します (これにより、再生が強制されますよね??)
-EPIPE がある場合は、prepare を呼び出して、offset に 0 を追加します (再生されるのはこれだけだと思います)。
ありがとう!