我正在开发的iOS应用程序,使用该RemoteIO音频单元,从麦克风,并处理和输出到扬声器(耳机)录制音频。 目前我使用的输入和输出的单声道(单声道)。
我今天准备这样做,是为了让用户选择一个输出扬声器:左只,右只或两者兼而有之。 我当前的代码只支持“两”设置 - 同样的声音是从两个扬声器来。
以下是我设置的输入和输出总线的流格式(kAudioUnitProperty_StreamFormat):
AudioStreamBasicDescription ASBD = {0};
size_t bytesPerSample = sizeof(SInt16);
ASBD.mFormatID = kAudioFormatLinearPCM;
ASBD.mFormatFlags = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked;
ASBD.mSampleRate = 44100;
ASBD.mFramesPerPacket = 1;
ASBD.mBytesPerFrame = bytesPerSample;
ASBD.mBytesPerPacket = bytesPerSample;
ASBD.mBitsPerChannel = 8 * bytesPerSample;
ASBD.mChannelsPerFrame = 1;
和我的渲染回调(kAudioUnitProperty_SetRenderCallback)看起来大致是这样的:
AudioUnitRender(remoteIO, ioActionFlags, inTimeStamp, inputBus, inNumberFrames, ioData);
SInt16 *renderBuffer = ioData->mBuffers[0].mData;
// Process renderBuffer and modify the samples
什么是执行左/只右只设置最简单的方法? 我不介意改变设备的设置,如果有任何相关信息。