(57)【要約】      （修正有）【課題】マクロブロックのデータを正方向及び逆方向コードしながらドメインブロックを探索して、メモリを備えて圧縮率を向上させることができる方法を提供する。【解決手段】探索範囲内のドメインブロックを探索し、探索されたドメインブロックとレンジブロックのデータを比較して差異値を発生し、コストテーブルで差異値によるコストを生成する探索器と、探索器から選択されたコストのドメインブロックとの距離及び差異情報を、レンジブロックの圧縮データにコードするコーダとからなる圧縮器、及び圧縮データで距離及び差異フラグを検出するフラグ検出器と、検出された距離フラグに応じる距離値を確認してドメインブロックを選択し、コストに対応する差異値を計算した後、差異値を選択されたドメインブロックのデータと演算し、前記レンジブロックを復元するデコーダとからなる圧縮解除器、で構成される。【選択図】図１
2011239434.tif 000002
【特許請求の範囲】
【請求項１】
データ圧縮及び復元装置において、
探索範囲内のドメインブロックを正方向に探索してレンジブロックと前記ドメインブロック間のコストを計算し、その後、前記探索範囲内で計算されたコストを逆方向に探索して前記レンジブロックと最小コストを有するドメインブロックの距離及び差異情報を選択する探索器と、前記探索器で選択されたドメインブロックとの距離及び差異情報を前記レンジブロックの圧縮データにコードするコーダーと、から構成される圧縮器と、
前記圧縮データの距離情報を分析して復元する前記レンジブロックに対応するドメインブロックの位置を選択し、前記差異情報に基づいて前記選択されたドメインブロックに復元して、前記レンジブロックの圧縮データを復元する圧縮解除器と、から構成され、
前記圧縮器及び圧縮解除器は、ドメインブロックとレンジブロック間の差異値を格納するグローバルテーブルをさらに備え、
前記圧縮器が前記レンジブロックと最小コストを有するドメインブロックとの間の差異値を前記グローバルテーブルのインデックスに変換した後、テーブルインデックスを差異情報の差異値に生成し、
前記圧縮解除器は、前記差異情報のテーブルインデックスに格納されたグローバルテーブルの差異値にアクセスし、前記アクセスされた差異値を前記選択されたドメインブロックと演算し、前記レンジブロックのデータに復元し、
前記正方向は、前記探索範囲において、最も距離が遠いブロックから前記レンジブロックへ向う方向であり、前記逆方向検索は、１以上のブロックをグループ化して探索することを特徴とするデータ圧縮及び復元装置。
【請求項２】
前記圧縮器が前記テーブルインデックスを生成できない場合、例外処理フラグを生成し、前記例外処理フラグの発生時、前記例外処理フラグ及びレンジブロックデータを圧縮データにコードし、
前記圧縮解除器は、前記差異情報に前記例外処理フラグが含まれると、差異情報に含まれたデータをレンジブロックのデータに復元することを特徴とする請求項１に記載のデータ圧縮及び復元装置。
【請求項３】
前記グローバルテーブルに格納された差異値は、レンジブロックとドメインブロックの排他的論理和であることを特徴とする請求項２に記載のデータ圧縮及び復元装置。
【請求項４】
前記圧縮器及び圧縮解除器は、圧縮中に生成され、前記グローバルテーブルに存在しないドメインブロックとレンジブロックとの差異値を格納するローカルテーブルとをさらに備え、
前記圧縮器は、前記レンジブロックと最小コストを有するドメインブロックとの間の差異値を、前記グローバルテーブル又はローカルテーブルのインデックスに変換した後、テーブルインデックスを差異情報の差異値に生成し、前記グローバルテーブルに存在しない差異値がグローバル及びローカルテーブルに存在しないと、前記ローカルテーブルに登録し、
前記圧縮解除器は、前記差異情報のテーブルインデックスに格納されたグローバルテーブルの差異値にアクセスし、前記アクセスされた差異値を前記選択されたドメインブロックと演算し、前記レンジブロックのデータに復元することを特徴とする請求項１に記載のデータ圧縮及び復元装置。
【請求項５】
前記圧縮器が前記テーブルインデックスを生成できない場合、例外処理フラグを生成し、前記例外処理フラグの発生時、前記例外処理フラグ及びレンジブロックデータを圧縮データにコードし、
前記圧縮解除器は、前記差異情報に前記例外処理フラグが含まれると、差異情報に含まれたデータをレンジブロックのデータに復元することを特徴とする請求項４に記載のデータ圧縮及び復元装置。
【請求項６】
前記グローバルテーブル及びローカルテーブルに格納された差異値は、レンジブロックとドメインブロックの排他的論理和であることを特徴とする請求項５に記載のデータ圧縮及び復元装置。
【請求項７】
データ圧縮及び復元方法において、
探索範囲内のドメインブロックを正方向に探索してレンジブロックと前記ドメインブロック間のコストを計算し、その後、前記探索範囲内で計算されたコストを逆方向に探索して前記レンジブロックと最小コストを有するドメインブロックの距離及び差異情報を選択する探索過程と、前記探索過程で選択されたドメインブロックとの距離及び差異情報を前記レンジブロックの圧縮データにコードするコーディング過程と、から構成される圧縮過程と、
前記圧縮データの距離情報を分析して復元する前記レンジブロックに対応するドメインブロックの位置を選択し、前記差異情報に基づいて前記選択されたドメインブロックに復元して、前記レンジブロックの圧縮データを復元する圧縮解除過程と、からなり、
ドメインブロックとレンジブロックとの差異値を格納するグローバルテーブルを備え、
前記圧縮過程は、前記レンジブロックと最小コストを有するドメインブロックとの間の差異値を前記グローバルテーブルのインデックスに変換した後、テーブルインデックスを差異情報の差異値に生成し、
前記圧縮解除過程は、前記差異情報のテーブルインデックスに格納されたグローバルテーブルの差異値にアクセスし、前記アクセスされた差異値を前記選択されたドメインブロックと演算し、前記レンジブロックのデータに復元し、
前記正方向は、前記探索範囲において、最も距離が遠いブロックから前記レンジブロックへ向う方向であり、前記逆方向検索は、１以上のブロックをグループ化して探索することを特徴とするデータ圧縮及び復元方法。
【請求項８】
前記圧縮過程は、前記テーブルインデックスを生成できない場合、例外処理フラグを生成し、前記例外処理フラグの発生時、前記例外処理フラグ及びレンジブロックデータを圧縮データにコードする過程をさらに備え、
前記圧縮解除過程は、前記差異情報に前記例外処理フラグが含まれると、差異情報に含まれたデータをレンジブロックのデータに復元する過程をまたさらに備えることを特徴とする請求項７に記載のデータ圧縮及び復元方法。
【請求項９】
前記グローバルテーブルに格納された差異値は、レンジブロックとドメインブロックの排他的論理和であることを特徴とする請求項８に記載のデータ圧縮及び復元方法。
【請求項１０】
圧縮中に生成され前記グローバルテーブルに存在しないドメインブロックとレンジブロックとの差異値を格納するローカルテーブル、を備え、
前記圧縮過程は、前記レンジブロックと最小コストを有するドメインブロックとの間の差異値を、前記グローバルテーブルまたはローカルテーブルのインデックスに変換した後、テーブルインデックスを差異情報の差異値に生成し、前記差異値がグローバル及びローカルテーブルに存在しないと、前記ローカルテーブルに登録し、
前記圧縮解除過程は、前記差異情報のテーブルインデックスに格納されたグローバルテーブルの差異値にアクセスし、前記アクセスされた差異値を前記選択されたドメインブロックと演算し、前記レンジブロックのデータに復元することを特徴とする請求項７に記載のデータ圧縮及び復元方法。
【請求項１１】
前記圧縮過程は、前記テーブルインデックスを生成できない場合、例外処理フラグを生成し、前記例外処理フラグの発生時、前記例外処理フラグ及びレンジブロックデータを圧縮データにコードする過程をさらに備え、
前記圧縮解除過程は、前記差異情報に前記例外処理フラグが含まれると、差異情報に含まれたデータをレンジブロックのデータに復元する過程をまたさらに備えることを特徴とする請求項１０に記載のデータ圧縮及び復元方法。
【請求項１２】
前記グローバルテーブル及びローカルテーブルに格納された差異値は、レンジブロックとドメインブロックの排他的論理和であることを特徴とする請求項１１に記載のデータ圧縮及び復元方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ圧縮及び圧縮されたデータを復元する装置、並びに方法に関する。
【背景技術】
【０００２】
一般的に、メモリを使用するデジタル装置は、メモリを効果的に使用するための多様な方法が用いられている。そのうち、一つの方法が、ライトモード時にデータを圧縮してメモリに格納し、リードモード時に圧縮格納されたデータを復元する技術である。この場合、前記圧縮率を高めると、メモリ効率は高くなるが、圧縮速度及び復元速度が低下してメモリアクセスタイムが長くなり、圧縮率を少なくすると、メモリアクセスタイムは速くなるが、メモリ効率は低下する。従って、デジタル装置のメモリを効率的に使用するためには、高圧縮率でかつ高速復元可能な圧縮及び復元方法が必要である。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
一般的に、メモリを備えるデジタル装置で圧縮率を高めるためには、圧縮速度または復元速度が大きく低下する問題がある。このような問題点を解決するために、本発明の実施形態では、逆方向コーディング（backward coding）方法を用いて、圧縮速度を大きく低下せず圧縮率を高めることができる方法を提案する。また、よく用いられる圧縮データをテーブルに格納し、コーディング時にテーブルを用いて圧縮データを生成することによって、圧縮率を向上できるようにし、かつ、マクロブロック単位の例外処理ブロックの調整によって、圧縮率と復元速度の調整が可能とする。
【課題を解決するための手段】
【０００４】
本発明の実施形態に係るデータ圧縮方法は、マクロブロックのデータを正方向及び逆方向検索しながら、圧縮速度を大きく低下させずに、最小コストを有するドメインブロックを探索して圧縮率を向上し、またテーブル（global table、local tableなど）に圧縮データを効率的に格納し、圧縮時によく発生するブロック差異値に対するコストを低く設定することによって、格納されるデータの圧縮率を向上させ、また、圧縮率が良くないマクロブロックは例外処理し、圧縮率と復元速度の調整を可能とする方法を提案する。
【発明の効果】
【０００５】
上述したように、本発明の実施形態に係るメモリアクセス装置は、格納しようとするデータが圧縮器によって圧縮されてメモリに格納され、前記メモリに格納された圧縮データは圧縮解除器によって復元されて出力される。よって、メモリを使用する装置において、制御部と無関係に、データ格納モード時、圧縮器がダウンロードされるデータを圧縮してメモリに格納し、メモリに格納された圧縮データは、リード時に自動的に復元され、メモリを効率的に使用することができるという利点がある。また、圧縮によりファイルサイズが減少され、節減されたロード時間が復元にかかる時間より長い場合には、高速の復元速度により、圧縮しない場合よりも処理時間がさらに短くなる。
【図面の簡単な説明】
【０００６】
【図１】本発明の実施形態に係るレンジブロック及びドメインブロック構成を説明するための図である。
【図２】本発明の実施形態により逆方向コーディングによる圧縮効果を例示する図である。
【図３ａ】図３（ａ）は、本発明の実施形態により探索範囲内でドメインブロックを正方向及び逆方向に検索し、圧縮対象であるレンジブロックに対する最適のドメインブロックを選択する方法を説明するための図である。
【図３ｂ】図３（ｂ）は、本発明の実施形態により探索範囲内でドメインブロックを正方向及び逆方向に検索し、圧縮対象であるレンジブロックに対する最適のドメインブロックを選択する方法を説明するための図である。
【図４】本発明の実施形態に係る圧縮方法の過程を示すフローチャート。
【図５】前記図４で最適化過程を行う動作を説明するための図である。
【図６】前記図４で差異コーディングテーブルを更新する過程を示すフローチャートである。
【図７ａ】図７（ａ）は、本発明の実施形態に係るグローバルテーブルの特性を説明するための図である。
【図７ｂ】図７（ｂ）は、ローカルテーブルの特性を説明するための図である。
【図８】本発明の実施形態に係る前記圧縮器の構成を示す図である。
【図９】図８の前記探索器の動作を説明するための図である。
【図１０】図８の前記コーダでレンジブロックのデータを圧縮する過程を示すフローチャートである。
【図１１】図１０と同様の過程を行うコーダが距離情報及び差異情報を用いて、各レンジブロックのデータをコードする過程を具体的に示す図である。
【図１２】圧縮解除器（decompressor）の構成を示す図である。
【図１３】圧縮解除器で圧縮データを復元する過程を示すフローチャートである。
【図１４】図１３と同様の過程で圧縮されたデータを前記圧縮解除器で復元する過程を説明するための図である。
【図１５】本発明の実施形態に係るデータ圧縮及び復元を行う装置の構成例を示す図であって、携帯端末機の構成を示す図である。
【発明を実施するための形態】
【０００７】
以下、本発明の好ましい実施形態の詳細な説明を添付した図を参照しながら、説明する。図面において、同一の構成はできる限りどの位置においても同じ符号を示していることに留意する。
【０００８】
下記の説明において、マクロブロックのビット数、ショートブロックの数及びビット数、距離情報及び差異情報、テーブルの臨界値などの具体的な例示のような、特定の詳細が本発明の全般的な理解を提供するため表されている。これらの特定の詳細なしに、またこれらの変形によっても、本発明が容易に実施可能なことは、当該技術分野における通常の知識を有する者に自明なものである。
【０００９】
本発明の実施形態において、「マクロブロック（macro block）」とは、データを圧縮する最小単位を意味する。「ショートブロック（short block）」とは、マクロブロックを構成する単位であって、２つ以上で構成され、本発明の実施形態における前記ショートブロックは、１６ビットの大きさを有すると仮定する。また、本発明の実施形態における前記マクロブロックは、２つのショートで構成されていると仮定する。「レンジブロック（range block）」とは、圧縮しようとする１つ以上のマクロブロックを意味する。「ドメインブロック（domain block）」とは、レンジブロックを圧縮するために参照されるマクロブロックを意味する。「距離情報（distance information）」は、レンジブロックとドメインブロックとの間の距離を意味する距離値（distance value）、及び距離値の変更有無を示す距離フラグ（distance flag）などを含む。距離フラグは、各マクロブロックごとに付けられ、レンジブロックの構成を示す。「差異情報（difference information）」は、レンジブロックとドメインブロックとの間のデータ差を意味する差異値（difference value）、及び差異値の存在有無を示す差異フラグ（difference flag）を含む。ここで、データの差異は、２つのブロックのデータを排他的論理和（exclusive ＯＲ、ＸＯＲ）した値を意味する。「コスト（cost）」は、前記差異値を計算し、圧縮データでメモリに格納されるデータの長さ（ビット数）を決定する。「例外処理（exception handling）」とは、圧縮率が高くない場合に、データ圧縮を行わないこと（raw dataをそのまま使用）を意味する。
【００１０】
「グローバルテーブル（global table）」とは、固定テーブル（fixed entry table）であり、前記差異値をインデックスとする。「ローカルテーブル（local table）」とは、可変テーブル（floating entry table）であり、圧縮中に発生頻度数が高いマクロブロックをインデックスとする。「探索範囲（searching range）」とは、レンジブロックの位置でドメインブロックを探索するための範囲を意味する。「正方向コーディング（forward coding）」とは、現在コードされる１つのマクロブロックで構成されたレンジブロックを最小コストでコードするドメインブロックを探索範囲でコードすることを意味し、「逆方向コーディング（backward coding）」とは、現在コードされた１つのマクロブロックを含んで、以前にコードされたレンジブロックを再構成し、コストを減らすためのコーディングを意味する。つまり、前記正方向コーディングは、圧縮器が順次選択される１つのマクロブロックで構成されるレンジブロックを一次的にコードすることを意味し、逆方向コーディングは、現在コードされたマクロブロックを含んで以前にコードされたレンジブロックを再構成して、圧縮率を向上させることを意味する。「データ（data）」とは、プログラム及びユーザのデータを含む用語であって、全てのデータを通称する意味として使用される。
【００１１】
本発明の圧縮器（compressor）は、データを圧縮する時、圧縮するデータであるレンジブロックの長さを決定し、前記レンジブロックと同一または類似のデータを有するドメインブロックを探索し、前記レンジブロックと探索されたドメインブロックとの間の距離及び差異をコードして、圧縮する方法を提案する。ここで、データは、バイナリデータ（binary data）や、ファームウェア（firm ware）及びソフトウェア（soft ware）のようなプログラムのコードデータを含む全てのデータを示す。
【００１２】
一般的に、データを圧縮する圧縮器及び圧縮解除器（decompressor）は、高圧縮率及び高速の復元機能を有することが好ましい。このとき、圧縮器の圧縮率を高めると、圧縮器の圧縮速度または圧縮解除器の復元速度が低下する。本発明は、前記探索範囲内でドメインブロックを探索する時、以下のような方法で圧縮率及び復元速度を向上させる。
【００１３】
第一に、圧縮器は、レンジブロックを探索範囲内のドメインブロックと比較する時、以前のマクロブロックをコードする時に構成された検索対象（reference list）に対して、正方向及び逆方向にコードし、探索範囲内で前記レンジブロックと最低差異値を有するドメインブロックとを選択する。
【００１４】
第二に、レンジブロックと選択されたドメインブロックとの間の距離情報及び差異情報を用いて、レンジブロックのデータを圧縮する。本発明の実施形態においては、圧縮方法としては、第１方法として、２つのブロックの差異値をそのまま用いてデータを圧縮する方法、第２方法として、よく発生するブロックの差異値を実験的に測定してテーブルに登録し、圧縮時にこれを差異値として圧縮する方法、及び、第３方法として、よく発生するブロックの差異値を実験的に測定して固定テーブルに登録し、圧縮中によく発生するブロックの差異値を可変テーブルに登録し、圧縮時、これを差異値として圧縮する方法、を用いることができる。
【００１５】
ここで、前記第１の圧縮方法の差異値は、最小差異値を有するレンジブロックとドメインブロックとの排他的論理和の値（exclusive OR operation value）である。そして、第２の圧縮方法のテーブルは、固定テーブルであって、第３の圧縮方法のテーブルはグローバルテーブルである。
【００１６】
また、前記テーブルを使用する圧縮方法を検討すると、圧縮時、頻繁に発生するレンジブロックとドメインブロックの差異値を実験的に測定し、前記測定された差異値によるコストを生成する。そして、前記ブロック差異値をインデックスとして用い、該当インデックスの位置に、前記生成されたコストで差異値をコードする値を格納する。このとき、最も頻繁に発生するブロックの差異値を最小コストでマッピングすることによって、データの圧縮率を向上させることができる。圧縮率をより一層向上させるために、全体頻度数によるグローバルテーブルと、領域別頻度数によるローカルテーブルとを設ける。ここで、前記グローバルテーブルは、固定テーブルであって前記圧縮器自体に備えられ、また、圧縮時、メモリの特定の位置に格納することもできる。前記ローカルテーブルは、可変テーブルであって、圧縮器がデータを圧縮する間に、グローバルテーブルにはなくても特定の領域に頻繁に発生するレンジブロックとドメインブロックとの差異値及びコストを、テーブル化してメモリに格納することができる。ここで、前記グローバルテーブルは、圧縮前に既に作られた固定テーブルであり、前記圧縮器が、ライトモード時に格納される全てのデータに適用されるテーブルである。また、前記ローカルメモリは、可変テーブルであり、部分領域データの圧縮のみに用いられるテーブルである。
【００１７】
第三に、圧縮器は、マクロブロック単位のデータを圧縮し、探索範囲内にレンジブロックと同一または類似するドメインブロックがないと、前記レンジブロックのデータを圧縮せず例外処理する。つまり、前記レンジブロックが探索範囲内の全てのドメインブロックと比較し、同一のドメインブロックがないか、または類似するドメインブロックがない場合（例えば、複数のショートブロックの中でも、少なくとも１つのショートブロックも同一でない場合）には、前記レンジブロックの圧縮率は、圧縮しなかった場合に比べ非常に悪くなる。この場合、前記圧縮器は、該当レンジブロックを例外ブロックとして処理し、例外処理フラグと共に、該当レンジブロックのデータを圧縮せずにそのまま格納する。前記のように例外処理ブロックを用いると、圧縮率及び圧縮解除時の復元速度を向上させることができる。
【００１８】
上記のように、２つのブロックの差異値で圧縮する方法、またはグローバルテーブルを用いて圧縮する方法、もしくはグローバル及びローカルテーブルを用いて圧縮する方法を使用でき、さらに、前記のような圧縮方法に例外処理機能を含めて圧縮する方法を用いることができる。
【００１９】
以下に説明する本発明の実施形態は、グローバル及びローカルテーブルを備え、例外処理圧縮方法を用いる場合を仮定して説明することにする。すなわち、本発明の実施形態に係るデータ圧縮方法は、マクロブロックのデータを正方向及び逆方向コードしながら、圧縮速度を大きく低下せずに、最低コストを有するドメインブロックを探索して、圧縮率を向上させることができる方法を提案する。また、テーブル（global table、local tableなど）に圧縮データを効率的に格納し、圧縮時によく発生するブロックの差異値に対するコストを低く設定することで、格納されるデータの圧縮率を向上させることができる方法を提案する。なお、圧縮率が悪いマクロブロックは、例外処理して圧縮率と復元速度の調整が可能なようにする方法を提案する。
【００２０】
図１は、本発明の実施形態に係るレンジブロック及びドメインブロック構成を説明するための図である。
【００２１】
前記図１を参照すると、本発明の実施形態に係る圧縮器は、圧縮対象ブロックであるレンジブロックＲと、参照ブロックであるドメインブロックとの間の距離（distance ＝レンジブロックとドメインブロックとの間の距離）を計算し、前記レンジブロックデータを前記ドメインブロックデータと比較し、その差異（レンジブロックデータとドメインブロックデータとのＸＯＲ演算値）を計算した後、この２つの計算値（距離及び差異）でレンジブロックの圧縮データを生成する。このとき、前記レンジブロックは１つ以上のマクロブロックで構成され、前記ドメインブロックの大きさは、前記レンジブロックと同一の大きさを有するブロックであってもよい。また、前記マクロブロックはショートブロックに分割（partition）されるか、またはショートブロックを用いなくてもよい。以下で説明する本発明の実施形態では、前記図１に示したように、マクロブロックが２つのショートブロックで構成された場合を仮定して説明する。
【００２２】
本発明の実施形態では、前記マクロブロックは２つのショートブロックで構成され、前記ショートブロックは１６ビット（２byte）で構成されると仮定する。前記レンジブロックのドメインブロックは、前記レンジブロック以前の一定の範囲（つまり、探索範囲）内に表される同一の大きさを有するマクロブロックである。前記レンジブロックは、互いに重ならず、インテジャー（integer）単位で割り当て（align）られる。ドメインブロックは、互いに重なり、ショートブロック単位（ショートブロックが８ビットであれば、バイト単位、１６ビットであれば、２バイト単位、...）で割り当てられる。例えば、圧縮するデータが５つのマクロブロック（ＭＢ０−ＭＢ４）であり、ショートブロックの番号がＳＢ０−ＳＢ９である場合、前記レンジブロックは、ＳＢ０−ＳＢ１、ＳＢ２−ＳＢ３、ＳＢ４−ＳＢ５、...、ＳＢ８−ＳＢ９の順に割り当てられる。前記レンジブロックがＳＢ８−ＳＢ９である場合、前記ドメインブロックは、ＳＢ６−ＳＢ７、ＳＢ５−ＳＢ６、ＳＢ４−ＳＢ５、．．．、ＳＢ１−ＳＢ２、ＳＢ０−ＳＢ１に割り当てられる。前記レンジブロックの圧縮データは、前記ドメインブロックの距離情報及び差異情報で構成される。このとき、選択されるドメインブロックは、探索範囲内で、前記レンジブロックと、最低コストの距離情報及び差異情報を有するドメインブロックである。
【００２３】
前記距離は、レンジブロックと選択されたドメインブロックとの間の離隔距離を意味し、各レンジブロックの圧縮データに用いられることにより、圧縮率に大きい影響を及ぼす。よって、前記距離は、一定の大きさに制限して使用することが好ましく、前記設定された距離の大きさにより、前記探索範囲が決定される。また、前記レンジブロックの長さが長い場合には、距離に用いるビットは減少されるが、差異値を表すビット数が増加し、これにより、前記レンジブロックの長さも圧縮率に大きな影響を及ぼす。従って、前記情報の圧縮を効果的に行うためには、前記探索範囲（差異のビット数）及びレンジブロックの長さを適正に設定しなければならない。
【００２４】
また、本発明の実施形態では、前記レンジブロックを圧縮する時、正方向及び逆方向コーディング方法を用いて、速い速度で最適（near optimum solution）なドメインブロックを探索する方法を提案する。本発明の実施形態では、マクロブロックを圧縮する時、マクロブロックを圧縮するコストが最小となるようにした後、逆方向に、マクロブロックを含み、既に圧縮されたマクロブロックのコストが最小となるように更新（update）する。つまり、本発明の実施形態では、探索範囲内で正方向（前方向）のマクロブロックを探索して、コストが最小となるよう圧縮し、その後、再び逆方向（後方向）に、既に圧縮されたマクロブロックのコスト確認し、ドメインブロックの長さ及び距離を調整する。
【００２５】
図２は、本発明の実施形態に係る逆方向コーディングによる圧縮効果を例示する図である。
【００２６】
本発明の実施形態では、逆方向に、現在圧縮するマクロブロックを含み、既に圧縮されたマクロブロックに対して、距離コスト（distance cost）と差異コスト（difference cost）が最適化されるレンジブロックサイズ（range block size）ｋを求める。この場合、一般的な方法では、レファレンスブロック（reference block）と一致しないマクロブロックは、同レンジブロックに属さない。しかし、本発明の実施形態に係るマクロブロックは、ドメインブロックと異なる場合であっても、レンジブロックに属することができる。
【００２７】
前記図２のような場合、レンジブロックを３つにして、コストＴ＝cost（Ａ，Ａ）＋cost（Ｘ，Ｙ）＋cost（Ｂ，Ｂ）にならなければならないが、本発明の実施形態では、レンジブロックを１つにし、コストＵ＝cost（ＡＸＢ，ＡＹＢ）になる。この場合、コストＴは少なくとも２つの距離値を有する反面、コストＵは１つの距離値を有する。従って、ＸとＹが同一でなくとも、ＸとＹの差異値をコードしたcost（Ｘ，Ｙ）は、少ない値を有することにより、Ｕ＜Ｔが可能である。前記図２において、マクロブロックＸがレファレンスブロックＹと同一ではない場合も、同レンジブロックに属することができる。
【００２８】
図３（ａ）及び図３（ｂ）は、本発明の実施形態により、探索範囲内でドメインブロックを正方向及び逆方向コードし、圧縮対象であるレンジブロックに対する最適のドメインブロックを選択する方法を説明するための図である。前記圧縮器は、レンジブロックが設定されると、探索範囲内に存在するドメインブロックを正方向及び逆方向コードし、コストが最も低いドメインブロックを選択した後、前記選択されたドメインブロックとレンジブロックとの間の距離及びコストを、圧縮データとして生成する。図３（ａ）は、本発明の実施形態に係る正方向コーディングの実行過程を説明するための図であり、図３（ｂ）は、本発明の実施形態に係る逆方向コーディングの実行過程を説明するための図である。ここで、前記レンジブロックは、Ｂ，Ｃ［２６，２７］（２６及び２７番目のショートブロック）であり、探索範囲は、［１０，１１，１２，．．．，２５］（１０番目ショートブロックから２５番目のショートブロック）までの場合を仮定して説明することにする。
【００２９】
前記図３（ａ）及び図３（ｂ）を参照すると、前記レンジブロックＢ，Ｃ［２６:２７］に対する正方向コーディングは、探索範囲内のドメインブロックを順次選択し、前記選択されたドメインブロックと、前記レンジブロックＢ，Ｃ［２６，２７］のショートブロックのデータを比較する。前記圧縮器は、正方向コーディングを行いながら、前記レンジブロックの前に位置する探索範囲内のドメインブロックとの距離及び差異値を計算する。その後、前記圧縮器は、前記逆方向コーディングを行いながら、前記の計算された距離及び差異値を分析し、比較したドメインブロックの中から前記レンジブロックと最短距離でかつ差異値が少ないドメインブロックを選択する。つまり、前記図３（ａ）の場合，前記圧縮器は、正方向及び逆方向にコーディングを行いながら、前記レンジブロックＢ，Ｃ［２６:２７］と最も類似し、かつ距離が近いドメインブロックＢ，Ｃ［２０：２１］を選択する。ここで，ドメインブロックＢ，Ｃ［１４：１５］は、差異値においてドメインブロックＢ，Ｃ［２０:２１］と同様のコストを有するが、距離コストがより大きいことから，ドメインブロックＢ，Ｃ［２０:２１］が選択され、これに関する距離情報と差異値が格納される。この場合、前記圧縮器は、前記レンジブロックＡ，Ｂ［２２，２３］は、距離値が４で差異値が０であるドメインブロック（Ａ，Ｂ［１８，１９］）を選択し、レンジブロックＥ，Ｆ［２４，２５］は、距離値が８で差異値が０であるドメインブロック（Ｅ，Ｆ［１６，１７］）を選択し、レンジブロックＢ，Ｃ［２６，２７］は、距離値が６で差異値が０であるドメインブロック（Ｂ，Ｃ［２１，２２］）を選択する。
【００３０】
この際、前記逆方向コーディングを行う過程で、多数のマクロブロックをグループ化して探索する。例えば、前記図３（ｂ）における前記レンジブロックＢ，Ｃ［２６:２７］に対する逆方向コーディングは、レンジブロックＡ，Ｂ，Ｅ，Ｆ，Ｂ，Ｃ［２２:２７］−ドメインブロックＡ，Ｂ，Ｄ，Ｆ，Ｂ，Ｃ［１０:１５］のような１つの距離値で構成されたコーディングが、前記図３（ａ）に示したように、ドメインブロックＢ，Ｃ［２０:２１］−レンジブロックＢ，Ｃ［２６:２７］、ドメインブロックＥ，Ｆ［１６:１７］−レンジブロックＥ，Ｆ［２４:２５］、ドメインブロックＡ，Ｂ［１８:１９］−レンジブロックＡ，Ｂ［２２:２３］の３つの距離値で構成されたコーディングよりも少ないコストを有するため、以前にコードされた結果を再構成して、圧縮率を高めることができる。ここで、前記１つの距離値で構成されたコーディングに、同一でない値（Ｅ［２４］、Ｄ［１２］）が存在するため、差異値に対するコストは３つの距離値で構成されたコーディングよりも大きいが、距離値を２つ少なく用いることで全体コストは減る。この場合、前記圧縮器は、レンジブロックＡ，Ｂ，Ｅ，Ｆ，Ｂ，Ｃ［２２:２７］を、ドメインブロックＡ，Ｂ，Ｄ，Ｆ，Ｂ，Ｃ［１０:１５］と比較して、距離値１２、差異値０、ＤＦ  ＸＯＲ ＥＦ、０にコードするようになる。
【００３１】
図４は、本発明の実施形態に係る圧縮方法の過程を示すフローチャートである。まず、前記圧縮器は、ブロックの各参照位置（reference position）に対し、逆方向（後方向）に現在のコストを最大に節減する長さ（length）を求め、セービングが最大セービング（maximum saving）より大きいと、最適な長さ（optimum length）と参照ブロックに対する情報を更新する。ここで、前記セービング（saving）は、範囲内でのレンジブロックのコストの値を意味する。次いで、前記圧縮器は、最適な参照ブロックと最適な長さに対するブロックのコーディングを更新する。最後に、前記圧縮器は、一定の範囲ごとに差異コーディングを最適化するローカルテーブルを生成し、前記ローカルテーブルは、グローバルテーブルを参照して圧縮格納する。
【００３２】
前記図４を参照すると、圧縮器は、ステップ１１１で、設定されたレンジブロックの参照ブロックの位置に対し、逆方向コストセービング（backward cost saving）が最大になる長さを求める。図５は、前記図４のステップ１１１における最適化を行う動作を説明するための図である。前記図５を参照すると、図５のステップ１５１で、圧縮器は、範囲内の各レンジブロックに対しセービング値（saving＝old cost−new cost）を求める。前記セービング値を求めた後、圧縮器は、ステップ１５３で前記セービング値が最大セービング値より大きいか否かを検査し、大きくない場合には、以前の値をそのまま維持しながらステップ１５７に進む。しかし、前記セービング値が最大セービング値よりも大きい場合には、ステップ１５５で、前記最大セービング値を前記で計算したセービング値に更新し、最適な長さ（optimum length）を前記１５１ステップの長さに更新し、最適な参照ブロック（reference）を前記ステップ１５１での参照ブロックに変更する。その後、圧縮器は、ステップ１５７で長さが最大の長さより大きいか否かを検査する。大きくない場合には、ステップ１５９で長さを１増加させた後、前記ステップ１５１に戻る。前記最大の長さよりも大きいと、圧縮器はステップ１５７でこれを感知し、ステップ１６１でレンジブロックの位置をハッシュテーブル（hash table）に挿入し、前記図４にリターンする。
【００３３】
すると、圧縮機は、図４のステップ１１３及び１１５を行いながら、前記セービング値が最大セービング値より大きいか否かを検査し、大きくない場合には、以前の値をそのまま維持し、セービング値が最大セービング値よりも大きい場合には、前記最大セービング値を更新し、最適の長さを更新し、最適な参照ブロックを変更する。その後、圧縮器は、ステップ１１７で前記参照ブロックがテーブルにあるか否かを検査し、参照リストにあると、参照リストから該当データを読み出した後、ステップ１１１に進み、参照リストにない場合には、ステップ１２１で最適な参照ブロックと最適な長さに対し、レンジブロックのコーディングを更新する。参照リストは、以前のレンジブロックをコードする時、以後のレンジブロックに対する速い探索のためにショート（short:１６bit）単位でキュー（queue）に登録される。１つのマクロブロックに対する探索対象は、２つのショートのうち、少なくとも一つが同位置で構成される。
【００３４】
コードした後、圧縮器は、ステップ１２３で差異コーディングテーブル（difference coding table）を更新する。
【００３５】
図６は、前記図４のステップ１２３で差異コーディングテーブルを更新する過程を示すフローチャートである。前記図６を参照すると、圧縮器は、ステップ１８１で特定レンジブロックＲをコードした後、ステップ１８３及び１８４を行いながら、該当コーディングレンジブロックＲが繰り返し処理された回数Ｎ（初期値は０）の値を１増加し、その１増加したＮの値が所定のＴ（Threshold）値よりも小さいと、再び次のレンジブロックＲをコードし、上記の過程を繰り返す。そして、増加したＮ値がＴ（Threshold）よりも大きいと、ステップ１８５でローカルフリークエンシー（local frequency）とコストセービング（cost saving）値によりローカルテーブルを構成する。その後、圧縮器はステップ１８９で、更新コストがコストセービング値より小さいか否かを検査し、小さい場合、ステップ１９１でローカルテーブルのコーディングテーブルを更新する。
【００３６】
上記のように、生成されるローカルテーブルは、前記グローバルテーブルと共にレンジブロックのデータを圧縮するためのテーブルとして用いられる。
【００３７】
図７（ａ）は、本発明の実施形態に係る、グローバルテーブルの特性を説明するための図であり、図７（ｂ）は、ローカルテーブルの特性を説明するための図である。
【００３８】
前記図７（ａ）を参照すると、グローバルテーブルは、既に作られているテーブル（pre-defined statistics value）であり、データの圧縮時、実験的に、頻繁に発生する差異値を抽出した値を格納する。よって、前記グローバルテーブルは更新することができないテーブルであり、圧縮時、グローバルテーブルのデータを読み出すことのみ可能である。従って、グローバルテーブルは、固定テーブルとなり、固定されたテーブルサイズを有する。本発明の実施形態において、前記グローバルテーブルは、８ビットよりも小さいサイズ［０，...，２５５］を有すると仮定する。前記グローバルテーブルのインデックスは、０から２５５になり得、各インデックスに格納されるデータは、レンジブロックとドメインブロックの排他的論理和の値となる（ｘ result＝［statistics value Ａ］ＸＯＲ［statistics value Ｂ］）。従って、前記図７（ａ）のようなグローバルテーブルを用いる場合、圧縮器は、２つのマクロブロックの差異値のうち最も頻繁に発生する差異値を０，１，２，３，...，２５５に割り当てて、圧縮効率を高めることができる。
【００３９】
前記図７（ｂ）を参照すると、ローカルテーブルはデータの圧縮中に生成するテーブルであって、本発明の実施形態においては、同一値が３回以上発生し、前記発生した同一値が前記グローバルテーブルが登録されていない値である場合に、該当値をローカルテーブルに登録する。前記ローカルテーブルは、圧縮器の探索器で生成することができる。前記ローカルテーブルは更新可能であり、データの圧縮中に前記テーブルにアクセス（read and write）可能である。前記ローカルテーブルは可変的に登録可能であり（floating entry）、前記ローカルテーブルのサイズは、前記グローバルテーブルのサイズよりも大きい値に設定する。本発明の実施形態において、前記ローカルテーブルのサイズは、８ビット［２５６，...，５１１］の大きさを有すると仮定する。この場合、前記ローカルテーブルのインデックスは、２５６から５１１となり、各インデックスに格納されるデータは、前記レンジブロック及びドメインブロックの排他的論理和の値となる（ｙ result＝［dynamic value Ａ］ＸＯＲ［dynamic value Ｂ］。従って、前記図７（ｂ）のようなローカルテーブルは、圧縮器がデータを圧縮する間に生成され、最初に発生する差異値からテーブルインデックス２５６，２５７，...，５１１に割り当てることができる。
【００４０】
ここにおいて、前記圧縮器の特徴を、圧縮の構成、逆方向コストセービング（backward cost saving）、差異コーディング（difference coding）、距離コーディング（distance coding）、圧縮解除の速度制御（decoding  speed control）の順に検討する。
【００４１】
まず、前記圧縮の構成を検討すると、各マクロブロックは２つのショートブロックで構成されると仮定し、各ショートブロックは１６ビットで構成されると仮定する。前記レンジブロックのドメインブロックは、前記レンジブロック以前の探索範囲内に存在する同一の大きさのブロックである。また、前記レンジブロックは、互いに重ならず、インテジャー（integer）単位で配列（align）し、前記ドメインブロックは、互いに重なり、バイト（byte）単位で配列され、レンジブロックの圧縮は、ドメインブロックとの距離及び差異で構成される。
【００４２】
第二に、逆方向コストセービングの動作を検討すると、マクロブロックの参照リスト（reference list）は、マクロブロックと少なくとも１つのショートブロックとが一致する位置で構成され、マクロブロック以前のマクロブロックが圧縮されるハッシュテーブル（hash table）に格納される。そして、逆方向に、同一の距離値で現在のコストを最大にセービングする長さｋを求める。ここで、前記セービングは、ｋ個のレンジブロックでコストの値を意味する。その後、最適なレファレンスと最適な長さに対し、レンジブロックのコーディングを更新する。すなわち、前記圧縮器は、図４のステップ１１１〜１２１を行いながら最適化ステップを行うが、それは次の通りである。まず、圧縮器は長さ内の各レンジブロックに対し、コストの和を求める。その後、前記圧縮器は、現在のセービング（saving＝old cost−new cost）が最大セービングより大きいか（saving＞max saving）否かを検査し、大きいと、前記圧縮器はパラメーター値を更新する。その後、圧縮器は、長さが最大長さより小さい（length＜max length）か否かを検査する。前記長さが最大長さよりも小さいと、前記長さを１増加させた後、次のステップを進むために前記過程に戻り、前記長さが最大の長さであると、前記レンジブロックの位置をハッシュテーブル（hash table、Ｒ）に挿入する。
【００４３】
第三に、前記圧縮器の差異値を決定する過程を検討すると、前記差異コーディング（difference coding）は、ショートブロック単位の排他的論理和の値をコードするが、前記コーディング方法は、復元速度の要求事項に応じて選択される。グローバルテーブル（global table）は、大きい範囲（global frequency）の圧縮に効率的であるエントロピー符号化テーブル（entropy coding table）である。ローカルテーブルは、前記グローバルテーブルを参照して圧縮した後、格納する。前記ローカルテーブルの構成は、テーブル圧縮率と差異コーディングコスト（difference coding cost）を考慮し、テーブルエントリー（table entry）の更新により決定される。
【００４４】
第四に、前記圧縮器の距離値を決める過程を検討すると、前記距離コーディング（distance coding）は、復元速度及び圧縮率を考慮し、次のような二つの方法を選択することができる。その一つは、現在のレンジブロックの距離が以前のレンジブロックの距離と同一であるときは、以前のレンジブロックと同一であることを示す１ビットで表示し、以前のレンジブロックの距離と異なって、２５６以下であれば、１０ビットで表示し、それ以外の場合には１８ビットで表示する。もう一つの方法は、距離を全て１６ビットで表示し、距離シークエンス（distance sequence）を圧縮して別途に格納する。本発明の実施形態では、前者の方法を用いると仮定する。
【００４５】
第五に、圧縮解除の速度制御方法を検討すると、大型のマクロブロック（large macro block：ＬＭＢ）は、ｍ個のマクロブロックから構成される。各ＬＭＢのコーディングコストが臨界値（threshold value：t）より大きいと、コードせずにそれ自体を別途に格納する。このようなＬＭＢを、例外処理ブロック（exception handling block）と称することにする。前記例外処理ブロックは、復元過程が非常に簡単であるため、復元速度を向上させることになる。前記復元速度の調整は、単に臨界値ｔを調整すれば良い。
【００４６】
前述したように、本発明の実施形態に係るデータ圧縮器は、次のような特徴を有する。まず、１つのマクロブロックを圧縮する時、レンジブロックの範囲（partition）を調整して、マクロブロックのデータ圧縮率を向上することができる。第二に、コストを直接最小化（minimize）せずに、既に圧縮されたコストのセービングが最大化（maximize）となる位置を探して、圧縮時間を改善することができる。つまり、コストを直接最小化すると、レンジブロックの長さが可変であることから、時間的複雑度（time complexity）が非常に大きくなる。第三に、本発明の実施形態では、マクロブロックを多数のショートブロック（ここでは、２つのショートブロックを用いる）を用い、圧縮時に、レンジブロックの少なくとも１つのショートブロックが一致するポジションをハッシング（hashing）して、圧縮実行速度を向上させると共に、レンジブロックの連続性を保証する。第四に、グローバルテーブルと対比し、ローカルテーブル構成をコストセービング演算によって決定する。第五に、グローバルテーブルとローカルテーブルを圧縮によって格納し、圧縮時、これを用いてマクロブロックのデータを圧縮する。
【００４７】
上記のような、本発明の実施形態に係る、圧縮器の構成及び動作を具体的に検討する。
【００４８】
図８は、本発明の実施形態に係る前記圧縮器の構成を示す図である。
【００４９】
前記図８を参照すると、ローダ（loader）２１０は、ダウンロードされるデータ（raw binary data）をロードする。前記ローダ２１０は、コーダ２４０で圧縮するデータの大きさ（圧縮フレームの大きさ）のデータをロードする。ここで、前記「圧縮フレーム（coding frame）」とは、前記コーダ２４０がデータを圧縮する大きさ（または、探索器で決められる探索範囲の大きさ）を意味する。そして、バッファは、前記ローダ２１０によってロードされる圧縮フレームのデータを一時バッファリングする機能を果たす。
【００５０】
探索器２２０は、前記ロードされた圧縮フレームのデータから探索範囲を決定し、レンジブロックを確認した後、前記探索範囲内に位置したドメインブロックと前記レンジブロックとを比較して、２つのブロック間の差異値を生成し、前記生成された差異値によるコストを計算し、最もコストが低いドメインブロックの距離情報及びコスト値を決定する。このとき、前記探索器２２０は、正方向コーディングにおいて、前記マクロブロック単位の大きさのレンジブロックと、探索範囲内のドメインブロックのコストを計算し、逆方向コーディングにおいて、以前にコードされたレンジブロックと前記マクロブロックが含まれたコストを最適化するレンジブロックの長さ及び距離を決定する。そして、前記探索過程で、前記レンジブロックとドメインブロックとの差異値を計算した後、同一である場合には、ドメインブロックとの距離情報及び同一であることを表す差異情報を生成し、異なる場合には、前記ドメインブロックの距離情報及び２つのブロックが異なることを表す差異情報を生成する。ここで、前記差異情報は、２つのブロックが同一の場合、同一であることを表す差異フラグとなり、異なる場合、２つのブロックが異なることを表示する差異フラグ及び差異値で構成される。ここで、前記差異値は、２つのブロックの比較結果値（例えば、排他的論理和の値）をそのまま使用可能であり、前記差異値をコストに変換した値、または前記コストを変形した値などとして用いることができる。本発明の実施形態では、前記比較結果値からコストを計算し、前記計算されたコストをテーブルのインデックスに変換して、差異値を生成する場合を例に挙げて説明する。前記探索器２２０は、コストテーブルを備える。ここで、前記コストテーブルは、計算されたコストに対応するテーブルのインデックス情報を格納するテーブルとなる。ここで、前記テーブルは、グローバル及びローカルテーブルとなり、前記テーブルインデックスに対応する位置に前記差異値が格納される。また、前記探索器２２０は、前記探索範囲内で正方向コーディングを行いながら、レンジブロックと選択されるドメインブロックのデータを比較して差異値を生成し、前記コストテーブルで差異値に対応するコストを計算する。そして、逆方向コーディングを行い、前記生成されたコストを保管しているコストと比較して、現在生成されたコストがさらに低いと、前記コストを更新し、そうでない場合には、以前のコストを維持する。このような動作を繰り返しながら、前記レンジブロックと探索範囲内のドメインブロックを比較しながら、最低コストを探索し、探索終了時、前記コストテーブルで探索された最低コストに当たるテーブルインデックスを選択する。その後、前記探索器２２０は、前記選択されたコストに対応するドメイン情報との距離情報、及びテーブルインデックスを前記コーダ２４０に伝達し、次のレンジブロックを選択して上記のような動作を繰り返して行う。
【００５１】
前記コーダ２４０は、グローバルテーブル及び/またはローカルテーブルを備える。また、前記グローバルテーブル及びローカルテーブルは、前記バッファにバッファリングすることができる。前記グローバルテーブルは、前記図７（ａ）で説明したように、固定テーブル（fixed table）であって、実験的に測定し、これをテーブル化したものである。前記ローカルテーブルは、前記図７（ｂ）で説明したように、可変テーブル（variable table）であり、現在圧縮するデータに対してのみ可変的に生成されるテーブルである。ここで、前記グローバルテーブル及びローカルテーブルは、前記コストによって決定されるテーブルインデックスにより位置が指定され、前記テーブルインデックスの位置に、レンジブロックとドメインブロックとの差異値が格納されるテーブルである。以下に説明する本発明の実施形態では、グローバルテーブル及びローカルテーブルを全て使用する場合を仮定して説明する。しかし、前記グローバルテーブルまたはローカルテーブルのいずれか一つのみを使用して、データを圧縮することもできる。前記コーダ２４０は、前記コスト値に対応する位置に格納されたテーブルインデックスをレンジブロックのコーディングデータとして処理する。ここで、前記コストは、前記探索器２２０で計算される。前記探索器２２０は、レンジブロックとドメインブロックとの差異情報を基にして前記コストを計算することができる。そして、コストテーブルは、前記コストによって指定される位置にテーブルインデックスを格納する。ここで、前記テーブルインデックスは、グローバルテーブル及び/またはローカルテーブルのインデックスである。前記探索器２２０は、前記レンジブロックと、ドメインブロックの距離情報（距離フラグ及び距離値）、及び前記テーブルインデックスを含む差異情報を前記コーダ２４０に伝達する。すると、前記コーダ２４０は、前記距離情報及び差異情報を圧縮データにコードする。
【００５２】
前記探索器２２０及びコーダ２４０の動作を検討する。本発明の実施形態では、前記レンジブロックは２つ以上のショートブロックで構成される場合を仮定している。前記探索器２２０は、前記レンジブロックとドメインブロックとの差異を計算して、コストを計算する。このとき、レンジブロックとドメインブロックとの差異値が０、つまり同一であると、コスト値は０（または、非常に小さいコスト値）と計算される。また、レンジブロックとドメインブロックを構成するショートブロックが少なくとも１つ以上同一であると、同一のショートブロックのコストは０になり、他のショートブロックのコストは、２つのショートブロックの差異値によって計算される。前記のような方法で、前記探索器２２０は、前記レンジブロックのショートブロックのデータと、前記探索範囲内のドメインブロックのショートブロックデータとを比べながら、最低コストを有するショートブロックで構成されたドメインブロックを選択する。この際、前記探索器２２０は、探索範囲内で、ドメインブロックを正方向に検索しながらコストを計算し、前記計算されたコストを逆方向に探索しながら、現在保管している最低コストと比較した後、現在探索されたコストが低いと、現在ドメインブロックとの距離情報及びコストを更新する。よって、前記探索範囲内のドメインブロックの探索を終了すると、前記探索器２２０は、探索範囲内で、前記レンジブロックと最低コストを有するドメインブロックとの距離情報及びコスト値を保管することになる。その後、前記探索器２２０は、前記コストを用いて、コストテーブルでテーブルインデックスを求め、前記距離情報と共に、前記テーブルインデックスを含む差異情報を前記コーダ２４０に伝達する。このとき、前記差異情報は差異フラグ及びテーブルインデックスを含み、レンジブロックとドメインブロックが同一の場合、前記テーブルインデックスは含まれない。本発明の実施形態では、前記探索器２２０が差異情報を生成する時、レンジブロックとドメインブロックのデータが一致すると、差異フラグをリセット（差異フラグ＝０）し、差異フラグだけからなる差異情報を生成する。しかし、前記レンジブロックとドメインブロックのデータが一致しないと、前記探索器２２０は、差異フラグをセット（差異フラグ＝１）し、差異値によるコストによって選択されるテーブルインデックス情報を含む差異情報を生成する。
【００５３】
すると、前記コーダ２４０は、前記差異情報の差異フラグを分析して、２つのブロックが同一のデータであると、前記距離情報及び差異フラグをレンジブロックの圧縮データにコードする。ここで、前記差異情報は、テーブルインデックスを含むことができる。前記テーブルインデックスが含まれていると、前記コーダ２４０は、前記テーブルインデックスに対応するテーブル（グローバルテーブル及び/またはローカルテーブル）で、２つのブロックの差異値を確認した後、前記差異値が正常な差異値（つまり、前記探索器２２０で探索された差異値と同一の差異値）であると、前記距離情報及び差異情報をレンジブロックの圧縮データにコードする。
【００５４】
また、本発明の実施形態では、前記圧縮器は例外ブロック処理部２５０をさらに備える。前記例外ブロックは、レンジブロックとドメインブロックとの差異値が設定された臨界値よりも大きいため、圧縮効果がほんとんどないブロックである。例えば、前記レンジブロック及びドメインブロックは、前記図１で説明したように、マクロブロック単位の大きさを有し、前記マクロブロックは２つ以上のショートブロックで構成される。この場合、前記探索器２２０は前述したように、レンジブロックを決定し、探索範囲内のドメインブロックを正方向及び逆方向コードして、差異値（すなわち、コスト）が一番小さいドメインブロックを選択する。しかし、前記設定されたレンジブロックと選択されたドメインブロックのショートブロックデータが共に同一でない（つまり、レンジブロック及びドメインブロックのショートブロックデータが全て異なる）と、現在のレンジブロックのデータを圧縮する効果が顕著に低下する。このような場合、本発明の実施形態では、該当するレンジブロックのデータを圧縮せずに（no coding）そのまま格納し、例外ブロックとして処理したことを表すフラグを生成する。このような例外処理方法により、圧縮解除器でメモリに圧縮格納されたデータを復元する時、例外処理ブロックのデータは圧縮解除過程を行わずに直接復元され、デコーディング速度の改善が可能になる。本発明の実施形態では、前記コーダ２４０がグローバルテーブル及びローカルテーブルを備え、差異情報の差異フラグを２ビットで構成し、前記例外ブロックとして処理する例外フラグを共に表示する方法を提案する。この場合、前記差異フラグは、下記の［表１］のように構成することができる。
【００５５】
【表１】
2011239434.tif 000003
【００５６】
前記探索器２２０は、レンジブロックと選択されたドメインブロックのショートブロックデータを、探索範囲内で正方向及び逆方向検索し、最低コストを有するドメインブロックを選択する。第一に、選択されたドメインブロックのデータが、前記レンジブロックのデータと同一であると、前記探索器２２０は、選択されたドメインブロックとレンジブロックの距離情報及び同一さを表す差異フラグ（差異フラグ＝０）を生成し、前記コーダ２４０に伝達する。第二に、選択されたドメインブロックのデータが、前記レンジブロックデータと異なり、２つのブロックの差異値によって生成されたコストがグローバルテーブルのインデックスであれば、前記探索器２２０は、前記選択されたドメインブロックとレンジブロックとの距離情報と、グローバルテーブルインデックスに存在することを表す差異フラグ（差異フラグ＝０１）、及びグローバルテーブルインデックスを含む差異情報を生成し、前記コーダ２４０に伝達する。第三に、選択されたドメインブロックのデータが前記レンジブロックデータと異なり、２つのブロックの差異値によって生成されたコストがローカルテーブルのインデックスであれば、前記探索器２２０は、前記選択されたドメインブロックと、レンジブロックの距離情報、ローカルテーブルインデックスに存在することを表す差異フラグ（差異フラグ＝１０）、及びローカルテーブルインデックスとを含む差異情報を生成し、前記コーダ２４０に伝達する。第四に、前記レンジブロックとドメインブロックのデータが異なり、２つのブロックの差異値によって生成されたコストが、グローバル及びローカルテーブルに存在しなければ、前記探索器２２０は、前記差異フラグを例外処理フラグとして設定し、これを前記コーダ２４０に通知する。
【００５７】
そうすると、前記コーダ２４０は、前記差異フラグを分析し、レンジブロックのデータをコードする。第一に、前記差異フラグが２つのブロックのデータが同一であることを表すフラグ（差異フラグ＝０）であれば、前記コーダ２４０は、前記選択されたドメインブロックの距離情報及び差異フラグを、前記レンジブロックの圧縮データにコードする。第二に、前記差異フラグが、グローバルテーブルのインデックスを有するデータであることを表すフラグ（差異フラグ＝０１）であれば、前記コーダ２４０は、前記選択されたドメインブロックの距離情報と、差異フラグと、グローバルテーブルインデックスとからなる差異情報を、レンジブロックの圧縮データにコードする。第三に、前記差異フラグがローカルテーブルのインデックスを有するデータであることを表すフラグ（差異フラグ＝１０）であれば、前記コーダ２４０は、前記選択されたドメインブロックの距離情報と、差異フラグと、ローカルテーブルインデックスとからなる差異情報を、レンジブロックの圧縮データにコードする。第四に、前記差異フラグが例外処理フラグ（差異フラグ＝ １１）であれば、前記コーダ２４０は、前記例外ブロック処理部２５０を駆動し、前記レンジブロックのデータをコードせずに、そのままメモリに格納させる。この場合、前記メモリには、前記例外ブロックとして処理されたレンジブロックのコードされていないデータが格納され、差異フラグを例外処理フラグとして格納する。本発明の実施形態では、前記例外ブロック処理部２５０が、前記コーダ２４０と独立して構成される場合を仮定し説明しているが、前記例外ブロック処理部２５０は、前記コーダ２４０に含まれる構成でも具現することができる。
【００５８】
図９は、前記探索器２２０の動作を説明するための図である。前記図９において、レンジブロックは、参照番号３９１のように８番及び９番のショートブロックである場合を仮定している。また、ドメインブロックも２つのショートブロックを対象としており、６番及び７番のショートブロック、５番及び６番のショートブロック、４番及び５番のショートブロック、３番及び４番のショートブロック、２番及び３番のショートブロック、１番及び２番のショートブロック、そして、０番及び１番のショートブロックなどになり得る。また、前記図９の参照番号３９３のような圧縮対象のデータがダウンロードされ、前記ローダ２１０によってバッファにバッファリングされた状態である。
【００５９】
前記図９を参照すると、ステップ３１０で前記探索器２２０は探索範囲をロードし、探索範囲は２、４、８、１６、...、６５５３６マクロブロックとなる。ここで、前記探索範囲は、前述したように、前記コーダ２４０がデータを圧縮するための単位（圧縮フレーム）である。前記探索範囲を決定した後、前記探索器２２０は、ステップ３２０で圧縮対象であるレンジブロックをロードし、前記レンジブロックは、８番及び９番のショートブロックであると仮定する。その後、前記探索器２２０は、ステップ３３０で、前記レンジブロックを探索範囲内の各ドメインブロックと比較できるように、ドメインブロックを選択する。前記ドメインブロックの選択は、レンジブロックの位置で正方向コードしながらドメインブロックを選択し、前記ドメインブロックは、ショートブロック単位で移動しながら選択される。前記ドメインブロックを選択した後、前記探索器２２０は、ステップ３４０で、前記選択されたドメインブロックのデータを前記レンジブロックのデータと比較する。この場合、前記比較演算は、排他的論理和演算である。その後、前記探索器２２０は、ステップ３５０で、前記ドメインブロックとの距離情報を算出し、ステップ３６０で、前記２つのブロック間の差異値によるコストを計算する。ここで、前記距離情報は、距離フラグ及び距離値で構成される。また、前記コストは、２つのブロックの比較結果値の差異値を基にして計算する。前記探索器２２０は、テーブルインデックスを格納するコストテーブルを備え、コストは、コストテーブルのアドレスとして使用される。従って、前記コストが計算されると、前記探索器２２０は、前記コストに対応するアドレスに格納されたコストテーブルの値を発生し、コストテーブルの値はテーブルインデックスになる。また、前記テーブルインデックスは、前記グローバルテーブルまたはローカルテーブルのインデックスになる。
【００６０】
上記のような過程を行いながら、前記探索器２２０は、前記レンジブロックと探索範囲内のドメインブロックとの距離情報及びコストを計算し、前記計算されたコストをコストテーブルで探索し、テーブルインデックスを求める。このとき、前記探索器２２０は、前記コストによって、探索するテーブルインデックスの中で最小値を有するテーブルインデックスを選択する。つまり、正方向コーディングを行いながら、ドメインブロックとの距離情報及びコストを計算し（つまり、レンジブロックを選択した後、順にドメインブロックを選択しながら、距離情報及びコストを計算し）、前記コストを用いて、コストテーブルでテーブルインデックスを決定する。その後、逆方向コーディングを行い、前記決定したテーブルインデックスと現在まで探索しながら保管している最低テーブルインデックスとを比較し、以前のテーブルインデックスがさらに小さい値を有すれば、以前のテーブルインデックスを維持し、そうでなければ（つまり、現在のテーブルインデックスがさらに小さい値を有すれば）、前記テーブルインデックス値を更新して格納する。つまり、前記探索器２２０は、現在のテーブルインデックスがさらに小さければ、現在探索されたドメインブロックとの距離情報及び、差異値によるテーブルインデックスを更新格納し、そうでなければ、以前の探索過程で保管している距離情報とテーブルインデックスをそのまま維持する。前記のような動作を繰り返して行うと、前記探索器２２０は、前記レンジブロックと、探索範囲内で最低コストを有するドメインブロックとの距離情報及びテーブルインデックスを格納することになる。
【００６１】
しかし、前記探索器２２０で、レンジブロックを構成するショートブロックのいずれか一つのショートブロックも探索範囲内のショートブロックと同一でない場合、該当レンジブロックの圧縮効果は悪くなる。この場合、本発明の実施形態では、該当レンジブロックを例外ブロックとして処理する。すなわち、前記探索器２２０は、レンジブロックのショートブロックを、探索範囲内のドメインブロックのショートブロックと比較しながら、一致する数以上のショートブロックを探索できなかった場合、例外処理フラグを生成し、該当レンジブロックのコストを計算しない。例えば、レンジブロック及びドメインブロックの大きさを有するマクロブロックが、Ｎ個のショートブロックで構成され、レンジブロック及び探索領域内のドメインブロックを比較する時、２つのマクロブロックで一致するショートブロックの数がＭ個以下の場合、前記探索器２２０は、該当レンジブロックを例外処理ブロックに設定することができる。このとき、前記探索器２２０は、該当レンジブロックを例外処理ブロックに決定し、例外処理フラグをセットする。この場合、本発明の実施形態では、前記差異フラグを例外処理フラグとして処理し（上記の表１の場合、差異フラグは１１になる）、テーブルインデックスは生成しない。
【００６２】
本発明の実施形態において、前記レンジブロック及びドメインブロックは、２つのショートブロックで構成される場合を仮定して説明している。この場合、Ｎ＝２、Ｍ＝０に設定することができる。そして、前記探索器２２０は、レンジブロックのショートブロックと、探索範囲内の全てのドメインブロックのショートブロックとが同一でない場合、該当レンジブロックを例外処理ブロックに決め、差異フラグを「１１」に決定し、例外処理ブロックであることを表示する。
【００６３】
また、前記探索器２２０は、ローカルテーブルを生成することができる。すなわち、前記図７（ｂ）に示したように、前記探索器２２０は、グローバルテーブルに登録されていないが、同一の差異値（レンジブロックとドメインブロックとの間の差異値）が設定された回数（ここでは、３回）以上発生すると、これをローカルテーブルに登録する。このとき、前記ローカルテーブルのコスト（テーブルインデックス）は、前記グローバルテーブルのコスト（テーブルインデックス）よりは、さらに大きい値を有するように設定する。前記コスト及びテーブルインデックスは、コストテーブルに登録する。前記のように、ローカルテーブルを用いる場合、圧縮器は、前記グローバルテーブルには登録されていないが、よく発生する差異値をテーブルに登録し、圧縮を効率的に行うことができるようになる。
【００６４】
前記のような探索過程が終了すると、前記探索器２２０は、ステップ３７０で、前記格納している距離情報及び差異情報（テーブルインデックスを含む）を前記コーダ２４０に伝達する。
【００６５】
前記図９において、前記探索器２２０は、図９の参照番号３９３のように、バッファリングしたデータをマクロブロック単位に設定し、現在のレンジブロックの８番及び９番のブロックの前に位置するドメインブロックを６番と７番、５番と６番、４番と５番、...、０番と１番のブロックの順にインデックスし、探索を行う。そして、前記探索器２２０は、前記レンジブロックのデータを選択されるドメインブロックのデータと比較して、その結果値を出力する。この際、前記探索器２２０は、レンジブロックとドメインブロックとを比べて差異値を生成するが、６番と７番のショートブロックがドメインブロックに選択される時点で、Ｅ ＸＯＲ Ｂ、Ｃ ＸＯＲ Ｂを生成し、５番と６番のショートブロックがドメインブロックに選択される時点で、Ｂ ＸＯＲ Ｂ、Ｅ ＸＯＲ Ｂを生成し、４番と５番のブロックがドメインブロックに選択される時点で、Ｂ ＸＯＲ Ｂ、Ｂ ＸＯＲ Ｂを生成し、３番と４番のショートブロックがドメインブロックで時点で、Ｆ ＸＯＲ Ｂ、Ｂ ＸＯＲ Ｂを生成し、２番と３番のショートブロックがドメインブロックに選択される時点で、Ｄ ＸＯＲ Ｂ、Ｆ ＸＯＲ Ｂを生成し、１番と２番のショートブロックがドメインブロックに選択される時点で、Ｂ ＸＯＲ Ｂ、Ｄ ＸＯＲ Ｂを生成し、０番と１番のショートブロックがドメインブロックに選択される時点で、Ａ ＸＯＲ Ｂ、Ｂ ＸＯＲ Ｂを生成する。また、前記ドメインブロックとレンジブロックとの間の距離情報も生成する。
【００６６】
その後、前記探索器２２０は、生成された差異値を基にコストを計算するが、レンジブロックがドメインブロックと同一の場合（前記図９において、４番と５番のショートブロック）にはコストは０になり、２つのショートブロックのうち１つのショートブロックが同一の場合（５番と６番のショートブロック、３番と４番のショートブロック、１番と２番のショートブロック、０番と１番のショートブロック）のコストは、最小コストに計算され、２つのショートブロックが全て異なる場合、コストは高いコストに計算される。図９において、前記探索器２２０は、ステップ３７０で、前記４番と５番のショートブロックの距離情報（距離フラグ１、距離値４）と、２つのブロックデータが同一であることを表す差異フラグ（ここでは、diff flag＝０）を前記コーダ２４０に伝達する。しかし、前記４番及び５番のショートブロックのようなコストが０（または０に近い値）であるドメインブロックがない場合、前記探索器２２０は、コストが最も低いドメインブロックの距離情報及び差異情報を生成し、前記コーダ２４０に伝達する。ここで、前記差異情報は、２つのブロックのデータが、互いに異なること表す差異フラグ（ここでは、diff flag＝０１または１０）及びテーブルインデックス（前記計算されたコストに対応するコストテーブルに格納されたテーブルインデックス）を含む情報である（例えば、０番及び１番のショートブロックである場合、距離情報（距離フラグ１、距離値８）及び差異情報（差異フラグ０１、テーブルインデックス）。
【００６７】
すると、前記コーダ２４０は、前記距離情報及び差異情報（差異フラグ及びテーブルインデックス）を用いて、レンジブロックのデータを圧縮する。
【００６８】
図１０は、前記コーダ２４０でレンジブロックのデータを圧縮する過程を示すフローチャートであり、前記コーダ２４０が例外ブロック処理機能を備える場合を示している。しかし、前記コーダ２４０は、前記例外ブロック処理機能を備えない場合もある。そのような場合、前記圧縮器は前記例外ブロック処理部２５０を備えず、前記コーダ２４０は、前記例外ブロックとして処理されなければならないブロック（例えば、レンジブロックを構成するショートブロックのいずれか一つのショートブロックも、探索範囲内の全てのショートブロックと同一でない場合）も、前記のように、コストを計算してコードすることができる。
【００６９】
前記図１０を参照すると、前記ローダ２１０は、ステップ４１１で、ダウンロードしたデータをロードしてバッファにバッファリングするが、このとき、前記ロードされるデータは、マクロブロック及びショートブロック単位で分割（partition）される。前記ロードされるデータの前段に位置するマクロブロックは、比較対象、つまりドメインブロックがないか、または、少数のドメインブロックと比較してコードされなければならない。この場合、比較対象であるドメインブロックが多くないため、前記圧縮器はレンジブロックの圧縮を効果的に行うことができない。従って、圧縮時、圧縮フレームの前に位置する設定された数のマクロブロックは圧縮過程を行わず、例外処理ブロックとして処理することが好ましい。前記ローダ２１０は、前記圧縮フレームの大きさでデータをロードし、前記探索器２２０は、ロードしたデータをレンジブロック及びドメインブロックに分割して、探索を開始する。このとき、ロードするデータの前部は、参照対象であるドメインブロックがないか、もしくは極少数のドメインブロックを有する。この場合、本発明の実施形態における前記探索器２２０は、ロードする圧縮フレームデータで設定された大きさのマクロブロックを、例外処理ブロックとして処理する。前記図１０では、ロードする圧縮フレームデータで、１６マクロブロック（ＭＢ０−ＭＢ１５）を例外処理ブロックとして処理することを例示している。従って、圧縮開始時、前記コーダ２４０は、ステップ４３５で、前記マクロブロックＭＢ０−ＭＢ１５を例外処理ブロックを処理した後、ステップ４３３で、例外処理ブロックとして格納する。このとき、前記コーダ２４０は、前記例外処理ブロックのデータを圧縮せずに、そのまま格納する。
【００７０】
前記例外処理ブロックの処理後、前記探索器２２０は、前記図９に示すように、探索範囲を設定してから、レンジブロックと探索範囲内のドメインブロックをロードした後、これらブロックを比較し、前記レンジブロックに対する距離情報及び差異情報を前記コーダ２４０に伝達する。
【００７１】
すると、前記コーダ２４０は、ステップ４１５で差異フラグの検査を行い、レンジブロックとドメインブロックのデータが同一であるか（コスト＝０）否かを検査し、同一であると、ステップ４１７で、前記探索器２２０で、前記レンジブロックのデータを生成した距離情報及び差異フラグにコードし、圧縮データを生成した後、ステップ４１９でメモリにバッファリングする。つまり、前記レンジブロック及び探索されたドメインブロックのデータが同一であると、前記コーダ２４０は、レンジブロックとドメインブロックとの間の距離情報及びレンジブロックと同一であることを表す差異フラグ（差異フラグ＝０）を、前記レンジブロックの圧縮データとして生成する。
【００７２】
しかし、前記ステップ４１５で、レンジブロックと同一のドメインブロックがない場合（差異フラグ≠０）、前記コーダ２４０は、ステップ４２１で前記テーブルインデックスを確認し、ステップ４２３で前記テーブルでテーブルインデックスを確認する。前記テーブルインデックスは、前記探索器２２０で２つのブロックの差異値によって生成される情報であって、前記グローバルテーブル（及び/またはローカルテーブル）のテーブルインデックスになる。ここで、前記テーブルインデックスを確認する理由は、前記探索器２２０で探索されたコストが、グローバルテーブル及び/またはローカルテーブルに存在するか否かを確認するためである。つまり、前記グローバルテーブル及び/またはローカルテーブルは、前記コストによって決定されるテーブルインデックスを用い、圧縮解除器が圧縮データを復元する時、前記テーブルインデックスによってレンジブロックとドメインブロックとの差異値を抽出できるようになる。
【００７３】
以下では、グローバルテーブル及びローカルテーブルを全て使用する場合を仮定して、説明することにする。前記探索器２２０で生成されたテーブルインデックスが前記テーブルのインデックスとして使用されなければ、該当レンジブロックの圧縮データを復元することができない。このとき、前記差異フラグがグローバルテーブルのインデックスであることを表示する差異フラグ（差異フラグ＝０１）であれば、前記コーダ２４０は、ステップ４２５で、前記テーブルインデックス値がグローバルテーブルに存在するか否かを検査し、前記グローバルテーブルに存在すると、ステップ４１９で、距離情報及び差異情報をメモリに格納する。このとき、距離情報は、前記レンジブロックと距離フラグ及び該当するドメインブロックとの距離値になり、差異情報は、差異フラグ及びグローバルテーブルのインデックス値になる。また、前記差異フラグがローカルテーブルのインデックスであることを表示する差異フラグ（差異フラグ＝１０）であれば、前記コーダ２４０は、ステップ４２７でローカルテーブルを探索する。ここで、前記ローカルテーブルは、前記図７（ｂ）に示したように、前記探索器２２０に生成されるテーブルであって、前記グローバルテーブルに登録されていない、設定回数以上繰り返し探索される差異が存在する差異値が登録される。このとき、前記ローカルテーブルに前記テーブルインデックス値が存在すると、前記コーダ２４０は、ステップ４２９でこれを感知し、ステップ４１９で、距離情報及び差異情報をメモリに格納する。前述したように、前記差異フラグが０ではなく、前記差異フラグが「０１」または「１０」であると、前記コーダ２４０は、前記差異フラグ値及び前記グローバルテーブル、またはローカルテーブルのテーブルインデックスからなる差異情報を前記距離情報と共にメモリに格納する。
【００７４】
しかし、前記ステップ４２９で前記差異フラグが例外処理フラグであると、前記コーダ２４０は、前記ステップ４２９でこれを感知し、ステップ４３１で前記例外ブロック処理部２５０を駆動する。すると、前記例外ブロック処理部２５０は、ステップ４３１で例外処理フラグをメモリに格納した後、ステップ４３３でレンジブロックのデータを圧縮せずにそのまま格納する。つまり、前記レンジブロックが探索範囲内のドメインブロックと同一でなく、また前記グローバルテーブル及びローカルテーブルに存在しないと、前記コーダ２４０は、前記例外ブロック処理部２５０を介して、例外処理フラグと共に圧縮されていないデータをそのまま格納する。
【００７５】
上記のように、前記コーダ２４０は、レンジブロックのデータを圧縮せずにメモリに格納することができる。例えば、前記レンジブロックを構成するショートブロックデータが、探索範囲内に存在するドメインブロックのショートブロックデータと同一でないか、または同一のショートブロックが存在しても、コストが高い場合、前記レンジブロックを例外処理ブロックとして処理する。つまり、レンジブロックとドメインブロックとの差異値が、グローバル及びローカルテーブルに存在しないと、該当レンジブロックのデータを圧縮せずにそのまま格納する。この際、前記コーダ２４０は、これを前記例外ブロック処理部２５０に通知し、該例外ブロック処理部２５０は、該当レンジブロックのデータを圧縮せずにメモリにそのまま格納する。ここで、前記例外ブロック処理部２５０は、前記コーダ２４０の内部に構成することもできる。
【００７６】
前記圧縮器は、上記のような動作を繰り返しながら、ロードされるレンジブロックのデータを圧縮した後、前記メモリに格納する。前記第２補助メモリに格納される圧縮データは、距離情報、差異情報及び例外処理ブロックなどから構成できる。よって、前記メモリに、下記［表２］のように、距離情報、差異情報及び例外処理ブロックが格納される。
【００７７】
【表２】
2011239434.tif 000004
【００７８】
上記のように、前記圧縮器は、レンジブロックの前に位置する探索範囲内に存在するドメインブロックをレンジブロックと比較して差異値を求めた後、差異値によるコストを計算し、最低コストを有するドメインブロックとの距離情報及び差異情報を用いて、レンジブロックのデータを圧縮する。前記図９で、レンジブロックと探索範囲内の三番目の[４，５]のドメインブロック間の差がゼロであるため、前記コーダ２４０は、前記三番目のドメインブロックまでの距離及び差異値を圧縮データとして生成する。
【００７９】
しかし、前記図９において、一番目の[６，７]及び五番目の[２，３]のドメインブロックのように、探索範囲内に存在する前記レンジブロックと同一のショートブロックがない場合、前記コーダ２４０は、前記レンジブロックを例外処理ブロックとして処理する。
【００８０】
また、二番目の[５，６]、四番目の[３，４]、六番目の[１，２]及び七番目の[０，１]のドメインブロックのように、前記レンジブロックのショートブロックのうちの１つのショートブロックと探索範囲内のドメインブロックのうちの１つのショートブロックとが同一の場合、前記コーダ２４０は、前記探索範囲内のドメインブロックとレンジブロックのコストの和を計算し、最低コストの和を有するドメインブロックと、前記レンジブロックとの間の距離及び差異情報（差異フラグ及びテーブルインデックス）を圧縮データとして決定する。このとき、前記コーダ２４０がグローバルテーブル及び/またはローカルテーブルを備える場合、前記コーダ２４０は、前記差異値を前記テーブルのインデックスとして適用し、テーブルの該当インデックスの位置に存在する情報を圧縮データとして決定する。この場合、前記レンジブロックの圧縮データは、ドメインブロックの距離及び前記テーブルの情報である。
【００８１】
図１１は、前記図９に示されたようなデータが、前記ローダ２１０によってロードされ、バッファにバッファリングされた後、前記探索器２２０によって、レンジブロックと、最低値を有するドメインブロックのコストが計算される場合、前記コーダ２４０が、前記探索器２２０から出力される距離情報及び差異情報を用いて、各レンジブロックのデータをコードする過程を具体的に示す図である。
【００８２】
前記図１１においてショートブロック[０，１，２，３，４，５]（proc−１）は、ロード時、例外ブロックとして処理するブロックと仮定し、[６，７]（proc−２）、[８，９]（proc−３）、[１０，１１]（proc−４）が、レンジブロックに選択される場合の前記探索器２２０及び前記コーダ２４０の動作過程を、具体的に検討する。
【００８３】
前記図１１を参照すると、前記ローダ２１０は、前記図１１の参照番号５１０のような圧縮フレームデータをロードして、内部バッファにバッファリングする。すると、前記コーダ２４０は、ステップ５１２で、前記参照番号５１０のようなデータから例外処理するブロックのデータをロードした後、ステップ５１４及び５１６で、前記ロードしたブロックデータを例外処理する。このとき、前記例外処理されるブロックは、６つのショートブロック（３つのマクロブロック）[０，１，２，３，４，５]になる。前記ステップ５１６で例外処理されるブロックは、図１１の参照番号５１８のようにメモリに格納される。前記のように、ロードされる圧縮フレームデータから、設定された数のマクロブロックを例外処理することは、前述したように圧縮効率が落ちるからであり、このような場合、ロードする圧縮フレームデータの開始部分に位置する、設定された数のマクロブロックを例外処理して、復号効率を向上させることが好ましい。よって、前記メモリには、例外処理されたブロックのデータ（raw data）が格納される。
【００８４】
上記のように、ロードされた圧縮フレームデータの例外処理ブロックを処理した後、圧縮器は、ステップ５２２で、引き続くマクロブロックからレンジブロックを選択して、前記選択されたレンジブロックの前に位置するドメインブロックを探索して、距離情報及び差異情報を計算し、前記選択されたレンジブロックのデータを圧縮する。前記図１１では、マクロブロックproc−２[６，７]、proc−３[８，９]、proc−４[１０，１１]が、レンジブロックとして選択される場合の圧縮過程を検討する。
【００８５】
まず、proc−２[６，７]の圧縮過程を検討すると、前記探索器２２０は、ステップ５２４で前記レンジブロック[６，７]をロードした後、探索範囲を設定する。ここで、前記探索範囲は、ブロック[０−５]になる。その後、前記探索器２２０は、ステップ５２６で正方向及び逆方向のコーディング過程を行うが、前記探索範囲内の同一のブロックがないため、グローバル及びローカルテーブルのインデックスを生成することができず、該当レンジブロックを例外処理するための差異フラグ（つまり、例外処理フラグ）（「１１」）を生成する。よって、前記コーダ２４０は、ステップ５６２で、前記探索器２２０で生成される例外処理フラグによって前記レンジブロック[６，７]を例外処理することになる。前記例外ブロック処理時、前記コーダ２４０は、前記差異フラグを格納する領域に、例外処理されるブロックであることを表すフラグ（「１１」）を格納し、例外ブロックのデータを圧縮せずにそのまま格納し、このとき、前記メモリに格納される例外処理ブロックのデータは、図１１の参照番号５６４のような形態を有する。
【００８６】
第二に、proc−３[８，９]の圧縮過程を検討すると、前記探索器２２０は、ステップ５２４で前記レンジブロック[８，９]をロードした後、探索範囲を設定する。ここで、前記探索範囲は、ブロック[０−７]になる。その後、前記探索器２２０は、ステップ５２６で、前記探索範囲のドメインブロックを正方向及び逆方向コードする過程を行う。ドメインブロック[４，５]を探索する時、前記探索器２２０は、前記レンジブロック[８，９]と同一であることを感知し、前記ドメインブロック[４，５]で差異値が０であることを表す差異情報を生成する。この場合、前記探索器２２０は、前記レンジブロックのショートブロック[８]に対しては、差異フラグ＝１、差異値＝４を有する距離情報を生成し、差異フラグ＝０である差異情報を生成し、ショートブロック［９］に対しては、距離フラグ＝０である距離情報及び差異フラグ＝０（前記ショートブロック［９］からショートブロック［５］までの距離は、ショートブロック［８］からショートブロック［４］までの距離と同一であるため）である差異情報を生成し、前記コーダ２４０に出力する。すると、前記コーダ２４０は、ステップ５３２及び５３４で、レンジブロックとドメインブロックのデータが同一であることを確認し、前記距離情報（distance flag＝１ ０、distance value ＝４）及び差異フラグ（difference flag ＝０，０）で構成される圧縮データを生成し、メモリに格納する。前記メモリに格納されるブロック［８，９］の圧縮データは、図１１の参照番号５３６のように、距離情報は、１０［distance flag］、４［distance value］となり、差異情報は、００［difference flag ＝００］となる。
【００８７】
第三に、proc−４［１０，１１］の圧縮過程を検討すると、前記探索器２２０は、ステップ５２４で、前記レンジブロック［１０，１１］をロードした後、探索範囲を設定する。ここで、前記探索範囲は、ブロック［０−９］になる。その後、前記探索器２２０は、ステップ５２６で、前記探索範囲のドメインブロックを正方向及び逆方向コードする過程を行う。ドメインブロック［０，１］を探索する時、前記探索器２２０は、前記レンジブロックの［１０，１１］と類似していることを感知し、これによる距離情報及び差異情報を生成する。このとき、前記レンジブロックのショートブロック［１０］と、ドメインブロックのショートブロック［０］とは同一であるため、前記探索器２２０は、該当ショートブロック位置に差異値が０であることを表す差異情報を生成する。この場合、前記探索器２２０は、距離フラグ＝１、距離値＝１０を有する距離情報を生成し、また差異フラグ＝０である差異情報を生成し、前記コーダ２４０に出力する。また、レンジブロックのショートブロック［１１］と、ドメインブロックのショートブロック［１］とは互いに異なるデータであるため、前記探索器２２０は２つのショートブロックの差異値［Ｃ ＸＯＲ Ｂ］を計算し、前記差異値に対応するコストを計算した後、前記コストテーブルで前記コストによるテーブルインデックスを決定する。この場合、前記探索器２２０は、距離フラグ＝０（前記ショートブロック［１１］からショートブロック［１］までの距離は、ショートブロック［１０］からショートブロック０までの距離と同一であるため）に生成し、差異フラグ及び前記決定されたテーブルインデックスからなる差異情報を、前記コーダ２４０に出力する。ここで、前記テーブルインデックスは、グローバルテーブルのインデックスと仮定する。このような場合、前記差異情報は、差異フラグ＝０１及びグローバルテーブルインデックス［Gtbl idx］からなる。
【００８８】
すると、前記コーダ２４０は、ステップ５３２及び５３４で、レンジブロックのショートブロック［１０］と、ドメインブロックのショートブロック［０］のデータが同一であることを確認し、前記距離情報（distance flag ＝１、distance value ＝１０）及び差異フラグ（difference flag ＝０）で構成される圧縮データを生成し、メモリに格納する。そして、前記レンジブロックのショートブロック［１１］は、ドメインブロックのショートブロック［１］と同一でないため、前記コーダ２４０は、ステップ５４２及び５４４を行い、前記探索器２２０から出力されるテーブルインデックスを、参照番号５４４のようなテーブルから探索する。このとき、前記テーブルインデックスが、前記図１１の参照番号５４４のようなテーブルから検索されると、前記コーダ２４０は、ステップ５４８で、前記検索されたコスト［Gtbl idx＝code（Ｃ：Ｂ）］を差異値（difference value）として格納する。つまり、前記コーダ２４０は、レンジブロックのショートブロック［１１］の圧縮データとして、距離フラグ＝０である距離情報と、差異フラグ＝０１、差異値＝［Gtbl idx ＝code（Ｃ：Ｂ）］である差異情報を圧縮データとして生成し、参照番号５５０のようにメモリに格納する。
【００８９】
図１１の参照番号５５０は、圧縮フレームデータをロードした後、ショートブロック［０−１１］までのデータが圧縮され、メモリに格納される形態を示している。
【００９０】
上述したように、本発明の実施形態においては、レンジブロックと探索範囲内のドメインブロックとの距離及び差異情報を確認し、レンジブロックを圧縮する。ここで、前記距離情報は、レンジブロックと対応するドメインブロック間の距離情報であり、距離フラグと距離値とからなる。前記距離フラグは１ビットを用いて、セット状態またはリセット状態に設定することができる。つまり、現在の圧縮対象であるレンジブロックと対応するドメインブロックとの間の距離値が、以前の圧縮対象であるレンジブロックと対応するドメインブロックとの間の距離値と同一の距離値を有する場合、距離フラグはリセットされた状態（上記表２において、「０」）に設定し、そうでない場合（つまり、距離値が異なる場合）には、前記距離フラグは、セットされた状態（上記表２において、「１」）に設定する。この場合、前記距離情報は、距離フラグがセット状態（「１」）であると、前記距離フラグ及び対応するドメインブロックとの距離値で構成され、距離フラグがリセット状態（「０」）であると、距離フラグでのみ構成され、距離値は格納しない。
【００９１】
そして、前記差異情報は、レンジブロックと対応するドメインブロック間の差異情報であって、差異フラグ及び差異値からなる。ここで、差異フラグは、差異値の種類によって様々な形態に設定することができる。つまり、差異値が１つの形態に生成される場合、差異フラグは１ビットを用い、セットまたはリセット状態に設定することができる。しかし、差異値が少なくとも２つの形態を有する場合、形態の数に応じて差異フラグのビット数を決めることができる。本発明の実施形態では、前述したように、第一に、レンジブロックと対応するドメインブロックとの間の差異値をそのまま用いる方法、第二に、グローバルテーブルを備え、レンジブロックとドメインブロックとの間の差異値を計算した後、差異値によるグローバルテーブルのテーブルインデックスを差異値として用いる方法、第三に、グローバルテーブル及びローカルテーブルを備え、レンジブロックとドメインブロックとの間の差異値を計算した後、差異値によるグローバルまたはローカルテーブルのテーブルインデックスを差異値として用いる方法、第四に、前記第二及び第三の方法を用いる場合に、圧縮効果が低いレンジブロックを例外処理ブロックとして処理する方法、のうちの１つを用いることができる。
【００９２】
前記第一の差異情報を生成する方法を検討すると、現在の圧縮対象であるレンジブロックと対応するドメインブロックとの間の距離値が、以前の圧縮対象であるレンジブロックと対応するドメインブロックとの間の距離値と同一の距離値を有する場合、差異フラグはリセットされた状態（「０」）に設定し、そうでない場合（つまり、２つのブロックが異なる場合）には、前記差異フラグはセット（「１」）に設定する。このとき、前記２つのブロックの差異値は、レンジブロックとドメインブロックを排他的論理和演算した後、その演算結果値を差異値として使用する。この場合、前記差異情報は、差異フラグがセット状態（「１」）であると、前記差異プラグ及び対応するドメインブロックとの排他的論理和の値（exclusive OR value）で構成され、差異フラグがリセット状態（「０」）であると、差異フラグのみで構成され、差異値は格納しない。
【００９３】
前記第二の差異情報を生成する方法を検討すると、現在の圧縮対象であるレンジブロックと対応するドメインブロックとの間の距離値が、以前の圧縮対象であるレンジブロックと対応するドメインブロックとの間の距離値と同一の距離値を有する場合、差異フラグはリセットされた状態（「０」）に設定し、そうでない場合（つまり、２つのブロックが異なる場合には）、前記差異フラグはセット（「１」）に設定する。このとき、前記２つのブロックの差異値は、レイジーブロックとドメインブロックを排他的論理和演算した後、その演算結果値を用いてコストを計算する。そして、このコストを用いて、グローバルテーブルのテーブルインデックスを決定した後、前記決定されたテーブルインデックスを差異値に設定する。この場合、前記差異情報は、差異フラグがセット状態（「１」）であると、差異フラグ及びグローバルテーブルのテーブルインデックスで構成され、差異フラグがリセット状態（「０」）であると、差異フラグでのみ構成され、差異値は格納しない。ここで、グローバルテーブルは、前記レンジブロックとドメインブロックとの間の差異値が格納され、このときの差異値は、２つのブロック間の排他的論理和の値となる。
【００９４】
前記第三の差異情報を生成する方法を検討すると、現在の圧縮対象であるレンジブロックと対応するドメインブロック間の距離値が、以前の圧縮対象であるレンジブロックと対応するドメインブロックとの間の距離値と同一の距離値を有する場合、差異フラグはリセットされた状態（「０」）に設定し、そうでない場合（つまり、２つのブロックが異なる場合）には、前記差異フラグはセット状態に設定する。このとき、前記２つのブロックの差異値は、レイジーブロックとドメインブロックを排他的論理和演算した後、その演算結果値を用いてコストを計算する。そして、このコストを用いて、グローバルまたはローカルテーブルのインデックスを決定した後、決定されたテーブルインデックスを差異値に設定する。ここで、グローバルテーブルは固定テーブルとなり、ローカルテーブルは可変テーブルとなる。そして、前記ローカルテーブル（可変テーブル）は、前記グローバルテーブルに存在しないのに、頻繁に発生する差異値を分析した後、圧縮過程でテーブル化して生成されるテーブルである。この場合、前記圧縮器は、レンジブロックと該当ドメインブロックとの差異値をローカルテーブルに登録し、前記ローカルテーブルのテーブルインデックスをコストテーブルに登録する。前記差異情報は、差異フラグがセット状態（「０１」）であると、前記差異フラグ及びグローバルテーブルのテーブルインデックスで構成され、差異フラグがセット状態（「１０」）であると、前記差異フラグ及びローカルテーブルのテーブルインデックスで構成される。そして、差異フラグがリセット状態（「０」）であると、差異フラグのみで構成され、差異値は格納しない。
【００９５】
前記第四の差異情報を生成する方法を検討すると、グローバルテーブルを用いて圧縮する方法、または、グローバル及びローカルテーブルを用いて圧縮する方法を用いる場合、レンジブロックとドメインブロックとの差異値が、前記テーブルに存在しないことがある。このような場合、レンジブロックのデータは圧縮しない方がより好ましい。つまり、前記のようなレンジブロックのデータを圧縮する方法は、デコーディングの時、多くの時間を要することになる。そのため、レンジブロックとドメインブロックとの差異値がグローバル及びローカルテーブルに登録されていない場合、該当レンジブロックのデータは例外ブロックとして処理して圧縮しない方法を用いる。この場合（つまり、２つのブロックの差異値が、前記グローバル及びローカルテーブルに存在しない場合）、前記差異フラグを例外処理フラグ（「１１」）にセットし、差異値はレンジブロックのデータをそのまま使用する。
【００９６】
圧縮器は、前記のように生成される差異情報を距離情報と共に、該当レンジブロックの圧縮データにコードする。前記コードされた圧縮データは、メモリに格納するか、または通信部を介して外部に転送される。
【００９７】
前記のように、コードされた圧縮データをメモリからアクセスしたり、または受信して処理する場合、圧縮解除動作を行わなければならない。すなわち、前記圧縮データは、圧縮解除器によって復元され処理されることができる。このとき、データの圧縮方法は、上記のような４つの形態の差異情報を有することができる。要するに、圧縮器は、先に説明した圧縮方法のいずれか一つの圧縮方法を用いることができ、圧縮解除器は、前記圧縮方法に対応する形態で構成されなければならない。
【００９８】
まず、第１の方法でコードされた圧縮データの圧縮解除過程を検討すると、圧縮解除器は、圧縮データの距離情報を確認して、最小コストを有するドメインブロックを選択する。前記ドメインブロックを選択する方法は、距離情報の距離フラグを確認し、リセット状態であると、以前のレンジブロックのデータ復元時に選択されたドメインブロックの距離値（use previous distance）に位置したドメインブロックを選択し、セット状態であれば、距離情報に含まれた距離値に位置したドメインブロックを選択する。その後、前記圧縮解除器は、前記の選択されたドメインブロックのデータに、前記差異情報に応じて、レンジブロックの圧縮データを復元する。このとき、前記差異情報の差異フラグがリセット状態であると、選択されたドメインブロックのデータに復元し、セット状態であると、差異情報に含まれた差異値と選択されたドメインブロックのデータを排他的論理和し、求められるデータに復元する。
【００９９】
第二に、第２の方法でコードされた圧縮データの圧縮解除過程を検討すると、圧縮解除器は、頻繁に発生するレンジブロックとドメインブロックとの差異値を格納しているグローバルテーブルを備える。前記圧縮解除器は、まず、圧縮データの距離情報を確認し、最小コストを有するドメインブロックを選択する。ドメインブロックの選択方法は、前記第一の圧縮解除過程と同一の方法を用いることができる。その後、前記圧縮解除器は、前記選択されたドメインブロックのデータに、前記差異情報に応じてレンジブロックの圧縮データを復元する。このとき、前記差異情報の差異フラグがリセット状態であると、選択されたドメインブロックのデータに復元し、セット状態であると、差異情報に含まれた差異値（この場合、差異値は、グローバルテーブルのインデックスである）に該当するグローバルテーブルの情報にアクセスし、これを、選択されたドメインブロックのデータと排他的論理和し、求められるデータに復元する。このとき、前記グローバルテーブルに格納される情報は、前述したように、レンジブロックと最小コストを有する排他的論理和の値になる。
【０１００】
第三に、第３の方法でコードされた圧縮データの圧縮解除過程を検討すると、圧縮解除器は、頻繁に発生するレンジブロックとドメインブロックとの差異値を格納しているグローバルテーブル（固定テーブル）、及び圧縮中によく発生するレンジブロックとドメインブロックとの差異値を格納するローカルテーブル（圧縮中に生成される可変テーブル）を備える。ここで、前記圧縮解除器は、圧縮データの距離情報を確認し、最小コストを有するドメインブロックを選択する。ドメインブロックの選択方法は、前記第一の圧縮解除過程と同一の方法を用いることができる。その後、前記圧縮解除器は、前記選択されたドメインブロックのデータに、前記差異情報に応じてレンジブロックの圧縮データに復元する。このとき、前記差異情報の差異フラグがリセット状態であると、選択されたドメインブロックのデータに復元し、セット状態であると、前記差異フラグによってグローバルまたはローカルテーブルを決定し、前記差異情報に含まれた差異値（この場合、差異値はグローバルまたはローカルテーブルのインデックスである）に該当するグローバルまたはローカルテーブルの情報にアクセスし、これを選択されたドメインブロックのデータと排他的論理和し、求められるデータに復元する。このとき、前記グローバル及びローカルテーブルに格納される情報は、前述したように、レンジブロックと最小コストを有する排他的論理和の値になる。
【０１０１】
第四に、第４の方法でコードされた圧縮データの圧縮解除過程を検討すると、圧縮解除器は頻繁に発生するレンジブロックとドメインブロックとの差異値を格納しているグローバルテーブル（固定テーブル）、及び圧縮中によく発生するレンジブロックとドメインブロックとの差異値を格納するローカルテーブル（圧縮中に生成される可変テーブル）を備える。ここで、前記圧縮解除器は、圧縮データの距離情報を確認し、最小コストを有するドメインブロックを選択する。ドメインブロックの選択方法は、前記第一の圧縮解除過程と同一の方法を用いることができる。その後、前記圧縮解除器は、前記選択されたドメインブロックのデータに、前記差異情報に応じてレンジブロックの圧縮データを復元する。このとき、前記差異情報の差異フラグがリセット状態であると、選択されたドメインブロックのデータに復元する。しかし、前記差異情報の差異フラグがセット状態であれば、前記差異フラグの種類によって対応する方法で、圧縮データに復元する。このとき、前記差異フラグが例外処理フラグであると、前記圧縮解除器は、差異情報に含まれた差異値をそのままレンジブロックのデータに復元する。つまり、前記例外処理フラグを有する差異情報の差異値は圧縮されていないデータであるため、圧縮復元時に、これをそのままレンジブロックのデータに復元する。また、差異フラグがグローバルまたはローカルテーブルのテーブルを使用したことを表すフラグであれば、前記圧縮解除器は、差異情報に含まれた差異値（この場合、差異値は、グローバルまたはローカルテーブルのインデックスである）に該当するグローバルまたはローカルテーブルの情報にアクセスし、これを、選択されたドメインブロックのデータと排他的論理和し、求められるデータに復元する。このとき、前記グローバル及びローカルテーブルに格納される情報は、前述したように、レンジブロックと最小コストを有する排他的論理和の値になる。
【０１０２】
以下では、前記圧縮解除器がグローバルテーブル及びローカルテーブルを備え、例外処理方法を用いる場合を仮定して、説明することにする。つまり、第４の圧縮方法でコードされた圧縮データを圧縮復元する場合を中心として検討する。
【０１０３】
図１２は、前記圧縮解除器（decompressor）の構成を示す図である。
【０１０４】
前記図１２を参照すると、ローダ６１０は、メモリに格納された圧縮データ（compressed data）をロードし、さらに圧縮解除に必要なグローバルテーブル及びローカルテーブルをロードする。前記ロードする圧縮データは、上記［表２］に表されたように、距離情報、差異情報及び例外処理ブロックなどからなる。前記距離情報は、距離フラグ及び距離値で構成され、差異情報も差異フラグ及びテーブルインデックス値で構成される。フラグ検出器６２０は、前記距離値及び差異情報の各フラグを検出して、デコーダ６３０に伝達する。すると、前記デコーダ６３０は、前記距離フラグ及び距離値を分析し、レンジブロックに対応するドメインブロックの位置を決め、前記差異フラグ及びテーブルインデックス値から前記レンジブロックとドメインブロックとの差異値を決定し、これを、前記ドメインブロックと排他的論理和演算し、レンジブロックの圧縮を復元する。そして、前記フラグ検出器６２０で、差異フラグが１１である例外フラグ（例外処理ブロックであることを表示する差異フラグ）を検出した場合、前記デコーダ６３０は、前記例外処理ブロック処理部６４０を駆動し、例外処理されたレンジブロックのデータを処理する。この場合、前記例外処理ブロック処理部６４０は、格納されたデータをそのまま出力する。前記図１２では、前記例外処理ブロック処理部６４０を独立に構成した例を示しているが、前記例外処理ブロック処理部６４０は、前記デコーダ６３０に構成されることもある。また、前記のように圧縮解除されたデータは、バッファにバッファリングされることもある。
【０１０５】
前記図１２は、例外処理ブロック処理部６４０を含む圧縮解除器の構成を示している。しかし、圧縮器が例外処理ブロックを処理しない場合、圧縮解除器は前記例外処理ブロック部６４０を備えない。
【０１０６】
図１３は、前記圧縮解除器で圧縮データに復元する過程を示すフローチャートである。
【０１０７】
前記図１３を参照すると、前記メモリからロードされる圧縮データは、参照番号７１０のように、圧縮フレームの開始位置で設定された数のマクロブロックは、例外処理したブロックである。よって、前記デコーダ６３０は、ステップ７９１で、前記例外ブロック処理部６４０を駆動して、例外処理されたブロックを復元し、ステップ７７３で、これをバッファにバッファリングする。その後、前記デコーダ６３０は、前記参照番号７１０のような圧縮データに復元してデータを生成する。前記圧縮データを復元する方法は、まず、距離情報を分析してドメインブロックの位置を確認し、テーブルインデックス値を前記テーブルで探して、レンジブロックのデータに復元する。また、例外処理したブロックのデータは、例外処理ブロックの位置を確認した後、該当マクロブロック位置に、前記例外処理したブロックデータを挿入して復元する。
【０１０８】
本発明の実施形態では、前記例外処理されたブロックのデータを先に復元し、その後、圧縮されたデータの距離情報及び差異情報を確認し、各レンジブロックの圧縮データに復元すると仮定して、説明する。
【０１０９】
まず、前記デコーダ６３０は、ステップ７５３で、前記圧縮時に用いたグローバルテーブル及びローカルテーブルをロードし、前記ロードされた圧縮フレームの開始位置をロードする。その後、前記デコーダ６３０は、例外処理ブロックのフラグ（差異フラグ＝１１）であれば、ステップ７５５でこれを感知し、ステップ７９１で、例外処理したブロックのデータに復元し、ステップ７７３でバッファの該当レンジブロックの位置に格納する。
【０１１０】
しかし、ステップ前記７５５で、差異情報の差異フラグが例外処理されたフラグでないと（差異フラグ≠１１）、前記デコーダ６３０は、ステップ７５７で距離情報にアクセスし、前記アクセスされた距離情報の距離フラグがセットされた状態であるか否かを検査する。前記距離フラグがセットされた場合には、続く距離値分を移動して、ドメインブロックを選択し、距離フラグがリセットされた状態であると、以前の状態で処理されたドメインブロックとの距離値と同一の状態であるため、距離値の移動はしない。このとき、前記距離フラグがセットされた状態であると、前記デコーダ６３０はステップ７５７でこれを感知し、ステップ７５９で現在のレンジブロック位置を確認し、ステップ７６１で前記距離情報の距離値を確認した後、ステップ７６３で、現在のレンジブロック位置から前記距離値分移動して、比較対象であるドメインブロックを選択する。また、前記距離フラグがリセットされた状態であると、前記デコーダ６３０は、ステップ７５７でこれを感知し、ステップ７６７で以前の状態で復元されたレンジブロックとドメインブロックとの間の距離値を有するドメインブロックを選択する。つまり、前記デコーダ６３０は、距離情報を検索して、距離フラグがセットされた状態であると、現在のレンジブロック位置で距離情報に含まれた距離値分移動して、比較対象であるドメインブロックを選択し、距離フラグがリセットされた状態であると、以前の状態の距離値を維持しながら、比較対象であるドメインブロックを選択する。
【０１１１】
上記のように、距離情報を用いて比較対象であるドメインブロックを選択した後、前記デコーダ６３０は、ステップ７６５で、差異情報を格納する領域で差異フラグをリードした後、ステップ７６９で差異フラグの状態を検査する。このとき、前記差異フラグがリセットされた状態（差異フラグ＝０）であると、前記デコーダ６３０は、ステップ７６９でこれを感知し、ステップ７７１に進行し、前記選択されたドメインブロックのデータをレンジブロックのデータにコピーした後、ステップ７７３でバッファにバッファリングする。前記差異フラグがリセットされた状態とは、レンジブロックと、選択されたドメインブロックのデータが同一であることを意味するため、前記デコーダ６３０は、前記選択されたドメインブロックのデータを、前記レンジブロックのデータにコピーし、復元することになる。
【０１１２】
しかし、前記ステップ７６９で、差異フラグがセットされた状態（差異フラグ＝０１または１０）であることを感知すると、前記デコーダ６３０は、ステップ７８１で差異情報に含まれた差異値をリードする。前記差異値は、グローバルテーブルまたはローカルテーブルのテーブルインデックスとなる。従って、前記デコーダ６３０は、ステップ７８１で前記差異値をテーブルのインデックスとしてロードし、ステップ７８３でテーブルを探索（look up）する。前記テーブル探索は、前記差異フラグの値によって探索する。すなわち、前記デコーダ６３０は、前記差異フラグがグローバルテーブルのインデックスであることを表すフラグであれば（差異フラグ＝０１）、前記グローバルテーブルで前記テーブルインデックスに対応する差異値を選択し、ローカルテーブルのインデックスであることを表すフラグであれば（差異フラグ＝１０）、前記ローカルテーブルで前記テーブルインデックスに対応する差異値を選択する。
【０１１３】
この際、前記テーブルインデックスが前記テーブルにマッチすると、前記デコーダ６３０はステップ７８５でこれを感知し、ステップ７８７で、前記テーブルインデックスに対応するデータをリードし、レンジブロックの圧縮を復元した後、ステップ７７３でバッファに格納する。しかし、前記テーブルインデックスが前記テーブルでマッチしないと、前記デコーダ６３０はステップ７８５でこれを感知し、ステップ７８９でエラー処理する。前記のように、差異フラグが前記テーブルインデックスを含む状態のフラグであると（つまり、前記差異情報がテーブルインデックスを含む場合）、前記デコーダ６３０は、差異情報に含まれたテーブルインデックスにマッチするテーブルのデータ（レンジブロックとドメインブロックとの差異値）をリードした後、これを対応するドメインブロックと比較（exclusive OR operation）し、レンジブロックのデータに復元する。
【０１１４】
上記のような過程を繰り返しながら、距離情報及び差異情報として圧縮されたレンジブロックのデータを復元する。各レンジブロックのデータに復元する方法は、まず距離情報を確認して、現在位置のレンジブロックに参照対象であるドメインブロックを選択し、差異情報により前記選択されたドメインブロックのデータを処理し、レンジブロックのデータを復元する。
【０１１５】
図１４は、前記図１１と同様の過程で圧縮されたデータを、前記圧縮解除器で復元する過程を説明するための図である。
【０１１６】
前記図１４を参照すると、前記図１１と同様の過程を行いながら圧縮器が参照番号５１０のようなデータを圧縮すると、メモリは、図１４の参照番号７１０のように圧縮されたデータを格納する。前記メモリに格納されるデータは、例外処理ブロック情報及び例外ブロックデータ、そして圧縮されたデータが距離情報及び差異情報に圧縮された形態を有する。前記図１４では、圧縮フレームの最初の部分に例外処理ブロックのデータが格納され、続いて距離情報（distance flag、distance value）及び差異情報（difference flag、difference value）の順に格納される例を示している。
【０１１７】
前記ローダ６１０は、参照番号７２０及び７３０のようなグローバルテーブル及びローカルテーブルをロードし、バッファにバッファリングする。デコーダ６３０は、まず、ステップ７９１で、圧縮時に例外処理されたブロック（ここでは、［０−５］ショートブロック）のデータをメモリからリードし、参照番号７４０のようにバッファにバッファリングする。その後、前記デコーダ６３０は、フラグ検出器６２０で検出されるフラグを圧縮されたデータを復元する。前記例外処理フラグ（差異フラグ＝１１）が検出されると、デコーダ６３０は、ステップ７５５でこれを感知し、ステップ７９１で例外処理ブロックの位置（ここでは、ショートブロック［６、７］）を確認した後、参照番号７４０のように例外処理されたデータ［Ｅ、Ｃ］をバッファに格納する。
【０１１８】
しかし、前記ステップ７５５で、差異フラグが例外処理フラグでないと感知すると、前記デコーダ６３０は、ステップ７５７で検出される距離フラグを検査し、距離フラグがセットされた状態であると（distance flag＝１）、ステップ７５９で圧縮復元するブロックの位置（ここでは、ショートブロック［８］）を計算し、ステップ７６３で距離値（distance value＝４）をリードした後、ステップ７６３でドメインブロックの位置を計算する（８番のショートブロックから４つ前に位置する４番のショートブロック）。その後、前記デコーダ６３０は、ステップ７６９で差異フラグ（difference flag）を検査し、差異フラグ＝０（difference flag＝０）であることから、ステップ７７１で前記８番のショートブロックのデータを４番のショートブロックのデータＢに復元した後、参照番号７４０のようにバッファに格納する。
【０１１９】
前記デコーダ６３０は、さらにステップ７５７で次の距離フラグを検査し、距離フラグがリセット状態であると、さらにステップ７６７で以前の距離値（distance value＝４）を用い、ステップ７６５でドメインブロックの位置を計算する（９番のショートブロックから４つ前に位置する５番のショートブロック）。その後、前記デコーダ６３０は、ステップ７６９で差異フラグ（difference flag）を検査し、差異フラグ＝０（difference flag＝０）であることから、ステップ７７１で前記９番のショートブロックのデータを５番のショートブロックのデータＢに復元した後、参照番号７４０のようにバッファに格納する。
【０１２０】
前記デコーダ６３０は、ステップ７５７で検出される距離フラグを検査し、距離フラグがセットされた状態であると（distance flag＝１）、ステップ７５９で圧縮復元するブロックの位置（ここでは、ショートブロック１０）を計算し、ステップ７６３で距離値（distance value＝１０）をリードした後、ステップ７６３でドメインブロックの位置を計算する（１０番のショートブロックから１０つ前に位置する０番のショートブロック）。その後、前記デコーダ６３０は、ステップ７６９で差異フラグ（difference flag）を検査し、差異フラグ＝０（difference flag＝０）であることから、ステップ７７１で前記１０番のショートブロックのデータを０番のショートブロックのデータＡに復元した後、参照番号７４０のようにバッファに格納する。
【０１２１】
前記デコーダ６３０は、さらにステップ７５７で次の距離フラグを検査し、距離フラグがリセット状態であると、ステップ７６７で以前の距離値（distance value＝１０）を用い、ステップ７６５でドメインブロックの位置を計算する（１１番のショートブロックから１０つ前に位置する１番のショートブロック）。その後、前記デコーダ６３０は、ステップ７６９で差異フラグ（difference flag）を検査し、差異フラグ＝０１（difference flag＝０１）であることから、ステップ７８１で前記メモリで差異値（difference value）［G.tbl idx from code（Ｃ：Ｂ）］をロードする。その後、デコーダ６３０は、ステップ７８５〜７８７を行いながら、差異値として格納されたテーブルインデックスに該当するグローバルテーブルのデータ（Ｃ ＸＯＲ Ｂ）を選択し、これを、距離情報により選択されたドメインブロックのデータ（一番のショートブロックである「Ｂ」）と排他的論理和演算（Ｃ ＸＯＲ Ｂ）ＸＯＲ Ｂ＝Ｃ）し、圧縮データを復元した後、復元したデータ「Ｃ」を参照番号７４０のようにバッファに格納する。
【０１２２】
上記したように、圧縮解除器は、圧縮器によって圧縮され、メモリに格納されたデータを本来のデータに復元する。従って、本発明の実施形態に係るメモリアクセス装置は、格納しようするデータは圧縮器により圧縮されてメモリに格納され、前記メモリに格納された圧縮データは圧縮解除器により復元されて出力される。従って、メモリを使用する装置で制御部と無関係に、データ格納モード時に圧縮器がダウンロードされるデータを圧縮してメモリに格納し、メモリに格納された圧縮データは、リードモード時に自動で復元され、メモリを効率的に使用することができるという利点がある。
【０１２３】
図１５は、本発明の実施形態に係るデータ圧縮及び復元を行う装置の構成例を示する図で、携帯端末機の構成を示している。
【０１２４】
前記図１５を参照すると、ＲＦ通信部８４０は、携帯端末機の無線通信機能を果たす。前記ＲＦ通信部８４０は、送信される信号の周波数を上昇変換及び増幅するＲＦ送信機と、受信される信号を低雑音増幅し、周波数を下降変換するＲＦ受信機などを含む。キー入力部８７０は、数字及び文字情報を入力するためのキー及び各種機能を設定するための機能キーを備える。
【０１２５】
制御部８００は、携帯端末機の全般的な動作を制御する機能を果たす。また、前記制御部８００は、前記送信される信号を符号化する符号器、及び受信される符号化信号を復号する復号器で構成されるコデック（codec）と、前記符号化された信号を変造して前記ＲＦ通信部８４０に伝達する変造器、及び前記ＲＦ通信部８４０に出力される変造された信号を復調して、前記復号器に伝達する復調器で構成されるモデム（modem）とを備えるデータ処理部を含む。つまり、前記データ処理部は、モデム（modem）及びコデック（codec）で構成される。
【０１２６】
メモリ８１０は、プログラムメモリとデータメモリとで構成される。前記プログラムメモリは、前記携帯端末機の動作及び機能を果たすためのプログラムを格納する。前記データメモリは、前記プログラム進行中に発生するデータを格納する。
【０１２７】
圧縮器８２０は、前記制御部８００の制御下に、ライトモード時に前記メモリ８１０に格納するデータをロードして圧縮した後、前記メモリ８１０の指定位置にライトする。圧縮解除器８３０は、前記制御部８００の制御下に、リードモード時に前記メモリ８１０でリードされる圧縮データを復元する。ここで、前記圧縮器８２０及び前記圧縮解除器８３０は、それぞれ前記図８及び図１２のような構成を有し、上述したような本発明の実施形態によりデータを圧縮及び解除することができる。
【０１２８】
表示部８６０は、前記制御部８００の制御下に、携帯端末機の状態及び前記携帯端末機で処理される情報を表示する。前記表示部８６０は、ＬＣＤを用いることができ、この場合、ＬＣＤ制御部（ＬＣＤ controller）、表示データを格納可能なメモリ及びＬＣＤ表示素子などを備える。また、前記ＬＣＤをタッチスクリーン（touch screen）方式で具現する場合、前記表示部８６０は、入力部としても動作可能である。オーディオ処理部８５０は、送受信されるオーディオ信号を処理する。
【０１２９】
通信インターフェース部８８０は、携帯端末機と外部装置との間の通信をインターフェースする機能を果たす。前記通信インターフェース部８８０は、有線及び無線通信機能を果たすことができる。ここで、無線通信インターフェース部は、ブルー・トゥース（Bluetooth）、ジグビー（ZigBee）、ＵＷＢなどの近距離無線通信インターフェース装置で構成され、さらにワイブロ、ワイパイ、ワイマックスのような無線インターネット装置になる場合もある。また、無線インターフェース部は、ＵＳＢ、ＲＳ直列通信インターフェース装置になることもある。制御部８００は、前記通信インターフェース部８８０を介して外部装置からデータを受信するか、または携帯端末機のデータを外部装置に転送することができる。
【０１３０】
上記のような構成を備える携帯端末機において、制御部８００は、前記メモリ８１０にアクセスする時、圧縮器８２０または圧縮解除器８３０を制御し、データを圧縮したりまたは圧縮されたデータを復元する。前記圧縮器８２０及び前記解除器８３０は、前記制御部８００の内部に構成され、また前記メモリ８１０の内部に位置する。このように、前記圧縮器８２０及び前記圧縮解除器８３０を内部に備えるメモリ８１０は、フュージョンメモリ（fusion memory）形態で構成される。携帯端末機で処理されるデータは、コード（ファームウェアまたはソフトウェア）及びユーザデータになる。ここにおいて、前記コードは、繰り返されるデータが多いため、本発明の実施形態に係る圧縮及び圧縮解除方法を用いる場合、メモリの格納効率を大きく高めることができる。
【０１３１】
まず、ライトモード時の動作を検討すると、前記制御部８００は、前記メモリ８１０に格納するデータを圧縮器８２０にダウンロードし、圧縮器８２０は、前記データをロードして圧縮する。すると、前記制御部８００は、前記圧縮されたデータを前記メモリ８１０に位置を指定してライトする。前記ライトされるデータは、前記ＲＦ通信部８４０を介して受信されるデータであり、かつ前記通信インターフェース部８８０を介して受信されるデータである。従って、前記制御部８００は、前記圧縮器８２０及びメモリ８１０を制御し、受信されるデータを圧縮して格納することになる。次に、リードモード時の動作を検討すると、前記制御部８００は、前記メモリ８１０に格納された圧縮データをリードし、圧縮解除器８３０は、前記リードされる圧縮データを復元して、制御部８００に出力する。前記復元されるデータは、前記ＲＦ通信部８４０または通信インターフェース部８８０を介して出力されるか、または制御部８００によって処理される。
【符号の説明】
【０１３２】
２１０…ローダ
２２０…探索器
２４０…コーダ
２５０…例外ブロック処理部
６１０…ローダ
６２０…フラグ検出器
６３０…デコーダ
８００…制御部
８１０…メモリ
８２０…圧縮器
８３０…圧縮解除器
８４０…ＲＦ通信部
８５０…オーディオ処理部
８６０…表示部
８７０…キー入力部
８８０…通信インターフェース部
【図１】
2011239434.tif 000005
【図２】
2011239434.tif 000006
【図３ａ】
2011239434.tif 000007
【図３ｂ】
2011239434.tif 000008
【図４】
2011239434.tif 000009
【図５】
2011239434.tif 000010
【図６】
2011239434.tif 000011
【図７ａ】
2011239434.tif 000012
【図７ｂ】
2011239434.tif 000013
【図８】
2011239434.tif 000014
【図９】
2011239434.tif 000015
【図１０】
2011239434.tif 000016
【図１１】
2011239434.tif 000017
【図１２】
2011239434.tif 000018
【図１３】
2011239434.tif 000019
【図１４】
2011239434.tif 000020
【図１５】
2011239434.tif 000021