我正在与音频单元RemoteIO的工作,以获得一个低延迟音频输出。我的问题是AFAIK音频单元只接受几种音频格式,这取决于硬件。我的问题是,我有一个C++ DSP声音引擎,它与浮动交织PCM工作。我不想实现格式转换器,因为它可以在远程IO回调中减慢速度。我尝试获得具有以下格式的低延迟音频单元:
AudioStreamBasicDescription const audioDescription = {
.mSampleRate = defaultSampleRate,
.mFormatID = kAudioFormatLinearPCM,
.mFormatFlags = kAudioFormatFlagIsFloat,
.mBytesPerPacket = defaultSampleRate * STEREO_CHANNEL,
.mFramesPerPacket = 1,
.mBytesPerFrame = STEREO_CHANNEL * sizeof(Float32),
.mChannelsPerFrame = STEREO_CHANNEL,
.mBitsPerChannel = 8 * sizeof(Float32),
.mReserved = 0
};
status = AudioUnitSetProperty(audioUnit,
kAudioUnitProperty_StreamFormat,
kAudioUnitScope_Input,
kOutputBus,
&audioDescription,
sizeof(audioDescription));这在错误代码kAudioUnitErr_FormatNotSupported -10868中失败。如果我试图获得一个浮动PCM非交错音频流与以下内容:
AudioStreamBasicDescription const audioDescription = {
.mSampleRate = defaultSampleRate,
.mFormatID = kAudioFormatLinearPCM,
.mFormatFlags = kAudioFormatFlagIsFloat | kAudioFormatFlagIsPacked | kAudioFormatFlagIsNonInterleaved,
.mBytesPerPacket = sizeof(float),
.mFramesPerPacket = 1,
.mBytesPerFrame = sizeof(float),
.mChannelsPerFrame = STEREO_CHANNEL,
.mBitsPerChannel = 8 * sizeof(float),
.mReserved = 0
};
status = AudioUnitSetProperty(audioUnit,
kAudioUnitProperty_StreamFormat,
kAudioUnitScope_Input,
kOutputBus,
&audioDescription,
sizeof(audioDescription));一切都很好。然而,我想获得一个交错的音频流,让我的DSP引擎工作,没有格式转换。这有可能吗?
PS。等待hotpaw2引导我:)
发布于 2021-07-16 21:44:38
您的错误可能是由于这一行:
.mBytesPerPacket = defaultSampleRate * STEREO_CHANNEL,https://stackoverflow.com/questions/68399426
复制相似问题