私は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
左のみ/右のみの設定を実装する最も簡単な方法は何でしょうか?何か関係があれば、デバイスの設定を変更してもかまいません。