(57)【要約】【課題】  符号語を高速に特定する。【解決手段】  テーブル拡張器１００は標準テーブルから補助テーブル部１０２の補助テーブルと拡張テーブル部１０１の拡張テーブルを生成し、拡張アドレス生成部１０４は復号レジスタ１０３に保持されているは符号ビット列の最上位の特定ビットの位置を示す位置情報を検出し、補助テーブルから参照ビット数と基準位置を入手し、拡張テーブルのアドレスを生成する。拡張テーブル部１０１はアドレスに基づき符号語長、付加ビット数、ランレングスを出力する。【選択図】        図１
2006295631.tif 000002
【特許請求の範囲】
【請求項１】
可変長の符号語を定義した標準テーブルを入力し、符号語の中で値が変化する最上位の特定ビットの位置を示す位置情報に基づいて各符号語を符号語長の昇順に分類し、同一分類中で上記特定ビットから最大符号語長までのビット数を参照ビット数として定義した参照ビット数テーブルと、各分類において、それ以前の分類までの累積符号語数を基準位置として定義した基準位置テーブルとを補助テーブルとして生成し、上記標準テーブルから、各分類において、各符号語の符号語長と最大符号語長との差に基づき拡張した、各符号語のハフマン符号語長を示すハフマン符号語長テーブルを含む拡張テーブルを生成するテーブル拡張手段と、
与えられた復号すべき可変長符号を少なくとも全符号語に対する最大符号語長の符号ビット列を参照できるように保持する符号保持手段と、
該符号保持手段に保持されている符号ビット列を参照し、値が変化する最上位の特定ビットの位置を示す位置情報を検出し、検出した位置情報により後述の補助テーブル参照手段から参照ビット数と基準位置を入手し、上記拡張テーブルのアドレスを生成する拡張アドレス生成手段と、
上記テーブル拡張手段により生成された補助テーブルを管理し、上記拡張アドレス生成手段からの位置情報により上記参照ビット数テーブルと上記基準位置テーブルから参照ビット数と基準位置を出力する補助テーブル参照手段と、
上記テーブル拡張手段により生成された拡張テーブルを管理し、上記拡張アドレス生成手段により生成されたアドレスに基づき上記ハフマン符号語長テーブルよりハフマン符号語長を出力する拡張テーブル参照手段と、
該拡張テーブル参照手段により出力されたハフマン符号語長に基づき上記符号保持手段に保持されている符号ビット列をシフトして更新するよう指示する符号更新手段とを備えた可変長符号の復号装置。
【請求項２】
上記テーブル拡張手段は拡張テーブルとして各符号語の付加ビット数を示す付加ビット数テーブルを生成し、
上記拡張テーブル参照手段は上記拡張アドレス生成手段により生成されたアドレスに基づき上記付加ビット数テーブルより付加ビット数を出力し、
上記符号更新手段は上記拡張テーブル参照手段より出力されたハフマン符号語長と付加ビット数に基づき上記符号保持手段に保持されている符号ビット列をシフトして更新するよう指示することを特徴とする請求項１記載の可変長符号の復号装置。
【請求項３】
上記符号保持手段に保持されている更新されている符号ビット列を参照し、上記拡張テーブル参照手段により出力された付加ビット数の符号ビット値を付加ビットとして抽出する付加ビット抽出手段と、
上記拡張テーブル参照手段により出力された付加ビット数と上記付加ビット抽出手段により抽出された付加ビットに基づき、復号値を復元するデータ復元手段とを備えたことを特徴とする請求項２記載の可変長符号の復号装置。
【請求項４】
上記テーブル拡張手段は拡張テーブルとして各符号語のゼロ係数のランレングスを示すランレングステーブルを生成し、
上記拡張テーブル参照手段は上記拡張アドレス生成手段により生成されたアドレスに基づき上記ランレングステーブルよりゼロ係数のランレングスを出力し、
上記データ復元手段は、上記拡張テーブル参照手段により出力された付加ビット数及びゼロ係数のランレングスと、上記付加ビット抽出手段により抽出された付加ビットに基づき復号値を復元することを特徴とする請求項３記載の可変長符号の復号装置。
【請求項５】
上記符号更新手段は上記拡張テーブル参照手段より出力されたハフマン符号語長及び付加ビット数に基づき、上記符号保持手段に保持されている符号ビット列の更新を、ハフマン符号語長と付加ビット数に分けて指示することを特徴とする請求項２記載の可変長符号の復号装置。
【請求項６】
上記符号更新手段は上記拡張テーブル参照手段より出力されたハフマン符号語長及び付加ビット数、並びに拡張アドレス生成手段により検出された位置情報に基づき、上記符号保持手段に保持されている符号ビット列の更新を、特定ビットまでのビット数とハフマン符号語長までの残りのビット数と付加ビット数の更新に分けて指示することを特徴とする請求項２記載の可変長符号の復号装置。
【請求項７】
上記符号更新手段は上記拡張テーブル参照手段より出力されたハフマン符号語長及び付加ビット数に基づき、上記符号保持手段に保持されている符号ビット列の更新を、ハフマン符号語長と付加ビット数をまとめて指示することを特徴とする請求項２記載の可変長符号の復号装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は可変長符号を復号する可変長符号の復号装置に関するものである。
【背景技術】
【０００２】
画像や音声等データを効率良く通信や蓄積を行うために、データの符号化は不可欠な技術となっている。現在、多種多様な符号化方法が提案されているが、符号化方法の一例としてハフマン符号化方法がある。ハフマン符号化は、符号の割り当て単位である符号語の長さが固定でない可変長符号化方式である。可変長符号の復号装置では、符号を解析し構成する符号語単位に順次読み出すことによりデータを復元する。よって、可変長による符号語の解析の負荷や複雑さが復号速度に大きく影響している。
【０００３】
従来の可変長符号を復号する復号方法として代表的な３つの方法を示す。
第１の復号方法は、可変長符号の先頭ビットから１ビットずつ順次読み出して、一致する符号語を２進木により探索していく方法であり、２進木で１ビットずつ最悪で可変長符号語の最大長の回数の比較に処理時間がかるという欠点がある。また、第２の復号方法は、可変長符号語をビット数と共にテーブル化し、テーブルを順次比較する方法であり、最悪で符号語の最後までテーブルを比較するので処理時間がかかるという欠点がある。さらに、第３の復号方法は、定義された可変長符号語の最大長の符号ビット列を参照し、アドレスとして符号長についても符号語と同時に特定するテーブルを生成し検索する方法であり、可変長符号語の最大長がアドレス空間となるテーブルが必要となり、アクセスまでの時間は短くなるが大容量のメモリが必要となるという欠点がある。
【０００４】
これらの代表的な３つの復号方法のもつ欠点を解消するために、長所を組み合わせた復号方法が提案されている。
第１の従来例．
第１の復号方法と第２の復号方法を組み合わせた方法として、例えば、特許文献１に示すように、符号語長に基づいて所定の範囲毎に複数のグループに符号語を分類し、例えば最大符号語長１６ビットで８ビットまでの第１グループ、９ビットから１２ビットの第２グループ、１３ビット以上の第３グループに分類した場合、最大３回のテーブル参照で目的の符号語を特定する。
【０００５】
第２の従来例．
また、例えば、特許文献２に示すように、同一符号語長の中における最大値を保持し、最大符号語長まで各符号語長の範囲の符号値を参照して該最大値と比較し、任意の符号長における最大値とその符号長の符号ビット列の参照値を比較すると、最大値以下の参照値となるとき、その符号長以下（等しい又は短い）の符号語であると判定できるので、その中の最大の符号語長を目的の符号語長とする。
【０００６】
第３の従来例．
さらに、例えば、特許文献３に示すように、最大符号語長の符号ビット列を所定のビット数ずつ複数の段階に区切り、各段階で固定長のアドレスとしてテーブルを参照し、符号長算出パラメータ、復号値算出パラメータ、最終段階を除いて表アドレスの３つを順次得る。最終的に、各段階の符号長算出パラメータを加算して符号語長、また、復号値算出パラメータを加算して復号値を得る。
【０００７】
【特許文献１】特開平７−１０７３０３号公報（段落番号００１０、図１）
【特許文献２】特開平９−２４６９８９号公報（段落番号００４３、図６）
【特許文献３】特開２０００−３０７４３３号公報（特許第３５３３３３９号公報）（段落番号００４２〜００４７、図２）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
従来の可変長符号の復号装置は以上のように構成され、上記特許文献１では、それぞれのグループのテーブルに実質２５６アドレス分が必要であり、３つのグループに分類する場合、最大３回で目的の符号語を見つけられるが、合計３倍の（２５６×３）アドレス分のテーブルサイズが必要となるという課題があった。
【０００９】
また、上記特許文献２では、符号語長の判定に各符号語長の中における最大値と各符号語長に相当する符号ビット列の比較器と、全比較結果を得て入力としたプライオリティエンコーダが必要となり、ハードウェア規模又はソフトウェア処理負荷が増大するという課題があった。
【００１０】
さらに、上記特許文献３では、分岐のない直列処理で全段階のパラメータが揃わないと符号番号が演算できず符号語を高速に特定できないという課題があった。
【００１１】
この発明は上記のような課題を解決するためになされたもので、復号過程で可変長の符号語を効率的に特定する際に、通常のテーブルをより参照しやすく再構成しても、拡張されたテーブルと追加分の補助テーブルの合計サイズを元のテーブルサイズから最小限の増加に抑えることができる可変長符号の復号装置を得ることを目的とする。
【００１２】
また、符号語長の判定毎に各符号語長の符号語最大値と各符号語長に相当する符号ビット列を比較した結果を必要としないため、符号語最大値を保持するレジスタと比較器を不要にし、ハードウェア規模又はソフトウェア処理負荷の増大を抑えることができる可変長符号の復号装置を得ることを目的とする。
【００１３】
さらに、パラメータが揃うまで待つことなく、かつアドレスを最小限のテーブル参照と演算で実現して、符号語を高速に特定することができる可変長符号の復号装置を得ることを目的とする。
【課題を解決するための手段】
【００１４】
この発明に係る可変長符号の復号装置は、可変長の符号語を定義した標準テーブルを入力し、符号語の中で値が変化する最上位の特定ビットの位置を示す位置情報に基づいて各符号語を符号語長の昇順に分類し、同一分類中で上記特定ビットから最大符号語長までのビット数を参照ビット数として定義した参照ビット数テーブルと、各分類において、それ以前の分類までの累積符号語数を基準位置として定義した基準位置テーブルとを補助テーブルとして生成し、上記標準テーブルから、各分類において、各符号語の符号語長と最大符号語長との差に基づき拡張した、各符号語のハフマン符号語長を示すハフマン符号語長テーブルを含む拡張テーブルを生成するテーブル拡張手段と、与えられた復号すべき可変長符号を少なくとも全符号語に対する最大符号語長の符号ビット列を参照できるように保持する符号保持手段と、該符号保持手段に保持されている符号ビット列を参照し、値が変化する最上位の特定ビットの位置を示す位置情報を検出し、検出した位置情報により後述の補助テーブル参照手段から参照ビット数と基準位置を入手し、上記拡張テーブルのアドレスを生成する拡張アドレス生成手段と、上記テーブル拡張手段により生成された補助テーブルを管理し、上記拡張アドレス生成手段からの位置情報により上記参照ビット数テーブルと上記基準位置テーブルから参照ビット数と基準位置を出力する補助テーブル参照手段と、上記テーブル拡張手段により生成された拡張テーブルを管理し、上記拡張アドレス生成手段により生成されたアドレスに基づき上記ハフマン符号語長テーブルよりハフマン符号語長を出力する拡張テーブル参照手段と、該拡張テーブル参照手段により出力されたハフマン符号語長に基づき上記符号保持手段に保持されている符号ビット列をシフトして更新するよう指示する符号更新手段とを備えたものである。
【発明の効果】
【００１５】
この発明により、符号語を高速に特定することができ、従来の高速化手法で必要とされたテーブルサイズより小さくすることができ、ハードウェア規模又はソフトウェア処理負荷の増大を抑えることができるという効果が得られる。
【発明を実施するための最良の形態】
【００１６】
実施の形態１．
以下の実施の形態では、画像や音声等のデータを効率良く通信し、あるいは蓄積するために、可変長符号化方式の符号の割り当て単位である符号語の長さを特定できるように、より効率良く参照しやすくテーブルを再構成する拡張手順と、その拡張されたテーブルを使用して復号処理する高速化手順について説明する。
【００１７】
図１はこの発明の実施の形態１による可変長符号の復号装置の概略構成を示すブロック図である。この可変長符号の復号装置は、テーブル拡張器（テーブル拡張手段）１００、拡張テーブル部（拡張テーブル参照手段）１０１、補助テーブル部（補助テーブル参照手段）１０２、復号レジスタ（符号保持手段）１０３、拡張アドレス生成部（拡張アドレス生成手段）１０４、シフト数選択器（符号更新手段）１０５、付加ビット抽出器（付加ビット抽出手段）１０６、係数復元器（データ復元手段）１０７及びＤＣ係数バッファ（復号値保持手段）１０８を備えている。
【００１８】
図２はこの発明の実施の形態１による可変長符号の復号装置の詳細構成を示すブロック図であり、図１と同一符号の構成は同一の構成を示している。図２に示すように、拡張テーブル部１０１は、ハフマン符号語長テーブル１１０、付加ビット数テーブル１１１及びランレングステーブル１１２を備えている。また、補助テーブル部１０２は基準位置テーブル１２０及び参照ビット数テーブル１２１を備えている。さらに、拡張アドレス生成部１０４は零位置検出部１３０、オフセット抽出器１３１及び加算器１３２を備えている。
拡張テーブル部１０１が備える拡張されたテーブルであるハフマン符号語長テーブル１１０、付加ビット数テーブル１１１及びランレングステーブル１１２は、例えば後述のハフマンテーブルの定義セグメントから得られるテーブルに冗長性を持たせて拡張したものであり、ハフマン符号語長、付加ビット数及びランレングスといった項目については同一構成をとる。
【００１９】
ここでは、最も代表的な可変長符号化方式であるハフマン符号化を採用している国際標準符号化ＪＰＥＧ（Joint Photographic Experts Group）方式の可変長符号の復号装置への実装例として説明する。ＪＰＥＧ方式では、ＤＣＴ（Discrete Cosine Transform）変換が採用されており、（８×８）のＤＣＴブロック係数に対して符号語を割り当てる。
【００２０】
図３はＤＣＴブロックとジグザグスキャンを示す図である。例えば、図３に示すＤＣＴブロックにおいて、量子化を経た非ゼロ係数とゼロ係数をジグザグスキャン順に符号化され、（０，０）のＤＣ係数とその他のＡＣ係数の非ゼロ係数で符号語が出力される。途中で、ゼロ係数が１６個に達したところで符号語が出力され、また、後続のＡＣ係数に非ゼロ係数がなくなったところでも符号語が出力される。
【００２１】
図４は図３の例に基づいた係数列の符号語出力単位を示す図であり、図３の破線丸印の部分で係数列が区切られている。
【００２２】
画像中のＤＣＴブロックはインターバルという単位で分割され、インターバルの最初で符号器及び復号器を初期化する。インターバル内の第１番目のＤＣＴブロックのＤＣ係数を除き、後続のＤＣＴブロックのＤＣ係数は直前のＤＣＴブロックのＤＣ係数との差分値（以下、ＤＣ差分値という）が符号化される。
【００２３】
図５はＤＣＴブロックの符号語構成を示す図である。図５に示すＤＣ係数については、ＤＣ係数又はＤＣ差分値を表現するのに必要なビット数（一般にカテゴリというが、以下、付加ビット数という）が符号語として出力され、その後にその付加ビット数で示されるビット値（以下、付加ビットという）を出力することでＤＣ係数を表現する。また、図５に示すＡＣ係数については、ゼロ係数の連続数（ランレングス）とその直後の非ゼロ係数の付加ビット数で決まる符号語が出力され、その後にその非ゼロ係数の付加ビット数で示されるビット値（以下、付加ビットという）を出力することでＡＣ係数列を表現する。
【００２４】
図６はＪＰＥＧ勧告書の付属書Ｋに記載される輝度成分のＤＣ係数の符号語テーブルの一例を示す図である。
【００２５】
図７はＪＰＥＧ勧告書の付属書Ｋに記載される色差成分のＡＣ係数の符号語テーブルの一例を示す図である。ゼロ係数のランレングスは０から１５まで、付加ビット数は０から１０までが使用され、ランレングスと付加ビット数の組単位で符号語が割り当てられている。付加ビット数０の係数値は０であり、ランレングス１５と合わせて１６個のＡＣ係数となり、ゼロランレングス（ＺＲＬ：Zero Run Length）といわれる。また、付加ビット数０、ランレングス０は、以降のＡＣ係数に非ゼロ係数が存在しないことを示すブロック終了（ＥＯＢ：End Of Block）といわれる。
【００２６】
図８はハフマンテーブルの定義セグメント例を示す図であり、図７のＪＰＥＧ勧告書の付属書Ｋに記載される色差成分のＡＣ係数の符号語テーブルの一例である。ＪＰＥＧ方式では、この図８の形式でハフマンテーブルが表現される。図中の各項目上段の数値は情報フィールドの各ビットサイズ、中段の数値は１６進（ｈ）で表現されており、下段の“ＤＨＴ”はハフマンテーブルの定義であることを示し、“Ｌｈ”は後続のデータサイズを示す。また、“Ｔｃ”はテーブルクラスを示し、０がＤＣ係数用、１がＡＣ係数用を示す。“Ｔｈ”はハフマンテーブル識別子を示し、ＪＰＥＧ勧告書の付属書Ｋでは、０が輝度成分、１が色差成分を示す。図８の下段において、“Ｌ１”から“Ｌ１６”の数値はハフマン符号長ＣＬ（以下、符号語長という。）を意味し、テーブル中に存在するそのサイズの符号語の数を示す。ここでは、Ｌ１＝００ｈなので、符号語長は２以上であり、“Ｖ２，１”から“Ｖ２，Ｌ２”は符号語長２の１番目からＬ２番目の符号語の情報を示す。符号語長１から１６の符号語の総数は、ΣＬｉ（ｉ＝１〜１６）個となる。その上位４ビットはランレングス“ＲＬ”、下位４ビットは付加ビット数“ＶＬ”を示す。ここで、符号語テーブルがＤＣ係数用であれば、ランレングスは用いないので、全ての符号語でＲＬ＝０とされる。
【００２７】
テーブルに定義された全符号語のうち、ｎビットの符号語長の符号語は２進数順に連続する。０を初期値として、（ｎ＋１）ビットの第１番目の符号語は、ｎビットの最終符号語の値に１を加えて２倍した値として与えられる。
【００２８】
図９はハフマン符号語長ＣＬと付加ビット数ＶＬを示す図である。この実施の形態１では、図９に示すように、符号ビット列から符号語を解析するために、上位から最初の特定ビット‘０’の位置情報Ｐｏｓの同一符号語に対して、その中の最大長の符号語を区別するために必要な特定ビット‘０’以降の参照ビット数Ｒｅｆの符号ビット列をアドレスとして、符号語長ＣＬを特定すると共に、符号語直後の付加ビット数ＶＬ、さらにＡＣ係数ではランレングスＲＬを参照するまでを説明する。基本的に（特定ビットまでのビット数（Ｐｏｓ＋１））＋（参照ビット数Ｒｅｆ）＝（ハフマン符号語長ＣＬ）となる符号語に対してはテーブル拡張を必要としないが、（特定ビットまでのビット数（Ｐｏｓ＋１））＋（参照ビット数Ｒｅｆ）＞（ハフマン符号語長ＣＬ）となる例外部分の符号語に対してはテーブルを最初に拡張しておく。なお、符号ビット列を一度に参照する最大ビット数は、テーブルに定義される符号語に関連付けられたＣＬ又はＶＬの各最大値のいずれかより大きい値となる。
【００２９】
次に動作について説明する。
テーブルの拡張手順と係数の復号手順の詳細は後述するものとし、図１に示す拡張テーブルを使用する可変長符号の復号装置のブロック構成図に基づいて復号処理の動作を説明する。
以下では、復号処理を準備段階と実処理段階に分けて説明する。準備段階ではテーブル拡張処理を行う。係数を復元する実処理段階では、符号語の処理と、付加ビットがあるときには付加ビットの処理を行う。
【００３０】
＜テーブル拡張処理の動作概要＞
まず、テーブル拡張の動作について説明する。
図１において、テーブル拡張部１００は、標準サイズの標準テーブルＴａｂｌｅｓを入力し、拡張テーブル部１０１のデータと、その拡張テーブルへのアドレスを生成するための補助テーブル部１０２のデータとを出力する。
【００３１】
テーブル拡張器１００は、図８で与えられるような復号すべき可変長符号Ｃｏｄｅに先立って与えられる可変長の符号語を定義した標準テーブルＴａｂｌｅｓを入力し、図９に示されるような符号語の中で値が変化する最上位の特定ビット（ここでは‘０’）の位置を示す位置情報Ｐｏｓに基づいて各符号語を符号語長の昇順に分類し、同一分類中で特定ビットから最大符号語長までのビット数を参照ビット数Ｒｅｆとして定義した参照ビット数テーブル１２１と、各分類において、それ以前の分類までの累積符号語数を基準位置Ｂａｓｅとして定義した基準位置テーブル１２０とを補助テーブルとして生成し、入力した標準テーブルから、各分類において、各符号語の符号語長と最大符号語長との差に基づき拡張した、各符号語のハフマン符号語長ＣＬを示すハフマン符号語長テーブル１１０と、各符号語の付加ビット数ＶＬを示す付加ビット数テーブル１１１と、各符号語のゼロ係数のランレングスＲＬを示すランレングステーブル１１２と含む拡張テーブルを生成する。ここで、位置情報Ｐｏｓは、符号語の最上位ビットおよび復号レジスタの最上位ビットから下位へ０，１，２，・・・とゼロから始まる値である。
【００３２】
＜符号語の処理の動作概要＞
符号語の処理としては、復号レジスタ１０３は、最大符号語長の符号を保持して符号ビット列Ｃｒｅｇを参照可能にし、また通知されたビット数分シフトすることで、復号処理済の上位ビット値をレジスタ外に掃き出すと共に新しい未処理の可変長符号Ｃｏｄｅをレジスタ下位から取り入れて符号ビット列Ｃｒｅｇの更新を行う。拡張アドレス生成部１０４は、符号語及び符号語長が特定できていない状態で、符号ビット列Ｃｒｅｇを参照し、上位から最初のビット‘０’の位置情報Ｐｏｓを補助テーブル部１０２に出力して基準位置Ｂａｓｅと参照ビット数Ｒｅｆを得て、拡張テーブルへのアドレスＡｄｄｒｅｓｓを拡張テーブル部１０１へ出力する。拡張テーブル部１０１は、ハフマン符号語長テーブル１１０と付加ビット数テーブル１１１とランレングステーブル１１２から、アドレスＡｄｄｒｅｓｓで指定されたハフマン符号語長ＣＬと付加ビット数ＶＬとランレングスＲＬを出力する。シフト数選択器１０５は、ハフマン符号語長ＣＬ及び付加ビット数ＶＬを入力して、符号語の処理が終了した時点で復号レジスタ１０３を符号語長ＣＬビット分シフトするように更新を復号レジスタ１０３に通知する。
【００３３】
拡張アドレス生成部１０４の詳細動作を説明する。零位置検出器１３０は、復号レジスタ１０３の符号ビット列Ｃｒｅｇを参照して、最上位から最初のビット‘０’の位置情報Ｐｏｓを出力する。基準位置テーブル１２０と参照ビット数テーブル１２１は、位置情報Ｐｏｓをアドレスとして、それぞれ基準位置Ｂａｓｅと参照ビット数Ｒｅｆを出力する。オフセット抽出器１３１は、復号レジスタ１０３の符号ビット列Ｃｒｅｇを参照して、位置情報Ｐｏｓ以降の参照ビット数Ｒｅｆの符号ビット値をオフセットＯｆｆｓｅｔとして出力する。加算器１３２は、基準位置ＢａｓｅとオフセットＯｆｆｓｅｔを加えて、拡張テーブルへのアドレスＡｄｄｒｅｓｓを出力する。
【００３４】
また、拡張テーブル部１０１の詳細動作を説明する。拡張テーブル部１０１は、ハフマン符号語長テーブル１１０と付加ビット数テーブル１１１とランレングステーブル１１２から、入力したアドレスＡｄｄｒｅｓｓに基づき、ハフマン符号語長ＣＬと付加ビット数ＶＬとランレングスＲＬを出力する。
ここで、シフト数選択器１０５は、ハフマン符号語長ＣＬをシフト数Ｓｈｉｆｔとして出力し復号レジスタ１０３へ更新を通知する。復号レジスタ１０３は、ハフマン符号語長ＣＬが通知されたシフト数Ｓｈｉｆｔ分だけ符号ビット列Ｃｒｅｇを更新し、符号語の処理から付加ビットの処理へ移る。
【００３５】
＜付加ビットの処理の動作概要＞
付加ビットの処理としては、付加ビット抽出器１０６は、復号レジスタ１０３の符号ビット列Ｃｒｅｇを参照して、上位の付加ビット数ＶＬの符号ビット値を付加ビットＡｄｄｂｉｔとして出力する。係数復元器１０７は、ＤＣ係数又はランレングスＲＬ個のゼロ係数と非ゼロ係数のＡＣ係数をＤＣＴ係数Ｃｏｅｆｆとして順次復元して出力する。ＤＣ係数バッファ１０８は、復元されたＤＣ係数値を次のＤＣＴブロックのＤＣ係数の復元まで保持して参照可能とし、直前のＤＣＴブロックのＤＣ係数ＰｒｅＤＣとして出力する。
【００３６】
係数復元器１０７において、復元すべき係数がＤＣ係数のとき、図６で示される直前のＤＣＴブロックのＤＣ係数値との差分値が、付加ビット数ＶＬとその付加ビットＡｄｄｂｉｔから復元され、ＤＣ係数バッファ１０８に保持された直前のＤＣＴブロックのＤＣ係数ＰｒｅＤＣと差分値からＤＣ係数を復号する。また、復元すべき係数がＡＣ係数のとき、ランレングスＲＬ（復元すべき復号単位数）からＲＬ個のゼロ係数と、付加ビット数ＶＬと付加ビットＡｄｄｂｉｔから非ゼロ係数を復号する。
【００３７】
ここで、シフト数選択器１０５は、シフト数Ｓｈｉｆｔとして付加ビット数ＶＬを出力して復号レジスタ１０３へ更新を通知する。復号レジスタ１０３は、付加ビット数ＶＬが通知されたシフト数Ｓｈｉｆｔ分だけ符号ビットを更新し、付加ビットの処理から符号語の処理へ移る。
【００３８】
このように、この実施の形態１では、符号語の処理と付加ビットの処理を交互に実行し、ＤＣＴブロック内の係数を全て復号する。
【００３９】
図１及び図２において、図示された信号ＤＣ／ＡＣは、復号するＤＣＴ係数がＤＣ係数かＡＣ係数かを示すものとする。図中、信号線は記載していないが、拡張テーブル部１０１のハフマン符号語長テーブル１１０、付加ビット数テーブル１１１及びランレングステーブル１１２、補助テーブル部１０２の基準位置テーブル１２０及び参照ビット数テーブル１２１は、輝度信号と色差信号の２種で区別して適宜切り替えるものとする。また、復号する成分が輝度信号Ｙか、色差信号Ｃｂ、Ｃｒの３種の信号について対応する３組の復号レジスタ１０３、ＤＣ係数バッファ１０８を切り替える。ただし、この切り替えはＪＰＥＧ方式を例に説明したものであり、輝度や２つの色差信号のテーブル共通化、独立化を図ることは可能である。
【００４０】
ここで、ＤＣ係数バッファ１０８は、ＪＰＥＧ方式に沿い、ＤＣ係数の差分を求めてＤＰＣＭ（Differential Pulse Code Modulation）符号化するため、直前のＤＣＴブロックのＤＣ係数の保存が必要とされるが、ＤＰＣＭ符号化を適用しない他の符号化方式では必要とされないこともある。この場合、拡張テーブルと補助テーブルの切り替えは適宜行い、ＤＣ係数において差分を適用せず復号を行えば良い。
【００４１】
＜テーブル拡張処理の詳細処理フロー＞
図１０はハフマンテーブルの拡張処理フローを示す図であり、図１１は拡張テーブルの出力処理フローを示す図である。
テーブル拡張器１００のテーブル拡張処理の詳細を図１０及び図１１に基づいて説明する。以下の説明では、図８のように定義される“Ｌ１”から“Ｌ１６”を配列Ｌ［０］からＬ［１５］、“Ｖ１，１”から“Ｖ１６，Ｌ１６”を配列Ｖ［０］からＶ［（ΣＬｉ）−１］として参照し、テーブルを拡張するものとする。補助テーブルである基準位置テーブル１２０を配列Ｂａｓｅ＿Ｔａｂｌｅ、参照ビット数テーブル１２１を配列Ｒｅｆ＿Ｔａｂｌｅとし、配列サイズを１６とする。拡張テーブルであるハフマン符号語長テーブル１１０を配列ＣＬ＿Ｔａｂｌｅ、付加ビット数テーブル１１１を配列ＶＬ＿Ｔａｂｌｅ、ランレングステーブル１１２を配列ＲＬ＿Ｔａｂｌｅとし、ここでは配列サイズを２５６としているが、さらに十分な配列サイズを確保しておいても構わない。
【００４２】
ハフマンテーブルの拡張処理を行うＨｕｆｆｍａｎ＿Ｅｘｔｅｎｔｉｏｎ処理フローについて、図１０に基づいて説明する。
図１０において、ステップＳＴ１０１〜ＳＴ１０３は基準位置テーブルＢａｓｅ＿Ｔａｂｌｅ、参照ビット数テーブルＲｅｆ＿Ｔａｂｌｅの初期化処理を示し、ステップＳＴ１０４〜ＳＴ１０７は、拡張されたハフマン符号語長テーブルＣＬ＿Ｔａｂｌｅ、拡張された付加ビット数テーブルＶＬ＿Ｔａｂｌｅ、拡張されたランレングステーブルＲＬ＿Ｔａｂｌｅの初期化処理を示す。
【００４３】
ステップＳＴ１０８〜ＳＴ１１２は初期化処理を示し、Ｕは配列Ｌの指標、Ｖは配列Ｖの指標、ＶＶは配列（テーブル）ＣＬ＿Ｔａｂｌｅ、ＶＬ＿Ｔａｂｌｅ，ＲＬ＿Ｔａｂｌｅの指標、Ｐｏｓは配列（テーブル）Ｂａｓｅ＿Ｔａｂｌｅ、Ｒｅｆ＿Ｔａｂｌｅの指標を示す。変数Ｌは（Ｕ＋１）ビット［図６でＬ［ｕ］＝Ｌ（ｕは指標）＝Ｌ（ｕ＋１）（ｕ＋１は符号長）の未拡張の符号語の残数を示す。
【００４４】
ステップＳＴ１１３〜ＳＴ１１６は未拡張の符号語を残している符号語長の探索処理を示し、ステップＳＴ１１５はテーブル拡張終了判定処理を示している。
【００４５】
ステップＳＴ１１７〜ＳＴ１３１は上位ビットから（Ｐｏｓ＋１）ビット目に初めてビット‘０’が出現する符号語の探索処理を示し、変数Ｓは分類開始時の指標Ｕの保存を示し、変数ＬＳはＳの未拡張の符号語の残数の保存を示し、変数Ｔは同一Ｐｏｓ値を持つ拡張後の符号語の総数を示す。変数Ｒは変数Ｔの最大値を示し、越える場合はステップＳＴ１２８で次のＰｏｓへ変数Ｌに保存して持ち越す。変数Ｅは分類終了時の指標Ｕの保存を示し、変数ＬＥは変数Ｅの未拡張の符号語の残数の保存を示す。ステップＳＴ１２１はＢａｓｅ＿Ｔａｂｌｅの出力設定処理を示し、Ｂａｓｅ＝ＶＶは分類開始時点である。また、ステップＳＴ１３１はＲｅｆ＿Ｔａｂｌｅの出力設定処理を示し、Ｒｅｆ＝Ｅ−Ｐｏｓは分類終了時点である。
【００４６】
ステップＳＴ１３２は拡張テーブルの出力処理を示し、ステップＳＴ１３３はＰｏｓの更新処理を示し、ステップＳＴ１３４はテーブルの拡張終了判定処理を示す。
【００４７】
図１０のステップＳＴ１０１〜ＳＴ１０３において、配列Ｂａｓｅ＿Ｔａｂｌｅ及び配列Ｒｅｆ＿Ｔａｂｌｅのｎについて、ステップＳＴ１０２〜ＳＴ１０３で、ｎ＝０を初期値とし、ｎ＝ｎ＋１と１を加算しながらｎ＝１５になるまで繰り返す。同様に、ステップＳＴ１０４〜ＳＴ１０７において、配列ＣＬ＿Ｔａｂｌｅ、配列ＶＬ＿Ｔａｂｌｅ及び配列ＲＬ＿Ｔａｂｌｅのｎについて、ステップＳＴ１０５〜ＳＴ１０７で、ｎ＝０を初期値とし、ｎ＝ｎ＋１と１を加算しながらｎ＝２５５になるまで繰り返す。ここで、ｎ＝２５５はテーブル配列の最大サイズであり、必要なサイズに調整すれば良い。
【００４８】
ステップＳＴ１０８において、配列Ｌへの参照アドレスＵ（ハフマン符号語長）を０に初期化する。ステップＳＴ１０９において、配列Ｖへの参照アドレスＶを０に初期化する。ステップＳＴ１１０において、配列ＣＬ＿Ｔａｂｌｅ、配列ＶＬ＿Ｔａｂｌｅ及び配列ＲＬ＿Ｔａｂｌｅへの参照アドレスＶＶを０に初期化する。ステップＳＴ１１１において、符号語のビット列の最上位から最初のビット‘０’の位置情報Ｐｏｓを０に初期化する。ステップＳＴ１１２において、同一Ｐｏｓの符号語数ＬをＬ［Ｕ］（Ｕ＝０）に初期化する。
【００４９】
ステップＳＴ１１３において、現ハフマン符号語長Ｕ、現Ｐｏｓ値の未処理の符号語数Ｌが０か否かを判定する。Ｌが０ならば、ステップＳＴ１１４おいてＵに１を加え、ステップＳＴ１１５でＵが１６未満であれば、ステップＳＴ１１６において、ＬをＬ［Ｕ］に更新し、ステップＳＴ１１３において、Ｌが０でなくなるまでステップＳＴ１１３からステップＳＴ１１６を繰り返し、ステップＳＴ１１５でＵが１６になるとテーブル拡張処理を終了する。
【００５０】
ステップＳＴ１１３でＬが０でなくなると、ステップＳＴ１１７において、現Ｐｏｓ値の開始ハフマン符号語長ＳにＵを設定する。ステップＳＴ１１８において、現ハフマン符号語長Ｕ、現Ｐｏｓ値の未処理の符号語数ＬをＬＳに保存する。ステップＳＴ１２０において、現Ｐｏｓ値の符号語数Ｔを０に初期化する。ステップＳＴ１２１において、現Ｐｏｓ値をアドレスとしてＢａｓｅ＿Ｔａｂｌｅ［Ｐｏｓ］にＶＶを設定する。
【００５１】
ステップＳＴ１２２において、現ハフマン符号語長Ｕと現Ｐｏｓ値の差Ｕ−Ｐｏｓから現Ｐｏｓ値の総符号語数Ｒに（１＜＜（Ｕ−Ｐｏｓ））を設定する。演算子“＜＜”は上位方向へのシフトを示し、１ビットシフトで２倍となる。ステップＳＴ１２３において、現Ｐｏｓ値の符号語数Ｔに現Ｐｏｓ値の未処理の符号語数Ｌを加える。ステップＳＴ１２４においてＴとＲを比較する。ＴがＲに満たないとき、ステップＳＴ１２５において、Ｔを１ビットシフトして２倍にする。ステップＳＴ１２６において、現ハフマン符号語長Ｕに１を加えて更新する。ステップＳＴ１２７において、現Ｐｏｓ値の未処理の符号語数ＬにＬ［Ｕ］を設定する。ステップＳＴ１２２からステップＳＴ１２７までを、途中ステップＳＴ１２４でＴがＲ以上になるまで繰り返す。
【００５２】
ステップＳＴ１２４でＴがＲ以上になると、ステップＳＴ１２８において、（Ｔ−Ｒ）をＬに設定する。ステップＳＴ１２９において、現Ｐｏｓ値の終了ハフマン符号語長ＥにＵを設定する。ステップＳＴ１３０において、現ハフマン符号語長Ｕ、現Ｐｏｓ値の未処理の符号語数ＬをＬＥに保存する。ステップＳＴ１３１において、現Ｐｏｓ値をアドレスとしてＲｅｆ＿Ｔａｂｌｅ［Ｐｏｓ］に現Ｐｏｓ値の終了ハフマン符号語長Ｅと現Ｐｏｓ値との差（Ｅ−Ｐｏｓ）を設定する。
【００５３】
ステップＳＴ１３２において、これらテーブル拡張のための変数値をもって、Ｔａｂｌｅ＿Ｏｕｔｐｕｔ処理を実行し、現Ｐｏｓ値に関する拡張テーブルを出力する。ステップＳＴ１３３において、Ｐｏｓ値に１を加えて更新する。ステップＳＴ１３４において、更新したＰｏｓ値が１６未満であればステップＳＴ１１３からの処理を繰り返して継続し、１６になればテーブル拡張処理を終了する。
【００５４】
次に、図１０のステップＳＴ１３２で実装される拡張テーブルを出力するＴａｂｌｅ＿Ｏｕｔｐｕｔ処理フローについて、図１１に基づいて説明する。
この拡張テーブルの出力処理は分類単位で実行される。図１１において、Ｍは符号語長を示し、ＥＸは符号語１つ当りの拡張（倍数）を示し、ＬＬは終了指標Ｅの拡張対象の符号語数を示す。
【００５５】
ステップＳＴ２１１〜ＳＴ２１７はＰｏｓでＵ＝Ｓである符号語の拡張処理を示し、ＬＳ個の符号語について処理が行われる。ステップＳＴ２１２〜ＳＴ２１６は符号語１つ当りのＥＸ倍の拡張処理を示し、ステップＳＴ２１３〜ＳＴ２１５はＣＬ＿Ｔａｂｌｅ、ＶＬ＿Ｔａｂｌｅ、ＲＬ＿Ｔａｂｌｅの出力設定処理を示す。
【００５６】
ステップＳＴ２２３〜ＳＴ２２９はＰｏｓでＳ＜Ｕ（＝Ｍ）＜Ｅである符号語の拡張処理を示し、Ｌ［Ｍ］個の符号語について処理が行われる。ステップＳＴ２２４〜ＳＴ２２８は符号語１つ当りのＥＸ倍の拡張処理を示し、ステップＳＴ２２５〜ＳＴ２２７はＣＬ＿Ｔａｂｌｅ、ＶＬ＿Ｔａｂｌｅ、ＲＬ＿Ｔａｂｌｅの出力設定処理を示す。
【００５７】
ステップＳＴ２０４〜ＳＴ２０９はＰｏｓでＵ＝Ｅである符号語の拡張処理を示し、ＬＬ個の符号語について１つ当りの１倍の拡張処理を示し、ステップＳＴ２０５〜ＳＴ２０７はＣＬ＿Ｔａｂｌｅ、ＶＬ＿Ｔａｂｌｅ、ＲＬ＿Ｔａｂｌｅの出力設定処理を示す。
【００５８】
図１１のステップＳＴ２０１において、現Ｐｏｓ値の開始ハフマン符号語長Ｓが配列Ｌへのアドレスとして０基準であるため、ハフマン符号語長Ｍに（Ｓ＋１）を設定する。ステップＳＴ２０２において、ＳとＥを比較する。
【００５９】
まず、ステップＳＴ２０２でＳとＥが等しいとき、ステップＳＴ２０３において、出力符号語数ＬＬに（ＬＳ−ＬＥ）を設定する。ステップＳＴ２０４において、ステップＳＴ２０５からステップＳＴ２０９によって、拡張テーブルへＶＶ、ＶをアドレスとしてＬＬ個の符号語１つにつき１回ずつ出力する。ステップＳＴ２０５において、ＣＬ＿Ｔａｂｌｅ［ＶＶ］にハフマン符号語長Ｍを設定する。ステップＳＴ２０６において、ＶＬ＿Ｔａｂｌｅ［ＶＶ］にＶ［ＶＶ］の下位４ビットの付加ビット長を設定する。ステップＳＴ２０７において、ＲＬ＿Ｔａｂｌｅ［ＶＶ］にＶ［ＶＶ］の上位４ビットのランレングスを設定する。ステップＳＴ２０８において、ステップＳＴ２０４のループに対して標準テーブルへのアドレスＶ、ステップＳＴ２０９において、拡張テーブルへのアドレスＶＶにそれぞれ１を加えて更新する。
【００６０】
一方、ステップＳＴ２０２でＳがＥより小さいとき、ステップＳ２１０において、符号語当たりの拡張数ＥＸに（１＜＜（Ｅ−Ｓ））を設定する。ステップＳＴ２１１において、ステップＳＴ２１２からステップＳＴ２１７によって、拡張テーブルへＶＶ、ＶをアドレスとしてＬＳ個の符号語１つにつきＥＸ回ずつ出力する。ステップＳＴ２１２において、ステップＳＴ２１３からステップＳＴ２１６によって、ＥＸ回の符号語出力を行う。ステップＳＴ２１３において、ＣＬ＿Ｔａｂｌｅ［ＶＶ］にハフマン符号語長Ｍを設定する。ステップＳＴ２１４において、ＶＬ＿Ｔａｂｌｅ［ＶＶ］にＶ［ＶＶ］の下位４ビットの付加ビット長を設定する。ステップＳＴ２１５において、ＲＬ＿Ｔａｂｌｅ［ＶＶ］にＶ［ＶＶ］の上位４ビットのランレングスを設定する。ステップＳＴ２１６において、ステップＳＴ２１２からのループに対して拡張テーブルへのアドレスＶＶに１を加えて更新する。ステップＳＴ２１７において、ステップＳＴ２１１からのループに対して標準テーブルへのアドレスＶに１を加えて更新する。
【００６１】
ステップＳＴ２１８において、ＭとＥを比較する。ＭとＥが等しいとき、ステップＳＴ２１９において、Ｍに１を加えて更新する。ステップＳ２２０において、ＬＬに（Ｌ［Ｅ］−ＬＥ）を設定する。この後、先に示したステップＳＴ２０４以降の処理を行う。
【００６２】
また、ステップＳＴ２１８でＭがＥより小さいとき、ステップＳＴ２２１において、Ｍに１を加えて更新する。ステップＳ２２２において、ＥＸを（ＥＸ＞＞１）に更新する。演算子“＞＞”は下位方向へのシフトを示し、１ビットシフトで１／２倍となる。
【００６３】
ステップＳＴ２２３において、ステップＳＴ２２４からステップＳＴ２２９によって、拡張テーブルへＶＶ、ＶをアドレスとしてＬ［Ｍ］個の符号語１つにつきＥＸ回ずつ出力する。ステップＳＴ２２４において、ステップＳＴ２２５からステップＳＴ２２８によって、ＥＸ回の符号語出力を行う。ステップＳＴ２２５において、ＣＬ＿Ｔａｂｌｅ［ＶＶ］にハフマン符号語長Ｍを設定する。ステップＳＴ２２６において、ＶＬ＿Ｔａｂｌｅ［ＶＶ］にＶ［ＶＶ］の下位４ビットの付加ビット長を設定する。ステップＳＴ２２７において、ＲＬ＿Ｔａｂｌｅ［ＶＶ］にＶ［ＶＶ］の上位４ビットのランレングスを設定する。ステップＳＴ２２８において、ステップＳＴ２２４からのループに対して拡張テーブルへのアドレスＶＶに１を加えて更新する。ステップＳＴ２２９において、ステップＳＴ２２３からのループに対して標準テーブルへのアドレスＶに１を加えて更新する。ステップＳＴ２１８からステップＳＴ２２９までを、ステップＳＴ２１８でＭがＥと等しくなるまで繰り返す。
【００６４】
図１２は、これらのテーブル拡張処理により、ＪＰＥＧ勧告書の付属書Ｋに記載される色差成分のＡＣ係数の符号語テーブルの一例を示す図である。図において、左側のテーブルが標準テーブルで、右側のテーブルが補助テーブルと拡張テーブルであり、‘＊’が実際の符号語長より余分に参照しなければならないビットを示しており、‘０’，‘１’のどちらでも構わないため、ビット当たり２倍の拡張となることをオフセットＯｆｆｓｅｔが示している。図１２に示すように、標準テーブルにおける１６２個の符号語が、拡張テーブルでは１８１個に拡張されている。同様に、ＪＰＥＧ勧告書の付属書Ｋに記載されるテーブルの拡張前後を比較すると、図１２では示されていないが、輝度成分のＤＣ係数用テーブルの符号語１２が１３で１．０８倍、ＡＣ係数用テーブル符号語１６２が１７７で１．０９倍、色差成分のＤＣ係数用テーブル１２が１２で１．００倍、先に説明したＡＣ係数用テーブル符号語１６２が１８１で１．１２倍となっており、この場合、ＣＬ、ＶＬ、ＲＬのテーブルは８ビット（２５６）のアドレス空間で足りている。また、補助テーブルについては、ＰｏｓをアドレスとするＢａｓｅ、Ｒｅｆのテーブルともにサイズは１６である。
【００６５】
例えば、図１２において、補助テーブルとして、参照ビット数テーブル（Ｒｅｆ）は最大値６で３ビット、基準位置テーブル（Ｂａｓｅ）は８ビットをアドレスＰｏｓに対して１６ビット変数又は３２ビット変数にパッキングして一度に参照し、分割して使用できるようにしても構わない。同様に、拡張テーブルとして、ハフマン符号語長テーブル（ＣＬ）は最大値１６（５ビット）、付加ビット数テーブル（ＶＬ）は最大値１０（４ビット）、ランレングステーブル（ＲＬ）は最大値１５（４ビット）を１６ビット変数又は３２ビット変数にパッキングしても構わない。また、必要最小限のビット数で自由にパッキングしたテーブルを設計できるのであれば、１６ビット、３２ビットに限ることもない。
【００６６】
＜復号処理の詳細処理フロー＞
図１３はＤＣＴブロックの復号処理フローを示す図である。
復号処理の詳細を図１３に基づいて説明する。ＤＣ係数、ＡＣ係数で区別するため、補助テーブルＲｅｆ＿Ｔａｂｌｅ、Ｂａｓｅ＿Ｔａｂｌｅ、拡張テーブルＣＬ＿Ｔａｂｌｅ、ＶＬ＿Ｔａｂｌｅ、ＲＬ＿Ｔａｂｌｅの名前の先頭に“ＤＣ＿”、“ＡＣ＿”を付けておく。輝度信号、色差信号は、テーブルが適宜選択されるものとする。
【００６７】
ステップＳＴ３０１からステップＳＴ３０４はＤＣＴブロックのハフマン復号を行うＨｕｆｆｍａｎ＿Ｄｅｃｏｄｉｎｇ＿ＤＣＴ処理を示している。
ステップＳＴ３０１では、処理について括弧（  ）で囲んでいるのはインターバルの最初のＤＣＴブロックか否かを判定し、最初のＤＣＴブロックときのみ実行することを示しており、ＤＣ係数バッファ１０８が直前のＤＣＴブロックのＤＣ係数ＰｒｅＤＣを０にクリアして初期化する。ステップＳＴ３０２において、復号装置の全体を管理制御する管理制御部（図示せず）はＤＣＴ係数番号Ｎｕｍを０に初期化する。ステップＳＴ３０３において、管理制御部は復号処理対象のＤＣＴブロックの係数配列をクリアして０に初期化する。ステップＳＴ３０４において、復号レジスタ１０３及びシフト数選択器１０５は復号レジスタ１０３を符号ビット列Ｃｒｅｇで満たして初期化する。
【００６８】
ステップＳＴ３０５からステップＳＴ３１７はＤＣ係数復号処理を示している。
ＤＣ係数の復号処理として、まず、符号語を処理するために、ステップＳＴ３０５において、零位置検出器１３０は符号ビット列Ｃｒｅｇの最上位のビット‘０’の位置を位置情報Ｐｏｓに設定する。ステップＳＴ３０６において、参照ビット数テーブル１２１は、位置情報Ｐｏｓに基づき、補助テーブルＲｅｆ＿Ｔａｂｌｅから参照ビット数Ｒｅｆを設定し、ステップＳＴ３０７において、基準位置テーブル１２０は、位置情報Ｐｏｓに基づき、Ｂａｓｅ＿Ｔａｂｌｅから基準位置Ｂａｓｅを設定する。ステップＳＴ３０８において、オフセット抽出器１３１は符号ビット列Ｃｒｅｇ上で位置情報Ｐｏｓが示すビット‘０’以降の参照ビット数Ｒｅｆの符号ビットを参照してオフセットＯｆｆｓｅｔに設定する。ステップＳＴ３０９において、加算器１３２は、ＢａｓｅとＯｆｆｓｅｔを加え、拡張テーブルへのアドレスＡｄｄｒｅｓｓに設定する。
【００６９】
ステップＳＴ３１０において、ハフマン符号語長テーブル１１０は、アドレスＡｄｄｒｅｓｓに基づき、拡張テーブルＣＬ＿Ｔａｂｌｅからハフマン符号語長ＣＬを設定し、ステップＳＴ３１１において、付加ビット数テーブル１１１は、アドレスＡｄｄｒｅｓｓに基づき、ＶＬ＿Ｔａｂｌｅから付加ビット数ＶＬを設定する。ステップＳＴ３１２において、復号レジスタ１０３及びシフト数選択器１０５は、符号ビット列Ｃｒｅｇ上位から読み取ったハフマン符号語長ＣＬビット分の符号ビットを更新する。
【００７０】
次に、付加ビットを処理するために、ステップＳＴ３１３において、付加ビット抽出器１０６は、符号ビット列Ｃｒｅｇ上位から付加ビット数ＶＬビット分の符号ビットを参照して付加ビットＡｄｄｂｉｔに設定する。ステップＳＴ３１４において、係数復元器１０７は、参照された付加ビットＡｄｄｂｉｔとＤＣ係数バッファ１０８に保存された直前のＤＣＴブロックのＤＣ係数ＰｒｅＤＣから、図１及び図２では係数Ｃｏｅｆｆと示されたＤＣ係数を復元し、ＤＣＴ係数の配列に格納する。ステップＳＴ３１５において、復元されたＤＣ係数をＤＣ係数バッファ１０８のＰｒｅＤＣに保存する。ステップＳＴ３１６において、管理制御部は復号するＤＣＴ係数番号Ｎｕｍを１進める。ステップＳＴ３１７において、復号レジスタ１０３及びシフト数選択器１０５は、符号ビット列Ｃｒｅｇ上位から読み取った付加ビット数ＶＬビット分の符号ビットを更新する。
【００７１】
ステップＳＴ３１８からステップＳＴ３３３はＡＣ係数復号処理を示している。
ＡＣ係数の復号処理として、まず符号語を処理するために、ステップＳＴ３１８からステップＳＴ３２２において、上記ステップＳＴ３０５からステップＳＴ３０９までと同様に、拡張テーブルへのアドレスＡｄｄｒｅｓｓが設定される。ステップＳＴ３２３において、ハフマン符号語長テーブル１１０は、アドレスＡｄｄｒｅｓｓに基づき、拡張テーブルＣＬ＿Ｔａｂｌｅからハフマン符号語長ＣＬを設定し、ステップＳＴ３２４において、付加ビット数テーブル１１１は、アドレスＡｄｄｒｅｓｓに基づき、ＶＬ＿Ｔａｂｌｅから付加ビット数ＶＬを設定し、ステップＳＴ３２５において、ランレングステーブル１１２は、アドレスＡｄｄｒｅｓｓに基づき、ＲＬ＿ＴａｂｌｅからランレングスＲＬを設定する。ステップＳＴ３２６において、復号レジスタ１０３及びシフト数選択器１０５は符号ビット列Ｃｒｅｇ上位から読み取った符号語数ＣＬビット分の符号ビットを更新する。
【００７２】
ステップＳＴ３２７において、管理制御部は、処理された符号語の付加ビット数ＶＬ、ランレングスＲＬ共に０であるＥＯＢであれば、ＤＣＴブロックの復号処理を完了させる。処理された符号語がＥＯＢでなければ、付加ビットを処理する前に、ステップＳＴ３２８において、管理制御部は復号するＤＣＴ係数番号ＮｕｍをランレングスＲＬだけ進める。付加ビットの処理として、ステップＳＴ３２９において、付加ビット抽出器１０６は符号ビット列Ｃｒｅｇ上位から付加ビット数ＶＬビット分の符号ビットを参照して付加ビットＡｄｄｂｉｔに設定する。ステップＳＴ３３０において、係数復元器１０７は、参照された付加ビットＡｄｄｂｉｔから、図１及び図２では係数Ｃｏｅｆｆと示されたＡＣ係数を復元し、ＤＣＴ係数の配列に格納する。
【００７３】
ステップＳＴ３３１において、管理制御部は復号するＤＣＴ係数番号Ｎｕｍを１進める。ステップＳＴ３３２において、復号レジスタ１０３及びシフト数選択器１０５は、符号ビット列Ｃｒｅｇ上位から読み取った付加ビット数ＶＬビット分の符号ビットを更新する。ステップＳＴ３３３において、管理制御部は次に処理すべきＤＣＴ係数番号Ｎｕｍが６４未満であれば、ステップＳＴ３１８からステップＳＴ３３２のＡＣ係数の復号処理を繰り返し行わせる。
【００７４】
ここで、ステップＳＴ３０８及びステップＳＴ３２１における参照ビット数Ｒｅｆ、ステップＳＴ３１３及びステップＳＴ３２９における付加ビット数ＶＬが０のとき、設定すべきオフセットＯｆｆｓｅｔあるいは付加ビットＡｄｄｂｉｔは０として扱う。また、ステップＳＴ３２７において処理された符号語がＥＯＢであったときの復号処理の完了や、また、ステップＳＴ３２８でランレングスＲＬ分の加算でゼロ係数のランの処理を済ますことができるのは、ステップＳＴ３０３でＤＣＴブロックの係数を予め０に初期化しているためで、初期化をせずに復号処理を行う場合には、ＤＣＴブロック内の残りの係数を０に設定して終了するか、ランレングス分の係数を０に適時設定することが必要となる。
【００７５】
図１３の復号処理フローにおいて、零位置検出器１３０の動作に相当するステップＳＴ３０５及びステップＳＴ３１８における復号レジスタ１０３の符号ビット列Ｃｒｅｇの最上位のビット‘０’の位置情報Ｐｏｓの設定方法について説明する。これらは、プライオリティエンコーダを適用して最上位のビット‘０’を探索することに相当するが、装置規模の制約などにより適用できないときの処理例を示す。
【００７６】
例えば、図１４は零位置検出器１３０が保持する８ビットの数値０から２５５における最上位のビット‘０’の位置情報ＰｏｓのテーブルＰｏｓ＿Ｔａｂｌｅを示す図である。定数のテーブルであるためテーブル拡張器１００を介して設定される必要はない。まず、復号レジスタ１０３の上位８ビットＢＨに基づき、参照された位置情報Ｐｏｓが８未満ならば確定とする。８であれば、さらに下位８ビットＢＬに基づき、ここで参照された位置情報Ｐｏｓと先の上位８ビットＢＨで参照された位置情報Ｐｏｓの和を最終的な位置情報Ｐｏｓとして確定する。テーブルサイズに制約がなければ、最大符号語長１６ビットを一度に参照できるようにしても良いし、制約があればより細かく短いビット長でテーブルを設計しても構わない。
【００７７】
また、オフセット抽出器１３１の動作に相当するステップＳＴ３０８及びステップＳＴ３２１のオフセットＯｆｆｓｅｔ抽出方法について説明する。オフセット抽出器１３１には、復号レジスタ１０３の符号ビット列Ｃｒｅｇの値、その最上位のビット‘０’位置情報Ｐｏｓ、参照ビット数Ｒｅｆが入力され、オフセットＯｆｆｓｅｔが出力される。例えば、Ｃｒｅｇ値を（Ｐｏｓ＋１）ビット上位方向にシフトし、その後、復号レジスタ長１６と参照ビット数Ｒｅｆの差（１６−Ｒｅｆ）ビット下位方向にシフトした値をオフセットＯｆｆｓｅｔとすることができる。上位方向のシフトでは、空いた下位ビットには０が入ってくるものとする。また、下位方向のシフトでは、空いた上位ビットには０が入ってくるものとする。上記上位方向へのシフト処理は、Ｃｒｅｇ値で不要な上位ビットをクリアするために、下位方向へのシフト処理に先立って適用している。
また、他のオフセット値の抽出例としては、Ｃｒｅｇ値を（１６−（Ｐｏｓ＋１）−Ｒ
ｅｆ）ビット下位方向にシフトしてから（Ｐｏｓ＋１）ビットの有効ビット参照用のマスクをかけて得る構成であってもよい。
【００７８】
同様に、付加ビット抽出器１０６については、符号レジスタ１０３の符号ビット列Ｃｒｅｇが符号語数ＣＬビットのシフト後に更新されているため、最上位ビットから付加ビットＡｄｄｂｉｔを抽出すれば良く、上位方向のシフトなしに、（１６−ＶＬ）ビット下位方向にシフトした値を付加ビットＡｄｄｂｉｔとすることができる。
【００７９】
この実施の形態１では、拡張を行うテーブルの各項目であるハフマン符号語長ＣＬ、付加ビット数ＶＬ、ランレングスＲＬはそれぞれ独立したテーブルとして説明したが、少なくともそれぞれの最大値が収まるフィールドを設けた１つのテーブル要素としてパッキングしておき、拡張アドレスから本来の各項目をもつテーブル要素を一度に参照した後、対応フィールドに適宜分解して各項目の値を決定するようなテーブル構成を採って実現しても構わない。
【００８０】
以上のように、この実施の形態１によれば、標準テーブルＴａｂｌｅｓを拡張した拡張テーブルを適用して復号処理を行い、拡張アドレス生成部１０４による位置情報Ｐｏｓの参照、補助テーブル部１０２による基準位置Ｂａｓｅ及び参照ビット数Ｒｅｆの参照、拡張テーブル部１０１によるハフマン符号語長ＣＬ、付加ビット数ＶＬ及びランレングスＲＬの参照が符号語長によらず一定の手順で行えるため、各テーブルへのアクセス回数がばらつくことなく、従来の１ビットずつ参照範囲を拡大して符号語判定を行いながらハフマン符号語長ＣＬ，付加ビット数ＶＬ及びランレングスＲＬを参照するよりも符号語を高速に特定することができるという効果が得られる。
【００８１】
また、この実施の形態１によれば、標準テーブルＴａｂｌｅｓの他に冗長性を持った拡張テーブルと補助テーブルが必要になるが、従来のように（２５６×３）アドレス分のテーブルサイズより小さくすることができ、元の標準テーブルのテーブルサイズから最小限の増加に抑えることができるという効果が得られる。
【００８２】
さらに、この実施の形態１によれば、ハフマン符号語長の判定毎に各ハフマン符号語長の符号語最大値と各ハフマン符号語長に相当する符号ビット列を比較した結果を必要としないため、符号語最大値を保持するレジスタと比較器を不要にし、ハードウェア規模又はソフトウェア処理負荷の増大を抑えることができるという効果が得られる。
【００８３】
実施の形態２．
上記実施の形態１では、復号レジスタ１０３の符号ビット列Ｃｒｅｇは、シフト数選択器１０５により図９に示すハフマン符号語長ＣＬ、付加ビット数ＶＬの２回に分けて更新を行っていた。この実施の形態２では、復号レジスタ１０３の符号ビット列Ｃｒｅｇを、特定ビットまでのビット数（Ｐｏｓ＋１）、ハフマン符号語長ＣＬまでの残りのビット数（ＣＬ−（Ｐｏｓ＋１））、付加ビット数ＶＬの３回に分けて更新する場合について説明する。
【００８４】
図１５はこの発明の実施の形態２による可変長符号の復号装置の詳細構成を示すブロック図である。図１５では、実施の形態１の図２に対して、零位置検出器１３０から出力された位置情報Ｐｏｓをシフト数選択器１０５に入力し、零位置検出器１３０からオフセット抽出器１３１への位置情報Ｐｏｓの入力を省略している点が異なっており、その他の構成は同じである。
【００８５】
次に動作について説明する。
ここでは、実施の形態１との動作の相違を説明する。
シフト数選択器１０５は、復号レジスタ１０３の符号ビット列Ｃｒｅｇを１回目の特定ビットまでのビット数（Ｐｏｓ＋１）シフトして更新させることで、参照ビットを符号ビット列Ｃｒｅｇの最上位ビットから抽出可能とする。オフセット抽出器１３１は、復号レジスタ１０３の符号ビット列Ｃｒｅｇを参照し、符号ビット列Ｃｒｅｇの最上位ビットから参照ビット数Ｒｅｆの符号ビット値をオフセットＯｆｆｓｅｔとして出力する。上記実施の形態１と同様にハフマン符号語長ＣＬ等を得た後、シフト数選択器１０５は、復号レジスタ１０３の符号ビット列Ｃｒｅｇを２回目のハフマン符号語長ＣＬまでの残りのビット数（ＣＬ−（Ｐｏｓ＋１））シフトして更新させることで符号語長分のシフトを完了させた後、上記実施の形態１と同様に３回目の付加ビット数ＶＬシフトして更新させる。
【００８６】
図１６はＤＣＴブロックの復号処理フローにおけるＤＣ係数復号処理及びＡＣ係数復号処理を示す図であり、上記実施の形態１の図１３に示すＤＣ係数復号処理及びＡＣ係数復号処理に相当する。
【００８７】
図１６のＤＣ係数復号処理では、図１３におけるステップＳＴ３０８をステップＳＴ３４１，ＳＴ３４２に置き換え、また、ステップＳＴ３１２をステップＳＴ３４３に置き換えている。ステップＳＴ３４１では、位置情報Ｐｏｓで見つけた復号レジスタ１０３の最上位のビット‘０’までの（Ｐｏｓ＋１）ビットを更新しており、ステップＳＴ３４２では、Ｒｅｆビットの参照ビットを復号レジスタ１０３の最上位ビットからＯｆｆｓｅｔを得られるようになる。ステップＳＴ３４３において、図１３のステップＳＴ３１２ではＣＬビット更新していたところ、ここではすでにステップＳＴ３４１で（Ｐｏｓ＋１）ビットの更新をしているので、残りの（ＣＬ−（Ｐｏｓ＋１））ビットの更新を行う。
【００８８】
図１６のＡＣ係数復号処理では、図１３におけるステップＳＴ３２１をステップＳＴ３５１，ＳＴ３５２に置き換え、また、ステップＳＴ３２６をステップＳＴ３５３に置き換えている。ステップＳＴ３５１では、位置情報Ｐｏｓで見つけた復号レジスタ１０３の最上位のビット‘０’までの（Ｐｏｓ＋１）ビットを更新しており、ステップＳＴ３５２では、Ｒｅｆビットの参照ビットを復号レジスタ１０３の最上位ビットからＯｆｆｓｅｔを得られるようになる。ステップＳＴ３５３において、図１３のステップＳＴ３２６ではＣＬビット更新していたところ、ここではすでにステップＳＴ３５１で（Ｐｏｓ＋１）ビットの更新をしているので、残りの（ＣＬ−（Ｐｏｓ＋１））ビットの更新を行う。
【００８９】
この実施の形態２に示される可変長符号の復号装置では、オフセット抽出器１３１の動作は、復号レジスタ１０３の符号ビット列Ｃｒｅｇの最上位ビットから指定ビット数の符号ビットを抽出する付加ビット抽出器１０６の動作と基本的に同一となる。よって、参照ビット数Ｒｅｆと付加ビット数ＶＬ、オフセットＯｆｆｓｅｔと付加ビットＡｄｄｂｉｔは、復号処理フロー上、同時に参照されないため、それぞれ切替器を設けることで適宜切り替えれば、オフセット抽出器１３１と付加ビット抽出器１０６の共通化を図ることも可能となる。
【００９０】
以上のように、この実施の形態２によれば上記実施の形態１と同様の効果が得られる。
【００９１】
実施の形態３．
上記実施の形態１では、復号レジスタ１０３の符号ビット列Ｃｒｅｇは、シフト数選択器１０５により図９に示すハフマン符号語長ＣＬ、付加ビット数ＶＬの２回に分けて更新を行っていた。この実施の形態３では、復号レジスタ１０３の符号ビット列Ｃｒｅｇを、ハフマン符号語長ＣＬと付加ビット数ＶＬをまとめて、（ＣＬ＋ＶＬ）の１回のみで更新する場合について説明する。
【００９２】
図１７はこの発明の実施の形態３による可変長符号の復号装置の詳細構成を示すブロック図である。図１７では、上記実施の形態１の図２と比較して、付加ビット抽出器１０６にハフマン符号語長テーブル１１０から出力されたハフマン符号語長ＣＬを入力に加え、復号レジスタ１０３は、最大付加ビット数より大きい値をとる最大符号語長に等しい１６ビットではなく、さらに最大付加ビット数１０ビットを加えた２６ビットとし、実施の形態１と同様に符号ビットが満たすように更新され保持される点が異なっており、その他の構成は図２と同じである。
【００９３】
次に動作について説明する。
ここでは、上記実施の形態１との動作の相違を説明する。
まず、符号語長ＣＬの処理については、上記実施の形態１と同様に拡張テーブルの出力が得られるまで処理を行う。付加ビット抽出器１０６は、復号レジスタ１０３の最上位のハフマン符号語長ＣＬビット以降の付加ビット数ＶＬビットの符号ビットを付加ビットＡｄｄｂｉｔとして出力した後、上記実施の形態１と同様に付加ビットを処理する。シフト数選択器１０５は、符号語及び付加ビットの処理が終了しているため、復号レジスタ１０３の符号ビット列Ｃｒｅｇをハフマン符号語長ＣＬと付加ビット数ＶＬの和（ＣＬ＋ＶＬ）ビットシフトして更新させる。
【００９４】
図１８はＤＣＴブロックの復号処理フローにおけるＤＣ係数復号処理及びＡＣ係数復号処理を示す図であり、上記実施の形態１の図１３に示すＤＣ係数復号処理及びＡＣ係数復号処理に相当する。
【００９５】
図１８のＤＣ係数復号処理では、図１３におけるステップＳＴ３１２を削除し、図１３におけるステップＳＴ３１３をステップＳＴ３６１に置き換え、また、ステップＳＴ３１７をステップＳＴ３６２に置き換えている。ステップＳＴ３６１において、図１３のステップＳＴ３１２ではＣＬビット更新していたところ、ここでは更新を行っていないので、復号レジスタ１０３の上位ＣＬビット以降のＶＬビットを付加ビットとして設定する。ステップＳＴ３６２において、図１３のステップＳＴ３１２で行っていたＣＬビット更新と併せて、（ＣＬ＋ＶＬ）ビットの更新を行う。
【００９６】
図１８のＡＣ係数復号処理では、図１３におけるステップＳＴ３２６を削除し、図１３におけるステップＳＴ３２９をステップＳＴ３７１に置き換え、また、ステップＳＴ３３２をステップＳＴ３７２に置き換えている。ステップＳＴ３７１において、図１３のステップＳＴ３２６ではＣＬビット更新していたところ、ここでは更新を行っていないので、復号レジスタ１０３の上位ＣＬビット以降のＶＬビットを付加ビットとして設定する。ステップＳＴ３７２において、図１３のステップＳＴ３２６で行っていたＣＬビット更新と併せて、（ＣＬ＋ＶＬ）ビットの更新を行う。ここで、ステップＳＴ３２７でＥＯＢと判定されたときには、図１３のステップＳＴ３２６で行っていたＣＬビットの更新がされていないため、ステップＳＴ３７３でＣＬビットの更新を行う。
【００９７】
この実施の形態３に示される可変長符号の復号装置では、付加ビット抽出器１０６の動作は、復号レジスタ１０３の符号ビット列Ｃｒｅｇの最上位ビットから第１指定ビット数以降の第２指定ビット数の符号ビットを抽出するオフセット抽出器１３１の動作と基本的に同一となる。よって、位置情報Ｐｏｓとハフマン符号語長ＣＬ、参照ビット数Ｒｅｆと付加ビット数ＶＬ、オフセットＯｆｆｓｅｔと付加ビットＡｄｄｂｉｔは、復号処理フロー上、同時に参照されないため、それぞれ切替器を設けることで適宜切り替えれば、付加ビット抽出器１０６とオフセット抽出器１３１の共通化を図ることも可能となる。
【００９８】
以上のように、この実施の形態３によれば上記実施の形態１と同様の効果が得られる。
【００９９】
上記実施の形態１から上記実施の形態３に示される可変長符号の復号装置は、例としてＪＰＥＧ方式に沿って応用形態の一例を示したもので、同一構成でＪＰＥＧ方式以外の他の可変長符号化方式を適用した応用形態についても実現可能である。また、ハフマン符号語と付加ビットが基本的に交互に並べられた符号形式を対象に説明したが、付加ビットがなく、ハフマン符号語のみが並ぶ符号形式であっても構わない。さらに、全ての係数を、ＤＣ係数のように直前復号値との差分として復号し、あるいは差分を用いずＡＣ係数のように復号する構成であっても構わない。さらに、可変長符号語がハフマン符号で設計されていなくても構わない。さらに、対象データは、画像だけに限らず、音声等にも適用することが可能である。
【０１００】
さらに、上記実施の形態１から上記実施の形態３に示される可変長符号の復号装置は、専用装置であっても、汎用計算機等に実装された装置であっても構わない。さらに、装置に読み取り専用で固定的又は書換え可能で保守できる形態で実装されたものであっても、移動可能で可読な媒体やチップ上に蓄積され読み取ることで実行されても構わない。さらに、磁気的、電気的等、接触、非接触及び変調等による記録方式の差によらず、有効であることは言及するまでもない。
【図面の簡単な説明】
【０１０１】
【図１】この発明の実施の形態１による可変長符号の復号装置の概略構成を示すブロック図である。
【図２】この発明の実施の形態１による可変長符号の復号装置の詳細構成を示すブロック図である。
【図３】ＤＣＴブロックとジグザグスキャンを示す図である。
【図４】係数列の符号語出力単位を示す図である。
【図５】ＤＣＴブロックの符号語構成を示す図である。
【図６】輝度成分のＤＣ係数の符号語テーブルの一例を示す図である。
【図７】色差成分のＡＣ係数の符号語テーブルの一例を示す図である。
【図８】ハフマンテーブルの定義セグメント例を示す図である。
【図９】ハフマン符号語長と付加ビット数を示す図である。
【図１０】この発明の実施の形態１による可変長符号の復号装置のハフマンテーブルの拡張処理フローを示す図である。
【図１１】この発明の実施の形態１による可変長符号の復号装置の拡張テーブルの出力処理フローを示す図である。
【図１２】この発明の実施の形態１による可変長符号の復号装置における色差成分のＡＣ係数の符号語テーブルの一例を示す図である。
【図１３】この発明の実施の形態１による可変長符号の復号装置のＤＣＴブロックの復号処理フローを示す図である。
【図１４】この発明の実施の形態１による可変長符号の復号装置における８ビット値の最上位ビット‘０’の位置情報テーブルを示す図である。
【図１５】この発明の実施の形態２による可変長符号の復号装置の詳細構成を示すブロック図である。
【図１６】この発明の実施の形態２による可変長符号の復号装置のＤＣＴブロックの復号処理フローにおけるＤＣ係数復号処理及びＡＣ係数復号処理を示す図を示す図である。
【図１７】この発明の実施の形態３による可変長符号の復号装置の詳細構成を示すブロック図である。
【図１８】この発明の実施の形態３による可変長符号の復号装置のＤＣＴブロックの復号処理フローにおけるＤＣ係数復号処理及びＡＣ係数復号処理を示す図を示す図である。
【符号の説明】
【０１０２】
１００  テーブル拡張器、１０１  拡張テーブル部、１０２  補助テーブル部、１０３  復号レジスタ、１０４  拡張アドレス生成部、１０５  シフト数選択器、１０６  付加ビット抽出器、１０７  係数復元器、１０８  ＤＣ係数バッファ、１１０  ハフマン符号語長テーブル、１１１  付加ビット数テーブル、１１２  ランレングステーブル、１２０  基準位置テーブル、１２１  参照ビット数テーブル、１３０  零位置検出部、１３１  オフセット抽出器、１３２  加算器１３２。
【図１】
2006295631.tif 000003
【図２】
2006295631.tif 000004
【図３】
2006295631.tif 000005
【図４】
2006295631.tif 000006
【図５】
2006295631.tif 000007
【図６】
2006295631.tif 000008
【図７】
2006295631.tif 000009
【図８】
2006295631.tif 000010
【図９】
2006295631.tif 000011
【図１０】
2006295631.tif 000012
【図１１】
2006295631.tif 000013
【図１２】
2006295631.tif 000014
【図１３】
2006295631.tif 000015
【図１４】
2006295631.tif 000016
【図１５】
2006295631.tif 000017
【図１６】
2006295631.tif 000018
【図１７】
2006295631.tif 000019
【図１８】
2006295631.tif 000020