2013-08-23 41 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,並遮斷功能的其餘部分的執行。它現在起作用了,儘管它確實讓一個可怕的流行開始。