(57)【要約】【課題】回路規模を増大させることなく、高速にデコード処理を行うことができるハフマンデコーダを提供する。【解決手段】本発明のハフマンデコーダは、次のハフマン符号の頭出しデータの予測器を備え、メモリアクセス期間中に、シフト部から出力される前の符号化データの付加ビットと次の符号化データのハフマン符号の頭出しデータから次のハフマン符号の頭出しデータの候補を保持しておき、メモリからＲＳ値が読み出されると、前の符号化データの付加ビットのビット長が決定されて復号化データの係数が生成されるのと同時に、メモリから読み出されるＳ値に基づいて決定される付加ビットのビット長に対応する候補を次のハフマン符号の頭出しデータとして出力し、その符号長を検出するので、デコード処理を高速化することができる。【選択図】図１
2004179752.tif 000002
【特許請求の範囲】
【請求項１】
ハフマン符号と付加ビットとが交互に繰り返し出現する可変長符号化されたデータストリームを保持し、前記付加ビットの頭出しを行って当該付加ビットの頭出しデータを出力するシフト部と、
それぞれの前記ハフマン符号に対応したＲ値およびＳ値を記憶するメモリと、
前記メモリのアクセス期間中に、前記シフト部から出力される付加ビットの頭出しデータから次のハフマン符号の頭出しデータの予測値を保持しておき、前記メモリから読み出されるＳ値に基づいて決定される付加ビットのビット長に対応する予測値をハフマン符号の頭出しデータとして出力する予測器と、
前記予測器から出力されるハフマン符号の頭出しデータの符号長を検出し、当該ハフマン符号の符号長のデータを出力する比較器とを備え、
前記シフト部は、前記比較器から出力されるハフマン符号の符号長のデータおよび前記メモリから読み出されるＳ値に従って、前記付加ビットの頭出しを行うことを特徴とするハフマンデコーダ。
【請求項２】
さらに、前記予測器から出力されるハフマン符号の頭出しデータおよび前記比較器から出力されるハフマン符号の符号長のデータに基づいて、前記メモリをアクセスするためのメモリアドレスを生成するメモリアドレス生成部と、
前記メモリから読み出されるＲ値に基づいて、ブロック内のジグザグアドレスを生成するブロック内アドレス生成部と、
前記メモリから読み出されるＳ値と前記シフト部から出力される付加ビットの頭出しデータに基づいて、符号化される前の係数を生成する係数生成部とを備える請求項１に記載のハフマンデコーダ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、可変長符号化（ハフマン符号化）されたデータストリームから、符号化される前のデータ（係数）を順次復元するハフマンデコーダに関するものである。
【０００２】
【従来の技術】
静止画の国際標準符号化方式であるＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）や、動画の国際標準符号化方式であるＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  ＥｘｐｅｒｔｓＧｒｏｕｐ）等のデータ圧縮技術が知られている。これらの符号化方式では、画像を所定の画素数からなる複数のブロックに分割し、それぞれのブロックにおいて、ブロック内に含まれる各画素の係数を可変長符号化することによってデータの符号化が行われている。
【０００３】
ＪＰＥＧの場合、例えば画像を水平８画素×垂直８画素＝合計６４画素からなる複数のブロックに分割し、それぞれのブロックを単位として符号化および復号化の処理が行われる。
【０００４】
符号化の場合、ブロック内の各画素の係数に対し離散コサイン変換（ＤＣＴ変換）が行われて各周波数成分の係数に変換され、量子化テーブルに基づいて量子化され、符号化テーブルに基づいてハフマン符号化される。一方、復号化の場合、可変長符号化されたブロック内の係数に対し同一符号化テーブルを用いてハフマン復号化が行われ、同一量子化テーブルを用いて逆量子化され、逆ＤＣＴ変換されて復号画像データが得られる。
【０００５】
ここで、量子化された後のブロック内の水平８画素（Ｘ＝０〜７）×垂直８画素（Ｙ＝０〜７）＝６４画素の係数（ｒＸＹ）の内、係数ｒ００はＤＣ係数と呼ばれ、残りの６３個の係数ｒ０１〜ｒ７７はＡＣ係数と呼ばれる。
【０００６】
例えば、ＡＣ係数のハフマン符号化は、ブロック内のデータをジグザグスキャンして得られるデータストーリームの先頭のデータから、連続する０の係数の個数を示すランレングスを求め、０に続く０以外のＡＣ係数の値からグループ番号（ＳＳＳＳ）を求め、ランレングスとグループ番号に応じて、最大１６ビット長までの符号長のハフマン符号を割り当て、このハフマン符号に、グループ番号に応じて、最大１１ビット長までの付加ビットを付加することにより行われる。
【０００７】
これに対し、可変長符号化されたＡＣ係数のデータストリームのハフマン復号化は、ハフマン符号も付加ビットも共に可変長であるため、まず、データストリームの最初のハフマン符号の符号長を求めて、データストリームの先頭のデータから符号長分のハフマン符号を取り出し、ハフマン符号に応じてランレングスとグループ番号を求めた後、グループ番号に基づいて付加ビットのビット長を求めることにより行われる。
【０００８】
以下、図５〜図８を参照しながら、ハフマン復号化を行うハフマンデコーダとその問題点について説明する。なお、図７では、図中左側から右側へ向かって時間ｔが進むものとする。
【０００９】
図５は、従来のハフマンデコーダの一例の構成概念図である。
同図に示すハフマンデコーダ４０は、可変長符号化されたデータストリームから、符号化される前の係数を順次復元するものであり、シフト部１２と、比較器１４と、最大符号コードテーブル１６と、メモリアドレス生成部１８と、発生頻度テーブル２０と、メモリ２４と、ブロック内アドレス生成部２６と、係数生成部２８とを備えている。
【００１０】
図８の概念図に示すように、可変長符号化されたデータストリームは、ハフマン符号１、付加ビット１、ハフマン符号２、付加ビット２、…  のように、ハフマン符号ｉと付加ビットｉが交互に繰り返し出現するデータになっている。ＪＰＥＧの場合、ハフマン符号ｉは最大１６ビット、付加ビットｉは最大１１ビットの可変長データである。ハフマンデコーダ４０は、符号化データｉであるハフマン符号ｉと付加ビットｉをデコードして復号化データｉを順次復元する。
【００１１】
図６のフローチャートに示すように、ハフマンデコーダ４０では、まず、ハフマン符号１の符号長が検出される（ステップＰ１）。この時、シフト部１２によってハフマン符号１の頭出しが行われ（図７のタイミングＡ）、比較器１４によって、シフト部１２から出力されるハフマン符号の頭出しデータと最大符号テーブル１６から出力される各ビット長の符号の最大値（最大符号コード）とが順次比較され（ステップＰ２）、最終的にハフマン符号１の符号長が決定される（ステップＰ３）。
【００１２】
続いて、メモリ２４へのアクセス（メモリアクセス）が行われる（ステップＰ４）。この時、メモリアドレス生成部１８によって、シフト部１２から出力されるハフマン符号１の頭出しデータと、比較器１４から出力されるハフマン符号１の符号長のデータと、発生頻度テーブル２０から出力されるハフマン符号１の発生頻度のデータに基づいて、メモリ２４に入力されるアドレスが生成される。
【００１３】
メモリ２４には、ハフマン符号の頭出しデータとその符号長のデータおよび発生頻度のデータに基づいて生成されるメモリアドレスに、それぞれのハフマン符号に対応するＲＳ値が記憶されている。ここで、ＲＳ値は、Ｒ値（ランレングス）とＳ値（グループ番号）とを組み合わせたデータである。したがって、メモリ２４からは、メモリアドレス生成部１８によって生成されたメモリアドレスに記憶されているＲＳ値が読み出される。
【００１４】
また同時に、比較器１４から出力されるハフマン符号１の符号長のデータはシフト部１２にフィードバックされる。そして、シフト部１２により、ハフマン符号１の符号長分だけデータストリームがシフトされて付加ビット１の頭出しが行われる（図７のタイミングＢ）。
【００１５】
メモリ２４からＲＳ値が読み出されると、ブロック内アドレス生成部２６により、Ｒ値に基づいてジグザグアドレスが生成される。また、係数生成部２８により、Ｓ値およびシフト部１２から出力される付加ビット１の頭出しデータに基づいて量子化後のＤＣＴ係数（復号化データ１）が生成される（ステップＰ５）。
【００１６】
また同時に、メモリ２４から読み出されたＳ値はシフト部１２にフィードバックされる。そして、シフト部１２により、このＳ値に基づいて決定される付加ビット１のビット長分だけデータストリームがシフトされて次のハフマン符号２の頭出しが行われる（図７のタイミングＣ）（ステップＰ６）。
【００１７】
そして以後、前述のようにして、ハフマン符号ｉの符号長の決定と、付加ビットｉのビット長の決定が繰り返し行われ、復号化データ２、復号化データ３、…
が順次復元される。
【００１８】
上記の通り、ハフマンデコーダ４０では、可変長符号化されたデータストリームを、符号化される前の元データに復号化するために、ハフマン符号の符号長を求めてから、付加ビットのビット長を求めるという動作を交互に繰り返し行う必要がある。したがって、前の符号化データのデコードが完全に終了しないと、次の符号化データを復元するための処理を開始することができず、デコード処理の高速化が難しいという問題点があった。
【００１９】
これに対し、例えば下記特許文献１には、可変長符号化回路においてパイプライン処理を可能にし、圧縮伸張回路の伸張復号処理時間の性能向上を図る可変長符号化装置が提案されている。同特許文献１に開示の可変長符号化装置は、エントロピー復号テーブルのＲＡＭのアクセス中に次のハフマン符号のエントロピー復号テーブルアドレスの候補を求めておくようにしたことを特徴とするものである。
【００２０】
同特許文献１に開示の可変長符号化装置の場合、確かにデコードの高速化は実現可能であるが、回路規模が著しく増大するという問題がある。ＪＰＥＧの場合、同特許文献１の図４に示されているように、現在復号中のハフマン符号および付加ビットに加えて、ハフマン符号の最大符号長である１６ビットと付加ビットの最大ビット長である１１ビットからなる合計２８個のハフマン符号長検出部とアドレス生成部が必要になる。
【００２１】
【特許文献１】
特開２００２−１６５０１号公報
【００２２】
【発明が解決しようとする課題】
本発明の目的は、前記従来技術に基づく問題点を解消し、回路規模を増大させることなく、高速にデコード処理を行うことができるハフマンデコーダを提供することにある。
【００２３】
【課題を解決するための手段】
上記目的を達成するために、本発明は、ハフマン符号と付加ビットとが交互に繰り返し出現する可変長符号化されたデータストリームを保持し、前記付加ビットの頭出しを行って当該付加ビットの頭出しデータを出力するシフト部と、
それぞれの前記ハフマン符号に対応したＲ値およびＳ値を記憶するメモリと、前記メモリのアクセス期間中に、前記シフト部から出力される付加ビットの頭出しデータから次のハフマン符号の頭出しデータの予測値を保持しておき、前記メモリから読み出されるＳ値に基づいて決定される付加ビットのビット長に対応する予測値をハフマン符号の頭出しデータとして出力する予測器と、
前記予測器から出力されるハフマン符号の頭出しデータの符号長を検出し、当該ハフマン符号の符号長のデータを出力する比較器とを備え、
前記シフト部は、前記比較器から出力されるハフマン符号の符号長のデータおよび前記メモリから読み出されるＳ値に従って、前記付加ビットの頭出しを行うことを特徴とするハフマンデコーダを提供するものである。
【００２４】
さらに、前記予測器から出力されるハフマン符号の頭出しデータおよび前記比較器から出力されるハフマン符号の符号長のデータに基づいて、前記メモリをアクセスするためのメモリアドレスを生成するメモリアドレス生成部と、
前記メモリから読み出されるＲ値に基づいて、ブロック内のジグザグアドレスを生成するブロック内アドレス生成部と、
前記メモリから読み出されるＳ値と前記シフト部から出力される付加ビットの頭出しデータに基づいて、符号化される前の係数を生成する係数生成部とを備えるのが好ましい。
【００２５】
【発明の実施の形態】
以下に、添付の図面に示す好適実施形態に基づいて、本発明のハフマンデコーダを詳細に説明する。
【００２６】
図１は、本発明のハフマンデコーダの一実施形態の構成概念図である。
同図に示すハフマンデコーダ１０は、可変長符号化されたデータストリームから、符号化される前のデータを順次復元するものであり、シフト部１２と、予測器２２と、比較器１４と、最大符号コードテーブル１６と、メモリアドレス生成部１８と、発生頻度テーブル２０と、メモリ２４と、ブロック内アドレス生成部２６と、係数生成部２８とを備えている。
【００２７】
図１に示す本発明のハフマンデコーダ１０と図５に示す従来のハフマンデコーダ４０との違いは、次のハフマン符号を予測するための予測器２２を備えている点である。なお、これ以外の各構成要素１２，１４，１６，１８，２０，２４，２６，２８は、従来のハフマンデコーダ４０の各構成要素と基本的に同じものであるから同一の構成要素には同一の符号を付してある。以下、本発明のハフマンデコーダ１０について順次説明する。
【００２８】
シフト部１２は、図８に示すように、ハフマン符号と付加ビットとが交互に繰り返し出現する可変長符号化された所定量のデータストリームを保持し、ハフマン符号の符号長および付加ビットのビット長に従って、保持されているデータストリームをシフトし、付加ビットの頭出しを順次行う。シフト部１２にはデータストリームが入力され、シフト部１２の出力は、予測器２２および係数生成部２８に入力されている。
【００２９】
予測器２２は、シフト部１２から出力される付加ビットの頭出しデータから、次のハフマン符号の頭出しデータの予測値をあらかじめ保持しておき、メモリ２４から読み出されるＳ値（グループ番号）に基づいて決定される付加ビットのビット長に応じて、保持してある予測値の中から１つの予測値を次のハフマン符号の頭出しデータとして選択的に出力する。予測器２２の出力は、比較器１４およびメモリアドレス生成部１８に入力されている。
【００３０】
比較器１４は、予測器２２から出力されるハフマン符号の頭出しデータと、最大符号コードテーブル１６から出力される各符号長の符号の最大符号コードとを比較して、ハフマン符号の符号長（ビット長）を検出する。比較器１４には、予測器２２の出力の他、最大符号コードテーブル１６の出力が入力され、比較器１４の出力（符号長のデータ）は、シフト部１２およびメモリアドレス生成部１８に入力されている。
【００３１】
メモリアドレス生成部１８は、予測器２２から出力されるハフマン符号の頭出しデータと、比較器１４から出力されるハフマン符号の符号長のデータと、発生頻度テーブル２０から出力されるハフマン符号の発生頻度データに基づいて、メモリ２４をアクセスするためのメモリアドレスを生成する。メモリアドレス生成部１８には、予測器２２の出力および比較器１４の出力の他、発生頻度テーブル２０の出力が入力され、メモリアドレス生成部１８の出力はメモリ２４に入力されている。
【００３２】
メモリ２４には、それぞれのハフマン符号に対応するＲＳ値が記憶されている。メモリ２４の出力（ＲＳ値）のうち、Ｒ値（ランレングス）はブロック内アドレス生成部２６に入力され、Ｓ値（グループ番号）は、シフト部１２、予測器２２および係数生成部２８に入力されている。
【００３３】
０が余り続かずに値の小さいＡＣ係数が出現する場合の発生頻度と、０が続いた後で値の大きいＡＣ係数が出現する場合の発生頻度は、一般的に前者の方が発生頻度が高い。従って、発生頻度が高い順に、短い符号長かつ値の小さいハフマン符号が割り当てられている。また、１０ビット長のハフマン符号が８種類ある場合、この８種類のハフマン符号に対応するＲＳ値は、それぞれのハフマン符号の発生頻度に対応するメモリアドレスに記憶されている。
【００３４】
また、ハフマンデコーダ１０において、ブロック内アドレス生成部２６からはブロック内のジグザグアドレスが出力され、係数生成部２８からは量子化後のＤＣＴ係数が出力されている。
【００３５】
次に、図２に示す概念図を参照して、図１に示すハフマンデコーダ１０におけるシフト部１２および予測器２２の内部構成を説明する。
【００３６】
図２に示すように、シフト部１２は、バッファ３０と、シフタ３２と、シフト量制御部３４とを備えている。また、予測器２２は、シフタ３６と、選択器３８とを備えている。
【００３７】
なお、図２の概念図は、本発明をＪＰＥＧのハフマンデコーダとして構成した場合の一例を示すものである。したがって、シフト部１２のシフタ３２からは、ハフマン符号の最大符号長である１６ビットと付加ビットの最大ビット長である１１ビットを加えた２７ビットのデータがシフト出力とは別に並列に出力され、また、予測器２２は、次のハフマン符号を予測するために、付加ビットの最大ビット長である１１ビットに対応する１１本のシフタ３６を備えている。
【００３８】
シフト部１２において、バッファ３０は、シフト量制御部３４の制御により、所定量のデータストリームを保持する。バッファ３０にはデータストリームが入力され、バッファ３０の出力はシフタ３２に入力されている。
【００３９】
また、シフタ３２は、同じくシフト量制御部３４の制御により、バッファ３０から出力されるデータストリームを所定ビット長シフトし、付加ビットの頭出しを行う。
【００４０】
シフト量制御部３４は、図１に示す比較器１４から出力されるハフマン符号の符号長のデータ、およびメモリ２４から出力されるＳ値（グループ番号）に従い、バッファ３０およびシフタ３２におけるデータストリームのシフト量の制御を行う。シフト量制御部３４には、符号長のデータおよびＳ値が入力され、シフト量制御部３４の出力（シフト量の制御信号）はバッファ３０およびシフタ３２に入力されている。
【００４１】
一方、予測器２２において、１１本のシフタ３６は、シフト部１２のシフタ３２から出力される付加ビットの頭出しデータを、それぞれＪＰＥＧの付加ビットの全てのビット長に対応する１〜１１ビットずつシフト（＜＜ｉは、ｉビットシフトを意味する）した、次のハフマン符号の頭出しデータの全ての候補を保持する。１１本のシフタ３６には、シフト部１２のシフタ３２の出力が共通に入力され、１１本のシフタ３６の出力は全て選択器３８に入力されている。
【００４２】
また、選択器３８は、図１に示すメモリ２４から出力されるＳ値に従い、１１本のシフタ３６に保持されている予測値と、Ｓ値＝０の予測値（ＺＲＬ）のうちの１つの予測値を次のハフマン符号の頭出しデータとして選択的に出力する。選択器３８には、１１本のシフタ３６の出力の他、シフト部１２のシフタ３２の出力が入力されている。また、選択器３８の選択入力にはＳ値が入力され、選択器３８からは次のハフマン符号の頭出しデータが出力されている。
【００４３】
シフト部１２では、シフト量制御部３４の制御により、バッファ３０におけるデータの入れ換え量およびシフタ３２のシフト量が決定され、付加ビットの頭出しが行われる。そして、予測器２２の１１本のシフタ３６に次のハフマン符号の頭出しデータの予測値が保持される。なお、本実施形態では、後述するように、ハフマン符号１の場合に限り、シフタ３２によってハフマン符号１の頭出しが行われる。
【００４４】
ＪＰＥＧでは、Ｓ値が‘１’（ＳＳＳＳ＝１）〜‘１１’（ＳＳＳＳ＝１１）である場合、それぞれシフタ３２の出力（付加ビットの頭出しデータ）を１〜１１ビットずつシフトしたデータから最大１６ビット長のデータが次のハフマン符号の頭出しデータになる。従って、予測器２２の１１本のシフタ３６には、シフト部１２のシフタ３２から出力される付加ビットの頭出しデータを１〜１１ビットずつシフトした１６ビット長のデータがそれぞれ保持される。また、ＺＲＬの場合はＳ＝０なので、シフタ３２からの出力をそのまま利用できる。
【００４５】
メモリ２４からＳ値が読み出されると、予測器２２の選択器３８から、１１本のシフタ３６に保持されている予測値のうちの１つの予測値またはＺＲＬを意味するシフタ３２の出力が次のハフマン符号の頭出しデータとして選択出力されるのと同時に、シフト部１２では次の付加ビットの頭出しが行われる。なお、本実施形態では、ハフマン符号１の場合は、シフト部１２のシフタ３２の出力（ハフマン符号の頭出しデータ）が、予測器の選択器３８から選択出力される。
【００４６】
次に、図３に示すフローチャートおよび図４に示すタイミングチャートを参照して、図１および図２に示すハフマンデコーダ１０の動作を説明する。なお、図４では、図中左側から右側へ向かって時間ｔが進むものとする。
【００４７】
図３のフローチャートに示すように、ハフマンデコーダ１０では、まず、ハフマン符号１の符号長の検出が行われる（ステップＳ１）。この時、シフト部１２では、シフト量制御部３４の制御により、ハフマン符号１の頭出しが行われ（図４のタイミングＡ）、このハフマン符号１の頭出しデータが予測器２２の選択器３８を介して比較器１４に入力される。
【００４８】
比較器１４では、予測器２２から出力されるハフマン符号１の頭出しデータと最大符号テーブル１６から出力される各ビット長の符号の最大値（最大符号コード）とが順次比較され（ステップＳ２）、最終的にハフマン符号１の符号長が決定される（ステップＳ３）。
【００４９】
ＪＰＥＧの場合、予測器２２からは、ハフマン符号の最大符号長（最大ビット長）である１６ビット長のデータ（ハフマン符号の頭出しデータ）が出力される。比較器１４では、予測器２２から出力される１６ビット長のデータが、例えば２ビット長のハフマン符号の最大値よりも大きく、かつ３ビット長のハフマン符号の最大値よりも小さい場合、このハフマン符号の符号長は３ビットであると決定される。
【００５０】
続いて、メモリ２４へのアクセス（メモリアクセス）が行われる（ステップＳ４）。この時、メモリアドレス生成部１８では、予測器２２から出力される１６ビット長のデータ（ハフマン符号１の頭出しデータ）と、比較器１４から出力されるハフマン符号１の符号長のデータと、発生頻度テーブル２０から出力されるハフマン符号１の発生頻度データに基づいて、メモリ２４をアクセスするためのメモリアドレスが生成される。
【００５１】
メモリ２４には、上記１６ビット長のデータ（ハフマン符号の頭出しデータ）と、ハフマン符号の符号長のデータおよび発生頻度データに基づいて生成されるメモリアドレスに、それぞれのハフマン符号に対応するＲＳ値が記憶されている。メモリアドレス生成部１８からメモリアドレスが入力されると、メモリ２４からは、このメモリアドレスに記憶されているＲＳ値が読み出される（ステップＳ５）。
【００５２】
また同時に、比較器１４から出力されるハフマン符号１の符号長のデータがシフト部１２にフィードバックされ、シフト部１２により、この符号長分だけデータストリームがシフトされて付加ビット１の頭出しが行われる（図４のタイミングＢ）。そして、予測器２２により、シフト部１２のシフタ３２から出力される付加ビットの頭出しデータがさらに１〜１１ビットずつシフトされ、次のハフマン符号の頭出しデータの予測値が１１本のシフタ３６にそれぞれ保持される（ステップＳ６）。
【００５３】
メモリ２４から、メモリアドレス生成部１８によって生成されるメモリアドレスに記憶されているＲＳ値が読み出されると、ブロック内アドレス生成部２６により、Ｒ値に基づいてジグザグアドレスが生成される。また、係数生成部２８により、Ｓ値とシフト部１２から出力される付加ビット１の頭出しデータに基づいて付加ビット１が決定され、この付加ビット１に基づいて量子化後のＤＣＴ係数（復号化データ１）が生成される。
【００５４】
また同時に、予測器２２から、Ｓ値によって決定される付加ビットのビット長分のデータをシフトした次のハフマン符号の頭出しデータの予測値が選択出力され、比較器１４では、次のハフマン符号２の符号長が検出される。すなわち、メモリ２４からＲＳ値が読み出されると、前のハフマン符号１の付加ビットのビット長が決定されて復号化データ１の係数が生成されるのと同時に、次のハフマン符号２の符号長の検出が行われる。
【００５５】
その後、シフト部１２では、メモリ２４から出力されるハフマン符号１に対応するＳ値および比較器１４から出力される次のハフマン符号２の符号長のデータに基づいて、バッファ３０内のデータが準備されると共に、シフタ３２により、ハフマン符号１の付加ビットのビット長および次のハフマン符号２の符号長分だけデータストリームがシフトされ（ステップＳ７）、付加ビット２の頭出しが行われる（図４のタイミングＣ）。
【００５６】
そして以後、前述のようにして、前のハフマン符号ｉの付加ビットｉのビット長が決定されて復号化データｉの係数が生成されるのと同時に、次のハフマン符号ｉ＋１の符号長の検出が行われ、復号化データ２、復号化データ３、…  が順次復元される。
【００５７】
上記の通り、ハフマンデコーダ１０では、予測器２２によって次のハフマン符号の頭出しデータをあらかじめ格納しておき、メモリ２４からＳ値が読み出されると、前のハフマン符号の付加ビットのビット長が決定されて復号化データの係数が生成されるのと同時に、次のハフマン符号の符号長の検出が行われるため、その分、デコード処理を高速化することができる。また、特許文献１と比較すると、格段に回路規模が小さいという利点がある。
【００５８】
なお、本発明は、例えばＪＰＥＧやＭＰＥＧ等に限らず、可変長符号化されたデータストリームから、符号化される前のデータを順次復号化するハフマンデコーダを使用するもの全てに適用可能である。
【００５９】
また、シフト部１２は、ハフマン符号の符号長のデータおよびＳ値に応じて付加ビットの頭出しを行うことができれば、その回路構成は何ら限定されない。同様に、比較器１４は、ハフマン符号に基づいてその符号長を検出することができればよい。すなわち、各符号長の符号の最大符号コードと比較することは必須ではなく、例えば最小符号コードと比較したり、これ以外の方法を利用して同様に符号長を検出するようにしてもよい。
【００６０】
また、メモリアドレス生成部１８は、ハフマン符号の頭出しデータとその符号長に基づいてメモリ２４のメモリアドレスを生成することができればよく、メモリ２４には、メモリアドレス生成部１８によって生成されるメモリアドレスに対応して、それぞれのハフマン符号に対応するＲＳ値が保持されていればよい。すなわち、ハフマン符号の発生頻度データを使用することは必須ではなく、これ以外の方法を利用して同様にメモリアドレスを生成するようにしてもよい。
【００６１】
また、予測器２２も図２に示すものに限定されず、メモリアクセスの期間中に次のハフマン符号の頭出しデータの予測値を保持しておき、メモリ２４から読み出されるＳ値に基づいて適切な予測値を出力可能なものであればどのような回路構成であってもよい。また、ブロック内アドレス生成部２６はＲ値からブロック内のジグザグアドレスを生成するもの、また、係数生成部２８は、Ｓ値と付加ビットから符号化される前の係数を生成可能な構成のものであればよい。
【００６２】
また、上記実施形態では、シフト部１２から出力されるハフマン符号１の頭出しデータを、予測器２２の選択器３８を介して選択的に出力しているが、これも限定されない。例えば、シフト部１２から出力されるハフマン符号１の頭出しデータを比較器１４に入力し、比較器１４の内部で、シフト部１２から出力されるハフマン符号１の頭出しデータと、予測器２２から出力される他のハフマン符号の頭出しデータとを選択的に使用するようにしてもよい。
【００６３】
本発明のハフマンデコーダは、基本的に以上のようなものである。
以上、本発明のハフマンデコーダについて詳細に説明したが、本発明は上記実施形態に限定されず、本発明の主旨を逸脱しない範囲において、種々の改良や変更をしてもよいのはもちろんである。
【００６４】
【発明の効果】
以上詳細に説明した様に、本発明のハフマンデコーダは、次のハフマン符号の頭出しデータの予測器を備え、メモリアクセス期間中に、シフト部から出力される前の符号化データの付加ビットと次の符号化データのハフマン符号の頭出しデータから次のハフマン符号の頭出しデータの候補を保持しておき、メモリからＲＳ値が読み出されると、前の符号化データの付加ビットのビット長が決定されて復号化データの係数が生成されるのと同時に、メモリから読み出されるＳ値に基づいて決定される付加ビットのビット長に対応する候補を次のハフマン符号の頭出しデータとして出力し、その符号長を検出するようにしたものである。
これにより、本発明のハフマンデコーダによれば、比較的回路規模の小さい予測器を追加するだけなので、回路規模が著しく増大するということがないし、メモリからＲＳ値が読み出されると、復号化データの生成と同時に、次のハフマン符号の符号長が決定されるので、その分、デコード処理を高速化することができる。
【図面の簡単な説明】
【図１】本発明のハフマンデコーダの一実施形態の構成概念図である。
【図２】図１に示すハフマンデコーダにおけるシフト部および予測器の内部構成を表す一実施形態の概念図である。
【図３】図１に示すハフマンデコーダの動作を表す一実施形態のフローチャートである。
【図４】図１に示すハフマンデコーダの動作を表す一実施形態のタイミングチャートである。
【図５】従来のハフマンデコーダの一例の構成概念図である。
【図６】図５に示すハフマンデコーダの動作を表す一例のフローチャートである。
【図７】図５に示すハフマンデコーダの動作を表す一例のタイミングチャートである。
【図８】可変長符号化されたデータストリームの構成を表す一例の概念図である。
【符号の説明】
１０，４０  ハフマンデコーダ
１２  シフト部
１４  比較器
１６  最大符号コードテーブル
１８  メモリアドレス生成部
２０  発生頻度テーブル
２２  予測器
２４  メモリ
２６  ブロック内アドレス生成部
２８  係数生成部
３０  バッファ
３２，３６  シフタ
３４  シフト量制御部
３８  選択器
【図１】
2004179752.tif 000003
【図２】
2004179752.tif 000004
【図３】
2004179752.tif 000005
【図４】
2004179752.tif 000006
【図５】
2004179752.tif 000007
【図６】
2004179752.tif 000008
【図７】
2004179752.tif 000009
【図８】
2004179752.tif 000010