【问题标题】:FMOD how to use DSP getParameter function in C?FMOD如何在C中使用DSP getParameter函数?
【发布时间】:2012-08-22 06:11:55
【问题描述】:

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

【问题讨论】:

    标签: c parameters signal-processing fmod getparameter


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 是的。我这样做了,但我没有读到你的答案。反正thx很多。对我来说很好的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多