WIN_bs mk_windata(inbuf, outbuf, sr, ch, ss_mode, fix_len) int32_w *inbuf; uint8_w *outbuf; WIN_sr sr; WIN_ch ch; int ss_mode; int fix_len;
mk_windata は、4バイト整数配列 inbuf に入れられた1秒分のデータを、win フォーマットの チャネルブロックに変換して outbuf に入れられます。 sr は渡されるデータの個数、すなわちサンプリングレートです。 ch には16ビットのチャネル番号を指定します。
サンプルサイズ 4 バイトの場合、 ss_mode が 0 の時、内部では winform(1W) を呼び出しており、サンプルサイズ情報の 値として 4 を使います。 ss_mode が 1 の時はサンプルサイズ情報の値として 5 を使います。特別な事情が無い 場合、今後 ss_mode は 1 を使うべきです。
fix_len は ss_mode が 1 の時のみ意味を持ちます(0 の時は無視されます)。 fix_len が 1 の時、差分値がサンプルサイズ 0.5 〜 3 バイト長で表現出来る場合で も 4 バイト長(差分値ではない)で表現します。この場合、振幅の値そのもの が 4 バイトビッグエンディアンの固定長で書き込まれる事になります。 fix_len が 0 の時は、差分値がサンプルサイズ 0.5 〜 3 バイト長で表現出来る場合 にはそのように書き込みます。サンプルサイズ情報については winformat(1W) を参照下さい。
mk_windata は、チャネルヘッダー部分を含む、チャネルブロックの大きさ (バイト)を返します。
inbuf は作業領域として使われるため、内容が書き換えられることに注意してください。