FMOD如何在C中使用DSP getParameter函数?

时间:2012-08-22 06:11:56

标签: c parameters signal-processing fmod getparameter

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

1 个答案:

答案 0 :(得分:0)

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

相反,这会更好地作为'float freq',然后你在fmod函数调用中使用& freq。

你也用valueStr完成了同样的事情。你说长度是16,但你只给了0字节(“”)的内存。 请改用char valueStr [16]。顺便说一句,你没有做任何事情,所以为什么要通过任何东西。只需使用0,0作为函数的最后两个参数。

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