我正在使用 FMOD。如何在C中使用DSP getParameter函数? 当我使用以下代码时,程序关闭。 我不知道我的代码有什么问题。 当然,我已经实现了DSP setParameter函数。 现在我在 getParameter 函数上遇到了麻烦。 如果有人知道这个问题,请给我提示。
这是我之前尝试过的代码:
float Java_com_chocolate_player_equalizer_EQ_cGetEQCenter(JNIEnv *env, jobject thiz,
int band)
{
FMOD_RESULT result = FMOD_OK;
FMOD_BOOL active = 0;
if(!active){
result = FMOD_System_AddDSP(gSystem, gDSPParameq[band], 0);
}
float * freq;
char * valueStr = "";
int valueStrLength = 16;
result = FMOD_DSP_GetParameter(gDSPParameq[band], FMOD_DSP_PARAMEQ_CENTER, freq,
valueStr, valueStrLength);
return *freq;
}
最佳答案
问题是 FMOD 函数想要写入您传递给它的指针(即 freq),但您没有给它任何可写入的内存,只是一个未初始化的值。
最好将其作为“ float 频率”,然后在 fmod 函数调用中使用 &freq。
您也对 valueStr 做了同样的事情。你说长度是16,但你只给了它0字节(“”)的内存。 请改用 char valueStr[16]。顺便说一句,你没有用它做任何事情,那为什么要传递任何东西呢?只需使用 0,0 作为函数的最后 2 个参数即可。
您还必须调整并使用 return freq,而不是 return *freq;
关于c - FMOD如何在C中使用DSP getParameter函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12067234/