我正在尝试使用低通滤波器AU。在将流格式设置为过滤器单元时,我不断收到kAudioUnitErr_FormatNotSupported(-10868)错误,但如果我只使用远程IO单元则没有错误。
我正在使用的流格式是(已更新):
myASBD.mSampleRate = hardwareSampleRate;
myASBD.mFormatID = kAudioFormatLinearPCM;
myASBD.mFormatFlags = kAudioFormatFlagIsSignedInteger;
myASBD.mBitsPerChannel = 8 * sizeof(float);
myASBD.mFramesPerPacket = 1;
myASBD.mChannelsPerFrame = 1;
myASBD.mBytesPerPacket = sizeof(float) * myASBD.mFramesPerPacket;
myASBD.mBytesPerFrame = sizeof(float) * myASBD.mChannelsPerFrame;
我正在设置这样的过滤器流:
// Sets input stream type to ASBD
setupErr = AudioUnitSetProperty(filterUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input, 0, &myASBD, sizeof(myASBD));
NSLog(@"Filter in: %i", setupErr);
//NSAssert(setupErr == noErr, @"No ASBD on Finput");
//Sets output stream type to ASBD
setupErr = AudioUnitSetProperty(filterUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Output, 0, &myASBD, sizeof(myASBD));
NSLog(@"Filter out: %i", setupErr);
NSAssert(setupErr == noErr, @"No ASBD on Foutput");
答案 0 :(得分:3)
iOS过滤器音频单元的规范格式是8.24定点(线性PCM),每通道32位,而不是16位。
答案 1 :(得分:2)
使用混响单元的格式是什么?我正在尝试记录缓冲区的奇怪错误....关于这个主题的任何新闻?
答案 2 :(得分:0)
尝试使用规范格式。
size_t bytesPerSample = sizeof (AudioUnitSampleType); //Default is 4 bytes myASBD.mSampleRate = hardwareSampleRate; myASBD.mFormatID = kAudioFormatLinearPCM; myASBD.mFormatFlags = kAudioFormatFlagsAudioUnitCanonical; //Canonical AU format myASBD.mBytesPerPacket = bytesPerSample; myASBD.mFramesPerPacket = 1; myASBD.mBytesPerFrame = bytesPerSample; myASBD.mChannelsPerFrame = 2; //Stereo myASBD.mBitsPerChannel = 8 * bytesPerSample; //32bit integer
您需要确保所有AudioUnits ASBD均匀配置。
如果您正在进行繁重的音频处理,浮动(在iOS5中支持)也不是一个坏主意。
size_t bytesPerSample = sizeof (float); //float is 4 bytes myASBD.mSampleRate = hardwareSampleRate; myASBD.mFormatID = kAudioFormatLinearPCM; myASBD.mFormatFlags = kAudioFormatFlagIsFloat; myASBD.mBytesPerPacket = bytesPerSample; myASBD.mFramesPerPacket = 1; myASBD.mBytesPerFrame = bytesPerSample; myASBD.mChannelsPerFrame = 2; myASBD.mBitsPerChannel = 8 * bytesPerSample; //32bit float