我的目标是制作一个从麦克风捕获音频的应用程序,然后将其传递给带通滤波器并乘以一些增益,然后将结果实时输出到扬声器
,因此我在 Superpowered SDK 中编辑了 FrequencyDomain.cpp 示例以匹配我的目的,我尝试了这段代码,但我听不到输出音频,我的代码中缺少什么?
static SuperpoweredFrequencyDomain *frequencyDomain;
static float *inputBufferFloat;
// This is called periodically by the media server.
static bool audioProcessing(void * __unused clientdata, short int
*audioInputOutput, int numberOfSamples, int __unused samplerate) {
// Creating the filter.
SuperpoweredFilter *filter = new
SuperpoweredFilter(SuperpoweredFilter_Resonant_Lowpass, samplerate);
filter->setResonantParameters(1000.0f, 0.1f);
filter->enable(true);
filter->process(stereoBuffer, stereoBuffer, numberOfSamples);
SuperpoweredShortIntToFloat(audioInputOutput, inputBufferFloat, (unsigned int)numberOfSamples); // Converting the 16-bit integer samples to 32-bit floating point.
}
extern "C" JNIEXPORT void
Java_com_superpowered_frequencydomain_MainActivity_FrequencyDomain(JNIEnv *
__unused javaEnvironment, jobject __unused obj, jint samplerate, jint buffersize) {
inputBufferFloat = (float *)malloc(buffersize * sizeof(float) * 2 + 128);
SuperpoweredCPU::setSustainedPerformanceMode(true);
new SuperpoweredAndroidAudioIO(samplerate, buffersize, true, true, audioProcessing, NULL, -1, SL_ANDROID_STREAM_MEDIA, buffersize * 2); // Start audio input/output.
}