我正在为 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
实现仅左/仅右设置的最简单方法是什么?如果有任何相关内容,我不介意更改设备设置。