Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone AudioQueueGetProperty返回的值超出kAudioQueueProperty_CurrentLevelMeter属性的范围_Iphone_Audioqueueservices - Fatal编程技术网

Iphone AudioQueueGetProperty返回的值超出kAudioQueueProperty_CurrentLevelMeter属性的范围

Iphone AudioQueueGetProperty返回的值超出kAudioQueueProperty_CurrentLevelMeter属性的范围,iphone,audioqueueservices,Iphone,Audioqueueservices,我正在编写一个应用程序,它要求用户处于一个安静的环境中。为此,我定期检查麦克风的功率读数。(我知道返回值的单位是dBFS,或者在本例中是间隔[0,1]中的浮点值。) 我的问题是下面的代码工作得很好。。。除非它返回18466064732283753157623808.00000。我没有看到NSLog输出指示AudioQueueGetProperty返回故障。奇怪的值总是提到的值 -(float)instantaneousPeakPower { UInt32 dataSize = sizeof(

我正在编写一个应用程序,它要求用户处于一个安静的环境中。为此,我定期检查麦克风的功率读数。(我知道返回值的单位是dBFS,或者在本例中是间隔[0,1]中的浮点值。)

我的问题是下面的代码工作得很好。。。除非它返回18466064732283753157623808.00000。我没有看到NSLog输出指示AudioQueueGetProperty返回故障。奇怪的值总是提到的值

-(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));

至少你回答了我现在还没有被问到的问题!谢谢你回答了我现在还没有被问到的问题!谢谢