亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

音頻單元組件服務參考(AudioUnitComponentServicesReference)

2019-11-14 20:42:46
字體:
來源:轉載
供稿:網友

目錄

  了解Audio Unit體系結構

  文檔結構預覽

  結構單元介紹

 

本文主要介紹AudioUnit的組成

本文由自己理解而成,如有錯誤,請歡迎網友們指出校正。

 

了解Audio Unit體系結構

開始前我們通過一個audioUnit對象來認識AudioUnit,這是一個Effect類型此類型的AudioUnit單元,這個單元由許多小的Scope(范圍)組成,scope種有 element(元素),elementt種有channel(聲道)模塊、stream format(流格式) 和一些PRoperties(屬性)組成。

 

 

文檔結構預覽  

以下來自Audio Unit Component Services Reference 文檔的結構組成,我們將根據這個結構進行介紹  

   

預覽(overView)音頻單元組件服務參考提供c借口來操作音頻單元,一個音頻單元是用于處理音頻的插件或者產生音頻數據。使用共同的操作你可以打開關閉音頻單元,詳細描述在Audio%20Unit%20Component%20Services%20Reference中。

任務函數(function%20by%20tasks)

主要有三部分:初始化或者渲染音頻、使用音頻屬性、使用音頻參數。

初始化或者渲染音頻:

  //初始化一個音頻單元,一旦創建成功,音頻的輸入輸出流格式都是有效的并且出去準備渲染的狀態,在這個階段系統為音頻單元創建最大幀的內存。

