SuperpoweredFloatToShortIntInterleave可用于处理来自设备的媒体播放吗?

时间:2018-04-01 07:10:27

标签: audio native superpowered

我在理解Superpowered音频输出处理方面遇到了一些问题。当我使用SuperpoweredFloatToShortInt输入缓冲区时,一切都很好;

buffer[n] = (float *)memalign(16, (buffersize + 16) * sizeof(float) * 2);)

然后我意识到我的音频输出一直都是单声道,所以我决定使用SuperpoweredFloatToShortIntInterleave处理我的输出来发出环绕立体声效果。使用相同的缓冲区[n]变量,我的音频得到处理,但在设备上进行测试时失真并低音低音。

我也尝试过将单独的缓冲变量作为学习here 用这些:

inputBufferFloat = (float *)malloc(buffersize * sizeof(float) * 2 + 128);
 leftInputBuffer = (float *)malloc(buffersize * sizeof(float) + 128);
 rightInputBuffer = (float *)malloc(buffersize * sizeof(float) + 128);
 leftOutputBuffer = (float *)malloc(buffersize * sizeof(float) + 128);
 rightOutputBuffer = (float *)malloc(buffersize * sizeof(float) + 128)


static bool audioProcessing(void * __unused clientdata, short int *audioInputOutput, int numberOfSamples, int 
__unused samplerate) {
 SuperpoweredShortIntToFloat(audioInputOutput, inputBufferFloat, numberOfSamples, 2);
 SuperpoweredDeInterleave(inputBufferFloat, leftInputBuffer, rightInputBuffer, numberOfSamples);
 FIR(leftInputBuffer, leftOutputBuffer, numberOfSamples);
 FIR(rightInputBuffer, rightOutputBuffer, numberOfSamples);
 SuperpoweredFloatToShortIntInterleave(leftOutputBuffer, rightOutputBuffer, audioInputOutput, 
numberOfSamples);
 return true;
}

但该应用程序在测试时立即崩溃。请,任何帮助都将非常感谢。 感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用不同的“buffersize”设置音频I / O,例如“buffersize”乘以2。在这种情况下,你的“numberOfSamples”将是两倍大,而你的缓冲区不够大。