2013-08-23 42 views
1

我刚刚开始关注核心音频,并且正在审阅Adamson和Avila的“Learning Core Audio”中的所有示例。学习核心音频第8章示例未运行

第8章不起作用的第一个例子(使用网站上的示例代码和项目)在第8章中。它根本没有任何作用。我每次运行程序时

一些时间,但不是,我也得到一个错误的最后一行

AUGraphClose(player.graph); 

CH08_AUGraphInput(9781,0x7fff78ee8960)的malloc:*为对象0x104003600错误:指针被释放没有被分配 *设置断点malloc_error_break调试

我只是检查,看看我潜入搞清楚什么可以去错任何人有过这个问题。

回答

1

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

看起来,timestamp的mTimestamp字段在第一个输出回调中没有正确写入。在第一次调用时,它始终显示为0.在第一次调用之后,它与输入时间戳的值相差很大,这比输入时间戳的值大得多。结果,从第一个样本计算出的inToOutSampleTimeOffset并不是一个有意义的值,它正在搞乱了环形缓冲区。

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

if (inTimeStamp->mSampleTime > 0.0) { 

在线路97,并遮断功能的其余部分的执行。它现在起作用了,尽管它确实让一个可怕的流行开始。