Iphone AudioQueueGetProperty返回的值超出kAudioQueueProperty_CurrentLevelMeter属性的范围
我正在编写一个应用程序,它要求用户处于一个安静的环境中。为此,我定期检查麦克风的功率读数。(我知道返回值的单位是dBFS,或者在本例中是间隔[0,1]中的浮点值。) 我的问题是下面的代码工作得很好。。。除非它返回18466064732283753157623808.00000。我没有看到NSLog输出指示AudioQueueGetProperty返回故障。奇怪的值总是提到的值Iphone AudioQueueGetProperty返回的值超出kAudioQueueProperty_CurrentLevelMeter属性的范围,iphone,audioqueueservices,Iphone,Audioqueueservices,我正在编写一个应用程序,它要求用户处于一个安静的环境中。为此,我定期检查麦克风的功率读数。(我知道返回值的单位是dBFS,或者在本例中是间隔[0,1]中的浮点值。) 我的问题是下面的代码工作得很好。。。除非它返回18466064732283753157623808.00000。我没有看到NSLog输出指示AudioQueueGetProperty返回故障。奇怪的值总是提到的值 -(float)instantaneousPeakPower { UInt32 dataSize = sizeof(
-(float)instantaneousPeakPower {
UInt32 dataSize = sizeof(AudioQueueLevelMeterState) * recordFormat.mChannelsPerFrame;
AudioQueueLevelMeterState *levels = (AudioQueueLevelMeterState*)malloc(dataSize);
OSStatus rc = AudioQueueGetProperty(audioQueue, kAudioQueueProperty_CurrentLevelMeter, levels, &dataSize);
if (rc) {
NSLog(@"NoiseLeveMeter>>takeSample - AudioQueueGetProperty(CurrentLevelMeter) returned %@", rc);
}
float channelAvg = 0;
for (int i = 0; i < recordFormat.mChannelsPerFrame; i++) {
channelAvg += levels[i].mPeakPower;
}
free(levels);
// This works because in this particular case one channel always has an mAveragePower of 0.
return channelAvg;
}
-(浮点)瞬时峰值功率{
UInt32 dataSize=sizeof(AudioQueueLevelMeterState)*recordFormat.mChannelsPerFrame;
AudioQueueLevelMeterState*级别=(AudioQueueLevelMeterState*)malloc(数据大小);
OSStatus rc=AudioQueueGetProperty(audioQueue、kAudioQueueProperty_CurrentLevelMeter、Level和dataSize);
if(rc){
NSLog(@“NoiseLeveMeter>>采样-AudioQueueGetProperty(CurrentLevelMeter)返回%@),rc);
}
浮动通道平均值=0;
对于(int i=0;i
有什么好处?值的位模式是否提供了线索?是否启用了音频电平测量
UInt32 trueValue = true;
AudioQueueSetProperty(audioQueue,kAudioQueueProperty_EnableLevelMetering,&trueValue,sizeof (UInt32));
您是否启用了音频电平计量
UInt32 trueValue = true;
AudioQueueSetProperty(audioQueue,kAudioQueueProperty_EnableLevelMetering,&trueValue,sizeof (UInt32));
至少你回答了我现在还没有被问到的问题!谢谢你回答了我现在还没有被问到的问题!谢谢