我正在为 iPad 编写一个 VOIP 应用程序(目前针对 2&3)。
我最初使用音频单元 API 编写音频代码,带有一个 kAudioUnitSubtype_RemoteIO 单元。这运作良好,但不出所料,回声是一个问题。我尝试通过切换到使用 kAudioUnitSubType_VoiceProcessingIO 单元来使用内置的回声抑制。这在 iOS 6 (iPad 3) 上运行良好,但在 iOS 5.1 (iPad 2) 上的相同代码会在麦克风输入上产生白噪声。
文档只是提到它应该在 iOS 3.0 及更高版本中可用
iOS 版本似乎是这里的重要区别。我尝试在两台 iPhone 4S 上运行该应用程序,一台运行 iOS 6,听起来不错,一台运行 iOS 5.1,听起来像白噪声。
我的 ASBD 如下所示:
typedef int16_t sample_t;
#define AUDIO_BUFFER_SAMPLE_RATE 48000
#define FORMAT_FLAGS (kAudioFormatFlagsIsSignedInteger | kAudioFormatFlagsIsNonInterleaved)
#define CHANNELS_PER_FRAME 1
...
const size_t bytes_per_sample = sizeof(sample_t);
const int eight_bits_per_byte = 8;
AudioStreamBasicDescription streamFormat;
streamFormat.mFormatID = kAudioFormatLinearPCM;
streamFormat.mSampleRate = AUDIO_BUFFER_SAMPLE_RATE;
streamFormat.mFormatFlags = FORMAT_FLAGS;
streamFormat.mChannelsPerFrame = CHANNELS_PER_FRAME;
streamFormat.mBytesPerFrame = bytes_per_sample * CHANNELS_PER_FRAME;
streamFormat.mBitsPerChannel = bytes_per_sample * eight_bits_per_byte;
streamFormat.mFramesPerPacket = 1;
streamFormat.mBytesPerPacket = streamFormat.mBytesPerFrame * streamFormat.mFramesPerPacket;
streamFormat.mReserved = 0;
有没有人让 kAudioUnitSubType_VoiceProcessingIO 在 iOS 5.1 上工作?
有谁知道这个 IO 的任何严肃文档?