Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ ibs_expandtiff_open(3X) — NEWS-os 4.1C

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

libibs(3X)

ibs_encode(3X)

ibs_getioerror(3X)

IBS_EXPAND(3X)  —  NEWS-OS Programmer’s Manual

名称

ibs_g3expand1d_open, ibs_g3expand1d, ibs_g3expand2d_open, ibs_g3expand2d, ibs_expandtiff_open, ibs_expandtiff, ibs_g4expand_open, ibs_g4expand, ibs_exp_getworksize, − 圧縮データの復元を行なう

形式

ibs_g3expand1d_open(iw, x, w, flag, work, inf, inarg, inbuf, inbufsize, outf, outarg)
int iw, x, w, flag;
int ∗work;
int (∗inf)();
int inarg;
char ∗inbuf;
int inbufsize;
int (∗outf)();
int outarg;

ibs_g3expand1d(imgadr, work)
char ∗imgadr;
int ∗work;

ibs_g3expand2d_open(iw, x, w, flag, work, inf, inarg, inbuf, inbufsize, outf, outarg)
int iw, x, w, flag;
int ∗work;
int (∗inf)();
int inarg;
char ∗inbuf;
int inbufsize;
int (∗outf)();
int outarg;

ibs_g3expand2d(imgadr, work)
char ∗imgadr;
int ∗work;

ibs_expandtiff_open(iw, x, w, flag, work, inf, inarg, inbuf, inbufsize, outf, outarg)
int iw, x, w, flag;
int ∗work;
int (∗inf)();
int inarg;
char ∗inbuf;
int inbufsize;
int (∗outf)();
int outarg;

ibs_expandtiff(imgadr, work)
char ∗imgadr;
int ∗work;

ibs_g4expand_open(iw, x, w, flag, work, inf, inarg, inbuf, inbufsize, outf, outarg)
int iw, x, w, flag;
int ∗work;
int (∗inf)();
int inarg;
char ∗inbuf;
int inbufsize;
int (∗outf)();
int outarg;

ibs_g4expand(imgadr, work)
char ∗imgadr;
int ∗work;

ibs_exp_getworksize(w, flag, mode)
int w, flag, mode;

解説

ibs_g3expand1d_open 、 ibs_g3expand1d は一次元符号化方式による圧縮符号をイメージデータに復元します。
ibs_g3expand2d_open 、 ibs_g3expand2d は二次元符号化方式による圧縮符号をイメージデータに復元します。
ibs_expandtiff_open 、 ibs_expandtiff は TIFF Data Compression Scheme 2 による圧縮符号をイメージデータに復元します。
ibs_g4expand_open 、 ibs_g4expand は高能率二次元符号化手法による圧縮符号をイメージデータに復元します。
たとえば、二次元符号化方式の復元の場合、 ibs_g3expand2d_open を呼んでから、1 行ごとに ibs_g3expand2d を呼びます。 このとき、復元処理および結果は符号データ作成時の K パラメータには依存しません。
また、フィルビットの有無にも依存しません。

ibs_g3expand1d_open 、 ibs_g3expand2d_open 、 ibs_g3expandtiff_open 、 ibs_g4expand_open は、 復元を行なうために必要な変数をセットします。 iw 、  x 、 w は復元されたデータを格納する領域を指示します。
iw はイメージ幅 (ドット)で、16 の倍数でなければなりません。
x は行の中で実際にデータが置かれる位置を左端を 0 として ドット単位で指示します。 w はイメージデータの長さ(ドット)です。 どのような場合でも x  + w が iw をこえてはいけません。
flag は符号データのビットオーダの指定をします。
flag の最下位ビットに 0 が指定された場合は、 符号データは LSB (Least Significant Bit) ファーストとして扱われます。 1 が指定された場合は、符号データを MSB (Most Significant Bit) ファーストとして 扱います。
なお、ファクシミリにおいてはビットオーダは LSB ファーストです。
またこれは outf にもそのままわたされます。
work は内部で使う作業領域で、 関数 ibs_exp_getworksize によって得られる値より大きな 領域を確保しておかなければなりません。
この作業領域 は復元がすべて終わるまで変更してはいけません。

