2010-12-16 48 views
2

因此,我無法在網上找到任何說我無法做到的事情,但每當我嘗試在iPhone上進行操作時,都會從AudioQueueSetParameter返回錯誤。具體來說,如果我嘗試下面的代碼:在音頻隊列上設置輸入音量

AudioQueueParameterValue val = f; 
XThrowIfError(AudioQueueSetParameter(mQueue, kAudioQueueParam_Volume, val), "set queue volume"); 

然後我得到以下錯誤:kAudioQueueErr_InvalidParameter。 Apple的文檔說這意味着:「指定的參數ID無效」。

但是,如果我在輸出隊列上嘗試相同的確切代碼,它工作得很好。有沒有人有任何想法,爲什麼我可以改變輸出音量,但不輸入?

感謝

回答

1

根據蘋果的音頻隊列服務參考 AudioQueue參數僅適用於播放音頻序列。

要檢索有關輸入流的信息,請嘗試使用AudioQueue屬性。

// streamDescription here means your AudioStreamBasicDescription 
UInt32 levelSize = sizeof(AudioQueueLevelMeterState) * streamDescription.mChannelsPerFrame; 
AudioQueueLevelMeterState *level = (AudioQueueLevelMeterState*)malloc(levelSize); 
if (AudioQueueGetProperty(inQueue, 
          kAudioQueueProperty_CurrentLevelMeter, 
          &levelSize, 
          &level) == noErr) { 
    printf("Current peak: %f", level[0].mPeakPower); 
} 
0

我想你可能只是一些體積係數乘以自己的AudioQueueBuffer S的PCM值以產生一個音量調節。