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
正如您所看到的,时间戳(我想是ns?)在第二次时有很大不同。他们在几秒钟内都赶不上实时。这种行为根本不可复制——时间戳有时是对的,有时是错的。然而,当我第一次打开队列时,他们总是错的。