bool SDL_MixAudio(Uint8 *dst, const Uint8 *src, SDL_AudioFormat format, Uint32 len, float volume);
| Uint8 * | dst | ミックスされたオーディオデータの書き込み先 |
| const Uint8 * | src | ミックスする元オーディオデータ |
| SDL_AudioFormat | format | オーディオデータの形式を表すSDL_AudioFormat |
| Uint32 | len | オーディオバッファの長さ |
| int | volume | 0.0~1.0のボリューム. 1.0のとき最大 |
(bool) 成功のとき真, 失敗のとき偽を戻す. SDL_GetError()を呼んで詳細を知ることができる.
受け取った形式formatのバイト長lenのオーディオバッファsrcを, ボリュームの調整とオーバーフローのクリップを行い, ミキシングしてdstに書き込む.
dstバッファも, バイト長lenで形式formatの必要がある.
この関数は簡便さのために提供されている -- 自身でオーディオデータをミキシングすることもできる.
この関数を3つ以上のサンプルデータのストリームをミキシングするために使うべきではない. この関数を繰り返し使うと, 出力はクリップによって劣化する. 入力よりも広い範囲に増幅することはないためである(これを行うのは非効率である).
この関数は, コールバック関数の中で出力ストリームにオーディオデータを書き込むために必要だとよく誤解される. それも可能だが, SDL_MixAudio()は1つのオーディオストリームのボリュームを調整してミキシングする場合のみ必要である.
この関数はどのスレッドからも安全に呼べる.