日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

音频单元组件服务参考(Audio Unit Component Services Reference)

發布時間:2024/3/7 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 音频单元组件服务参考(Audio Unit Component Services Reference) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://www.cnblogs.com/try2do-neo/p/3278459.html

音頻單元組件服務參考(Audio Unit Component Services Reference)

目錄

  了解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 Unit Component Services Reference中。

任務函數(function by tasks)

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

初始化或者渲染音頻:

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

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_GlobalAudioUnitElement 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.Channelscore Audio SDK 中用Buffer 來代替Channel 多個buffers 可以用bufferliststream 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 結果碼

?

?


總結

以上是生活随笔為你收集整理的音频单元组件服务参考(Audio Unit Component Services Reference)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。