学习核心音频第8章示例未运行

时间:2013-08-23 20:16:54

标签: c macos core-audio

我正在快速掌握核心音频,并且正在阅读Adamson和Avila的“学习核心音频”中的所有示例。

第一个不起作用的示例(使用示例代码和网站上的项目)在第8章中。它根本不做任何事情。

有时候,但不是每次我运行程序时,我都会在最后一行收到错误

AUGraphClose(player.graph);

CH08_AUGraphInput(9781,0x7fff78ee8960)malloc: *对象0x104003600的错误:未释放指针被释放 * 在malloc_error_break中设置断点以进行调试

我正在检查是否有人遇到这个问题,因为我想知道可能出现的问题。

1 个答案:

答案 0 :(得分:1)

好的,我设法通过偶然使用断点来调试它。

似乎时间戳的mTimestamp字段未在第一个输出回调上正确写入。在第一次调用时,它始终显示为0.在第一次调用之后,它与输入时间戳的值具有相似的幅度,远远大于0.因此,计算出inToOutSampleTimeOffset从第一个样本开始,它不是一个有意义的值,它正在弄乱环形缓冲区。

为了解决这个问题,我添加了

if (inTimeStamp->mSampleTime > 0.0) {

在第97行,并阻止了其余功能的执行。它现在有效,虽然它确实让人开始可怕的流行音乐。