版本記錄
版本號(hào) | 時(shí)間 |
---|---|
V1.0 | 2018.07.05 |
前言
AudioUnit框架作為您的應(yīng)用程序添加復(fù)雜的音頻操作和處理功能参淫。 創(chuàng)建在主機(jī)應(yīng)用程序中生成或修改音頻的音頻單元擴(kuò)展志衍。接下來(lái)幾篇我們就一起看一下這個(gè)框架寿弱,感興趣的看上面幾篇文章馁痴。
1. AudioUnit框架詳細(xì)解析(一) —— 基本概覽
2. AudioUnit框架詳細(xì)解析(二) —— 關(guān)于Audio Unit Hosting之概覽(一)
3. AudioUnit框架詳細(xì)解析(三) —— 關(guān)于Audio Unit Hosting之如何使用本文檔和參考資料(二)
4. AudioUnit框架詳細(xì)解析(四) —— 音頻單元提供快速的模塊化音頻處理之iOS中的Audio Units(一)
5. AudioUnit框架詳細(xì)解析(五) —— 音頻單元提供快速的模塊化音頻處理之在Concert中使用兩個(gè)音頻單元API(二)
6. AudioUnit框架詳細(xì)解析(六) —— 音頻單元提供快速的模塊化音頻處理之使用標(biāo)識(shí)符來(lái)指定和獲取音頻單元(三)
7. AudioUnit框架詳細(xì)解析(七) —— 音頻單元提供快速的模塊化音頻處理之使用范圍和元素來(lái)指定音頻單元的部分(四)
8. AudioUnit框架詳細(xì)解析(八) —— 音頻單元提供快速的模塊化音頻處理之使用屬性來(lái)配置音頻單元(五)
9. AudioUnit框架詳細(xì)解析(九) —— 音頻單元提供快速的模塊化音頻處理之使用參數(shù)和UIKit為用戶提供控制(六)
10. AudioUnit框架詳細(xì)解析(十) —— 音頻單元提供快速的模塊化音頻處理之I / O單元的基本特性(七)
11. AudioUnit框架詳細(xì)解析(十一) —— 音頻處理圖管理音頻單元之音頻處理圖具有一個(gè)I / O單元(一)
12. AudioUnit框架詳細(xì)解析(十二) —— 音頻處理圖管理音頻單元之音頻處理圖提供線程安全性(二)
13. AudioUnit框架詳細(xì)解析(十三) —— 音頻處理圖管理音頻單元之音頻使用Pull通過(guò)圖表(三)
14. AudioUnit框架詳細(xì)解析(十四) —— 呈現(xiàn)回調(diào)函數(shù)將音頻饋送到音頻單元之了解音頻單元呈現(xiàn)回調(diào)函數(shù)(一)
15. AudioUnit框架詳細(xì)解析(十五) —— 音頻流格式啟用數(shù)據(jù)流之使用AudioStreamBasicDescription結(jié)構(gòu)(一)
16. AudioUnit框架詳細(xì)解析(十六) —— 音頻流格式啟用數(shù)據(jù)流之了解何處以及如何設(shè)置流格式(二)
17. AudioUnit框架詳細(xì)解析(十七) —— 從選擇設(shè)計(jì)模式開(kāi)始之I / O傳遞(一)
18. AudioUnit框架詳細(xì)解析(十八) —— 從選擇設(shè)計(jì)模式開(kāi)始之沒(méi)有渲染回調(diào)函數(shù)的I / O(二)
19. AudioUnit框架詳細(xì)解析(十九) —— 從選擇設(shè)計(jì)模式開(kāi)始之具有渲染回調(diào)函數(shù)的I / O(三)
20. AudioUnit框架詳細(xì)解析(二十) —— 從選擇設(shè)計(jì)模式開(kāi)始之僅具有渲染回調(diào)函數(shù)的輸出(四)
21. AudioUnit框架詳細(xì)解析(二十一) —— 從選擇設(shè)計(jì)模式開(kāi)始之其他音頻單元Hosting設(shè)計(jì)模式(五)
22. AudioUnit框架詳細(xì)解析(二十二) —— 構(gòu)建您的應(yīng)用程序(一)
Troubleshooting Tips - 故障排除提示
每當(dāng)Core Audio函數(shù)提供返回值時(shí)错沽,捕獲該值并檢查成功或失敗簿晓。失敗時(shí),請(qǐng)使用Xcode調(diào)試功能千埃,如 Xcode Debugging Guide
中所述憔儿。如果在應(yīng)用程序中使用Objective-C方法(例如配置音頻會(huì)話),請(qǐng)以相同方式利用error參數(shù)放可。
注意函數(shù)調(diào)用之間的依賴(lài)關(guān)系谒臼。例如,只有在成功初始化后才能啟動(dòng)音頻處理圖耀里。檢查AUGraphInitialize
的返回值蜈缤。如果函數(shù)成功返回,則可以啟動(dòng)圖形冯挎。如果失敗底哥,確定出了什么問(wèn)題。檢查導(dǎo)致初始化的所有音頻單元函數(shù)調(diào)用是否成功返回。有關(guān)如何執(zhí)行此操作的示例趾徽,請(qǐng)查看示例代碼項(xiàng)目Audio Mixer(MixerHost)
中的-configureAndInitializeAudioProcessingGraph
方法续滋。
其次,如果圖形初始化失敗孵奶,請(qǐng)利用CAShow
函數(shù)疲酌。此函數(shù)將圖表graph
的狀態(tài)打印到Xcode控制臺(tái)。示例代碼項(xiàng)目Audio Mixer(MixerHost)
也演示了這種技術(shù)拒课。
確保將每個(gè)AudioStreamBasicDescription
結(jié)構(gòu)初始化為0
徐勃,如下所示:
AudioStreamBasicDescription stereoStreamFormat = {0};
將ASBD
的字段初始化為0可確保沒(méi)有字段包含垃圾數(shù)據(jù)事示。 (在外部存儲(chǔ)中聲明數(shù)據(jù)結(jié)構(gòu)的情況下 - 例如早像,作為類(lèi)聲明中的實(shí)例變量 - 其字段會(huì)自動(dòng)初始化為0,您無(wú)需自己初始化它們肖爵。)
要將AudioStreamBasicDescription
結(jié)構(gòu)的字段值打印到Xcode控制臺(tái)卢鹦,這在開(kāi)發(fā)過(guò)程中非常有用,請(qǐng)使用如Listing 2-8
所示的代碼劝堪。
Listing 2-8 A utility method to print field values for an AudioStreamBasicDescription structure
- (void) printASBD: (AudioStreamBasicDescription) asbd {
char formatIDString[5];
UInt32 formatID = CFSwapInt32HostToBig (asbd.mFormatID);
bcopy (&formatID, formatIDString, 4);
formatIDString[4] = '\0';
NSLog (@" Sample Rate: %10.0f", asbd.mSampleRate);
NSLog (@" Format ID: %10s", formatIDString);
NSLog (@" Format Flags: %10x", asbd.mFormatFlags);
NSLog (@" Bytes per Packet: %10d", asbd.mBytePerPacket);
NSLog (@" Frames per Packet: %10d", asbd.mFramesPerPacket);
NSLog (@" Bytes per Frame: %10d",asbd.mBytesPerFrame);
NSLog (@" Channels per Frame: %10d",asbd.mChannelsPerFrame);
NSLog (@" Bits per Channel: %10d",asbd.mBitsPerChannel);
}
該實(shí)用方法可以快速顯示ASBD
中的問(wèn)題冀自。
為音頻單元流格式定義ASBD
時(shí),請(qǐng)注意確保遵循 Using Specific Audio Units
中的使用表中的Recommended stream format attributes
和Stream format notes
秒啦。不要偏離除非您有特定原因熬粗,否則請(qǐng)從這些建議中獲取。
后記
本篇主要講述了故障排除提示余境,感興趣的給個(gè)贊或者關(guān)注~~~~