我正在尝试在Android中构建SoundTouch库。
我在README中遵循了SoundTouch本身编写的指南,但在构建它时仍然遇到此错误:
ct.cpp:238:32: error:
call to 'fabs' is ambiguous
xcorr[offs] += (float) fabs(sum);
此行代码在
BPMDetect.cpp
中,包含以下功能:void BPMDetect::updateXCorr(int process_samples)
{
int offs;
SAMPLETYPE *pBuffer;
assert(buffer->numSamples() >= (uint)(process_samples + windowLen));
pBuffer = buffer->ptrBegin();
// calculate decay factor for xcorr filtering
float xcorr_decay = (float)pow(0.5, 1.0 / (xcorr_decay_time_constant * target_srate / process_samples));
#pragma omp parallel for
for (offs = windowStart; offs < windowLen; offs ++)
{
LONG_SAMPLETYPE sum;
int i;
sum = 0;
for (i = 0; i < process_samples; i ++)
{
sum += pBuffer[i] * pBuffer[i + offs]; // scaling the sub-result shouldn't be necessary
}
xcorr[offs] *= xcorr_decay; // decay 'xcorr' here with suitable time constant.
xcorr[offs] += (float) fabs(sum);
}
}
由于我知道
fabs()
函数包含在math.h
库中,至少在c中,我检查了导入到文件中的以下库:#include <math.h>
#include <assert.h>
#include <string.h>
#include <stdio.h>
仅供引用:由于长度太长,我决定不发布所有代码。但是,如果您需要它,请告诉我,我会立即发布。
最佳答案
您是否在SOUNDTOUCH_INTEGER_SAMPLES
中更改为STTypes.h
(16位)?
就我而言,此配置存在相同的错误。
要解决此问题,您可以尝试将fabs功能更改为实验室,因为LONG_SAMPLETYPE
是16位中的长类型。
关于c++ - Android NDK-SoundTouch中的模糊函数fabs(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46058606/