由于来自纯C#背景,我在使用一些Objective C语法时遇到了一些麻烦。我正在使用音频队列,我正在尝试设置InputAudioQueue属性EnableLevelMetering并获取CurrentLevelMeterDB属性。我在Objective C中找到了几个例子。
设置属性:
UInt32 enabledLevelMeter = true;
AudioQueueSetProperty(queue,kAudioQueueProperty_EnableLevelMetering,&enabledLevelMeter,sizeof(UInt32));
获得价值:
AudioQueueLevelMeterState levelMeter;
UInt32 levelMeterSize = sizeof(AudioQueueLevelMeterState);
AudioQueueGetProperty(queue,kAudioQueueProperty_CurrentLevelMeterDB,&levelMeter,&levelMeterSize);
Float32 peakDB = levelMeter.mPeakPower;
Float32 averageDB = levelMeter.mAveragePower;
AudioQueue的API reference非常小。我不确定在C#中使用以下值的内容。
public bool SetProperty (AudioQueueProperty property, int dataSize, IntPtr propertyData)
public IntPtr GetProperty (AudioQueueProperty property, out int size)
有人可以帮助我吗?感谢。
答案 0 :(得分:1)
创建AudioQueue(输入或输出)后,您可以调用:
int enabled = queue.GetProperty<int> (AudioQueueProperty.EnableLevelMetering);
设置它有点烦人,你必须使用:
queue.SetProperty (AudioQueueProperty.EnableLevelMetering, 4, (IntPtr) &enabled);