OSStatus AudioUnitInitialize (   AudioUnit inUnit //你要初始化的音頻);

 //在你改變音頻單元的特性之前,例如改變輸入輸出流的格式或者采樣率,你必須先取消其初始化。調用這個方法來釋放音頻對象資源。調用這個方法后你可以重新配置音頻參數并且重新初始化

OSStatus AudioUnitUninitialize (   AudioUnit  inUnit //你要取消初始化的對象);

//注冊一個回調方法來接收音頻的渲染通知。注冊的事件在音頻執行渲染操作(每一個預渲染比特標記被設置)和音頻的渲染操作完成(每一個渲染后的比特標記被設置)時都會被調用。inProc 和inProcUserData 是被認為是識別認證的兩個參數。要移除渲染監聽,你必須傳這兩個值得給AudioUnitRemoveRenderNotify。
OSStatus AudioUnitAddRenderNotify (   AudioUnit        inUnit,       //你想要接收的哪個通知的渲染對象   AURenderCallback inProc,     //你注冊的回調事件   void             *inProcUserData //你想要傳給你的調用事件的自定義數據。例如識別渲染通知。);
 //取消之前注冊的渲染調用。
OSStatus AudioUnitRemoveRenderNotify (   AudioUnit        inUnit,   AURenderCallback inProc,   void             *inProcUserData);

//為一個音頻單元初始化一個渲染循環。
OSStatus AudioUnitRender (   AudioUnit                   inUnit,      //你想要訪問的渲染對象   AudioUnitRenderActionFlags  *ioActionFlags,  //配置渲染操作的對象   const AudioTimeStamp        *inTimeStamp,      //音頻渲染操作的時間戳。每個時間戳必須包含有效的單調遞增的采樣時間。下一個時間戳 inTimeStamp =inTimeStamp + inNumberFrames 如果采樣時間不持續增加那么他們將會呈現間斷現象。
  UInt32 inOutputBusNumber, //要渲染的輸出緩沖區間 UInt32 inNumberFrames, //要渲染的音頻幀數 AudioBufferList *ioData );

 

 //重置音頻的渲染狀態。
OSStatus AudioUnitReset (   AudioUnit         inUnit,   AudioUnitScope    inScope, //scope范圍一般是kAudioUnitScope_Global   AudioUnitElement  inElement //element 范圍一般是0);

使用音頻屬性

//Registers a callback to receive audio unit property change notifications.

OSStatus AudioUnitAddPropertyListener (   AudioUnit                     inUnit,   AudioUnitPropertyID           inID,   AudioUnitPropertyListenerProc inProc,   void                          *inProcUserData);


//Unregisters a previously-registered property listener callback function.

OSStatus AudioUnitRemovePropertyListenerWithUserData (   AudioUnit                     inUnit,   AudioUnitPropertyID           inID,   AudioUnitPropertyListenerProc inProc,   void                          *inProcUserData);

//Gets the value of an audio unit property.

OSStatus AudioUnitGetProperty (   AudioUnit            inUnit,   AudioUnitPropertyID  inID,   AudioUnitScope       inScope,   AudioUnitElement     inElement,   void                 *outData,   UInt32               *ioDataSize);

//Gets information about an audio unit property.

OSStatus AudioUnitGetPropertyInfo (   AudioUnit            inUnit,   AudioUnitPropertyID  inID,   AudioUnitScope       inScope,   AudioUnitElement     inElement,   UInt32               *outDataSize,   Boolean              *outWritable);

 

 

//Sets the value of an audio unit property.

OSStatus AudioUnitSetProperty (   AudioUnit            inUnit,   AudioUnitPropertyID  inID,   AudioUnitScope       inScope,   AudioUnitElement     inElement,   const void           *inData,   UInt32               inDataSize);

使用音頻參數

//Gets the value of an audio unit parameter.

OSStatus AudioUnitGetParameter (   AudioUnit               inUnit,   AudioUnitParameterID    inID,   AudioUnitScope          inScope,   AudioUnitElement        inElement,   AudioUnitParameterValue *outValue);

//Sets the value of an audio unit parameter.

OSStatus AudioUnitSetParameter (   AudioUnit               inUnit,   AudioUnitParameterID    inID,   AudioUnitScope          inScope,   AudioUnitElement        inElement,   AudioUnitParameterValue inValue,   UInt32                  inBufferOffsetInFrames);

//Schedules changes to the value of an audio unit parameter.

OSStatus AudioUnitScheduleParameters (   AudioUnit                      inUnit,   const AudioUnitParameterEvent  *inParameterEvent,   UInt32                         inNumParamEvents);

功能函數

 

任務回調

回調

數據類型

 

AudioUnit
typedef AudioComponentInstance AudioUnit; //AudioUnit 是 AudioComponentInstance 類型。
//類型分為:
enum {
   kAudioUnitType_Output            = 'auou',   kAudioUnitType_MusicDevice       = 'aumu',   kAudioUnitType_MusicEffect       = 'aumf',   kAudioUnitType_FormatConverter   = 'aufc',   kAudioUnitType_Effect            = 'aufx',   kAudioUnitType_Mixer             = 'aumx',   kAudioUnitType_Panner            = 'aupn',   kAudioUnitType_OfflineEffect     = 'auol',   kAudioUnitType_Generator         = 'augn',};

此類型有四種:

Converter Audio Unit Subtypes  //轉換類型

enum {   kAudioUnitSubType_AUConverter        = 'conv',   kAudioUnitSubType_NewTimePitch       = 'nutp',   kAudioUnitSubType_TimePitch          = 'tmpt',   kAudioUnitSubType_DeferredRenderer   = 'defr',   kAudioUnitSubType_Splitter           = 'splt',   kAudioUnitSubType_Merger             = 'merg',   kAudioUnitSubType_Varispeed          = 'vari',   kAudioUnitSubType_AUipodTime         = 'iptm',   kAudioUnitSubType_AUiPodTimeOther    = 'ipto'};

Effect Audio Unit Subtypes //效果類型。

Effect (digital signal processing) audio unit subtypes for audio units provided by Apple.

enum {   kAudioUnitSubType_PeakLimiter          = 'lmtr',   kAudioUnitSubType_DynamicsProcessor    = 'dcmp',   kAudioUnitSubType_Reverb2              = 'rvb2',   kAudioUnitSubType_LowPassFilter        = 'lpas',   kAudioUnitSubType_HighPassFilter       = 'hpas',   kAudioUnitSubType_BandPassFilter       = 'bpas',   kAudioUnitSubType_HighShelfFilter      = 'hshf',   kAudioUnitSubType_LowShelfFilter       = 'lshf',   kAudioUnitSubType_ParametricEQ         = 'pmeq',   kAudioUnitSubType_Delay                = 'dely',   kAudioUnitSubType_Distortion           = 'dist',   kAudioUnitSubType_AUiPodEQ             = 'ipeq',   kAudioUnitSubType_NBandEQ              = 'nbeq'};

Mixer Audio Unit Subtypes  //混合類型

Audio mixing audio unit subtypes for audio units provided by Apple.

enum {   kAudioUnitSubType_MultiChannelMixer      = 'mcmx',   kAudioUnitSubType_MatrixMixer            = 'mxmx',   kAudioUnitSubType_AU3DMixerEmbedded      = '3dem',};

Input/Output Audio Unit Subtypes  //輸入輸出類型

enum {   kAudioUnitSubType_GenericOutput       = 'genr',   kAudioUnitSubType_RemoteIO            = 'rioc',   kAudioUnitSubType_VoiceProcessingIO   = 'vpio'};

Music Instrument Audio Unit Subtypes

Audio units that can be played as musical instruments via MIDI control.

enum {   kAudioUnitSubType_Sampler   = 'samp'};

AudioUnitScope

typedef UInt32 AudioUnitScope;// AudioUnitScope 類型為UInt32

enum {   kAudioUnitScope_Global = 0,   kAudioUnitScope_Input  = 1,   kAudioUnitScope_Output = 2,   kAudioUnitScope_Group  = 3,   kAudioUnitScope_Part   = 4,   kAudioUnitScope_Note   = 5};


 

AudioUnitElement

  

typedef UInt32 AudioUnitElement;  //AudioUnitElement 類型為UInt32

AudioUnitElement 根據Scope值來設定,在輸入輸出scope時,他根據硬件的數字信號緩沖區來確定。Global scope恒為0.



Channels
core Audio SDK 中用Buffer 來代替Channel


多個buffers 可以用bufferlist



stream format


AudioUnitParameter

struct AudioUnitParameter {   AudioUnit             mAudioUnit;   AudioUnitParameterID  mParameterID;   AudioUnitScope        mScope;   AudioUnitElement      mElement;};typedef struct AudioUnitParameter AudioUnitParameter; //結構類型

有Setter和Getter方法。

 



AudioUnitParameterID

typedef UInt32 AudioUnitParameterID;

AudioUnitParameterValue

typedef Float32 AudioUnitParameterValue;


AudioUnitProperty

 為一個 audio unit用一個key-value 值定義一個 attribute 或者 behavior .

struct AudioUnitProperty {   AudioUnit            mAudioUnit;   AudioUnitPropertyID  mPropertyID;   AudioUnitScope       mScope;   AudioUnitElement     mElement;};typedef struct AudioUnitProperty AudioUnitProperty;
有Setter和Getter方法。

AudioUnitPropertyID

typedef UInt32 AudioUnitPropertyID;



AudioUnitParameterEvent

A scheduled change to an audio unit parameter’s value.

struct AudioUnitParameterEvent {   AudioUnitScope scope;   AudioUnitElement element;   AudioUnitParameterID parameter;   AUParameterEventType eventType;   union {      struct {         SInt32                   startBufferOffset;         UInt32                   durationInFrames;         AudioUnitParameterValue  startValue;         AudioUnitParameterValue  endValue;      } ramp;      struct {         UInt32                   bufferOffset;         AudioUnitParameterValue  value;      } immediate;   } eventValues;};typedef struct AudioUnitParameterEvent AudioUnitParameterEvent;


Audio Unit Parameter Event Types

Audio unit parameter event types.

enum {   kParameterEvent_Immediate = 1,   kParameterEvent_Ramped    = 2};typedef UInt32 AUParameterEventType;



Audio Unit Render Flags

 配置 audio unit rendering 標記

enum {   kAudioUnitRenderAction_PreRender            = (1 << 2),   kAudioUnitRenderAction_PostRender           = (1 << 3),   kAudioUnitRenderAction_OutputIsSilence      = (1 << 4),   kAudioOfflineUnitRenderAction_Preflight     = (1 << 5),   kAudioOfflineUnitRenderAction_Render        = (1 << 6),   kAudioOfflineUnitRenderAction_Complete      = (1 << 7),   kAudioUnitRenderAction_PostRenderError      = (1 << 8),   kAudioUnitRenderAction_DoNotCheckRenderArgs = (1 << 9)};typedef UInt32 AudioUnitRenderActionFlags;


General Audio Unit Function Selectors

相應audio unit單元組成,產生 audio unit 組成方法。

enum {   kAudioUnitRange                                     = 0x0000,   kAudioUnitInitializeSelect                          = 0x0001,   kAudioUnitUninitializeSelect                        = 0x0002,   kAudioUnitGetPropertyInfoSelect                     = 0x0003,   kAudioUnitGetPropertySelect                         = 0x0004,   kAudioUnitSetPropertySelect                         = 0x0005,   kAudioUnitAddPropertyListenerSelect                 = 0x000A,   kAudioUnitRemovePropertyListenerSelect              = 0x000B,   kAudioUnitRemovePropertyListenerWithUserDataSelect  = 0x0012,   kAudioUnitAddRenderNotifySelect                     = 0x000F,   kAudioUnitRemoveRenderNotifySelect                  = 0x0010,   kAudioUnitGetParameterSelect                        = 0x0006,   kAudioUnitSetParameterSelect                        = 0x0007,   kAudioUnitScheduleParametersselect                  = 0x0011,   kAudioUnitRenderSelect                              = 0x000E,   kAudioUnitResetSelect                               = 0x0009,   kAudioUnitComplexRenderSelect                       = 0x0013,   kAudioUnitProcessSelect                             = 0x0014,   kAudioUnitProcessMultipleSelect                     = 0x0015};

常量

 

Result Codes 結果碼

 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品视频网上网址在线观看| 欧美激情久久久久| 欧美激情videoshd| 北条麻妃一区二区在线观看| 国内精品久久久久久| 国产成人鲁鲁免费视频a| 亚洲欧美中文日韩v在线观看| 欧美亚洲视频在线看网址| 久久九九有精品国产23| 国产亚洲综合久久| 国产亚洲人成a一在线v站| 成人欧美一区二区三区黑人| 黑人巨大精品欧美一区二区| 久久中文字幕在线视频| 国产丝袜一区视频在线观看| 中文在线资源观看视频网站免费不卡| 欧美午夜视频在线观看| 国产精品成人一区二区| 日韩激情av在线免费观看| 最新日韩中文字幕| 精品国产电影一区| 亚洲自拍偷拍第一页| 日韩中文字幕第一页| 69视频在线播放| 日韩女优人人人人射在线视频| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产精品欧美亚洲777777| 国产精品第2页| 国产一区二区在线免费视频| 久久久在线免费观看| 日韩欧美在线视频免费观看| 亚洲色图第一页| 欧美激情精品久久久久久变态| 久久精品国产亚洲精品2020| 97视频免费在线观看| 欧美亚洲日本网站| x99av成人免费| 91久久国产精品91久久性色| 国产精品手机播放| 久久久久久免费精品| 亚洲免费中文字幕| 日韩av中文字幕在线免费观看| 日韩欧美视频一区二区三区| 91久久国产精品| 疯狂做受xxxx欧美肥白少妇| 日韩免费电影在线观看| 91在线色戒在线| 精品久久久国产| 91av视频在线观看| 91精品国产免费久久久久久| 欧美与欧洲交xxxx免费观看| 日韩中文字幕视频在线| 最好看的2019的中文字幕视频| 国产精品黄视频| 久久免费视频观看| 日韩在线观看免费av| 一本一本久久a久久精品综合小说| 亚洲91av视频| 亚洲午夜激情免费视频| xxxxxxxxx欧美| 亚洲欧美国产va在线影院| 欧美一区三区三区高中清蜜桃| 动漫精品一区二区| 国产精品999999| 亚洲色无码播放| 国产啪精品视频网站| 黄色一区二区三区| 热久久美女精品天天吊色| 久久天天躁狠狠躁夜夜躁2014| 国产精品一二三在线| 国产欧美精品一区二区三区介绍| 国产精品小说在线| 一区二区欧美日韩视频| 久久久精品国产| 操人视频在线观看欧美| 国产精品久久久久久久久| 欧美精品一区在线播放| 亚洲激情免费观看| 国产一区二区精品丝袜| 成人久久精品视频| 91精品国产高清久久久久久| 成人欧美一区二区三区在线| 国产在线观看精品| 日韩黄色高清视频| 成人免费视频在线观看超级碰| 亚洲国产91精品在线观看| 国产精品白丝jk喷水视频一区| 精品无人区乱码1区2区3区在线| 欧美裸体xxxx极品少妇软件| 欧美极品第一页| 欧美成人精品xxx| 久久综合网hezyo| 中文字幕久热精品视频在线| 热99精品里视频精品| 精品国产户外野外| 国产成人福利视频| 亚洲一区美女视频在线观看免费| 亚洲综合在线中文字幕| 亚洲欧洲激情在线| 日韩中文字幕在线| 欧美性生交大片免网| 亚洲一区久久久| 日韩欧美国产中文字幕| 久久艳片www.17c.com| 伊人一区二区三区久久精品| 日韩网站免费观看高清| 亚洲福利视频久久| 亚洲免费精彩视频| 欧美性xxxxx极品| 色小说视频一区| 九九精品在线视频| 成人妇女淫片aaaa视频| 欧美福利视频网站| 亚洲精品自拍偷拍| 黑人巨大精品欧美一区二区免费| 欧美一级黑人aaaaaaa做受| 亚洲人成在线免费观看| 插插插亚洲综合网| 欧美在线激情视频| 中文字幕不卡av| 久久亚洲精品中文字幕冲田杏梨| 亚洲二区中文字幕| 国产精品丝袜白浆摸在线| 久久久久久久91| 国产精品成人av在线| 91国在线精品国内播放| 亚洲国产欧美精品| 欧美性极品少妇精品网站| 另类专区欧美制服同性| 国产一区二区三区网站| 亚洲国产日韩欧美在线动漫| 欧美性猛交xxxxx水多| 欧美日韩国产成人高清视频| 国产精品久久中文| 亚洲精品99999| 91在线视频一区| 国产欧美精品在线| 成人福利在线视频| 亚洲精品永久免费精品| 亚洲欧美在线第一页| 欧美色另类天堂2015| 亚洲网在线观看| 欧美日韩免费区域视频在线观看| 在线看国产精品| 中日韩美女免费视频网站在线观看| 欧美孕妇孕交黑巨大网站| 日韩欧美亚洲综合| 欧美插天视频在线播放| 97久久精品视频| 久久久久久999| 日韩中文在线中文网在线观看| 伊人青青综合网站| 欧洲美女7788成人免费视频| 欧美午夜视频一区二区| 欧美成人黑人xx视频免费观看| 国产精品久久久久久久一区探花| 日本一欧美一欧美一亚洲视频| 性夜试看影院91社区| 69国产精品成人在线播放| 国产精品久久久久99| 日韩av在线看| 欧美电影免费观看大全| 国产69久久精品成人| 亚洲福利视频网|