来自远程 I/O 单元的原始音频数据的测量单位是什么?
What is the unit of measurement of raw audio data from Remote I/O unit?
我正在使用远程 I/O 装置录制原始音频数据,如下所示:
static OSStatus performRender(void *inRefCon,
AudioUnitRenderActionFlags *ioActionFlags,
const AudioTimeStamp *inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList *ioData)
{
OSStatus err = noErr;
if (*callbackStruct.audioChainIsBeingReconstructed == NO)
{
err = AudioUnitRender(callbackStruct.rioUnit, ioActionFlags, inTimeStamp, 1, inNumberFrames, ioData);
{
[callbackStruct.bufferManager CopyAudioDataToDrawBuffer:(Float32 *)ioData->mBuffers[0].mData frames:inNumberFrames];
}
}
return err;
}
这个原始音频数据的计量单位是什么(mBuffers[0].mData,查AudioBuffer结构体是空指针)
是帕斯卡还是毫伏 (mV)?提前致谢。
两者都不是 - 它可能是多种音频数据格式之一,常见的有:
float
值 -1.0 <= x <= 1.0
- 16 位
signed short
值 -32768 < x < 32768
其中最小值和最大值是可以在不裁剪的情况下表示的最小和最大样本值。
为了计算输出电压,您需要确定音频系统其余部分的增益。您可以假设以帕斯卡为单位的 SPL 与输出功率或多或少呈线性关系,输出功率与 V^2
.
成正比
我正在使用远程 I/O 装置录制原始音频数据,如下所示:
static OSStatus performRender(void *inRefCon,
AudioUnitRenderActionFlags *ioActionFlags,
const AudioTimeStamp *inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList *ioData)
{
OSStatus err = noErr;
if (*callbackStruct.audioChainIsBeingReconstructed == NO)
{
err = AudioUnitRender(callbackStruct.rioUnit, ioActionFlags, inTimeStamp, 1, inNumberFrames, ioData);
{
[callbackStruct.bufferManager CopyAudioDataToDrawBuffer:(Float32 *)ioData->mBuffers[0].mData frames:inNumberFrames];
}
}
return err;
}
这个原始音频数据的计量单位是什么(mBuffers[0].mData,查AudioBuffer结构体是空指针)
是帕斯卡还是毫伏 (mV)?提前致谢。
两者都不是 - 它可能是多种音频数据格式之一,常见的有:
float
值-1.0 <= x <= 1.0
- 16 位
signed short
值-32768 < x < 32768
其中最小值和最大值是可以在不裁剪的情况下表示的最小和最大样本值。
为了计算输出电压,您需要确定音频系统其余部分的增益。您可以假设以帕斯卡为单位的 SPL 与输出功率或多或少呈线性关系,输出功率与 V^2
.