私はportaudioのウェブサイトにあるhereの録音プログラムのサンプルを使って作業しています。そして、フレームインデックスがどのようにインクリメントされているのか混乱していますportaudioがコールバックをバーストで返すのはなぜですか?
バッファサイズが512フレームで、サンプルレートが44100Hzに設定されている場合、プログラムはバッファを介して動作し、コールバックを返し、 11.6msごとに512フレームインデックスを増加させます。 main()では、現在のフレームインデックスを12msごとに出力しています(例のように1000msごとに反対ですが、残りのコードはそれらのものと同じです)。しかし、そうではありません。これは出力の塊です:
index at 12 ms = 0
index at 24 ms = 0
index at 36 ms = 1024
index at 48 ms = 1024
index at 60 ms = 2048
index at 72 ms = 2048
index at 84 ms = 2048
index at 96 ms = 3072
index at 108 ms = 3072
index at 120 ms = 3072
index at 132 ms = 4096
index at 144 ms = 4096
index at 156 ms = 4096
index at 168 ms = 5120
index at 180 ms = 5120
index at 192 ms = 5120
index at 204 ms = 6144
index at 216 ms = 7680
ご覧のとおり、これは変わった形で増えています。インデックスは36msまで0にとどまり、最大1024までジャンプし、インデックスは60msで1024から2048に突然増加します。インデックスが増加する方法は、それが期待する方法ではなく、矛盾しています。インデックスは1024から2048に増分するには24ms、次に2048から3072に増やすには36msかかりますが、その後は1224から6144に増やして6144から7680に増加します。
ここでは何が起こっているのですか出力をより安定した速度で得るにはどうすればよいですか?おそらくALSAのオーディオバッファサイズと関係がありますか?
おそらく、計測クロックの方が予想よりも細かくなります。 –
どうやら、あなたは 'main'からコールバック状態を非同期にサンプリングしようとしています。フレームインデックスとタイムスタンプを配列(コールバック自体)に格納する方がよいでしょう。そして、 'main'からその情報を出力することができます。 – user3386109
"フレームインデックス"とはどういう意味ですか?この番号はどこから来ていますか? –