gpt4 book ai didi

ios - 改变非交错浮点的间距

转载 作者:行者123 更新时间:2023-12-03 02:02:47 25 4
gpt4 key购买 nike

我知道如何在 CoreAudio 中改变音频的音高,但由于某种原因,当我处理非交错数据时,我只能改变一个 channel 。如果我尝试同时切换左右声道,声音就会变得断断续续。我似乎无法理解为什么它会这样。

我在渲染回调中有这段代码:

        [output.outputDataSource output:output shouldFillAudioBufferList:ioData withNumberOfFrames:inNumberFrames];//<-puts audio file frames in ioData w/ EZAudio
int channelCount = output.outputASBD.mFormatFlags & kAudioFormatFlagIsNonInterleaved ? ioData->mNumberBuffers : ioData->mBuffers[0].mNumberChannels;
int frameSize = ioData->mBuffers[0].mDataByteSize / ((output.outputASBD.mBitsPerChannel/8) * channelCount);
UInt32 frames = AEFloatConverterToFloat(_floatConverter,ioData,_floatBuffers,frameSize);
float *left = ((float **) _floatBuffers)[0];
float *right = ((float **) _floatBuffers)[1];
smbPitchShift(0.5, frames, 1024, 4, 44100, left, left);
smbPitchShift(0.5, frames, 1024, 4, 44100, right, right);//<- If I take this out the left side sounds okay. vice-versa
AEFloatConverterFromFloat(_floatConverter, _floatBuffers, ioData, frameSize);

音高变换功能也在这里 -> http://blogs.zynaptiq.com/bernsee/repo/smbPitchShift.cpp

最佳答案

frameSize 变量是怎么回事?你能不相信NumberFrames吗?无论哪种方式,我都会检查 inNumberFrames、frameSize 和 frames 对于您的转换是否都是一致的。您还在上次转换时使用 frameSize 而不是帧。如果两个 channel 都受到影响,我猜你的转换器有问题。

关于ios - 改变非交错浮点的间距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30137090/

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