2011-04-27 32 views
1

我正在使用NSTimer從iphone更新峯值功率。從監控來看,它不會更新得非常快。我需要以100微秒(100us)的順序更新峯值功率的高頻率。我也試着用100(100)每100us更新一次。還是很慢。有人能幫我指出如何實現這一目標嗎?我想我需要使用此代碼來測量距離。謝謝。peakpowerforchannel更新更快

回答

0

您捕獲音頻(記錄,輸入或文件),從pcm cbr(未壓縮,具有固定採樣率)的數據流訪問其樣本,並讀取您感興趣的範圍樣本。頻率,您只需分析少量樣本(2-5,取決於採樣率)。您可能需要進行插值以提高準確性,但只需要很少的樣本。

+0

謝謝。爲了能夠讀取您提到的pcm cbr流,這是否意味着我必須學習「音頻隊列緩衝區和AudioQueueLevelMeterState」以獲得更快的採樣? – BleakBox 2011-04-27 10:03:16

+0

AudioQueue是一種可能的方法。要讀取輸入樣本,您可以從傳遞到您的AudioQueueInputCallback函數的'AudioQueueBufferRef'的'mAudioData'字段中訪問它們。電平表狀態不太可能提供您需要的粒度。所以您只需從'mAudioData'字段中讀取您感興趣的輸入樣本即可。根據頻率近似距離,您需要知道輸入採樣的採樣率,有一些同步參考,並確定iostream的IO延遲。音頻隊列需要較高的延遲(續) – justin 2011-04-27 11:24:15

+0

(續)因此,您可能需要將音頻隊列降至較低級別的CoreAudio apis,以實現最低的延遲io - 如果這是一個問題。 – justin 2011-04-27 11:25:25