gpt4 book ai didi

iOS smbPitchShift 不起作用

转载 作者:行者123 更新时间:2023-11-29 12:57:25 24 4
gpt4 key购买 nike

所以我试图将著名的 smbPitchShift 算法集成到我的项目中,但输入缓冲区和输出缓冲区是相同的。 smbPitchShift 算法不会改变缓冲区中的样本。

这是我在渲染后回调中所做的:

OSStatus MyAURenderCallback (void                        *inRefCon,
AudioUnitRenderActionFlags *ioActionFlags,
const AudioTimeStamp *inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList *ioData
)
{
if (*ioActionFlags == kAudioUnitRenderAction_PostRender) {
NSLog(@"render");
SBPitchShifter *self = (__bridge SBPitchShifter *)inRefCon;

float *fBuffer = (float *)(malloc(sizeof(float)*inNumberFrames));

int stride = 2;
vDSP_vflt16((SInt16 *)ioData->mBuffers[0].mData, stride, (float *)fBuffer, stride, inNumberFrames);

smbPitchShift(2.0, inNumberFrames, inNumberFrames, 4, self.linearPCMASBD.mSampleRate, fBuffer, fBuffer);

vDSP_vfixr16((float *)fBuffer, stride, (SInt16 *)ioData->mBuffers[0].mData, stride, inNumberFrames);

free(fBuffer);
}
return noErr;
};

声音播放正常,因为音高将设置为 1。有什么想法吗? :)

最佳答案

我也尝试了 kAudioUnitRenderAction_PreRender 标志,但它没有用。它认为我错误地使用了 Accelerate 框架中的 vDSP 函数。我使用了 AEFloatConverter 并且成功了 ;)

关于iOS smbPitchShift 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20690769/

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