我正在为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, &currentTimeStamp);

if (!result)
{
  // rest of code
}

最佳答案

经过一番谷歌搜索后,我在CoreAudio邮件列表上发现了一个帖子,他们说hostTime与mach_absolute_time()相同。
Mach_absolute_time()确实为我提供了预期的时间戳值。

09-19 19:51