(57)【要約】【課題】  ２種類の可変長符号系列で符号化されたデータが混在するデータ列を比較的簡便な構成により高速に復号化することのできる可変長符号復号化装置を提供する。【解決手段】  ハフマン符号データ列101には、第1のハフマン符号系列で符号化された文字コード又は一致長コードを示すハフマン符号と、第2のハフマン符号系列で符号化された一致位置コードを示すハフマン符号とが混在する。比較対象ビット列生成部112は、データ列101から比較対象ビット列を生成して文字＆一致長復号化部113と複数の一致位置復号化部114-0〜114-15に入力し、文字コード及び一致長を示すハフマン符号の復号化と、一致長に続いて現れる一致位置を示すハフマン符号の復号化とを並列に行わせる。選択部115は、文字＆一致長復号化部113で一致長が復号化された場合に限り、その復号化されたハフマン符号の符号長に応じて何れか1つの一致位置復号化部114-iの出力を選択する。【選択図】  図１
2007043595.tif 000002
【特許請求の範囲】
【請求項１】
第１および第２の可変長符号系列で符号化されたデータが混在する可変長符号データ列であって第２の可変長符号系列に属する可変長符号が必ず第１の可変長符号系列に属する可変長符号の直後に配列される可変長符号データ列を復号化する可変長符号復号化装置において、第１の可変長符号系列に属する可変長符号の復号化を行う第１の可変長符号復号部と、該第１の可変長符号復号部で復号化された可変長符号の直後に存在する可能性のある第２の可変長符号系列に属する可変長符号の復号化を前記第１の可変長符号復号部と並列に行う複数の第２の可変長符号復号部と、該複数の第２の可変長符号復号部の出力から有効な出力を選択する選択部とを備えたことを特徴とする可変長符号復号化装置。
【請求項２】
第１および第２の可変長符号系列で符号化されたデータが混在する可変長符号データ列であって第２の可変長符号系列に属する可変長符号が必ず第１の可変長符号系列に属する可変長符号の直後に配列される可変長符号データ列を復号化する可変長符号復号化装置において、
前記可変長符号データ列から比較対象ビット列の先頭を求める比較対象ビット列生成部と、
前記求められた比較対象ビット列の先頭から第１の所定ビット数のビット列を入力し、第１の可変長符号系列に属する可変長符号を復号した第１の復号語および第１の符号長ならびに続く可変長符号系列の種別を示す種別情報を出力する第１の可変長符号復号部と、
前記求められた比較対象ビット列の先頭に続くそれぞれ異なるビット位置から第２の所定ビット数のビット列を入力し、第２の可変長符号系列に属する可変長符号を復号した第２の復号語および第２の符号長を出力する複数の第２の可変長符号復号部と、
前記出力された種別情報が前記第２の可変長符号系列を示す場合に、前記第１の可変長符号復号部から出力される第１の符号長に基づいて前記複数の第２の可変長符号復号部の出力のうちの１つに含まれる第２の復号語を選択して出力する選択部と、
前記第１の可変長符号復号部から出力される第１の符号長および種別情報ならびに前記第２の可変長符号復号部から出力される第２の符号長とに基づいて、次の比較対象ビット列の先頭までのビットシフト量を前記比較対象ビット列生成部に通知する制御部とを備えることを特徴とする可変長符号復号化装置。
【請求項３】
前記第１の可変長符号復号部は、第１の可変長符号系列に属する可変長符号を復号した第１の復号語が所定のコードであるか否かを示す情報を前記種別情報として出力するものであることを特徴とする請求項２記載の可変長符号復号化装置。
【請求項４】
前記第１の可変長符号復号部は、前記可変長符号データにおける２種類の可変長符号系列の配列順序を示す制御データに基づいて前記種別情報を生成して出力するものであることを特徴とする請求項２記載の可変長符号復号化装置。
【請求項５】
前記第１の可変長符号系列は、既出文字列の繰り返し部分を文字長と一致位置を用いて圧縮する際の前記文字長の符号化および文字コードの符号化に使用する可変長符号系列であり、前記第２の可変長符号系列は、前記一致位置の符号化に使用する可変長符号系列であることを特徴とする請求項２乃至４の何れか１項に記載の可変長符号復号化装置。
【請求項６】
前記一致位置の符号化が可変長符号と拡張ビットを用いて行われる場合、前記制御部は前記一致位置の復号化が行われた際に前記比較対象ビット列生成部に拡張ビットの情報を通知し、前記比較対象ビット列生成部は通知された拡張ビットの情報に従って前記可変長符号データ列から拡張ビットを抽出して出力するものであることを特徴とする請求項５記載の可変長符号復号化装置。
【請求項７】
前記第１の可変長符号復号部は、前記第１の可変長符号系列に属する可変長符号に１対１に対応し、前記第１の所定ビット数のビット列に、対応する可変長符号が存在するか否かを検出する複数のパターン比較部と、前記第１の可変長符号系列に属する可変長符号に１対１に対応する復号語および種別情報を保持する複数のレジスタと、該複数のレジスタの内容を選択して出力する選択部と、前記複数のパターン比較部の検出結果に基づいて前記第１の符号長を出力すると共に前記選択部を制御する制御部とを備えることを特徴とする請求項２または３記載の可変長符号復号化装置。
【請求項８】
前記第２の可変長符号復号部は、前記第２の可変長符号系列に属する可変長符号に１対１に対応し、前記第２の所定ビット数のビット列に、対応する可変長符号が存在するか否かを検出する複数のパターン比較部と、前記第２の可変長符号系列に属する可変長符号に１対１に対応する復号語を保持する複数のレジスタと、該複数のレジスタの内容を選択して出力する選択部と、前記複数のパターン比較部の検出結果に基づいて前記第２の符号長を出力すると共に前記選択部を制御する制御部とを備えることを特徴とする請求項２または３記載の可変長符号復号化装置。
【請求項９】
請求項５または６に記載された可変長符号復号化装置と、該可変長符号復号化装置で復号された復号語のうち文字コードはそのままバッファに蓄積すると共に伸長データの一部として出力し、一致長および一致位置については前記バッファに蓄積された文字コード列から該当する部分を抽出して前記バッファに蓄積すると共に伸長データの一部として出力する復号化処理部とを備えることを特徴とするデータ伸長装置。
【請求項１０】
第１および第２の可変長符号系列で符号化されたデータが混在する可変長符号データ列であって第２の可変長符号系列に属する可変長符号が必ず第１の可変長符号系列に属する可変長符号の直後に配列される可変長符号データ列を復号化する可変長符号復号化方法において、第１の可変長符号系列に属する可変長符号を復号化する第１の復号化処理と、該第１の復号化処理により復号される可変長符号の直後に存在する可能性のある第２の可変長符号系列に属する可変長符号を復号化する複数の第２の復号化処理とを並列に行い、前記複数の第２の復号化処理の結果から有効な出力を選択することを特徴とする可変長符号復号化方法。
【請求項１１】
第１および第２の可変長符号系列で符号化されたデータが混在する可変長符号データ列であって第２の可変長符号系列に属する可変長符号が必ず第１の可変長符号系列に属する可変長符号の直後に配列される可変長符号データ列を復号化する可変長符号復号化方法において、
ａ）前記可変長符号データ列から比較対象ビット列の先頭を求めるステップ、
ｂ）前記求められた比較対象ビット列の先頭から第１の所定ビット数のビット列を入力し、第１の可変長符号系列に属する可変長符号を復号した第１の復号語および第１の符号長ならびに続く可変長符号系列の種別を示す種別情報を出力する第１の復号化処理と、前記求められた比較対象ビット列の先頭に続くそれぞれ異なるビット位置から第２の所定ビット数のビット列を入力し、第２の可変長符号系列に属する可変長符号を復号した第２の復号語および第２の符号長を出力する複数の第２の復号化処理とを並列に行うステップ、
ｃ）前記出力された種別情報が前記第２の可変長符号系列を示す場合に、前記出力される第１の符号長に基づいて前記複数の第２の復号化処理の結果のうちの１つに含まれる第２の復号語を選択して出力するステップ、
ｄ）前記第１の復号化処理の結果に含まれる第１の符号長および種別情報ならびに前記第２の復号化処理の結果に含まれる第２の符号長に基づいて、次の比較対象ビット列の先頭を決定するステップ、
を含むことを特徴とする可変長符号復号化方法。
【請求項１２】
第１および第２の可変長符号系列で符号化されたデータが混在する可変長符号データ列であって第２の可変長符号系列に属する可変長符号が必ず第１の可変長符号系列に属する可変長符号の直後に配列される可変長符号データ列を復号化するために、コンピュータに、第１の可変長符号系列に属する可変長符号を復号化する第１の復号化処理と、該第１の復号化処理により復号される可変長符号の直後に存在する可能性のある第２の可変長符号系列に属する可変長符号を復号化する複数の第２の復号化処理とを並列に行わせ、かつ、前記複数の第２の復号化処理の結果から有効な出力を選択する処理を行わせるためのプログラム。
【請求項１３】
第１および第２の可変長符号系列で符号化されたデータが混在する可変長符号データ列であって第２の可変長符号系列に属する可変長符号が必ず第１の可変長符号系列に属する可変長符号の直後に配列される可変長符号データ列を復号化するために、コンピュータに、
ａ）前記可変長符号データ列から比較対象ビット列の先頭を求めるステップ、
ｂ）前記求められた比較対象ビット列の先頭から第１の所定ビット数のビット列を入力し、第１の可変長符号系列に属する可変長符号を復号した第１の復号語および第１の符号長ならびに続く可変長符号系列の種別を示す種別情報を出力する第１の復号化処理と、前記求められた比較対象ビット列の先頭に続くそれぞれ異なるビット位置から第２の所定ビット数のビット列を入力し、第２の可変長符号系列に属する可変長符号を復号した第２の復号語および第２の符号長を出力する複数の第２の復号化処理とを並列に行うステップ、
ｃ）前記出力された種別情報が前記第２の可変長符号系列を示す場合に、前記出力される第１の符号長に基づいて前記複数の第２の復号化処理の結果のうちの１つに含まれる第２の復号語を選択して出力するステップ、
ｄ）前記第１の復号化処理の結果に含まれる第１の符号長および種別情報ならびに前記第２の復号化処理の結果に含まれる第２の符号長に基づいて、次の比較対象ビット列の先頭を決定するステップ、
を行わせるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は可変長符号を復号化する復号化方法および装置に関し、特に、２種類の可変長符号系列で符号化されたデータが混在する可変長符号データ列を復号化する可変長符号復号化方法および装置に関する。
【背景技術】
【０００２】
データ圧縮手法の一種に可変長符号を用いる手法があり、代表的な可変長符号にハフマン符号がある。ハフマン符号では、或るデータの内部に出現する情報（テキストファイルにおける文字や単語など）に符号を割り当てる際、出現率の高いものにはなるべく短い符号を、逆に出現率の低いものには長い符号を割り当てることにより、個々の情報に固定長の符号を割り当てる場合に比べて効率良くデータを圧縮することが可能である。
【０００３】
このようなハフマン符号で符号化されたデータ列を復号化する方法が従来より各種提案ないし実用化されている。
【０００４】
例えば特許文献１では、図１１に示されるように、検出したいハフマン符号を保持するハフマン符号レジスタ１０２１〜１０２ｎと、ハフマン符号の最大ビット長であるｍビットの圧縮データのうち検出したいハフマン符号のビット長だけを通過させるアンド回路１０６１〜１０６ｎおよび符号フィルタレジスタ１０５１〜１０５ｎから構成されるフィルタ回路１０３１〜１０３ｎと、フィルタ回路１０３１〜１０３ｎを通過したビット列とハフマン符号レジスタ１０２１〜１０２ｎに保持されているハフマン符号との一致を検出する一致検出回路１０４１〜１０４ｎとを、ハフマン符号の数ｎだけ並列に設け、ｎ個の一致検出回路１０４１〜１０４ｎの出力Ａ１〜Ａｎをハフマンテーブル１０１０に入力し、ハフマンテーブル１０１０に記憶されている、ｎ個のハフマン符号のそれぞれに対応するｎ個の復号データのうちから、出力Ａ１〜Ａｎの組み合わせで定まる１つの復号データを出力するようにしている。
【０００５】
また特許文献２では、図１２に示されるように、ハフマン符号データ列よりハフマン符号の先頭ビットを求める先頭決め部１１０１と、この先頭決め部１１０１の出力の先頭ビット位置からハフマン符号の最大ビット長分のビット数を入力し復号語とその符号長を出力する第１の復号テーブル１１０２と、先頭決め部１１０１の出力の互いに異なるビット位置からハフマン符号の最大ビット長分のビット数を入力し復号語とその符号長をそれぞれ出力する複数の第２の復号テーブル１１０３と、第１の復号テーブル１１０２が出力する符号長を選択信号として複数の第２の復号テーブル１１０３の出力の何れか１つの復号語と符号長を選択するセレクタ１１０４とを備え、セレクタ１１０４で選択された符号長と第１の復号テーブル１１０２から出力された符号長の和を先頭決め部１１０１に供給して新たなハフマン符号の先頭ビットを求めるようにすることにより、連続する２つのハフマン符号をまとめて復号化している。
【０００６】
ハフマン符号はそれ単独でも或る程度の圧縮効果を期待できるが、より圧縮効果を高めるために他の圧縮伸長アルゴリズムと組み合わせて使用される場合が多い。例えば、データ通信トラフィック量を削減する目的やデータ蓄積量を削減する目的のために利用される代表的な圧縮伸長アルゴリズムであるＬＺＨ、ＺＩＰ、ｇｚｉｐなどでは、所定の手法で圧縮したデータをさらにハフマン符号を用いて圧縮している。
【０００７】
具体的には、圧縮アルゴリズムでは、対象データ列の中でそれ以前と同一の文字列が繰り返し現れたら、その文字列を「一致長」を示すコードと「一致位置（オフセット）」を示すコードに置き換える。例えば、文字列「ＨＯＧＥＨＯＧＡ」の場合、２度目に現れた３文字の「ＨＯＧ」は４文字前に現れているので、３を示す一致長コードと、４文字前を示す一致位置コードとに置き換える。一致する文字列が見つからない場合は、文字コードをそのまま扱う。例えば、前記文字列の最初のＨ、Ｏ、Ｇ、Ｅはそれぞれそれらに対応する文字コードのままとされる。これが１段目の圧縮に相当する。次に、２段目の圧縮として、ハフマン符号を用いて、文字コード、一致長コード、一致位置を圧縮する。このとき、これら３種類の情報を１種類のハフマン符号系列で圧縮すると、圧縮率がかえって低下するため、文字コードと一致長コードとを１つのハフマン符号系列（第１のハフマン符号系列）で圧縮し、一致位置は別のハフマン符号系列（第２のハフマン符号系列）で圧縮する。さらに一致位置のハフマン符号化も、一部のビット部分だけをハフマン符号で圧縮し、残りのビットは拡張ビットとしてそのまま出力する。
【０００８】
他方、伸長アルゴリズムでは、まず１段目の伸長処理として、第１および第２の２種類のハフマン符号系列で符号化されたデータが混在するハフマン符号データ列の先頭から順に、１つのハフマン符号ずつ、そのハフマン符号が第１のハフマン符号系列によるものであれば文字コードあるいは一致長コードに復号化し、そのハフマン符号が第２のハフマン符号系列によるものであれば一致位置コードに復号化する。そして、２段目の伸長処理として、文字コードならそのまま出力し、一致長コードおよび一致位置コードなら、それまでに出力された文字コード列から該当する文字コード列を抽出して出力する処理を行う。
【特許文献１】特開平６−２７６１０４号公報
【特許文献２】特開平７−２４９９９４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上述のような２種類のハフマン符号系列で符号化されたデータが混在するハフマン符号データ列に対して、その先頭から順番に１つのハフマン符号ずつ復号化していくと、ハフマン符号データ列に含まれるハフマン符号の数に比例した復号時間がかかるという課題がある。
【００１０】
ハフマン符号データ列の復号化に関して図１２に示されるような高速化手法が従来より提案されているが、図１２に示される従来技術は、１種類のハフマン符号系列で符号化されたハフマン符号データ列を対象とするものであった。このため、２種類のハフマン符号系列で符号化されたデータが混在するハフマン符号データ列に適用する場合、図１２の構成に加えて更に、残り１種類のハフマン符号系列に属するハフマン符号を復号化するための回路構成が必要になり、構成が複雑化する課題がある。また、連続する２つのハフマン符号をまとめて復号化するという特許文献２に示される考えを２種類のハフマン符号系列で符号化されたデータが混在するハフマン符号データ列にそのまま適用する場合には、「同種のハフマン符号系列によるハフマン符号が連続する場合」、「第１のハフマン符号系列によるハフマン符号の直後に第２のハフマン符号系列によるハフマン符号が続く場合」、「第２のハフマン符号系列によるハフマン符号の直後に第１のハフマン符号系列によるハフマン符号が続く場合」の３通りの組み合わせに対応する必要があり、ハードウェア量および処理量がさらに大幅に増大するという課題がある。
【００１１】
本発明はこのような事情に鑑みて提案されたものであり、その目的は、２種類の可変長符号系列で符号化されたデータが混在する可変長符号データ列を比較的簡便な構成により高速に復号化することのできる可変長符号復号化方法および装置を提供することにある。
【課題を解決するための手段】
【００１２】
本発明の第１の可変長符号復号化装置は、第１および第２の可変長符号系列で符号化されたデータが混在する可変長符号データ列であって第２の可変長符号系列に属する可変長符号が必ず第１の可変長符号系列に属する可変長符号の直後に配列される可変長符号データ列を復号化する可変長符号復号化装置において、第１の可変長符号系列に属する可変長符号の復号化を行う第１の可変長符号復号部と、該第１の可変長符号復号部で復号化された可変長符号の直後に存在する可能性のある第２の可変長符号系列に属する可変長符号の復号化を前記第１の可変長符号復号部と並列に行う複数の第２の可変長符号復号部と、該複数の第２の可変長符号復号部の出力から有効な出力を選択する選択部とを備えたことを特徴とする。
【００１３】
本発明の第２の可変長符号復号化装置は、第１および第２の可変長符号系列で符号化されたデータが混在する可変長符号データ列であって第２の可変長符号系列に属する可変長符号が必ず第１の可変長符号系列に属する可変長符号の直後に配列される可変長符号データ列を復号化する可変長符号復号化装置において、前記可変長符号データ列から比較対象ビット列の先頭を求める比較対象ビット列生成部と、前記求められた比較対象ビット列の先頭から第１の所定ビット数のビット列を入力し、第１の可変長符号系列に属する可変長符号を復号した第１の復号語および第１の符号長ならびに続く可変長符号系列の種別を示す種別情報を出力する第１の可変長符号復号部と、前記求められた比較対象ビット列の先頭に続くそれぞれ異なるビット位置から第２の所定ビット数のビット列を入力し、第２の可変長符号系列に属する可変長符号を復号した第２の復号語および第２の符号長を出力する複数の第２の可変長符号復号部と、前記出力された種別情報が前記第２の可変長符号系列を示す場合に、前記第１の可変長符号復号部から出力される第１の符号長に基づいて前記複数の第２の可変長符号復号部の出力のうちの１つに含まれる第２の復号語を選択して出力する選択部と、前記第１の可変長符号復号部から出力される第１の符号長および種別情報ならびに前記第２の可変長符号復号部から出力される第２の符号長とに基づいて、次の比較対象ビット列の先頭までのビットシフト量を前記比較対象ビット列生成部に通知する制御部とを備えることを特徴とする。
【００１４】
本発明の第３の可変長符号復号化装置は、第２の可変長符号復号化装置において、前記第１の可変長符号復号部は、第１の可変長符号系列に属する可変長符号を復号した第１の復号語が所定のコードであるか否かを示す情報を前記種別情報として出力するものであることを特徴とする。
【００１５】
本発明の第４の可変長符号復号化装置は、第２の可変長符号復号化装置において、前記第１の可変長符号復号部は、前記可変長符号データにおける２種類の可変長符号系列の配列順序を示す制御データに基づいて前記種別情報を生成して出力するものであることを特徴とする。
【００１６】
本発明の第５の可変長符号復号化装置は、第２乃至第４の何れかの可変長符号復号化装置において、前記第１の可変長符号系列は、既出文字列の繰り返し部分を文字長と一致位置を用いて圧縮する際の前記文字長の符号化および文字コードの符号化に使用する可変長符号系列であり、前記第２の可変長符号系列は、前記一致位置の符号化に使用する可変長符号系列であることを特徴とする。
【００１７】
本発明の第６の可変長符号復号化装置は、第５の可変長符号復号化装置において、前記一致位置の符号化が可変長符号と拡張ビットを用いて行われる場合、前記制御部は前記一致位置の復号化が行われた際に前記比較対象ビット列生成部に拡張ビットの情報を通知し、前記比較対象ビット列生成部は通知された拡張ビットの情報に従って前記可変長符号データ列から拡張ビットを抽出して出力するものであることを特徴とする。
【００１８】
本発明の第７の可変長符号復号化装置は、第２または第３の可変長符号復号化装置において、前記第１の可変長符号復号部は、前記第１の可変長符号系列に属する可変長符号に１対１に対応し、前記第１の所定ビット数のビット列に、対応する可変長符号が存在するか否かを検出する複数のパターン比較部と、前記第１の可変長符号系列に属する可変長符号に１対１に対応する復号語および種別情報を保持する複数のレジスタと、該複数のレジスタの内容を選択して出力する選択部と、前記複数のパターン比較部の検出結果に基づいて前記第１の符号長を出力すると共に前記選択部を制御する制御部とを備えることを特徴とする。
【００１９】
本発明の第８の可変長符号復号化装置は、第２または第３の可変長符号復号化装置において、前記第２の可変長符号復号部は、前記第２の可変長符号系列に属する可変長符号に１対１に対応し、前記第２の所定ビット数のビット列に、対応する可変長符号が存在するか否かを検出する複数のパターン比較部と、前記第２の可変長符号系列に属する可変長符号に１対１に対応する復号語を保持する複数のレジスタと、該複数のレジスタの内容を選択して出力する選択部と、前記複数のパターン比較部の検出結果に基づいて前記第２の符号長を出力すると共に前記選択部を制御する制御部とを備えることを特徴とする。
【００２０】
本発明のデータ伸長装置は、第５または第６の可変長符号復号化装置と、該可変長符号復号化装置で復号された復号語のうち文字コードはそのままバッファに蓄積すると共に伸長データの一部として出力し、一致長および一致位置については前記バッファに蓄積された文字コード列から該当する部分を抽出して前記バッファに蓄積すると共に伸長データの一部として出力する復号化処理部とを備えることを特徴とする。
【００２１】
本発明の第１の可変長符号復号化方法は、第１および第２の可変長符号系列で符号化されたデータが混在する可変長符号データ列であって第２の可変長符号系列に属する可変長符号が必ず第１の可変長符号系列に属する可変長符号の直後に配列される可変長符号データ列を復号化する可変長符号復号化方法において、第１の可変長符号系列に属する可変長符号を復号化する第１の復号化処理と、該第１の復号化処理により復号される可変長符号の直後に存在する可能性のある第２の可変長符号系列に属する可変長符号を復号化する複数の第２の復号化処理とを並列に行い、前記複数の第２の復号化処理の結果から有効な出力を選択することを特徴とする。
【００２２】
本発明の第２の可変長符号復号化方法は、第１および第２の可変長符号系列で符号化されたデータが混在する可変長符号データ列であって第２の可変長符号系列に属する可変長符号が必ず第１の可変長符号系列に属する可変長符号の直後に配列される可変長符号データ列を復号化する可変長符号復号化方法において、ａ）前記可変長符号データ列から比較対象ビット列の先頭を求めるステップ、ｂ）前記求められた比較対象ビット列の先頭から第１の所定ビット数のビット列を入力し、第１の可変長符号系列に属する可変長符号を復号した第１の復号語および第１の符号長ならびに続く可変長符号系列の種別を示す種別情報を出力する第１の復号化処理と、前記求められた比較対象ビット列の先頭に続くそれぞれ異なるビット位置から第２の所定ビット数のビット列を入力し、第２の可変長符号系列に属する可変長符号を復号した第２の復号語および第２の符号長を出力する複数の第２の復号化処理とを並列に行うステップ、ｃ）前記出力された種別情報が前記第２の可変長符号系列を示す場合に、前記出力される第１の符号長に基づいて前記複数の第２の復号化処理の結果のうちの１つに含まれる第２の復号語を選択して出力するステップ、ｄ）前記第１の復号化処理の結果に含まれる第１の符号長および種別情報ならびに前記第２の復号化処理の結果に含まれる第２の符号長に基づいて、次の比較対象ビット列の先頭を決定するステップ、を含むことを特徴とする。
【００２３】
『作用』
既出文字列の繰り返し部分を文字長と一致位置を用いて圧縮し、文字長と一致位置とをそれぞれ第１および第２の可変長符号系列で符号化する場合、可変長符号データ列には、第１および第２の可変長符号系列で符号化されたデータが混在するが、第２の可変長符号系列に属する一致位置を示す可変長符号は、必ず第１の可変長符号系列に属する一致長を示す可変長符号の直後に配列されるという規則性がある。本発明はこの規則性に着目し、第１の可変長符号系列に属する可変長符号と第２の可変長符号系列に属する可変長符号とが連続する箇所をまとめて復号化する。つまり、第１の可変長符号系列に属する可変長符号の第１の可変長符号復号部による復号化と、この復号化された可変長符号の直後に存在する可能性のある第２の可変長符号系列に属する可変長符号の複数の第２の可変長符号復号部による復号化とを並列に行うことによって、可変長符号データ列の復号化を高速化する。そして、可変長符号データ列の残りの部分である第１の可変長符号系列に属する可変長符号が連続する部分は、第１の可変長符号復号部により１つの可変長符号単位で復号化する。
【発明の効果】
【００２４】
本発明によれば、２種類の可変長符号系列で符号化されたデータが混在する可変長符号データ列を比較的簡便な構成により高速に復号化することができる。
【００２５】
その理由は、第２の可変長符号系列に属する可変長符号が必ず第１の可変長符号系列に属する可変長符号の直後に配列されるという規則性に着目し、第１の可変長符号系列に属する可変長符号と第２の可変長符号系列に属する可変長符号とが連続する箇所は２つの可変長符号を同時に復号化することで高速化し、可変長符号データ列の残りの部分である第１の可変長符号系列に属する可変長符号が連続する部分は、第１の可変長符号復号部により１つの可変長符号単位で復号化することで構成を簡素化しているためである。
【発明を実施するための最良の形態】
【００２６】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【００２７】
『第１の実施の形態』
図１を参照すると、本発明の第１の実施の形態にかかるハフマン符号復号化装置１００は、ハフマン符号データ列１０１を入力し、その復号化処理を行って、復号コード１０２−１、１０２−２、拡張ビット１０２−４およびコードイネーブル信号１０２−３を含む復号信号１０２を出力する。
【００２８】
復号化対象となるハフマン符号データ列１０１は、ＬＺＨ、ＺＩＰ、ｇｚｉｐなどの圧縮伸長アルゴリズムによって圧縮されたデータ列であり、図２の模式図に示されるように２種類のハフマン符号系列で符号化されたデータが混在している。
【００２９】
図２において、ＨｕｉとＨｕｊは第１のハフマン符号系列に属するハフマン符号であり、その最大ビット長は１６ビットである。この第１のハフマン符号系列は、文字コードと一致長コードを圧縮するために使用され、Ｈｕ０からＨｕ２５５までの合計２５６種類は文字コードを圧縮したハフマン符号、Ｈｕ２５６からＨｕ５０９までの合計２５４種類は一致長コードを圧縮したハフマン符号である。これらの対応関係と復号コードの例を図３に示す。
【００３０】
図３を参照すると、０ｘ００から０ｘＦＦまでの合計２５６種類の文字コードは、それぞれＨｕ０〜Ｈｕ２５５までの合計２５６種類のハフマン符号により圧縮され、一致長３から一致長２５６までの合計２５４種類の一致長コードは、それぞれＨｕ２５６からＨｕ５０９までの合計２５４種類のハフマン符号により圧縮される。逆に復号時には、Ｈｕ０からＨｕ５０９までの合計５１０種類のハフマン符号は、フラグ１ビット＋コード８ビットの合計９ビットのビット列に変換される。ここで、最上位ビットの１ビットのフラグは文字コードの場合は０、一致長コードの場合は１になる。
【００３１】
また図２において、ｈｕｋは第２のハフマン符号系列に属するハフマン符号であり、その最大ビット長は１５ビットである。この第２のハフマン符号系列は、一致位置コードを圧縮するために使用され、合計１６種類存在する。これらの対応関係と復号コードの例を図４に示す。
【００３２】
図４を参照すると、一致位置０と一致位置１の２種類の一致位置コードは、それぞれｈｕ０とｈｕ１の２種類のハフマン符号により圧縮される。また、一致位置２〜３の一致位置コードは、共に同じハフマン符号ｈｕ２に圧縮され、それらを区別するためにハフマン符号ｈｕ２の直後に１ビットの拡張ビットが付加される。この１ビットの拡張ビットは、一致位置が２のときは０、３のときは１になる。以下同様に、一致位置４〜７、一致位置８〜１５、…、一致位置１６３８４〜３２７６７の一致位置コードは、ハフマン符号ｈｕ３、ｈｕ４、…、ｈｕ１５に圧縮され、その直後に２ビット、３ビット、…、１４ビットの拡張ビットが付加される。図２のハフマン符号データ列１０１におけるハフマン符号ｈｕｋの直後は、直ちに別のハフマン符号Ｈｕｉの先頭ビットになっているが、それはｈｕｋがｈｕ０、ｈｕ１の場合であり、ｈｕ２〜ｈｕ１５の場合にはｈｕｋの直後に２〜１４ビットの拡張ビットが存在することになる。逆に復号時には、ｈｕ０からｈｕ１５までの合計１６種類のハフマン符号は、４ビットのコードに変換される。また、ハフマン符号ｈｕ２の場合にはその直後に存在する１ビットの拡張ビットがそのまま出力され、結果として合計５ビットに変換される。同様に、ハフマン符号ｈｕ３〜ｈｕ１５の場合にはその直後の２ビット、３ビット、…、１４ビットの拡張ビットがそのまま出力され、結果として合計６ビット、７ビット、１８ビットに変換される。
【００３３】
再び図１を参照すると、本実施の形態にかかるハフマン符号復号化装置１００は、データバッファリング部１１１と、比較対象ビット列生成部１１２と、文字＆一致長復号化部１１３と、合計１６個の一致位置復号化部１１４−０〜１１４−１５から構成される一致位置復号化部群１１４と、選択部１１５と、選択制御部１１６と、ビットシフト量制御部１１７とを含んで構成される。
【００３４】
データバッファリング部１１１は、後段へ送信する比較対象ビット列を調整するためにハフマン符号データ列１０１を溜め込む機能を有する。
【００３５】
比較対象ビット列生成部１１２は、データバッファリング部１１１に蓄積されたハフマン符号データ列１０１から比較対象ビット列の先頭を求め、比較対象ビット列を後段に送信する機能を有する。また、ビットシフト量制御部１１７からビットシフト量１２１を受信すると、このビットシフト量だけ現在の比較対象ビット列の先頭をシフトすることにより、次に抽出する比較対象ビット列の頭出しを行う機能を有する。また、ビットシフト量制御部１１７からビットシフト量１２１と同時に拡張ビット数１２２を受信した場合には、ビットシフト量１２１によって頭出しを行った位置から拡張ビット数１２２に相当するビットを拡張ビット１０２−４として復号信号１０２に出力し、現在の比較対象ビット列の先頭をこの拡張ビット数１２２分だけ更にシフトする機能を有する。
【００３６】
文字＆一致長復号化部１１３は、比較対象ビット列生成部１１２で求められた比較対象ビット列の先頭から第１のハフマン符号系列の最大ビット数である１６ビット数のビット列を入力し、第１の可変長符号系列に属するハフマン符号の復号化を行い、文字または一致長を示す復号コード１０２−１、復号したハフマン符号のビット長（符号長）１３１および復号コード１０２−１の種別を示す一致フラグ１３２（復号コード１０２−１が一致長コードであれば１、文字コードであれば０）を出力する機能を有する。
【００３７】
複数の一致位置復号化部１１４−０〜１１４−１５は、比較対象ビット列生成部１１２で求められた比較対象ビット列の先頭を１ビット目とすると、その２ビット目〜１７ビット目より、第２のハフマン符号系列の最大ビット数である１５ビット数のビット列を入力し、第２の可変長符号系列に属するハフマン符号の復号化を行い、一致位置を示す復号コード１４１−０〜１４１−１５および復号したハフマン符号のビット長（符号長）１４２−０〜１４２−１５を出力する機能を有する。ここで、一致位置復号化部１１４−０〜１１４−１５の個数が１６個あり、それぞれ比較対象ビット列の２ビット目〜１７ビット目よりのビット列を入力するようにしている理由は、文字コードあるいは一致長コードを示すハフマン符号の長さが最大１６ビットであるため、後続の一致位置を示すハフマン符号の先頭ビットが存在する可能性のある位置は１ビットずつシフトして１６通りあるためである。
【００３８】
選択制御部１１６は、文字＆一致長復号化部１１３から、復号化されたハフマン符号の符号長を示すビット長１３１と復号化されたハフマン符号が一致長コードであったか否かを示す一致フラグ１３２とを入力し、一致フラグ１３２が一致長コードを示す１であれば、ビット長１３１に応じた選択信号１５１を選択部１１５に出力し、一致フラグ１３２が文字コードを示す０であれば、選択信号１５１は出力しない。選択信号１５１は、ビット長１３１が１であれば一致位置復号化部１１４−０を、ビット長１３１が２であれば一致位置復号化部１１４−１を、…、ビット長１３１が１６であれば一致位置復号化部１１４−１５をそれぞれ選択するよう指示する。
【００３９】
選択部１１５は、選択制御部１１６から選択信号１５１が出力されると、複数の一致位置復号化回路１１４−０〜１１４−１５のうち、選択信号１５１で指示された１つの一致位置復号化回路１１４−ｉから出力されている一致位置を示す復号コード１４１−ｉを選択し、復号コード１０２−２として出力する。
【００４０】
ビットシフト量制御部１１７は、文字＆一致長復号化部１１３から、復号化されたハフマン符号の符号長を示すビット長１３１と復号化されたハフマン符号が一致長コードであったか否かを示す一致フラグ１３２とを入力し、また、複数の一致位置復号化部１１４−０〜１１４−１５から復号化されたハフマン符号の符号長を示すビット長１４２−０〜１４２−１５を入力し、さらに選択部１１５から復号コード（一致位置）１０２−２を入力し、ビットシフト量１２１および拡張ビット数１２２を比較対象ビット列生成部１１２に出力すると共に、復号コード１０２−１、１０２−２および拡張ビット１０２−４の有効性を示すコードイネーブル信号１０２−３を出力する。具体的には、一致フラグ１３２が０、つまり文字＆一致長復号化部１１３で復号化されたハフマン符号が文字コードの場合は、文字＆一致長復号化部１１３から出力されたビット長１３１と等しいビットシフト量１２１を出力し、拡張ビット数１２２は０とし、コードイネーブル信号１０２−３では、復号コード（文字＆一致長）１０２−１を有効、復号コード（一致位置）１０２−２および拡張ビット１０２−４を無効とする。また、一致フラグ１３２が１、つまり文字＆一致長復号化部１１３で復号化されたハフマン符号が一致長コードの場合は、文字＆一致長復号化部１１３から出力されたビット長１３１と選択部１１５によって選択された一致位置復号化部１１４−ｉから出力されたビット長１４２−ｉとの和に等しいビットシフト量１２１を出力し、拡張ビット数１２２は、選択部１１５で選択された復号コード（一致位置）１０２−２が００００または０００１ならば０、００１０ならば１、００１１ならば２、…、１１１１ならば１４とし（図４参照）、コードイネーブル信号１０２−３は復号コード（文字＆一致長）１０２−１、復号コード（一致位置）１０２−２および拡張ビット１０２−４の全てを有効とする。
【００４１】
次に本実施の形態にかかるハフマン符号復号化装置１００の動作を説明する。
【００４２】
ハフマン符号復号化装置１００は、ハフマン符号データ列１０１が発生すると、それを入力してデータバッファリング部１１１に順次蓄積する。次に、比較対象ビット列生成部１１２により、ハフマン符号データ列１０１の先頭ビットを比較対象ビット列の先頭に位置決めし、比較対象ビット列の先頭から１６ビット分を文字＆一致長復号化部１１３へ、２ビット目からの１５ビット分を一致位置復号化部１１４−０へ、３ビット目から１５ビット分を一致位置復号化部１１４−１へ、…、１７ビット目からの１５ビット分を一致位置復号化部１１４−１５へ、それぞれ供給する。
【００４３】
文字＆一致長復号化部１１３は、第１のハフマン符号系列に基づいてハフマン符号の復号化を行い、文字コード或いは一致長コードを示す復号コード１０２−１と、復号化したハフマン符号のビット長１３１と、一致長コードか否かを示す一致フラグ１３２とを出力する。他方、この文字＆一致長復号化部１１３の復号化処理と並行して複数の一致位置復号化部１１４−０〜１１４−１５において、第２のハフマン符号系列に基づくハフマン符号の復号化処理が実施されており、ハフマン符号の復号化に成功した一致位置復号化部１１４−０〜１１４−１５は、一致位置を示す復号コード１４１−０〜１４１−１５と、復号化したハフマン符号のビット長１４２−０〜１４２−１５とを出力する。
【００４４】
文字＆一致長復号化部１１３から出力された一致フラグ１３２が文字コードを示す０の場合、選択制御部１１６は、選択部１１５による復号コード１４１−０〜１４１−１５の選択は行わず、ビットシフト量制御部１１７は、ビット長１３１に等しいビットシフト量１２１を比較対象ビット列生成部１１２に出力し、また復号コード１０２−１のみが有効であることを示すコードイネーブル信号１０２−３を出力する。比較対象ビット列生成部１１２は、現在の比較対象ビット列の先頭からビットシフト量１２１だけずらした位置を新たな比較対象ビット列の先頭に位置決めし、前述と同様の処理を繰り返す。
【００４５】
他方、文字＆一致長復号化部１１３から出力された一致フラグ１３２が一致長コードを示す１の場合、選択制御部１１６は、ビット長１３１に基づいて選択部１１５による復号コード１４１−０〜１４１−１５の何れか１つを選択し、ビットシフト量制御部１１７は、この選択された復号コード１４１−ｉと組になるビット長１４２−ｉとビット長１３１との和に等しいビットシフト量１２１と、復号コード（一致位置）１０２−２の種類に応じて一意に定まる拡張ビット数１２２とを比較対象ビット列生成部１１２に出力し、また復号コード１０２−１、１０２−２および拡張ビット１０２−４が有効であることを示すコードイネーブル信号１０２−３を出力する。比較対象ビット列生成部１１２は、現在の比較対象ビット列の先頭からビットシフト量１２１だけずらした位置を新たな比較対象ビット列の先頭に位置決めし、またこの比較対象ビット列の先頭からビットシフト量１２１だけ後方に存在する「拡張ビット数１２２」個分のビットを拡張ビット１０２−４として出力しながら、新たな比較対象ビット列の先頭の位置決めを行う。そして、決定した新たな比較対象ビット列について前述と同様の処理を繰り返す。
【００４６】
次に本実施の形態の効果を説明する。
【００４７】
本実施の形態にかかるハフマン符号復号化装置１００によれば、２種類のハフマン符号系列で符号化されたデータが混在するハフマン符号データ列１０１を比較的簡便な構成で高速に復号化することができる。その理由は、図２に示されるＨｕｊとｈｕｋとの連続部分のように第１のハフマン符号系列による一致長コードを示すハフマン符号と第２のハフマン符号系列による一致位置を示すハフマン符号が連続する部分を、文字＆一致長復号化部１１３および一致位置復号化部群１１４によって並列に処理することで高速化し、ハフマン符号データ列１０１の残りの部分である第１のハフマン符号系列に属するハフマン符号が連続する部分は、文字＆一致長復号化部１１３により１つのハフマン符号単位で復号化することで構成を簡素化しているためである。
【００４８】
次に本実施の形態にかかるハフマン符号復号化装置１００の文字＆一致長復号化部１１３の好適な実施例を説明する。
【００４９】
図５を参照すると、本実施例の文字＆一致長復号化部１１３は、第１のハフマン符号系列に属するハフマン符号の数だけ設けられたパターン比較部２０１−０〜２０１−５０９と、制御部２０２と、選択部２０３と、パターン比較部２０１−０〜２０１−５０９に１対１に対応する一致フラグレジスタ２２１−０〜２２１−５０９および文字＆一致長コードレジスタ２２２−０〜２２２−５０９とを含んで構成される。
【００５０】
パターン比較部２０１−０〜２０１−５０９は、ハフマン符号レジスタ２１１−０〜２１１−５０９と、比較対象ビット列レジスタ２１２−０〜２１２−５０９と、両者のレジスタに記憶されたビット列の一致を検出する比較部２１３−０〜２１３−５０９とで構成される。全ての比較対象ビット列レジスタ２１２−０〜２１２−５０９には、図１の比較対象ビット列生成部１１２から供給される１６ビットの比較対象ビット列がセットされる。ハフマン符号レジスタ２１１−０〜２１１−５０９には、パターン比較部２０１−０にあってはハフマン符号Ｈｕ０、パターン比較部２０１−１にあってはハフマン符号Ｈｕ１、…、パターン比較部２０１−５０９にあってはハフマン符号Ｈｕ５０９がそれぞれ事前に設定される。このとき、１６ビットに満たないハフマン符号の場合にはマスクビットが付加され、全体として比較対象ビット列と同じ１６ビットとされる。マスクビットは０或いは１の何れでも良いことを意味するビットである。比較部２１３−０〜２１３−５０９は、比較対象ビット列レジスタ２１２−０〜２１２−５０９に新たな比較対象ビット列が入力される毎に、比較対象ビット列レジスタ２１２−０〜２１２−５０９の内容とハフマン符号レジスタ２１１−０〜２１１−５０９の内容とを比較し、一致した場合には、その旨と一致したハフマン符号の符号長とを制御部２０２に出力する。ハフマン符号の符号長は１６ビットからマスクビット数を減算したビット数に等しい。
【００５１】
制御部２０２は、パターン比較部２０１−０〜２０１−５０９のうち比較一致を出力したパターン比較部２０１−ｉに基づいて選択部２０３に一致フラグレジスタ２２１−ｉおよび文字＆一致長コードレジスタ２２２−ｉを選択するよう指示すると同時に、パターン比較部２０１−ｉから出力されたハフマン符号の符号長をビット長１３１として出力する。
【００５２】
文字＆一致長コードレジスタ２２２−０〜２２２−５０９のうち、文字＆一致長コードレジスタ２２２−０〜２２２−２５５には、図３で説明したようなハフマン符号Ｈｕ０〜Ｈｕ２５５に対応する８ビットのコードが事前に設定され、文字＆一致長コードレジスタ２２２−２５６〜２２２−５０９には、図３で説明したようなハフマン符号Ｈｕ２５６〜Ｈｕ５０９に対応する８ビットのコードが事前に設定されている。また、一致フラグレジスタ２２１−０〜２２１−５０９のうち、一致フラグレジスタ２２１−０〜２２１−２５５には値０が設定され、一致フラグレジスタ２２１−２５６〜２２１−５０９には値１が設定される。
【００５３】
選択部２０３は、制御部２０２から一致フラグレジスタ２２１−ｉおよび文字＆一致長コードレジスタ２２２−ｉを選択するよう指示されると、一致フラグレジスタ２２１−ｉに設定された値０または値１を一致フラグ１３２として選択して出力すると同時に、文字＆一致長コードレジスタ２２２−ｉに設定された８ビットのコードと前記１ビットの一致フラグ１３２とを連結した９ビットを復号コード１０２−１として出力する。
【００５４】
次に本実施の形態にかかるハフマン符号復号化装置１００の一致位置復号化部１１４−０〜１１４−１５の好適な実施例を説明する。
【００５５】
図６を参照すると、本実施例の一致位置復号化部１１４−ｊは、第２のハフマン符号系列に属するハフマン符号の数だけ設けられたパターン比較部３０１−０〜３０１−１５と、制御部３０２と、選択部３０３と、パターン比較部３０１−０〜３０１−１５に１対１に対応する一致位置コードレジスタ３２１−０〜３２１−１５とを含んで構成される。
【００５６】
パターン比較部３０１−０〜３０１−１５は、ハフマン符号レジスタ３１１−０〜３１１−１５と、比較対象ビット列レジスタ３１２−０〜３１２−１５と、両者のレジスタに記憶されたビット列の一致を検出する比較部３１３−０〜３１３−１５とで構成される。全ての比較対象ビット列レジスタ３１２−０〜３１２−１５には、図１の比較対象ビット列生成部１１２から供給される１５ビットの比較対象ビット列がセットされる。ハフマン符号レジスタ３１１−０〜３１１−１５には、パターン比較部３０１−０にあってはハフマン符号ｈｕ０、パターン比較部３０１−１にあってはハフマン符号ｈｕ１、…、パターン比較部２０１−１５にあってはハフマン符号ｈｕ１５がそれぞれ事前に設定される。このとき、１５ビットに満たないハフマン符号の場合にはマスクビットが付加され、全体として比較対象ビット列と同じ１５ビットとされる。マスクビットは０或いは１の何れでも良いことを意味するビットである。比較部３１３−０〜３１３−１５は、比較対象ビット列レジスタ３１２−０〜３１２−１５に新たな比較対象ビット列が入力される毎に、比較対象ビット列レジスタ３１２−０〜３１２−１５の内容とハフマン符号レジスタ３１１−０〜３１１−１５の内容とを比較し、一致した場合には、その旨と一致したハフマン符号の符号長とを制御部３０２に出力する。ハフマン符号の符号長は１５ビットからマスクビット数を減算したビット数に等しい。
【００５７】
制御部３０２は、パターン比較部３０１−０〜３０１−１５のうち比較一致を出力したパターン比較部３０１−ｋに基づいて選択部３０３に一致位置コード３２１−ｋを選択するよう指示すると同時に、パターン比較部３０１−ｋから出力されたハフマン符号の符号長をビット長１４２−ｊとして出力する。
【００５８】
一致位置コードレジスタ３２１−０〜３２１−１５には、図４で説明したようなハフマン符号ｈｕ０〜ｈｕ１５に対応する４ビットのコードが事前に設定されている。
【００５９】
選択部３０３は、制御部３０２から一致位置コードレジスタ３２１−ｋを選択するよう指示されると、一致位置コードレジスタ３２１−ｋに設定された４ビットのコードを復号コード１４１−ｊとして出力する。
【００６０】
次に本実施の形態にかかるハフマン符号復号化装置１００を使用したデータ伸長装置の実施例を説明する。
【００６１】
図７を参照すると、本実施例にかかるデータ伸長装置４００は、圧縮データ４０１を入力し、その伸長処理を行って、伸長データ４０２を出力する装置であり、ファイルヘッダ解析部４１１、ハフマン復号化用テーブル生成部４１２、文字＆一致長用の復号化テーブル４１３、一致位置用の復号化テーブル４１４、ハフマン復号化処理部４１５、辞書復号化処理部４１６および出力処理部４１７から構成されている。
【００６２】
圧縮データ４０１は、ＬＺＨなどの圧縮伸長アルゴリズムによって圧縮され生成されたデータであり、そのフォーマット例を図８に示す。図８を参照すると、lzhファイル５００は、個別ファイル毎のファイルヘッダ５０１と圧縮データ５０２の組の集合で構成される。ファイルヘッダ５０１には同じ組の圧縮データ５０２のサイズなどの情報が格納される。圧縮データ５０２は、更に、ブロックヘッダ５１１とブロック圧縮データ５１２の組の集合で構成される。ブロックヘッダ５１１には、ブロックサイズ５２１と、ブロック圧縮データ５１２で使用されている２種類のハフマン符号系列を復号化するための２種類の復号化テーブル情報（その１つは文字＆一致長用、もう１つは一致位置用である）５２２、５２３とが含まれ、ブロック圧縮データ５１２には、ＬＺＨによる圧縮アルゴリズムで圧縮したデータが格納されている。このブロック圧縮データ５１２には、文字コードあるいは一致長コードを示す第１のハフマン符号系列によるハフマン符号と、一致位置を示す第２のハフマン符号系列によるハフマン符号とが混在している。
【００６３】
ファイルヘッダ解析部４１１は、入力された圧縮データ４０１のファイルヘッダ５０１を解析して圧縮ファイルの切れ目を識別し、ブロックヘッダ５１１とブロック圧縮データ５１２の組を１つ以上含む圧縮データ５０２を後段へ出力する。ハフマン復号化用テーブル生成部４１２は、ブロックヘッダ５１１を解析してブロックの切れ目を識別し、各ブロック圧縮データ５１２に含まれるハフマン符号を復号化するための文字＆一致長用の復号化テーブル４１３と一致位置用の復号化テーブル４１４とをブロックヘッダ５１１中の復号化テーブル情報５２２と５２３とに基づいて生成する。
【００６４】
具体的には、文字＆一致長用の復号化テーブル情報５２２には、図３で説明したような５１０種類のハフマン符号Ｈｕ０〜Ｈｕ５０９と９ビットのビット列（１ビットのフラグと８ビットのコード）との対応情報が設定されているため、ハフマン復号化用テーブル生成部４１２は、図５で説明した文字＆一致長復号化部１１３のハフマン符号レジスタ２１１−０〜２１１−５０９にハフマン符号Ｈｕ０〜Ｈｕ５０９を、また一致フラグレジスタ２２１−０〜２２１−５０９および文字＆一致長コードレジスタ２２２−０〜２２２−５０９に、ハフマン符号Ｈｕ０〜Ｈｕ５０９に対応する１ビットのフラグと８ビットのコードをそれぞれ書き込む。また、一致位置用の復号化テーブル情報５２３には、図４で説明したような１６種類のハフマン符号ｈｕ０〜ｈｕ１５と４ビットのコードとの対応情報が設定されているため、ハフマン復号化用テーブル生成部４１２は、図６で説明した各一致位置復号化部１１４−ｊのハフマン符号レジスタ３１１−０〜３１１−１５にハフマン符号ｈｕ０〜ｈｕ１５を、また一致位置コードレジスタ３２１−０〜３２１−１５に、ハフマン符号ｈｕ０〜ｈｕ１５に対応する４ビットのコードをそれぞれ書き込む。その後、ハフマン符号用テーブル生成部４１２は、ブロック圧縮データ５１２をハフマン復号化処理ブロック４１５へ供給する。
【００６５】
ハフマン復号化処理部４１５は、図１で説明したハフマン符号復号化装置１００で構成されており、前述した処理によって生成された文字＆一致長用の復号化テーブル４１３と一致位置用の復号化テーブル４１４とを用いて、ブロック圧縮データ５１２に含まれる２種類のハフマン符号系列によるハフマン符号の復号化を行い、文字コード、一致長コードおよび一致位置コードで構成される復号情報（図８の５３１）を生成し、辞書復号化処理部４１６へ出力する。
【００６６】
辞書復号化処理部４１６は、文字コードの復号データはそのままバッファ（図示せず）に蓄積すると共に出力処理部４１７を通じて伸長データ４０２の一部として出力し、一致長および一致位置の復号データについてはバッファに蓄積されたこれまでの文字コードの中から一致文字列を抽出してバッファに蓄積すると共に出力処理部４１７を通じて伸長データ４０２の一部として出力する。このようにして出力された文字コードの集合が最終的に解凍された文字列である伸長データ（図７の４０２）となる。
【００６７】
『第２の実施の形態』
前述した第１の実施の形態にかかるハフマン符号復号化装置１００では、文字＆一致長復号化部１１３におけるハフマン符号の復号化時に、復号化したハフマン符号が文字コードおよび一致長コードの何れであるかを判別してその種別を示す一致フラグ１３２を生成し、この一致フラグ１３２を直後に続くハフマン符号系列の種別を示す種別情報として利用して一致位置復号化部群１１４による復号化の有効、無効を制御した。これに対して本実施の形態は、入力のハフマン符号データ列１０１に存在する２種類のハフマン符号系列の配列順序を示す制御データをハフマン符号データ列１０１とは別に圧縮側から伸長側に送信し、伸長側のハフマン符号復号化装置では、この制御データを利用して一致位置復号化部群１１４による復号化の有効、無効を制御する。
【００６８】
図９を参照すると、本発明の第２の実施の形態にかかるハフマン符号復号化装置６００は、文字＆一致長復号化部１１３が、復号化部１１３Ａとコード種別選別部１１３Ｂとで構成されている点で、図１に示される第１の実施の形態と相違する。
【００６９】
図１０を参照すると、復号化部１１３Ａは、図５に示される文字＆一致長復号化部１１３から一致フラグ１３２を出力する機能を省略したものであり、一致フラグレジスタ２２１−０〜２２１−５０９が存在せず、文字＆一致長コードレジスタ２２２−０〜２２２−５０９には図３のフラグと８ビットのコードとの合計９ビットが記憶される。
【００７０】
コード種別選別部１１３Ｂは、ハフマン符号データ列１０１に現れる第１および第２のハフマン符号系列の配列順序を示す制御データ６０１を入力し、復号化部１１３Ａのハフマン符号の復号化処理に同期して、復号化部１１３Ａで復号化されたハフマン符号の直後に第２のハフマン符号系列によるハフマン符号が存在する場合には値１、そうでない場合には値０となる一致フラグ６０２を生成する。具体的には、ビットシフト量制御部１１７からビットシフト量１２１を入力することで復号化部１１３Ａによる復号化処理の進捗状況を把握し、復号化部１１３Ａが復号化したハフマン符号の直後のハフマン符号の種別を示す一致フラグ６０２を出力する。この出力される一致フラグ６０２は、第１の実施の形態における一致フラグ１３２と同じ目的で使用するために、選択制御部１１６およびビットシフト量制御部１１７に出力される。
【００７１】
その他の構成と動作は第１の実施の形態と同じである。
【００７２】
なお、本実施の形態では、入力のハフマン符号データ列１０１に存在する２種類のハフマン符号系列の配列順序を示す制御データ６０１をハフマン符号データ列１０１とは別に圧縮側から伸長側に送信するようにしたが、入力のハフマン符号データ列１０１に存在する２種類のハフマン符号系列の配列順序が予め定義されているアルゴリズムの場合、その定義された配列順序を示す制御データをコード種別選別部１１３Ｂ内に予め保持させておくようにしても良い。
【００７３】
以上、本発明の実施の形態について説明したが、本発明は以上の実施の形態にのみ限定されず、その他各種の付加変更が可能である。また、本発明の可変長符号復号化装置は、その有する機能をハードウェア的に実現することは勿論、コンピュータとプログラムとで実現することができる。プログラムは、磁気ディスクや半導体メモリ等のコンピュータ可読記録媒体に記録されて提供され、コンピュータの立ち上げ時などにコンピュータに読み取られ、そのコンピュータの動作を制御することにより、そのコンピュータを前述した各実施の形態における可変長符号復号化装置として機能させ、またそのコンピュータに前述した各実施の形態における可変長符号復号化方法を実行させる。
【図面の簡単な説明】
【００７４】
【図１】本発明の第１の実施の形態にかかるハフマン符号復号化装置のブロック図である。
【図２】復号化対象となるハフマン符号データ列を示す模式図である。
【図３】第１のハフマン符号系列に属するハフマン符号の説明図である。
【図４】第２のハフマン符号系列に属するハフマン符号の説明図である。
【図５】本発明の第１の実施の形態にかかるハフマン符号復号化装置における文字＆一致長復号化部の実施例のブロック図である。
【図６】本発明の第１の実施の形態にかかるハフマン符号復号化装置における一致位置復号化部の実施例のブロック図である。
【図７】本発明を適用したデータ伸長装置の実施例のブロック図である。
【図８】ＬＺＨなどの圧縮伸長アルゴリズムによって圧縮され生成されたデータのフォーマット例を示す図である。
【図９】本発明の第２の実施の形態にかかるハフマン符号復号化装置のブロック図である。
【図１０】本発明の第２の実施の形態にかかるハフマン符号復号化装置における復号化部のブロック図である。
【図１１】従来のハフマン符号復号化装置の一例を示すブロック図である。
【図１２】従来のハフマン符号復号化装置の別の例を示すブロック図である。
【符号の説明】
【００７５】
１００…ハフマン符号復号化装置
１０１…ハフマン符号データ列
１０２…復号信号
１０２−１…復号コード（文字＆一致長）
１０２−２…復号コード（一致位置）
１０２−３…コードイネーブル信号
１０２−４…拡張ビット
１１１…データバッファリング部
１１２…比較対象ビット列生成部
１１３…文字＆一致長復号化部
１１４…一致位置復号化部群
１１４−０〜１１４−１５…一致位置復号化部
１１５…選択部
１１６…選択制御部
１１７…ビットシフト量制御部
【図１】
2007043595.tif 000003
【図２】
2007043595.tif 000004
【図３】
2007043595.tif 000005
【図４】
2007043595.tif 000006
【図５】
2007043595.tif 000007
【図６】
2007043595.tif 000008
【図７】
2007043595.tif 000009
【図８】
2007043595.tif 000010
【図９】
2007043595.tif 000011
【図１０】
2007043595.tif 000012
【図１１】
2007043595.tif 000013
【図１２】
2007043595.tif 000014