2011-08-12 4 views
1

)ヘッドセットマイクを通してサウンドを録音し、ヘッドフォンを通して再生するコアオーディオを使用してオーディオ処理アプリケーションを開発しています。ステレオヘッドフォンを使用していても、ステレオ再生はモノラルに変換されます(

天びんの機能を追加しました。再生を1つの耳にのみシフトします。

これは、私がそれをテストしたiPodとiPhoneで完全に動作します。しかし、iPadではない。 iPadでは音の位置はまったく変わりません。

これは、オーディオ出力をレンダリングするために使用されるコードです:

static OSStatus renderInput(void *inRefCon, AudioUnitRenderActionFlags *ioActionFlags, const AudioTimeStamp *inTimeStamp, UInt32 inBusNumber, UInt32 inNumberFrames, AudioBufferList *ioData) 
{ 
    // Get a pointer to the dataBuffer of the AudioBufferList 
    AudioBuffer firstBuffer = ioData->mBuffers[0]; 
    AudioSampleType *outA = (AudioSampleType *)firstBuffer.mData; 
    int numChannels = firstBuffer.mNumberChannels; 
    NSLog(@"numChannels = %d, left = %d, right = %d", numChannels, leftBalVolume, rightBalVolume); 
    // Loop through the callback buffer, generating samples 
    for (UInt32 i = 0; i < inNumberFrames * numChannels; i += numChannels) {   
     int outSignal = getFilteredSampleData(sampleDataTail); 
     outA[i] = (outSignal * leftBalVolume)/32768; 
     if (numChannels > 1) { 
      outA[i + 1] = (outSignal * rightBalVolume)/32768;  
     } 
     sampleDataTail = (sampleDataTail + 1) % sampleDataLen; 
    } 
    return noErr; 
} 

次のようにのNSLogからの出力は次のとおりです。

numChannels = 2, left = 16557, right = 32767 

...それは基本的にステレオで動作していることを私に告げますモードでは、私はオーディオを少し右に聞いてください。しかし、たとえそれを100%右に置いても、私はまだ両イヤホンで同じ音量の中間のオーディオを聞いています。

明らかに、iPad 2はオーディオ信号をモノラルにミックスしてから、両方のイヤホンで再生します。 iPadにはスピーカーが1つしかないので、通常はモノラルにミックスすることになるかもしれないと思っていましたが、ステレオヘッドフォンが接続されていても、それはなぜですか?

ご協力いただきありがとうございます。

+0

をしているようです:これはAudioStreamBasicDescriptionです:2 ch、22050 Hz、 'lpcm'(0x0000000C)16ビットのリトルエンディアン符号付き整数 –

答えて

2

は犯人が見つかりました:

私はミキサーの出力のStreamFormat記述子に

desc.SetAUCanonical(1, true); 

と呼ばれてきました。今、私はすべてのプロパティの値を設定していて、それは同様にiPad上で動作します...

desc.mSampleRate   = kGraphSampleRate; 
desc.mFormatID   = kAudioFormatLinearPCM; 
desc.mFormatFlags  = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked; 
desc.mFramesPerPacket = 1; 
desc.mChannelsPerFrame = 2; 
desc.mBitsPerChannel  = 16; 
desc.mBytesPerPacket  = 4; 
desc.mBytesPerFrame  = 4; 

SetAUCanonicalがFYI iPod TouchとiPhone対iPadの異なるもの

+0

+1 –

関連する問題