JP2004179752A - ハフマンデコーダ - Google Patents
ハフマンデコーダ Download PDFInfo
- Publication number
- JP2004179752A JP2004179752A JP2002340928A JP2002340928A JP2004179752A JP 2004179752 A JP2004179752 A JP 2004179752A JP 2002340928 A JP2002340928 A JP 2002340928A JP 2002340928 A JP2002340928 A JP 2002340928A JP 2004179752 A JP2004179752 A JP 2004179752A
- Authority
- JP
- Japan
- Prior art keywords
- data
- huffman
- code
- memory
- output
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
【課題】回路規模を増大させることなく、高速にデコード処理を行うことができるハフマンデコーダを提供する。
【解決手段】本発明のハフマンデコーダは、次のハフマン符号の頭出しデータの予測器を備え、メモリアクセス期間中に、シフト部から出力される前の符号化データの付加ビットと次の符号化データのハフマン符号の頭出しデータから次のハフマン符号の頭出しデータの候補を保持しておき、メモリからRS値が読み出されると、前の符号化データの付加ビットのビット長が決定されて復号化データの係数が生成されるのと同時に、メモリから読み出されるS値に基づいて決定される付加ビットのビット長に対応する候補を次のハフマン符号の頭出しデータとして出力し、その符号長を検出するので、デコード処理を高速化することができる。
【選択図】図1
【解決手段】本発明のハフマンデコーダは、次のハフマン符号の頭出しデータの予測器を備え、メモリアクセス期間中に、シフト部から出力される前の符号化データの付加ビットと次の符号化データのハフマン符号の頭出しデータから次のハフマン符号の頭出しデータの候補を保持しておき、メモリからRS値が読み出されると、前の符号化データの付加ビットのビット長が決定されて復号化データの係数が生成されるのと同時に、メモリから読み出されるS値に基づいて決定される付加ビットのビット長に対応する候補を次のハフマン符号の頭出しデータとして出力し、その符号長を検出するので、デコード処理を高速化することができる。
【選択図】図1
Description
【0001】
【発明の属する技術分野】
本発明は、可変長符号化(ハフマン符号化)されたデータストリームから、符号化される前のデータ(係数)を順次復元するハフマンデコーダに関するものである。
【0002】
【従来の技術】
静止画の国際標準符号化方式であるJPEG(Joint Photographic Experts Group)や、動画の国際標準符号化方式であるMPEG(Moving Picture ExpertsGroup)等のデータ圧縮技術が知られている。これらの符号化方式では、画像を所定の画素数からなる複数のブロックに分割し、それぞれのブロックにおいて、ブロック内に含まれる各画素の係数を可変長符号化することによってデータの符号化が行われている。
【0003】
JPEGの場合、例えば画像を水平8画素×垂直8画素=合計64画素からなる複数のブロックに分割し、それぞれのブロックを単位として符号化および復号化の処理が行われる。
【0004】
符号化の場合、ブロック内の各画素の係数に対し離散コサイン変換(DCT変換)が行われて各周波数成分の係数に変換され、量子化テーブルに基づいて量子化され、符号化テーブルに基づいてハフマン符号化される。一方、復号化の場合、可変長符号化されたブロック内の係数に対し同一符号化テーブルを用いてハフマン復号化が行われ、同一量子化テーブルを用いて逆量子化され、逆DCT変換されて復号画像データが得られる。
【0005】
ここで、量子化された後のブロック内の水平8画素(X=0〜7)×垂直8画素(Y=0〜7)=64画素の係数(rXY)の内、係数r00はDC係数と呼ばれ、残りの63個の係数r01〜r77はAC係数と呼ばれる。
【0006】
例えば、AC係数のハフマン符号化は、ブロック内のデータをジグザグスキャンして得られるデータストーリームの先頭のデータから、連続する0の係数の個数を示すランレングスを求め、0に続く0以外のAC係数の値からグループ番号(SSSS)を求め、ランレングスとグループ番号に応じて、最大16ビット長までの符号長のハフマン符号を割り当て、このハフマン符号に、グループ番号に応じて、最大11ビット長までの付加ビットを付加することにより行われる。
【0007】
これに対し、可変長符号化されたAC係数のデータストリームのハフマン復号化は、ハフマン符号も付加ビットも共に可変長であるため、まず、データストリームの最初のハフマン符号の符号長を求めて、データストリームの先頭のデータから符号長分のハフマン符号を取り出し、ハフマン符号に応じてランレングスとグループ番号を求めた後、グループ番号に基づいて付加ビットのビット長を求めることにより行われる。
【0008】
以下、図5〜図8を参照しながら、ハフマン復号化を行うハフマンデコーダとその問題点について説明する。なお、図7では、図中左側から右側へ向かって時間tが進むものとする。
【0009】
図5は、従来のハフマンデコーダの一例の構成概念図である。
同図に示すハフマンデコーダ40は、可変長符号化されたデータストリームから、符号化される前の係数を順次復元するものであり、シフト部12と、比較器14と、最大符号コードテーブル16と、メモリアドレス生成部18と、発生頻度テーブル20と、メモリ24と、ブロック内アドレス生成部26と、係数生成部28とを備えている。
【0010】
図8の概念図に示すように、可変長符号化されたデータストリームは、ハフマン符号1、付加ビット1、ハフマン符号2、付加ビット2、… のように、ハフマン符号iと付加ビットiが交互に繰り返し出現するデータになっている。JPEGの場合、ハフマン符号iは最大16ビット、付加ビットiは最大11ビットの可変長データである。ハフマンデコーダ40は、符号化データiであるハフマン符号iと付加ビットiをデコードして復号化データiを順次復元する。
【0011】
図6のフローチャートに示すように、ハフマンデコーダ40では、まず、ハフマン符号1の符号長が検出される(ステップP1)。この時、シフト部12によってハフマン符号1の頭出しが行われ(図7のタイミングA)、比較器14によって、シフト部12から出力されるハフマン符号の頭出しデータと最大符号テーブル16から出力される各ビット長の符号の最大値(最大符号コード)とが順次比較され(ステップP2)、最終的にハフマン符号1の符号長が決定される(ステップP3)。
【0012】
続いて、メモリ24へのアクセス(メモリアクセス)が行われる(ステップP4)。この時、メモリアドレス生成部18によって、シフト部12から出力されるハフマン符号1の頭出しデータと、比較器14から出力されるハフマン符号1の符号長のデータと、発生頻度テーブル20から出力されるハフマン符号1の発生頻度のデータに基づいて、メモリ24に入力されるアドレスが生成される。
【0013】
メモリ24には、ハフマン符号の頭出しデータとその符号長のデータおよび発生頻度のデータに基づいて生成されるメモリアドレスに、それぞれのハフマン符号に対応するRS値が記憶されている。ここで、RS値は、R値(ランレングス)とS値(グループ番号)とを組み合わせたデータである。したがって、メモリ24からは、メモリアドレス生成部18によって生成されたメモリアドレスに記憶されているRS値が読み出される。
【0014】
また同時に、比較器14から出力されるハフマン符号1の符号長のデータはシフト部12にフィードバックされる。そして、シフト部12により、ハフマン符号1の符号長分だけデータストリームがシフトされて付加ビット1の頭出しが行われる(図7のタイミングB)。
【0015】
メモリ24からRS値が読み出されると、ブロック内アドレス生成部26により、R値に基づいてジグザグアドレスが生成される。また、係数生成部28により、S値およびシフト部12から出力される付加ビット1の頭出しデータに基づいて量子化後のDCT係数(復号化データ1)が生成される(ステップP5)。
【0016】
また同時に、メモリ24から読み出されたS値はシフト部12にフィードバックされる。そして、シフト部12により、このS値に基づいて決定される付加ビット1のビット長分だけデータストリームがシフトされて次のハフマン符号2の頭出しが行われる(図7のタイミングC)(ステップP6)。
【0017】
そして以後、前述のようにして、ハフマン符号iの符号長の決定と、付加ビットiのビット長の決定が繰り返し行われ、復号化データ2、復号化データ3、…
が順次復元される。
【0018】
上記の通り、ハフマンデコーダ40では、可変長符号化されたデータストリームを、符号化される前の元データに復号化するために、ハフマン符号の符号長を求めてから、付加ビットのビット長を求めるという動作を交互に繰り返し行う必要がある。したがって、前の符号化データのデコードが完全に終了しないと、次の符号化データを復元するための処理を開始することができず、デコード処理の高速化が難しいという問題点があった。
【0019】
これに対し、例えば下記特許文献1には、可変長符号化回路においてパイプライン処理を可能にし、圧縮伸張回路の伸張復号処理時間の性能向上を図る可変長符号化装置が提案されている。同特許文献1に開示の可変長符号化装置は、エントロピー復号テーブルのRAMのアクセス中に次のハフマン符号のエントロピー復号テーブルアドレスの候補を求めておくようにしたことを特徴とするものである。
【0020】
同特許文献1に開示の可変長符号化装置の場合、確かにデコードの高速化は実現可能であるが、回路規模が著しく増大するという問題がある。JPEGの場合、同特許文献1の図4に示されているように、現在復号中のハフマン符号および付加ビットに加えて、ハフマン符号の最大符号長である16ビットと付加ビットの最大ビット長である11ビットからなる合計28個のハフマン符号長検出部とアドレス生成部が必要になる。
【0021】
【特許文献1】
特開2002−16501号公報
【0022】
【発明が解決しようとする課題】
本発明の目的は、前記従来技術に基づく問題点を解消し、回路規模を増大させることなく、高速にデコード処理を行うことができるハフマンデコーダを提供することにある。
【0023】
【課題を解決するための手段】
上記目的を達成するために、本発明は、ハフマン符号と付加ビットとが交互に繰り返し出現する可変長符号化されたデータストリームを保持し、前記付加ビットの頭出しを行って当該付加ビットの頭出しデータを出力するシフト部と、
それぞれの前記ハフマン符号に対応したR値およびS値を記憶するメモリと、前記メモリのアクセス期間中に、前記シフト部から出力される付加ビットの頭出しデータから次のハフマン符号の頭出しデータの予測値を保持しておき、前記メモリから読み出されるS値に基づいて決定される付加ビットのビット長に対応する予測値をハフマン符号の頭出しデータとして出力する予測器と、
前記予測器から出力されるハフマン符号の頭出しデータの符号長を検出し、当該ハフマン符号の符号長のデータを出力する比較器とを備え、
前記シフト部は、前記比較器から出力されるハフマン符号の符号長のデータおよび前記メモリから読み出されるS値に従って、前記付加ビットの頭出しを行うことを特徴とするハフマンデコーダを提供するものである。
【0024】
さらに、前記予測器から出力されるハフマン符号の頭出しデータおよび前記比較器から出力されるハフマン符号の符号長のデータに基づいて、前記メモリをアクセスするためのメモリアドレスを生成するメモリアドレス生成部と、
前記メモリから読み出されるR値に基づいて、ブロック内のジグザグアドレスを生成するブロック内アドレス生成部と、
前記メモリから読み出されるS値と前記シフト部から出力される付加ビットの頭出しデータに基づいて、符号化される前の係数を生成する係数生成部とを備えるのが好ましい。
【0025】
【発明の実施の形態】
以下に、添付の図面に示す好適実施形態に基づいて、本発明のハフマンデコーダを詳細に説明する。
【0026】
図1は、本発明のハフマンデコーダの一実施形態の構成概念図である。
同図に示すハフマンデコーダ10は、可変長符号化されたデータストリームから、符号化される前のデータを順次復元するものであり、シフト部12と、予測器22と、比較器14と、最大符号コードテーブル16と、メモリアドレス生成部18と、発生頻度テーブル20と、メモリ24と、ブロック内アドレス生成部26と、係数生成部28とを備えている。
【0027】
図1に示す本発明のハフマンデコーダ10と図5に示す従来のハフマンデコーダ40との違いは、次のハフマン符号を予測するための予測器22を備えている点である。なお、これ以外の各構成要素12,14,16,18,20,24,26,28は、従来のハフマンデコーダ40の各構成要素と基本的に同じものであるから同一の構成要素には同一の符号を付してある。以下、本発明のハフマンデコーダ10について順次説明する。
【0028】
シフト部12は、図8に示すように、ハフマン符号と付加ビットとが交互に繰り返し出現する可変長符号化された所定量のデータストリームを保持し、ハフマン符号の符号長および付加ビットのビット長に従って、保持されているデータストリームをシフトし、付加ビットの頭出しを順次行う。シフト部12にはデータストリームが入力され、シフト部12の出力は、予測器22および係数生成部28に入力されている。
【0029】
予測器22は、シフト部12から出力される付加ビットの頭出しデータから、次のハフマン符号の頭出しデータの予測値をあらかじめ保持しておき、メモリ24から読み出されるS値(グループ番号)に基づいて決定される付加ビットのビット長に応じて、保持してある予測値の中から1つの予測値を次のハフマン符号の頭出しデータとして選択的に出力する。予測器22の出力は、比較器14およびメモリアドレス生成部18に入力されている。
【0030】
比較器14は、予測器22から出力されるハフマン符号の頭出しデータと、最大符号コードテーブル16から出力される各符号長の符号の最大符号コードとを比較して、ハフマン符号の符号長(ビット長)を検出する。比較器14には、予測器22の出力の他、最大符号コードテーブル16の出力が入力され、比較器14の出力(符号長のデータ)は、シフト部12およびメモリアドレス生成部18に入力されている。
【0031】
メモリアドレス生成部18は、予測器22から出力されるハフマン符号の頭出しデータと、比較器14から出力されるハフマン符号の符号長のデータと、発生頻度テーブル20から出力されるハフマン符号の発生頻度データに基づいて、メモリ24をアクセスするためのメモリアドレスを生成する。メモリアドレス生成部18には、予測器22の出力および比較器14の出力の他、発生頻度テーブル20の出力が入力され、メモリアドレス生成部18の出力はメモリ24に入力されている。
【0032】
メモリ24には、それぞれのハフマン符号に対応するRS値が記憶されている。メモリ24の出力(RS値)のうち、R値(ランレングス)はブロック内アドレス生成部26に入力され、S値(グループ番号)は、シフト部12、予測器22および係数生成部28に入力されている。
【0033】
0が余り続かずに値の小さいAC係数が出現する場合の発生頻度と、0が続いた後で値の大きいAC係数が出現する場合の発生頻度は、一般的に前者の方が発生頻度が高い。従って、発生頻度が高い順に、短い符号長かつ値の小さいハフマン符号が割り当てられている。また、10ビット長のハフマン符号が8種類ある場合、この8種類のハフマン符号に対応するRS値は、それぞれのハフマン符号の発生頻度に対応するメモリアドレスに記憶されている。
【0034】
また、ハフマンデコーダ10において、ブロック内アドレス生成部26からはブロック内のジグザグアドレスが出力され、係数生成部28からは量子化後のDCT係数が出力されている。
【0035】
次に、図2に示す概念図を参照して、図1に示すハフマンデコーダ10におけるシフト部12および予測器22の内部構成を説明する。
【0036】
図2に示すように、シフト部12は、バッファ30と、シフタ32と、シフト量制御部34とを備えている。また、予測器22は、シフタ36と、選択器38とを備えている。
【0037】
なお、図2の概念図は、本発明をJPEGのハフマンデコーダとして構成した場合の一例を示すものである。したがって、シフト部12のシフタ32からは、ハフマン符号の最大符号長である16ビットと付加ビットの最大ビット長である11ビットを加えた27ビットのデータがシフト出力とは別に並列に出力され、また、予測器22は、次のハフマン符号を予測するために、付加ビットの最大ビット長である11ビットに対応する11本のシフタ36を備えている。
【0038】
シフト部12において、バッファ30は、シフト量制御部34の制御により、所定量のデータストリームを保持する。バッファ30にはデータストリームが入力され、バッファ30の出力はシフタ32に入力されている。
【0039】
また、シフタ32は、同じくシフト量制御部34の制御により、バッファ30から出力されるデータストリームを所定ビット長シフトし、付加ビットの頭出しを行う。
【0040】
シフト量制御部34は、図1に示す比較器14から出力されるハフマン符号の符号長のデータ、およびメモリ24から出力されるS値(グループ番号)に従い、バッファ30およびシフタ32におけるデータストリームのシフト量の制御を行う。シフト量制御部34には、符号長のデータおよびS値が入力され、シフト量制御部34の出力(シフト量の制御信号)はバッファ30およびシフタ32に入力されている。
【0041】
一方、予測器22において、11本のシフタ36は、シフト部12のシフタ32から出力される付加ビットの頭出しデータを、それぞれJPEGの付加ビットの全てのビット長に対応する1〜11ビットずつシフト(<<iは、iビットシフトを意味する)した、次のハフマン符号の頭出しデータの全ての候補を保持する。11本のシフタ36には、シフト部12のシフタ32の出力が共通に入力され、11本のシフタ36の出力は全て選択器38に入力されている。
【0042】
また、選択器38は、図1に示すメモリ24から出力されるS値に従い、11本のシフタ36に保持されている予測値と、S値=0の予測値(ZRL)のうちの1つの予測値を次のハフマン符号の頭出しデータとして選択的に出力する。選択器38には、11本のシフタ36の出力の他、シフト部12のシフタ32の出力が入力されている。また、選択器38の選択入力にはS値が入力され、選択器38からは次のハフマン符号の頭出しデータが出力されている。
【0043】
シフト部12では、シフト量制御部34の制御により、バッファ30におけるデータの入れ換え量およびシフタ32のシフト量が決定され、付加ビットの頭出しが行われる。そして、予測器22の11本のシフタ36に次のハフマン符号の頭出しデータの予測値が保持される。なお、本実施形態では、後述するように、ハフマン符号1の場合に限り、シフタ32によってハフマン符号1の頭出しが行われる。
【0044】
JPEGでは、S値が‘1’(SSSS=1)〜‘11’(SSSS=11)である場合、それぞれシフタ32の出力(付加ビットの頭出しデータ)を1〜11ビットずつシフトしたデータから最大16ビット長のデータが次のハフマン符号の頭出しデータになる。従って、予測器22の11本のシフタ36には、シフト部12のシフタ32から出力される付加ビットの頭出しデータを1〜11ビットずつシフトした16ビット長のデータがそれぞれ保持される。また、ZRLの場合はS=0なので、シフタ32からの出力をそのまま利用できる。
【0045】
メモリ24からS値が読み出されると、予測器22の選択器38から、11本のシフタ36に保持されている予測値のうちの1つの予測値またはZRLを意味するシフタ32の出力が次のハフマン符号の頭出しデータとして選択出力されるのと同時に、シフト部12では次の付加ビットの頭出しが行われる。なお、本実施形態では、ハフマン符号1の場合は、シフト部12のシフタ32の出力(ハフマン符号の頭出しデータ)が、予測器の選択器38から選択出力される。
【0046】
次に、図3に示すフローチャートおよび図4に示すタイミングチャートを参照して、図1および図2に示すハフマンデコーダ10の動作を説明する。なお、図4では、図中左側から右側へ向かって時間tが進むものとする。
【0047】
図3のフローチャートに示すように、ハフマンデコーダ10では、まず、ハフマン符号1の符号長の検出が行われる(ステップS1)。この時、シフト部12では、シフト量制御部34の制御により、ハフマン符号1の頭出しが行われ(図4のタイミングA)、このハフマン符号1の頭出しデータが予測器22の選択器38を介して比較器14に入力される。
【0048】
比較器14では、予測器22から出力されるハフマン符号1の頭出しデータと最大符号テーブル16から出力される各ビット長の符号の最大値(最大符号コード)とが順次比較され(ステップS2)、最終的にハフマン符号1の符号長が決定される(ステップS3)。
【0049】
JPEGの場合、予測器22からは、ハフマン符号の最大符号長(最大ビット長)である16ビット長のデータ(ハフマン符号の頭出しデータ)が出力される。比較器14では、予測器22から出力される16ビット長のデータが、例えば2ビット長のハフマン符号の最大値よりも大きく、かつ3ビット長のハフマン符号の最大値よりも小さい場合、このハフマン符号の符号長は3ビットであると決定される。
【0050】
続いて、メモリ24へのアクセス(メモリアクセス)が行われる(ステップS4)。この時、メモリアドレス生成部18では、予測器22から出力される16ビット長のデータ(ハフマン符号1の頭出しデータ)と、比較器14から出力されるハフマン符号1の符号長のデータと、発生頻度テーブル20から出力されるハフマン符号1の発生頻度データに基づいて、メモリ24をアクセスするためのメモリアドレスが生成される。
【0051】
メモリ24には、上記16ビット長のデータ(ハフマン符号の頭出しデータ)と、ハフマン符号の符号長のデータおよび発生頻度データに基づいて生成されるメモリアドレスに、それぞれのハフマン符号に対応するRS値が記憶されている。メモリアドレス生成部18からメモリアドレスが入力されると、メモリ24からは、このメモリアドレスに記憶されているRS値が読み出される(ステップS5)。
【0052】
また同時に、比較器14から出力されるハフマン符号1の符号長のデータがシフト部12にフィードバックされ、シフト部12により、この符号長分だけデータストリームがシフトされて付加ビット1の頭出しが行われる(図4のタイミングB)。そして、予測器22により、シフト部12のシフタ32から出力される付加ビットの頭出しデータがさらに1〜11ビットずつシフトされ、次のハフマン符号の頭出しデータの予測値が11本のシフタ36にそれぞれ保持される(ステップS6)。
【0053】
メモリ24から、メモリアドレス生成部18によって生成されるメモリアドレスに記憶されているRS値が読み出されると、ブロック内アドレス生成部26により、R値に基づいてジグザグアドレスが生成される。また、係数生成部28により、S値とシフト部12から出力される付加ビット1の頭出しデータに基づいて付加ビット1が決定され、この付加ビット1に基づいて量子化後のDCT係数(復号化データ1)が生成される。
【0054】
また同時に、予測器22から、S値によって決定される付加ビットのビット長分のデータをシフトした次のハフマン符号の頭出しデータの予測値が選択出力され、比較器14では、次のハフマン符号2の符号長が検出される。すなわち、メモリ24からRS値が読み出されると、前のハフマン符号1の付加ビットのビット長が決定されて復号化データ1の係数が生成されるのと同時に、次のハフマン符号2の符号長の検出が行われる。
【0055】
その後、シフト部12では、メモリ24から出力されるハフマン符号1に対応するS値および比較器14から出力される次のハフマン符号2の符号長のデータに基づいて、バッファ30内のデータが準備されると共に、シフタ32により、ハフマン符号1の付加ビットのビット長および次のハフマン符号2の符号長分だけデータストリームがシフトされ(ステップS7)、付加ビット2の頭出しが行われる(図4のタイミングC)。
【0056】
そして以後、前述のようにして、前のハフマン符号iの付加ビットiのビット長が決定されて復号化データiの係数が生成されるのと同時に、次のハフマン符号i+1の符号長の検出が行われ、復号化データ2、復号化データ3、… が順次復元される。
【0057】
上記の通り、ハフマンデコーダ10では、予測器22によって次のハフマン符号の頭出しデータをあらかじめ格納しておき、メモリ24からS値が読み出されると、前のハフマン符号の付加ビットのビット長が決定されて復号化データの係数が生成されるのと同時に、次のハフマン符号の符号長の検出が行われるため、その分、デコード処理を高速化することができる。また、特許文献1と比較すると、格段に回路規模が小さいという利点がある。
【0058】
なお、本発明は、例えばJPEGやMPEG等に限らず、可変長符号化されたデータストリームから、符号化される前のデータを順次復号化するハフマンデコーダを使用するもの全てに適用可能である。
【0059】
また、シフト部12は、ハフマン符号の符号長のデータおよびS値に応じて付加ビットの頭出しを行うことができれば、その回路構成は何ら限定されない。同様に、比較器14は、ハフマン符号に基づいてその符号長を検出することができればよい。すなわち、各符号長の符号の最大符号コードと比較することは必須ではなく、例えば最小符号コードと比較したり、これ以外の方法を利用して同様に符号長を検出するようにしてもよい。
【0060】
また、メモリアドレス生成部18は、ハフマン符号の頭出しデータとその符号長に基づいてメモリ24のメモリアドレスを生成することができればよく、メモリ24には、メモリアドレス生成部18によって生成されるメモリアドレスに対応して、それぞれのハフマン符号に対応するRS値が保持されていればよい。すなわち、ハフマン符号の発生頻度データを使用することは必須ではなく、これ以外の方法を利用して同様にメモリアドレスを生成するようにしてもよい。
【0061】
また、予測器22も図2に示すものに限定されず、メモリアクセスの期間中に次のハフマン符号の頭出しデータの予測値を保持しておき、メモリ24から読み出されるS値に基づいて適切な予測値を出力可能なものであればどのような回路構成であってもよい。また、ブロック内アドレス生成部26はR値からブロック内のジグザグアドレスを生成するもの、また、係数生成部28は、S値と付加ビットから符号化される前の係数を生成可能な構成のものであればよい。
【0062】
また、上記実施形態では、シフト部12から出力されるハフマン符号1の頭出しデータを、予測器22の選択器38を介して選択的に出力しているが、これも限定されない。例えば、シフト部12から出力されるハフマン符号1の頭出しデータを比較器14に入力し、比較器14の内部で、シフト部12から出力されるハフマン符号1の頭出しデータと、予測器22から出力される他のハフマン符号の頭出しデータとを選択的に使用するようにしてもよい。
【0063】
本発明のハフマンデコーダは、基本的に以上のようなものである。
以上、本発明のハフマンデコーダについて詳細に説明したが、本発明は上記実施形態に限定されず、本発明の主旨を逸脱しない範囲において、種々の改良や変更をしてもよいのはもちろんである。
【0064】
【発明の効果】
以上詳細に説明した様に、本発明のハフマンデコーダは、次のハフマン符号の頭出しデータの予測器を備え、メモリアクセス期間中に、シフト部から出力される前の符号化データの付加ビットと次の符号化データのハフマン符号の頭出しデータから次のハフマン符号の頭出しデータの候補を保持しておき、メモリからRS値が読み出されると、前の符号化データの付加ビットのビット長が決定されて復号化データの係数が生成されるのと同時に、メモリから読み出されるS値に基づいて決定される付加ビットのビット長に対応する候補を次のハフマン符号の頭出しデータとして出力し、その符号長を検出するようにしたものである。
これにより、本発明のハフマンデコーダによれば、比較的回路規模の小さい予測器を追加するだけなので、回路規模が著しく増大するということがないし、メモリからRS値が読み出されると、復号化データの生成と同時に、次のハフマン符号の符号長が決定されるので、その分、デコード処理を高速化することができる。
【図面の簡単な説明】
【図1】本発明のハフマンデコーダの一実施形態の構成概念図である。
【図2】図1に示すハフマンデコーダにおけるシフト部および予測器の内部構成を表す一実施形態の概念図である。
【図3】図1に示すハフマンデコーダの動作を表す一実施形態のフローチャートである。
【図4】図1に示すハフマンデコーダの動作を表す一実施形態のタイミングチャートである。
【図5】従来のハフマンデコーダの一例の構成概念図である。
【図6】図5に示すハフマンデコーダの動作を表す一例のフローチャートである。
【図7】図5に示すハフマンデコーダの動作を表す一例のタイミングチャートである。
【図8】可変長符号化されたデータストリームの構成を表す一例の概念図である。
【符号の説明】
10,40 ハフマンデコーダ
12 シフト部
14 比較器
16 最大符号コードテーブル
18 メモリアドレス生成部
20 発生頻度テーブル
22 予測器
24 メモリ
26 ブロック内アドレス生成部
28 係数生成部
30 バッファ
32,36 シフタ
34 シフト量制御部
38 選択器
【発明の属する技術分野】
本発明は、可変長符号化(ハフマン符号化)されたデータストリームから、符号化される前のデータ(係数)を順次復元するハフマンデコーダに関するものである。
【0002】
【従来の技術】
静止画の国際標準符号化方式であるJPEG(Joint Photographic Experts Group)や、動画の国際標準符号化方式であるMPEG(Moving Picture ExpertsGroup)等のデータ圧縮技術が知られている。これらの符号化方式では、画像を所定の画素数からなる複数のブロックに分割し、それぞれのブロックにおいて、ブロック内に含まれる各画素の係数を可変長符号化することによってデータの符号化が行われている。
【0003】
JPEGの場合、例えば画像を水平8画素×垂直8画素=合計64画素からなる複数のブロックに分割し、それぞれのブロックを単位として符号化および復号化の処理が行われる。
【0004】
符号化の場合、ブロック内の各画素の係数に対し離散コサイン変換(DCT変換)が行われて各周波数成分の係数に変換され、量子化テーブルに基づいて量子化され、符号化テーブルに基づいてハフマン符号化される。一方、復号化の場合、可変長符号化されたブロック内の係数に対し同一符号化テーブルを用いてハフマン復号化が行われ、同一量子化テーブルを用いて逆量子化され、逆DCT変換されて復号画像データが得られる。
【0005】
ここで、量子化された後のブロック内の水平8画素(X=0〜7)×垂直8画素(Y=0〜7)=64画素の係数(rXY)の内、係数r00はDC係数と呼ばれ、残りの63個の係数r01〜r77はAC係数と呼ばれる。
【0006】
例えば、AC係数のハフマン符号化は、ブロック内のデータをジグザグスキャンして得られるデータストーリームの先頭のデータから、連続する0の係数の個数を示すランレングスを求め、0に続く0以外のAC係数の値からグループ番号(SSSS)を求め、ランレングスとグループ番号に応じて、最大16ビット長までの符号長のハフマン符号を割り当て、このハフマン符号に、グループ番号に応じて、最大11ビット長までの付加ビットを付加することにより行われる。
【0007】
これに対し、可変長符号化されたAC係数のデータストリームのハフマン復号化は、ハフマン符号も付加ビットも共に可変長であるため、まず、データストリームの最初のハフマン符号の符号長を求めて、データストリームの先頭のデータから符号長分のハフマン符号を取り出し、ハフマン符号に応じてランレングスとグループ番号を求めた後、グループ番号に基づいて付加ビットのビット長を求めることにより行われる。
【0008】
以下、図5〜図8を参照しながら、ハフマン復号化を行うハフマンデコーダとその問題点について説明する。なお、図7では、図中左側から右側へ向かって時間tが進むものとする。
【0009】
図5は、従来のハフマンデコーダの一例の構成概念図である。
同図に示すハフマンデコーダ40は、可変長符号化されたデータストリームから、符号化される前の係数を順次復元するものであり、シフト部12と、比較器14と、最大符号コードテーブル16と、メモリアドレス生成部18と、発生頻度テーブル20と、メモリ24と、ブロック内アドレス生成部26と、係数生成部28とを備えている。
【0010】
図8の概念図に示すように、可変長符号化されたデータストリームは、ハフマン符号1、付加ビット1、ハフマン符号2、付加ビット2、… のように、ハフマン符号iと付加ビットiが交互に繰り返し出現するデータになっている。JPEGの場合、ハフマン符号iは最大16ビット、付加ビットiは最大11ビットの可変長データである。ハフマンデコーダ40は、符号化データiであるハフマン符号iと付加ビットiをデコードして復号化データiを順次復元する。
【0011】
図6のフローチャートに示すように、ハフマンデコーダ40では、まず、ハフマン符号1の符号長が検出される(ステップP1)。この時、シフト部12によってハフマン符号1の頭出しが行われ(図7のタイミングA)、比較器14によって、シフト部12から出力されるハフマン符号の頭出しデータと最大符号テーブル16から出力される各ビット長の符号の最大値(最大符号コード)とが順次比較され(ステップP2)、最終的にハフマン符号1の符号長が決定される(ステップP3)。
【0012】
続いて、メモリ24へのアクセス(メモリアクセス)が行われる(ステップP4)。この時、メモリアドレス生成部18によって、シフト部12から出力されるハフマン符号1の頭出しデータと、比較器14から出力されるハフマン符号1の符号長のデータと、発生頻度テーブル20から出力されるハフマン符号1の発生頻度のデータに基づいて、メモリ24に入力されるアドレスが生成される。
【0013】
メモリ24には、ハフマン符号の頭出しデータとその符号長のデータおよび発生頻度のデータに基づいて生成されるメモリアドレスに、それぞれのハフマン符号に対応するRS値が記憶されている。ここで、RS値は、R値(ランレングス)とS値(グループ番号)とを組み合わせたデータである。したがって、メモリ24からは、メモリアドレス生成部18によって生成されたメモリアドレスに記憶されているRS値が読み出される。
【0014】
また同時に、比較器14から出力されるハフマン符号1の符号長のデータはシフト部12にフィードバックされる。そして、シフト部12により、ハフマン符号1の符号長分だけデータストリームがシフトされて付加ビット1の頭出しが行われる(図7のタイミングB)。
【0015】
メモリ24からRS値が読み出されると、ブロック内アドレス生成部26により、R値に基づいてジグザグアドレスが生成される。また、係数生成部28により、S値およびシフト部12から出力される付加ビット1の頭出しデータに基づいて量子化後のDCT係数(復号化データ1)が生成される(ステップP5)。
【0016】
また同時に、メモリ24から読み出されたS値はシフト部12にフィードバックされる。そして、シフト部12により、このS値に基づいて決定される付加ビット1のビット長分だけデータストリームがシフトされて次のハフマン符号2の頭出しが行われる(図7のタイミングC)(ステップP6)。
【0017】
そして以後、前述のようにして、ハフマン符号iの符号長の決定と、付加ビットiのビット長の決定が繰り返し行われ、復号化データ2、復号化データ3、…
が順次復元される。
【0018】
上記の通り、ハフマンデコーダ40では、可変長符号化されたデータストリームを、符号化される前の元データに復号化するために、ハフマン符号の符号長を求めてから、付加ビットのビット長を求めるという動作を交互に繰り返し行う必要がある。したがって、前の符号化データのデコードが完全に終了しないと、次の符号化データを復元するための処理を開始することができず、デコード処理の高速化が難しいという問題点があった。
【0019】
これに対し、例えば下記特許文献1には、可変長符号化回路においてパイプライン処理を可能にし、圧縮伸張回路の伸張復号処理時間の性能向上を図る可変長符号化装置が提案されている。同特許文献1に開示の可変長符号化装置は、エントロピー復号テーブルのRAMのアクセス中に次のハフマン符号のエントロピー復号テーブルアドレスの候補を求めておくようにしたことを特徴とするものである。
【0020】
同特許文献1に開示の可変長符号化装置の場合、確かにデコードの高速化は実現可能であるが、回路規模が著しく増大するという問題がある。JPEGの場合、同特許文献1の図4に示されているように、現在復号中のハフマン符号および付加ビットに加えて、ハフマン符号の最大符号長である16ビットと付加ビットの最大ビット長である11ビットからなる合計28個のハフマン符号長検出部とアドレス生成部が必要になる。
【0021】
【特許文献1】
特開2002−16501号公報
【0022】
【発明が解決しようとする課題】
本発明の目的は、前記従来技術に基づく問題点を解消し、回路規模を増大させることなく、高速にデコード処理を行うことができるハフマンデコーダを提供することにある。
【0023】
【課題を解決するための手段】
上記目的を達成するために、本発明は、ハフマン符号と付加ビットとが交互に繰り返し出現する可変長符号化されたデータストリームを保持し、前記付加ビットの頭出しを行って当該付加ビットの頭出しデータを出力するシフト部と、
それぞれの前記ハフマン符号に対応したR値およびS値を記憶するメモリと、前記メモリのアクセス期間中に、前記シフト部から出力される付加ビットの頭出しデータから次のハフマン符号の頭出しデータの予測値を保持しておき、前記メモリから読み出されるS値に基づいて決定される付加ビットのビット長に対応する予測値をハフマン符号の頭出しデータとして出力する予測器と、
前記予測器から出力されるハフマン符号の頭出しデータの符号長を検出し、当該ハフマン符号の符号長のデータを出力する比較器とを備え、
前記シフト部は、前記比較器から出力されるハフマン符号の符号長のデータおよび前記メモリから読み出されるS値に従って、前記付加ビットの頭出しを行うことを特徴とするハフマンデコーダを提供するものである。
【0024】
さらに、前記予測器から出力されるハフマン符号の頭出しデータおよび前記比較器から出力されるハフマン符号の符号長のデータに基づいて、前記メモリをアクセスするためのメモリアドレスを生成するメモリアドレス生成部と、
前記メモリから読み出されるR値に基づいて、ブロック内のジグザグアドレスを生成するブロック内アドレス生成部と、
前記メモリから読み出されるS値と前記シフト部から出力される付加ビットの頭出しデータに基づいて、符号化される前の係数を生成する係数生成部とを備えるのが好ましい。
【0025】
【発明の実施の形態】
以下に、添付の図面に示す好適実施形態に基づいて、本発明のハフマンデコーダを詳細に説明する。
【0026】
図1は、本発明のハフマンデコーダの一実施形態の構成概念図である。
同図に示すハフマンデコーダ10は、可変長符号化されたデータストリームから、符号化される前のデータを順次復元するものであり、シフト部12と、予測器22と、比較器14と、最大符号コードテーブル16と、メモリアドレス生成部18と、発生頻度テーブル20と、メモリ24と、ブロック内アドレス生成部26と、係数生成部28とを備えている。
【0027】
図1に示す本発明のハフマンデコーダ10と図5に示す従来のハフマンデコーダ40との違いは、次のハフマン符号を予測するための予測器22を備えている点である。なお、これ以外の各構成要素12,14,16,18,20,24,26,28は、従来のハフマンデコーダ40の各構成要素と基本的に同じものであるから同一の構成要素には同一の符号を付してある。以下、本発明のハフマンデコーダ10について順次説明する。
【0028】
シフト部12は、図8に示すように、ハフマン符号と付加ビットとが交互に繰り返し出現する可変長符号化された所定量のデータストリームを保持し、ハフマン符号の符号長および付加ビットのビット長に従って、保持されているデータストリームをシフトし、付加ビットの頭出しを順次行う。シフト部12にはデータストリームが入力され、シフト部12の出力は、予測器22および係数生成部28に入力されている。
【0029】
予測器22は、シフト部12から出力される付加ビットの頭出しデータから、次のハフマン符号の頭出しデータの予測値をあらかじめ保持しておき、メモリ24から読み出されるS値(グループ番号)に基づいて決定される付加ビットのビット長に応じて、保持してある予測値の中から1つの予測値を次のハフマン符号の頭出しデータとして選択的に出力する。予測器22の出力は、比較器14およびメモリアドレス生成部18に入力されている。
【0030】
比較器14は、予測器22から出力されるハフマン符号の頭出しデータと、最大符号コードテーブル16から出力される各符号長の符号の最大符号コードとを比較して、ハフマン符号の符号長(ビット長)を検出する。比較器14には、予測器22の出力の他、最大符号コードテーブル16の出力が入力され、比較器14の出力(符号長のデータ)は、シフト部12およびメモリアドレス生成部18に入力されている。
【0031】
メモリアドレス生成部18は、予測器22から出力されるハフマン符号の頭出しデータと、比較器14から出力されるハフマン符号の符号長のデータと、発生頻度テーブル20から出力されるハフマン符号の発生頻度データに基づいて、メモリ24をアクセスするためのメモリアドレスを生成する。メモリアドレス生成部18には、予測器22の出力および比較器14の出力の他、発生頻度テーブル20の出力が入力され、メモリアドレス生成部18の出力はメモリ24に入力されている。
【0032】
メモリ24には、それぞれのハフマン符号に対応するRS値が記憶されている。メモリ24の出力(RS値)のうち、R値(ランレングス)はブロック内アドレス生成部26に入力され、S値(グループ番号)は、シフト部12、予測器22および係数生成部28に入力されている。
【0033】
0が余り続かずに値の小さいAC係数が出現する場合の発生頻度と、0が続いた後で値の大きいAC係数が出現する場合の発生頻度は、一般的に前者の方が発生頻度が高い。従って、発生頻度が高い順に、短い符号長かつ値の小さいハフマン符号が割り当てられている。また、10ビット長のハフマン符号が8種類ある場合、この8種類のハフマン符号に対応するRS値は、それぞれのハフマン符号の発生頻度に対応するメモリアドレスに記憶されている。
【0034】
また、ハフマンデコーダ10において、ブロック内アドレス生成部26からはブロック内のジグザグアドレスが出力され、係数生成部28からは量子化後のDCT係数が出力されている。
【0035】
次に、図2に示す概念図を参照して、図1に示すハフマンデコーダ10におけるシフト部12および予測器22の内部構成を説明する。
【0036】
図2に示すように、シフト部12は、バッファ30と、シフタ32と、シフト量制御部34とを備えている。また、予測器22は、シフタ36と、選択器38とを備えている。
【0037】
なお、図2の概念図は、本発明をJPEGのハフマンデコーダとして構成した場合の一例を示すものである。したがって、シフト部12のシフタ32からは、ハフマン符号の最大符号長である16ビットと付加ビットの最大ビット長である11ビットを加えた27ビットのデータがシフト出力とは別に並列に出力され、また、予測器22は、次のハフマン符号を予測するために、付加ビットの最大ビット長である11ビットに対応する11本のシフタ36を備えている。
【0038】
シフト部12において、バッファ30は、シフト量制御部34の制御により、所定量のデータストリームを保持する。バッファ30にはデータストリームが入力され、バッファ30の出力はシフタ32に入力されている。
【0039】
また、シフタ32は、同じくシフト量制御部34の制御により、バッファ30から出力されるデータストリームを所定ビット長シフトし、付加ビットの頭出しを行う。
【0040】
シフト量制御部34は、図1に示す比較器14から出力されるハフマン符号の符号長のデータ、およびメモリ24から出力されるS値(グループ番号)に従い、バッファ30およびシフタ32におけるデータストリームのシフト量の制御を行う。シフト量制御部34には、符号長のデータおよびS値が入力され、シフト量制御部34の出力(シフト量の制御信号)はバッファ30およびシフタ32に入力されている。
【0041】
一方、予測器22において、11本のシフタ36は、シフト部12のシフタ32から出力される付加ビットの頭出しデータを、それぞれJPEGの付加ビットの全てのビット長に対応する1〜11ビットずつシフト(<<iは、iビットシフトを意味する)した、次のハフマン符号の頭出しデータの全ての候補を保持する。11本のシフタ36には、シフト部12のシフタ32の出力が共通に入力され、11本のシフタ36の出力は全て選択器38に入力されている。
【0042】
また、選択器38は、図1に示すメモリ24から出力されるS値に従い、11本のシフタ36に保持されている予測値と、S値=0の予測値(ZRL)のうちの1つの予測値を次のハフマン符号の頭出しデータとして選択的に出力する。選択器38には、11本のシフタ36の出力の他、シフト部12のシフタ32の出力が入力されている。また、選択器38の選択入力にはS値が入力され、選択器38からは次のハフマン符号の頭出しデータが出力されている。
【0043】
シフト部12では、シフト量制御部34の制御により、バッファ30におけるデータの入れ換え量およびシフタ32のシフト量が決定され、付加ビットの頭出しが行われる。そして、予測器22の11本のシフタ36に次のハフマン符号の頭出しデータの予測値が保持される。なお、本実施形態では、後述するように、ハフマン符号1の場合に限り、シフタ32によってハフマン符号1の頭出しが行われる。
【0044】
JPEGでは、S値が‘1’(SSSS=1)〜‘11’(SSSS=11)である場合、それぞれシフタ32の出力(付加ビットの頭出しデータ)を1〜11ビットずつシフトしたデータから最大16ビット長のデータが次のハフマン符号の頭出しデータになる。従って、予測器22の11本のシフタ36には、シフト部12のシフタ32から出力される付加ビットの頭出しデータを1〜11ビットずつシフトした16ビット長のデータがそれぞれ保持される。また、ZRLの場合はS=0なので、シフタ32からの出力をそのまま利用できる。
【0045】
メモリ24からS値が読み出されると、予測器22の選択器38から、11本のシフタ36に保持されている予測値のうちの1つの予測値またはZRLを意味するシフタ32の出力が次のハフマン符号の頭出しデータとして選択出力されるのと同時に、シフト部12では次の付加ビットの頭出しが行われる。なお、本実施形態では、ハフマン符号1の場合は、シフト部12のシフタ32の出力(ハフマン符号の頭出しデータ)が、予測器の選択器38から選択出力される。
【0046】
次に、図3に示すフローチャートおよび図4に示すタイミングチャートを参照して、図1および図2に示すハフマンデコーダ10の動作を説明する。なお、図4では、図中左側から右側へ向かって時間tが進むものとする。
【0047】
図3のフローチャートに示すように、ハフマンデコーダ10では、まず、ハフマン符号1の符号長の検出が行われる(ステップS1)。この時、シフト部12では、シフト量制御部34の制御により、ハフマン符号1の頭出しが行われ(図4のタイミングA)、このハフマン符号1の頭出しデータが予測器22の選択器38を介して比較器14に入力される。
【0048】
比較器14では、予測器22から出力されるハフマン符号1の頭出しデータと最大符号テーブル16から出力される各ビット長の符号の最大値(最大符号コード)とが順次比較され(ステップS2)、最終的にハフマン符号1の符号長が決定される(ステップS3)。
【0049】
JPEGの場合、予測器22からは、ハフマン符号の最大符号長(最大ビット長)である16ビット長のデータ(ハフマン符号の頭出しデータ)が出力される。比較器14では、予測器22から出力される16ビット長のデータが、例えば2ビット長のハフマン符号の最大値よりも大きく、かつ3ビット長のハフマン符号の最大値よりも小さい場合、このハフマン符号の符号長は3ビットであると決定される。
【0050】
続いて、メモリ24へのアクセス(メモリアクセス)が行われる(ステップS4)。この時、メモリアドレス生成部18では、予測器22から出力される16ビット長のデータ(ハフマン符号1の頭出しデータ)と、比較器14から出力されるハフマン符号1の符号長のデータと、発生頻度テーブル20から出力されるハフマン符号1の発生頻度データに基づいて、メモリ24をアクセスするためのメモリアドレスが生成される。
【0051】
メモリ24には、上記16ビット長のデータ(ハフマン符号の頭出しデータ)と、ハフマン符号の符号長のデータおよび発生頻度データに基づいて生成されるメモリアドレスに、それぞれのハフマン符号に対応するRS値が記憶されている。メモリアドレス生成部18からメモリアドレスが入力されると、メモリ24からは、このメモリアドレスに記憶されているRS値が読み出される(ステップS5)。
【0052】
また同時に、比較器14から出力されるハフマン符号1の符号長のデータがシフト部12にフィードバックされ、シフト部12により、この符号長分だけデータストリームがシフトされて付加ビット1の頭出しが行われる(図4のタイミングB)。そして、予測器22により、シフト部12のシフタ32から出力される付加ビットの頭出しデータがさらに1〜11ビットずつシフトされ、次のハフマン符号の頭出しデータの予測値が11本のシフタ36にそれぞれ保持される(ステップS6)。
【0053】
メモリ24から、メモリアドレス生成部18によって生成されるメモリアドレスに記憶されているRS値が読み出されると、ブロック内アドレス生成部26により、R値に基づいてジグザグアドレスが生成される。また、係数生成部28により、S値とシフト部12から出力される付加ビット1の頭出しデータに基づいて付加ビット1が決定され、この付加ビット1に基づいて量子化後のDCT係数(復号化データ1)が生成される。
【0054】
また同時に、予測器22から、S値によって決定される付加ビットのビット長分のデータをシフトした次のハフマン符号の頭出しデータの予測値が選択出力され、比較器14では、次のハフマン符号2の符号長が検出される。すなわち、メモリ24からRS値が読み出されると、前のハフマン符号1の付加ビットのビット長が決定されて復号化データ1の係数が生成されるのと同時に、次のハフマン符号2の符号長の検出が行われる。
【0055】
その後、シフト部12では、メモリ24から出力されるハフマン符号1に対応するS値および比較器14から出力される次のハフマン符号2の符号長のデータに基づいて、バッファ30内のデータが準備されると共に、シフタ32により、ハフマン符号1の付加ビットのビット長および次のハフマン符号2の符号長分だけデータストリームがシフトされ(ステップS7)、付加ビット2の頭出しが行われる(図4のタイミングC)。
【0056】
そして以後、前述のようにして、前のハフマン符号iの付加ビットiのビット長が決定されて復号化データiの係数が生成されるのと同時に、次のハフマン符号i+1の符号長の検出が行われ、復号化データ2、復号化データ3、… が順次復元される。
【0057】
上記の通り、ハフマンデコーダ10では、予測器22によって次のハフマン符号の頭出しデータをあらかじめ格納しておき、メモリ24からS値が読み出されると、前のハフマン符号の付加ビットのビット長が決定されて復号化データの係数が生成されるのと同時に、次のハフマン符号の符号長の検出が行われるため、その分、デコード処理を高速化することができる。また、特許文献1と比較すると、格段に回路規模が小さいという利点がある。
【0058】
なお、本発明は、例えばJPEGやMPEG等に限らず、可変長符号化されたデータストリームから、符号化される前のデータを順次復号化するハフマンデコーダを使用するもの全てに適用可能である。
【0059】
また、シフト部12は、ハフマン符号の符号長のデータおよびS値に応じて付加ビットの頭出しを行うことができれば、その回路構成は何ら限定されない。同様に、比較器14は、ハフマン符号に基づいてその符号長を検出することができればよい。すなわち、各符号長の符号の最大符号コードと比較することは必須ではなく、例えば最小符号コードと比較したり、これ以外の方法を利用して同様に符号長を検出するようにしてもよい。
【0060】
また、メモリアドレス生成部18は、ハフマン符号の頭出しデータとその符号長に基づいてメモリ24のメモリアドレスを生成することができればよく、メモリ24には、メモリアドレス生成部18によって生成されるメモリアドレスに対応して、それぞれのハフマン符号に対応するRS値が保持されていればよい。すなわち、ハフマン符号の発生頻度データを使用することは必須ではなく、これ以外の方法を利用して同様にメモリアドレスを生成するようにしてもよい。
【0061】
また、予測器22も図2に示すものに限定されず、メモリアクセスの期間中に次のハフマン符号の頭出しデータの予測値を保持しておき、メモリ24から読み出されるS値に基づいて適切な予測値を出力可能なものであればどのような回路構成であってもよい。また、ブロック内アドレス生成部26はR値からブロック内のジグザグアドレスを生成するもの、また、係数生成部28は、S値と付加ビットから符号化される前の係数を生成可能な構成のものであればよい。
【0062】
また、上記実施形態では、シフト部12から出力されるハフマン符号1の頭出しデータを、予測器22の選択器38を介して選択的に出力しているが、これも限定されない。例えば、シフト部12から出力されるハフマン符号1の頭出しデータを比較器14に入力し、比較器14の内部で、シフト部12から出力されるハフマン符号1の頭出しデータと、予測器22から出力される他のハフマン符号の頭出しデータとを選択的に使用するようにしてもよい。
【0063】
本発明のハフマンデコーダは、基本的に以上のようなものである。
以上、本発明のハフマンデコーダについて詳細に説明したが、本発明は上記実施形態に限定されず、本発明の主旨を逸脱しない範囲において、種々の改良や変更をしてもよいのはもちろんである。
【0064】
【発明の効果】
以上詳細に説明した様に、本発明のハフマンデコーダは、次のハフマン符号の頭出しデータの予測器を備え、メモリアクセス期間中に、シフト部から出力される前の符号化データの付加ビットと次の符号化データのハフマン符号の頭出しデータから次のハフマン符号の頭出しデータの候補を保持しておき、メモリからRS値が読み出されると、前の符号化データの付加ビットのビット長が決定されて復号化データの係数が生成されるのと同時に、メモリから読み出されるS値に基づいて決定される付加ビットのビット長に対応する候補を次のハフマン符号の頭出しデータとして出力し、その符号長を検出するようにしたものである。
これにより、本発明のハフマンデコーダによれば、比較的回路規模の小さい予測器を追加するだけなので、回路規模が著しく増大するということがないし、メモリからRS値が読み出されると、復号化データの生成と同時に、次のハフマン符号の符号長が決定されるので、その分、デコード処理を高速化することができる。
【図面の簡単な説明】
【図1】本発明のハフマンデコーダの一実施形態の構成概念図である。
【図2】図1に示すハフマンデコーダにおけるシフト部および予測器の内部構成を表す一実施形態の概念図である。
【図3】図1に示すハフマンデコーダの動作を表す一実施形態のフローチャートである。
【図4】図1に示すハフマンデコーダの動作を表す一実施形態のタイミングチャートである。
【図5】従来のハフマンデコーダの一例の構成概念図である。
【図6】図5に示すハフマンデコーダの動作を表す一例のフローチャートである。
【図7】図5に示すハフマンデコーダの動作を表す一例のタイミングチャートである。
【図8】可変長符号化されたデータストリームの構成を表す一例の概念図である。
【符号の説明】
10,40 ハフマンデコーダ
12 シフト部
14 比較器
16 最大符号コードテーブル
18 メモリアドレス生成部
20 発生頻度テーブル
22 予測器
24 メモリ
26 ブロック内アドレス生成部
28 係数生成部
30 バッファ
32,36 シフタ
34 シフト量制御部
38 選択器
Claims (2)
- ハフマン符号と付加ビットとが交互に繰り返し出現する可変長符号化されたデータストリームを保持し、前記付加ビットの頭出しを行って当該付加ビットの頭出しデータを出力するシフト部と、
それぞれの前記ハフマン符号に対応したR値およびS値を記憶するメモリと、
前記メモリのアクセス期間中に、前記シフト部から出力される付加ビットの頭出しデータから次のハフマン符号の頭出しデータの予測値を保持しておき、前記メモリから読み出されるS値に基づいて決定される付加ビットのビット長に対応する予測値をハフマン符号の頭出しデータとして出力する予測器と、
前記予測器から出力されるハフマン符号の頭出しデータの符号長を検出し、当該ハフマン符号の符号長のデータを出力する比較器とを備え、
前記シフト部は、前記比較器から出力されるハフマン符号の符号長のデータおよび前記メモリから読み出されるS値に従って、前記付加ビットの頭出しを行うことを特徴とするハフマンデコーダ。 - さらに、前記予測器から出力されるハフマン符号の頭出しデータおよび前記比較器から出力されるハフマン符号の符号長のデータに基づいて、前記メモリをアクセスするためのメモリアドレスを生成するメモリアドレス生成部と、
前記メモリから読み出されるR値に基づいて、ブロック内のジグザグアドレスを生成するブロック内アドレス生成部と、
前記メモリから読み出されるS値と前記シフト部から出力される付加ビットの頭出しデータに基づいて、符号化される前の係数を生成する係数生成部とを備える請求項1に記載のハフマンデコーダ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002340928A JP2004179752A (ja) | 2002-11-25 | 2002-11-25 | ハフマンデコーダ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002340928A JP2004179752A (ja) | 2002-11-25 | 2002-11-25 | ハフマンデコーダ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004179752A true JP2004179752A (ja) | 2004-06-24 |
Family
ID=32703433
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002340928A Pending JP2004179752A (ja) | 2002-11-25 | 2002-11-25 | ハフマンデコーダ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004179752A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006140969A (ja) * | 2004-11-15 | 2006-06-01 | Canon Inc | 可変長符号化装置及び可変長符号化方法 |
JP2007104194A (ja) * | 2005-10-03 | 2007-04-19 | Akuseru:Kk | 復号化システム |
WO2018159105A1 (ja) * | 2017-02-28 | 2018-09-07 | 株式会社シキノハイテック | 画像復号化装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0993139A (ja) * | 1995-09-28 | 1997-04-04 | Ikegami Tsushinki Co Ltd | 可変長符号の復号方法および装置 |
JPH11261424A (ja) * | 1998-03-09 | 1999-09-24 | Kanebo Ltd | ハフマン復号化装置 |
JP2002016501A (ja) * | 2000-04-28 | 2002-01-18 | Matsushita Electric Ind Co Ltd | 可変長復号化装置 |
JP2002237754A (ja) * | 2001-02-07 | 2002-08-23 | Canon Inc | 可変長復号化装置及び方法 |
-
2002
- 2002-11-25 JP JP2002340928A patent/JP2004179752A/ja active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0993139A (ja) * | 1995-09-28 | 1997-04-04 | Ikegami Tsushinki Co Ltd | 可変長符号の復号方法および装置 |
JPH11261424A (ja) * | 1998-03-09 | 1999-09-24 | Kanebo Ltd | ハフマン復号化装置 |
JP2002016501A (ja) * | 2000-04-28 | 2002-01-18 | Matsushita Electric Ind Co Ltd | 可変長復号化装置 |
JP2002237754A (ja) * | 2001-02-07 | 2002-08-23 | Canon Inc | 可変長復号化装置及び方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006140969A (ja) * | 2004-11-15 | 2006-06-01 | Canon Inc | 可変長符号化装置及び可変長符号化方法 |
JP4612831B2 (ja) * | 2004-11-15 | 2011-01-12 | キヤノン株式会社 | 可変長符号化装置及び可変長符号化方法 |
USRE45300E1 (en) | 2004-11-15 | 2014-12-23 | Canon Kabushiki Kaisha | Context-adaptive variable length coder with simultaneous storage of incoming data and generation of syntax elements |
JP2007104194A (ja) * | 2005-10-03 | 2007-04-19 | Akuseru:Kk | 復号化システム |
WO2018159105A1 (ja) * | 2017-02-28 | 2018-09-07 | 株式会社シキノハイテック | 画像復号化装置 |
US11251808B2 (en) | 2017-02-28 | 2022-02-15 | Shikino High-Tech Co., Ltd. | Image decoding device |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7215707B2 (en) | Optimal scanning method for transform coefficients in coding/decoding of image and video | |
US7079057B2 (en) | Context-based adaptive binary arithmetic coding method and apparatus | |
RU2486691C1 (ru) | Способ декодирования потока битов | |
US20010054973A1 (en) | Variable length decoder | |
JP2005065311A (ja) | 画像復号化方法 | |
JP4768728B2 (ja) | 値のブロックをエンコードする方法および装置 | |
US7528749B2 (en) | Decoding apparatus and decoding method | |
JP2007300517A (ja) | 動画像処理方法、動画像処理方法のプログラム、動画像処理方法のプログラムを記録した記録媒体及び動画像処理装置 | |
JP2006295796A (ja) | 画像データ復号装置及び画像データ復号方法 | |
JP2000506715A (ja) | Mpeg―2ビデオデータ用二重速度可変長デコーダおよび復号化アーキテクチャ | |
JP2004056758A (ja) | 可変長符号化装置、及びその方法 | |
KR20110047700A (ko) | 복호화 가속화를 위한 엔트로피 부호화 방법과 그 장치 및 엔트로피 복호화 방법과 그 장치 | |
US8456334B2 (en) | Variable-length code decoding apparatus, decoding system, and variable-length code decoding method | |
US20050232362A1 (en) | High-speed image compression apparatus using last non-zero detection circuit | |
AU2002230101A2 (en) | Moving picture information compressing method and its system | |
JP2004179752A (ja) | ハフマンデコーダ | |
JP2829246B2 (ja) | 画像伸張装置 | |
JP2001189844A (ja) | 情報挿入/検出方式 | |
JPH11215009A (ja) | 符号復号装置 | |
JP2002016501A (ja) | 可変長復号化装置 | |
JP2003174365A (ja) | 復号化装置及びその方法 | |
US7269288B2 (en) | Apparatus for parallel calculation of prediction bits in a spatially predicted coded block pattern and method thereof | |
US20070154102A1 (en) | Image decompression system, method and program | |
KR100195715B1 (ko) | 가변 길이 복호기 | |
JP2003179929A (ja) | 画像復号化装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050427 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060828 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060905 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070104 |