作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我试图将著名的 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/
所以我试图将著名的 smbPitchShift 算法集成到我的项目中,但输入缓冲区和输出缓冲区是相同的。 smbPitchShift 算法不会改变缓冲区中的样本。 这是我在渲染后回调中所做的: OSS
我在Pascal中找了很长时间这个算法并没有找到,我只在C++中找到了它,这令人沮丧。然后我决定将 C++ 代码翻译为 Pascal,但是有一些问题我无法解决。出现错误消息“浮点溢出”。我需要帮助才能
我是一名优秀的程序员,十分优秀!