(57)【要約】【課題】１クロックサイクル内に２個の可変長符号を復号することができ、信号処理の処理速度を向上させることが可能な可変長符号復号装置を提供する。【解決手段】ハフマン符号と付加ビットからなる可変長符号で構成される第１データが入力される入力バッファ１０２と、可変長符号の全てのパターンについて、可変長符号の全ビット長を記憶する符号長テーブル１０４と、符号長テーブルを参照して、第１データから第１可変長符号を検出し、第１可変長符号の全ビット長を出力する第１ハフマン符号検出部１１２と、第１データを全ビット長分だけ左シフトし第２データを出力する第１シフトバッファ１１４と、符号長テーブルを参照して、第２データから第２可変長符号を検出し、第２可変長符号の全ビット長を出力する第２ハフマン符号検出部１２２と、第２データを全ビット長分だけ左シフトし第３データを入力バッファに出力する第２シフトバッファ１２４とを備える。【選択図】図１
2011139128.tif 000002
【特許請求の範囲】
【請求項１】
ハフマン符号と付加ビットの組み合わせからなる可変長符号で構成される第１データが入力される入力バッファと、
前記可変長符号の全てのパターンについて、前記可変長符号のビット長さである全ビット長を記憶する符号長テーブルと、
前記第１データが入力されて、前記符号長テーブルを参照して、前記第１データから第１可変長符号を検出し、検出された前記第１可変長符号の前記全ビット長を出力する第１ハフマン符号検出部と、
前記第１データが入力されて、前記第１データを前記全ビット長分だけ左シフトし、生成した第２データを出力する第１シフトバッファと、
前記第２データが入力されて、前記符号長テーブルを参照して、前記第２データから第２可変長符号を検出し、検出された前記第２可変長符号の前記全ビット長を出力する第２ハフマン符号検出部と、
前記第２データが入力されて、前記第２データを前記全ビット長分だけ左シフトし、生成した第３データを前記入力バッファに出力する第２シフトバッファと
を備える、可変長符号復号装置。
【請求項２】
前記第１ハフマン符号検出部は、前記符号長テーブルを参照して、前記ハフマン符号の第１ビット長と、第１Ｒ／Ｓインデックスを生成して出力し、
前記第２ハフマン符号検出部は、前記符号長テーブルを参照して、前記ハフマン符号の第２ビット長と、第２Ｒ／Ｓインデックスを生成して出力し、
ゼロランレングスとそれに続く付加ビットのビット長の組み合わせを一対の情報として記憶するＲ／Ｓテーブルと、
前記第１データが入力されて、前記第１データを前記ハフマン符号の第１ビット長分だけ左シフトし、生成した第４データを出力する第３シフトバッファと、
前記第４データが入力されて、前記第１Ｒ／Ｓインデックスと、前記Ｒ／Ｓテーブルを参照して、前記第４データから第１ゼロランレングスと前記第１ゼロランレングスに後続する第１非ゼロ係数を算出する第１Ｒ／Ｓデコーダと、
前記第２データが入力されて、前記第２データを前記ハフマン符号の第２ビット長分だけ左シフトし、生成した第５データを出力する第４シフトバッファと、
前記第５データが入力されて、前記第２Ｒ／Ｓインデックスと、前記Ｒ／Ｓテーブルを参照して、前記第５データから第２ゼロランレングスと前記第２ゼロランレングスに後続する第２非ゼロ係数を算出する第２Ｒ／Ｓデコーダと
を更に備える、請求項１に記載の可変長符号復号装置。
【請求項３】
ハフマン符号と付加ビットの組み合わせからなる可変長符号で構成される第１データが入力される入力バッファと、
ゼロランレングスが０となる前記可変長符号について、前記可変長符号のビット長さである全ビット長を記憶する特定符号テーブルと、
前記第１データが入力されて、前記特定符号テーブルを参照して、前記第１データから第１可変長符号を検出し、検出された前記第１可変長符号の前記全ビット長を出力する第１特定符号検出部と、
前記ハフマン符号の各ビット長における先頭コードのインデックスが記憶された先頭符号テーブルと、
前記第１データが入力されて、前記先頭符号テーブルを参照して、前記第１データからハフマン符号を検出し、検出された前記ハフマン符号の第１ビット長と、第１Ｒ／Ｓインデックスを出力する第１ハフマン符号検出部と、
ゼロランレングスとそれに続く付加ビットのビット長の組み合わせを一対の情報として記憶するＲ／Ｓテーブルと、
前記第１データが入力されて、前記第１Ｒ／Ｓインデックスと、前記Ｒ／Ｓテーブルを参照して、前記第１データから第１ゼロランレングスと前記第１ゼロランレングスに後続する第１非ゼロ係数を算出する第１Ｒ／Ｓデコーダと、
前記第１データが入力されて、前記特定符号テーブルが参照されたとき、前記第１データを前記第１可変長符号の前記全ビット長分だけ左シフトし、前記先頭符号テーブルが参照されたとき、前記第１データを前記ハフマン符号の第１ビット長分だけ左シフトし、前記第１データの先頭が付加ビットであったとき、前記第１データを前記付加ビットのビット長分だけ左シフトし、生成した第２データを出力する第１シフトバッファと、
前記第２データが入力されて、前記特定符号テーブルを参照して、前記第２データから第２可変長符号を検出し、検出された前記第２可変長符号の前記全ビット長を出力する第２特定符号検出部と、
前記第２データが入力されて、前記先頭符号テーブルを参照して、前記第２データからハフマン符号を検出し、検出された前記ハフマン符号の第２ビット長と、第２Ｒ／Ｓインデックスを出力する第２ハフマン符号検出部と、
前記第２データが入力されて、前記第２Ｒ／Ｓインデックスと、前記Ｒ／Ｓテーブルを参照して、前記第２データから第２ゼロランレングスと前記第２ゼロランレングスに後続する第２非ゼロ係数を算出する第２Ｒ／Ｓデコーダと、
前記第２データが入力されて、前記特定符号テーブルが参照されたとき、前記第２データを前記第２可変長符号の前記全ビット長分だけ左シフトし、前記先頭符号テーブルが参照されたとき、前記第２データを前記ハフマン符号の第２ビット長分だけ左シフトし、前記第２データの先頭が付加ビットであったとき、前記第２データを前記付加ビットのビット長分だけ左シフトし、生成した第３データを出力する第２シフトバッファと
を備える、可変長符号復号装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、可変長符号復号装置に関する。
【背景技術】
【０００２】
ＪＰＥＧの圧縮データは、連続するゼロの個数を表すゼロランレングスと、それに後続する非ゼロ係数を一対として、可変長符号化が行われたデータである。符号化の際、ゼロランレングスと非ゼロ係数の組み合わせを用いてハフマン符号が求められる。また、非ゼロ係数の大きさ、即ちＡＣ成分の大きさを特定するための付加ビットが決定される。そして、一つの可変長符号は、図３に示すように、ハフマン符号＋付加ビットの組み合わせで構成される。図３は、ＪＰＥＧの可変長符号を示す説明図である。
【０００３】
ハフマン符号は、ゼロランレングスと付加ビットのビット長の組み合わせに対して、出現頻度の高い順に短いビット長の符号を割り当てた符号である。付加ビットは、ゼロランレングスに後続する非ゼロ係数の±（正又は負）と振幅を復元するために必要なビット列である。
【０００４】
上記のように符号化された可変長符号の復号は、まず、１）可変長符号の中からハフマン符号を検出する。そして、２）検出されたハフマン符号がハフマン符号テーブルの先頭のコードから何番目のコードであるかを表すインデックスを導出する。次に、３）ゼロランレングス＋付加ビットのビット長（符号長）の組み合わせのテーブル（Ｒ／Ｓテーブル）を参照して、該当するインデックスのゼロランレングスと付加ビットのビット長を取得する。その後、４）ハフマン符号に続くビット列から付加ビットのビット長を有するビット列（付加ビット）を切り出し、連続するゼロに後続する非ゼロ係数を算出する。
【０００５】
可変長符号の復号に関する上記１）〜４）の一連の動作を、従来技術と同じ性能（１データ／１クロック以上の復号）を持ち、特定コード用に別回路を持たない構成について、図４を参照して説明する。図４は、従来の可変長符号復号装置１０の構成を示すブロック図である。
【０００６】
ハフマン符号検出部１４は、入力バッファ１２から可変長符号で構成される圧縮データが入力されて、先頭符号テーブル２４を参照して、ハフマン符号を検出する。先頭符号テーブル２４は、ハフマン符号の各ビット長の先頭のコードと、各ビット長の先頭のコードがハフマン符号テーブルの先頭のコードから何番目の位置であるかという情報を記憶したテーブルである。ハフマン符号が検出されると、検出されたハフマン符号がハフマン符号テーブルの先頭のコードから何番目のコードであるかを表すインデックス（Ｒ／Ｓインデックス）と、検出されたハフマン符号のビット長（符号長）が得られる。
【０００７】
そして、ハフマン符号検出部１４は、検出されたハフマン符号のＲ／Ｓインデックスと、検出されたハフマン符号のビット長を、Ｒ／Ｓデコーダ１８へ出力する。ＤＣ成分の場合は、ハフマン符号が検出されると付加ビットのビット長（符号長）が確定するので、ハフマン符号検出部１４は、付加ビットのビット長をＲ／Ｓデコーダ１８へ出力する。
【０００８】
第１シフトバッファ１６は、入力バッファ１２から出力された可変長符号を、ハフマン符号検出部１４で検出されたハフマン符号のビット長分だけ左シフトして、付加ビットの先頭を切り出し、生成したデータをＲ／Ｓデコーダ１８と第２シフトバッファ２２に出力する。
【０００９】
Ｒ／Ｓデコーダ１８が参照するＲ／Ｓテーブル２６は、ゼロランレングスとそれに続く付加ビットのビット長の組み合わせを一対の情報として記憶しているテーブルである。Ｒ／Ｓテーブル２６では、ハフマン符号がハフマン符号の生成順に配置されている。
【００１０】
Ｒ／Ｓデコーダ１８は、入力されたＲ／Ｓインデックスと、Ｒ／Ｓテーブル２６に基づいて、Ｒ／Ｓインデックスに対応するゼロランレングスと付加ビットのビット長の情報を得ることができる。そして、Ｒ／Ｓデコーダ１８は、ゼロランレングスに後続する非ゼロ係数を算出し、非ゼロ係数をゼロランレングスと共に逆量子化部（図示せず。）へ出力する。
【００１１】
第２シフトバッファ２２は、第１シフトバッファ１６から出力されたデータを、Ｒ／Ｓデコーダ１８で得られた付加ビットのビット長分だけ左シフトして、生成したデータを入力バッファ１２に出力する。
【００１２】
入力バッファ１２は、第２シフトバッファ２２から出力されるデータの最後尾と、可変長符号復号装置１０に入力される可変長符号の先頭が、連続するビット列になるように連結する。そして、入力バッファ１２は、次のクロックサイクルで連結したビット列を出力し、一つの可変長符号の復号を実施する。
【００１３】
以上の動作により、１クロックサイクルで一つの可変長符号を復号し、１データ／１クロック以上の復号処理が可能となる。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開２００２-４３９４９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１５】
近年、デジタルスチルカメラ等の撮像装置では、記録済みのＪＰＥＧデータをディスプレイ部に表示するのにかかる時間を短縮する等の目的のため、可変長符号復号装置に対して、より高速な処理速度が求められている。
【００１６】
ＪＰＥＧの圧縮データは、ゼロランレングスと、それに後続する非ゼロ係数を一対として、一つの可変長符号として符号化したものであるから、ゼロランレングスが一つ以上である可変長符号の場合、復号によって得られる係数データは２個以上になる。従って、１個の可変長符号の復号が１クロックサイクルで終了することができれば、２倍速以上での復号が可能となる。
【００１７】
ところが、ゼロランレングスが０である可変長符号の場合は、特許文献１（特開２００２-４３９４９号公報）のように特定符号のみ、その復号が１クロックサイクルで処理できても、復号によって得られる係数データは１個でしかない。そのため、等倍速での復号にしかならない。
【００１８】
また、図４の構成で更に、ハフマンコード検出部１４とＲ／Ｓデコーダ１８を従属に２組接続する構成とすれば、１クロックサイクル内に２個の符号を処理することはできる。しかし、シフトバッファ１６、２２が４段従属接続となるため、動作クロック周波数の低下を招き、単位時間あたりの処理能力は大差ないものとなってしまう。
【００１９】
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、１クロックサイクル内に２個の可変長符号を復号することができ、信号処理の処理速度を向上させることが可能な、新規かつ改良された可変長符号復号装置を提供することにある。
【課題を解決するための手段】
【００２０】
上記課題を解決するために、本発明のある観点によれば、ハフマン符号と付加ビットの組み合わせからなる可変長符号で構成される第１データが入力される入力バッファと、可変長符号の全てのパターンについて、可変長符号のビット長さである全ビット長を記憶する符号長テーブルと、第１データが入力されて、符号長テーブルを参照して、第１データから第１可変長符号を検出し、検出された第１可変長符号の全ビット長を出力する第１ハフマン符号検出部と、第１データが入力されて、第１データを全ビット長分だけ左シフトし、生成した第２データを出力する第１シフトバッファと、第２データが入力されて、符号長テーブルを参照して、第２データから第２可変長符号を検出し、検出された第２可変長符号の全ビット長を出力する第２ハフマン符号検出部と、第２データが入力されて、第２データを全ビット長分だけ左シフトし、生成した第３データを入力バッファに出力する第２シフトバッファとを備える、可変長符号復号装置が提供される。
【００２１】
この構成により、入力バッファに、ハフマン符号と付加ビットの組み合わせからなる可変長符号で構成される第１データが入力され、第１ハフマン符号検出部において、第１データが入力されて、符号長テーブルが参照されて、第１データから第１可変長符号が検出され、検出された第１可変長符号の全ビット長が出力される。そして、第１シフトバッファにおいて、第１データが入力されて、第１データが全ビット長分だけ左シフトされ、生成された第２データが出力される。次に、第２ハフマン符号検出部において、第２データが入力されて、符号長テーブルが参照されて、第２データから第２可変長符号が検出され、検出された第２可変長符号の全ビット長が出力される。そして、第２シフトバッファにおいて、第２データが入力されて、第２データが全ビット長分だけ左シフトされ、生成された第３データが入力バッファに出力される。ここで、符号長テーブルは、可変長符号の全てのパターンについて、可変長符号のビット長さである全ビット長を記憶したテーブルである。
【００２２】
上記第１ハフマン符号検出部は、符号長テーブルを参照して、ハフマン符号の第１ビット長と、第１Ｒ／Ｓインデックスを生成して出力し、第２ハフマン符号検出部は、符号長テーブルを参照して、ハフマン符号の第２ビット長と、第２Ｒ／Ｓインデックスを生成して出力し、ゼロランレングスとそれに続く付加ビットのビット長の組み合わせを一対の情報として記憶するＲ／Ｓテーブルと、第１データが入力されて、第１データをハフマン符号の第１ビット長分だけ左シフトし、生成した第４データを出力する第３シフトバッファと、第４データが入力されて、第１Ｒ／Ｓインデックスと、Ｒ／Ｓテーブルを参照して、第４データから第１ゼロランレングスと第１ゼロランレングスに後続する第１非ゼロ係数を算出する第１Ｒ／Ｓデコーダと、第２データが入力されて、第２データをハフマン符号の第２ビット長分だけ左シフトし、生成した第５データを出力する第４シフトバッファと、第５データが入力されて、第２Ｒ／Ｓインデックスと、Ｒ／Ｓテーブルを参照して、第５データから第２ゼロランレングスと第２ゼロランレングスに後続する第２非ゼロ係数を算出する第２Ｒ／Ｓデコーダとを更に備える。
【００２３】
この構成により、第１ハフマン符号検出部において、符号長テーブルが参照されて、ハフマン符号の第１ビット長と、第１Ｒ／Ｓインデックスが生成されて出力され、第２ハフマン符号検出部において、符号長テーブルが参照されて、ハフマン符号の第２ビット長と、第２Ｒ／Ｓインデックスが生成されて出力される。第３シフトバッファにおいて、第１データが入力されて、第１データがハフマン符号の第１ビット長分だけ左シフトされ、生成された第４データが出力され、第１Ｒ／Ｓデコーダにおいて、第４データが入力されて、第１Ｒ／Ｓインデックスと、Ｒ／Ｓテーブルが参照されて、第４データから第１ゼロランレングスと第１ゼロランレングスに後続する第１非ゼロ係数が算出される。また、第４シフトバッファにおいて、第２データが入力されて、第２データがハフマン符号の第２ビット長分だけ左シフトされ、生成された第５データが出力され、第２Ｒ／Ｓデコーダにおいて、第５データが入力されて、第２Ｒ／Ｓインデックスと、Ｒ／Ｓテーブルが参照されて、第５データから第２ゼロランレングスと第２ゼロランレングスに後続する第２非ゼロ係数が算出される。
【００２４】
上記課題を解決するために、本発明の別の観点によれば、ハフマン符号と付加ビットの組み合わせからなる可変長符号で構成される第１データが入力される入力バッファと、ゼロランレングスが０となる可変長符号について、可変長符号のビット長さである全ビット長を記憶する特定符号テーブルと、第１データが入力されて、特定符号テーブルを参照して、第１データから第１可変長符号を検出し、検出された第１可変長符号の全ビット長を出力する第１特定符号検出部と、ハフマン符号の各ビット長における先頭コードのインデックスが記憶された先頭符号テーブルと、第１データが入力されて、先頭符号テーブルを参照して、第１データからハフマン符号を検出し、検出されたハフマン符号の第１ビット長と、第１Ｒ／Ｓインデックスを出力する第１ハフマン符号検出部と、ゼロランレングスとそれに続く付加ビットのビット長の組み合わせを一対の情報として記憶するＲ／Ｓテーブルと、第１データが入力されて、第１Ｒ／Ｓインデックスと、Ｒ／Ｓテーブルを参照して、第１データから第１ゼロランレングスと第１ゼロランレングスに後続する第１非ゼロ係数を算出する第１Ｒ／Ｓデコーダと、第１データが入力されて、特定符号テーブルが参照されたとき、第１データを第１可変長符号の全ビット長分だけ左シフトし、先頭符号テーブルが参照されたとき、第１データをハフマン符号の第１ビット長分だけ左シフトし、第１データの先頭が付加ビットであったとき、第１データを付加ビットのビット長分だけ左シフトし、生成した第２データを出力する第１シフトバッファと、第２データが入力されて、特定符号テーブルを参照して、第２データから第２可変長符号を検出し、検出された第２可変長符号の全ビット長を出力する第２特定符号検出部と、第２データが入力されて、先頭符号テーブルを参照して、第２データからハフマン符号を検出し、検出されたハフマン符号の第２ビット長と、第２Ｒ／Ｓインデックスを出力する第２ハフマン符号検出部と、第２データが入力されて、第２Ｒ／Ｓインデックスと、Ｒ／Ｓテーブルを参照して、第２データから第２ゼロランレングスと第２ゼロランレングスに後続する第２非ゼロ係数を算出する第２Ｒ／Ｓデコーダと、第２データが入力されて、特定符号テーブルが参照されたとき、第２データを第２可変長符号の全ビット長分だけ左シフトし、先頭符号テーブルが参照されたとき、第２データをハフマン符号の第２ビット長分だけ左シフトし、第２データの先頭が付加ビットであったとき、第２データを付加ビットのビット長分だけ左シフトし、生成した第３データを出力する第２シフトバッファとを備える、可変長符号復号装置が提供される。
【００２５】
この構成により、入力バッファに、ハフマン符号と付加ビットの組み合わせからなる可変長符号で構成される第１データが入力され、第１特定符号検出部において、第１データが入力されて、特定符号テーブルが参照されて、第１データから第１可変長符号が検出され、検出された第１可変長符号の全ビット長が出力される。ここで、特定符号テーブルは、ゼロランレングスが０となる可変長符号について、可変長符号のビット長さである全ビット長を記憶したテーブルである。また、ハフマン符号検出部において、第１データが入力されて、先頭符号テーブルが参照されて、第１データからハフマン符号が検出され、検出されたハフマン符号の第１ビット長、第１Ｒ／Ｓインデックスが出力される。ここで、先頭符号テーブルは、ハフマン符号の各ビット長における先頭コードのインデックスが記憶されたテーブルである。更に、第１Ｒ／Ｓデコーダにおいて、第１データが入力されて、第１Ｒ／Ｓインデックスと、Ｒ／Ｓテーブルが参照されて、第１データから第１ゼロランレングスと第１ゼロランレングスに後続する第１非ゼロ係数が算出される。ここで、Ｒ／Ｓテーブルは、ゼロランレングスとそれに続く付加ビットのビット長の組み合わせを一対の情報として記憶するテーブルである。そして、第１シフトバッファにおいて、第１データが入力されて、特定符号テーブルが参照されたとき、第１データが全ビット長分だけ左シフトされ、先頭符号テーブルが参照されたとき、第１データがハフマン符号の符号長分だけ左シフトされ、第１データの先頭が付加ビットであったとき、第１データが付加ビットのビット長分だけ左シフトされ、生成された第２データが出力される。
また、第２特定符号検出部において、第２データが入力されて、特定符号テーブルが参照されて、第２データから第２可変長符号が検出され、検出された第２可変長符号の全ビット長が出力される。また更に、第２ハフマン符号検出部において、第２データが入力されて、先頭符号テーブルが参照されて、第２データからハフマン符号が検出され、検出されたハフマン符号の第２ビット長と、第２Ｒ／Ｓインデックスが出力される。また、第２Ｒ／Ｓデコーダにおいて、第２データが入力されて、第２Ｒ／Ｓインデックスと、Ｒ／Ｓテーブルが参照されて、第２データから第２ゼロランレングスと第２ゼロランレングスに後続する第２非ゼロ係数が算出される。そして、第２シフトバッファにおいて、第２データが入力されて、特定符号テーブルが参照されたとき、第２データが第２可変長符号の全ビット長分だけ左シフトされ、先頭符号テーブルが参照されたとき、第２データがハフマン符号の第２ビット長分だけ左シフトされ、第２データの先頭が付加ビットであったとき、第２データが付加ビットのビット長分だけ左シフトされ、生成された第３データを出力される。
【発明の効果】
【００２６】
以上説明したように本発明によれば、１クロックサイクル内に２個の可変長符号を復号することができ、信号処理の処理速度を向上させることができる。
【図面の簡単な説明】
【００２７】
【図１】本発明の第１の実施形態に係る可変長符号復号装置１００の構成を示すブロック図である。
【図２】本発明の第２の実施形態に係る可変長符号復号装置２００の構成を示すブロック図である。
【図３】ＪＰＥＧの可変長符号を示す説明図である。
【図４】従来の可変長符号復号装置１０の構成を示すブロック図である。
【発明を実施するための形態】
【００２８】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００２９】
（第１の実施形態）
図１を参照して、本発明の第１の実施形態に係る可変長符号復号装置１００について説明する。図１は、本実施形態に係る可変長符号復号装置１００の構成を示すブロック図である。
【００３０】
可変長符号復号装置１００は、第１ハフマン符号検出部１１２と、第２ハフマン符号検出部１２２と、第１シフトバッファ１１４と、第２シフトバッファ１２４と、第１Ｒ／Ｓデコーダ１１６と、第２Ｒ／Ｓデコーダ１２６と、第３シフトバッファ１１８、第４シフトバッファ１２８と、Ｒ／Ｓテーブル１０６と、符号長テーブル１０４などからなる。
【００３１】
第１ハフマン符号検出部１１２と、第２ハフマン符号検出部１２２は、ハフマン符号を検出し、後段の処理に必要なパラメータを生成する。
【００３２】
第１Ｒ／Ｓデコーダ１１６と、第２Ｒ／Ｓデコーダ１２６は、第１ハフマン符号検出部１１２と、第２ハフマン符号検出部１２２で生成されたパラメータと、Ｒ／Ｓテーブル１０６を参照して、ゼロランレングス（第１ゼロランレングス、第２ゼロランレングス）と非ゼロ係数（第１係数、第２係数）を算出し、出力する。
【００３３】
第１シフトバッファ１１４、第２シフトバッファ１２４は、データを、可変長符号（ハフマン符号＋付加ビット）のビット長分（全ビット長分）だけ左シフトして、生成したデータを出力する。
【００３４】
第３シフトバッファ１１８、第４シフトバッファ１２８は、データを、ハフマン符号のビット長分（ハフマン符号長分）だけ左シフトして出力する。
【００３５】
Ｒ／Ｓテーブル１０６では、ゼロランレングスとそれに続く付加ビットのビット長の組み合わせを一対の情報として記憶しているテーブルである。Ｒ／Ｓテーブル１０６では、ハフマン符号がハフマン符号の生成順に配置されている。
【００３６】
符号長テーブル１０４は、ハフマン符号と付加ビットの組み合わせ（可変長符号）の全てのパターンについて、ビット長を記憶している。ここで、ハフマン符号と付加ビットの組み合わせ（可変長符号）のビット長を全ビット長ともいう。例えば、符号長テーブル１０４は、ＪＰＥＧの輝度のＡＣ成分、色差のＡＣ成分の場合、それぞれ１６２のパターンについて、ビット長を記憶している。
【００３７】
次に、本実施形態に係る可変長符号復号装置１００の動作について説明する。
【００３８】
第１ハフマン符号検出部１１２は、可変長符号（第１の可変長符号）を含む圧縮データが入力されると、符号長テーブル１０４を参照して、可変長符号を検出する。第１ハフマン符号検出部１１２は、符号長テーブル１０４を参照して、従来のハフマン符号検出と同様に、第１の可変長符号に含まれるハフマン符号のビット長と、Ｒ／Ｓインデックスと、ＤＣ成分の可変長符号の場合はＤＣ成分の付加ビットのビット長を生成する。更に、本実施形態では、第１ハフマン符号検出部１１２は、符号長テーブル１０４を参照することで、可変長符号の全ビット長を生成できる。
【００３９】
第１ハフマン符号検出部１１２は、全ビット長を第１シフトバッファ１１４に出力し、Ｒ／Ｓインデックスと、ＤＣ成分の付加ビットのビット長を第１Ｒ／Ｓデコーダ１１６に出力し、ハフマン符号のビット長を第３シフトバッファ１１８に出力する。
【００４０】
第１シフトバッファ１１４は、入力バッファ１０２から出力された第１の可変長符号を、第１ハフマン符号検出部１１２で検出された可変長符号の全ビット長分だけ左シフトする。そして、第１シフトバッファ１１４は、生成したデータを、後半部の第２ハフマン符号検出部１２２と、第２シフトバッファ１２４と、第４シフトバッファ１２８に出力する。
【００４１】
第３シフトバッファ１１８は、入力バッファ１０２からの第１の可変長符号のデータの出力を、第１ハフマン符号検出部１１２で検出したハフマン符号のビット長分を左シフトして、第１Ｒ／Ｓデコーダ１１６へ出力する。
【００４２】
第１Ｒ／Ｓデコーダ１１６は、第１ハフマン符号検出部１１２が出力するＲ／Ｓインデックスと、Ｒ／Ｓテーブル１０６に基づいて、Ｒ／Ｓインデックスに対応するゼロランレングスと付加ビットのビット長の情報を得ることができる。
【００４３】
そして、第１Ｒ／Ｓデコーダ１１６は、ゼロランレングスに後続する非ゼロ係数（第１係数）を算出し、第１ゼロランレングスと第１係数を逆量子化部（図示せず。）へ出力する。可変長符号がＤＣ成分であった場合は、第１ハフマン符号検出部１１２が出力するＤＣ付加ビットのビット長をもとに係数を算出し、ゼロランレングスを０にして出力する。
【００４４】
第１シフトバッファ１１４によって、第１の可変長符号分（全ビット長分）のビット列がシフトされるため、第２ハフマン符号検出部１２２に入力されるデータは、第２の可変長符号からになる。
【００４５】
第２ハフマン符号検出部１２２は、第２の可変長符号を含む圧縮データが入力されると、符号長テーブル１０４を参照して、可変長符号を検出する。第２ハフマン符号検出部１２２は、符号長テーブル１０４を参照して、第２の可変長符号に含まれるハフマン符号長と、Ｒ／Ｓインデックスと、全ビット長を生成する。第２ハフマン符号検出部１２２は、全ビット長を第２シフトバッファ１２４に出力し、Ｒ／Ｓインデックスを第２Ｒ／Ｓデコーダ１２６に出力し、ハフマン符号長を第４シフトバッファ１２８に出力する。
【００４６】
第２シフトバッファ１２４は、第１シフトバッファ１１４から出力された第２の可変長符号を、第２ハフマン符号検出部１２２で検出された可変長符号の全ビット長分だけ左シフトして、生成したデータを入力バッファ１０２に出力する。
【００４７】
第４シフトバッファ１２８は、第１シフトバッファ１１４から出力された第１の可変長符号を、第２ハフマン符号検出部１２２で検出されたハフマン符号のビット長分だけ左シフトして、生成したデータを第２Ｒ／Ｓデコーダ１２６へ出力する。
【００４８】
第２Ｒ／Ｓデコーダ１２６は、第２ハフマン符号検出部１２２が出力するＲ／Ｓインデックスと、Ｒ／Ｓテーブル１０６に基づいて、Ｒ／Ｓインデックスに対応するゼロランレングスと付加ビットのビット長（符号長）の情報を得ることができる。
【００４９】
そして、第２Ｒ／Ｓデコーダ１２６は、ゼロランレングスに後続する非ゼロ係数（第２係数）を算出し、第２ゼロランレングスと第２係数を逆量子化部（逆量子化部）へ出力する。
【００５０】
入力バッファ１０２は、第２シフトバッファ１２４から出力される可変長符号の最後尾と、可変長符号復号装置１００に入力される可変長符号の先頭が、連続するビット列になるように連結する。そして、入力バッファ１０２は、次のクロックサイクルでビット列を出力し、１クロックサイクルで二つの可変長符号の復号を実施する。
【００５１】
以上、本実施形態によれば、１クロックサイクルで二つの可変長符号の復号を実施することができ、最低でも２倍速の復号処理が実現可能となる。
【００５２】
（第２の実施形態）
次に、図２を参照して、本発明の第２の実施形態に係る可変長符号復号装置２００について説明する。上述した第１の実施形態に係る可変長符号復号装置１００では、符号長テーブル１０４を、ハフマン符号と付加ビットの組み合わせ（可変長符号）の全てパターンについて用意する。そのため、回路規模が極めて大きくなってしまうという問題がある。一方、本発明の第２の実施形態によれば、処理能力は同等で、回路規模が現実的な大きさとなる。図２は、本実施形態に係る可変長符号復号装置２００の構成を示すブロック図である。
【００５３】
本実施形態での特定符号テーブル２０４は、第１の実施形態の符号長テーブル１０４を特定の符号（ゼロランレングスが０）のみに対応するとしたものである。即ち、特定符号テーブル２０４は、ゼロランレングスが０となるハフマン符号と付加ビットの組み合わせ（可変長符号）のパターンについて、全ビット長を記憶している。
【００５４】
また、本実施形態の可変長符号復号装置２００は、第１の実施形態の構成に比べて、更に第１特定符号処理部２１２と、第２特定符号処理部２３２と、第１ビット長選択部２２４と、第２ビット長選択部２４４と、第１出力選択部２２６と、第２出力選択部２４６を備える。
【００５５】
第１特定符号処理部２１２、第２特定符号処理部２３２は、特定符号を検出すると、特定符号（ハフマン符号＋付加ビット）のビット長（全ビット長）を出力するとともに、対応するゼロランレングスと、ゼロランレングスに後続する付加ビットのビット長を、特定符号テーブル２０４を参照して取得する。また、第１特定符号処理部２１２、第２特定符号処理部２３２は、ゼロランレングスに後続する非ゼロ係数を算出し、ゼロランレングスと共に非ゼロ係数を出力する。更に、第１特定符号処理部２１２、第２特定符号処理部２３２は、特定符号を検出したことを示すフラグ（ＳＨＩＴ）を出力する。
【００５６】
第１ハフマン符号検出部２１４、第２ハフマン符号検出部２３４は、基本的に従来のハフマン符号検出部１４と同じ動作をするが、特定符号以外の符号を検出したことを示すフラグ（ＮＨＩＴ）を出力する。第１Ｒ／Ｓデコーダ２１６、第２Ｒ／Ｓデコーダ２３６も、基本的に従来のＲ／Ｓデコーダ１８と同じ動作をする。
【００５７】
第１ビット長選択部２２４は、第１特定符号処理部２１２と、第１ハフマン符号検出部２１４と、第１Ｒ／Ｓデコーダ２１６が出力するビット長の中で有意なものを選択して、選択したビット長を第１シフトバッファ２２２に出力する。第１シフトバッファ２２２は、第１ビット長選択部２２４が出力するビット長に従い、入力された可変長符号のデータを左シフトして、生成したデータを出力する。第２ビット長選択部２４４、第２シフトバッファ２４２についても同様である。
【００５８】
第１出力選択部２２６は、第１特定符号処理部２１２と、第１Ｒ／Ｓデコーダ２１６が出力するゼロランレングスと非ゼロ係数の中で有意なものを選択して、選択したゼロランレングスと係数を逆量子化部（図示せず。）へ出力する。第２出力選択部２４６についても同様である。特定符号処理部、ハフマン符号検出部、Ｒ／Ｓデコーダの三つの処理回路を２組従属接続することで、所望の処理を行うことができる。
【００５９】
次に、本実施形態に係る可変長符号復号装置２００の動作について説明する。
【００６０】
まず、入力バッファ２０２から出力される可変長符号が特定符号だった場合について説明する。入力バッファ２０２から出力される可変長符号が特定符号だった場合、そのクロックサイクル内で、２個の可変長符号を処理することになる。
【００６１】
特定符号である第１の可変長符号は、特定符号テーブル２０４を参照して、第１特定符号処理部２１２で処理される。そして、第１ビット長選択部２２４は、フラグ（ＳＨＩＴ）に基づいて、第１の可変長符号に基づく全ビット長を選択する。第１出力選択部２２６は、フラグ（ＳＨＩＴ）に基づいて、第１の可変長符号に基づくゼロランレングス、非ゼロ係数を選択する。その結果、第１の可変長符号に基づく全ビット長、ゼロランレングス、非ゼロ係数が出力される。
【００６２】
第１シフトバッファ２２２は、入力バッファ２０２から出力された第１可変長符号を、第１特定符号処理部２１２で検出した第１の可変長符号の全ビット長分だけ左シフトする。そして、第１シフトバッファ２２２は、生成したデータを後半部の第２特定符号処理部２３２と、第２ハフマン符号検出部２３４と、第２Ｒ／Ｓデコーダ２３６と、第２シフトバッファ２４２へ出力する。
【００６３】
第１出力選択部２２６は、第１の可変長符号から復号されたゼロランレングスと非ゼロ係数を逆量子化部（図示せず。）へ出力し、第１の可変長符号の復号が終了する。
【００６４】
第１の可変長符号に続き、第２の可変長符号も特定符号であった場合、第２特定符号処理部２３２は、特定符号テーブル２０４を参照して、第１シフトバッファ２２２から出力された第２の可変長符号の復号を行う。復号して得られたゼロランレングス、非ゼロ係数は、フラグ（ＳＨＩＴ）に基づいて、第２出力選択部２４６から逆量子化部（図示せず。）へ出力される。第２シフトバッファ２４２は、フラグ（ＳＨＩＴ）に基づいて、第１シフトバッファ２２２から出力された第２の可変長符号を、第２特定符号処理部２３２で検出した第２の可変長符号の全ビット長分だけ左シフトする。そして、第２シフトバッファ２４２は、生成したデータを入力バッファ２０２に出力する。
【００６５】
入力バッファ２０２は、第２シフトバッファ２４２から出力される可変長符号の最後尾と、可変長符号復号装置２００に入力される可変長符号の先頭が、連続するビット列になるように連結する。そして、連結されて生成されたビット列は、次のクロックサイクルで入力バッファ２０２から出力される。
【００６６】
第１の可変長符号に続く第２の可変長符号が特定符号以外であった場合、第２ハフマン符号検出部２３４は、先頭符号テーブル２０６を参照して、Ｒ／Ｓインデックスとハフマン符号のビット長を出力する。
【００６７】
Ｒ／Ｓインデックスは、次のクロックサイクルで第１Ｒ／Ｓデコーダ２１６が復号を行うため、Ｄフリップフロップ（Ｄ−ＦＦ）２５２で１クロック遅延されて出力される。第２シフトバッファ２４２は、フラグ（ＮＨＩＴ）に基づいて、第１シフトバッファ２２２から出力された第２の可変長符号を、第２ハフマン符号検出部２３４で検出した第２可変長符号のハフマン符号長分だけ左シフトして、付加ビットの先頭を切り出し、入力バッファ２０２に出力する。そして、次のクロックサイクルで入力バッファ２０２から出力される。
【００６８】
そして、次のクロックサイクルでは、Ｒ／Ｓテーブル２０８が参照されて、第１Ｒ／Ｓデコーダ２１６でゼロランレングスと非ゼロ係数が復号され、フラグ（ＮＨＩＴ）に基づいて、第１出力選択部２２６から逆量子化部（図示せず。）へ出力される。このとき、第１出力選択部２２６に第１Ｒ／Ｓデコーダ２１６の出力を選択させるため、第２ハフマン符号検出部２３４からのＮＨＩＴは、Ｄ−ＦＦ２５４で１クロック遅延されて出力される。
【００６９】
第１の可変長符号が特定符号でなかった場合、第１ハフマン符号検出部２１４は、検出したハフマン符号のＲ／Ｓインデックスとハフマン符号長を求める。そして、第１シフトバッファ２２２は、入力バッファ２０２から出力された可変長符号を、ハフマン符号のビット長分だけ左シフトする。このとき、第１出力選択部２２６からは何も出力されない。
【００７０】
Ｒ／Ｓテーブル２０８を参照して、第２Ｒ／Ｓデコーダ２３６は、Ｒ／Ｓインデックスと、第１シフトバッファ２２２から出力されたデータに基づいて、ゼロランレングスと非ゼロ係数を算出する。そして、第２出力選択部２４６から第２ゼロランレングスと第２係数が逆量子化部（図示せず。）へ出力される。第２シフトバッファ２４２は、第１シフトバッファ２２２から出力されたデータを、付加ビットのビット長分だけ左シフトして、生成したデータを入力バッファ２０２に出力する。入力バッファ２０２は、第２シフトバッファ２４２から出力されるデータの最後尾と、可変長符号復号装置１００に入力される可変長符号のデータの先頭が、連続するビット列になるように連結する。そして、入力バッファ２０２は、次のクロックサイクルでビット列を出力し、一つの可変長符号の復号を実施する。
【００７１】
以上、本実施形態によれば、回路規模の増大を抑えるとともに、１クロックサイクル内に２個の可変長符号を復号することができ、即ち最低でも２倍速での復号処理を行うことが可能となる。
【００７２】
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
【符号の説明】
【００７３】
１０，１００，２００    可変長符号復号装置
１２，１０２，２０２    入力バッファ
１４    ハフマン符号検出部
１６    第１シフトバッファ
１８    Ｒ／Ｓデコーダ
２２    第２シフトバッファ
２４，２０６    先頭符号テーブル
２６，２０８    Ｒ／Ｓテーブル
１０４    符号長テーブル
１０６    Ｒ／Ｓテーブル
１１２，２１４    第１ハフマン符号検出部
１１４，２２２    第１シフトバッファ
１１６，２１６    第１Ｒ／Ｓデコーダ
１１８    第３シフトバッファ
１２２，２３４    第２ハフマン符号検出部
１２４，２４２    第２シフトバッファ
１２６，２３６    第２Ｒ／Ｓデコーダ
１２８    第４シフトバッファ
２０４    特定符号テーブル
２１２    第１特定符号処理部
２２４    第１ビット長選択部
２２６    第１出力選択部
２４４    第２ビット長選択部
２４６    第２出力選択部
【図１】
2011139128.tif 000003
【図２】
2011139128.tif 000004
【図３】
2011139128.tif 000005
【図４】
2011139128.tif 000006