int Mix_RegisterEffect(int chan, Mix_EffectFunc_t f, Mix_EffectDone_t d, void *arg)
channelにエフェクトをつける後処理を行う処理関数fをフックする. 読み込んだデータを単に表示する処理や, ストリームにエコーをつける処理などを行える. 多くの処理関数は状態データの領域を確保する必要がある. その場合はargポインタに保存するとよい. 処理関数を使い終えたとき, 処理関数のargの領域のデータに対して終了処理を行う関数dが呼ばれる. このエフェクトはリンクされたリスト構造になっていて, 常に末尾に追加される. つまり, 前に登録されたエフェクトの出力が次の入力になる. エフェクトは何度でも追加できる. エフェクトはこのように連なっている.
戻り値: チャネルが存在しないなど失敗のとき0(偽)
// 何もせず素通りする関数を作る
void noEffect(int chan, void *stream, int len, void *udata)
{
// ここにストリームの処理を書ける...
}
...
// 何もしない後処理を登録する
if(!Mix_RegisterEffect(MIX_CHANNEL_POST, noEffect, NULL, NULL)) {
printf("Mix_RegisterEffect: %s¥n", Mix_GetError());
}