2010-01-21 107 views
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 

的第一時間戳是緩衝時間,第二是參考時間(時在被按下,我使用AudioQueueDeviceGetCurrentTime的按鈕)和第三是兩者之間的增量。正如預期的那樣,緩衝區稍微滯後於「實時」,並且在一對夫婦緩衝區回調已經運行之後纔會趕上。

現在關閉並重新打開該隊列的時候,這個故事有很大不同:

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 

正如你可以看到,時間戳(?納秒我想)有不同的方式,第二次左右。他們沒有趕上幾秒鐘的實時。這種行爲根本不是可重複的 - 時間戳有時是正確的,有時是錯誤的。但是,我第一次打開隊列時總是錯誤的。

回答

1

因此再次喘口氣並在SO上張貼已解決它;)當您的隊列停止/暫停時,您不應該獲取隊列的當前時間戳:^ P