AudioUnit框架詳細(xì)解析(六) —— 音頻單元提供快速的模塊化音頻處理之使用標(biāo)識符來指定和獲取音頻單元(三)

版本記錄

版本號 時間
V1.0 2018.06.24

前言

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(二)

Use Identifiers to Specify and Obtain Audio Units - 使用標(biāo)識符來指定和獲取音頻單元

要在運(yùn)行時查找音頻單元贱纠,請首先在音頻組件描述數(shù)據(jù)結(jié)構(gòu)中指定其類型谆焊,子類型和制造商密鑰浦夷。 無論使用音頻單元還是音頻處理圖形API,都可以這樣做。 Listing 1-1給出了怎么做懈息。

// Listing 1-1 Creating an audio component description to identify an audio unit
 
AudioComponentDescription ioUnitDescription;
ioUnitDescription.componentType          = kAudioUnitType_Output;
ioUnitDescription.componentSubType       = kAudioUnitSubType_RemoteIO;
ioUnitDescription.componentManufacturer  = kAudioUnitManufacturer_Apple;
ioUnitDescription.componentFlags         = 0;
ioUnitDescription.componentFlagsMask     = 0;

此說明僅指定一個音頻單元 - Remote I/O unit摹恰。 此音頻和其他iOS音頻單元的鍵在Identifier Keys for Audio Units中列出。 請注意姑宽,所有iOS音頻設(shè)備都使用componentManufacturer字段的kAudioUnitManufacturer_Apple密鑰。

要創(chuàng)建通配符描述舵变,請將一個或多個類型/子類型字段設(shè)置為0纪隙。例如扛或,要匹配所有I / O單元熙兔,請將列表1-1更改為對componentSubType字段使用值0。

通過描述麸锉,您可以使用兩種API中的任何一種獲得對指定音頻單元(或音頻單元集)的庫的引用淮椰。 音頻單元API如Listing 1-2所示纳寂。

Listing 1-2 Obtaining an audio unit instance using the audio unit API

  AudioComponent foundIoUnitReference = AudioComponentFindNext (
                                            NULL,
   AudioUnit ioUnitInstance;
   AudioComponentInstanceNew (
      foundIoUnitReference,
      &ioUnitInstance
  );

NULL傳遞給AudioComponentFindNext的第一個參數(shù)告訴該函數(shù)使用系統(tǒng)定義的順序查找與描述匹配的第一個系統(tǒng)音頻單元毙芜。 如果您改為在此參數(shù)中傳遞先前找到的音頻單元引用,則該函數(shù)將找到與該描述匹配的下一個音頻單元晦雨。 例如闹瞧,此用法可讓您通過重復(fù)調(diào)用AudioComponentFindNext來獲取對所有I / O單元的引用展辞。

AudioComponentFindNext調(diào)用的第二個參數(shù)是指Listing 1-1中定義的音頻單元描述。

AudioComponentFindNext函數(shù)的結(jié)果是對定義音頻單元的動態(tài)鏈接庫的引用脚粟。 將引用傳遞給AudioComponentInstanceNew函數(shù)以實(shí)例化音頻單元蘸朋,如Listing 1-2所示藕坯。

您可以使用音頻處理圖API來實(shí)例化音頻單元。 Listing 1-3顯示了做法已慢。

// Listing 1-3 Obtaining an audio unit instance using the audio processing graph API
// Declare and instantiate an audio processing graph
  AUGraph processingGraph;
  NewAUGraph (&processingGraph);
  // Add an audio unit node to the graph, then instantiate the audio unit
  AUNode ioNode;
  AUGraphAddNode (
      processingGraph,
      &ioUnitDescription,
      &ioNode
  );
  AUGraphOpen (processingGraph); // indirectly performs audio unit instantiation
  // Obtain a reference to the newly-instantiated I/O unit
  AudioUnit ioUnit;
  AUGraphNodeInfo (
       processingGraph,
 ioNode,
      NULL,
      &ioUnit
);

該代碼清單引入了AUNode佑惠,這是一種不透明的類型膜楷,表示音頻處理圖形上下文中的音頻單元贞奋。 在AUGraphNodeInfo函數(shù)調(diào)用的輸出中,您將在ioUnit參數(shù)中收到對新音頻單元實(shí)例的引用特愿。
AUGraphAddNode調(diào)用的第二個參數(shù)引用了Listing 1-1中定義的音頻單元描述揍障。

獲得音頻單元實(shí)例后俩由,您可以對其進(jìn)行配置幻梯。 為此,您需要了解兩個音頻單元的特征咬摇,范圍和元素(scopes and elements)肛鹏。

后記

本篇主要講述了使用標(biāo)識符來指定和獲取音頻單元,感興趣的給個贊或者關(guān)注~~~~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末复唤,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子妓局,更是在濱河造成了極大的恐慌呈宇,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件存炮,死亡現(xiàn)場離奇詭異蜈漓,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)享完,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進(jìn)店門般又,熙熙樓的掌柜王于貴愁眉苦臉地迎上來巍佑,“玉大人,你說我怎么就攤上這事笋熬∧骞剑” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵糖耸,是天一觀的道長嘉竟。 經(jīng)常有香客問我,道長倦蚪,這世上最難降的妖魔是什么边苹? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任个束,我火速辦了婚禮,結(jié)果婚禮上沪悲,老公的妹妹穿的比我還像新娘阱表。我一直安慰自己,他們只是感情好握截,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布谨胞。 她就那樣靜靜地躺著蒜鸡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪叶沛。 梳的紋絲不亂的頭發(fā)上灰署,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天局嘁,我揣著相機(jī)與錄音,去河邊找鬼肴茄。 笑死寡痰,一個胖子當(dāng)著我的面吹牛抗楔,可吹牛的內(nèi)容都是我干的连躏。 我是一名探鬼主播贞滨,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼莫湘!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起幅垮,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤示弓,失蹤者是張志新(化名)和其女友劉穎呵萨,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體囱皿,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嘱腥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年拘悦,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片分苇。...
    茶點(diǎn)故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡椭盏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出糟红,到底是詐尸還是另有隱情,我是刑警寧澤柒爸,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布捎稚,位于F島的核電站求橄,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏条霜。R本人自食惡果不足惜涵亏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一拆内、第九天 我趴在偏房一處隱蔽的房頂上張望宠默。 院中可真熱鬧,春花似錦搀矫、人聲如沸艾君。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逝薪。三九已至蝴罪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間虏肾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工谴轮, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留第步,地道東北人缘琅。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓粘都,卻偏偏與公主長得像,于是被迫代替她去往敵國和親刷袍。 傳聞我的和親對象是個殘疾皇子驯杜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評論 2 354

推薦閱讀更多精彩內(nèi)容