inf 、 outf は、復元を行うときにデータの入出力関数に使用する関数へのポインタです。 outf には、NULL を指定することができ、その場合にはデフォルトの出力関数が 使われます。 この場合、入力関数の形式や内部表現についての知識は必要有りません。
inbuf は符号データを入れるバッファを指示します。 また、 inbuf は偶数アドレスになければなりません。
inbufsize は inbuf の長さを指示しますが、これは 4 バイト以上なければなりません。
inarg 、 outarg は入出力関数 inf 、 outf にそのまま渡されます。

inf は符号データを読み込むための入力関数です。 入力関数 inf は次のような形をしていて、リターン値は読み込んだ長さで、 エラーのときは負でなければなりません。

int (∗inf)(arg, buf, size)
int arg;
char ∗buf;
int size;

引数はそれぞれ ibs_g3expand1d_open 、 ibs_g3expand2d_open 、 ibs_g3expandtiff_open 、 ibs_g4expand_open で設定されたものが渡されます。 arg には inarg がそのまま渡されます。 buf には inbuf がそのまま渡されます。 size には inbufsize がそのまま渡されます。
buf から size バイトの長さのバッファがあります。

outf は変化点の配列をイメージデータに復元して、 書きだすための出力関数です。 outf に NULL が指定された場合、デフォルトの関数 ibs_decode が呼ばれます。
出力関数 outf は次のような形をしていて、 負の値ならエラーとなるようなリターン値をもたなくてはなりません。

int (∗outf)(outarg, imgadr, iw, w, x, sline, flag)
int outarg;
char ∗imgadr;
int iw, w, x;
int ∗sline;
int flag;

outarg 、 iw 、 w 、 x 、 flag は ibs_g3expand1d_open 、 ibs_g3expand2d_open、 ibs_g3expandtiff_open 、 ibs_g4expand_open で設定されたものが渡されます。
imgadr は ibs_g3expand1d 、 ibs_g3expand2d 、 ibs_g3expandtiff 、 ibs_g4expand で設定されたものが渡されます。
sline は変化点の配列を指示します。 これは、( w + 2 ) ∗ 4 バイトの大きさを持っています。 また、この関数の中で sline については何も変更してはいけません。
変化点については、 ibs_encode あるいは、 ibs_decode を参照してください。

ibs_g3expand1d 、 ibs_g3expand2d 、 ibs_expandtiff 、 ibs_g4expand は実際に 1 行分の復元を行います。 ここでは、符号データが足りなくなるたびに入力関数 inf が呼ばれます。
1 行分の復元が終了すると出力関数 outf が呼ばれます。
imgadr が 0 のときには 1 行分の復元が終わっても、 出力関数を呼びださずに戻ります。

ibs_exp_getworksize は work に必要な領域の大きさを返します。 たとえば、大きさの異なるイメージを扱うときには得られた値の最大値を 使用しなければなりません。 現在のバージョンでは (( w + 2) ∗ 8) + 256 が返されます。

リターン値

ibs_g3expand1d_open 、 ibs_g3expand2d_open、 ibs_expandtiff_open 、 ibs_g4expand_open では、正常に終了したときは 0 、 パラメータにエラーがあったときは −1 が返されます。
inf にエラーが生じたときは −2 が返されます。

ibs_g3expand1d 、 ibs_g3expand2d、 ibs_expandtiff 、 ibs_g4expand では、 正常に終了したときのリターン値は iw / 8 です。 RTC、 EOFB まで復元が達したときは 0 を返します。
符号データが正しくない場合、 imgadr が偶数アドレスにない場合 は −1 が返されます。
inf にエラーが生じたときは −2 が返されます。 outf にエラーが生したときは −3 が返されます。
また、作業領域 が破壊されている場合は −4 を返します。
非圧縮モードを検出したときは −6 が返されます。

inf 、 outf で生じたエラーについては ibs_getioerror を呼ぶことによって何が返されたか知ることができます。

関連ファイル

/usr/sony/lib/libibs.a

関連事項

libibs(3X), ibs_encode(3X), ibs_getioerror(3X)

NEWS-OSRelease 4.1C

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026