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) に書き込みたいのですが、書き込み先のメモリが与えられておらず、初期化されていない値だけであるということです。

これは、代わりに「float freq」として使用する方がよいでしょう。その後、fmod 関数呼び出し内で &freq を使用します。

valueStr でも同じことを行いました。長さは 16 だと言いましたが、0 バイト ("") のメモリしか与えませんでした。代わりに char valueStr[16] を使用してください。ちなみに、あなたはそれで何もしないので、なぜ何かを渡すのですか。関数の最後の 2 つのパラメーターに 0,0 を使用するだけです。

また、return *freq; ではなく、return freq を調整して使用する必要があります。

于 2012-08-26T10:13:17.903 に答える