我在了解Superpowered音频输出处理时遇到了一些问题。当我将SuperpoweredFloatToShortInt输入缓冲区用作时,一切都很好。
buffer[n] = (float *)memalign(16, (buffersize + 16) * sizeof(float) * 2);)
然后我意识到我的音频输出一直都是单声道,所以我决定使用SuperpoweredFloatToShortIntInterleave处理我的输出以发出环绕立体声效果。使用相同的buffer [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;
}
但是该应用在测试时立即崩溃。请,所有帮助将不胜感激。
谢谢。
最佳答案
您可以使用不同的“buffersize”来设置音频I / O,例如“buffersize”乘以2。在这种情况下,“numberOfSamples”将是原来的两倍,并且缓冲区不够大。
关于audio - SuperpoweredFloatToShortIntInterleave可以用于处理设备中的媒体播放吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49595675/