2010-04-07 24 views
0

我想從音頻文件中讀取數據包,但我不想將它們發送到播放緩衝區。我只想得到一組數據包,最好是浮點數。我已經準備好了音頻,然後想打電話:AudioFileReadPackets到數組?

OSStatus err = AudioFileReadPackets (audioFileID,FALSE,outBytes,NULL,0,numPackets,whatGoesHere?); 

但是最後一個參數呢?

謝謝。

回答

1

如果您正在使用音頻隊列服務,那就是將AudioQueueBuffer的mAudioData指針放在哪裏。但是由於您只需要這些位,因此可以將指針傳遞給您選擇的預分配緩衝區(靜態或動態)。您可以通過使用文件中的dataFormat部分來推斷緩衝區所需大小的上限。

這個計算的一個例子在Audio Queue Services Programming Guide; grep爲DeriveBufferSize。

+1

我應該評論你的「outBytes」不是真正的out參數 - 它是一個io參數,這意味着你需要事先將它設置爲緩衝區的容量。如果要讀取的數據超過緩衝區的大小,則會讀取更少的數據包,而其他數據將反映此情況。 – warrenm 2010-04-07 18:10:22