Я разрабатываю приложение для обработки звука с использованием основного звука, которое записывает звуки через микрофон гарнитуры и воспроизводит их через наушники.
Я добавил функцию баланса, то есть, чтобы сместить воспроизведение только на одно ухо.
Это прекрасно работает на 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 есть только один динамик, и поэтому он обычно микшируется в моно ... но почему это происходит, даже если подключены стереонаушники?
Любая помощь очень ценится!