2012-02-22 6 views
0

SpeakHereクラスからオーディオ入力信号レベルをクラスAQRecorder.mmに取得するメソッドを追加したいとします。 OSStatusインスタンスは "kAudioQueueErr_InvalidPropertyValue"に対応するエラーコードを私に与えます。私はプロパティの定義済みの定数を使用するため、このエラーがどのように起こるか理解できません。どうすればいいのですが、どうしたらこのエラーを修正できますか?iOS AudioQueue:kAudioQueueErr_InvalidPropertyValueプロパティkAudioQueueProperty_CurrentLevelMeter

float AQRecorder::getAveragePower() 
{ 
    assert(mQueue!=NULL); 
    UInt32 expectedSize = sizeof(AudioQueueLevelMeterState); 
    assert(expectedSize>0); 
    AudioQueueLevelMeterState* audioLevels = (AudioQueueLevelMeterState*)malloc(sizeof(AudioQueueLevelMeterState)); 
    OSStatus status = AudioQueueGetProperty(mQueue,kAudioQueueProperty_CurrentLevelMeterDB, audioLevels, &expectedSize); 
    if(status!=noErr) 
    { 
     printf("Error getting the average power: error code %i",status); 
     return 0; 
    } 
    return audioLevels->mAveragePower; 
} 

答えて

3

これはまだ、あなたのaudioqueueのためのレベルメーターを活性化しなかった場合のように聞こえる:

UInt32 val = 1; 
OSStatus status = AudioQueueSetProperty(mQueue, kAudioQueueProperty_EnableLevelMetering, &val, sizeof(UInt32)); 
if(status!=noErr) 
{ 
    printf("Error enabling level metering\n"); 
} 
関連する問題