[osask 6968] Re: tek 圧縮

  こんばんは、川合です。


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/

ML番号でジャンプ
ML単語検索