我正在使用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;
}
答案 0 :(得分:0)
问题是FMOD函数想要写入你传递它的指针(即freq),但你没有给它任何内存写入,只是一个未初始化的值。
相反,这会更好地作为'float freq',然后你在fmod函数调用中使用& freq。
你也用valueStr完成了同样的事情。你说长度是16,但你只给了0字节(“”)的内存。 请改用char valueStr [16]。顺便说一句,你没有做任何事情,所以为什么要通过任何东西。只需使用0,0作为函数的最后两个参数。
您还必须调整并使用return freq,而不是返回* freq;