こんばんは、川合です。
FORM-Akkie さんは 2004/05/31 17:49:13 の「[osask 6967] tek 圧縮
」で書きました:
> tek1/2ですが、無圧縮部分と圧縮部分を分けるというのはいかがなものでしょう。
> ビットストリーム中であってもパディングすれば無圧縮データをbyte境界に置くことができるのではないでしょうか。
> パディングに次の圧縮データの先頭を入れておけばムダは出ませんし。
まずtek2にはバイトストリームはありません。全部ビットストリーム
です。だからこの話題はtek2には該当しません。
で、tek1ですが、なるほど、その案は面白そうです。特に圧縮率の観
点からバイトストリーム開始位置(厳密にはビットストリーム長)を書
かなくていいのがいいなと思いました(特に小さいファイルで効果が大
きい)。
・・・で考えてみたのですが、それだと無圧縮部分がどこからどこま
でだったかに合わせて、ビットストリームの読み出しがややこしくなり
そうです。tek1では展開速度にも配慮しているので、そういうややこし
いことはできれば避けたいなーと。
そもそもバイトストリームを持ち出したのも高速化のためなのですが
バイトストリームを統合するならパディングなんかしないで、ビットス
トリームとして8bitを書き込んでしまうほうがむしろ速そうです(無圧
縮部分がよほど長く続かない限りは)。現在のtek1/tek2用のビットス
トリームリーダは、数回のシフトで一度に24bitくらいは切り出せるの
で、必要なときには3バイトずつ切り出すことで、無圧縮部分がある程
度長くても速いかもしれないです。
で、そんな感じの発想で全部ビットストリーム化したのがtek2なので
す。tek2ではどうせbitストリームにするならと、バイトを8bitではな
く可変長にして、頻度の高い文字は少ないbit数で、頻度の低いbitは多
いbit数で表現しています。それで圧縮率をさらに稼いでいるわけです
。
> あと、時代遅れな話ではありますが、tek0.txtにバグを発見しました。重要な問題は
>l2d3
>・一致長の最上位ビットは必ず1なので省略されなければならない
>->これに関連して273->274やサンプルデータの変更があります
>だけですが、実装に関してtek0で
>・符号の順番は距離、一致長の順で、l2d3符号のときとは逆
>というものもあります。
>そこでこれらを含めてtek0.txtを改変したのですが、必要な方はおられますか?
せっかくなので、tek0.txtをその改変版に差し替えようと思います。
ついでに。もうお気づきかもしれませんが、
http://wiki.osask.jp/?tek1
にtek1フォーマットの概略を書き途中です。
それでは。
--
川合 秀実(KAWAI Hidemi)
OSASK計画代表 / システム設計開発担当
E-mail:kawai !Atmark! osask.jp
Homepage http://osask.jp/