0

我正在使用 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;
}
4

1 回答 1

0

问题是 FMOD 函数想要写入您传递给它的指针(即 freq),但您没有给它任何要写入的内存,只是一个未初始化的值。

最好将其用作“浮点频率”,然后在 fmod 函数调用中使用 &freq 。

您也对 valueStr 做了同样的事情。你说长度是 16,但你只给了它 0 个字节(“”)的内存。请改用 char valueStr[16]。顺便说一句,你不做任何事情,所以为什么要传递任何东西。只需将 0,0 用于函数的最后 2 个参数。

您还必须调整和使用 return freq,而不是 return *freq;

于 2012-08-26T10:13:17.903 回答