1

我刚刚开始学习核心音频,并且正在阅读 Adamson 和 Avila 的“Learning Core Audio”中的所有示例。

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

有时,但不是每次我运行程序时,最后一行都会出现错误

AUGraphClose(player.graph);

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

我只是在检查是否有人遇到过这个问题,因为我正在深入研究可能出了什么问题。

4

1 回答 1

1

好的,我通过偶然使用断点设法调试了这个。

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

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

if (inTimeStamp->mSampleTime > 0.0) {

在第 97 行,阻止了函数其余部分的执行。它现在可以工作了,尽管它确实开始时会发出可怕的流行音乐。

于 2013-08-23T20:48:57.143 回答