サイトトップへ
OSASK.NET
  サイトトップへ       新掲示板(閉鎖済)   Wiki(凍結済)   旧掲示板(廃止済)   ニュース(廃止済)  
5: 2004-06-03 (木) 05:16:48 ソース 6: 2004-06-07 (月) 23:04:45 ソース
Line 4: Line 4:
-フォーマットに関する情報以外は、このページではなく[[impressions]]などにお願いします。 -フォーマットに関する情報以外は、このページではなく[[impressions]]などにお願いします。
-ここでは展開手順をベースに書きます。圧縮のほうは、この展開手順で展開できるようなファイルを作ればいいだけですので。 -ここでは展開手順をベースに書きます。圧縮のほうは、この展開手順で展開できるようなファイルを作ればいいだけですので。
 +
 +-bim2bin4hで一部ビットの意味が反転したので訂正。
* tek1圧縮 * tek1圧縮
-tek1は、次の1バイトから始まります。 -tek1は、次の1バイトから始まります。
--註:OSACMP形式はこの1バイトに先立って16バイトのシグネチャとnバイトの展開後のサイズに関する情報が付属する。これについては後述。 --註:OSACMP形式はこの1バイトに先立って16バイトのシグネチャとnバイトの展開後のサイズに関する情報が付属する。これについては後述。
---bit0:0です。もしここが1なら以降のバイトに何らかの拡張情報が存在します。+--bit0:1です。もしここが0なら以降のバイトに何らかの拡張情報が存在します。
---実はこの先頭バイトがs7符号になっている。 ---実はこの先頭バイトがs7符号になっている。
--bit1:0です。tek2ではここが1になる場合もありますが、tek1では常に0です。 --bit1:0です。tek2ではここが1になる場合もありますが、tek1では常に0です。
Line 77: Line 79:
--(1)1バイト読む。 --(1)1バイト読む。
--(2)最下位のbitを捨てる(全体を右シフト)。 --(2)最下位のbitを捨てる(全体を右シフト)。
---(3)捨てたビットが0ならおしまい。+--(3)捨てたビットが1ならおしまい。
--(4)また1バイト読むために256倍しておいて、(1)に戻ったときにはこの下位8bitに読み込ませる。 --(4)また1バイト読むために256倍しておいて、(1)に戻ったときにはこの下位8bitに読み込ませる。
--(1)に戻る。 --(1)に戻る。
-雰囲気としては、こうです。 -雰囲気としては、こうです。
-     aaaaaaa1 bbbbbbb1 cccccccc0 → aaaaaaabbbbbbbccccccc+     aaaaaaa0 bbbbbbb0 cccccccc1 → aaaaaaabbbbbbbccccccc
-結果的に上位下位の関係がインテル風じゃないところだけに注意。 -結果的に上位下位の関係がインテル風じゃないところだけに注意。
Line 96: Line 98:
-0以上の整数を符号化するものです。多くのパラメータを持っているので、そのパラメータによっていろいろな状況にマッチします。 -0以上の整数を符号化するものです。多くのパラメータを持っているので、そのパラメータによっていろいろな状況にマッチします。
-デコード方式は基本的に次のとおりです(実際は1bitずつ読まずに数ビットずつ処理して高速化しますが)。 -デコード方式は基本的に次のとおりです(実際は1bitずつ読まずに数ビットずつ処理して高速化しますが)。
---最初に1bitずつ読み込んで、"1"のbitがいくつ続くかを数えます。"0"を読み込んだらそこでストップです。たとえばこれが3個だとしましょう。+--最初に1bitずつ読み込んで、"0"のbitがいくつ続くかを数えます。"1"を読み込んだらそこでストップです。たとえばこれが3個だとしましょう。
--次にパラメータテーブルを見て、3番目のパラメータがなんであるかを調べます。ここではこれが8だったとしましょう。 --次にパラメータテーブルを見て、3番目のパラメータがなんであるかを調べます。ここではこれが8だったとしましょう。
--そしたらビットストリームから8bitを読み込みます。これは0~255ですね。それに3番目のベース値を足します。おしまいです。 --そしたらビットストリームから8bitを読み込みます。これは0~255ですね。それに3番目のベース値を足します。おしまいです。
Line 106: Line 108:
-なおn番目のパラメータが0の場合もあります。この場合、1bitも読みません。だから0にベース値を足します。 -なおn番目のパラメータが0の場合もあります。この場合、1bitも読みません。だから0にベース値を足します。
--たとえばパラメータテーブルが10個しかないときは、最大でも9番目までしかありえないので、最初の"1"を数えるループで"1"の数が9個になったら、次の"0"は省略されているものとみなします。これで1ビット節約しています。 +-たとえばパラメータテーブルが10個しかないときは、最大でも9番目までしかありえないので、最初の"0"を数えるループで"0"の数が9個になったら、次の"1"は省略されているものとみなします。これで1ビット節約しています。 
---同様にもしパラメータテーブルが2個しかないときは、最大が1番目なので、"1"が1個きたらもうそれでおしまいですし、最初が"0"ならそれは0番目なので、それでもおしまいです。だから、最初の"1"数え部分では結局1bitしか読まないことになります。 +--同様にもしパラメータテーブルが2個しかないときは、最大が1番目なので、"0"が1個きたらもうそれでおしまいですし、最初が"1"ならそれは0番目なので、それでもおしまいです。だから、最初の"0"数え部分では結局1bitしか読まないことになります。 
---さらにもしパラメータテーブルが1個しかないときは、もはや"1"の数を数えるまでもなく"0"がくるはずなので、この"0"は省略されたものとみなし、1bitも読むことなく、いきなり0番目のテーブルを参照します。+--さらにもしパラメータテーブルが1個しかないときは、もはや"0"の数を数えるまでもなく"1"がくるはずなので、この"1"は省略されたものとみなし、1bitも読むことなく、いきなり0番目のテーブルを参照します。
-圧縮の際には、たとえば0をたくさん符号化したいと思えば、パラメータテーブルの0番目を0にすればいいわけです。そうすれば整数0は1+0=1bitで符号化できます。 -圧縮の際には、たとえば0をたくさん符号化したいと思えば、パラメータテーブルの0番目を0にすればいいわけです。そうすれば整数0は1+0=1bitで符号化できます。

トップ   差分 バックアップ 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ
新着

目次
メンバー一覧


最新の20件
2016-10-01 2016-09-08
  • @MenuBar.
2016-09-07 2016-09-04 2016-08-15 2015-09-23 2014-07-30 2014-07-04 2014-02-04 2013-10-26 2013-06-21 2013-06-17 2013-06-15 2013-04-02 2013-02-09 2013-02-04 2012-12-25 2012-12-01 2012-05-28 2012-03-31

トピック一覧
一般用コメント最新
新掲示板lina
2016/9/5 20:58
SandBoxゲスト
2016/9/4 12:01
RecentDeletedlina
2015/6/2 19:29
Old-OSASK-MLlina
2014/6/29 9:14
hideyosi/メールhideyosi
2014/1/6 20:17
hideyosi/募集中lina
2013/11/8 19:56

このサイトは川合秀実から委託を受けて、OSASKコミュニティによって管理・運営されています。