続 pcm_formatの修正
ASIOのサンプルフォーマットには次のような種類があります。(リトルエンディアン整数のみ抜粋)
- ASIOSTInt16LSB
- 16ビット整数
- ASIOSTInt24LSB
- 24ビット整数
- ASIOSTInt32LSB
- 32ビット整数(下位8ビットは0固定)
- ASIOSTInt32LSB16
- 32ビット整数(上位16ビットは0固定)
- ASIOSTInt32LSB18
- 32ビット整数(上位14ビットは0固定)
- ASIOSTInt32LSB20
- 32ビット整数(上位12ビットは0固定)
- ASIOSTInt32LSB24
- 32ビット整数(上位8ビットは0固定)
現在のpcm_formatは下の4つをサポートしていません。
WindowsのWEVEFORMATのように、
struct pcm_format { unsigned bits; // 有効なビット数 unsigned bytes; // 1つのデータが占有するバイト数 unsigned rate; unsigned channels; };
とすることも考えましたが、実際にコーディングをしてみると、あまり便利でなかったのでやめました。
typeに
int_a32_le16, int_a32_le18, int_a32_le20, int_a32_le24,
を追加しようと思います。
int_a32_le16にするかint_le16_a32とするか迷いましたが、C99で定義される型の名前が全てビット数で終わるので前者を選びました。
16ビットと24ビットがなければ、int_le18とint_le20を追加するだけで良かったんですけどね。