SDL_AudioCVT

Name

SDL_AudioCVT -- オーディオ変換用構造体

Structure Definition

typedef struct{
  int needed;
  Uint16 src_format;
  Uint16 dest_format;
  double rate_incr;
  Uint8 *buf;
  int len;
  int len_cvt;
  int len_mult;
  double len_ratio;
  void (*filters[10])(struct SDL_AudioCVT *cvt, Uint16 format);
  int filter_index;
} SDL_AudioCVT;

Structure Data

needed変換が可能の場合は1がセットされます。
src_format変換元のオーディオフォーマット
dest_format変換先のオーディオフォーマット
rate_incrサンプルレートの増加率
bufオーディオバッファ
len変換元のオーディオバッファの大きさ(バイト単位)
len_cvt変換先のオーディオバッファの大きさ(バイト単位、自動計算)
len_mult buflen*len_multバイトのサイズになる(自動計算)
len_ratio 最終的なオーディオデータのサイズはlen*len_ratio
filters[10](..)変換に必要な関数へのポインタの配列
filter_index現在の変換関数のインデックス

Description

SDL_AudioCVT構造体は、異なるフォーマット間で オーディオデータを変換するために使用します。 SDL_AudioCVT構造体は SDL_BuildAudioCVT 関数で作成され、実際の変換はSDL_ConvertAudio関数で行われます。

SDL_AudioCVT構造体の多くのフィールドは内部的に使用されるため、ここでは詳細には触れません。

Uint8 *buf

変換に用いられるオーディオデータのポインタです。 変換元と変換先を兼ねています。つまり、変換されたオーディオデータは 元のデータを上書きします。 変換されたデータは元のデータよりも大きくなる可能性がありますので (例えば、8ビットサンプルから16ビットに変換したときなど)、 buf の大きさは十分にとっておく必要があります。 以下の説明も参照してください。

int len

変換元のオーディオデータのバイト単位の大きさです。

int len_mult

すでに説明した通り、オーディオバッファは変換先のデータを格納できるだけの 大きさが必要であり、その大きさは元のデータよりも大きくなる可能性があります。 bufは、len*len_multだけの大きさが必要です。

double len_ratio

オーディオデータの変換が終わった後、変換先のオーディオデータの大きさを 知る必要があります。len*len_ratio は、変換されたオーディオデータのバイト単位の大きさを表します。 len_multに似ていますが、 もし変換元のデータよりも小さくなる場合、len_multは 1になりますが、len_ratioは 正しく元データの大きさとの比(0から1の間の数値)を返します。

See Also

SDL_BuildAudioCVT, SDL_ConvertAudio, SDL_AudioSpec