トップ
|
はじめにWIN_pkg-3.0.0 からはWINフォーマットの中のサンプルサイズの情報の所に新たな値(5及び13)を追加した。 WINフォーマットでは隣り合うサンプル同士の差分を取り、その差分値が表現出来るだけ小さなサンプルサイズ(ただし、4, 8, 16, 24 または 32 ビット長から選択)で格納することにより圧縮効果を期待しているが、差分値が大きくなり32ビット(4バイト)長になった場合は圧縮効果が無いばかりでなく、4バイト長整数値で表現出来る値をオーバーフローしてしまう恐れがある。そこで、差分値が3バイト長以下で表現出来ない場合は、差分値をとらずに値そのものを4バイトビッグエンディアン整数値で格納する事とし、その場合のサンプルサイズの情報の値は5で表現する事とした。なお、高サンプリンレートの場合はこれまで通り+8とし、13で表現する。
今後はサンプルサイズ情報4(12)のデータは作成しない事が望ましい。 尚、既存のサンプルサイズ4のデータについての後方互換性は確保しているので、読み込みに対してはこれまで通り問題無く認識する。 当然であるが、WIN_pkg-2.X.X 以前のバージョンではサンプルサイズ情報5(13)のデータを認識しない。 変更点configure.in--disable-ssize5 の追加 デフォルトでは、WINデータを生成するプログラムはサンプルサイズ4バイトの時は差分を取らない、つまり、サンプルサイズ情報5でWINデータを出力するが、このオプションを指定すると4バイトの時も差分値が入る、つまり、Ver2までの動作と同様、がデフォルトとなる。 src/winlib.cmk_windata()WIN_bs mk_windata(int32_w *inbuf, uint8_w *outbuf, WIN_sr sr, WIN_ch sys_ch, int mode, int fix_flag) /* int32_w *inbuf; : input data array for one sec */ /* uint8_w *outbuf; : output data array for one sec */ /* WIN_sr sr; : n of data (i.e. sampling rate) */ /* WIN_ch sys_ch; : 16 bit long channel ID number */ /* int mode : 0 : use winform(). 1 : use winform5() */ /* int fix_flag : 1 : always fixed length data (Only affect mode=1.). */ win 形式へのデータ変換のために導入された新規関数。今後ユーザがライブラリで呼び出す場合はwinform(1W)の代わりにこの関数を使用すべき。 mode で 0 を指定すると内部で winform(1W) 呼び出すので、これまで通りサンプルサイズ4バイトの時も差分値を取ります。mode で 1 を指定すると winform5(内部関数のため外からは見えない)を呼び出し、サンプルサイズ4バイトの時は差分を取らずに値そのものを格納します。 mode=1 の時(winform5の場合)は、fix_flag=1 にすると、差分値によらずサンプルサイズ情報を5でデータを出力するモード、つまり、4バイトビッグエンディアン表現の固定長モードで出力します。mode=0 の時は意味を持ちません。詳しくは、mk_windata (1W) のオンラインマニュアルを参考の事。 win2fix()サンプルサイズ情報5に対応。 win_chheader_info()サンプルサイズ情報5に対応。 winform5() 内部関数内部関数。winform(1W)のサンプルサイズ情報5を出力するバージョン。因みに、winform(1W)も内部関数にすべきだが、外部ブログラムでリンクしているものがあり、後方互換性のためそのまま残す。 src/cormeisei.cwinform() --> mk_windata() src/ecore.c, src/ecore2.cwinform() --> mk_windata() src/lily.c-b [4|5|5f] オプションの追加。 winform() --> mk_windata() src/ls8tel16_raw.c, src/ls8tel16_win.cwinform() --> mk_windata() src/raw_100.c-s [4|5|5f] オプションの追加。 winform() --> mk_windata() src/raw_shift.c-s [4|5|5f] オプションの追加。 winform() --> mk_windata() src/raw_time.c-s [4|5|5f] オプションの追加。 winform() --> mk_windata() src/recvnmx.c-s [4|5|5f] オプションの追加。 winform() --> mk_windata() src/vanpro2.c-s [4|5|5f] オプションの追加。 winform() --> mk_windata() src/wck.cサンプルサイズ情報5に対応。 src/wform.c-s [4|5|5f] オプションの追加。 winform() --> mk_windata() src/win.cサンプルサイズ情報5に対応。 src/winrandsimu6.c-s [4|5|5f] オプションの追加。 winform() --> mk_windata() src/wintowin.c-b [4|5|5f] オプションの追加。 winform() --> mk_windata() src/wshift.c-s [4|5|5f] オプションの追加。 winform() --> mk_windata() src/wtime.c-b [4|5|5f] オプションの追加。 winform() --> mk_windata() |