以下、本発明の好ましい実施形態の詳細な説明を添付した図を参照しながら、説明する。図面において、同一の構成はできる限りどの位置においても同じ符号を示していることに留意する。
下記の説明において、マクロブロックのビット数、ショートブロックの数及びビット数、距離情報及び差異情報、テーブルの臨界値などの具体的な例示のような、特定の詳細が本発明の全般的な理解を提供するため表されている。これらの特定の詳細なしに、またこれらの変形によっても、本発明が容易に実施可能なことは、当該技術分野における通常の知識を有する者に自明なものである。
本発明の実施形態において、「マクロブロック(macro block)」とは、データを圧縮する最小単位を意味する。「ショートブロック(short block)」とは、マクロブロックを構成する単位であって、2つ以上で構成され、本発明の実施形態における前記ショートブロックは、16ビットの大きさを有すると仮定する。また、本発明の実施形態における前記マクロブロックは、2つのショートで構成されていると仮定する。「レンジブロック(range block)」とは、圧縮しようとする1つ以上のマクロブロックを意味する。「ドメインブロック(domain block)」とは、レンジブロックを圧縮するために参照されるマクロブロックを意味する。「距離情報(distance information)」は、レンジブロックとドメインブロックとの間の距離を意味する距離値(distance value)、及び距離値の変更有無を示す距離フラグ(distance flag)などを含む。距離フラグは、各マクロブロックごとに付けられ、レンジブロックの構成を示す。「差異情報(difference information)」は、レンジブロックとドメインブロックとの間のデータ差を意味する差異値(difference value)、及び差異値の存在有無を示す差異フラグ(difference flag)を含む。ここで、データの差異は、2つのブロックのデータを排他的論理和(exclusive OR、XOR)した値を意味する。「コスト(cost)」は、前記差異値を計算し、圧縮データでメモリに格納されるデータの長さ(ビット数)を決定する。「例外処理(exception handling)」とは、圧縮率が高くない場合に、データ圧縮を行わないこと(raw dataをそのまま使用)を意味する。
「グローバルテーブル(global table)」とは、固定テーブル(fixed entry table)であり、前記差異値をインデックスとする。「ローカルテーブル(local table)」とは、可変テーブル(floating entry table)であり、圧縮中に発生頻度数が高いマクロブロックをインデックスとする。「探索範囲(searching range)」とは、レンジブロックの位置でドメインブロックを探索するための範囲を意味する。「正方向コーディング(forward coding)」とは、現在コードされる1つのマクロブロックで構成されたレンジブロックを最小コストでコードするドメインブロックを探索範囲でコードすることを意味し、「逆方向コーディング(backward coding)」とは、現在コードされた1つのマクロブロックを含んで、以前にコードされたレンジブロックを再構成し、コストを減らすためのコーディングを意味する。つまり、前記正方向コーディングは、圧縮器が順次選択される1つのマクロブロックで構成されるレンジブロックを一次的にコードすることを意味し、逆方向コーディングは、現在コードされたマクロブロックを含んで以前にコードされたレンジブロックを再構成して、圧縮率を向上させることを意味する。「データ(data)」とは、プログラム及びユーザのデータを含む用語であって、全てのデータを通称する意味として使用される。
本発明の圧縮器(compressor)は、データを圧縮する時、圧縮するデータであるレンジブロックの長さを決定し、前記レンジブロックと同一または類似のデータを有するドメインブロックを探索し、前記レンジブロックと探索されたドメインブロックとの間の距離及び差異をコードして、圧縮する方法を提案する。ここで、データは、バイナリデータ(binary data)や、ファームウェア(firm ware)及びソフトウェア(soft ware)のようなプログラムのコードデータを含む全てのデータを示す。
一般的に、データを圧縮する圧縮器及び圧縮解除器(decompressor)は、高圧縮率及び高速の復元機能を有することが好ましい。このとき、圧縮器の圧縮率を高めると、圧縮器の圧縮速度または圧縮解除器の復元速度が低下する。本発明は、前記探索範囲内でドメインブロックを探索する時、以下のような方法で圧縮率及び復元速度を向上させる。
第一に、圧縮器は、レンジブロックを探索範囲内のドメインブロックと比較する時、以前のマクロブロックをコードする時に構成された検索対象(reference list)に対して、正方向及び逆方向にコードし、探索範囲内で前記レンジブロックと最低差異値を有するドメインブロックとを選択する。
第二に、レンジブロックと選択されたドメインブロックとの間の距離情報及び差異情報を用いて、レンジブロックのデータを圧縮する。本発明の実施形態においては、圧縮方法としては、第1方法として、2つのブロックの差異値をそのまま用いてデータを圧縮する方法、第2方法として、よく発生するブロックの差異値を実験的に測定してテーブルに登録し、圧縮時にこれを差異値として圧縮する方法、及び、第3方法として、よく発生するブロックの差異値を実験的に測定して固定テーブルに登録し、圧縮中によく発生するブロックの差異値を可変テーブルに登録し、圧縮時、これを差異値として圧縮する方法、を用いることができる。
ここで、前記第1の圧縮方法の差異値は、最小差異値を有するレンジブロックとドメインブロックとの排他的論理和の値(exclusive OR operation value)である。そして、第2の圧縮方法のテーブルは、固定テーブルであって、第3の圧縮方法のテーブルはグローバルテーブルである。
また、前記テーブルを使用する圧縮方法を検討すると、圧縮時、頻繁に発生するレンジブロックとドメインブロックの差異値を実験的に測定し、前記測定された差異値によるコストを生成する。そして、前記ブロック差異値をインデックスとして用い、該当インデックスの位置に、前記生成されたコストで差異値をコードする値を格納する。このとき、最も頻繁に発生するブロックの差異値を最小コストでマッピングすることによって、データの圧縮率を向上させることができる。圧縮率をより一層向上させるために、全体頻度数によるグローバルテーブルと、領域別頻度数によるローカルテーブルとを設ける。ここで、前記グローバルテーブルは、固定テーブルであって前記圧縮器自体に備えられ、また、圧縮時、メモリの特定の位置に格納することもできる。前記ローカルテーブルは、可変テーブルであって、圧縮器がデータを圧縮する間に、グローバルテーブルにはなくても特定の領域に頻繁に発生するレンジブロックとドメインブロックとの差異値及びコストを、テーブル化してメモリに格納することができる。ここで、前記グローバルテーブルは、圧縮前に既に作られた固定テーブルであり、前記圧縮器が、ライトモード時に格納される全てのデータに適用されるテーブルである。また、前記ローカルメモリは、可変テーブルであり、部分領域データの圧縮のみに用いられるテーブルである。
第三に、圧縮器は、マクロブロック単位のデータを圧縮し、探索範囲内にレンジブロックと同一または類似するドメインブロックがないと、前記レンジブロックのデータを圧縮せず例外処理する。つまり、前記レンジブロックが探索範囲内の全てのドメインブロックと比較し、同一のドメインブロックがないか、または類似するドメインブロックがない場合(例えば、複数のショートブロックの中でも、少なくとも1つのショートブロックも同一でない場合)には、前記レンジブロックの圧縮率は、圧縮しなかった場合に比べ非常に悪くなる。この場合、前記圧縮器は、該当レンジブロックを例外ブロックとして処理し、例外処理フラグと共に、該当レンジブロックのデータを圧縮せずにそのまま格納する。前記のように例外処理ブロックを用いると、圧縮率及び圧縮解除時の復元速度を向上させることができる。
上記のように、2つのブロックの差異値で圧縮する方法、またはグローバルテーブルを用いて圧縮する方法、もしくはグローバル及びローカルテーブルを用いて圧縮する方法を使用でき、さらに、前記のような圧縮方法に例外処理機能を含めて圧縮する方法を用いることができる。
以下に説明する本発明の実施形態は、グローバル及びローカルテーブルを備え、例外処理圧縮方法を用いる場合を仮定して説明することにする。すなわち、本発明の実施形態に係るデータ圧縮方法は、マクロブロックのデータを正方向及び逆方向コードしながら、圧縮速度を大きく低下せずに、最低コストを有するドメインブロックを探索して、圧縮率を向上させることができる方法を提案する。また、テーブル(global table、local tableなど)に圧縮データを効率的に格納し、圧縮時によく発生するブロックの差異値に対するコストを低く設定することで、格納されるデータの圧縮率を向上させることができる方法を提案する。なお、圧縮率が悪いマクロブロックは、例外処理して圧縮率と復元速度の調整が可能なようにする方法を提案する。
図1は、本発明の実施形態に係るレンジブロック及びドメインブロック構成を説明するための図である。
前記図1を参照すると、本発明の実施形態に係る圧縮器は、圧縮対象ブロックであるレンジブロックRと、参照ブロックであるドメインブロックとの間の距離(distance =レンジブロックとドメインブロックとの間の距離)を計算し、前記レンジブロックデータを前記ドメインブロックデータと比較し、その差異(レンジブロックデータとドメインブロックデータとのXOR演算値)を計算した後、この2つの計算値(距離及び差異)でレンジブロックの圧縮データを生成する。このとき、前記レンジブロックは1つ以上のマクロブロックで構成され、前記ドメインブロックの大きさは、前記レンジブロックと同一の大きさを有するブロックであってもよい。また、前記マクロブロックはショートブロックに分割(partition)されるか、またはショートブロックを用いなくてもよい。以下で説明する本発明の実施形態では、前記図1に示したように、マクロブロックが2つのショートブロックで構成された場合を仮定して説明する。
本発明の実施形態では、前記マクロブロックは2つのショートブロックで構成され、前記ショートブロックは16ビット(2byte)で構成されると仮定する。前記レンジブロックのドメインブロックは、前記レンジブロック以前の一定の範囲(つまり、探索範囲)内に表される同一の大きさを有するマクロブロックである。前記レンジブロックは、互いに重ならず、インテジャー(integer)単位で割り当て(align)られる。ドメインブロックは、互いに重なり、ショートブロック単位(ショートブロックが8ビットであれば、バイト単位、16ビットであれば、2バイト単位、...)で割り当てられる。例えば、圧縮するデータが5つのマクロブロック(MB0−MB4)であり、ショートブロックの番号がSB0−SB9である場合、前記レンジブロックは、SB0−SB1、SB2−SB3、SB4−SB5、...、SB8−SB9の順に割り当てられる。前記レンジブロックがSB8−SB9である場合、前記ドメインブロックは、SB6−SB7、SB5−SB6、SB4−SB5、...、SB1−SB2、SB0−SB1に割り当てられる。前記レンジブロックの圧縮データは、前記ドメインブロックの距離情報及び差異情報で構成される。このとき、選択されるドメインブロックは、探索範囲内で、前記レンジブロックと、最低コストの距離情報及び差異情報を有するドメインブロックである。
前記距離は、レンジブロックと選択されたドメインブロックとの間の離隔距離を意味し、各レンジブロックの圧縮データに用いられることにより、圧縮率に大きい影響を及ぼす。よって、前記距離は、一定の大きさに制限して使用することが好ましく、前記設定された距離の大きさにより、前記探索範囲が決定される。また、前記レンジブロックの長さが長い場合には、距離に用いるビットは減少されるが、差異値を表すビット数が増加し、これにより、前記レンジブロックの長さも圧縮率に大きな影響を及ぼす。従って、前記情報の圧縮を効果的に行うためには、前記探索範囲(差異のビット数)及びレンジブロックの長さを適正に設定しなければならない。
また、本発明の実施形態では、前記レンジブロックを圧縮する時、正方向及び逆方向コーディング方法を用いて、速い速度で最適(near optimum solution)なドメインブロックを探索する方法を提案する。本発明の実施形態では、マクロブロックを圧縮する時、マクロブロックを圧縮するコストが最小となるようにした後、逆方向に、マクロブロックを含み、既に圧縮されたマクロブロックのコストが最小となるように更新(update)する。つまり、本発明の実施形態では、探索範囲内で正方向(前方向)のマクロブロックを探索して、コストが最小となるよう圧縮し、その後、再び逆方向(後方向)に、既に圧縮されたマクロブロックのコスト確認し、ドメインブロックの長さ及び距離を調整する。
図2は、本発明の実施形態に係る逆方向コーディングによる圧縮効果を例示する図である。
本発明の実施形態では、逆方向に、現在圧縮するマクロブロックを含み、既に圧縮されたマクロブロックに対して、距離コスト(distance cost)と差異コスト(difference cost)が最適化されるレンジブロックサイズ(range block size)kを求める。この場合、一般的な方法では、レファレンスブロック(reference block)と一致しないマクロブロックは、同レンジブロックに属さない。しかし、本発明の実施形態に係るマクロブロックは、ドメインブロックと異なる場合であっても、レンジブロックに属することができる。
前記図2のような場合、レンジブロックを3つにして、コストT=cost(A,A)+cost(X,Y)+cost(B,B)にならなければならないが、本発明の実施形態では、レンジブロックを1つにし、コストU=cost(AXB,AYB)になる。この場合、コストTは少なくとも2つの距離値を有する反面、コストUは1つの距離値を有する。従って、XとYが同一でなくとも、XとYの差異値をコードしたcost(X,Y)は、少ない値を有することにより、U<Tが可能である。前記図2において、マクロブロックXがレファレンスブロックYと同一ではない場合も、同レンジブロックに属することができる。
図3(a)及び図3(b)は、本発明の実施形態により、探索範囲内でドメインブロックを正方向及び逆方向コードし、圧縮対象であるレンジブロックに対する最適のドメインブロックを選択する方法を説明するための図である。前記圧縮器は、レンジブロックが設定されると、探索範囲内に存在するドメインブロックを正方向及び逆方向コードし、コストが最も低いドメインブロックを選択した後、前記選択されたドメインブロックとレンジブロックとの間の距離及びコストを、圧縮データとして生成する。図3(a)は、本発明の実施形態に係る正方向コーディングの実行過程を説明するための図であり、図3(b)は、本発明の実施形態に係る逆方向コーディングの実行過程を説明するための図である。ここで、前記レンジブロックは、B,C[26,27](26及び27番目のショートブロック)であり、探索範囲は、[10,11,12,...,25](10番目ショートブロックから25番目のショートブロック)までの場合を仮定して説明することにする。
前記図3(a)及び図3(b)を参照すると、前記レンジブロックB,C[26:27]に対する正方向コーディングは、探索範囲内のドメインブロックを順次選択し、前記選択されたドメインブロックと、前記レンジブロックB,C[26,27]のショートブロックのデータを比較する。前記圧縮器は、正方向コーディングを行いながら、前記レンジブロックの前に位置する探索範囲内のドメインブロックとの距離及び差異値を計算する。その後、前記圧縮器は、前記逆方向コーディングを行いながら、前記の計算された距離及び差異値を分析し、比較したドメインブロックの中から前記レンジブロックと最短距離でかつ差異値が少ないドメインブロックを選択する。つまり、前記図3(a)の場合,前記圧縮器は、正方向及び逆方向にコーディングを行いながら、前記レンジブロックB,C[26:27]と最も類似し、かつ距離が近いドメインブロックB,C[20:21]を選択する。ここで,ドメインブロックB,C[14:15]は、差異値においてドメインブロックB,C[20:21]と同様のコストを有するが、距離コストがより大きいことから,ドメインブロックB,C[20:21]が選択され、これに関する距離情報と差異値が格納される。この場合、前記圧縮器は、前記レンジブロックA,B[22,23]は、距離値が4で差異値が0であるドメインブロック(A,B[18,19])を選択し、レンジブロックE,F[24,25]は、距離値が8で差異値が0であるドメインブロック(E,F[16,17])を選択し、レンジブロックB,C[26,27]は、距離値が6で差異値が0であるドメインブロック(B,C[21,22])を選択する。
この際、前記逆方向コーディングを行う過程で、多数のマクロブロックをグループ化して探索する。例えば、前記図3(b)における前記レンジブロックB,C[26:27]に対する逆方向コーディングは、レンジブロックA,B,E,F,B,C[22:27]−ドメインブロックA,B,D,F,B,C[10:15]のような1つの距離値で構成されたコーディングが、前記図3(a)に示したように、ドメインブロックB,C[20:21]−レンジブロックB,C[26:27]、ドメインブロックE,F[16:17]−レンジブロックE,F[24:25]、ドメインブロックA,B[18:19]−レンジブロックA,B[22:23]の3つの距離値で構成されたコーディングよりも少ないコストを有するため、以前にコードされた結果を再構成して、圧縮率を高めることができる。ここで、前記1つの距離値で構成されたコーディングに、同一でない値(E[24]、D[12])が存在するため、差異値に対するコストは3つの距離値で構成されたコーディングよりも大きいが、距離値を2つ少なく用いることで全体コストは減る。この場合、前記圧縮器は、レンジブロックA,B,E,F,B,C[22:27]を、ドメインブロックA,B,D,F,B,C[10:15]と比較して、距離値12、差異値0、DF XOR EF、0にコードするようになる。
図4は、本発明の実施形態に係る圧縮方法の過程を示すフローチャートである。まず、前記圧縮器は、ブロックの各参照位置(reference position)に対し、逆方向(後方向)に現在のコストを最大に節減する長さ(length)を求め、セービングが最大セービング(maximum saving)より大きいと、最適な長さ(optimum length)と参照ブロックに対する情報を更新する。ここで、前記セービング(saving)は、範囲内でのレンジブロックのコストの値を意味する。次いで、前記圧縮器は、最適な参照ブロックと最適な長さに対するブロックのコーディングを更新する。最後に、前記圧縮器は、一定の範囲ごとに差異コーディングを最適化するローカルテーブルを生成し、前記ローカルテーブルは、グローバルテーブルを参照して圧縮格納する。
前記図4を参照すると、圧縮器は、ステップ111で、設定されたレンジブロックの参照ブロックの位置に対し、逆方向コストセービング(backward cost saving)が最大になる長さを求める。図5は、前記図4のステップ111における最適化を行う動作を説明するための図である。前記図5を参照すると、図5のステップ151で、圧縮器は、範囲内の各レンジブロックに対しセービング値(saving=old cost−new cost)を求める。前記セービング値を求めた後、圧縮器は、ステップ153で前記セービング値が最大セービング値より大きいか否かを検査し、大きくない場合には、以前の値をそのまま維持しながらステップ157に進む。しかし、前記セービング値が最大セービング値よりも大きい場合には、ステップ155で、前記最大セービング値を前記で計算したセービング値に更新し、最適な長さ(optimum length)を前記151ステップの長さに更新し、最適な参照ブロック(reference)を前記ステップ151での参照ブロックに変更する。その後、圧縮器は、ステップ157で長さが最大の長さより大きいか否かを検査する。大きくない場合には、ステップ159で長さを1増加させた後、前記ステップ151に戻る。前記最大の長さよりも大きいと、圧縮器はステップ157でこれを感知し、ステップ161でレンジブロックの位置をハッシュテーブル(hash table)に挿入し、前記図4にリターンする。
すると、圧縮機は、図4のステップ113及び115を行いながら、前記セービング値が最大セービング値より大きいか否かを検査し、大きくない場合には、以前の値をそのまま維持し、セービング値が最大セービング値よりも大きい場合には、前記最大セービング値を更新し、最適の長さを更新し、最適な参照ブロックを変更する。その後、圧縮器は、ステップ117で前記参照ブロックがテーブルにあるか否かを検査し、参照リストにあると、参照リストから該当データを読み出した後、ステップ111に進み、参照リストにない場合には、ステップ121で最適な参照ブロックと最適な長さに対し、レンジブロックのコーディングを更新する。参照リストは、以前のレンジブロックをコードする時、以後のレンジブロックに対する速い探索のためにショート(short:16bit)単位でキュー(queue)に登録される。1つのマクロブロックに対する探索対象は、2つのショートのうち、少なくとも一つが同位置で構成される。
コードした後、圧縮器は、ステップ123で差異コーディングテーブル(difference coding table)を更新する。
図6は、前記図4のステップ123で差異コーディングテーブルを更新する過程を示すフローチャートである。前記図6を参照すると、圧縮器は、ステップ181で特定レンジブロックRをコードした後、ステップ183及び184を行いながら、該当コーディングレンジブロックRが繰り返し処理された回数N(初期値は0)の値を1増加し、その1増加したNの値が所定のT(Threshold)値よりも小さいと、再び次のレンジブロックRをコードし、上記の過程を繰り返す。そして、増加したN値がT(Threshold)よりも大きいと、ステップ185でローカルフリークエンシー(local frequency)とコストセービング(cost saving)値によりローカルテーブルを構成する。その後、圧縮器はステップ189で、更新コストがコストセービング値より小さいか否かを検査し、小さい場合、ステップ191でローカルテーブルのコーディングテーブルを更新する。
上記のように、生成されるローカルテーブルは、前記グローバルテーブルと共にレンジブロックのデータを圧縮するためのテーブルとして用いられる。
図7(a)は、本発明の実施形態に係る、グローバルテーブルの特性を説明するための図であり、図7(b)は、ローカルテーブルの特性を説明するための図である。
前記図7(a)を参照すると、グローバルテーブルは、既に作られているテーブル(pre-defined statistics value)であり、データの圧縮時、実験的に、頻繁に発生する差異値を抽出した値を格納する。よって、前記グローバルテーブルは更新することができないテーブルであり、圧縮時、グローバルテーブルのデータを読み出すことのみ可能である。従って、グローバルテーブルは、固定テーブルとなり、固定されたテーブルサイズを有する。本発明の実施形態において、前記グローバルテーブルは、8ビットよりも小さいサイズ[0,...,255]を有すると仮定する。前記グローバルテーブルのインデックスは、0から255になり得、各インデックスに格納されるデータは、レンジブロックとドメインブロックの排他的論理和の値となる(x result=[statistics value A]XOR[statistics value B])。従って、前記図7(a)のようなグローバルテーブルを用いる場合、圧縮器は、2つのマクロブロックの差異値のうち最も頻繁に発生する差異値を0,1,2,3,...,255に割り当てて、圧縮効率を高めることができる。
前記図7(b)を参照すると、ローカルテーブルはデータの圧縮中に生成するテーブルであって、本発明の実施形態においては、同一値が3回以上発生し、前記発生した同一値が前記グローバルテーブルが登録されていない値である場合に、該当値をローカルテーブルに登録する。前記ローカルテーブルは、圧縮器の探索器で生成することができる。前記ローカルテーブルは更新可能であり、データの圧縮中に前記テーブルにアクセス(read and write)可能である。前記ローカルテーブルは可変的に登録可能であり(floating entry)、前記ローカルテーブルのサイズは、前記グローバルテーブルのサイズよりも大きい値に設定する。本発明の実施形態において、前記ローカルテーブルのサイズは、8ビット[256,...,511]の大きさを有すると仮定する。この場合、前記ローカルテーブルのインデックスは、256から511となり、各インデックスに格納されるデータは、前記レンジブロック及びドメインブロックの排他的論理和の値となる(y result=[dynamic value A]XOR[dynamic value B]。従って、前記図7(b)のようなローカルテーブルは、圧縮器がデータを圧縮する間に生成され、最初に発生する差異値からテーブルインデックス256,257,...,511に割り当てることができる。
ここにおいて、前記圧縮器の特徴を、圧縮の構成、逆方向コストセービング(backward cost saving)、差異コーディング(difference coding)、距離コーディング(distance coding)、圧縮解除の速度制御(decoding speed control)の順に検討する。
まず、前記圧縮の構成を検討すると、各マクロブロックは2つのショートブロックで構成されると仮定し、各ショートブロックは16ビットで構成されると仮定する。前記レンジブロックのドメインブロックは、前記レンジブロック以前の探索範囲内に存在する同一の大きさのブロックである。また、前記レンジブロックは、互いに重ならず、インテジャー(integer)単位で配列(align)し、前記ドメインブロックは、互いに重なり、バイト(byte)単位で配列され、レンジブロックの圧縮は、ドメインブロックとの距離及び差異で構成される。
第二に、逆方向コストセービングの動作を検討すると、マクロブロックの参照リスト(reference list)は、マクロブロックと少なくとも1つのショートブロックとが一致する位置で構成され、マクロブロック以前のマクロブロックが圧縮されるハッシュテーブル(hash table)に格納される。そして、逆方向に、同一の距離値で現在のコストを最大にセービングする長さkを求める。ここで、前記セービングは、k個のレンジブロックでコストの値を意味する。その後、最適なレファレンスと最適な長さに対し、レンジブロックのコーディングを更新する。すなわち、前記圧縮器は、図4のステップ111〜121を行いながら最適化ステップを行うが、それは次の通りである。まず、圧縮器は長さ内の各レンジブロックに対し、コストの和を求める。その後、前記圧縮器は、現在のセービング(saving=old cost−new cost)が最大セービングより大きいか(saving>max saving)否かを検査し、大きいと、前記圧縮器はパラメーター値を更新する。その後、圧縮器は、長さが最大長さより小さい(length<max length)か否かを検査する。前記長さが最大長さよりも小さいと、前記長さを1増加させた後、次のステップを進むために前記過程に戻り、前記長さが最大の長さであると、前記レンジブロックの位置をハッシュテーブル(hash table、R)に挿入する。
第三に、前記圧縮器の差異値を決定する過程を検討すると、前記差異コーディング(difference coding)は、ショートブロック単位の排他的論理和の値をコードするが、前記コーディング方法は、復元速度の要求事項に応じて選択される。グローバルテーブル(global table)は、大きい範囲(global frequency)の圧縮に効率的であるエントロピー符号化テーブル(entropy coding table)である。ローカルテーブルは、前記グローバルテーブルを参照して圧縮した後、格納する。前記ローカルテーブルの構成は、テーブル圧縮率と差異コーディングコスト(difference coding cost)を考慮し、テーブルエントリー(table entry)の更新により決定される。
第四に、前記圧縮器の距離値を決める過程を検討すると、前記距離コーディング(distance coding)は、復元速度及び圧縮率を考慮し、次のような二つの方法を選択することができる。その一つは、現在のレンジブロックの距離が以前のレンジブロックの距離と同一であるときは、以前のレンジブロックと同一であることを示す1ビットで表示し、以前のレンジブロックの距離と異なって、256以下であれば、10ビットで表示し、それ以外の場合には18ビットで表示する。もう一つの方法は、距離を全て16ビットで表示し、距離シークエンス(distance sequence)を圧縮して別途に格納する。本発明の実施形態では、前者の方法を用いると仮定する。
第五に、圧縮解除の速度制御方法を検討すると、大型のマクロブロック(large macro block:LMB)は、m個のマクロブロックから構成される。各LMBのコーディングコストが臨界値(threshold value:t)より大きいと、コードせずにそれ自体を別途に格納する。このようなLMBを、例外処理ブロック(exception handling block)と称することにする。前記例外処理ブロックは、復元過程が非常に簡単であるため、復元速度を向上させることになる。前記復元速度の調整は、単に臨界値tを調整すれば良い。
前述したように、本発明の実施形態に係るデータ圧縮器は、次のような特徴を有する。まず、1つのマクロブロックを圧縮する時、レンジブロックの範囲(partition)を調整して、マクロブロックのデータ圧縮率を向上することができる。第二に、コストを直接最小化(minimize)せずに、既に圧縮されたコストのセービングが最大化(maximize)となる位置を探して、圧縮時間を改善することができる。つまり、コストを直接最小化すると、レンジブロックの長さが可変であることから、時間的複雑度(time complexity)が非常に大きくなる。第三に、本発明の実施形態では、マクロブロックを多数のショートブロック(ここでは、2つのショートブロックを用いる)を用い、圧縮時に、レンジブロックの少なくとも1つのショートブロックが一致するポジションをハッシング(hashing)して、圧縮実行速度を向上させると共に、レンジブロックの連続性を保証する。第四に、グローバルテーブルと対比し、ローカルテーブル構成をコストセービング演算によって決定する。第五に、グローバルテーブルとローカルテーブルを圧縮によって格納し、圧縮時、これを用いてマクロブロックのデータを圧縮する。
上記のような、本発明の実施形態に係る、圧縮器の構成及び動作を具体的に検討する。
図8は、本発明の実施形態に係る前記圧縮器の構成を示す図である。
前記図8を参照すると、ローダ(loader)210は、ダウンロードされるデータ(raw binary data)をロードする。前記ローダ210は、コーダ240で圧縮するデータの大きさ(圧縮フレームの大きさ)のデータをロードする。ここで、前記「圧縮フレーム(coding frame)」とは、前記コーダ240がデータを圧縮する大きさ(または、探索器で決められる探索範囲の大きさ)を意味する。そして、バッファは、前記ローダ210によってロードされる圧縮フレームのデータを一時バッファリングする機能を果たす。
探索器220は、前記ロードされた圧縮フレームのデータから探索範囲を決定し、レンジブロックを確認した後、前記探索範囲内に位置したドメインブロックと前記レンジブロックとを比較して、2つのブロック間の差異値を生成し、前記生成された差異値によるコストを計算し、最もコストが低いドメインブロックの距離情報及びコスト値を決定する。このとき、前記探索器220は、正方向コーディングにおいて、前記マクロブロック単位の大きさのレンジブロックと、探索範囲内のドメインブロックのコストを計算し、逆方向コーディングにおいて、以前にコードされたレンジブロックと前記マクロブロックが含まれたコストを最適化するレンジブロックの長さ及び距離を決定する。そして、前記探索過程で、前記レンジブロックとドメインブロックとの差異値を計算した後、同一である場合には、ドメインブロックとの距離情報及び同一であることを表す差異情報を生成し、異なる場合には、前記ドメインブロックの距離情報及び2つのブロックが異なることを表す差異情報を生成する。ここで、前記差異情報は、2つのブロックが同一の場合、同一であることを表す差異フラグとなり、異なる場合、2つのブロックが異なることを表示する差異フラグ及び差異値で構成される。ここで、前記差異値は、2つのブロックの比較結果値(例えば、排他的論理和の値)をそのまま使用可能であり、前記差異値をコストに変換した値、または前記コストを変形した値などとして用いることができる。本発明の実施形態では、前記比較結果値からコストを計算し、前記計算されたコストをテーブルのインデックスに変換して、差異値を生成する場合を例に挙げて説明する。前記探索器220は、コストテーブルを備える。ここで、前記コストテーブルは、計算されたコストに対応するテーブルのインデックス情報を格納するテーブルとなる。ここで、前記テーブルは、グローバル及びローカルテーブルとなり、前記テーブルインデックスに対応する位置に前記差異値が格納される。また、前記探索器220は、前記探索範囲内で正方向コーディングを行いながら、レンジブロックと選択されるドメインブロックのデータを比較して差異値を生成し、前記コストテーブルで差異値に対応するコストを計算する。そして、逆方向コーディングを行い、前記生成されたコストを保管しているコストと比較して、現在生成されたコストがさらに低いと、前記コストを更新し、そうでない場合には、以前のコストを維持する。このような動作を繰り返しながら、前記レンジブロックと探索範囲内のドメインブロックを比較しながら、最低コストを探索し、探索終了時、前記コストテーブルで探索された最低コストに当たるテーブルインデックスを選択する。その後、前記探索器220は、前記選択されたコストに対応するドメイン情報との距離情報、及びテーブルインデックスを前記コーダ240に伝達し、次のレンジブロックを選択して上記のような動作を繰り返して行う。
前記コーダ240は、グローバルテーブル及び/またはローカルテーブルを備える。また、前記グローバルテーブル及びローカルテーブルは、前記バッファにバッファリングすることができる。前記グローバルテーブルは、前記図7(a)で説明したように、固定テーブル(fixed table)であって、実験的に測定し、これをテーブル化したものである。前記ローカルテーブルは、前記図7(b)で説明したように、可変テーブル(variable table)であり、現在圧縮するデータに対してのみ可変的に生成されるテーブルである。ここで、前記グローバルテーブル及びローカルテーブルは、前記コストによって決定されるテーブルインデックスにより位置が指定され、前記テーブルインデックスの位置に、レンジブロックとドメインブロックとの差異値が格納されるテーブルである。以下に説明する本発明の実施形態では、グローバルテーブル及びローカルテーブルを全て使用する場合を仮定して説明する。しかし、前記グローバルテーブルまたはローカルテーブルのいずれか一つのみを使用して、データを圧縮することもできる。前記コーダ240は、前記コスト値に対応する位置に格納されたテーブルインデックスをレンジブロックのコーディングデータとして処理する。ここで、前記コストは、前記探索器220で計算される。前記探索器220は、レンジブロックとドメインブロックとの差異情報を基にして前記コストを計算することができる。そして、コストテーブルは、前記コストによって指定される位置にテーブルインデックスを格納する。ここで、前記テーブルインデックスは、グローバルテーブル及び/またはローカルテーブルのインデックスである。前記探索器220は、前記レンジブロックと、ドメインブロックの距離情報(距離フラグ及び距離値)、及び前記テーブルインデックスを含む差異情報を前記コーダ240に伝達する。すると、前記コーダ240は、前記距離情報及び差異情報を圧縮データにコードする。
前記探索器220及びコーダ240の動作を検討する。本発明の実施形態では、前記レンジブロックは2つ以上のショートブロックで構成される場合を仮定している。前記探索器220は、前記レンジブロックとドメインブロックとの差異を計算して、コストを計算する。このとき、レンジブロックとドメインブロックとの差異値が0、つまり同一であると、コスト値は0(または、非常に小さいコスト値)と計算される。また、レンジブロックとドメインブロックを構成するショートブロックが少なくとも1つ以上同一であると、同一のショートブロックのコストは0になり、他のショートブロックのコストは、2つのショートブロックの差異値によって計算される。前記のような方法で、前記探索器220は、前記レンジブロックのショートブロックのデータと、前記探索範囲内のドメインブロックのショートブロックデータとを比べながら、最低コストを有するショートブロックで構成されたドメインブロックを選択する。この際、前記探索器220は、探索範囲内で、ドメインブロックを正方向に検索しながらコストを計算し、前記計算されたコストを逆方向に探索しながら、現在保管している最低コストと比較した後、現在探索されたコストが低いと、現在ドメインブロックとの距離情報及びコストを更新する。よって、前記探索範囲内のドメインブロックの探索を終了すると、前記探索器220は、探索範囲内で、前記レンジブロックと最低コストを有するドメインブロックとの距離情報及びコスト値を保管することになる。その後、前記探索器220は、前記コストを用いて、コストテーブルでテーブルインデックスを求め、前記距離情報と共に、前記テーブルインデックスを含む差異情報を前記コーダ240に伝達する。このとき、前記差異情報は差異フラグ及びテーブルインデックスを含み、レンジブロックとドメインブロックが同一の場合、前記テーブルインデックスは含まれない。本発明の実施形態では、前記探索器220が差異情報を生成する時、レンジブロックとドメインブロックのデータが一致すると、差異フラグをリセット(差異フラグ=0)し、差異フラグだけからなる差異情報を生成する。しかし、前記レンジブロックとドメインブロックのデータが一致しないと、前記探索器220は、差異フラグをセット(差異フラグ=1)し、差異値によるコストによって選択されるテーブルインデックス情報を含む差異情報を生成する。
すると、前記コーダ240は、前記差異情報の差異フラグを分析して、2つのブロックが同一のデータであると、前記距離情報及び差異フラグをレンジブロックの圧縮データにコードする。ここで、前記差異情報は、テーブルインデックスを含むことができる。前記テーブルインデックスが含まれていると、前記コーダ240は、前記テーブルインデックスに対応するテーブル(グローバルテーブル及び/またはローカルテーブル)で、2つのブロックの差異値を確認した後、前記差異値が正常な差異値(つまり、前記探索器220で探索された差異値と同一の差異値)であると、前記距離情報及び差異情報をレンジブロックの圧縮データにコードする。
また、本発明の実施形態では、前記圧縮器は例外ブロック処理部250をさらに備える。前記例外ブロックは、レンジブロックとドメインブロックとの差異値が設定された臨界値よりも大きいため、圧縮効果がほんとんどないブロックである。例えば、前記レンジブロック及びドメインブロックは、前記図1で説明したように、マクロブロック単位の大きさを有し、前記マクロブロックは2つ以上のショートブロックで構成される。この場合、前記探索器220は前述したように、レンジブロックを決定し、探索範囲内のドメインブロックを正方向及び逆方向コードして、差異値(すなわち、コスト)が一番小さいドメインブロックを選択する。しかし、前記設定されたレンジブロックと選択されたドメインブロックのショートブロックデータが共に同一でない(つまり、レンジブロック及びドメインブロックのショートブロックデータが全て異なる)と、現在のレンジブロックのデータを圧縮する効果が顕著に低下する。このような場合、本発明の実施形態では、該当するレンジブロックのデータを圧縮せずに(no coding)そのまま格納し、例外ブロックとして処理したことを表すフラグを生成する。このような例外処理方法により、圧縮解除器でメモリに圧縮格納されたデータを復元する時、例外処理ブロックのデータは圧縮解除過程を行わずに直接復元され、デコーディング速度の改善が可能になる。本発明の実施形態では、前記コーダ240がグローバルテーブル及びローカルテーブルを備え、差異情報の差異フラグを2ビットで構成し、前記例外ブロックとして処理する例外フラグを共に表示する方法を提案する。この場合、前記差異フラグは、下記の[表1]のように構成することができる。
前記探索器220は、レンジブロックと選択されたドメインブロックのショートブロックデータを、探索範囲内で正方向及び逆方向検索し、最低コストを有するドメインブロックを選択する。第一に、選択されたドメインブロックのデータが、前記レンジブロックのデータと同一であると、前記探索器220は、選択されたドメインブロックとレンジブロックの距離情報及び同一さを表す差異フラグ(差異フラグ=0)を生成し、前記コーダ240に伝達する。第二に、選択されたドメインブロックのデータが、前記レンジブロックデータと異なり、2つのブロックの差異値によって生成されたコストがグローバルテーブルのインデックスであれば、前記探索器220は、前記選択されたドメインブロックとレンジブロックとの距離情報と、グローバルテーブルインデックスに存在することを表す差異フラグ(差異フラグ=01)、及びグローバルテーブルインデックスを含む差異情報を生成し、前記コーダ240に伝達する。第三に、選択されたドメインブロックのデータが前記レンジブロックデータと異なり、2つのブロックの差異値によって生成されたコストがローカルテーブルのインデックスであれば、前記探索器220は、前記選択されたドメインブロックと、レンジブロックの距離情報、ローカルテーブルインデックスに存在することを表す差異フラグ(差異フラグ=10)、及びローカルテーブルインデックスとを含む差異情報を生成し、前記コーダ240に伝達する。第四に、前記レンジブロックとドメインブロックのデータが異なり、2つのブロックの差異値によって生成されたコストが、グローバル及びローカルテーブルに存在しなければ、前記探索器220は、前記差異フラグを例外処理フラグとして設定し、これを前記コーダ240に通知する。
そうすると、前記コーダ240は、前記差異フラグを分析し、レンジブロックのデータをコードする。第一に、前記差異フラグが2つのブロックのデータが同一であることを表すフラグ(差異フラグ=0)であれば、前記コーダ240は、前記選択されたドメインブロックの距離情報及び差異フラグを、前記レンジブロックの圧縮データにコードする。第二に、前記差異フラグが、グローバルテーブルのインデックスを有するデータであることを表すフラグ(差異フラグ=01)であれば、前記コーダ240は、前記選択されたドメインブロックの距離情報と、差異フラグと、グローバルテーブルインデックスとからなる差異情報を、レンジブロックの圧縮データにコードする。第三に、前記差異フラグがローカルテーブルのインデックスを有するデータであることを表すフラグ(差異フラグ=10)であれば、前記コーダ240は、前記選択されたドメインブロックの距離情報と、差異フラグと、ローカルテーブルインデックスとからなる差異情報を、レンジブロックの圧縮データにコードする。第四に、前記差異フラグが例外処理フラグ(差異フラグ= 11)であれば、前記コーダ240は、前記例外ブロック処理部250を駆動し、前記レンジブロックのデータをコードせずに、そのままメモリに格納させる。この場合、前記メモリには、前記例外ブロックとして処理されたレンジブロックのコードされていないデータが格納され、差異フラグを例外処理フラグとして格納する。本発明の実施形態では、前記例外ブロック処理部250が、前記コーダ240と独立して構成される場合を仮定し説明しているが、前記例外ブロック処理部250は、前記コーダ240に含まれる構成でも具現することができる。
図9は、前記探索器220の動作を説明するための図である。前記図9において、レンジブロックは、参照番号391のように8番及び9番のショートブロックである場合を仮定している。また、ドメインブロックも2つのショートブロックを対象としており、6番及び7番のショートブロック、5番及び6番のショートブロック、4番及び5番のショートブロック、3番及び4番のショートブロック、2番及び3番のショートブロック、1番及び2番のショートブロック、そして、0番及び1番のショートブロックなどになり得る。また、前記図9の参照番号393のような圧縮対象のデータがダウンロードされ、前記ローダ210によってバッファにバッファリングされた状態である。
前記図9を参照すると、ステップ310で前記探索器220は探索範囲をロードし、探索範囲は2、4、8、16、...、65536マクロブロックとなる。ここで、前記探索範囲は、前述したように、前記コーダ240がデータを圧縮するための単位(圧縮フレーム)である。前記探索範囲を決定した後、前記探索器220は、ステップ320で圧縮対象であるレンジブロックをロードし、前記レンジブロックは、8番及び9番のショートブロックであると仮定する。その後、前記探索器220は、ステップ330で、前記レンジブロックを探索範囲内の各ドメインブロックと比較できるように、ドメインブロックを選択する。前記ドメインブロックの選択は、レンジブロックの位置で正方向コードしながらドメインブロックを選択し、前記ドメインブロックは、ショートブロック単位で移動しながら選択される。前記ドメインブロックを選択した後、前記探索器220は、ステップ340で、前記選択されたドメインブロックのデータを前記レンジブロックのデータと比較する。この場合、前記比較演算は、排他的論理和演算である。その後、前記探索器220は、ステップ350で、前記ドメインブロックとの距離情報を算出し、ステップ360で、前記2つのブロック間の差異値によるコストを計算する。ここで、前記距離情報は、距離フラグ及び距離値で構成される。また、前記コストは、2つのブロックの比較結果値の差異値を基にして計算する。前記探索器220は、テーブルインデックスを格納するコストテーブルを備え、コストは、コストテーブルのアドレスとして使用される。従って、前記コストが計算されると、前記探索器220は、前記コストに対応するアドレスに格納されたコストテーブルの値を発生し、コストテーブルの値はテーブルインデックスになる。また、前記テーブルインデックスは、前記グローバルテーブルまたはローカルテーブルのインデックスになる。
上記のような過程を行いながら、前記探索器220は、前記レンジブロックと探索範囲内のドメインブロックとの距離情報及びコストを計算し、前記計算されたコストをコストテーブルで探索し、テーブルインデックスを求める。このとき、前記探索器220は、前記コストによって、探索するテーブルインデックスの中で最小値を有するテーブルインデックスを選択する。つまり、正方向コーディングを行いながら、ドメインブロックとの距離情報及びコストを計算し(つまり、レンジブロックを選択した後、順にドメインブロックを選択しながら、距離情報及びコストを計算し)、前記コストを用いて、コストテーブルでテーブルインデックスを決定する。その後、逆方向コーディングを行い、前記決定したテーブルインデックスと現在まで探索しながら保管している最低テーブルインデックスとを比較し、以前のテーブルインデックスがさらに小さい値を有すれば、以前のテーブルインデックスを維持し、そうでなければ(つまり、現在のテーブルインデックスがさらに小さい値を有すれば)、前記テーブルインデックス値を更新して格納する。つまり、前記探索器220は、現在のテーブルインデックスがさらに小さければ、現在探索されたドメインブロックとの距離情報及び、差異値によるテーブルインデックスを更新格納し、そうでなければ、以前の探索過程で保管している距離情報とテーブルインデックスをそのまま維持する。前記のような動作を繰り返して行うと、前記探索器220は、前記レンジブロックと、探索範囲内で最低コストを有するドメインブロックとの距離情報及びテーブルインデックスを格納することになる。
しかし、前記探索器220で、レンジブロックを構成するショートブロックのいずれか一つのショートブロックも探索範囲内のショートブロックと同一でない場合、該当レンジブロックの圧縮効果は悪くなる。この場合、本発明の実施形態では、該当レンジブロックを例外ブロックとして処理する。すなわち、前記探索器220は、レンジブロックのショートブロックを、探索範囲内のドメインブロックのショートブロックと比較しながら、一致する数以上のショートブロックを探索できなかった場合、例外処理フラグを生成し、該当レンジブロックのコストを計算しない。例えば、レンジブロック及びドメインブロックの大きさを有するマクロブロックが、N個のショートブロックで構成され、レンジブロック及び探索領域内のドメインブロックを比較する時、2つのマクロブロックで一致するショートブロックの数がM個以下の場合、前記探索器220は、該当レンジブロックを例外処理ブロックに設定することができる。このとき、前記探索器220は、該当レンジブロックを例外処理ブロックに決定し、例外処理フラグをセットする。この場合、本発明の実施形態では、前記差異フラグを例外処理フラグとして処理し(上記の表1の場合、差異フラグは11になる)、テーブルインデックスは生成しない。
本発明の実施形態において、前記レンジブロック及びドメインブロックは、2つのショートブロックで構成される場合を仮定して説明している。この場合、N=2、M=0に設定することができる。そして、前記探索器220は、レンジブロックのショートブロックと、探索範囲内の全てのドメインブロックのショートブロックとが同一でない場合、該当レンジブロックを例外処理ブロックに決め、差異フラグを「11」に決定し、例外処理ブロックであることを表示する。
また、前記探索器220は、ローカルテーブルを生成することができる。すなわち、前記図7(b)に示したように、前記探索器220は、グローバルテーブルに登録されていないが、同一の差異値(レンジブロックとドメインブロックとの間の差異値)が設定された回数(ここでは、3回)以上発生すると、これをローカルテーブルに登録する。このとき、前記ローカルテーブルのコスト(テーブルインデックス)は、前記グローバルテーブルのコスト(テーブルインデックス)よりは、さらに大きい値を有するように設定する。前記コスト及びテーブルインデックスは、コストテーブルに登録する。前記のように、ローカルテーブルを用いる場合、圧縮器は、前記グローバルテーブルには登録されていないが、よく発生する差異値をテーブルに登録し、圧縮を効率的に行うことができるようになる。
前記のような探索過程が終了すると、前記探索器220は、ステップ370で、前記格納している距離情報及び差異情報(テーブルインデックスを含む)を前記コーダ240に伝達する。
前記図9において、前記探索器220は、図9の参照番号393のように、バッファリングしたデータをマクロブロック単位に設定し、現在のレンジブロックの8番及び9番のブロックの前に位置するドメインブロックを6番と7番、5番と6番、4番と5番、...、0番と1番のブロックの順にインデックスし、探索を行う。そして、前記探索器220は、前記レンジブロックのデータを選択されるドメインブロックのデータと比較して、その結果値を出力する。この際、前記探索器220は、レンジブロックとドメインブロックとを比べて差異値を生成するが、6番と7番のショートブロックがドメインブロックに選択される時点で、E XOR B、C XOR Bを生成し、5番と6番のショートブロックがドメインブロックに選択される時点で、B XOR B、E XOR Bを生成し、4番と5番のブロックがドメインブロックに選択される時点で、B XOR B、B XOR Bを生成し、3番と4番のショートブロックがドメインブロックで時点で、F XOR B、B XOR Bを生成し、2番と3番のショートブロックがドメインブロックに選択される時点で、D XOR B、F XOR Bを生成し、1番と2番のショートブロックがドメインブロックに選択される時点で、B XOR B、D XOR Bを生成し、0番と1番のショートブロックがドメインブロックに選択される時点で、A XOR B、B XOR Bを生成する。また、前記ドメインブロックとレンジブロックとの間の距離情報も生成する。
その後、前記探索器220は、生成された差異値を基にコストを計算するが、レンジブロックがドメインブロックと同一の場合(前記図9において、4番と5番のショートブロック)にはコストは0になり、2つのショートブロックのうち1つのショートブロックが同一の場合(5番と6番のショートブロック、3番と4番のショートブロック、1番と2番のショートブロック、0番と1番のショートブロック)のコストは、最小コストに計算され、2つのショートブロックが全て異なる場合、コストは高いコストに計算される。図9において、前記探索器220は、ステップ370で、前記4番と5番のショートブロックの距離情報(距離フラグ1、距離値4)と、2つのブロックデータが同一であることを表す差異フラグ(ここでは、diff flag=0)を前記コーダ240に伝達する。しかし、前記4番及び5番のショートブロックのようなコストが0(または0に近い値)であるドメインブロックがない場合、前記探索器220は、コストが最も低いドメインブロックの距離情報及び差異情報を生成し、前記コーダ240に伝達する。ここで、前記差異情報は、2つのブロックのデータが、互いに異なること表す差異フラグ(ここでは、diff flag=01または10)及びテーブルインデックス(前記計算されたコストに対応するコストテーブルに格納されたテーブルインデックス)を含む情報である(例えば、0番及び1番のショートブロックである場合、距離情報(距離フラグ1、距離値8)及び差異情報(差異フラグ01、テーブルインデックス)。
すると、前記コーダ240は、前記距離情報及び差異情報(差異フラグ及びテーブルインデックス)を用いて、レンジブロックのデータを圧縮する。
図10は、前記コーダ240でレンジブロックのデータを圧縮する過程を示すフローチャートであり、前記コーダ240が例外ブロック処理機能を備える場合を示している。しかし、前記コーダ240は、前記例外ブロック処理機能を備えない場合もある。そのような場合、前記圧縮器は前記例外ブロック処理部250を備えず、前記コーダ240は、前記例外ブロックとして処理されなければならないブロック(例えば、レンジブロックを構成するショートブロックのいずれか一つのショートブロックも、探索範囲内の全てのショートブロックと同一でない場合)も、前記のように、コストを計算してコードすることができる。
前記図10を参照すると、前記ローダ210は、ステップ411で、ダウンロードしたデータをロードしてバッファにバッファリングするが、このとき、前記ロードされるデータは、マクロブロック及びショートブロック単位で分割(partition)される。前記ロードされるデータの前段に位置するマクロブロックは、比較対象、つまりドメインブロックがないか、または、少数のドメインブロックと比較してコードされなければならない。この場合、比較対象であるドメインブロックが多くないため、前記圧縮器はレンジブロックの圧縮を効果的に行うことができない。従って、圧縮時、圧縮フレームの前に位置する設定された数のマクロブロックは圧縮過程を行わず、例外処理ブロックとして処理することが好ましい。前記ローダ210は、前記圧縮フレームの大きさでデータをロードし、前記探索器220は、ロードしたデータをレンジブロック及びドメインブロックに分割して、探索を開始する。このとき、ロードするデータの前部は、参照対象であるドメインブロックがないか、もしくは極少数のドメインブロックを有する。この場合、本発明の実施形態における前記探索器220は、ロードする圧縮フレームデータで設定された大きさのマクロブロックを、例外処理ブロックとして処理する。前記図10では、ロードする圧縮フレームデータで、16マクロブロック(MB0−MB15)を例外処理ブロックとして処理することを例示している。従って、圧縮開始時、前記コーダ240は、ステップ435で、前記マクロブロックMB0−MB15を例外処理ブロックを処理した後、ステップ433で、例外処理ブロックとして格納する。このとき、前記コーダ240は、前記例外処理ブロックのデータを圧縮せずに、そのまま格納する。
前記例外処理ブロックの処理後、前記探索器220は、前記図9に示すように、探索範囲を設定してから、レンジブロックと探索範囲内のドメインブロックをロードした後、これらブロックを比較し、前記レンジブロックに対する距離情報及び差異情報を前記コーダ240に伝達する。
すると、前記コーダ240は、ステップ415で差異フラグの検査を行い、レンジブロックとドメインブロックのデータが同一であるか(コスト=0)否かを検査し、同一であると、ステップ417で、前記探索器220で、前記レンジブロックのデータを生成した距離情報及び差異フラグにコードし、圧縮データを生成した後、ステップ419でメモリにバッファリングする。つまり、前記レンジブロック及び探索されたドメインブロックのデータが同一であると、前記コーダ240は、レンジブロックとドメインブロックとの間の距離情報及びレンジブロックと同一であることを表す差異フラグ(差異フラグ=0)を、前記レンジブロックの圧縮データとして生成する。
しかし、前記ステップ415で、レンジブロックと同一のドメインブロックがない場合(差異フラグ≠0)、前記コーダ240は、ステップ421で前記テーブルインデックスを確認し、ステップ423で前記テーブルでテーブルインデックスを確認する。前記テーブルインデックスは、前記探索器220で2つのブロックの差異値によって生成される情報であって、前記グローバルテーブル(及び/またはローカルテーブル)のテーブルインデックスになる。ここで、前記テーブルインデックスを確認する理由は、前記探索器220で探索されたコストが、グローバルテーブル及び/またはローカルテーブルに存在するか否かを確認するためである。つまり、前記グローバルテーブル及び/またはローカルテーブルは、前記コストによって決定されるテーブルインデックスを用い、圧縮解除器が圧縮データを復元する時、前記テーブルインデックスによってレンジブロックとドメインブロックとの差異値を抽出できるようになる。
以下では、グローバルテーブル及びローカルテーブルを全て使用する場合を仮定して、説明することにする。前記探索器220で生成されたテーブルインデックスが前記テーブルのインデックスとして使用されなければ、該当レンジブロックの圧縮データを復元することができない。このとき、前記差異フラグがグローバルテーブルのインデックスであることを表示する差異フラグ(差異フラグ=01)であれば、前記コーダ240は、ステップ425で、前記テーブルインデックス値がグローバルテーブルに存在するか否かを検査し、前記グローバルテーブルに存在すると、ステップ419で、距離情報及び差異情報をメモリに格納する。このとき、距離情報は、前記レンジブロックと距離フラグ及び該当するドメインブロックとの距離値になり、差異情報は、差異フラグ及びグローバルテーブルのインデックス値になる。また、前記差異フラグがローカルテーブルのインデックスであることを表示する差異フラグ(差異フラグ=10)であれば、前記コーダ240は、ステップ427でローカルテーブルを探索する。ここで、前記ローカルテーブルは、前記図7(b)に示したように、前記探索器220に生成されるテーブルであって、前記グローバルテーブルに登録されていない、設定回数以上繰り返し探索される差異が存在する差異値が登録される。このとき、前記ローカルテーブルに前記テーブルインデックス値が存在すると、前記コーダ240は、ステップ429でこれを感知し、ステップ419で、距離情報及び差異情報をメモリに格納する。前述したように、前記差異フラグが0ではなく、前記差異フラグが「01」または「10」であると、前記コーダ240は、前記差異フラグ値及び前記グローバルテーブル、またはローカルテーブルのテーブルインデックスからなる差異情報を前記距離情報と共にメモリに格納する。
しかし、前記ステップ429で前記差異フラグが例外処理フラグであると、前記コーダ240は、前記ステップ429でこれを感知し、ステップ431で前記例外ブロック処理部250を駆動する。すると、前記例外ブロック処理部250は、ステップ431で例外処理フラグをメモリに格納した後、ステップ433でレンジブロックのデータを圧縮せずにそのまま格納する。つまり、前記レンジブロックが探索範囲内のドメインブロックと同一でなく、また前記グローバルテーブル及びローカルテーブルに存在しないと、前記コーダ240は、前記例外ブロック処理部250を介して、例外処理フラグと共に圧縮されていないデータをそのまま格納する。
上記のように、前記コーダ240は、レンジブロックのデータを圧縮せずにメモリに格納することができる。例えば、前記レンジブロックを構成するショートブロックデータが、探索範囲内に存在するドメインブロックのショートブロックデータと同一でないか、または同一のショートブロックが存在しても、コストが高い場合、前記レンジブロックを例外処理ブロックとして処理する。つまり、レンジブロックとドメインブロックとの差異値が、グローバル及びローカルテーブルに存在しないと、該当レンジブロックのデータを圧縮せずにそのまま格納する。この際、前記コーダ240は、これを前記例外ブロック処理部250に通知し、該例外ブロック処理部250は、該当レンジブロックのデータを圧縮せずにメモリにそのまま格納する。ここで、前記例外ブロック処理部250は、前記コーダ240の内部に構成することもできる。
前記圧縮器は、上記のような動作を繰り返しながら、ロードされるレンジブロックのデータを圧縮した後、前記メモリに格納する。前記第2補助メモリに格納される圧縮データは、距離情報、差異情報及び例外処理ブロックなどから構成できる。よって、前記メモリに、下記[表2]のように、距離情報、差異情報及び例外処理ブロックが格納される。
上記のように、前記圧縮器は、レンジブロックの前に位置する探索範囲内に存在するドメインブロックをレンジブロックと比較して差異値を求めた後、差異値によるコストを計算し、最低コストを有するドメインブロックとの距離情報及び差異情報を用いて、レンジブロックのデータを圧縮する。前記図9で、レンジブロックと探索範囲内の三番目の[4,5]のドメインブロック間の差がゼロであるため、前記コーダ240は、前記三番目のドメインブロックまでの距離及び差異値を圧縮データとして生成する。
しかし、前記図9において、一番目の[6,7]及び五番目の[2,3]のドメインブロックのように、探索範囲内に存在する前記レンジブロックと同一のショートブロックがない場合、前記コーダ240は、前記レンジブロックを例外処理ブロックとして処理する。
また、二番目の[5,6]、四番目の[3,4]、六番目の[1,2]及び七番目の[0,1]のドメインブロックのように、前記レンジブロックのショートブロックのうちの1つのショートブロックと探索範囲内のドメインブロックのうちの1つのショートブロックとが同一の場合、前記コーダ240は、前記探索範囲内のドメインブロックとレンジブロックのコストの和を計算し、最低コストの和を有するドメインブロックと、前記レンジブロックとの間の距離及び差異情報(差異フラグ及びテーブルインデックス)を圧縮データとして決定する。このとき、前記コーダ240がグローバルテーブル及び/またはローカルテーブルを備える場合、前記コーダ240は、前記差異値を前記テーブルのインデックスとして適用し、テーブルの該当インデックスの位置に存在する情報を圧縮データとして決定する。この場合、前記レンジブロックの圧縮データは、ドメインブロックの距離及び前記テーブルの情報である。
図11は、前記図9に示されたようなデータが、前記ローダ210によってロードされ、バッファにバッファリングされた後、前記探索器220によって、レンジブロックと、最低値を有するドメインブロックのコストが計算される場合、前記コーダ240が、前記探索器220から出力される距離情報及び差異情報を用いて、各レンジブロックのデータをコードする過程を具体的に示す図である。
前記図11においてショートブロック[0,1,2,3,4,5](proc−1)は、ロード時、例外ブロックとして処理するブロックと仮定し、[6,7](proc−2)、[8,9](proc−3)、[10,11](proc−4)が、レンジブロックに選択される場合の前記探索器220及び前記コーダ240の動作過程を、具体的に検討する。
前記図11を参照すると、前記ローダ210は、前記図11の参照番号510のような圧縮フレームデータをロードして、内部バッファにバッファリングする。すると、前記コーダ240は、ステップ512で、前記参照番号510のようなデータから例外処理するブロックのデータをロードした後、ステップ514及び516で、前記ロードしたブロックデータを例外処理する。このとき、前記例外処理されるブロックは、6つのショートブロック(3つのマクロブロック)[0,1,2,3,4,5]になる。前記ステップ516で例外処理されるブロックは、図11の参照番号518のようにメモリに格納される。前記のように、ロードされる圧縮フレームデータから、設定された数のマクロブロックを例外処理することは、前述したように圧縮効率が落ちるからであり、このような場合、ロードする圧縮フレームデータの開始部分に位置する、設定された数のマクロブロックを例外処理して、復号効率を向上させることが好ましい。よって、前記メモリには、例外処理されたブロックのデータ(raw data)が格納される。
上記のように、ロードされた圧縮フレームデータの例外処理ブロックを処理した後、圧縮器は、ステップ522で、引き続くマクロブロックからレンジブロックを選択して、前記選択されたレンジブロックの前に位置するドメインブロックを探索して、距離情報及び差異情報を計算し、前記選択されたレンジブロックのデータを圧縮する。前記図11では、マクロブロックproc−2[6,7]、proc−3[8,9]、proc−4[10,11]が、レンジブロックとして選択される場合の圧縮過程を検討する。
まず、proc−2[6,7]の圧縮過程を検討すると、前記探索器220は、ステップ524で前記レンジブロック[6,7]をロードした後、探索範囲を設定する。ここで、前記探索範囲は、ブロック[0−5]になる。その後、前記探索器220は、ステップ526で正方向及び逆方向のコーディング過程を行うが、前記探索範囲内の同一のブロックがないため、グローバル及びローカルテーブルのインデックスを生成することができず、該当レンジブロックを例外処理するための差異フラグ(つまり、例外処理フラグ)(「11」)を生成する。よって、前記コーダ240は、ステップ562で、前記探索器220で生成される例外処理フラグによって前記レンジブロック[6,7]を例外処理することになる。前記例外ブロック処理時、前記コーダ240は、前記差異フラグを格納する領域に、例外処理されるブロックであることを表すフラグ(「11」)を格納し、例外ブロックのデータを圧縮せずにそのまま格納し、このとき、前記メモリに格納される例外処理ブロックのデータは、図11の参照番号564のような形態を有する。
第二に、proc−3[8,9]の圧縮過程を検討すると、前記探索器220は、ステップ524で前記レンジブロック[8,9]をロードした後、探索範囲を設定する。ここで、前記探索範囲は、ブロック[0−7]になる。その後、前記探索器220は、ステップ526で、前記探索範囲のドメインブロックを正方向及び逆方向コードする過程を行う。ドメインブロック[4,5]を探索する時、前記探索器220は、前記レンジブロック[8,9]と同一であることを感知し、前記ドメインブロック[4,5]で差異値が0であることを表す差異情報を生成する。この場合、前記探索器220は、前記レンジブロックのショートブロック[8]に対しては、差異フラグ=1、差異値=4を有する距離情報を生成し、差異フラグ=0である差異情報を生成し、ショートブロック[9]に対しては、距離フラグ=0である距離情報及び差異フラグ=0(前記ショートブロック[9]からショートブロック[5]までの距離は、ショートブロック[8]からショートブロック[4]までの距離と同一であるため)である差異情報を生成し、前記コーダ240に出力する。すると、前記コーダ240は、ステップ532及び534で、レンジブロックとドメインブロックのデータが同一であることを確認し、前記距離情報(distance flag=1 0、distance value =4)及び差異フラグ(difference flag =0,0)で構成される圧縮データを生成し、メモリに格納する。前記メモリに格納されるブロック[8,9]の圧縮データは、図11の参照番号536のように、距離情報は、10[distance flag]、4[distance value]となり、差異情報は、00[difference flag =00]となる。
第三に、proc−4[10,11]の圧縮過程を検討すると、前記探索器220は、ステップ524で、前記レンジブロック[10,11]をロードした後、探索範囲を設定する。ここで、前記探索範囲は、ブロック[0−9]になる。その後、前記探索器220は、ステップ526で、前記探索範囲のドメインブロックを正方向及び逆方向コードする過程を行う。ドメインブロック[0,1]を探索する時、前記探索器220は、前記レンジブロックの[10,11]と類似していることを感知し、これによる距離情報及び差異情報を生成する。このとき、前記レンジブロックのショートブロック[10]と、ドメインブロックのショートブロック[0]とは同一であるため、前記探索器220は、該当ショートブロック位置に差異値が0であることを表す差異情報を生成する。この場合、前記探索器220は、距離フラグ=1、距離値=10を有する距離情報を生成し、また差異フラグ=0である差異情報を生成し、前記コーダ240に出力する。また、レンジブロックのショートブロック[11]と、ドメインブロックのショートブロック[1]とは互いに異なるデータであるため、前記探索器220は2つのショートブロックの差異値[C XOR B]を計算し、前記差異値に対応するコストを計算した後、前記コストテーブルで前記コストによるテーブルインデックスを決定する。この場合、前記探索器220は、距離フラグ=0(前記ショートブロック[11]からショートブロック[1]までの距離は、ショートブロック[10]からショートブロック0までの距離と同一であるため)に生成し、差異フラグ及び前記決定されたテーブルインデックスからなる差異情報を、前記コーダ240に出力する。ここで、前記テーブルインデックスは、グローバルテーブルのインデックスと仮定する。このような場合、前記差異情報は、差異フラグ=01及びグローバルテーブルインデックス[Gtbl idx]からなる。
すると、前記コーダ240は、ステップ532及び534で、レンジブロックのショートブロック[10]と、ドメインブロックのショートブロック[0]のデータが同一であることを確認し、前記距離情報(distance flag =1、distance value =10)及び差異フラグ(difference flag =0)で構成される圧縮データを生成し、メモリに格納する。そして、前記レンジブロックのショートブロック[11]は、ドメインブロックのショートブロック[1]と同一でないため、前記コーダ240は、ステップ542及び544を行い、前記探索器220から出力されるテーブルインデックスを、参照番号544のようなテーブルから探索する。このとき、前記テーブルインデックスが、前記図11の参照番号544のようなテーブルから検索されると、前記コーダ240は、ステップ548で、前記検索されたコスト[Gtbl idx=code(C:B)]を差異値(difference value)として格納する。つまり、前記コーダ240は、レンジブロックのショートブロック[11]の圧縮データとして、距離フラグ=0である距離情報と、差異フラグ=01、差異値=[Gtbl idx =code(C:B)]である差異情報を圧縮データとして生成し、参照番号550のようにメモリに格納する。
図11の参照番号550は、圧縮フレームデータをロードした後、ショートブロック[0−11]までのデータが圧縮され、メモリに格納される形態を示している。
上述したように、本発明の実施形態においては、レンジブロックと探索範囲内のドメインブロックとの距離及び差異情報を確認し、レンジブロックを圧縮する。ここで、前記距離情報は、レンジブロックと対応するドメインブロック間の距離情報であり、距離フラグと距離値とからなる。前記距離フラグは1ビットを用いて、セット状態またはリセット状態に設定することができる。つまり、現在の圧縮対象であるレンジブロックと対応するドメインブロックとの間の距離値が、以前の圧縮対象であるレンジブロックと対応するドメインブロックとの間の距離値と同一の距離値を有する場合、距離フラグはリセットされた状態(上記表2において、「0」)に設定し、そうでない場合(つまり、距離値が異なる場合)には、前記距離フラグは、セットされた状態(上記表2において、「1」)に設定する。この場合、前記距離情報は、距離フラグがセット状態(「1」)であると、前記距離フラグ及び対応するドメインブロックとの距離値で構成され、距離フラグがリセット状態(「0」)であると、距離フラグでのみ構成され、距離値は格納しない。
そして、前記差異情報は、レンジブロックと対応するドメインブロック間の差異情報であって、差異フラグ及び差異値からなる。ここで、差異フラグは、差異値の種類によって様々な形態に設定することができる。つまり、差異値が1つの形態に生成される場合、差異フラグは1ビットを用い、セットまたはリセット状態に設定することができる。しかし、差異値が少なくとも2つの形態を有する場合、形態の数に応じて差異フラグのビット数を決めることができる。本発明の実施形態では、前述したように、第一に、レンジブロックと対応するドメインブロックとの間の差異値をそのまま用いる方法、第二に、グローバルテーブルを備え、レンジブロックとドメインブロックとの間の差異値を計算した後、差異値によるグローバルテーブルのテーブルインデックスを差異値として用いる方法、第三に、グローバルテーブル及びローカルテーブルを備え、レンジブロックとドメインブロックとの間の差異値を計算した後、差異値によるグローバルまたはローカルテーブルのテーブルインデックスを差異値として用いる方法、第四に、前記第二及び第三の方法を用いる場合に、圧縮効果が低いレンジブロックを例外処理ブロックとして処理する方法、のうちの1つを用いることができる。
前記第一の差異情報を生成する方法を検討すると、現在の圧縮対象であるレンジブロックと対応するドメインブロックとの間の距離値が、以前の圧縮対象であるレンジブロックと対応するドメインブロックとの間の距離値と同一の距離値を有する場合、差異フラグはリセットされた状態(「0」)に設定し、そうでない場合(つまり、2つのブロックが異なる場合)には、前記差異フラグはセット(「1」)に設定する。このとき、前記2つのブロックの差異値は、レンジブロックとドメインブロックを排他的論理和演算した後、その演算結果値を差異値として使用する。この場合、前記差異情報は、差異フラグがセット状態(「1」)であると、前記差異プラグ及び対応するドメインブロックとの排他的論理和の値(exclusive OR value)で構成され、差異フラグがリセット状態(「0」)であると、差異フラグのみで構成され、差異値は格納しない。
前記第二の差異情報を生成する方法を検討すると、現在の圧縮対象であるレンジブロックと対応するドメインブロックとの間の距離値が、以前の圧縮対象であるレンジブロックと対応するドメインブロックとの間の距離値と同一の距離値を有する場合、差異フラグはリセットされた状態(「0」)に設定し、そうでない場合(つまり、2つのブロックが異なる場合には)、前記差異フラグはセット(「1」)に設定する。このとき、前記2つのブロックの差異値は、レイジーブロックとドメインブロックを排他的論理和演算した後、その演算結果値を用いてコストを計算する。そして、このコストを用いて、グローバルテーブルのテーブルインデックスを決定した後、前記決定されたテーブルインデックスを差異値に設定する。この場合、前記差異情報は、差異フラグがセット状態(「1」)であると、差異フラグ及びグローバルテーブルのテーブルインデックスで構成され、差異フラグがリセット状態(「0」)であると、差異フラグでのみ構成され、差異値は格納しない。ここで、グローバルテーブルは、前記レンジブロックとドメインブロックとの間の差異値が格納され、このときの差異値は、2つのブロック間の排他的論理和の値となる。
前記第三の差異情報を生成する方法を検討すると、現在の圧縮対象であるレンジブロックと対応するドメインブロック間の距離値が、以前の圧縮対象であるレンジブロックと対応するドメインブロックとの間の距離値と同一の距離値を有する場合、差異フラグはリセットされた状態(「0」)に設定し、そうでない場合(つまり、2つのブロックが異なる場合)には、前記差異フラグはセット状態に設定する。このとき、前記2つのブロックの差異値は、レイジーブロックとドメインブロックを排他的論理和演算した後、その演算結果値を用いてコストを計算する。そして、このコストを用いて、グローバルまたはローカルテーブルのインデックスを決定した後、決定されたテーブルインデックスを差異値に設定する。ここで、グローバルテーブルは固定テーブルとなり、ローカルテーブルは可変テーブルとなる。そして、前記ローカルテーブル(可変テーブル)は、前記グローバルテーブルに存在しないのに、頻繁に発生する差異値を分析した後、圧縮過程でテーブル化して生成されるテーブルである。この場合、前記圧縮器は、レンジブロックと該当ドメインブロックとの差異値をローカルテーブルに登録し、前記ローカルテーブルのテーブルインデックスをコストテーブルに登録する。前記差異情報は、差異フラグがセット状態(「01」)であると、前記差異フラグ及びグローバルテーブルのテーブルインデックスで構成され、差異フラグがセット状態(「10」)であると、前記差異フラグ及びローカルテーブルのテーブルインデックスで構成される。そして、差異フラグがリセット状態(「0」)であると、差異フラグのみで構成され、差異値は格納しない。
前記第四の差異情報を生成する方法を検討すると、グローバルテーブルを用いて圧縮する方法、または、グローバル及びローカルテーブルを用いて圧縮する方法を用いる場合、レンジブロックとドメインブロックとの差異値が、前記テーブルに存在しないことがある。このような場合、レンジブロックのデータは圧縮しない方がより好ましい。つまり、前記のようなレンジブロックのデータを圧縮する方法は、デコーディングの時、多くの時間を要することになる。そのため、レンジブロックとドメインブロックとの差異値がグローバル及びローカルテーブルに登録されていない場合、該当レンジブロックのデータは例外ブロックとして処理して圧縮しない方法を用いる。この場合(つまり、2つのブロックの差異値が、前記グローバル及びローカルテーブルに存在しない場合)、前記差異フラグを例外処理フラグ(「11」)にセットし、差異値はレンジブロックのデータをそのまま使用する。
圧縮器は、前記のように生成される差異情報を距離情報と共に、該当レンジブロックの圧縮データにコードする。前記コードされた圧縮データは、メモリに格納するか、または通信部を介して外部に転送される。
前記のように、コードされた圧縮データをメモリからアクセスしたり、または受信して処理する場合、圧縮解除動作を行わなければならない。すなわち、前記圧縮データは、圧縮解除器によって復元され処理されることができる。このとき、データの圧縮方法は、上記のような4つの形態の差異情報を有することができる。要するに、圧縮器は、先に説明した圧縮方法のいずれか一つの圧縮方法を用いることができ、圧縮解除器は、前記圧縮方法に対応する形態で構成されなければならない。
まず、第1の方法でコードされた圧縮データの圧縮解除過程を検討すると、圧縮解除器は、圧縮データの距離情報を確認して、最小コストを有するドメインブロックを選択する。前記ドメインブロックを選択する方法は、距離情報の距離フラグを確認し、リセット状態であると、以前のレンジブロックのデータ復元時に選択されたドメインブロックの距離値(use previous distance)に位置したドメインブロックを選択し、セット状態であれば、距離情報に含まれた距離値に位置したドメインブロックを選択する。その後、前記圧縮解除器は、前記の選択されたドメインブロックのデータに、前記差異情報に応じて、レンジブロックの圧縮データを復元する。このとき、前記差異情報の差異フラグがリセット状態であると、選択されたドメインブロックのデータに復元し、セット状態であると、差異情報に含まれた差異値と選択されたドメインブロックのデータを排他的論理和し、求められるデータに復元する。
第二に、第2の方法でコードされた圧縮データの圧縮解除過程を検討すると、圧縮解除器は、頻繁に発生するレンジブロックとドメインブロックとの差異値を格納しているグローバルテーブルを備える。前記圧縮解除器は、まず、圧縮データの距離情報を確認し、最小コストを有するドメインブロックを選択する。ドメインブロックの選択方法は、前記第一の圧縮解除過程と同一の方法を用いることができる。その後、前記圧縮解除器は、前記選択されたドメインブロックのデータに、前記差異情報に応じてレンジブロックの圧縮データを復元する。このとき、前記差異情報の差異フラグがリセット状態であると、選択されたドメインブロックのデータに復元し、セット状態であると、差異情報に含まれた差異値(この場合、差異値は、グローバルテーブルのインデックスである)に該当するグローバルテーブルの情報にアクセスし、これを、選択されたドメインブロックのデータと排他的論理和し、求められるデータに復元する。このとき、前記グローバルテーブルに格納される情報は、前述したように、レンジブロックと最小コストを有する排他的論理和の値になる。
第三に、第3の方法でコードされた圧縮データの圧縮解除過程を検討すると、圧縮解除器は、頻繁に発生するレンジブロックとドメインブロックとの差異値を格納しているグローバルテーブル(固定テーブル)、及び圧縮中によく発生するレンジブロックとドメインブロックとの差異値を格納するローカルテーブル(圧縮中に生成される可変テーブル)を備える。ここで、前記圧縮解除器は、圧縮データの距離情報を確認し、最小コストを有するドメインブロックを選択する。ドメインブロックの選択方法は、前記第一の圧縮解除過程と同一の方法を用いることができる。その後、前記圧縮解除器は、前記選択されたドメインブロックのデータに、前記差異情報に応じてレンジブロックの圧縮データに復元する。このとき、前記差異情報の差異フラグがリセット状態であると、選択されたドメインブロックのデータに復元し、セット状態であると、前記差異フラグによってグローバルまたはローカルテーブルを決定し、前記差異情報に含まれた差異値(この場合、差異値はグローバルまたはローカルテーブルのインデックスである)に該当するグローバルまたはローカルテーブルの情報にアクセスし、これを選択されたドメインブロックのデータと排他的論理和し、求められるデータに復元する。このとき、前記グローバル及びローカルテーブルに格納される情報は、前述したように、レンジブロックと最小コストを有する排他的論理和の値になる。
第四に、第4の方法でコードされた圧縮データの圧縮解除過程を検討すると、圧縮解除器は頻繁に発生するレンジブロックとドメインブロックとの差異値を格納しているグローバルテーブル(固定テーブル)、及び圧縮中によく発生するレンジブロックとドメインブロックとの差異値を格納するローカルテーブル(圧縮中に生成される可変テーブル)を備える。ここで、前記圧縮解除器は、圧縮データの距離情報を確認し、最小コストを有するドメインブロックを選択する。ドメインブロックの選択方法は、前記第一の圧縮解除過程と同一の方法を用いることができる。その後、前記圧縮解除器は、前記選択されたドメインブロックのデータに、前記差異情報に応じてレンジブロックの圧縮データを復元する。このとき、前記差異情報の差異フラグがリセット状態であると、選択されたドメインブロックのデータに復元する。しかし、前記差異情報の差異フラグがセット状態であれば、前記差異フラグの種類によって対応する方法で、圧縮データに復元する。このとき、前記差異フラグが例外処理フラグであると、前記圧縮解除器は、差異情報に含まれた差異値をそのままレンジブロックのデータに復元する。つまり、前記例外処理フラグを有する差異情報の差異値は圧縮されていないデータであるため、圧縮復元時に、これをそのままレンジブロックのデータに復元する。また、差異フラグがグローバルまたはローカルテーブルのテーブルを使用したことを表すフラグであれば、前記圧縮解除器は、差異情報に含まれた差異値(この場合、差異値は、グローバルまたはローカルテーブルのインデックスである)に該当するグローバルまたはローカルテーブルの情報にアクセスし、これを、選択されたドメインブロックのデータと排他的論理和し、求められるデータに復元する。このとき、前記グローバル及びローカルテーブルに格納される情報は、前述したように、レンジブロックと最小コストを有する排他的論理和の値になる。
以下では、前記圧縮解除器がグローバルテーブル及びローカルテーブルを備え、例外処理方法を用いる場合を仮定して、説明することにする。つまり、第4の圧縮方法でコードされた圧縮データを圧縮復元する場合を中心として検討する。
図12は、前記圧縮解除器(decompressor)の構成を示す図である。
前記図12を参照すると、ローダ610は、メモリに格納された圧縮データ(compressed data)をロードし、さらに圧縮解除に必要なグローバルテーブル及びローカルテーブルをロードする。前記ロードする圧縮データは、上記[表2]に表されたように、距離情報、差異情報及び例外処理ブロックなどからなる。前記距離情報は、距離フラグ及び距離値で構成され、差異情報も差異フラグ及びテーブルインデックス値で構成される。フラグ検出器620は、前記距離値及び差異情報の各フラグを検出して、デコーダ630に伝達する。すると、前記デコーダ630は、前記距離フラグ及び距離値を分析し、レンジブロックに対応するドメインブロックの位置を決め、前記差異フラグ及びテーブルインデックス値から前記レンジブロックとドメインブロックとの差異値を決定し、これを、前記ドメインブロックと排他的論理和演算し、レンジブロックの圧縮を復元する。そして、前記フラグ検出器620で、差異フラグが11である例外フラグ(例外処理ブロックであることを表示する差異フラグ)を検出した場合、前記デコーダ630は、前記例外処理ブロック処理部640を駆動し、例外処理されたレンジブロックのデータを処理する。この場合、前記例外処理ブロック処理部640は、格納されたデータをそのまま出力する。前記図12では、前記例外処理ブロック処理部640を独立に構成した例を示しているが、前記例外処理ブロック処理部640は、前記デコーダ630に構成されることもある。また、前記のように圧縮解除されたデータは、バッファにバッファリングされることもある。
前記図12は、例外処理ブロック処理部640を含む圧縮解除器の構成を示している。しかし、圧縮器が例外処理ブロックを処理しない場合、圧縮解除器は前記例外処理ブロック部640を備えない。
図13は、前記圧縮解除器で圧縮データに復元する過程を示すフローチャートである。
前記図13を参照すると、前記メモリからロードされる圧縮データは、参照番号710のように、圧縮フレームの開始位置で設定された数のマクロブロックは、例外処理したブロックである。よって、前記デコーダ630は、ステップ791で、前記例外ブロック処理部640を駆動して、例外処理されたブロックを復元し、ステップ773で、これをバッファにバッファリングする。その後、前記デコーダ630は、前記参照番号710のような圧縮データに復元してデータを生成する。前記圧縮データを復元する方法は、まず、距離情報を分析してドメインブロックの位置を確認し、テーブルインデックス値を前記テーブルで探して、レンジブロックのデータに復元する。また、例外処理したブロックのデータは、例外処理ブロックの位置を確認した後、該当マクロブロック位置に、前記例外処理したブロックデータを挿入して復元する。
本発明の実施形態では、前記例外処理されたブロックのデータを先に復元し、その後、圧縮されたデータの距離情報及び差異情報を確認し、各レンジブロックの圧縮データに復元すると仮定して、説明する。
まず、前記デコーダ630は、ステップ753で、前記圧縮時に用いたグローバルテーブル及びローカルテーブルをロードし、前記ロードされた圧縮フレームの開始位置をロードする。その後、前記デコーダ630は、例外処理ブロックのフラグ(差異フラグ=11)であれば、ステップ755でこれを感知し、ステップ791で、例外処理したブロックのデータに復元し、ステップ773でバッファの該当レンジブロックの位置に格納する。
しかし、ステップ前記755で、差異情報の差異フラグが例外処理されたフラグでないと(差異フラグ≠11)、前記デコーダ630は、ステップ757で距離情報にアクセスし、前記アクセスされた距離情報の距離フラグがセットされた状態であるか否かを検査する。前記距離フラグがセットされた場合には、続く距離値分を移動して、ドメインブロックを選択し、距離フラグがリセットされた状態であると、以前の状態で処理されたドメインブロックとの距離値と同一の状態であるため、距離値の移動はしない。このとき、前記距離フラグがセットされた状態であると、前記デコーダ630はステップ757でこれを感知し、ステップ759で現在のレンジブロック位置を確認し、ステップ761で前記距離情報の距離値を確認した後、ステップ763で、現在のレンジブロック位置から前記距離値分移動して、比較対象であるドメインブロックを選択する。また、前記距離フラグがリセットされた状態であると、前記デコーダ630は、ステップ757でこれを感知し、ステップ767で以前の状態で復元されたレンジブロックとドメインブロックとの間の距離値を有するドメインブロックを選択する。つまり、前記デコーダ630は、距離情報を検索して、距離フラグがセットされた状態であると、現在のレンジブロック位置で距離情報に含まれた距離値分移動して、比較対象であるドメインブロックを選択し、距離フラグがリセットされた状態であると、以前の状態の距離値を維持しながら、比較対象であるドメインブロックを選択する。
上記のように、距離情報を用いて比較対象であるドメインブロックを選択した後、前記デコーダ630は、ステップ765で、差異情報を格納する領域で差異フラグをリードした後、ステップ769で差異フラグの状態を検査する。このとき、前記差異フラグがリセットされた状態(差異フラグ=0)であると、前記デコーダ630は、ステップ769でこれを感知し、ステップ771に進行し、前記選択されたドメインブロックのデータをレンジブロックのデータにコピーした後、ステップ773でバッファにバッファリングする。前記差異フラグがリセットされた状態とは、レンジブロックと、選択されたドメインブロックのデータが同一であることを意味するため、前記デコーダ630は、前記選択されたドメインブロックのデータを、前記レンジブロックのデータにコピーし、復元することになる。
しかし、前記ステップ769で、差異フラグがセットされた状態(差異フラグ=01または10)であることを感知すると、前記デコーダ630は、ステップ781で差異情報に含まれた差異値をリードする。前記差異値は、グローバルテーブルまたはローカルテーブルのテーブルインデックスとなる。従って、前記デコーダ630は、ステップ781で前記差異値をテーブルのインデックスとしてロードし、ステップ783でテーブルを探索(look up)する。前記テーブル探索は、前記差異フラグの値によって探索する。すなわち、前記デコーダ630は、前記差異フラグがグローバルテーブルのインデックスであることを表すフラグであれば(差異フラグ=01)、前記グローバルテーブルで前記テーブルインデックスに対応する差異値を選択し、ローカルテーブルのインデックスであることを表すフラグであれば(差異フラグ=10)、前記ローカルテーブルで前記テーブルインデックスに対応する差異値を選択する。
この際、前記テーブルインデックスが前記テーブルにマッチすると、前記デコーダ630はステップ785でこれを感知し、ステップ787で、前記テーブルインデックスに対応するデータをリードし、レンジブロックの圧縮を復元した後、ステップ773でバッファに格納する。しかし、前記テーブルインデックスが前記テーブルでマッチしないと、前記デコーダ630はステップ785でこれを感知し、ステップ789でエラー処理する。前記のように、差異フラグが前記テーブルインデックスを含む状態のフラグであると(つまり、前記差異情報がテーブルインデックスを含む場合)、前記デコーダ630は、差異情報に含まれたテーブルインデックスにマッチするテーブルのデータ(レンジブロックとドメインブロックとの差異値)をリードした後、これを対応するドメインブロックと比較(exclusive OR operation)し、レンジブロックのデータに復元する。
上記のような過程を繰り返しながら、距離情報及び差異情報として圧縮されたレンジブロックのデータを復元する。各レンジブロックのデータに復元する方法は、まず距離情報を確認して、現在位置のレンジブロックに参照対象であるドメインブロックを選択し、差異情報により前記選択されたドメインブロックのデータを処理し、レンジブロックのデータを復元する。
図14は、前記図11と同様の過程で圧縮されたデータを、前記圧縮解除器で復元する過程を説明するための図である。
前記図14を参照すると、前記図11と同様の過程を行いながら圧縮器が参照番号510のようなデータを圧縮すると、メモリは、図14の参照番号710のように圧縮されたデータを格納する。前記メモリに格納されるデータは、例外処理ブロック情報及び例外ブロックデータ、そして圧縮されたデータが距離情報及び差異情報に圧縮された形態を有する。前記図14では、圧縮フレームの最初の部分に例外処理ブロックのデータが格納され、続いて距離情報(distance flag、distance value)及び差異情報(difference flag、difference value)の順に格納される例を示している。
前記ローダ610は、参照番号720及び730のようなグローバルテーブル及びローカルテーブルをロードし、バッファにバッファリングする。デコーダ630は、まず、ステップ791で、圧縮時に例外処理されたブロック(ここでは、[0−5]ショートブロック)のデータをメモリからリードし、参照番号740のようにバッファにバッファリングする。その後、前記デコーダ630は、フラグ検出器620で検出されるフラグを圧縮されたデータを復元する。前記例外処理フラグ(差異フラグ=11)が検出されると、デコーダ630は、ステップ755でこれを感知し、ステップ791で例外処理ブロックの位置(ここでは、ショートブロック[6、7])を確認した後、参照番号740のように例外処理されたデータ[E、C]をバッファに格納する。
しかし、前記ステップ755で、差異フラグが例外処理フラグでないと感知すると、前記デコーダ630は、ステップ757で検出される距離フラグを検査し、距離フラグがセットされた状態であると(distance flag=1)、ステップ759で圧縮復元するブロックの位置(ここでは、ショートブロック[8])を計算し、ステップ763で距離値(distance value=4)をリードした後、ステップ763でドメインブロックの位置を計算する(8番のショートブロックから4つ前に位置する4番のショートブロック)。その後、前記デコーダ630は、ステップ769で差異フラグ(difference flag)を検査し、差異フラグ=0(difference flag=0)であることから、ステップ771で前記8番のショートブロックのデータを4番のショートブロックのデータBに復元した後、参照番号740のようにバッファに格納する。
前記デコーダ630は、さらにステップ757で次の距離フラグを検査し、距離フラグがリセット状態であると、さらにステップ767で以前の距離値(distance value=4)を用い、ステップ765でドメインブロックの位置を計算する(9番のショートブロックから4つ前に位置する5番のショートブロック)。その後、前記デコーダ630は、ステップ769で差異フラグ(difference flag)を検査し、差異フラグ=0(difference flag=0)であることから、ステップ771で前記9番のショートブロックのデータを5番のショートブロックのデータBに復元した後、参照番号740のようにバッファに格納する。
前記デコーダ630は、ステップ757で検出される距離フラグを検査し、距離フラグがセットされた状態であると(distance flag=1)、ステップ759で圧縮復元するブロックの位置(ここでは、ショートブロック10)を計算し、ステップ763で距離値(distance value=10)をリードした後、ステップ763でドメインブロックの位置を計算する(10番のショートブロックから10つ前に位置する0番のショートブロック)。その後、前記デコーダ630は、ステップ769で差異フラグ(difference flag)を検査し、差異フラグ=0(difference flag=0)であることから、ステップ771で前記10番のショートブロックのデータを0番のショートブロックのデータAに復元した後、参照番号740のようにバッファに格納する。
前記デコーダ630は、さらにステップ757で次の距離フラグを検査し、距離フラグがリセット状態であると、ステップ767で以前の距離値(distance value=10)を用い、ステップ765でドメインブロックの位置を計算する(11番のショートブロックから10つ前に位置する1番のショートブロック)。その後、前記デコーダ630は、ステップ769で差異フラグ(difference flag)を検査し、差異フラグ=01(difference flag=01)であることから、ステップ781で前記メモリで差異値(difference value)[G.tbl idx from code(C:B)]をロードする。その後、デコーダ630は、ステップ785〜787を行いながら、差異値として格納されたテーブルインデックスに該当するグローバルテーブルのデータ(C XOR B)を選択し、これを、距離情報により選択されたドメインブロックのデータ(一番のショートブロックである「B」)と排他的論理和演算(C XOR B)XOR B=C)し、圧縮データを復元した後、復元したデータ「C」を参照番号740のようにバッファに格納する。
上記したように、圧縮解除器は、圧縮器によって圧縮され、メモリに格納されたデータを本来のデータに復元する。従って、本発明の実施形態に係るメモリアクセス装置は、格納しようするデータは圧縮器により圧縮されてメモリに格納され、前記メモリに格納された圧縮データは圧縮解除器により復元されて出力される。従って、メモリを使用する装置で制御部と無関係に、データ格納モード時に圧縮器がダウンロードされるデータを圧縮してメモリに格納し、メモリに格納された圧縮データは、リードモード時に自動で復元され、メモリを効率的に使用することができるという利点がある。
図15は、本発明の実施形態に係るデータ圧縮及び復元を行う装置の構成例を示する図で、携帯端末機の構成を示している。
前記図15を参照すると、RF通信部840は、携帯端末機の無線通信機能を果たす。前記RF通信部840は、送信される信号の周波数を上昇変換及び増幅するRF送信機と、受信される信号を低雑音増幅し、周波数を下降変換するRF受信機などを含む。キー入力部870は、数字及び文字情報を入力するためのキー及び各種機能を設定するための機能キーを備える。
制御部800は、携帯端末機の全般的な動作を制御する機能を果たす。また、前記制御部800は、前記送信される信号を符号化する符号器、及び受信される符号化信号を復号する復号器で構成されるコデック(codec)と、前記符号化された信号を変造して前記RF通信部840に伝達する変造器、及び前記RF通信部840に出力される変造された信号を復調して、前記復号器に伝達する復調器で構成されるモデム(modem)とを備えるデータ処理部を含む。つまり、前記データ処理部は、モデム(modem)及びコデック(codec)で構成される。
メモリ810は、プログラムメモリとデータメモリとで構成される。前記プログラムメモリは、前記携帯端末機の動作及び機能を果たすためのプログラムを格納する。前記データメモリは、前記プログラム進行中に発生するデータを格納する。
圧縮器820は、前記制御部800の制御下に、ライトモード時に前記メモリ810に格納するデータをロードして圧縮した後、前記メモリ810の指定位置にライトする。圧縮解除器830は、前記制御部800の制御下に、リードモード時に前記メモリ810でリードされる圧縮データを復元する。ここで、前記圧縮器820及び前記圧縮解除器830は、それぞれ前記図8及び図12のような構成を有し、上述したような本発明の実施形態によりデータを圧縮及び解除することができる。
表示部860は、前記制御部800の制御下に、携帯端末機の状態及び前記携帯端末機で処理される情報を表示する。前記表示部860は、LCDを用いることができ、この場合、LCD制御部(LCD controller)、表示データを格納可能なメモリ及びLCD表示素子などを備える。また、前記LCDをタッチスクリーン(touch screen)方式で具現する場合、前記表示部860は、入力部としても動作可能である。オーディオ処理部850は、送受信されるオーディオ信号を処理する。
通信インターフェース部880は、携帯端末機と外部装置との間の通信をインターフェースする機能を果たす。前記通信インターフェース部880は、有線及び無線通信機能を果たすことができる。ここで、無線通信インターフェース部は、ブルー・トゥース(Bluetooth)、ジグビー(ZigBee)、UWBなどの近距離無線通信インターフェース装置で構成され、さらにワイブロ、ワイパイ、ワイマックスのような無線インターネット装置になる場合もある。また、無線インターフェース部は、USB、RS直列通信インターフェース装置になることもある。制御部800は、前記通信インターフェース部880を介して外部装置からデータを受信するか、または携帯端末機のデータを外部装置に転送することができる。
上記のような構成を備える携帯端末機において、制御部800は、前記メモリ810にアクセスする時、圧縮器820または圧縮解除器830を制御し、データを圧縮したりまたは圧縮されたデータを復元する。前記圧縮器820及び前記解除器830は、前記制御部800の内部に構成され、また前記メモリ810の内部に位置する。このように、前記圧縮器820及び前記圧縮解除器830を内部に備えるメモリ810は、フュージョンメモリ(fusion memory)形態で構成される。携帯端末機で処理されるデータは、コード(ファームウェアまたはソフトウェア)及びユーザデータになる。ここにおいて、前記コードは、繰り返されるデータが多いため、本発明の実施形態に係る圧縮及び圧縮解除方法を用いる場合、メモリの格納効率を大きく高めることができる。
まず、ライトモード時の動作を検討すると、前記制御部800は、前記メモリ810に格納するデータを圧縮器820にダウンロードし、圧縮器820は、前記データをロードして圧縮する。すると、前記制御部800は、前記圧縮されたデータを前記メモリ810に位置を指定してライトする。前記ライトされるデータは、前記RF通信部840を介して受信されるデータであり、かつ前記通信インターフェース部880を介して受信されるデータである。従って、前記制御部800は、前記圧縮器820及びメモリ810を制御し、受信されるデータを圧縮して格納することになる。次に、リードモード時の動作を検討すると、前記制御部800は、前記メモリ810に格納された圧縮データをリードし、圧縮解除器830は、前記リードされる圧縮データを復元して、制御部800に出力する。前記復元されるデータは、前記RF通信部840または通信インターフェース部880を介して出力されるか、または制御部800によって処理される。