版本記錄
版本號 | 時間 |
---|---|
V1.0 | 2018.06.25 |
前言
AudioUnit框架作為您的應(yīng)用程序添加復(fù)雜的音頻操作和處理功能。 創(chuàng)建在主機(jī)應(yīng)用程序中生成或修改音頻的音頻單元擴(kuò)展亡容。接下來幾篇我們就一起看一下這個框架,感興趣的看上面幾篇文章谅年。
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中使用兩個音頻單元API(二)
6. AudioUnit框架詳細(xì)解析(六) —— 音頻單元提供快速的模塊化音頻處理之使用標(biāo)識符來指定和獲取音頻單元(三)
7. AudioUnit框架詳細(xì)解析(七) —— 音頻單元提供快速的模塊化音頻處理之使用范圍和元素來指定音頻單元的部分(四)
Use Properties to Configure Audio Units - 使用屬性來配置音頻單元
音頻單元屬性audio unit property是可用于配置音頻單元的鍵值對纽甘。 屬性的key是具有關(guān)聯(lián)助記符標(biāo)識符的唯一整數(shù),例如kAudioUnitProperty_MaximumFramesPerSlice = 14
掖鱼。 Apple保留從0
到63999
的屬性鍵然走。在Mac OS X中,第三方音頻單元使用此范圍以上的鍵戏挡。
每個屬性的值都是指定的數(shù)據(jù)類型芍瑞,并具有指定的讀/寫訪問權(quán)限,如Audio Unit Properties Reference
中所述褐墅。 要在任何音頻單元上設(shè)置任何屬性拆檬,請使用一個靈活函數(shù):AudioUnitSetProperty
。 Listing 1-4
顯示了此函數(shù)的一個典型用法妥凳,注釋強(qiáng)調(diào)了如何指定范圍和元素scope and element
以及指示屬性的鍵和值竟贯。
// Listing 1-4 Using scope and element when setting a property
UInt32 busCount = 2;
OSStatus result = AudioUnitSetProperty (
mixerUnit,
kAudioUnitProperty_ElementCount, // the property key
kAudioUnitScope_Input, // the scope to set the property on
0, // the element to set the property on
&busCount, // the property value
sizeof (busCount)
);
以下是在音頻單元開發(fā)中經(jīng)常使用的一些屬性。 通過閱讀其參考文檔并探索Apple的音頻單元示例代碼項(xiàng)目(如音頻混音器(MixerHost)
)逝钥,熟悉其中的每一個:
kAudioOutputUnitProperty_EnableIO
澄耍,用于啟用或禁用I / O單元上的輸入或輸出。 默認(rèn)情況下,輸出已啟用齐莲,但輸入已禁用。kAudioUnitProperty_ElementCount
磷箕,用于配置混音器單元上的輸入元素數(shù)量选酗。kAudioUnitProperty_MaximumFramesPerSlice
,用于指定音頻單元響應(yīng)于渲染調(diào)用應(yīng)該準(zhǔn)備產(chǎn)生的音頻數(shù)據(jù)的最大幀數(shù)岳枷。 對于大多數(shù)音頻單遠(yuǎn)芒填,在大多數(shù)情況下,您必須按照參考文檔中所述設(shè)置此屬性空繁。 如果你不這樣做殿衰,當(dāng)屏幕鎖定時,你的音頻將停止盛泡。kAudioUnitProperty_StreamFormat
闷祥,用于指定特定音頻單元輸入或輸出總線的音頻流數(shù)據(jù)格式。
大多數(shù)屬性值只能在音頻單元未初始化時設(shè)置傲诵。 這些屬性不打算由用戶改變凯砍。 盡管如此,某些iPod播放器EQ單元的kAudioUnitProperty_PresentPreset
屬性和語音處理I / O單元的kAUVoiceIOProperty_MuteOutput
屬性在播放音頻時會更改拴竹。
要發(fā)現(xiàn)一個屬性的可用性悟衩,訪問其值,并監(jiān)視其值的變化栓拜,請使用以下函數(shù):
-
AudioUnitGetPropertyInfo
- 發(fā)現(xiàn)某個屬性是否可用; 如果是這樣座泳,你會得到數(shù)據(jù)大小的值,以及是否可以更改該值 -
AudioUnitGetProperty幕与,AudioUnitSetProperty
- 獲取或設(shè)置屬性的值 -
AudioUnitAddPropertyListener挑势,AudioUnitRemovePropertyListenerWithUserData
- 安裝或刪除回調(diào)函數(shù)以監(jiān)視對屬性值的更改
后記
本篇主要講述了使用屬性來配置音頻單元,感興趣的給個贊或者關(guān)注~~~~