typedef void (SDLCALL *MIX_GroupMixCallback)(void *userdata, MIX_Group *group, const SDL_AudioSpec *spec, float *pcm, int samples);
| void * | userdata | アプリケーションが私的利用のために渡した不透明ポインタ |
| MIX_Group * | group | ミックスされたグループ |
| const SDL_AudioSpec * | spec | pcmのデータの形式 |
| float * | pcm | 32ビット浮動小数点形式の生PCMデータ |
| int | samples | pcmの浮動小数点の値の数 |
このコールバックはミキシンググループのミックスが完了したとき呼ばれる: グループ内と全てのトラックは1つのバッファにミックスされ, 最終的な出力のミックスのための他の全てのグループとのミックスが準備される.
このプッシュされたオーディオデータは定数データではない. アプリケーションは自由に変更することができ, その変更はミキシングパイプラインに伝えられる.
audiospecが提供される.
グループが異なると形式も異なる場合があり, アプリケーションがこれに対処できるようにする必要があるが, SDL_mixerは入力や最終的な出力が浮動小数点でない場合でも常に32ビット浮動小数点でミキシング処理を行う.
そのため, spec->formatは常にSDL_AUDIO_F32で, pcmは浮動小数点でハードコードされている.
samplesはpcmの浮動小数点の値の数で, サンプルフレーム数ではない.
一度のコールバックでのサンプルの数には保証がなく, その数は様々な要因により呼び出しのたびに大きく変化する可能性がある.
この関数はどのスレッドからも安全に呼べる.