audio - SuperpoweredFloatToShortIntInterleave可以用于处理设备中的媒体播放吗?

标签 audio native superpowered

我在了解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/

相关文章:

Android中间件c程序: Unable to create directory,只读文件系统

java - gradle 中的原生依赖

在moviepy中组合音频剪辑时的音频帧重复

jquery - jQuery更改了HTML音频src,但先前的文件正在FF和Chrome中播放

jquery - 使用 jQuery 设置 HTML5 音频的属性音量不起作用

react-native - React Native (0.59.10) — 如何在运行测试时删除 `useNativeDriver`(但不是在实际应用程序中)

java - Android NDK - 引用 JNIEnv 从 C++ 调用 Java

java - 从 Superpowered SDK 回调中调用 Java 函数

c++ - 带通 FIR 滤波器