我正在开发一个使用简单音高感知的应用程序,它在 Xcode 模拟器中运行良好。该应用程序在 iPhone 4 中加载,我可以浏览该应用程序,但没有显示输出。我已经开始调试,发现当我将 Sint16 转换为 float 时出现溢出错误。我试过 vDSP 和一个简单的循环。
简化代码 n=1536
sampleBuffer = (SInt16*) malloc(n);
floatSamples = (float*) malloc(sizeof(float)*n);
// Convert SInt 16 to float
for(int i = 0; i<n; i++) {
floatSamples[i] = (float)samples[i];
}
//vDSP_vflt16(samples,1,floatSamples,1,n);
这导致
-0.000000 -0.000000 -0.000000 964957789008661674961361960960.000000 -5629971079108504200413184.000000 -inf 35116851871418647838720.000000 -inf 0.000000 0.000000 0.000000 -1233.760620 288987875649316726325339192557568.000000 -0.000000 -0.000000 -0.000000 -7508525217561044282816045485425426432.000000 -656399043038732589927376093184.000000 0.000000 -0.000053 9470091451011432448.000000 -24555002
vDSP 的类似结果
在 iPhone 4s 上的模拟器中一切正常,所有 vDSP 计算工作。
iPhone 在 MacBook Pro 上运行 ios7.1.2 和 xCode 6。
真的只是在寻找线索。