2011-11-21 56 views
0

我的Mac OS X的應用程序,我想知道如何端口的代碼下一塊用於iPhone:我端口的Mac OS X應用程序到iPhone

AudioObjectPropertyAddress addr; 
    addr.mSelector = kAudioDevicePropertyBufferFrameSize; 
    addr.mScope = kAudioDevicePropertyScopeOutput; 
    addr.mElement = kAudioObjectPropertyElementWildcard; 

    uint32_t size = sizeof(uint32_t); 
    uint32_t buff_size = 0; 
    if(AudioObjectGetPropertyData(devId, &addr, 0, 0, 
          &size, &buff_size) == noErr) 
     return buff_size; 

認爲音頻會議服務將是有益的在這種情況下,但我找不到函數讓我在參考中獲得緩衝區的大小。

+1

請給出有關該問題的更多信息。哪部分代碼不適用於iPhone版本?你是否得到任何編譯器錯誤? – jrturton

回答

1

如果您使用Audio Queue API,則使用AudioQueueAllocateBuffer()提供您確定大小的緩衝區。 (請注意,這些AQ緩衝區可能從不同且不透明大小的音頻驅動程序緩衝區填充。)

如果使用RemoteIO音頻單元,OS決定實際的緩衝區大小,OS可以更改緩衝區大小在運行時,並且您的音頻回調必須足夠靈活以處理給定的緩衝區大小,即使大小從回調變爲回調。

對於RemoteIO,您可以使用以下方法請求首選緩衝區大小:AudioSessionSetProperty with kAudioSessionProperty_PreferredHardwareIOBufferDuration。你必須將大小轉換爲等效的時間(根據你的採樣率等)。但是這個請求可能會或不會被iOS所承認。

相關問題