0

AudioInputCallback記録キューの関数で、記録されたバッファから時間を取得しようとしています。残念ながら、私が見ているタイムスタンプは期待どおりではありません。以下に例を示します ( を使用AudioTimeStamp.mHostTime):

2010-01-21 14:03:35.252 [61694:207] 1288747268011206    1288747396166138    -128154932
2010-01-21 14:03:35.344 [61694:207] 1288747360891024    1288747396166138    -35275114
2010-01-21 14:03:35.437 [61694:207] 1288747453770843    1288747396166138    57604705
2010-01-21 14:03:35.530 [61694:207] 1288747546652078    1288747396166138    150485940

最初のタイムスタンプはバッファ時間、2 番目は参照時間 (ボタンが押された時間、私は を使用していますAudioQueueDeviceGetCurrentTime)、3 番目は 2 つの間のデルタです。予想どおり、バッファーは「リアルタイム」でわずかに遅れ、いくつかのバッファー コールバックが実行された後に追いつきます。

このキューを閉じて再度開くと、話は大きく異なります。

2010-01-21 14:03:46.769 [61694:207] 1288755719477798    1288758853485434    -3134007636
2010-01-21 14:03:46.862 [61694:207] 1288755812365464    1288758853485434    -3041119970
2010-01-21 14:03:46.955 [61694:207] 1288755905305200    1288758853485434    -2948180234

ご覧のとおり、タイムスタンプ (ns だと思いますか?) は 2 回目とは大きく異なります。数秒間、リアルタイムに追いつきません。この動作はまったく再現できません。タイムスタンプが正しい場合もあれば、間違っている場合もあります。ただし、最初にキューを開くときは常に間違っています。

4

1 に答える 1

1

もう一度一息ついてSOに投稿することで解決しました;)キューが停止/一時停止している間は、キューの現在のタイムスタンプを取得しないでください:^ P

于 2010-01-21T20:31:12.723 に答える