gpt4 book ai didi

iphone - 即使使用立体声耳机,立体声播放也会转换为单声道(仅在iPad上)

转载 作者:行者123 更新时间:2023-12-01 19:26:35 27 4
gpt4 key购买 nike

我正在开发一个使用核心音频的音频处理应用程序,该应用程序通过耳机麦克风记录声音并通过耳机播放声音。

我为平衡添加了一个功能,即仅将播放转移到一只耳朵上。

在我测试过的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仅具有一个扬声器,因此通常会混音成单声道的事实有关。但是,即使连接了立体声耳机,为什么也要这样做呢?

任何帮助是极大的赞赏!

最佳答案

找到了罪魁祸首:

我打过电话

desc.SetAUCanonical(1, true);

在混合器的输出的StreamFormat描述符上。现在,我只是为每个属性设置值,它也可以在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在iPad和iPod Touch和iPhone上做不同的事情

关于iphone - 即使使用立体声耳机,立体声播放也会转换为单声道(仅在iPad上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7037058/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com