我正在为iPhone开发,并尝试获取初始timeStamp以同步我的audioQueue。
我为此使用AudioQueueDeviceGetCurrentTime
。根据文档,此函数会返回有效的mHostTime ,无论队列/设备是否正在运行。但是,当我尝试这个时,我会得到一个kAudioHardwareNotRunningError
(1937010544)。所有队列都关联有一个timeLine,并且在调用该函数之前已初始化。
如何检索有效的mHostTime来同步我的AudioQueues(在运行队列之前)?
我的代码:
AudioSessionInitialize(NULL, NULL, interruptionListenerCallback, self);
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,
sizeof(sessionCategory), &sessionCategory);
// initialize all queues
// ....
AudioSessionSetActive(true);
OSStatus result;
AudioTimestamp currentTime;
result = AudioQueueDeviceGetCurrentTime(audioQueueRef, ¤tTimeStamp);
if (!result)
{
// rest of code
}
最佳答案
经过一番谷歌搜索后,我在CoreAudio邮件列表上发现了一个帖子,他们说hostTime与mach_absolute_time()
相同。Mach_absolute_time()
确实为我提供了预期的时间戳值。