JP4091990B2 - データ符号化ネットワーク - Google Patents
データ符号化ネットワーク Download PDFInfo
- Publication number
- JP4091990B2 JP4091990B2 JP53886498A JP53886498A JP4091990B2 JP 4091990 B2 JP4091990 B2 JP 4091990B2 JP 53886498 A JP53886498 A JP 53886498A JP 53886498 A JP53886498 A JP 53886498A JP 4091990 B2 JP4091990 B2 JP 4091990B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- block
- array
- compression
- format
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000007906 compression Methods 0.000 claims abstract description 82
- 230000006835 compression Effects 0.000 claims abstract description 82
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 70
- 238000000034 method Methods 0.000 claims abstract description 65
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 230000001131 transforming effect Effects 0.000 claims description 5
- 238000010187 selection method Methods 0.000 claims 2
- 238000013459 approach Methods 0.000 abstract description 17
- 230000003068 static effect Effects 0.000 abstract description 17
- 230000008569 process Effects 0.000 abstract description 14
- 230000008901 benefit Effects 0.000 abstract description 11
- 230000003044 adaptive effect Effects 0.000 abstract description 2
- 238000003491 array Methods 0.000 description 38
- 238000000354 decomposition reaction Methods 0.000 description 32
- 238000004458 analytical method Methods 0.000 description 13
- 230000009466 transformation Effects 0.000 description 12
- 230000006870 function Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 230000002596 correlated effect Effects 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 238000013144 data compression Methods 0.000 description 6
- 238000000638 solvent extraction Methods 0.000 description 6
- 230000003252 repetitive effect Effects 0.000 description 4
- 238000000844 transformation Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000006837 decompression Effects 0.000 description 3
- 238000012856 packing Methods 0.000 description 3
- 230000011218 segmentation Effects 0.000 description 3
- 235000006508 Nelumbo nucifera Nutrition 0.000 description 2
- 240000002853 Nelumbo nucifera Species 0.000 description 2
- 235000006510 Nelumbo pentapetala Nutrition 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000000875 corresponding effect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000010561 standard procedure Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- NNKKTZOEKDFTBU-YBEGLDIGSA-N cinidon ethyl Chemical compound C1=C(Cl)C(/C=C(\Cl)C(=O)OCC)=CC(N2C(C3=C(CCCC3)C2=O)=O)=C1 NNKKTZOEKDFTBU-YBEGLDIGSA-N 0.000 description 1
- 238000007635 classification algorithm Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/005—Statistical coding, e.g. Huffman, run length coding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Reduction Or Emphasis Of Bandwidth Of Signals (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Description
高性能データ圧縮システムは、値を予測する能力を高めるデータのモデルを使用し、これにより圧縮度が逆に高められることになる。最良のモデルは、特定のデータフォーマットをサポートするための圧縮システムを構築することにより実現する。特定のファイルの中のデータから粗モデルを誘導することを試みる代わりに、フォーマットに固有の圧縮システムは、精密な予め定められたモデルを提供することができる。モデルは、ファイルフォーマット構造そのものに限らず、サンプルデータベースから集められた統計データをも利用することができる。
従来のフォーマットに固有の圧縮における試みは、多くのフォーマットに適合する汎用法の開発よりも、僅かな固有のフォーマットに対する解を見出すことに集中していた。作り出されたモデルは、通常極めて僅かな数のコンポーネントを含むに過ぎない。大抵は赤、青および緑のピクセル値を持つイメージファイルのようなデータの大部分が僅かなコンポーネントの中に含まれる時には、前記のモデルで充分間に合う。しかし、多くのフォーマットは、多量のコンポーネントを用いなければ最良のモデル化は不可能であり、従来のシステムは、このようなモデルを構築またはエンコードするようには設計されていない。
発明の概要
本発明による好ましい符号化システムは、公知の技術のこれらの2つの問題を解決する。システムは、広汎なフォーマットを扱うのに適合した汎用解法を提供し、多数のコンポーネントを使用するモデルを効果的に扱う。システムは、多くのレベルで、すなわち、最高(インタフェース)レベルから最低(コアーエンコードアルゴリズム)レベルまでにおいて、新しいアプローチを使用する。符号化ネットワークは、データをエンコードするための圧縮ネットワークと、データをデコードするための伸張ネットワークとを含む。
最高レベルでは、本発明による好ましい圧縮システムは、Base−Filter−Resource(BFR)システムと呼ばれるアーキテクチャーを使用する。このアプローチは、フォーマットに固有の圧縮の利点を、広汎のデータフォーマットに用いられる汎用圧縮ツールに統合する。前記システムは、そのそれぞれが例えばExcel XLSワークシート、またはWord DOCファイルのためのような特定のデータフォーマットをサポートするフィルタを含む。ベースは、システムコントロールモジュールおよびすべてのフィルタにより用いられるライブラリを含む。リソースは、一つ以上のフィルタにより使用されるが、ベースの一部ではないルーチンを含む。エンコードされるべきデータのフォーマットに合致するフィルタが設けられる時には、フォーマットに固有の圧縮の利点は、このデータに対して実現することができる。しかし、前記以外では、他の固有でないデータ圧縮システム(PKZip、Stacker等のような)に類似の性能を達成する“汎用的な”フィルタが用いられる。
次のレベルでは、システムは、ソースデータを個々のコンポーネント(要素)に分解するための方法を含むのが好ましい。“ストラクチャーフリッピング”と呼ばれる基本アプローチは、フォーマット情報を圧縮モデルに変換するための鍵を提供する。ストラクチャーフリッピングは、通常分離される類似のコンポーネントが同じグループに入れられるように、情報をファイルに再構築する。
この基礎の上に、下記のような多くのツールが設けられている。
−分解ルーチンの作成を簡単にするための言語。
−この方法を用いてソースデータを別個のコンポーネントに分解するためのツール。
−サンプルデータベースの自動的な解析による個々のコンポーネントに対するモデルの作成のためのツール。
これらのツールは、広汎なファイルおよびデータタイプに対するフィルタに適用することができる。
圧縮システムは、特定のフィルタおよびあるタイプのフィルタのためのカスタマイズされたアレー(配列)変形器と呼ばれるツールを含むのが望ましい。これらの技術は、特定のファイルタイプまたは幾つかのファイルタイプにより用いられるあるデータ構造を、多くのデータベースフォーマットに見られるデータの2次元配列をエンコードするように、取り扱う。
システムの低レベルでは、下記を含むデータ配列をエンコードするための多くのメカニズムが存在するのが望ましい。
−新しい低レベルエンコードアルゴリズム。
−多数のトランスフォームとエンコードアルゴリズムを統合するための方法。
−小さいデータブロックが効果的に符号化できるようにオーバーヘッドを除去するための方法。
−静的モデル(サンプルデータベースの統計的解析から求められた)および動的モデル(特定のアレーの中でのデータに適用される)を各コンポーネントのエンコードに統合するための新しい方法。
ソースデータのエンコードの好ましい方法は、ソースデータの多数のブロックへの分解を含む。分解されたブロックは、通常ソースデータフォーマット以外のフォーマットを持つ。特に、ソースデータからの類似のデータが集められ、それぞれのブロックにグループ分けされる。
各ブロックに対し、圧縮アルゴリズムは、多数の候補圧縮アルゴリズムから選ばれ、ブロックに適用される。圧縮アルゴリズムは、該当ブロック中のデータの量に基づいて決めることができる。さらに圧縮アルゴリズムは、カスタマイズされた変形の使用を含め、該当ブロックに適用することができる。アルゴリズムの選択は、ソースデータのフォーマットから誘導される圧縮モデルにも基づくことができる。多数のブロックからの圧縮されたデータは、次にエンコードデータに結合される。
符号化ネットワークは、また符号化されたデータをソースデータに戻すための圧縮解除ネットワークをも含む。最初にデータが解読され、次に分解が反転される。ロスのないシステムでは、得られたデータはソースデータと同じである。
本発明の実施形態は、CD−ROM、フロッピーディスク、ハードディスク、またはその他の機械での読取りの可能な配付媒体上に、機械で読取りの可能なフォーマットで書き込まれた、機械で実行できる命令の形態を持つことが望ましい。これらの命令は、圧縮および伸張ネットワークを実行するための一以上のプロセスユニットにより実行される。
【図面の簡単な説明】
本発明の前述のおよびその他の目的、特徴ならびに長所は、本発明の下記の好ましい実施形態の詳細な記述から、添付の図面に図示されるように、明らかであり、図面においては、共通の部分には共通の記号が付されている。図面は、必ずしも厳密な縮尺を用いておらず、むしろ本発明の原理を示すために誇張されている。
図1は、代表的なデータ圧縮システムの高レベルブロック図である。
図2は、本発明によるBFRシステムを用いた好ましいエンコーダのブロック図である。
図3は、アレー符号器のフローチャートである。
図4は、図3の文字列符号器40のブロック図である。
図5は、図3の浮動小数点符号器50のブロック図である。
図6は、好ましい自動化された解析システムのフローチャートである。
図7は、整数符号器の高レベル状態を概観するフローチャートである。
図8は、整数符号器の中レベル状態を概観するフローチャートである。
好適な実施形態の説明
図1は、代表的なデータ圧縮システムの高レベルブロック図である。システムの主要な構成要素は、送信アプリケーション1、エンコーダ3、デコーダ5および受信アプリケーション7である。
送信アプリケーション1は、エンコーダ3によりエンコードされるソースデータ2を提供する。送信アプリケーションは、ファイル保管、通信システム、又は元のフォーマットよりも少ないバイトを使用するデータ表現することを必要とする他のアプリケーションとなりうる。
エンコーダ3は、ソースデータ2を受信し、少ないバイトを用いてデータを表現する為のデータ圧縮アルゴリズムを使用する。エンコーダ3の代表的な実現は、汎用コンピュータ上で動作するソフトウエアとしてであるが、記載されるアルゴリズムは特殊化されたハードウエア上でも実現できる。
エンコーダの出力は、エンコードされたデータ4であり、これはメモリに格納されることができるか(この場合には、エンコードにより同じハードウエア中により多くのソースデータを格納することができる)、又はデコーダ5に送られる(この場合には、転送チャネル帯域幅が限られている時には、高速に転送にされるソースデータをエンコードする)。
デコーダ5は、エンコードデータ4を検索、又は受信し、データをエンコードする為に用いられたアルゴリズムを逆にしてソースデータをデコードデータ6として再構築する。ロスのないシステムにおいては、デコードデータ6はソースデータと同一である。しかし、アプリケーションによっては、或る程度のデータのロスは容認することができる。エンコーダ3を用いる場合のように、デコーダ5は、汎用コンピュータにおいて動作するソフトウエアとして通常実現されるが、特殊化されたハードウエアにおいて実現することができる。
受信アプリケーション7は、デコードデータ6を処理の為に受信する。
好ましい圧縮エンジンは、フィルタを基礎とするエンコーダとデコーダを有し、これらは多数の送信アプリケーション1と受信アプリケーション7により利用することができる。エンコードされたデータを格納/検索、又は送信/受信するアプリケーション1,7は、圧縮システムの一部ではないが、これらアプリケーションは、利用可能な転送チャネルの帯域幅のようなシステムの状態によってエンコードおよびデコード動作を調整することができる。
次の記載は主としてエンコーダを対象とする。デコーダは、エンコーダの動作の逆の動作を行うに過ぎず、従ってエンコーダの記述は、エンコード/デコードシステム全体を記載するのに十分である。用語“ファイル”は、ソースデータのブロックを記載するために用いられ、これは従来の用法に適合するが、クライアントサーバーアプリケーションのデータ交換のようなデータブロックの他の多くのタイプに適用することもできる。
エンコーダ
図2は、本発明によるBase−Filter−Resource(BFR)ネットワークを用いる好ましいエンコーダのブロック図である。エンコーダ3’は、特定のファイルフォーマットを提供する複数のフィルタ10a,…,10x,…,10zの使用を基礎としている。例えば、一つのフィルタ10aは、DBFデータベースフォーマットの幾つかのバージョン(変形)をサポートすることが考えられるのに対し、別のフィルタ10zは、マイクロソフトのワードソフトウエアプログラムにより用いられるDOCフォーマットの幾つかのバージョンをサポートすることができる。個々のフィルタは、フィルタ選択システム22にそれぞれの選択規則12を提供する。
フィルタ選択システム22は、ソースデータ2を受信し、システムにインストールされたべてのフィルタ10a,…,10x,…,10zの選択規則12a,…,12x,…,12zをチェックして、ソースデータのフォーマットをその規則の何れかがサポートするか否かを認める。フォーマットがサポートされない場合には“汎用”システムが用いられ、Lempel−Ziv(LZ)エンジンのような他の汎用圧縮システムと同様の圧縮性能を提供する。本発明の特定の好ましい実施形態では、汎用的な圧縮システムは、その教示が本明細書に参照としてすべて取り入れられている1997年11月14日に出願された米国特許出願第08/970,220号においてシンドラー(Mr.Schindler)により記載されたSZIPエンジンを使用している。ネットワークの記述は、主としてデータフォーマットをサポートするフィルタが首尾よく見出される状況を包含する。
簡単に説明すれば、分解システム24は、ソースデータ2を多数の分解されたアレー25に分解し、上記のアレーの各々は、ソースファイルの中の特定のコンポーネントのすべてのインスタンスを含む。以下に更に詳述されている用語「アレー(Array)」は、用語「配列(array)」の通常の用法と異なり、ネットワークに特定の構造体のタイプを指すことを示す為にカタカナ(大文字)にされている。ソースデータ2を分解する為に用いられるアルゴリズムは、以下に更に詳述される「ストラクチャ(構造体)フリッピング」と呼ばれるネットワークの重要な構成である。
BFRシステムは、アレー25が配列符号器28で符号化される時に用いられる各アレー25用モデルを確立する為に、自動化された解析システム(以下に詳述されている)を使用する。場合によっては、カスタマイズされた配列変形器26が最初に用いられると、更に良好な圧縮が得られる。自動化された解析システムにより生成されたモデルは、各コンポーネントアレー25を個別に処理するが、カスタマイズされたルーチンは、コンポーネント間の関係を利用することができる。
配列符号器28は、静的モデル(すべてのデータベースに対して一定)と各特定のアレー25に対する動的調整の混合体を含む、数に依存するモデリングシステムを用いるアレー25をエンコードする。
フィルタ10xは、エンコーダ3’の4つのセクションの各々をサポートする為の構成要素を有する。ファイルフォーマット仕様により決まる選択規則12xは、ファイル、又はファイルタイトルサフィスの先頭のバイト値のようなフィルタ10xにより提供されたファイルを認識するのに必要な情報を含む。ファイルフォーマット仕様によって、さらに決まる分解命令14は、ソースファイル中の特定のコンポーネントのすべてのインスタンスを持つ、分解アレー25にソースファイルを分解するのに必要な情報を含む。カスタムコンポーネントモデル16は、ファイルフォーマット仕様およびサンプルデータベースの両者を参照することにより構築される。それらは、コンポーネントアレー25のいくつかを更に圧縮し得るものにするように変形させる為に、コンポーネント間の関係を利用することができる。エンコード用パラメータ18は、多数のサンプルデータベースから分解されたコンポーネントアレー25を検査する自動化された解析システムにより生成される。エンコード用パラメータ18は、配列符号器28中の数に依存するモデリングシステムをサポートする為に必要なデータを提供する。
フィルタ選択システム
好ましい圧縮システムは、フィルタ10を追加、又は入れ替えることにより、ユーザーが新しい、又は更新されたフォーマットをサポートすることのできる拡張可能なアーキテクチャを使用する。上述のように、フィルタ10は、一つ以上のフォーマットをサポートすることができる。例えば「ロータス123バージョン4(LOTUS 123v4」と呼ばれるフィルタは、現行のWK4フォーマットおよび以前のWK3およびFM3フォーマットのようなロータス123プログラムに関連するすべてのファイルフォーマットをサポートする。フィルタが新しいロータスWK5フォーマットに対して後に開発された時には、ユーザーは古いフィルタを、新しいフォーマットをサポートするフィルタに取り替え、また、このフィルタは古いフォーマットに関する以前のフィルタに、後退的に適合できる。
マイクロソフトウィンドウズ(Windows)環境では、各フィルタは別個の動的リンクライブラリ(DLL)ファイルである。データテーブルのほかに、フィルタは実行可能な符号を含む。あるファイルに対するフィルタが見出されると、動的にリンクされ、次にファイルをエンコードする為に呼び出される。エンコードされたデータのストリームは、何れのフィルタがデータをエンコードするのに用いられたかを示す識別子(ID)符号を含み、デコーダは対応するデコードフィルタを有する。
フィルタ選択システム22を実施する為に、ベースモジュールは、現在インストールされているファイルの登録を保持し、このファイルは、DLLのパスのほかに、ソースファイルタイプを識別するのに必要なデータを含む。この登録は、フィルタが追加されるか、又は取替えられるたびに更新される。識別データは、ファイルタイトルサフィスのリスト、およびファイルの先頭近くのバイト値によってファイルを識別する方法を含むことができる。識別手順は、多くのフィルタがインストールされた時にリストをチェックする時間を短縮するサーチツリー法を用いる。この登録から、適切なフィルタ10がフィルタタイプに対して呼び出される。
マイクロソフトのOLE2のような混合ファイルフォーマットを扱う為に、一つのフィルタが、混合ファイル中のサブファイル、又はストリームをエンコードする為に別のフィルタを呼び出す。例えばウィンワード(Winword)フィルタは、混合ドキュメントファイルの中に埋め込まれていたエクセル(Excel)データをエンコードする為のエクセル(Excel)フィルタを呼ぶことができる。
分解システム
上述のように、分解システム24は、多数の分解されたアレー25を作り出す。各分解されたアレー25は、ファイル中の特定のコンポーネントのすべてのインスタンスを含む。各決められたされた構造体タイプの各メンバに対して、別個のコンポーネントが作り出される。
実施例1
例えば、ファイルフォーマット記述において決められたレコードの下記の記述を考える。
セル値:
フォーマットは、メモリとディスクスペースを節約する為に、RK番号と呼ばれる内部番号タイプにおける番号を符号化する特別な方法を使用する。
レコーダデータ:
分解システム24は、このレコードの4つのコンポーネントの各々に対する分解されたアレー25を作り出す。RKレコードが見出される度に、エントリが各アレーに加えられる。分解されたアレー25は、5つのレコードからのデータによって示されるように、未処理ソースデータよりもさらに圧縮が可能である。
ソースデータは、バイト合致アルゴリズムに対してほぼランダムに現れる(16進法で示された)。
01 00 02 00 55 00 00 e1 f1 3f 01 00 03 00 5f 00 00 a3 f1 3f 01
00 04 00 53 00 00 d0 f1 3f
01 00 06 00 5f 00 00 c4 e1 f1 3f 01 00 07 00 5f 00 00 d3 f1 3f
各コンポーネントに対して最適化されたアルゴリズムを用いて4つの別個のアレー25(列、行、インデックスおよび数値)として扱われる時には、データは十分に圧縮されることができる。この手法は、本明細書中では、データを再配置する方法のために、「構造体フリッピング」と称される。
データベース中の同一のコンポーネントのインスタンスを共にエンコードすることは、一般的な圧縮技術であり、ファイルフォーマットは、しばしばこのようなコンポーネントを識別するのに用いられる。しかし、従来技術では、この手法は特定のファイルフォーマットの少しの主要なコンポーネントを分離することに制限されており、又ファイルフォーマット記述は、これらの主要なコンポーネントを見つける為の技術としてのみ使用されてきた。本発明の好ましい実施形態によれば、ファイルフォーマットは、実際に、圧縮モデルに変換され、次に、データを解析して各コンポーネントの符号化性能を最適化するために、この圧縮モデルが自動化されたシステムにインターフェースされる。この圧縮モデルは、カスタマイズされた配列変形器26によって、通常、圧縮度を高められるが、それは、システム全体の一構成に過ぎない。
好ましい手法が従来のシステムと異なる度合いは、それを実施する為に構築された新しいツールに反映されている。この手法は、多数のアレー25を作り出す。各アレー25は、異なった圧縮モデルを必要とし、各々のエントリ数は、ファイル毎に大幅に相違する。このような場合に効果的に動作するには、本発明の好ましい実施形態は、オーバーヘッドの除去、数に依存する処理、および固定された符号化アルゴリズムに代わる処理ネットワークの使用のような低レベル符号化の取扱いに関する新しい手法を用いる。上記のこれらの技術は、分解システム24の出力を取扱う為に好んで用いられる。
これらの実施上の特徴のすべては、高いレベルで統合されて、これにより、高レベルの呼び出しは、システムを初期化し、データを分解し、アレーをエンコードするのに必要な動作のすべてを取扱うことができる。
本発明の特定の好ましい実施形態によれば、ファイル分解システム24は、3つのサブシステムを用いる。
FILE_BUFFER 入力/出力インターフェース
ARRAYs 単一コンポーネント用データを格納する
PVSTRUCT 入力をアレーに分解し、又はデコードされたアレーを出力ストリームに書き込む
複数のFILE_BUFFERルーチンは、FILE_BUFFER構造体を用いるフレキシブルな入力/出力インターフェースを提供し、したがって、入力/出力フォーマットには無関係に同一の分解ルーチンのセットを用いることができる。これにより、圧縮システムは、入力/出力フォーマットには無関係となる。ファイル分解システムは、好ましくは次の2つのファイルフォーマット、DOSおよびOLE2をサポートするが、通信ポートおよび他の入力/出力オプションに対するインターフェースのほかに、他のファイルフォーマットに拡大できる。DOSファイルに対しては、論理ストリーム位置は、通常、未処理ファイル位置と同じである。OLE2フォーマットは、コンテナファイル中のOLE2ストリームに追随する為に、広範な符号の層を必要とする。
複数のARRAYルーチンが、初期化、データの追加、符号化およびデータのアレーを解放する処理を管理するシステムを提供する。各ARRAY構造体は、アレー25へのエントリの数、アレーに現在割当てられているバッファのサイズ、およびアレーをエンコードするのに役立つ情報のような、これらの処理を管理するのに必要なデータおよび情報の一つのアレーを含む。
特にARRAY_XX構造体は、コンポーネントからのすべてのデータを格納し、高速で連続するデータへの読み/書きアクセス、データ用拡張可能バッファおよびモデルデータの格納をサポートするメカニズムを含む。この構造体によれば、また、単純なセットのツールによって、すべての割当て、分解および符号化機能を取扱うことができる。_XXの表現は、異なった整数ワードサイズ、文字列、および浮動小数点タイプのような異なったデータタイプに対してわずかに異なったARRAY構造体が決められることを示すが、処理ルーチンの多くは、全てのバリエーションに関して機能する。
複数のPVSTRUCTルーチンは、ファイルデータを分解する自動化されたシステムを編成する。エンコードの間、ルーチンは、FILE_BUFFER構造体からデータを読み出し、データをアレー25に書込む。デコードの間、PVSTRUCTルーチンは、アレー25からデータを取り出し、FILE_BUFFER構造体に書き込む。これらのルーチンは、ファイルフォーマットの高レベル記述を取り出し、分解されたデータのエンコードのほかに、分解の管理に関連するすべてのタスクを取扱う。また、フィルタ10の多くは、FILE_BUFFERを呼び出すカスタマイズされた分解ルーチンおよびPVSTRUCTルーチンの使用に直接代わるARRAYルーチンを含む。しかし、分解システム24の一構成は、PVSTRUCTルーチンであり、この考察は主としてそれらの動作に関するものである。
PVSTRUCT構造体は、ファイルフォーマットで決められたデータ構造体を分解し符号化するのに必要なすべての情報を含む。このPVSTRUCT構造体は、通常、複数のコンポーネントを含み、これにより、各コンポーネントに対する個別のアレー25を提供し取扱う。用語“PVSTRUCT”は、予測可変構造(Predictor Variable Structure)から来ており、予測(Predictor)は、データのエンコードを助ける為に多数のサンプルファイルを解析することから得られる統計データの使用を指す。また、可変(Variable)は、構造体(あるテキストブックでは「動的構造体(dynamic structures)」と呼ばれている)をサポートすることを示し、コンポーネントの数が各インスタンスに対する実行時間で変化できる。
分解言語は、決められた命令セットであり、PVSTRUCT構造体の分解を特定する簡潔な方法を提供する。命令セットは、広範な動的バリエーションのサポートを含み、コンポーネントの数が、外部因子のほかに、他のコンポーネントのファイル数に左右される場合も含む。決められた値、又は範囲の制約のような、他のファイルフォーマットデータが取り込まれる。命令セットは、また、分解器とフィルタとの間のデータ交換手段を提供する。
圧縮システムは、類似のアイテムをまとめる為に、ファイルを分解することに基づいている。圧縮システムの以下の記述において、実施例は、代表的なスプレッドシートファイルフォーマットに見られる構造体を示す。
実施例2
スプレッドシートファイルは、通常、多数のレコードを含む。各レコードは、レコードのタイプを示す16ビットワードで始まり、続く16ビットワードは、レコードの本文のバイト数を示す。次に、ファイル仕様は、レコードの内容を記述する。TABLE SIZEレコードの仕様は次のようなものである。
RecType=0x402
Rec Body Sixe=12
レコードデータ:
データには、複数のこのようなレコードが存在できる。複数のレコードが存在する場合には、各レコード中の同一のコンポーネントの値は互いに類似したものになって行く。これにより、圧縮システムは、圧縮比を高める為に、類似性を利用することができる。
圧縮システムは、好ましくは、以下のARRAY_XX構造体に基づく。
ARRAY_U8: ±符号なしとしてエンコードシステムによって扱われる8ビットデータアイテム用
ARRAY_16: ±符号ありとしてエンコードシステムによって扱われる16ビットデータアイテム用
ARRAY_32: ±符号ありとしてエンコードシステムによって扱われる32ビットデータアイテム用
ARRAY_F32: 32ビット浮動少数点用
ARRAY_F64: 64ビット浮動少数点用(「ダブル」)
ARRAY_F80: 80ビット浮動少数点用(「ロングダブル」)
ARRAY_STR: 各エントリは、その数がサイズ(文字列サイズ)によって与えられる数バイトを含む。
TABLE SIZEレコードに対しては、5つのアレーが作り出される(レコード仕様を参照して)。レコードが分解される度に、エントリは5つのアレーの各々に加えられる。
すべてのレコードが分解された時には、各アレー中のアイテムをエンコードする関数が呼び出される。この関数は、圧縮を最大にする為の多種類の関係を解明する(exploit)ことのできる多数のアルゴリズムを含む。オーバーヘッドが事実上要求されない点で、この実現は極めて効果的である。一つのエントリしか持たないアレーでさえも、効果的に圧縮することができる。分解システムがファイルを膨大な数のこれらの小さいアレーに変形することがあるので、この事は必要である。エンコード関数は、また、データのエンコードが終わった後にデータを解放することができる。
デコード処理は、上記シーケンスを逆にする。最初に、各コンポーネントアレーはデコードされる。次に、分解が逆になされる。
このタイプの分解は、広範囲に行わなければならないが、処理を簡素化するために、多数のツールが用いられる。それらのツールは、vstruct_defsと呼ばれる命令の使用に基づいている。TABLE SIZE実施例で続けるには、このようなレコードを分解する命令セットは、下記の通りとなる。
vstruct_def命令は、16ビット整数である。最初の3つのワードは、必ずレコードに関する一般情報を含む。残りのワードは、このようなレコードが現れた時の処置を自動化された分解システムに教示する命令を含む。この場合には、命令は可能な限り簡単であり、レコードの各コンポーネントに対するデータタイプのリストに過ぎない。分解器は、各コンポーネントに対して一つの配列を作り出し、そのタイプの一つのエントリを、そのタイプのレコードを分解する度に、配列にロードする。
次に、これらの命令に基づいてレコードを分解しエンコードする関数が提供される。さらに、デコード処理が、エンコーダの動作を逆になす。
vstruct_def命令は、前の実施例よりもさらに複雑な状況を処理することができる。便宜上、これらの命令の構造の概要が次に要約される。16ビット命令の上位バイトは、下位バイトにより要求されるアーギュメント(argument)である。下位バイトは2つの4ビット符号に分割される。最下位の4ビットは、命令のタイプを記述し、次の4ビットの意味を決める。このビットフィールド構造は、符号の下記の記述の中で使用される16進法で命令を極めて読み易くする。文字‘x’は、記述される符号ワードに影響を及ぼすことのない16進値をあらわす。
Bits 0=3は命令タイプ(opcode)を設定する。
opcode<=bの場合には、この値はコンポーネントのデータタイプを示す。上位フィールドは、下記のように使用される。
Bits 8-15は、使用される時には、アーギュメント(ARG)である。
Bits 4-7は、下記のように使用される。
xx0x:単純なエントリ。このタイプの一つのデータアイテムを読む
xx1x:そのタイプのARGエントリを単一アレーに加える
xx2x:複数のアイテムも同じアレーに加えるが、数はDataBuf[ARG]で与えられる
xx8x:値のアイテムは、仕様で限定される。値は、読み出され、チェックされるが、格納される必要はない。
xxfx:値の範囲はデータタイプによって許可される範囲よりも小さく制約される。
ARGは決められた範囲、又は決められたリストを選択する。
opcode=xxxdの場合:サブ構造体をスタートする
opcode=xxxeの場合:サブ−サブ構造体をスタートする
opcode=xxxfの場合:ビット4-7によって決まる特別な命令、タイプである。
xx0x:サブ構造体を終わる
xx1x:サブ−サブ構造体を終わる
xx2x:DataBufに値を加える(位置はARGにより与えられる)
xx5x:外部から与えられたレコード長に残るサイズARGのワード数を格納する
opcodeにより選ばれたデータタイプは、下記のように決められる。
#define CHAR 0
#define UCHAR 0
#define INT16 1
#define UINT16 1
#define INT32 2
#define UINT32 2
#define FLOAT32 3
#define FLOAT64 4
#define FLOAT80 5
#define STRING 6
#define STRINGZ 7
#define SYS_S1 8
#define SYS_SZ1 9
#define SYS_S2 0xa
#define SYS_SZ2 0xb
エンコーダにおいて、±符号あり整数と±符号なし整数の間の区別はされない。8ビット値は、常に±符号なしとして処理される。16ビットおよび32ビット値は、±符号ありとして処理される。この取り決めは、分岐(switch)ステートメントにおけるチェックの為の「場合(case)」の数を少なくするように、ルーチンを簡単化し高速化する為に用いられる。これは、圧縮性能には余り影響を及ぼすことはないが、ファイルデータが分解にも用いられる時(エレメント数がファイルデータの一部である時のように)には注意が必要である。
STRINGZは、ゼロで終る文字列を指す。それらは正規の文字列と同様にARRAY_STRに格納されるが、分解中の取扱いは異なる。例えば、正規の文字列を分解する時には、文字列の長さが与えられなければならないが、STRINGZは、その長さを見つけることができる。STRINGZは、ゼロで終わるchar(キャラクタ)を格納する必要はない。
SYS_Sxxタイプは、システム文字列を指す。通常、各pvstructの各コンポーネントは、各々が個別の配列に入れられ、個別に符号化されている点で独立している。小さいが極めて相関度の高い配列を持つことは、エンコードルーチンを用いる時に、数値データに対して極めて有効である。しかし、文字列に対しては、圧縮は複数のレコードからのテキストデータを組合わせるように多くのコンポーネント文字列を単一配列に入れることによって、しばしば改善することができる。システムは、2つの“System”文字列に対して、これらの組合わせコンポーネントを保持することを許容する。これらのシステムデータに加えられた文字列は、正規のタイプまたはSTRINGZタイプの何れも可能である。
説明の為に、2つの簡単な実施例を以下に示す。
実施例3
この実施例においては、特定の位置(location)の水深(depth)が8回にわたり測定され、データベースに格納される。
レコードコンポーネント
int16 locationX (位置X);
int16 locationY (位置Y);
int16 depth[8] (深さ[8]);
深さの測定は、極めて類似するため:それらを単一のアレーに入れ様とするものである。命令セットは、次の通りとなる。
但し、0x811は、
xxx1:データタイプはINT16である
xx1x:各レコードにおけるこのコンポーネントに対するインスタンス数はAGRによって与えられる
08xx:ARG=8
実施例4
この実施例では、レコードは、ある人の友達(friend)の年令(age)を格納する。
レコードコンポーネント
int16 num_friends (友人番号);
uchar ages[num_friends] (年令[友人番号]);
この場合のような、サイズの可変な配列は、‘C’プログラミング言語の構造体内で宣言できないが、しばしばファイルフォーマットにおいて起こる。このタイプの構造体は、動的構造体と呼ばれる。これは、命令セットにより分解することができる。
但し、0x12fは次の通りである。
xxxf:特別な命令
xx2x:ARGによって特定されたレジスタの中の以前の命令によって分解されたデータ値を格納する
01xx:ARG=1の時は、レジスタ1を使用する
および0x120は次の通りである。
xxx0:データタイプはucharである
xx2x:複数エントリ、レジスタ内に見つけられる数はARGで与えられる
01xx:ARG=1の時レジスタ1を使用する
レジスタは、PVSTRUCT構造体の一部として割当てられ、レコードを処理している間に、データを一時的に格納するのに使用される。レジスタ0は、特別な目的で使用される(次の実施例を参照)。フィルタを設計するプログラマーは、エントリの残りを任意に使用することができる。レジスタは、また、pvstructおよび残りのプログラム間のデータの交換に用いることもできる。例えば、大きいレコードの中に埋まった一つのアイテムが制御に必要な場合には、データアイテムを読む命令に続くxx2f命令を持つレジスタ内に、レコードをダンプできる。データアイテムは、次にファイルを読み書きする為の呼び出しの後に、レジスタの中で利用可能となる。
実施例5
COLUMUN TYPESと呼ばれるレコードに対するファイル仕様は次のとおりである。
RecType =0x413
RecBodySize =可変
レコードデータは次の通りである。
オフセットは1バイト値である。オフセットの数は、レコードサイズによって決まる。
このレコードに対する命令セットは次の通りとなる。
レコードの最後のコンポーネントは、1バイトコラムオフセットのリストである。これらは、互いに類似しており、すべてが単一の配列内に入れられる。この場合に、この様なエントリの数は、内部的には決定することはできず、以前に分解されたレコードサイズを使用しなければならない。0x15f命令は、レコード中に残る1バイトワードの数を決定することを分解器に命令し、この数は、常にレジスタ0に格納される。0x020は、複数の1バイトアイテムを単一配列に加えなければならず、このようなアイテムの数はレジスタ0で見つけられることを、分解器に教示する。
実施例6
文字列を含むRANGE DEFINITIONと呼ばれるレコードの実施例である。
RecType =0x215
RecBodySize =24
レコードデータ:
このレコードに対する命令セットは下記の通りである。
但し、0x1018:
xxx8:文字列がSYS_STR1配列に格納されることを示す
xx1x:長さはARGにより与えられる
10xx:ARG=16(0×10)
フィルタを書く人物による主観的な決定がここでは、行われる。文字列として扱われたコンポーネントは、また、上述のように、複数のエントリとして扱うことができる。その命令は次の通りである。
0x1010
但し
xxx0=UCHARタイプ
xx1x=アーギュメントで与えられた固定数
10xx=ARG=16(0x10 16進法)
文字列アレーを使用する解決は、エントリの性質に基づいていた。レコードはテキスト文字列を含む。配列エンコードシステムは、文字列を取扱うのに、多数の特別な性質を提供する。例えば、システムは完全な文字列合致をチェックし、極めて効果的にエンコードされうる(一つのエントリのすべての16charは他方の16charと合致する)。したがって、テキスト文字列は、文字列として格納される時には、必ずより効果的に圧縮される。これとは逆に、前段落では、文字列サイズを使用しない数値コンプレッサ内で、オフセットがよりよく扱われる。
実施例7
文字列を含むEXTERNAL REFERENCESと呼ばれる別のレコードに対するファイル仕様は次のようなものである。
RecType =0x17A
RecBodySize =var(可変)
レコードデータ:
このレコードに対する命令セットは次の通りである。
レコードの最後のコンポーネントは、ゼロで終る文字列である。文字列の長さは、終りの文字を探すことによって見出すことができる。文字列配列は、文字列サイズを格納しエンコードするので、終端の文字はセーブしておく必要はない。INTERN_SZはレコードサイズを示し、これは、予め判明していないが、内部的に決定されるので、レコードサイズは実施例5のColumn Typeレコードに対しては必要とされたように、エンコードされる必要はない。
実施例8
構造体、は別の構造体内に収める、つまり入れ子にすることができる。親構造体は、入れ子にされた構造体の複数のインスタンスを含むことができる。このようなCOLUMN STATUSレコードの記述は、次のようなものである。
Rec Type =0x7
RecBodySize =var(可変)
レコードデータ:
コラムデータエントリは、その状態がデフォルトに等しくない各コラムに対するオフセット、およびそのコラムの状態を示す。各エントリは2バイトである。
オフセット 1バイト
ステータス 1バイト
このレコードに対する命令は次の通りである:
レコードの最後のコンポーネントは、多数のオフセット/状態の対である。別個の配列を、オフセットコンポーネントおよび幅コンポーネントに対して作り出す必要がある。分解器は、対のシーケンスを調べ、アイテムをそれらの適切な配列に入れる。この一般的な手順は、サブ構造体により取扱われる。この場合には、サブ構造体は2つのuchar(±符号なしキャラクタ)コンポーネントを持つ。2つの命令が、サブ構造体を組み立てるのに呼び出された。
0x25f:この場合に数を設定するのに用いられる
xxxf:fは特別な命令を示す
xx5x:レコードの中に残ったARG長ユニットの数を決定し、これをレジスタ0に格納する
02xx:ユニットサイズは2(サブ構造体当たり2バイト)
0x02d:サブ構造体をスタートする実際の指令
xxxd:サブ構造体をスタートする
xx2x:レコード中のサブ構造体のインスタンス数は、register[ARG]内で、見つけられる
00xx:ARG=0(従って、数はレジスタ0にある)
後に続くすべてのコンポーネントは、End_SubStructure命令(0x000f)が現れるまで、サブ構造体のエレメントとして扱われる。命令リストが終るまでに、何も現れなければ、すべての残りのコンポーネントはサブ構造体の一部である。End_SubStructure指令が見つけられると、その後の命令は、メイン構造体の一部として含まれるコンポーネントを参照する。
分解システムも、また、サブ−サブ構造体(サブ構造体中のサブ構造体)をサポートするが、好ましくは、より高レベルの入れ子構造は許されない。なぜならば、これ程複雑になったファイルスペックは、未だ識別されたことがないからである。多くのサブ構造体、又はサブ−サブ構造体は、好ましくは、入れ子が一度に2レベル以上深まることのない限り、pvstructの中で必要に応じて限定することができる。即ち、End_SubStructure命令を介して親ネスティングレベルに戻る。
実施例9
場合によっては、アレーに書きこむデータのレンジは、ワードサイズによって許容される全数値レンジよりも小さいとして、ファイルフォーマットにより決められる。例えば、ファイル仕様は、0又は1の1バイトエントリを特定する。この情報は、分解システムによる正常チェック、およびエンコードシステムによる圧縮度の向上に使用できる。説明的なCOLUMN OPENレコードの記述は次の通りである。
Rec Type =0x11
RecBodySize =1
レコードデータ:
このレコードに対する命令セットは下記の通りである。
UCHARエントリの代わりに、D8_1がエントリとなり、8ビットワードサイズおよび1ビットの値の範囲を示す決められた符号が実際に用いられる。これらのレンジの制約は、ファイルの分解に影響を及ぼすことはない。レンジ制約エントリは、そのワードサイズにしたがって分解される。レンジ制約は、PREDICTOR構造体が自動生成を助ける為に用いられ、この構造体はコンポーネントの静的モデルを含み、アレーのエンコードを制御する。現在、決められた符号ワードは、次のフォーマットを用いる。
min_val=0;max_val=(1<<nbits)−1である、決められたレンジ。
DX_Y: X=ワードサイズ(8=uchar;16=int16;32=int32)
Y=nbits(nビッド)
min_val=1;max_val=(1<<nbits)であって、1で始まる決められたレンジ。
DX_Ys1: X=ワードサイズ(8=uchar;16=int16;32=int32)
Y=nbits(nビッド)
特別に決められたレンジ
DX_rY: X=ワードサイズ(8=uchar;16=int16;32=int32)
Y=PREDICTOR_CONTROLにおけるRANGEエントリのインデックス->spec_range[]
特別に決められた値のリスト:
DX_vY: X=ワードサイズ(8=uchar;16=int16;32=int32)
Y=PREDICTOR_CONTROLにおける値リストエントリのインデックス->spec_dlist[]
分解システム24(図2)は、好ましくは、Cプログラミング言語で書かれた関数ライブラリとして実現される。ライブラリのこの記述は、FILE I/Oルーチン、ARRAYルーチン、およびPVSTRUCTルーチンの3つのセクションに分割される。
分解システム24は、フレキシブルな入力/出力インターフェースを有するので、同一セットの分解ルーチンを、入力/出力フォーマットには関係なく使用できる。DOS、およびOLE2の2つのファイルフォーマットがサポートされる。しかし、通信ポートおよび他のI/Oオプションのほかに、他のファイルフォーマットにまで拡大できる。DOSフォーマットは、論理ストリーム位置が、通常、未処理のファイル位置と同一であるため、平易である。OLE2フォーマッは、内部割当てテーブルを用いるOLE2ストリームを再構築する為に、広範な符号の層を要求する。
カスタマイズされた配列変形器
分解システム24は、ソースファイル中の各コンポーネントに対してアレー25を作り出し、自動化された解析システムにより生成されたエンコード用パラメータ18によって援助された配列符号器28は、利用可能なアルゴリズムを用いて各アレー25をエンコードする最良の方法を見つける。場合によっては、これらの自動化されたデフォルトメカニズムは、カスタムルーチンを用いることによって改善できる。カスタムルーチンは、変形器と呼ばれる。なぜならば、カスタムルーチンは分解されたアレー25で始まり、結果は、配列符号器28に送られるアレー25の異なるセットだからである。
カスタマイズされた配列変形器26の主な役割は、コンポーネント間のモデルの実施である。一つのコンポーネントからのデータが、別のコンポーネントの符号化を援助できる。自動化されたデフォルトメカニズムは、各コンポーネントを個別に処理し、圧縮性能はコンポーネント間の関係を解明することにより、時には、改善できる。このようなシステムは、アレー25中のすべての値を正確に予測でき、これより、アレー25に符号は必要ない。カスタマイズされた配列変形器26は、シミュレータになり、ソースデータファイルを生成するプログラムの機能性を複写する。各カスタムルーチンは、単一フィルタ10に関連する特定の問題を解決する別個の創造物である。これらのルーチンの多くは、特定の問題に対する解決手段として独立して適用される。
カスタムルーチンは、実行可能なサイズを構築して拡大するために、多くの労力を要求するので、カスタムルーチンの使用は、好ましくは、総合的な性能が大幅に急増すると考えられる場合に制限する。多くのファイルフォーマットにおいて、少数のコンポーネントがデータの大部分を編成する。カスタマイズされた配列変形器26は、通常、これらの頻度の高いコンポーネントの圧縮度を改善でき、自動化されたデフォルトメカニズムは、残りのコンポーネントの十分な圧縮を達成する。
システムの他の部分は、カスタマイズされた配列変形器26が書かれるコンポーネントに関しても、十分な役割を果たす。分解システム24は、コンポーネントの隔離と、カスタム作業を必要とするコンポーネントの識別および解析を簡易化する。配列符号器28および自動化された解析ルーチンは、カスタマイズされた配列変形器26によって生成されたアレーをさらに処理する。配列符号器28の能力によって、カスタムモデリングに対する革新的なアプローチが可能である。このようなアプローチの一つは、サブディビジョンによる圧縮であり、アレー25を複数のアレー25に変形し、その各々を、配列符号器28によって解明された方法で内部的に相関させる。
この一例として、上記実施例1における符号化された数字を考える。これらの値は、32ビットの整数の単一アレー25に分解される。しかし、これらの値は整数ではなく、むしろ、エントリは4つの異なるタイプの一つであることを2つのビットが示し、残りビットが各タイプに対して異なる意味を持つ、符号である。新しいアレー25が、2ビットフラグに対して作り出され、次に、分離した配列が各4つのタイプに対して作り出される。自動化された分解システムおよび配列符号器28は、これらの各5つのアレーに対して異なった最適モデルを見つけることができ、エントリの少ないアレーの取扱いにおけるシステムの効率は、複数のアレーの使用から、オーバーヘッドを除去する。この結果として、これら5つの高度に相関化されたアレーを符号化して得られる全符号サイズは、単一オリジナルアレーの符号化によって得られるサイズよりも十分に小さい。
カスタマイズされた配列変形器が、複数のフィルタ10によって使用される場合、リソースにすることができる。リソースは、複数のフィルタによって使用される個別のモジュール(Windows環境におけるDLL)である。リソースを用いることの主たる理由は、冗長符号を減らすことにある。
配列符号器
大抵の圧縮アルゴリズムは、データブロックを変形し、その結果を少ないビットで頻度の最も高い値をあらわす方法を用いてエンコードするプロセスを含む。前記の変形は、数回継続することが可能であり、変形ごとに複数の出力ブロックを作り出すことができる。例えば代表的なLZ77符号器において、ソースデータは、4つの異なる配列(array)に変形される。すなわち、合致シーケンスが見出されたか否かを示す1ビットフラグのブロック、以前のシーケンスと合致しなかったバイトの配列、および一つのシーケンスが見出された時の合致シーケンスの長さと位置、である。最初の3つの配列は、しばしば単一の配列に結合されてからハフマン符号化されるのに対し、合致位置は、レンジ変形されてからハフマン符号化される。
このタイプの圧縮システムは、ソースアレー(Array)が変形されて一つ以上のアレーになり、これらがまた他の変形を行うようなプロセスネットワークとみなすことができる。各パスの終わりには、確率的なモデルをエンコードされた出力に変形するハフマン符号器、または算術符号器のような低レベル符号器がある。データ圧縮のための従来のアプローチは、僅かな数の変形を持ち、それらへの固定化されたパスを定義する“圧縮アルゴリズム”に基づいている。これらの固定されたシステムは、僅かな数のコンポーネントを作り出す従来の分解システムに必要とされるエンコードを扱う。
本発明による好ましい分解システム24は、異なるフィルタ10の異なるコンポーネントをあらわす多数のアレー25を作り出す。データタイプ(文字列、浮動小数点(フローティングポイント)値および各種のワードサイズの整数)は、コンポーネントごとに異なっていることが考えられる。これらのコンポーネントアレーのそれぞれの中のデータは、多様な方法で内部的に相関化できる。最適の圧縮を実現するためには、これらのパターンを利用する圧縮アルゴリズムを用いることが必要となる。また、最適アルゴリズムは、その時利用可能なメモリおよび速度と圧縮能力との兼合いの必要性に影響を受ける。各アレーにおけるエントリの数もまた大幅に変化し、異なる符号化アプローチが、異なるアレーカウントにおいて、より効率的に作動できる。
好ましい符号器システムは、各コンポーネントの静的モデルを利用することができる。このモデルは、フィルタが使用されているタイプの多数のソースファイルにおけるこのコンポーネントのインスタンスを解析することにより、得ることができる。このシステムは、“静的”でもなく“適合的”でもなく、むしろ役に立ちさえずれば静的モデルからの情報を使用する一方、各アレーに見出される個々のデータに完全に応答できる。静的モデルは、変形アルゴリズムの選択を導くこと、および各種のアルゴリズムに対する予め算出されたエンコードテーブルを提供することができる。
従って、好ましい符号器システムは、各アレーをエンコードするための何千種の方法をサポートせねばならない。プロセスシステムは、固定されたアルゴリズムではなく、むしろ動的ネットワークであり、このネットワークを通る各パスは、各種のエンコードアルゴリズムを作り出す。ネットワークを通るデータのパスは、静的モデルならびにアレーへのエントリ数、速度およびメモリ上の制約のような動的な考慮により導かれる。
好ましい符号器システムの持つ一面は、ネットワークを制御するためのアレーカウント(アレーへのエントリ数)の広汎な使用にある。低いカウントでは、システムは、サンプルデータベースの解析から作り出される静的モデルに全面的に依存する。カウントが増大するにつれて、システムは、特定のアレーの特性に対する適合度の高いアプローチを使用する。なぜならば、適合モデルの使用から得られる利点が、適合モデルのエンコードのオーバーヘッドよりも重要になり始めるからである。カウントの低い時のオーバーヘッドは、ほとんど完全に除去されるから、エントリが一つしかないアレーでも、効果的にエンコードできる。オーバーヘッドが無くなることにより、サブディビジョンによる圧縮と呼ばれる新しいタイプのアプローチを使用することが可能となり、この場合には、ソースアレーは、多数の高度に相関化された小さいアレーに変形される。
また、好ましい符号器システムは、出現したコンポーネントの多くに対して圧縮能力を高める多数のオリジナルアルゴリズムを含む。浮動小数点および文字列アレー変形のようなルーチンは、これらのコンポーネントをエンコードするための以前の方法を十分に上回る利点を提供する。
図3は、配列符号器のフローチャートである。他のルーチンとの間のインタフェースを簡単にするために、配列符号器の好ましい導入は、すべてのアレータイプ(各種のワードサイズ、文字列等の整数および浮動小数点)を扱う単一エンコードルーチンを含む。次に、マスタールーチンが、各アレーを図示されたデータタイプに対する特殊なエンコードルーチンに導く。
特にステップ32において、アレー25タイプは、文字列配列としてチェックされる。アレーが文字列配列の場合には、文字列符号器40が呼び出される。配列が文字列配列でない時には、アレー25タイプは浮動小数点(フロート)タイプとしてステップ34においてチェックされる。アレーが浮動小数点タイプであれば浮動小数点符号器50が呼び出される。アレーが文字列タイプでも浮動小数点タイプでもなければ、整数タイプであり整数符号器70が呼び出される。
図4は、図3の文字列符号器40のブロック図である。ここでは、用語“文字列(String)”は、文字のマルチバイトシーケンスを記載するために用いられる。文字列アレーは、一つ以上の文字列を含むことが可能であり、そのそれぞれは異なる文字列サイズ(そのシーケンスでのバイトの数)を持つことができる。文字列符号器は、まず、文字列合致判断器41を用いて、受取った文字列データにおける文字列合致をチェックできる(文字列全体がアレーの中の他のすべての文字列に合致する場合)。文字列合致判断器41は、配列符号器28からの文字列データ、または静的モデル43により供給され予測された文字列のリストについて作動できる。その後にアレーは、いくつかのメカニズムによりエンコードされ得る。合致していない文字列のような小さいアレーは、テキスト符号器47により処理され、この符号器47は、LZ変形の一種を用い、文字列位置を利用し、静的モデルを用いて辞書を準備(Prime(プライム))し、または符号化テーブルを提示できる。合致符号の大きなアレーは、ブロック分類アルゴリズムおよび他の公知の技術のような配列符号器28により提供される標準テキスト圧縮ルーチンにより扱われ得る。テキスト符号器47が静的モデル43により使用される時には、符号器は静的モデル43により準備される。
図5は、図3の浮動小数点符号器50のブロック図である。浮動小数点アレーは、32、64、または80ビットのフォーマットのいずれをもとることができる。浮動小数点符号器は、配列符号器28から浮動小数点データを受取り、フルワード(2倍精度浮動小数点値のすべての8バイトのような)のみの合致を調べて合致していない値を持つアレーを戻すLZ符号器51を用いて、まず、以前の値との合致の有無をチェックする。次に、合致していない値は、ベース10変換器53の中でベース10記号に変形される、なぜならば、多くのデータベースは、ベース10値として当初エントリされた浮動小数点値を含み、またアレー符号器28を通った値をそれらのネイティブフォーマットでエンコードすることが、より有効であるからである。ベース10仮数、指数および変換エラーは、配列符号器28により個別に処理される。ロスのない符号化のために、オフセットは変形時の僅かな丸め誤差を修正するように格納されねばならないことがある。ベース10に効果的に変換されなかった値は、次に、文字列符号器40(図4)を用いてエンコードされる。
自動化された解析システム
分解システムは、ソースファイルを多数のコンポーネントに分解する。多数のサンプルファイルの中の同じコンポーネントを調べることにより、静的モデルは、アレー符号器の中のコンポーネントのアレーの圧縮を高めることのできるコンポーネントで構成できる。自動化された解析システムは、最良のこのようなモデルを見出す。
図6は、好ましい自動化された解析システムのフローチャートである。ステップ62においては、動作は、まず、全ソースファイルの中の特定のコンポーネントのすべてのインスタンスを持つファイルに、ソースデータファイルのすべてを分解することにより簡単化される。次に、これらの分解されたファイルは、ステップ64において解析される。この解析は、高速である必要はない、なぜならば、その作業はオフラインで行なわれるからである。次に、フィルタに対するすべてのコンポーネントに対する結果は、多数コンポーネントモデルの中で冗長データを消去する単一の“Predictor Data”ファイルにステップ66で統合される。
整数データ用の符号器
整数データに対する符号器は、3レベルシステムに基づくのが望ましい。高レベル操作は、合致値のシーケンスに対する距離をエンコードするLZアルゴリズム、又はある値を以前の値からのオフセットに変換する差変形のようなデータブロックの中のデータアイテムと特定の以前のデータアイテムとの間の関係を解明するモデルに基づく。中レベル操作は、ソースデータブロックにおけるデータ値の位置とは無関係なモデルをベースとする。操作により、特定値がブロック全体の中で生じる頻度のようなデータ、又はデータ値が各種の数値範囲の中にある頻度のようなデータの特性を解明する。データ値を1ブロックの符号に変形する操作が行われる。低レベル符号器は、これらの符号を確率的なモデルに基づいて圧縮する。2つの公知の低レベル符号器は、ハフマン符号および算術符号を用いたものであり、そのいずれもが本発明のシステムに使用することができる。下記の考察は、中および高レベルシステムに限定することとする。
高レベル符号器は、単一の解法ではなく、むしろその各々が特定のタイプのデータセットに関して有効な方法とモデルの集合体である。問題のこの部分については、単一の解法は存在しない。何故ならば多くの他の方法は同じ汎用の目的に用いられ、あるいはこの中で考察されているものとは別の性格を持つデータセットに対する解法を提供するためである。記載される方法のあるものは、標準的な技術であり、又他のものは標準技術の独自の改変である。これらの方法を記載することの外に一般的なフレームワークがこれらの高レベルモデルを統合するために、又それらの変形から得られるデータが中レベル符号器により如何に効果的に処理されるかを示すために記載される。
中レベル符号器は、アルファベットのサイズを低レベル符号器により有効に処理することのできるものに減らさねばならない。通常の数値ワードサイズは、しばしばハフマン符号、又は算術符号を用いた従来の手段により処理することのできる以上のシンボルを必要とする。例えばこれらの符号器の処理容量をはるかに上回る32ビット整数のアルファベットをあらわすのに4,000,000,000以上のシンボルが必要である。中レベル符号器は、数値データブロックにおいて公知の2つの特性を利用する。
第1に特定データ値は、しばしばデータブロックの中で高い頻度で現れる。各データブロックは、これらのマジック値の独自のセットを持つことが可能であり、これらの値は、数値範囲の中の何れかのポイントに生じることがある。
第2にデータ値は、数値範囲に関して不均一に分布することがある。例えばあるデータブロックにおいては小さい値は大きな値よりも更に頻度の高い傾向がある。
図7は、整数符号器の高レベルの動作を示すフローチャートである。整数符号器70は、ステップ71においていずれの変換が用いられるか、又これらの変形を実施するのに必要な他のパラメータを決める高レベルモデルを構築することにより始まる。このデータは、ステップ73においてエンコードモジュールデータ構造の中に格納され、図示されたようにプロセス中、各種のステップで使用される。
最初のオプションは、ステップ75における初期の分割器であり、これは値が低いバイトが高いバイトとは無関係に高度に相関化される時に用いられる。これに対する通常例は、ランダムデータセットの場合に予測される10%よりはるかに高い頻度でベース10値の低い桁の中にゼロが出現することである。高レベルモデラ(符号器)がこのような状態を検出した時には、ステップ77においてソースアレーをソース値の上と下の桁をあらわす別個のアレーに分離させる。分割器によって戻された複数のアレーは、別個に処理される。
アレーデータは、次にステップ79において合致アルゴリズムがデータに用いられるべきか否かを決めるためにテストされる。ステップ81における合致アルゴリズムは、冗長データアイテム(即ち、配列の中の以前の入力に完全に合致するもの)を取り去る。合致アルゴリズムは、ステップ83においてデータを合致したデータをもつアレーを格納する。合致しない値は、ステップ85においてサイズオーバアレー処理器により処理される。
システムは、整数アレーのサイズを効率の改善とデザイン上の問題のいくつかの簡単化に役立つ固定された最大値に限定するのが望ましい。アレーカウントがこの最大値を越えると、オーバーサイズアレー処理器(ステップ85)は、配列を一連の小さいアレーに分割する。次にこれらのアレーは、ステップ87において、残りのルーチンが通常データタイプに関して操作することができるように、int32に変換される。これらの変形は、合致アルゴリズム(ステップ81)の後に行なわれる、何故ならば合致アルゴリズムは、大きなブロックに関して、より効率的に機能するからである。
次にint32データがステップ89において数値変形が次に行なわれるか否かを決定するためにチェックされる。ステップ91において数値アルゴリズムは、以前の値を用いてアレーを予測された値からのオフセットに変形する。これらのモデルからのオフセットは、次にステップ93において分割器決定ブロックに渡される。
上述のように分割器機能が必要な時には、分割器操作がステップ95において実施される。分割器機能は、別個に処理される複数のアレーを戻す。
ステップ97において、繰り返し変形(ステップ99)を用いるべきか否かの決定が行なわれる。ステップ99の繰り返し変形は、合致変形の1タイプであるが、すべての他の変形の後に行なうことができる。何れの場合にもプロセス動作は中レベル符号器100に渡される。
分割器がフローチャート中の2箇所(ステップ77および95)で示されていることに留意する必要がある。これは、分割化が、下記の変形の一つが用いられる時に、数値変形の前に、又は合致変形の後に定常的に行なわれるためである。合致、数値変形および繰り返し変形は、データアイテムとエンコードブロックの中の前のデータとの間の関係を解明する。
“高レベル”の用語は、この符号器の構造に関係することに注意すべきであるが、この符号器と総合的な圧縮システムとの間の関係には無関係であることにも注意すべきである。データブロックをこの符号器に送る前に総合的なシステムは圧縮を高めるために、例えば類似の成分の配列を生成するためにソースデータを分析し、各種の成分の間の相互関係を利用するような多くの事を行なうことができる。ここに記載の操作は、システムレベルで取り扱うべきものを除外する。この記載は、又総合システムがバイレベルデータ、テキスト、ビットマップイメージ、等のような特殊化された符号器の使用がより適切なデータタイプを選び出すことを前提としている。
高レベル符号器の目的は、データブロックの中の異なったデータアイテムの間の関係を解明することにある。現在では上記の関係は、次の2つのタイプ、数値変形および合致変形が対象となる。数値変形は、ブロックの前のデータ値に関して行なわれた算術符号操作の関数としてのデータ値D〔i〕を予測する。この時、D〔i〕は、変形方程式により予測された値からのオフセットとしてあらわされる。変形は、変形された値をエンコードするのに必要なビットの数がオリジナルの値をエンコードするのに必要な数よりも少ない時には有効である。合致アルゴリズムエンコードは、D〔i〕とデータブロックの中の前の値との間を合致させる。アルゴリズムは、合致値の位置をエンコードするのに必要なビットの数が〔i〕をエンコードするために必要な数よりも少ない時には有効である。両タイプの操作は、同じブロックにおいて行うことができる。例えばD〔i〕をD〔i−1〕からのオフセットとしてあらわす差変形の次には、これらのオフセットのマッチを見出す合致アルゴリズムが続くことができる。
データブロックに関して何れの操作を行なうべきかに関する決定はモデラ(符号器)により行なわれる。アルゴリズムに考えられる各組合せを用いてフルデータブロックをエンコードすることにより最大の圧縮を実施することができるが、これには最も現実的な用法が節約できるよりも多くの処理時間を必要とする。エンコードされるべきデータブロックのサブセットに関する代案をテストするとともに、変形されたデータブロックを完全にエンコードすることなしにそのエンコードコストを推定するモデルを作ることにより、スピードアップすることができることの決定がなされる。符号器は、圧縮性能に対して次のような兼合い(トレードオフ)方式のプロセスサイクルの能力を提供する。つまり、アプリケーション環境が圧力時間のより少ない状態に在る時には、圧縮性能を改善するための代案の決定に、より多くの時間を費やすことができる。各アルゴリズムの考察は、そのアルゴリズムが用いられる時にエンコードコストを推定するために用いられるモデルの記載を含む。
高レベル符号器に於ける第1のステップは、変形が使用されぬ時にはデータブロックをエンコードするコストを決めることである、何故ならばバイパス符号化テーブルは、他の代案の有効性を決定するために後で用いられるからである。バイパスモードは、サンプルデータブロックを生成し、それを中レベルシミュレータに送ることによりテストすることができる。後述の中レベルシミュレータは、中レベル符号器に送られるブロックのエンコードのコストを推定するための高速メカニズムを提供する。サンプルデータブロックのサイズは、時定数によって調整される。中レベルエンコードは、データ値の位置には無関係であるために、サンプルは一連のアルゴリズムを決定するために必要なサンプルブロックを選ぶ代わりにデータブロック中にランダムに分散することができる。他の高レベルモードを決定する時に、モデラはソースデータブロックの中の各アイテムをエンコードするためのコストを推定するために中レベル符号器により生成されたエンコードテーブルを使用することができる。
最も簡単な関係は、ある値を前の値からのオフセットとしてエンコードすることである。これは、ほぼD〔i〕=D〔i−1〕であることを予測し、D〔i〕を前の値からのオフセットに変形する。
上記のシステムは、又ノイズの影響を受けにくい値に関してある値がN回の以前の入力に関する平均値に等しいことを予測する点で、変化に対応する。
式(1)は、式(2)においてN=1である場合と見なすことができる。しかし式は、更に簡単な式(1)を処理する時に高い速度を利用するための別個のルーチンを用いて実行することができる。
あるデータタイプ(音響、画像、等)は、更に複雑な関係を利用することができるかも知れないが、他の式が汎用整数符号器に統合されることのないために、このようなデータタイプは特殊なルーチンを用いてエーンコードされることが望ましい。
モデラは2段階で操作される。第1段階は最良の数値モデルを選ぶが、これは我々のこの場合の設定では式(2)のNの最適値の選択である。N=1、2および4のような幾つかの値をチェックし、次に生じるオフセットが最小になるNの値を選ぶことで充分である。符号化コストのもっとも正確な表現は、オフセットのベース2対数を比較することであるが、オフセットの絶対値(abs)を判定することで充分である。
但し、ct=データブロックへの入力の数
このルーチンは、エンコードコストを推定するために必要な、より詳細なルーチンが一つの代わりの数値で実行されるだけでよいように、最適の数値関係を迅速に見出すことができる。実際の符号化コストを推定するための現行のルーチンは、バイパス決定のために行なわれていたように中レベル符号器を用いたサンプルデータセットのエンコードに基づく。
3つの合致アルゴリズムの実施されていることが望ましい。つまり、整数を用いて使用するのに多くの改善の行なわれたLZアルゴリズムのバージョン、繰り返し変形、およびMTF(ムーブ−トゥ−フロント)アルゴリズムである。
基本的なLZアルゴリズムは、ワードサイズを定めないが、大抵の手段は、1バイトワードを用いることを基本としている。好ましいシステムは、現行では1、2および4バイト整数を含むフレキシブルワードサイズを可能にする。ルーチンは、3つの出力アレーを生成する。
(合致しない値について)
これらは合致シーケンスの一部ではないデータブロックの中の整数である。データタイプは変化しない。つまり、ソースアレーがint32であった時には合致しない値も又int32であろう。このコンパクトにされたアレーは圧縮のために整数符号器の低いレベルに送られる。
(長さについて)
合致シーケンスにおいて、長さはそのシーケンスにおいて合致していたワードの数を示す。上記以外であれば長さは次の合致の前の合致しない値の数を与える。
(位置について)
位置は合致シーケンスのスタートに対するオフセット(ワードの数であって、バイトではない)を与える。
アルゴリズムの手段における別の工夫は、合致の判定のための動的システムである。従来のLZ手段は、合致しないデータアイテムをエンコードするための固定コストを前提とするが、バイパス判定の結果が利用可能であり、この判定は各々の異なった合致しないデータ値をエンコードするコストの優れた推定値を与える。例えば値1019が25%の頻度で出現する時には、その合致しないアイテムとしてのエンコードコストは2ビットであり、この事は合致シーケンスとしてこのような2つの値の合致をエンコードすることは有効でないことを意味する、なぜならば合致をエンコードするコストは、合致しない入力としての値をエンコードするコストを上回るからである。動的判定のこのシステムが実施される度合いは、各リアルタイム状況下での速度/圧縮の兼合いに従って調節することができる。
繰り返し変形は、繰り返し符号を持つ繰り返された値に置き換えるものである。好ましいシステムは、標準手段に対する幾つかの改善点を提供する。第1に繰り返し符号は動的に調節される。即ち各データブロックのために用いられた繰り返し符号は、データブロックの次の2つの特性、つまり、データブロックのサイズとブロック中の繰り返し値の数に従って調節される。第2に特殊なRTE(ラン−トゥ−エンド)符号は、繰り返しシーケンスがブロックの終りに迄続くことを意味する。最後に大きな値をあらわすために特殊なコードも存在する。繰り返し符号のためのスペースを設けるために合致しない正の値は、上方に繰り返し符号の数だけシフトされる。我々の、数値レンジの増えることを避けるために正のレンジの終りの値は、特殊符号を用いてエンコードされる。
従来のMTF符号器は、小さいワードサイズを前提とするので、すべての考えられるシンボルを合致距離としてあらわすことができる.大きいワードサイズは、限定されたサイズのバッファを用い、合致しない値の出力配列を生成することにより考慮され、上記の出力配列は、エンコードのために整数符号器のすぐ次のレベルに送ることができる。あるデータ値がこのバッファの中の値に合致する時には、バッファの中の合致値インデックスを用いてあらわされる。別に、次のバッファ合致の前の合致しない値の数が記録される。バッファのサイズは、バイパステスト結果に従って調節される。時間が許す場合、あるアイテムを合致しない値としてエンコードするためのコストは、バッファ合致としてそれをエンコードするコストとの間で兼合いを求められるが、低いオーバーヘッドのためにこの事は、MTFアルゴリズムにとってはLZに対する場合に対する程には重要な問題ではない。
このMTFアルゴリズムは、個別のアイテムが合致するが、多ワード合致シーケンスが少ない時には、整数LZよりも能力が優れている。合致の冗長化された探索を避けるために両アルゴリズムは、単一の変形ルーチンに統合されて別個の出力配列を形成し、その後により性能の良かった方を選ぶことが望ましい。
小さいサンプルセットを用いて合致アルゴリズムを判定するよりは、変形は完全なデータブロックにおいて実行され、次にそれらを中レベルシミュレータに送るために結果を判定することができる。アプリケーション環境が時間的に極めて制約される場合に、この判定はブロックの一部のみが変形された後に行なわれる。
多くの現実のデータセットの中では、値の表現におけるベース10の個々の桁は圧縮を高めるために解明することのできる特性を持つ。これらの特性は“分割化(splitting)”と呼ばれるテクニックを用いて解明される。整数の配列は、2つ以上の整数の個別の配列に分割され、ここでは各配列は、ソースアレーの中の桁のサブセットから生成される。分割された配列のエンコードのための全コストが、入力ソースアレーをエンコードするためのコストよりも小さい時に分割化は有効である。分割化を用いて有効に処理される配列の一つの例は次のようなものである。
分割の前のソースアレーは、21ビットレンジ(10795484−13195399)の中でランダムに変化する様に見える。然し、分割の後には第1行は4ビット/入力においてエンコードすることが可能であり、第2行は消滅し、第3行は7ビットレンジ(399−501)に所属する。符号化のための全コストは、ソースアレーを符号化するコストの約半分である。更に各配列はしばしば幾つかの方法で分割することができる。
分割化は、それが数を判定する他の方法にとって見出せない桁分野の間で時として起きる相関性を見出すために有用である。この事は特にここでは重要である、何故ならばレンジ再マップのために記載すべき変形のあるものがランダム数のような低いビットを処理するからである。分割化を用いなければ多くのゼロの存在のような低い桁における相関性は失われることになる。
高レベルモデラは、分割化に関する幾つかの決定を行なわねばならない。第1にモデラは、使用すべき最良のモデルおよび分割化が他のエンコードのための代わりの方法よりも有効であるか否かを決定する。第2にモデラは、合致アルゴリズムが分割化の行なわれる前に実行すべきか否かを決定する。最後にモデラは、例えば数値変形、又は合致アルゴリズムの一つのような何れの高レベルアルゴリズムが分割化の後に分割アレーの各々に実行すべきかを決める。
分割化に従うべき関係は、通常ベース10の表現においてしか可視的でないために、分割器の第1の動作は、データをベース10の表現に変換することである。場合によっては、ソースデータは当初は英数字表現であることも考えられ、このような場合の変形時間は、整数符号器に対する可視的アーギュメントとしてデータブロックの文字列表現を用いることにより、節約される。
分割器アルゴリズムを判定するためにヒストグラムが各桁に対して作られ、その桁分野の中の10の可能な値の出現の頻度を示す。これらのヒストグラムは、次に個別の配列に分割すべき桁分野を特定しグループ化するのに用いられる。配列は、次に繰り返し変形が有効であるか否かをチェックされ、次にエンコードのためのコストは中レベルシミュレータを用いて推定することができる。
図8は、整数符号器の中レベルの動作を示すフローチャートである。アレーデータは、ステップ10において入力され、先ずステップ103においてレンジマップにより処理される。パックすべきエキストラビットは、ステップ105において格納される。得られたレンジ符号からステップ107においてMTF符号器を用いるべきか否かの決定が行なわれる。この決定が肯定的であればMTF符号器がステップ109において実行される。最終レンジ符号は、ステップ110における低レベル符号器に対して与えられる。
この中レベル符号器は、低レベル符号器により効果的に処理することのできるサイズにアルファベットのサイズを減らし、又圧縮を最大にする方法で実施せねばならない。この符号器は、レンジ再マップ(ステップ103)およびオプションの変形後のMTF(ムーブ−トゥ−フロント)変形(ステップ109)を含む。レンジ符号化は、位置成分をデータセットに再投入し、このレンジ符号の中で当初の値が合致していなかった場合にも近くのレンジ符号に合致する傾向を示すことがある。この現象が生じた場合、MTF変形はこれらのシンボルをエンコードされたデータの流れに変換する低レベル符号器に送る前に実行される。中レベル符号器の出力は、低レベル符号器に送られる。中レベルシュミレータは、又エンコードコストを推定するための高レベルルーチンにより用いることもできる。
レンジ再マップは、整数をコードワードに変換する。各入力値は、単純なコードワードにより表現される。コードワードの数は、通常考えられるデータ値の数以下であるから、コードワードのあるものは考えられる一つのソース値以上のものを表現することができる。これらの場合においては、コードワードはある範囲の値を示し、レンジ再マップはオフセットをこの範囲内にビットパックする。これは標準的な圧縮技術である。
標準アプローチは、予め限定されたレンジテーブルを使用し、低レベル符号器がそのデータブロックにおいて最も通常のレンジに対するレンジ符号に対して少ししかビットを使用せぬことを可能にする傾向を持つ。好ましいシステムは、各データブロックに対して最適化されるレンジテーブルを作り出し、そのレンジ内のオフセットをパックするために用いられるビットの数を有意義に減少させる。例えば固定されたレンジテーブルは、そのレンジにおける各入力に対するオフセットをパックするために16ビットを必要とする0x10000で始まり0x20000で終るレンジを限定することがある。然しこのレンジ内の入力のすべては、値0x18000を持つことができる。好ましいシステムは、これを見出し、エキストラビットを必要とせぬこの値に対するエキストラレンジを作り出す。
システムは、データブロックに高い頻度で出現する特定値を記載するために“マジック値”の用語を使用する。これらの値は、特殊な処理を施される。なぜならばデータレンジの中で出現する場所とは無関係にそれらはエキストラビットを用いることなしにパックすべきであるからである。残りの“非マジック”に対しては、データブロックの中の値の分布に適合する最適化レンジが生成される。
第1ステップは、ターゲットテーブルサイズを決定することである。テーブル入力の各々は、レンジ再マップおよび低レベル符号器の両者に固定されたオーバーヘッドを必要とする。データブロックが小さければ使用されるテーブルも小さくすべきである。しかし大きな数値レンジを持つデータブロックは、より優れたテーブルを用いて、より多くのビットを節約することができるために、テーブルのサイズは、又データレンジに対しても調節すべきである。各テーブル入力に対する入力の目標数は、min頻度と呼ばれ下記の式により計算される。
min頻度=入力のターゲット数/ターゲットテーブルサイズ (4)
最終テーブルサイズは、目標からかなり異なったものであるが、これによりテーブルの構成に用いるための値が得られる。データブロックの中の各値の頻度を示す分類されたヒストグラムが次に生成される。このテーブルは、正の値のためのセクションと負の値のためのセクションの2つのセクションを持つ。追随型レンジテーブルを生成するための一般的な手順が正のテーブルに対して記載される。
頻度>0を持つ最小値から始め、これを我々の最初のレンジの“ベース”と呼ぶ。その頻度がmin頻度よりも小さい時には、レンジの中に含まれる値の全頻度>min頻度となるまで、別の値を加えてレンジを拡大する。この時点でレンジは次のサイズを持つ。
レンジサイズ=ベースの最終値 (5)
レンジの中の考えられるすべての値を表現するために必要なビットの数、nビットを求める。レンジをサイズ1<<nビットまで拡大する。
次のレンジは下記から始まる:
ベース〔i+1〕=ベース〔i〕+(1<<nビット〔i〕) (6)
次の値>=ベース〔i+1〕に達するまでヒスト値を飛び越し、次に続くレンジを生成する。負のテーブルは同じ方法であるが、−1から始まり、大きな負の値に移行する。
実施例10
この実施例は、一般的なアプローチを紹介するが、同時にマジック値を扱うことのできるように改変される。その頻度>min頻度である値はマジック値であり、エキストラビット(Eビット)を必要とせぬ別個のテーブル入力に到達すべきである。テーブルを作るプロセス中に一つが出現すると、マジック値を保持する特別リストに加えられる。データレンジは、レンジからマジック値を除去するためにコンパクト化される。
min頻度=10の場合には、
この実施例においてmin頻度が10であり、新たなレンジが値100においてスタートすべきであれば、‘102’の値はマジック値であり、そのベースが100に在るレンジから削除される。このレンジに残る4つのすべての値(100、101、103、104)は、次に2ビットオフセットを用いて表現することができる。
レンジテーブルは、各レンジに対するマジック値とEビット(オフセットをエンコードするためのエキストラビットの数)を用いて再構成することができる。Eビットをエンコードするためにその値が前のEビット入力からのオフセットをあらわす2ビットコードが各入力に対して生成される。
0:Eビット〔i〕=Eビット〔i−1〕−1
1:Eビット〔i〕=Eビット〔i−1〕
2:Eビット〔i〕=Eビット〔i−1〕+1
3:Eビット〔i〕=Eビット〔i−1〕+オフセット
但し、オフセットは、多数のEビットを用いるサインされた値としてパックされる。
これらのコードの4つは、パックされて1バイト値にされ、次に低レベル符号器が1バイトコードワードをエンコードするために予め限定された静的テーブルと共に使用される。サンプリング間隔が限定され、各サンプルグループに対してエキストラビット値(オフセットに対して必要なビットの最大値)が調節される。いくつかのセットの低レベルエンコードテーブルも又生成され、コードテーブルはサンプルグループの中の動作の量(変更された全ビット)により選ばれる。
マジック値のリストをエンコードするために、リストは格納され、前の値からのオフセットに変換される。これらのオフセットは次に2ビットコードを用いてエンコードされる。
0: オフセット=1
1: オフセット=2-5、2つのEビットをパックして何れかを選ぶ
2: オフセット>=6、オーバーサイズオフセットに対し特殊エンコード手順を使用すること
3: 前のオフセットをrpt ct(データブロックへの入力の数)回繰り返すこと。rpt ctを見出すために用いられる2ビット符号は次の通りである:
0:rpt ct=1
1:rpt ct=2、3、選択のためにEビットをパックすること
2:rpt ct=4-6、選択のためにEビットをパックすること、オフセット=3を持つ符号2が特殊な最大rpt値を示すために用いられる
3:rpt ct=7-22、選択のために4つのEビットをパックすること
これらの2ビット符号の4つが1バイトワードにパックされ、次にこのワードが前のワードにおける最後の2ビット符号に従って予め限定された静的テーブルを用いてエンコードされる。オーバーサイズオフセットは、静的に限定されたベース+オフセットレンジテーブルを用いてエンコードされる。レンジ符号は、前のレンジ符号に従って選ばれるテーブルを持つ低レベルエン符号器を用いてエンコードされる。オフセットはビットパックされる。
レンジコードは、しばしば位置的に相関化される。つまり、類似のコードは、互いに近くに集まることができる。このような場合には、標準MTF変換の中で符号化を実行することにより、低レベル符号器における符号化を改善することができる。その時にそれを用いている変形は有効である。
高レベルモデラは、競合する高レベルアルゴリズムの中から選ぶために、しばしば1ブロックのエンコードコストの推定値を必要とする。シミュレータは、サンプル値のブロック並びにフルデータブロックのサイズを受け取る。シミュレータは、フルデータブロックのエンコードのためのコストの推定値を生成するためにサンプルを使用する。この推定値を生成する時に、以下のように、いくつかの改変が中レベル符号器の操作に施される。
(a)入力の数並びに入力テーブルに対して変更されたビットの全数に基づくモデルを用いたテーブルのエンコードのコストの推定。
(b)下記の標準式の高速近似化を用いる各符号の頻度から、レンジ符号をエンコードするコストの推定。
但し:頻度〔i〕 =符号〔i〕の頻度
全頻度 =すべての符号の全頻度
log2 =ベース2の対数
コスト =ブロックをエンコードするために必要とされるビット数
(c)レンジ内のオフセットをエンコードするために必要なエクストラビットを計算すること。
(d)中レベルMTFを削除すること。
なお、本発明は、その好ましい実施形態に関して特定的に図示記載されているが、この分野の当業者によっては形態および詳細に於ける各種の変更を随意に請求項により限定された発明の原理と範囲から逸脱せずに行なうことができるものと理解される。この分野の当業者は、日常的な実験以上の手段を用いることなくこの中に具体的に記載された発明の特定の実施形態に対する多くの同等の事項を認識し、又は確認することができるであろう。このような同等の事項を請求項の範囲内に包含することが意図される。
Claims (29)
- 複数のコンポーネントを有するデータをコンピュータで符号化する方法であって、
すべてのデータコンポーネントは、体系化されたファイルフォーマットに従って、データ型を伴うデータフィールドに構造化されており、
体系化されたファイルフォーマットのソースデータ構造体から、ソースデータ構造体フォーマットに基づいて複数のブロックを生成する工程であって、各ブロックが特定のデータフィールドに関連している生成工程と、
データコンポーネントのデータフィールドに基づいて、ソースデータ構造体から複数のブロックの1つに各データコンポーネントを分類する分類工程と、
前記ブロックごとに、
ブロックに関連付けられたデータフィールドのデータ型に基づいて、複数の候補圧縮アルゴリズムから圧縮アルゴリズムを選択する選択工程と、
前記選択された圧縮アルゴリズムを前記ブロックの各データコンポーネントを圧縮するように適用する圧縮工程と、
前記複数のブロックから圧縮されたデータコンポーネントをエンコードデータ構造体に結合させる結合工程とを備えた方法。 - 請求項1において、
前記ソースデータ構造体が、第1フォーマットに体系化され、
前記分類工程が、前記ソースデータ構造体を第2フォーマットへ変換する変換工程を有する方法。 - 請求項2において、
前記変換工程が、前記ソースデータ構造体からの類似のデータをそれぞれのブロックに集める工程を有する方法。 - 請求項2において、
前記変換が、前記第1フォーマットに基づいて行われる方法。 - 請求項1において、
前記圧縮アルゴリズムが、さらに、それぞれのブロック中のデータ量に基づいて決定される方法。 - 請求項1において、
前記圧縮アルゴリズムが、それぞれのブロックに適合している方法。 - 請求項1において、
前記選択工程が、ブロックのデータコンポーネントの圧縮に先立って、カスタマイズされた変換器によってブロックを変形する工程を有する方法。 - 請求項7において、さらに、ブロックのデータコンポーネント間の関係に基づいて、ブロックを変形させる工程を備えた方法。
- 請求項1において、
前記エンコードデータ構造体から前記ソースデータ構造体を復元する工程を備えた方法。 - 請求項1において、前記体系化されたファイルフォーマットが定義データ型を含む方法。
- 請求項10において、各データ型は、ブロックが出現する構造体のタイプおよび構造体内のブロックの位置によって決定される方法。
- コンピュータに、
複数のコンポーネントを有するデータ符号化ネットワークを実行する一連の命令を記憶する機械可読記憶媒体であって、
すべてのデータコンポーネントが、体系化されたファイルフォーマットに従って、データ型を伴うデータフィールドに構造化されており、
体系化されたファイルフォーマットのソースデータ構造体から、ソースデータ構造体フォーマットに基づいて複数のブロックを生成する手順であって、各ブロックが特定のデータフィールドに関連している生成手順と、
データコンポーネントのデータフィールドに基づいて、ソースデータ構造体から複数のブロックの1つに各データコンポーネントを分類する分類手順と、
前記ブロックごとに
ブロックに関連付けられたデータフィールドのデータ型に基づいて、複数の候補圧縮アルゴリズムから圧縮アルゴリズムを選択する選択手順と、
前記選択された圧縮アルゴリズムを前記ブロックの各データコンポーネントを圧縮するように適用する圧縮手順と、
前記複数のブロックから圧縮されたデータコンポーネントをエンコードデータ構造体に結合させる結合手順とを実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。 - 請求項12において、
前記ソースデータが、第1データフォーマットに体系化され、
前記分類手順が、前記ソースデータを第2フォーマットへ変換する変換手順を有するコンピュータ読み取り可能な記録媒体。 - 請求項13において、
前記変換手順が、前記ソースデータからの類似のデータをそれぞれのブロックに集める手順を有するコンピュータ読み取り可能な記録媒体。 - 請求項13において、
前記変換が、前記第1フォーマットに基づいて行われる、コンピュータ読み取り可能な記録媒体。 - 請求項12において、
前記圧縮アルゴリズムが、さらに、それぞれのブロック中のデータ量に基づいて決定されるコンピュータ読み取り可能な記録媒体。 - 請求項12において、
前記圧縮アルゴリズムが、それぞれのブロックに適合しているコンピュータ読み取り可能な記録媒体。 - 請求項12において、
前記選択手順が、ブロックのデータコンポーネントの圧縮に先立って、カスタマイズされた変換器によってブロックを変形する手順を有するコンピュータ読み取り可能な記録媒体。 - 請求項18において、さらに、ブロックのデータコンポーネント間の関係に基づいて、ブロックを変形させる手順を備えたコンピュータ読み取り可能な記録媒体。
- 請求項12において、
さらに、前記エンコードデータ構造体から前記ソースデータ構造体を復元する手順を備えたコンピュータ読み取り可能な記録媒体。 - 請求項12において、前記体系化されたファイルフォーマットが定義データ型を含むコンピュータ読み取り可能な記録媒体。
- 請求項21において、各データ型は、ブロックが出現する構造体のタイプおよび構造体内のブロックの位置によって決定されるコンピュータ読み取り可能な記録媒体。
- 複数のコンポーネントを有するデータを符号化する装置であって、
すべてのデータコンポーネントは、体系化されたファイルフォーマットに従って、データ型を伴うデータフィールドに構造化されており、
体系化されたファイルフォーマットのソースデータ構造体に基づいて導入された複数のブロックであって、各ブロックが特定のデータフィールドに関連しているブロックと、
データコンポーネントのデータフィールドに基づいて、ソースデータ構造体から複数のブロックの1つに各データコンポーネントを分類する分類器と、
ブロックに関連付けられたデータフィールドのデータ型に基づいて、前記ブロックごとに、複数の候補圧縮アルゴリズムから圧縮アルゴリズムを選択する選択システムと、
前記ブロック中の各データコンポーネントを圧縮するために前記選択された圧縮アルゴリズムを適用し、前記複数のブロックから圧縮されたデータコンポーネントをエンコードデータ構造体に結合させる符号器とを備えた装置。 - 請求項23において、
前記分類器が、前記ソースデータ構造体からの類似のデータをそれぞれのブロックに集める装置。 - 請求項23において、
前記選択システムによって選択される圧縮アルゴリズムが、前記ブロック中のデータに適合している装置。 - 請求項23において、
さらに、前記エンコードデータ構造体から前記ソースデータ構造体を復元する復元システムを備えた装置。 - 請求項23において、
前記体系化されたファイルフォーマットが定義データ型を含む装置。 - 請求項27において、各データ型は、ブロックが出現する構造体のタイプおよび構造体内のブロックの位置によって決定される装置。
- 請求項23において、さらに、ブロックのデータコンポーネント間の関係に基づいて、ブロックを変形させる変換器を備えた装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US3654897P | 1997-03-07 | 1997-03-07 | |
US60/036,548 | 1997-03-07 | ||
PCT/US1998/004453 WO1998039699A2 (en) | 1997-03-07 | 1998-03-06 | Data coding network |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001526853A JP2001526853A (ja) | 2001-12-18 |
JP4091990B2 true JP4091990B2 (ja) | 2008-05-28 |
Family
ID=21889206
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP53886498A Expired - Fee Related JP4091990B2 (ja) | 1997-03-07 | 1998-03-06 | データ符号化ネットワーク |
Country Status (7)
Country | Link |
---|---|
US (1) | US6253264B1 (ja) |
EP (1) | EP0965171B1 (ja) |
JP (1) | JP4091990B2 (ja) |
AT (1) | ATE311692T1 (ja) |
CA (1) | CA2283591C (ja) |
DE (1) | DE69832593T2 (ja) |
WO (1) | WO1998039699A2 (ja) |
Families Citing this family (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6624761B2 (en) | 1998-12-11 | 2003-09-23 | Realtime Data, Llc | Content independent data compression method and system |
US6604158B1 (en) | 1999-03-11 | 2003-08-05 | Realtime Data, Llc | System and methods for accelerated data storage and retrieval |
US6601104B1 (en) | 1999-03-11 | 2003-07-29 | Realtime Data Llc | System and methods for accelerated data storage and retrieval |
US6522268B2 (en) | 2000-01-05 | 2003-02-18 | Realnetworks, Inc. | Systems and methods for multiple-file data compression |
WO2001052523A1 (en) * | 2000-01-12 | 2001-07-19 | Advanced Communication Design, Inc. | Compression and remote storage apparatus for data, music and video |
US20010047473A1 (en) | 2000-02-03 | 2001-11-29 | Realtime Data, Llc | Systems and methods for computer initialization |
US7417568B2 (en) | 2000-10-03 | 2008-08-26 | Realtime Data Llc | System and method for data feed acceleration and encryption |
US9143546B2 (en) | 2000-10-03 | 2015-09-22 | Realtime Data Llc | System and method for data feed acceleration and encryption |
US8692695B2 (en) * | 2000-10-03 | 2014-04-08 | Realtime Data, Llc | Methods for encoding and decoding data |
US20020101932A1 (en) * | 2000-11-29 | 2002-08-01 | Montgomery Dennis L. | Method and apparatus for encoding information using multiple passes and decoding in a single pass |
US6978047B2 (en) | 2000-11-29 | 2005-12-20 | Etreppid Technologies Llc | Method and apparatus for storing digital video content provided from a plurality of cameras |
US7386046B2 (en) | 2001-02-13 | 2008-06-10 | Realtime Data Llc | Bandwidth sensitive data compression and decompression |
US7082478B2 (en) * | 2001-05-02 | 2006-07-25 | Microsoft Corporation | Logical semantic compression |
US6810282B2 (en) * | 2001-10-25 | 2004-10-26 | GE Medical Systems Information Technolgies, Inc. | Method and apparatus for dynamically selecting an electrocardiogram compression process based on computerized analysis of cardiac rhythm and contour |
US7370120B2 (en) * | 2001-12-07 | 2008-05-06 | Propel Software Corporation | Method and system for reducing network latency in data communication |
US6654386B2 (en) * | 2002-04-24 | 2003-11-25 | Teledyne Technologies Incorporated | Method, system, and apparatus for processing aircraft data files |
CA2390350A1 (en) * | 2002-06-10 | 2003-12-10 | Ibm Canada Limited-Ibm Canada Limitee | Incremental cardinality estimation for a set of data values |
US8176186B2 (en) | 2002-10-30 | 2012-05-08 | Riverbed Technology, Inc. | Transaction accelerator for client-server communications systems |
US7120666B2 (en) * | 2002-10-30 | 2006-10-10 | Riverbed Technology, Inc. | Transaction accelerator for client-server communication systems |
US8321465B2 (en) * | 2004-11-14 | 2012-11-27 | Bloomberg Finance L.P. | Systems and methods for data coding, transmission, storage and decoding |
US20060248194A1 (en) | 2005-03-18 | 2006-11-02 | Riverbed Technology, Inc. | Connection forwarding |
WO2008034149A2 (en) * | 2006-09-15 | 2008-03-20 | Van Der Merwe Willem J | Data hosting and dissemination system for mobile devices |
US8208532B2 (en) * | 2008-03-31 | 2012-06-26 | Oracle America, Inc. | Method and apparatus for data compression and decompression |
US8417730B2 (en) * | 2008-04-14 | 2013-04-09 | Objectif Lune Inc. | Block compression algorithm |
US7870160B2 (en) * | 2008-04-14 | 2011-01-11 | Objectif Lune Inc. | Block compression algorithm |
US20100179984A1 (en) * | 2009-01-13 | 2010-07-15 | Viasat, Inc. | Return-link optimization for file-sharing traffic |
US8984048B1 (en) | 2010-04-18 | 2015-03-17 | Viasat, Inc. | Selective prefetch scanning |
US11983233B2 (en) | 2011-04-11 | 2024-05-14 | Viasat, Inc. | Browser based feedback for optimized web browsing |
US9037638B1 (en) | 2011-04-11 | 2015-05-19 | Viasat, Inc. | Assisted browsing using hinting functionality |
US9456050B1 (en) | 2011-04-11 | 2016-09-27 | Viasat, Inc. | Browser optimization through user history analysis |
US9912718B1 (en) | 2011-04-11 | 2018-03-06 | Viasat, Inc. | Progressive prefetching |
US9106607B1 (en) | 2011-04-11 | 2015-08-11 | Viasat, Inc. | Browser based feedback for optimized web browsing |
WO2013006776A2 (en) * | 2011-07-06 | 2013-01-10 | President And Fellows Of Harvard University | Systems and methods for genetic data compression |
US10114839B2 (en) * | 2012-08-21 | 2018-10-30 | EMC IP Holding Company LLC | Format identification for fragmented image data |
US9792350B2 (en) * | 2013-01-10 | 2017-10-17 | International Business Machines Corporation | Real-time classification of data into data compression domains |
US9564918B2 (en) | 2013-01-10 | 2017-02-07 | International Business Machines Corporation | Real-time reduction of CPU overhead for data compression |
US9053121B2 (en) | 2013-01-10 | 2015-06-09 | International Business Machines Corporation | Real-time identification of data candidates for classification based compression |
US9094537B2 (en) * | 2013-03-22 | 2015-07-28 | Jdsu Uk Limited | Method and apparatus for managing call data |
US9282197B2 (en) | 2013-03-22 | 2016-03-08 | Viavi Solutions Uk Limited | Method and apparatus for managing call data |
US9197758B2 (en) * | 2013-03-22 | 2015-11-24 | Jdsu Uk Limited | Method and apparatus for managing call data |
US9264068B2 (en) * | 2014-05-09 | 2016-02-16 | Micron Technology, Inc. | Deflate compression algorithm |
CN104102690B (zh) * | 2014-05-26 | 2017-04-19 | 北京宇航系统工程研究所 | 一种基于存储结构的遥测数据处理方法 |
US10855797B2 (en) | 2014-06-03 | 2020-12-01 | Viasat, Inc. | Server-machine-driven hint generation for improved web page loading using client-machine-driven feedback |
CA3002517C (en) | 2015-10-20 | 2022-06-21 | Viasat, Inc. | Hint model updating using automated browsing clusters |
JP6344486B2 (ja) * | 2015-12-29 | 2018-06-20 | 華為技術有限公司Huawei Technologies Co.,Ltd. | サーバおよびデバイスによりデータを圧縮するための方法 |
US10789211B1 (en) * | 2017-10-04 | 2020-09-29 | Pure Storage, Inc. | Feature-based deduplication |
CN110286917A (zh) * | 2019-05-21 | 2019-09-27 | 深圳壹账通智能科技有限公司 | 文件打包方法、装置、设备及存储介质 |
EP4046052A1 (en) * | 2019-10-18 | 2022-08-24 | Koninklijke Philips N.V. | Customizable delimited text compression framework |
JP7305609B2 (ja) * | 2020-12-16 | 2023-07-10 | 株式会社日立製作所 | 受信したデータを処理する装置 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2065578C (en) * | 1991-04-22 | 1999-02-23 | David W. Carr | Packet-based data compression method |
US5638498A (en) * | 1992-11-10 | 1997-06-10 | Adobe Systems Incorporated | Method and apparatus for reducing storage requirements for display data |
US5991515A (en) * | 1992-11-10 | 1999-11-23 | Adobe Systems Incorporated | Method and apparatus for compressing and decompressing data prior to display |
US5467087A (en) * | 1992-12-18 | 1995-11-14 | Apple Computer, Inc. | High speed lossless data compression system |
US5632009A (en) * | 1993-09-17 | 1997-05-20 | Xerox Corporation | Method and system for producing a table image showing indirect data representations |
US5983236A (en) * | 1994-07-20 | 1999-11-09 | Nams International, Inc. | Method and system for providing a multimedia presentation |
US5684478A (en) * | 1994-12-06 | 1997-11-04 | Cennoid Technologies, Inc. | Method and apparatus for adaptive data compression |
US5617541A (en) * | 1994-12-21 | 1997-04-01 | International Computer Science Institute | System for packetizing data encoded corresponding to priority levels where reconstructed data corresponds to fractionalized priority level and received fractionalized packets |
US5870036A (en) | 1995-02-24 | 1999-02-09 | International Business Machines Corporation | Adaptive multiple dictionary data compression |
US5708828A (en) * | 1995-05-25 | 1998-01-13 | Reliant Data Systems | System for converting data from input data environment using first format to output data environment using second format by executing the associations between their fields |
US5838964A (en) * | 1995-06-26 | 1998-11-17 | Gubser; David R. | Dynamic numeric compression methods |
US5710562A (en) * | 1995-08-31 | 1998-01-20 | Ricoh Company Ltd. | Method and apparatus for compressing arbitrary data |
JPH0981582A (ja) * | 1995-09-12 | 1997-03-28 | Fujitsu Ltd | 値を基本としたデータ管理装置及びデータ管理方法 |
GB2310055A (en) * | 1996-02-08 | 1997-08-13 | Ibm | Compression of structured data |
US5867114A (en) * | 1996-02-29 | 1999-02-02 | Mitel Corporation | Method and apparatus for performing data compression |
-
1998
- 1998-03-06 JP JP53886498A patent/JP4091990B2/ja not_active Expired - Fee Related
- 1998-03-06 WO PCT/US1998/004453 patent/WO1998039699A2/en active IP Right Grant
- 1998-03-06 CA CA002283591A patent/CA2283591C/en not_active Expired - Fee Related
- 1998-03-06 US US09/036,052 patent/US6253264B1/en not_active Expired - Lifetime
- 1998-03-06 DE DE69832593T patent/DE69832593T2/de not_active Expired - Lifetime
- 1998-03-06 EP EP98911513A patent/EP0965171B1/en not_active Expired - Lifetime
- 1998-03-06 AT AT98911513T patent/ATE311692T1/de not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
US6253264B1 (en) | 2001-06-26 |
WO1998039699A3 (en) | 1999-03-18 |
DE69832593D1 (de) | 2006-01-05 |
ATE311692T1 (de) | 2005-12-15 |
JP2001526853A (ja) | 2001-12-18 |
EP0965171A2 (en) | 1999-12-22 |
CA2283591A1 (en) | 1998-09-11 |
CA2283591C (en) | 2006-01-31 |
DE69832593T2 (de) | 2006-08-17 |
WO1998039699A2 (en) | 1998-09-11 |
EP0965171B1 (en) | 2005-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4091990B2 (ja) | データ符号化ネットワーク | |
US8120516B2 (en) | Data compression using a stream selector with edit-in-place capability for compressed data | |
US8077059B2 (en) | Database adapter for relational datasets | |
US5870036A (en) | Adaptive multiple dictionary data compression | |
US5933104A (en) | Method and system for compression and decompression using variable-sized offset and length fields | |
JP3009727B2 (ja) | 改良形データ圧縮装置 | |
EP0673122B1 (en) | Coding apparatus | |
US6535642B1 (en) | Approximate string matching system and process for lossless data compression | |
US7554464B1 (en) | Method and system for processing data having a pattern of repeating bits | |
CN1868127B (zh) | 数据压缩系统和方法 | |
CN112527754A (zh) | 基于按位变长存储的数值型数据压缩方法及系统 | |
US9236881B2 (en) | Compression of bitmaps and values | |
US7864085B2 (en) | Data compression method and apparatus | |
US6518895B1 (en) | Approximate prefix coding for data compression | |
US7696906B2 (en) | LZW data compression algorithm | |
US6748520B1 (en) | System and method for compressing and decompressing a binary code image | |
CN108880559B (zh) | 数据压缩方法、数据解压缩方法、压缩设备及解压缩设备 | |
US20060188166A1 (en) | Computer graphics data coding apparatus, decoding apparatus, coding method and decoding method | |
JP7233875B2 (ja) | 作成方法、コンピュータ及びプログラム | |
US8463759B2 (en) | Method and system for compressing data | |
US20160226516A1 (en) | Non-transitory computer-readable recording medium, compression method, decompression method, compression device, and decompression device | |
US7479905B2 (en) | Apparatus, system and method for data compression using irredundant patterns | |
CN116405037B (zh) | 一种面向天文星表的压缩预处理编码器、应用 | |
Anand | SA128: A Smart Data Compression Technique for Columnar Databases Based on Characteristics of Data | |
JPH1155125A (ja) | 文字データの圧縮・復元方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050210 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060829 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20061128 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20070122 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070228 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070612 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20070911 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20071022 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071211 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080205 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080303 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110307 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110307 Year of fee payment: 3 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110307 Year of fee payment: 3 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110307 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120307 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130307 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130307 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140307 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |