以下、本発明の実施例に係る可変長符号復号化装置について図面を参照しながら説明する。
(実施の形態1)
本発明の実施の形態1に係る可変長符号復号化装置は、2個以上のデータが符号化された符号語を2サイクルで復号化する。これにより、1サイクルの時間を短くすることができるので、可変長符号復号化装置の高速化を実現することができる。
まず、本発明の実施の形態1に係る可変長符号復号化装置の構成を説明する。
図1は、本発明の実施の形態1に係る可変長符号復号化装置の構成を示すブロック図である。
図1に示す可変長符号復号化装置10は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置10は、ビットストリーム切出し部100と、テーブル参照部101及び102と、マルチプレクサ103、107、108及び109と、レジスタ104、105及び106とを備える。
ビットストリーム切出し部100は、未復号のビットストリームの先頭から、少なくとも可変長符号化に用いられる符号語の最大符号長分のビット列を切出す。具体的には、ビットストリーム切出し部100は、未復号のビットストリームの先頭から32ビット分のビット列を切出し出力する。また、ビットストリーム切出し部100は、マルチプレクサ109により選択された符号長に基づき未復号のビットストリームの先頭を判定し、ビット列を切出す。
テーブル参照部101は、判定部110と、記憶部111とを備える。
記憶部111は、1個の係数のみを含む複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とのテーブルである可変長符号テーブルを記憶する。ここで、係数とは、可変長符号化で1つの符号語に符号化されるデータの数である。すなわち、1個の係数を含む符号語とは、1個のデータが符号化された符号語である。
判定部110は、ビットストリーム切出し部100により切出されたビット列と記憶部111に記憶される可変長符号テーブルとを照合し、ビットストリーム切出し部100により切出されたビット列に、記憶部111に記憶される符号語が含まれるか否かを判定する。判定部110は、判定結果を示す復号化完了信号をマルチプレクサ107に出力する。具体的には、判定部110は、ビットストリーム切出し部100により切出されたビット列に、記憶部111に記憶される符号語が含まれる場合に、復号化完了信号「1」を出力する。なお、復号化完了信号「1」等の記載は、復号化完了信号として論理値「1」が出力されることを示し、以下、同様の表記を用いる。判定部110は、ビットストリーム切出し部100により切出されたビット列に、記憶部111に記憶される符号語が含まれない場合に、復号化完了信号「0」を出力する。また、判定部110は、ビットストリーム切出し部100により切出されたビット列に、記憶部111に記憶される符号語が含まれる場合に、該符号語に対応する復号化データ(ラン、レベル、ラスト)をマルチプレクサ108に出力し、該符号語に対応する符号長をマルチプレクサ109に出力する。また、判定部110は、ビットストリーム切出し部100により切出されたビット列に、記憶部111に記憶される符号語が含まれない場合に、任意の復号化データをマルチプレクサ108に出力し、符号長「0」をマルチプレクサ109に出力する。
テーブル参照部102は、判定部120と、記憶部121とを備える。
記憶部121は、2個以上の係数を含む複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とのテーブルである可変長符号テーブルを記憶する。すなわち、2個以上のデータが符号化された複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とを記憶する。
判定部120は、ビットストリーム切出し部100により切出されたビット列と記憶部121に記憶される可変長符号テーブルとを照合し、ビットストリーム切出し部100により切出されたビット列に、記憶部121に記憶される符号語が含まれるか否かを判定する。判定部120は、判定結果を示す復号化完了信号をマルチプレクサ103に出力する。具体的には、判定部120は、ビットストリーム切出し部100により切出されたビット列に、記憶部121に記憶される符号語が含まれる場合に、復号化完了信号「1」を出力する。判定部120は、ビットストリーム切出し部100により切出されたビット列に、記憶部121に記憶される符号語が含まれない場合に、復号化完了信号「0」を出力する。また、判定部120は、ビットストリーム切出し部100により切出されたビット列に、記憶部121に記憶される符号語が含まれる場合に、該符号語に対応する復号化データ(ラン、レベル、ラスト)をレジスタ105に出力し、該符号語に対応する符号長をレジスタ106に出力する。また、判定部120は、ビットストリーム切出し部100により切出されたビット列に、記憶部121に記憶される符号語が含まれない場合に、任意の復号化データをレジスタ105に出力し、符号長「0」をレジスタ106に出力する。
マルチプレクサ103は、レジスタ104に保持される復号化完了信号を選択信号として、レジスタ104へ出力する信号を選択する。マルチプレクサ103は、選択信号が「0」の場合、テーブル参照部102により出力された復号化完了信号を選択し、選択信号が「1」の場合、固定値「0」を選択する。
レジスタ104は、マルチプレクサ103により選択された復号化完了信号を保持する。レジスタ105は、テーブル参照部102により出力された復号化データを保持する。レジスタ106は、テーブル参照部102により出力された符号長を保持する。
マルチプレクサ107は、レジスタ104に保持される復号化完了信号に応じて、テーブル参照部101により出力される復号化完了信号と、レジスタ104に保持される復号化完了信号とのいずれかを選択する。マルチプレクサ107は、レジスタ104に保持される復号化完了信号が「0」の場合には、テーブル参照部101により出力される復号化完了信号を選択する。マルチプレクサ107は、レジスタ104に保持される復号化完了信号が「1」の場合には、レジスタ104に保持される復号化完了信号を選択する。
マルチプレクサ108は、レジスタ104に保持される復号化完了信号に応じて、テーブル参照部101により出力される復号化データと、レジスタ105に保持される復号化データとのいずれかを選択する。マルチプレクサ108は、レジスタ104に保持される復号化完了信号が「0」の場合には、テーブル参照部101により出力される復号化データを選択する。マルチプレクサ108は、レジスタ104に保持される復号化完了信号が「1」の場合には、レジスタ105に保持される復号化データを選択する。
マルチプレクサ109は、レジスタ104に保持される復号化完了信号に応じて、テーブル参照部101により出力される符号長と、レジスタ106に保持される符号長とのいずれかを選択する。マルチプレクサ109は、レジスタ104に保持される復号化完了信号が「0」の場合には、テーブル参照部101により出力される符号長を選択する。マルチプレクサ109は、レジスタ104に保持される復号化完了信号が「1」の場合には、レジスタ106に保持される符号長を選択する。
ビットストリーム切出し部100は、判定部110により、ビットストリーム切出し部100により切出されたビット列に、記憶部111に記憶される符号語が含まれると判定された場合、判定部110により判定が行われたサイクルと同じサイクルで、判定部110により出力された符号長に基づき、未復号のビットストリームの先頭を判定し、次に復号化されるビット列を切出す。また、ビットストリーム切出し部100は、判定部120により、ビットストリーム切出し部100により切出されたビット列に、記憶部121に記憶される符号語が含まれると判定された場合、判定部120により判定が行われたサイクルの次のサイクルで、判定部120により出力された符号長に基づき、未復号のビットストリームの先頭を判定し、次に復号化されるビット列を切出す。
図2は、記憶部111に記憶される可変長符号テーブルの一例を示す図である。図3は、記憶部121に保持される可変長テーブルの一例を示す図である。
図2及び図3に示すように記憶部111及び121に記憶される可変長符号テーブルは、符号語と、符号語の復号化データであるラン、レベル及びラストと、符号語の符号の長さ(ビット数)である符号長とを含む。記憶部111及び121に記憶される可変長符号テーブルは、ラン、レベル及びラストからなる1組を符号化した、最大符号長32ビットの可変長符号テーブルである。なお、図2及び図3において、a1は単一のビットを示し、e1−e4等はe1、e2、e3、e4の4ビットのデータが連続するビット列を示す。また、記憶部111に記憶される可変長符号テーブルは、1個の係数のみを含む符号語に対応するテーブルである。記憶部121に記憶される可変長符号テーブルは、2個以上の係数を含む符号に対応するテーブルである。
ランは、値が「0」である先行する係数の個数を示す。レベルは、値が「0」でない係数の値を示す。ラストは、符号語が水平方向及び垂直方向にそれぞれ8個の係数、合計64個の係数からなるブロックの最後であることを示す。
ここで、可変長符号復号化装置10が復号化するビットストリームは、デジタルビデオデータである。また、用いられる可変長符号化には、水平方向及び垂直方向にそれぞれ8個の係数、合計64個の係数からなるブロックの単位が用いられる。該可変長符号化では、ブロック内の連続する係数のうち値が「0」の係数と、値が「0」でない係数とを一つの符号語に符号化する。すなわち、ランは符号語に含まれる係数の個数に対応し、ランの値に1を加算した値が符号語に含まれる係数の個数である。例えば、図2に示す符号語a1のようにランの値が「0」の符号語は、1個の係数を含む符号語である。また、図3に示す符号語c1−c32は、ランの値が「2」であり、3個の係数を含む符号語である。
図2及び図3に示すテーブルを用いた場合、例えば、「1、0、2、0、0、3」という信号に対しては、最初の「1」は1つの符号語a1に符号化される。次の「0、2」は、1つの符号語b1−b16に符号化される。次の「0、0、3」は、1つの符号語c1−c32に符号化される。このように、値「0」の係数を含む複数の係数を1つの符号語に符号化することで、効率良く、データ量を削減することができる。
次に、本発明の実施の形態1に係る可変長符号復号化装置10の動作を説明する。
本発明の実施の形態1に係る可変長符号復号化装置10は、1サイクルで、1個の係数を含む符号語を復号化し、復号化された符号語の符号長に基づき、ビットストリームから次に復号化されるビット列を切出す。また、可変長符号復号化装置10は、所定のサイクルで、2個以上のデータが符号化された符号語を復号化し、所定のサイクルの次のサイクルで、所定のサイクルで復号化された符号語の符号長に基づき、ビットストリームから次に復号化されるビット列を切出す。
図4は、可変長符号復号化装置10による具体的な動作を示す図である。図5は、可変長符号復号化装置10に入力されるビットストリームに含まれる符号語の一例を示す図である。以下、可変長符号復号化装置10により、ビットストリーム「a1b1−b16c1−c32」を復号化する動作を説明する。
なお、図5に示すランの値が「0」である符号語a1は、テーブル参照部101に記憶されており、ランの値が1以上である符号語b1−b16及び符号語c1−c32は、テーブル参照部102に記憶されている。
また、ビットストリーム切出し部100は初期値として「a1b1−b16c1−c15」を出力し、レジスタ104は初期値として「0」を保持し、レジスタ105は、初期値として「(0、0、0)」を保持し、レジスタ106は、初期値として、「0」を保持している。
<第0サイクル>
第0サイクルにおいて、ビットストリーム切出し部100は、初期値「a1b1−b16c1−c15」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により切出されたビット列「a1b1−b16c1−c15」と記憶されている符号語「a1」とが一致するので、復号化完了信号「1」を出力し、復号化データ(ラン、レベル、ラスト)「(0、1、0)」を出力し、符号長「1」を出力する。
テーブル参照部102は、ビットストリーム切出し部100により切出されたビット列「a1b1−b16c1−c15」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する(x:任意の値)。
マルチプレクサ103は、レジスタ104に保持される復号化完了信号が「0」なので、テーブル参照部102により出力された復号化完了信号「0」を選択する。
レジスタ104は初期値である復号化完了信号「0」を保持し、レジスタ105は初期値である復号化データ「(0、0、0)」を保持し、レジスタ106は初期値である符号長「0」を保持する。
マルチプレクサ107は、レジスタ104に保持される復号化完了信号が「0」なので、テーブル参照部101により出力される復号化完了信号「1」を選択する。マルチプレクサ108は、レジスタ104に保持される復号化完了信号が「0」なので、テーブル参照部101により出力される復号化データ「(0、1、0)」を選択する。マルチプレクサ109は、レジスタ104に保持される復号化完了信号が「0」なので、テーブル参照部101により出力される符号長「1」を選択する。
ビットストリーム切出し部100は、マルチプレクサ109により選択された符号長が「1」なので、先頭のビットを1ビットずらして、ビット列「b1−b16c1−c16」を切出す。ビットストリーム切出し部100は、次のサイクルで、切出されたビット列「b1−b16c1−c16」を出力する。
レジスタ104は、マルチプレクサ103により選択された復号化完了信号「0」を取り込み次のサイクルで出力する。レジスタ105は、テーブル参照部102により出力された復号化データ「(x、x、x)」を取り込み次のサイクルで出力する。レジスタ106は、テーブル参照部102により出力された符号長「0」を取り込み次のサイクルで出力する。
<第1サイクル>
第1サイクルにおいて、ビットストリーム切出し部100は、第0サイクルで切出されたビット列「b1−b16c1−c16」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により切出されたビット列「b1−b16c1−c16」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
テーブル参照部102は、ビットストリーム切出し部100により切出されたビット列「b1−b16c1−c16」と記憶されている符号語「b1−b16」とが一致するので、復号化完了信号「1」を出力し、復号化データ(ラン、レベル、ラスト)「(1、2、0)」を出力し、符号長「16」を出力する。
マルチプレクサ103は、レジスタ104に保持される復号化完了信号が「0」なので、テーブル参照部102により出力された復号化完了信号「1」を選択する。
レジスタ104は第0サイクルで取り込まれた復号化完了信号「0」を保持する。レジスタ105は第0サイクルで取り込まれた復号化データ「(x、x、x)」を保持する。レジスタ106は第0サイクルで取り込まれた符号長「0」を保持する。
マルチプレクサ107は、レジスタ104に保持される復号化完了信号が「0」なので、テーブル参照部101により出力された復号化完了信号「0」を選択する。マルチプレクサ108は、レジスタ104に保持される復号化完了信号が「0」なので、テーブル参照部101により出力された復号化データ「(x、x、x)」を選択する。マルチプレクサ109は、レジスタ104に保持される復号化完了信号が「0」なので、テーブル参照部101により出力された符号長「0」を選択する。
ビットストリーム切出し部100は、マルチプレクサ109により選択された符号長が「0」なので、ビット列「b1−b16c1−c16」を切出す。ビットストリーム切出し部100は、次のサイクルで、切出されたビット列「b1−b16c1−c16」を出力する。
レジスタ104は、マルチプレクサ103により選択された復号化完了信号「1」を取り込み次のサイクルで出力する。レジスタ105は、テーブル参照部102により出力された復号化データ「(1、2、0)」を取り込み次のサイクルで出力する。レジスタ106は、テーブル参照部102により出力された符号長「16」を取り込み次のサイクルで出力する。
<第2サイクル>
第2サイクルにおいて、ビットストリーム切出し部100は、第1サイクルで切出されたビット列「b1−b16c1−c16」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により切出されたビット列「b1−b16c1−c16」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
テーブル参照部102は、ビットストリーム切出し部100により切出されたビット列「b1−b16c1−c16」と記憶されている符号語「b1−b16」とが一致するので、復号化完了信号「1」を出力し、復号化データ(ラン、レベル、ラスト)「(1、2、0)」を出力し、符号長「16」を出力する。
マルチプレクサ103は、レジスタ104に保持される復号化完了信号が「1」なので、固定値「0」を選択する。
レジスタ104は第1サイクルで取り込まれた復号化完了信号「1」を保持する。レジスタ105は第1サイクルで取り込まれた復号化データ「(1、2、0)」を保持する。レジスタ106は第1サイクルで取り込まれた符号長「16」を保持する。
マルチプレクサ107は、レジスタ104に保持される復号化完了信号が「1」なので、レジスタ104に保持される復号化完了信号「1」を選択する。マルチプレクサ108は、レジスタ104に保持される復号化完了信号が「1」なので、レジスタ105に保持される復号化データ「(1、2、0)」を選択する。マルチプレクサ109は、レジスタ104に保持される復号化完了信号が「0」なので、レジスタ106に保持される符号長「16」を選択する。
ビットストリーム切出し部100は、マルチプレクサ109により選択された符号長が「16」なので、先頭を16ビットずらして、ビット列「c1−c16」を切出す。ビットストリーム切出し部100は、次のサイクルで、切出されたビット列「c1−c16」を出力する。
レジスタ104は、マルチプレクサ103により選択された復号化完了信号「0」を取り込み次のサイクルで出力する。レジスタ105は、テーブル参照部102により出力された復号化データ「(1、2、0)」を取り込み次のサイクルで出力する。レジスタ106は、テーブル参照部102により出力された符号長「16」を取り込み次のサイクルで出力する。
<第3サイクル>
第3サイクルにおいて、ビットストリーム切出し部100は、第2サイクルで切出されたビット列「c1−c32」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により切出されたビット列「c1−c32」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
テーブル参照部102は、ビットストリーム切出し部100により切出されたビット列「c1−c32」と記憶されている符号語「c1−c32」とが一致するので、復号化完了信号「1」を出力し、復号化データ(ラン、レベル、ラスト)「(2、3、1)」を出力し、符号長「32」を出力する。
マルチプレクサ103は、レジスタ104に保持される復号化完了信号が「0」なので、テーブル参照部102により出力された復号化完了信号「1」を選択する。
レジスタ104は第2サイクルで取り込まれた復号化完了信号「0」を保持する。レジスタ105は第2サイクルで取り込まれた復号化データ「(1、2、0)」を保持する。レジスタ106は第2サイクルで取り込まれた符号長「16」を保持する。
マルチプレクサ107は、レジスタ104に保持される復号化完了信号が「0」なので、テーブル参照部101により出力された復号化完了信号「0」を選択する。マルチプレクサ108は、レジスタ104に保持される復号化完了信号が「0」なので、テーブル参照部101により出力された復号化データ「(x、x、x)」を選択する。マルチプレクサ109は、レジスタ104に保持される復号化完了信号が「0」なので、テーブル参照部101により出力された符号長「0」を選択する。
ビットストリーム切出し部100は、マルチプレクサ109により選択された符号長が「0」なので、ビット列「c1−c16」を切出す。ビットストリーム切出し部100は、次のサイクルで、切出されたビット列「c1−c16」を出力する。
レジスタ104は、マルチプレクサ103により選択された復号化完了信号「1」を取り込み次のサイクルで出力する。レジスタ105は、テーブル参照部102により出力された復号化データ「(2、3、1)」を取り込み次のサイクルで出力する。レジスタ106は、テーブル参照部102により出力された符号長「32」を取り込み次のサイクルで出力する。
<第4サイクル>
第4サイクルにおいて、ビットストリーム切出し部100は、第3サイクルで切出されたビット列「c1−c32」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により切出されたビット列「c1−c32」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
テーブル参照部102は、ビットストリーム切出し部100により切出されたビット列「c1−c32」と記憶されている符号語「c1−c32」とが一致するので、復号化完了信号「1」を出力し、復号化データ(ラン、レベル、ラスト)「(2、3、1)」を出力し、符号長「32」を出力する。
マルチプレクサ103は、レジスタ104に保持される復号化完了信号が「1」なので、固定値「0」を選択する。
レジスタ104は第3サイクルで取り込まれた復号化完了信号「1」を保持する。レジスタ105は第3サイクルで取り込まれた復号化データ「(2、3、1)」を保持する。レジスタ106は第3サイクルで取り込まれた符号長「32」を保持する。
マルチプレクサ107は、レジスタ104に保持される復号化完了信号が「1」なので、レジスタ104に保持される復号化完了信号「1」を選択する。マルチプレクサ108は、レジスタ104に保持される復号化完了信号が「1」なので、レジスタ105に保持される復号化データ「(2、3、1)」を選択する。マルチプレクサ109は、レジスタ104に保持される復号化完了信号が「0」なので、レジスタ106に保持される符号長「32」を選択する。
以上より、本発明の実施の形態1に係る可変長符号復号化装置10は、1個の係数を含む符号語をテーブル参照部101により復号化し、2個以上の係数を含む符号語を、テーブル参照部102により復号化する。
ここで、テーブル参照部101に記憶される可変長符号テーブルに含まれる符号語の数は、テーブル参照部102に記憶される可変長符号テーブルに含まれる符号語の数より少ない。例えば、テーブル参照部101及び102ランの値「0」〜「5」に対して、それぞれのレベルの符号語が記憶されるとすると、ランの値「0」の符号語がテーブル参照部101に記憶され、ランの値「1」〜「5」の符号語がテーブル参照部102に記憶される。よって、テーブル参照部101に記憶される符号語は、テーブル参照部102に記憶される符号語の1/5程度となる。これにより、テーブル参照部101で照合に要する時間は、テーブル参照部102で照合に要する時間より短くなる。
一方、図23に示すような2つの参照用テーブル820及び830を用いて復号化を行う場合には、1つの符号語の復号化に要する時間は、参照用テーブル820及び830での照合に要する時間のうち長い方により決定する。ここで、参照用テーブル820又は830で照合される符号語は、符号語全体の半分以上である。本発明の実施の形態1に係る可変長符号復号化装置10のテーブル参照部101で照合される符号語は、符号語全体の半分以下である。よって、本発明の実施の形態1に係る可変長符号復号化装置10は、従来の可変長符号復号化装置に比べ、1個の係数を含む符号語を高速に復号化することができる。
また、テーブル参照部102により復号化された2個以上の係数を含む符号語の復号化データ、符号長及び復号化完了信号は、レジスタ104、105及び106に一時的に保持される。さらに、次のサイクルにおいて、レジスタ104、105及び106に保持される復号化データ、符号長及び復号化完了信号は、マルチプレクサ107、108及び109を介して出力され、ビットストリーム切出し部100によるビット列の切出し処理が行われる。すなわち、2サイクルで、2個以上の係数を含む符号語の復号化及びビット列の切出しが行われる。これにより、1サイクルの時間は、テーブル参照部102による照合に要する時間と、ビットストリーム切出し部100によるビット列の切出しに要する時間との長いほうによって決まる。よって、従来の可変長符号復号化装置のように、1サイクルで、照合処理と、ビット列の切出し処理とを共に行う場合に比べて、1サイクルの時間を短くすることができる。
ここで、2個以上の係数を含む符号語を復号化した復号化データは、2個以上のデータを含む。よって、2個以上の係数を含む符号語を2サイクルで復号化しても、1サイクル当たり1データ以上を復号化することができる。よって、本発明の実施の形態1に係る可変長符号復号化装置10は、2個以上の係数を含む符号語に対して、1サイクル当たり1データ以上を復号化し、且つ1サイクルの時間を短くすることで、高速化を実現することができる。
また、1個の係数を含む符号語は、1サイクルで復号化するので、本発明の実施の形態1に係る可変長符号復号化装置10は、1サイクル当たり1データ以上を復号化することができる。
以上のように、本発明の実施の形態1に係る可変長符号復号化装置10は、1サイクル当たり1データ以上を復号化し、且つ可変長符号化された符号語を高速に復号化することができる。
なお、上記説明において、一致する符号語がない場合に、テーブル参照部101及び102が符号長「0」を出力することにより、ビットストリーム切出し部100によるビットストリームの先頭位置をずらす処理を行わないようにしているが、以下の処理を行ってもよい。
ビットストリーム切出し部100は、マルチプレクサ107により選択される復号化完了信号に基づき、マルチプレクサ109により選択された符号長が有効であるか否かを判定してもよい。すなわち、ビットストリーム切出し部100は、マルチプレクサ107により選択された復号化完了信号が「0」の場合に、マルチプレクサ109により選択された符号長が無効であると判断し、該符号長に基づき未復号のビットストリームの先頭を判定しない。また、ビットストリーム切出し部100は、マルチプレクサ107により選択された復号化完了信号が「1」の場合に、マルチプレクサ109により選択された符号長が有効であると判断し、該符号長に基づき未復号のビットストリームの先頭を判定し、ビット列の切出しを行う。
これにより、テーブル参照部101及びテーブル参照部102は、入力されたビット列と記憶されている符号語とが一致しない場合に、任意の符号長を出力することが可能となる。よって、テーブル参照部101及びテーブル参照部102の構成を簡略化することができるので、テーブル参照部101及びテーブル参照部102の高速化及び小容量化を実現することができる。
また、上記説明において、テーブル参照部101の記憶部111は、1個の係数を含む符号語を記憶しているが、1個の係数を含む符号語に加え、2個以上の係数を含む符号語の一部を記憶してもよい。
(実施の形態2)
本発明の実施の形態2に係る可変長符号復号化装置は、ビットストリーム切出し部が、テーブル参照部101及び102にそれぞれ対応したシフタを備える。これにより、ビット列の切出し処理を高速に行うことができる。
まず、本発明の実施の形態2に係る可変長符号復号化装置の構成を説明する。
図6は、本発明の実施の形態2に係る可変長符号復号化装置20の構成を示すブロック図である。なお、図1と同様の要素には同一の符号を付しており、説明を省略する。
図6に示す可変長符号復号化装置20は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置20は、ビットストリーム切出し部210と、テーブル参照部101及び102と、マルチプレクサ103、107、108及び109と、レジスタ104、105及び106とを備える。可変長符号復号化装置20は、実施の形態1に係る可変長符号復号化装置10に対して、ビットストリーム切出し部210の構成が異なる。
ビットストリーム切出し部210は、未復号のビットストリームの先頭から、少なくとも可変長符号化に用いられる符号語の最大符号長分のビット列を切出す。ビットストリーム切出し部210は、ビットストリーム供給部200と、シフタ201及び202と、マルチプレクサ203と、レジスタ204とを備える。
ビットストリーム供給部200は、マルチプレクサ109により選択された符号長に基づき未復号のビットストリームの先頭を判定する。ビットストリーム供給部200は、判定された未復号のビットストリームの先頭から、少なくとも可変長符号化に用いられる符号語の最大符号長の2倍分のビット列を切出す。具体的には、ビットストリーム供給部200は、64ビット分のビット列を切出し、シフタ201及び202へ出力する。
シフタ201は、ビットストリーム供給部200により切出されたビット列を、テーブル参照部101により出力される符号長分左へシフトし、シフトされたビット列の先頭から、少なくとも前記可変長符号化に用いられる符号語の最大符号長分のビット列を出力する。具体的には、シフタ201は、32ビットのビット列を出力する。また、シフタ201は、記憶部111に記憶される符号長のビット数のみをシフト可能である。例えば、記憶部111に記憶される符号長が1〜4、及び8の場合には、1〜4ビット分及び8ビット分のシフトが可能であり、他のビット数(5〜7等)のシフトを行うことができない。
シフタ202は、ビットストリーム供給部200により切出されたビット列を、テーブル参照部102により出力される符号長分左へシフトし、シフトされたビット列の先頭から、少なくとも前記可変長符号化に用いられる符号語の最大符号長分のビット列を出力する。具体的には、シフタ202は、32ビットのビット列を出力する。また、シフタ202は、記憶部121に記憶される符号長のビット数のみをシフト可能である。例えば、記憶部121に記憶される符号長が5〜32の場合には、5〜32ビット分のシフトが可能であり、他のビット数(1〜4等)のシフトを行うことができない。
マルチプレクサ203は、レジスタ104に保持される復号化完了信号に応じて、シフタ201により出力されるビット列とシフタ202により出力されるビット列とのいずれかを選択する。マルチプレクサ203は、レジスタ104に保持される復号化完了信号が「0」の場合、シフタ201により出力されたビット列を選択し出力する。マルチプレクサ203は、レジスタ104に保持される復号化完了信号が「1」の場合、シフタ202により出力されたビット列を選択し出力する。
レジスタ204は、マルチプレクサ203により選択されたビット列を保持する。
次に、本発明の実施の形態2に係る可変長符号復号化装置20の動作を説明する。
図7は、可変長符号復号化装置20による具体的な動作を示す図である。以下、可変長符号復号化装置20により、ビットストリーム「a1b1−b16c1−c32」を復号化する動作を説明する。なお、符号語a1、b1−b16、及びc1−c32は、図5に示す符号語である。また、図4と同様の動作については、説明を省略し、ビットストリーム切出し部210の動作のみを説明する。
また、ビットストリーム供給部200は、初期値として、「a1b1−b16c1−c32d1−d15」を出力し、レジスタ204は、初期値として、「a1b1−b16c1−c15」を保持している。
<第0サイクル>
第0サイクルにおいて、ビットストリーム供給部200は、初期値「a1b1−b16c1−c32d1−d15」を出力する。
シフタ201は、ビットストリーム供給部200により出力されるビット列「a1b1−b16c1−c32d1−d15」を、テーブル参照部101により出力された符号長「1」分左へシフトし、ビット列「b1−b16c1−c16」を出力する。
シフタ202は、ビットストリーム供給部200により出力されるビット列「a1b1−b16c1−c32d1−d15」を、レジスタ106に保持される符号長「0」分左へシフトし、ビット列「a1b1−b16c1−c15」を出力する。
マルチプレクサ203は、レジスタ104に保持される復号化完了信号が「0」なので、シフタ201により出力されたビット列「b1−b16c1−c16」を選択する。
レジスタ204は、初期値「a1b1−b16c1−c15」を保持する。
ビットストリーム供給部200は、マルチプレクサ109により選択された符号長が「1」なので、先頭のビットを1ビットずらして、ビット列「b1−b16c1−c32d1−d16」を切出す。ビットストリーム供給部200は、次のサイクルで、切出されたビット列「b1−b16c1−c32d1−d16」を出力する。
レジスタ204は、マルチプレクサ203により選択されたビット列「b1−b16c1−c16」を取り込み次のサイクルで出力する。
<第1サイクル>
第1サイクルにおいて、ビットストリーム供給部200は、第0サイクルで切出されたビット列「b1−b16c1−c32d1−d16」を出力する。
シフタ201は、ビットストリーム供給部200により出力されるビット列「b1−b16c1−c32d1−d16」を、テーブル参照部101により出力された符号長「0」分左へシフトし、ビット列「b1−b16c1−c16」を出力する。
シフタ202は、ビットストリーム供給部200により出力されるビット列「b1−b16c1−c32d1−d16」を、レジスタ106に保持される符号長「0」分左へシフトし、ビット列「b1−b16c1−c16」を出力する。
マルチプレクサ203は、レジスタ104に保持される復号化完了信号が「0」なので、シフタ201により出力されたビット列「b1−b16c1−c16」を選択する。
レジスタ204は、第0サイクルで取り込まれた「b1−b16c1−c16」を保持する。
ビットストリーム供給部200は、マルチプレクサ109により選択された符号長が「0」なので、ビット列「b1−b16c1−c32d1−d16」を切出す。ビットストリーム供給部200は、次のサイクルで、切出されたビット列「b1−b16c1−c32d1−d16」を出力する。
レジスタ204は、マルチプレクサ203により選択されたビット列「b1−b16c1−c16」を取り込み次のサイクルで出力する。
<第2サイクル>
第2サイクルにおいて、ビットストリーム供給部200は、第1サイクルで切出されたビット列「b1−b16c1−c32d1−d16」を出力する。
シフタ201は、ビットストリーム供給部200により出力されるビット列「b1−b16c1−c32d1−d16」を、テーブル参照部101により出力された符号長「0」分左へシフトし、ビット列「b1−b16c1−c16」を出力する。
シフタ202は、ビットストリーム供給部200により出力されるビット列「b1−b16c1−c32d1−d16」を、レジスタ106に保持される符号長「16」分左へシフトし、ビット列「c1−c32」を出力する。
マルチプレクサ203は、レジスタ104に保持される復号化完了信号が「1」なので、シフタ202により出力されたビット列「c1−c32」を選択する。
レジスタ204は、第1サイクルで取り込まれた「b1−b16c1−c16」を保持する。
ビットストリーム供給部200は、マルチプレクサ109により選択された符号長が「16」なので、先頭を16ビットずらして、ビット列「c1−c32d1−d32」切出す。ビットストリーム供給部200は、次のサイクルで、切出されたビット列「c1−c32d1−d32」を出力する。
レジスタ204は、マルチプレクサ203により選択されたビット列「c1−c32」を取り込み次のサイクルで出力する。
<第3サイクル>
第3サイクルにおいて、ビットストリーム供給部200は、第2サイクルで切出されたビット列「c1−c32d1−d32」を出力する。
シフタ201は、ビットストリーム供給部200により出力されるビット列「c1−c32d1−d32」を、テーブル参照部101により出力された符号長「0」分左へシフトし、ビット列「c1−c32」を出力する。
シフタ202は、ビットストリーム供給部200により出力されるビット列「c1−c32d1−d32」を、レジスタ106に保持される符号長「0」分左へシフトし、ビット列「c1−c32」を出力する。
マルチプレクサ203は、レジスタ104に保持される復号化完了信号が「0」なので、シフタ201により出力されたビット列「c1−c32」を選択する。
レジスタ204は、第2サイクルで取り込まれた「c1−c32」を保持する。
ビットストリーム供給部200は、マルチプレクサ109により選択された符号長が「0」なので、ビット列「c1−c32d1−d32」を切出す。ビットストリーム供給部200は、切出されたビット列「c1−c32d1−d32」を次のサイクルで出力する。
レジスタ204は、マルチプレクサ203により選択されたビット列「c1−c32」を取り込み次のサイクルで出力する。
<第4サイクル>
第4サイクルにおいて、ビットストリーム供給部200は、第3サイクルで切出されたビット列「c1−c32d1−d32」を出力する。
シフタ201は、ビットストリーム供給部200により出力されるビット列「c1−c32d1−d32」を、テーブル参照部101により出力された符号長「0」分左へシフトし、ビット列「c1−c32」を出力する。
シフタ202は、ビットストリーム供給部200により出力されるビット列「c1−c32d1−d32」を、レジスタ106に保持される符号長「32」分左へシフトし、ビット列「d1−d32」を出力する。
マルチプレクサ203は、レジスタ104に保持される復号化完了信号が「1」なので、シフタ202により出力されたビット列「d1−d32」を選択する。
レジスタ204は、第3サイクルで取り込まれた「c1−c32」を保持する。
以上のように、ビットストリーム切出し部210は、未復号のビットストリームの先頭から、可変長符号化に用いられる符号語の最大符号長分(32ビット)のビット列を切出し、切出したビット列をテーブル参照部101及び102に出力することができる。
以上より、本発明の実施の形態2に係る可変長符号復号化装置20のビットストリーム切出し部210は、1個の係数のみを含む符号語を復号化するテーブル参照部101に対応するシフタ201と、複数の係数を含む符号語を復号化するテーブル参照部102に対応するシフタ202とを備える。ここで、シフタ201は、テーブル参照部101の記憶部111に記憶される符号語の符号長分のビット数をシフトする機能のみを有する。また、シフタ202は、テーブル参照部102の記憶部121に記憶される符号語の符号長分のビット数をシフトする機能のみを有する。すなわち、シフタ201及び202のシフト可能なビット数を対応する前記可変長符号テーブルが出力し得る符号長に限定した構成にすることにより、シフタ201及び202が高速化される。これにより、本発明の実施の形態2に係る可変長符号復号化装置20は、復号化された符号語の符号長を用いて未復号のビットストリームの先頭からビット列を切出す処理に要する時間を短縮することができる。すなわち、本発明の実施の形態2に係る可変長符号復号化装置20は、可変長符号化された符号語を高速に復号化することができる。
(実施の形態3)
本発明の実施の形態3に係る可変長符号復号化装置は、実施の形態1に係る可変長符号復号化装置10の変形例であり、さらに、2個以上の係数を含む符号語を1サイクルで復号化するテーブル参照部を備える。これにより、2個以上の係数を含む符号語の復号化に要する時間を短縮することができる。
まず、本発明の実施の形態3に係る可変長符号復号化装置の構成を説明する。
図8は、本発明の実施の形態3に係る可変長符号復号化装置30の構成を示すブロック図である。なお、図1と同様の要素には同一の符号を付しており、説明は省略する。
図8に示す可変長符号復号化装置30は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置30は、ビットストリーム切出し部100と、テーブル参照部101、300及び301と、マルチプレクサ103、107、108及び109と、レジスタ104、105及び106とを備える。可変長符号復号化装置30は、実施の形態1に係る可変長符号復号化装置10に対して、テーブル参照部300、マルチプレクサ302、309、310、311、及びレジスタ303の構成又は接続関係と、テーブル参照部301、マルチプレクサ306、307及び308を備える点とが異なる。
テーブル参照部300は、判定部320と、記憶部321とを備える。
記憶部321は、2個以上の係数を含む複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とのテーブルである可変長符号テーブルを記憶する。
判定部320は、ビットストリーム切出し部100により切出されたビット列と記憶部321に記憶される可変長符号テーブルとを照合し、ビットストリーム切出し部100により切出されたビット列に、記憶部321に記憶される符号語が含まれるか否かを判定する。判定部320は、判定結果を示す復号化完了信号を出力する。具体的には、判定部320は、ビットストリーム切出し部100により切出されたビット列に、記憶部321に記憶される符号語が含まれる場合に、復号化完了信号「1」を出力する。判定部320は、ビットストリーム切出し部100により切出されたビット列に、記憶部321に記憶される符号語が含まれない場合に、復号化完了信号「0」を出力する。また、判定部320は、ビットストリーム切出し部100により切出されたビット列に、記憶部321に記憶される符号語が含まれる場合に、該符号語に対応する復号化データ(ラン、レベル、ラスト)と符号長とを出力する。また、判定部320は、ビットストリーム切出し部100により切出されたビット列に、記憶部321に記憶される符号語が含まれない場合に、任意の復号化データと、符号長「0」とを出力する。
テーブル参照部301は、判定部330と、記憶部331とを備える。
記憶部331は、記憶部321に記憶されていない2個以上の係数を含む複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とのテーブルである可変長符号テーブルを記憶する。
判定部330は、ビットストリーム切出し部100により切出されたビット列と記憶部331に記憶される可変長符号テーブルとを照合し、ビットストリーム切出し部100により切出されたビット列に、記憶部331に記憶される符号語が含まれるか否かを判定する。判定部330は、判定結果を示す復号化完了信号を出力する。具体的には、判定部330は、ビットストリーム切出し部100により切出されたビット列に、記憶部331に記憶される符号語が含まれる場合に、復号化完了信号「1」を出力する。判定部330は、ビットストリーム切出し部100により切出されたビット列に、記憶部331に記憶される符号語が含まれない場合に、復号化完了信号「0」を出力する。また、判定部330は、ビットストリーム切出し部100により切出されたビット列に、記憶部331に記憶される符号語が含まれる場合に、該符号語に対応する復号化データ(ラン、レベル、ラスト)と符号長とを出力する。また、判定部330は、ビットストリーム切出し部100により切出されたビット列に、記憶部331に記憶される符号語が含まれない場合に、任意の復号化データと、符号長「0」とを出力する。
マルチプレクサ302は、レジスタ303に保持される復号化完了信号を選択信号として、レジスタ303へ出力する信号を選択する。マルチプレクサ302は、選択信号が「0」の場合、テーブル参照部300により出力された復号化完了信号を選択し、選択信号が「1」の場合、固定値「0」を選択する。
レジスタ303は、マルチプレクサ302により選択された復号化完了信号を保持する。レジスタ304は、テーブル参照部300により出力された復号化データを保持する。レジスタ305は、テーブル参照部300により出力された符号長を保持する。
マルチプレクサ306は、レジスタ303に保持される復号化完了信号に応じて、テーブル参照部301により出力される復号化完了信号と、レジスタ303に保持される復号化完了信号とのいずれかを選択する。マルチプレクサ306は、レジスタ303に保持される復号化完了信号が「0」の場合には、テーブル参照部301により出力される復号化完了信号を選択する。マルチプレクサ306は、レジスタ303に保持される復号化完了信号が「1」の場合には、レジスタ303に保持される復号化完了信号を選択する。
マルチプレクサ307は、レジスタ303に保持される復号化完了信号に応じて、テーブル参照部301により出力される復号化データと、レジスタ304に保持される復号化データとのいずれかを選択する。マルチプレクサ307は、レジスタ303に保持される復号化完了信号が「0」の場合には、テーブル参照部301により出力される復号化データを選択する。マルチプレクサ307は、レジスタ303に保持される復号化完了信号が「1」の場合には、レジスタ304に保持される復号化データを選択する。
マルチプレクサ308は、レジスタ303に保持される復号化完了信号に応じて、テーブル参照部301により出力される符号長と、レジスタ305に保持される符号長とのいずれかを選択する。マルチプレクサ308は、レジスタ303に保持される復号化完了信号が「0」の場合には、テーブル参照部301により出力される符号長を選択する。マルチプレクサ308は、レジスタ303に保持される復号化完了信号が「1」の場合には、レジスタ305に保持される符号長を選択する。
マルチプレクサ309は、マルチプレクサ306により選択された復号化完了信号に応じて、テーブル参照部101により出力される復号化完了信号と、マルチプレクサ306により選択された復号化完了信号とのいずれかを選択する。マルチプレクサ309は、マルチプレクサ306により選択された復号化完了信号が「0」の場合には、テーブル参照部101により出力される復号化完了信号を選択する。マルチプレクサ309は、マルチプレクサ306により選択された復号化完了信号が「1」の場合には、マルチプレクサ306により選択された復号化完了信号を選択する。
マルチプレクサ310は、マルチプレクサ306により選択された復号化完了信号に応じて、テーブル参照部101により出力される復号化データと、マルチプレクサ307により選択された復号化データとのいずれかを選択する。マルチプレクサ310は、マルチプレクサ306により選択された復号化完了信号が「0」の場合には、テーブル参照部101により出力される復号化データを選択する。マルチプレクサ310は、マルチプレクサ306により選択された復号化完了信号が「1」の場合には、マルチプレクサ307により選択された復号化データを選択する。
マルチプレクサ311は、マルチプレクサ306により選択された復号化完了信号に応じて、テーブル参照部101により出力される符号長と、マルチプレクサ308により選択された符号長とのいずれかを選択する。マルチプレクサ311は、マルチプレクサ306により選択された復号化完了信号が「0」の場合には、テーブル参照部101により出力される符号長を選択する。マルチプレクサ311は、マルチプレクサ306により選択された復号化完了信号が「1」の場合には、マルチプレクサ308により選択された符号長を選択する。
ビットストリーム切出し部100は、判定部320により、ビットストリーム切出し部100により切出されたビット列に、記憶部321に記憶される符号語が含まれると判定された場合、判定部320により判定が行われたサイクルの次のサイクルで、判定部320により出力された符号長に基づき、未復号のビットストリームの先頭を判定し、次に復号化されるビット列を切出す。また、ビットストリーム切出し部100は、判定部330により、ビットストリーム切出し部100により切出されたビット列に、記憶部331に記憶される符号語が含まれると判定された場合、判定部330により判定が行われたサイクルと同じサイクルで、判定部330により出力された符号長に基づき、未復号のビットストリームの先頭を判定し、次に復号化されるビット列を切出す。
次に、本発明の実施の形態3に係る可変長符号復号化装置30の動作を説明する。
図9は、可変長符号復号化装置30による具体的な動作を示す図である。以下、可変長符号復号化装置30により、ビットストリーム「a1b1−b16c1−c32」を復号化する動作を説明する。なお、符号語a1、b1−b16、及びc1−c32は、図5に示す符号語である。また、図4と同様の動作については、説明を省略する。
なお、ランの値が1以上である符号語b1−b16は、テーブル参照部300に記憶されており、符号語c1−c32は、テーブル参照部301に記憶されている。また、レジスタ303は初期値として「0」を保持し、レジスタ304は、初期値として「(0、0、0)」を保持し、レジスタ305は、初期値として、「0」を保持している。
<第0サイクル>
第0サイクルにおいて、テーブル参照部300は、ビットストリーム切出し部100により切出されたビット列「a1b1−b16c1−c15」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
テーブル参照部301は、ビットストリーム切出し部100により切出されたビット列「a1b1−b16c1−c15」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
マルチプレクサ302は、レジスタ303に保持される復号化完了信号が「0」なので、テーブル参照部300により出力された復号化完了信号「0」を選択する。
レジスタ303は初期値である復号化完了信号「0」を保持し、レジスタ304は初期値である復号化データ「(0、0、0)」を保持し、レジスタ305は初期値である符号長「0」を保持する。
マルチプレクサ306は、レジスタ303に保持される復号化完了信号が「0」なので、テーブル参照部301により出力された復号化完了信号「0」を選択する。マルチプレクサ307は、レジスタ303に保持される復号化完了信号が「0」なので、テーブル参照部301により出力された復号化データ「(x、x、x)」を選択する。マルチプレクサ308は、レジスタ303に保持される復号化完了信号が「0」なので、テーブル参照部301により出力された符号長「0」を選択する。
マルチプレクサ309は、レジスタ303に保持される復号化完了信号が「0」なので、テーブル参照部101により出力された復号化完了信号「1」を選択する。マルチプレクサ310は、レジスタ303に保持される復号化完了信号が「0」なので、テーブル参照部101により出力された復号化データ「(0、1、0)」を選択する。マルチプレクサ311は、レジスタ303に保持される復号化完了信号が「0」なので、テーブル参照部101により出力された符号長「1」を選択する。
レジスタ303は、マルチプレクサ302により選択された復号化完了信号「0」を取り込み次のサイクルで出力する。レジスタ304は、テーブル参照部300により出力された復号化データ「(x、x、x)」を取り込み次のサイクルで出力する。レジスタ305は、テーブル参照部300により出力された符号長「0」を取り込み次のサイクルで出力する。
<第1サイクル>
第1サイクルにおいて、テーブル参照部300は、ビットストリーム切出し部100により切出されたビット列「b1−b16c1−c16」と記憶されている符号語「b1−b16」とが一致するので、復号化完了信号「1」を出力し、復号化データ(ラン、レベル、ラスト)「(1、2、0)」を出力し、符号長「16」を出力する。
テーブル参照部301は、ビットストリーム切出し部100により切出されたビット列「b1−b16c1−c16」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
マルチプレクサ302は、レジスタ303に保持される復号化完了信号が「0」なので、テーブル参照部300により出力された復号化完了信号「1」を選択する。
レジスタ303は、第0サイクルで取り込まれた復号化完了信号「0」を保持する。レジスタ304は、第0サイクルで取り込まれた復号化データ「(x、x、x)」を保持する。レジスタ305は、第0サイクルで取り込まれた符号長「0」を保持する。
マルチプレクサ306は、レジスタ303に保持される復号化完了信号が「0」なので、テーブル参照部301により出力された復号化完了信号「0」を選択する。マルチプレクサ307は、レジスタ303に保持される復号化完了信号が「0」なので、テーブル参照部301により出力された復号化データ「(x、x、x)」を選択する。マルチプレクサ308は、レジスタ303に保持される復号化完了信号が「0」なので、テーブル参照部301により出力された符号長「0」を選択する。
マルチプレクサ309は、レジスタ303に保持される復号化完了信号が「0」なので、テーブル参照部101により出力された復号化完了信号「0」を選択する。マルチプレクサ310は、レジスタ303に保持される復号化完了信号が「0」なので、テーブル参照部101により出力された復号化データ「(x、x、x)」を選択する。マルチプレクサ311は、レジスタ303に保持される復号化完了信号が「0」なので、テーブル参照部101により出力された符号長「0」を選択する。
レジスタ303は、マルチプレクサ302により選択された復号化完了信号「1」を取り込み次のサイクルで出力する。レジスタ304は、テーブル参照部300により出力された復号化データ「(1、2、0)」を取り込み次のサイクルで出力する。レジスタ305は、テーブル参照部300により出力された符号長「16」を取り込み次のサイクルで出力する。
<第2サイクル>
第2サイクルにおいて、テーブル参照部300は、ビットストリーム切出し部100により切出されたビット列「b1−b16c1−c16」と記憶されている符号語「b1−b16」とが一致するので、復号化完了信号「1」を出力し、復号化データ(ラン、レベル、ラスト)「(1、2、0)」を出力し、符号長「16」を出力する。
テーブル参照部301は、ビットストリーム切出し部100により切出されたビット列「b1−b16c1−c16」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
マルチプレクサ302は、レジスタ303に保持される復号化完了信号が「1」なので、固定値「0」を選択する。
レジスタ303は、第1サイクルで取り込まれた復号化完了信号「1」を保持する。レジスタ304は、第1サイクルで取り込まれた復号化データ「(1、2、0)」を保持する。レジスタ305は、第1サイクルで取り込まれた符号長「16」を保持する。
マルチプレクサ306は、レジスタ303に保持される復号化完了信号が「1」なので、レジスタ303に保持される復号化完了信号「1」を選択する。マルチプレクサ307は、レジスタ303に保持される復号化完了信号が「1」なので、レジスタ304に保持される復号化データ「(1、2、0)」を選択する。マルチプレクサ308は、レジスタ303に保持される復号化完了信号が「1」なので、レジスタ305に保持される符号長「16」を選択する。
マルチプレクサ309は、レジスタ303に保持される復号化完了信号が「1」なので、マルチプレクサ306により選択された復号化完了信号「1」を選択する。マルチプレクサ310は、レジスタ303に保持される復号化完了信号が「1」なので、マルチプレクサ307により選択された復号化データ「(1、2、0)」を選択する。マルチプレクサ311は、レジスタ303に保持される復号化完了信号が「1」なので、マルチプレクサ308により選択された符号長「16」を選択する。
レジスタ303は、マルチプレクサ302により選択された復号化完了信号「0」を取り込み次のサイクルで出力する。レジスタ304は、テーブル参照部300により出力された復号化データ「(1、2、0)」を取り込み次のサイクルで出力する。レジスタ305は、テーブル参照部300により出力された符号長「16」を取り込み次のサイクルで出力する。
<第3サイクル>
第3サイクルにおいて、テーブル参照部300は、ビットストリーム切出し部100により切出されたビット列「c1−c32」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
テーブル参照部301は、ビットストリーム切出し部100により切出されたビット列「c1−c32」と記憶されている符号語「c1−c32」とが一致するので、復号化完了信号「1」を出力し、復号化データ(ラン、レベル、ラスト)「(2、3、1)」を出力し、符号長「32」を出力する。
マルチプレクサ302は、レジスタ303に保持される復号化完了信号が「0」なので、テーブル参照部300により出力された復号化完了信号「0」を出力する。
レジスタ303は、第2サイクルで取り込まれた復号化完了信号「0」を保持する。レジスタ304は、第2サイクルで取り込まれた復号化データ「(1、2、0)」を保持する。レジスタ305は、第2サイクルで取り込まれた符号長「16」を保持する。
マルチプレクサ306は、レジスタ303に保持される復号化完了信号が「0」なので、テーブル参照部301により出力された復号化完了信号「1」を選択する。マルチプレクサ307は、レジスタ303に保持される復号化完了信号が「0」なので、テーブル参照部301により出力された復号化データ「(2、3、1)」を選択する。マルチプレクサ308は、レジスタ303に保持される復号化完了信号が「0」なので、テーブル参照部301により出力された符号長「32」を選択する。
マルチプレクサ309は、レジスタ303に保持される復号化完了信号が「1」なので、マルチプレクサ306により選択された復号化完了信号「1」を選択する。マルチプレクサ310は、レジスタ303に保持される復号化完了信号が「1」なので、マルチプレクサ307により選択された復号化データ「(2、3、0)」を選択する。マルチプレクサ311は、レジスタ303に保持される復号化完了信号が「1」なので、マルチプレクサ308により選択された符号長「32」を選択する。
以上より、本発明の実施の形態3に係る可変長符号復号化装置30は、複数の係数を含む符号語を復号化するテーブル参照部300及び301を備える。これにより、テーブル参照部300及び301のそれぞれに記憶される符号語の数が減少するので、テーブル参照部300及び301における照合に要する時間を短縮することができる。
さらに、テーブル参照部300で復号化された符号語に対しては、次のサイクルでビット列の切出しが行われ、テーブル参照部301で復号化された符号語に対しては、同じサイクルでビット列の切出しが行われる。テーブル参照部301で復号化される符号語は、1サイクルで1つの復号化及びビット列の切出しが行われるので、符号語当たりの処理サイクル数を平均的に減らすことができる。特に、上述した実施の形態1に係る可変長符号復号化装置10において、テーブル参照部102による照合に要する時間が、テーブル参照部101による照合に要する時間とビットストリーム切出し部100によるビット列の切出しに要する時間との和より長い場合に、効果的である。
ここで、テーブル参照部301による判定処理(照合処理)に要する時間が、テーブル参照部101による判定処理(照合処理)に要する時間と同じ又は短くなるように、テーブル参照部300及び301に記憶される符号語を分割することが好ましい。これにより、1サイクルで復号化を行う場合の照合に要する時間の最大値は増加せず、且つ2サイクルで復号化を行う場合の照合に要する時間を短縮することができる。
(実施の形態4)
本発明の実施の形態4に係る可変長符号復号化装置は、実施の形態1に係る可変長符号復号化装置10の変形例である。本発明の実施の形態4に係る可変長符号復号化装置は、逐次に処理が必要な復号化データの可変長符号テーブルを記憶するテーブル参照部と、逐次に処理が必要でない復号化データの可変長符号テーブルを記憶するテーブル参照部とを備える。これにより、逐次に処理が必要な復号化データをより高速に出力することができる。
まず、本発明の実施の形態4に係る可変長符号復号化装置の構成を説明する。
図10は、本発明の実施の形態4に係る可変長符号復号化装置40の構成を示すブロック図である。なお、図1と同様の要素には同一の符号を付しており、説明は省略する。
図10に示す可変長符号復号化装置40は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置40は、ビットストリーム切出し部100と、テーブル参照部400、401及び402と、マルチプレクサ103、107、108及び109と、レジスタ104、105、106及び403とを備える。可変長符号復号化装置40は、実施の形態1に係る可変長符号復号化装置10に対して、テーブル参照部400及び401の構成と、テーブル参照部402及びレジスタ403を備える点とが異なる。
テーブル参照部400は、判定部410と、記憶部411とを備える。
記憶部411は、1個の係数を含む複数の符号語と、該符号語にそれぞれ対応する逐次に処理が必要な復号化データと、該符号語にそれぞれ対応する符号長とのテーブルである可変長符号テーブルを記憶する。
図11は、記憶部411に記憶される可変長符号テーブルの一例を示す図である。図11に示すように、記憶部411に記憶される可変長符号テーブルは、1個の係数を含む符号語と、符号語の復号化データのうち逐次に処理が必要であるラストと、符号語の符号の長さ(ビット数)である符号長とを含む。
ここで、ラストが逐次に処理が必要な理由は、後続のビットストリームとして、異なる種別のデータが送られてくる場合があり、その情報を早期に外部に通知する必要があるからである。例えば、可変長符号化された画像データの後に、画像データ以外のデータが送られてくる場合がある。
判定部410は、ビットストリーム切出し部100により切出されたビット列と記憶部411に記憶される可変長符号テーブルとを照合し、ビットストリーム切出し部100により切出されたビット列に、記憶部411に記憶される符号語が含まれるか否かを判定する。判定部410は、判定結果を示す復号化完了信号をマルチプレクサ107に出力する。具体的には、判定部410は、ビットストリーム切出し部100により切出されたビット列に、記憶部411に記憶される符号語が含まれる場合に、復号化完了信号「1」を出力する。判定部410は、ビットストリーム切出し部100により切出されたビット列に、記憶部411に記憶される符号語が含まれない場合に、復号化完了信号「0」を出力する。また、判定部410は、ビットストリーム切出し部100により切出されたビット列に、記憶部411に記憶される符号語が含まれる場合に、該符号語に対応する復号化データ(ラスト)をマルチプレクサ108に出力し、該符号語に対応する符号長をマルチプレクサ109に出力する。また、判定部410は、ビットストリーム切出し部100により切出されたビット列に、記憶部411に記憶される符号語が含まれない場合に、任意の復号化データ(ラスト)をマルチプレクサ108に出力し、符号長「0」をマルチプレクサ109に出力する。
テーブル参照部401は、判定部420と、記憶部421とを備える。
記憶部421は、2個以上の係数を含む複数の符号語と、該符号語にそれぞれ対応する復号化データと、該符号語にそれぞれ対応する符号長とのテーブルである可変長符号テーブルを記憶する。
図12は、記憶部421に記憶される可変長符号テーブルの一例を示す図である。図12に示すように、記憶部421に記憶される可変長符号テーブルは、2個以上の係数を含む符号語と、符号語の復号化データのうち逐次に処理が必要であるラストと、符号語の符号の長さ(ビット数)である符号長とを含む。
判定部420は、ビットストリーム切出し部100により切出されたビット列と記憶部421に記憶される可変長符号テーブルとを照合し、ビットストリーム切出し部100により切出されたビット列に、記憶部421に記憶される符号語が含まれるか否かを判定する。判定部420は、判定結果を示す復号化完了信号をマルチプレクサ103に出力する。具体的には、判定部420は、ビットストリーム切出し部100により切出されたビット列に、記憶部421に記憶される符号語が含まれる場合に、復号化完了信号「1」を出力する。判定部420は、ビットストリーム切出し部100により切出されたビット列に、記憶部421に記憶される符号語が含まれない場合に、復号化完了信号「0」を出力する。また、判定部420は、ビットストリーム切出し部100により切出されたビット列に、記憶部421に記憶される符号語が含まれる場合に、該符号語に対応する復号化データ(ラスト)をレジスタ105に出力し、該符号語に対応する符号長をレジスタ106に出力する。また、判定部420は、ビットストリーム切出し部100により切出されたビット列に、記憶部421に記憶される符号語が含まれない場合に、任意の復号化データ(ラスト)をレジスタ105に出力し、符号長「0」をレジスタ106に出力する。
テーブル参照部402は、判定部430と、記憶部431とを備える。
記憶部431は、記憶部411及び記憶部421に記憶される複数の符号語と、該符号語にそれぞれ対応する逐次処理が不要な復号化データとのテーブルである可変長符号テーブルを記憶する。
図13は、記憶部431に記憶される可変長符号テーブルの一例を示す図である。図13に示すように、記憶部431に記憶される可変長符号テーブルは、符号語と、符号語の復号化データのうち逐次に処理が必要でないラン及びレベルとを含む。また、記憶部431は、記憶部411に記憶される符号語と、記憶部421に記憶される符号語とを記憶する。
判定部430は、レジスタ403に保持されるビット列と記憶部431に記憶される可変長符号テーブルとを照合し、レジスタ403により保持されるビット列に、記憶部431に記憶される符号語が含まれるか否かを判定する。判定部430は、レジスタ403により保持されるビット列に、記憶部431に記憶される符号語が含まれる場合に、該符号語に対応する復号化データ(ラン、レベル)を出力する。また、判定部430は、レジスタ403により保持されるビット列に、記憶部431に記憶される符号語が含まれない場合に、任意の復号化データ(ラン、レベル)を出力する。
ここで、判定部430により出力される復号化データは、マルチプレクサ107により選択される復号化完了信号が「1」となるサイクルの次のサイクルで有効である。
レジスタ403は、ビットストリーム切出し部100により切出されたビット列を保持する。
次に、本発明の実施の形態4に係る可変長符号復号化装置40の動作を説明する。
図14は、可変長符号復号化装置40による具体的な動作を示す図である。以下、可変長符号復号化装置40により、ビットストリーム「a1b1−b16c1−c32」を復号化する動作を説明する。なお、図4と同様の動作については、説明を省略する。
なお、レジスタ403は、初期値として、「0」を保持している。
<第0サイクル>
第0サイクルにおいて、テーブル参照部400は、ビットストリーム切出し部100により切出されたビット列「a1b1−b16c1−c15」と記憶されている符号語「a1」とが一致するので、復号化完了信号「1」を出力し、復号化データ(ラスト)「0」を出力し、符号長「1」を出力する。
テーブル参照部401は、ビットストリーム切出し部100により切出されたビット列「a1b1−b16c1−c15」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラスト)「x」を出力し、符号長「0」を出力する。
レジスタ403は、初期値「0」を出力する。
テーブル参照部402は、レジスタ403により保持されるビット列「0」と記憶されている符号語とが一致しないので、復号化データ(ラン、レベル)「(x、x)」を出力する。
レジスタ403は、ビットストリーム切出し部100により切出されたビット列「a1b1−b16c1−c15」を取り込み次のサイクルで出力する。
<第1サイクル>
第1サイクルにおいて、テーブル参照部400は、ビットストリーム切出し部100により切出されたビット列「b1−b16c1−c16」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラスト)「x」を出力し、符号長「0」を出力する。
テーブル参照部401は、ビットストリーム切出し部100により切出されたビット列「b1−b16c1−c16」と記憶されている符号語「b1−b16」とが一致するので、復号化完了信号「1」を出力し、復号化データ(ラスト)「0」を出力し、符号長「16」を出力する。
レジスタ403は、第0サイクルで取り込まれた「a1b1−b16c1−c15」を出力する。
テーブル参照部402は、レジスタ403により保持されるビット列「a1b1−b16c1−c15」と記憶されている符号語「a1」とが一致するので、復号化データ(ラン、レベル)「(0、1)」を出力する。
レジスタ403は、ビットストリーム切出し部100により切出されたビット列「b1−b16c1−c16」を取り込み次のサイクルで出力する。
<第2サイクル>
第2サイクルにおいて、テーブル参照部400は、ビットストリーム切出し部100により切出されたビット列「b1−b16c1−c16」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラスト)「x」を出力し、符号長「0」を出力する。
テーブル参照部401は、ビットストリーム切出し部100により切出されたビット列「b1−b16c1−c16」と記憶されている符号語「b1−b16」とが一致するので、復号化完了信号「1」を出力し、復号化データ(ラスト)「0」を出力し、符号長「16」を出力する。
レジスタ403は、第1サイクルで取り込まれた「b1−b16c1−c16」を出力する。
テーブル参照部402は、レジスタ403により保持されるビット列「b1−b16c1−c16」と記憶されている符号語「b1−b16」とが一致するので、復号化データ(ラン、レベル)「(1、2)」を出力する。
レジスタ403は、ビットストリーム切出し部100により切出されたビット列「b1−b16c1−c16」を取り込み次のサイクルで出力する。
<第3サイクル>
第3サイクルにおいて、テーブル参照部400は、ビットストリーム切出し部100により切出されたビット列「c1−c32」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラスト)「x」を出力し、符号長「0」を出力する。
テーブル参照部401は、ビットストリーム切出し部100により切出されたビット列「c1−c32」と記憶されている符号語「c1−b32」とが一致するので、復号化完了信号「1」を出力し、復号化データ(ラスト)「1」を出力し、符号長「32」を出力する。
レジスタ403は、第2サイクルで取り込まれた「b1−b16c1−c16」を出力する。
テーブル参照部402は、レジスタ403により保持されるビット列「b1−b16c1−c16」と記憶されている符号語「b1−b16」とが一致するので、復号化データ(ラン、レベル)「(1、2)」を出力する。
レジスタ403は、ビットストリーム切出し部100により切出されたビット列「c1−c32」を取り込み次のサイクルで出力する。
<第4サイクル>
第4サイクルにおいて、テーブル参照部400は、ビットストリーム切出し部100により切出されたビット列「c1−c32」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラスト)「x」を出力し、符号長「0」を出力する。
テーブル参照部401は、ビットストリーム切出し部100により切出されたビット列「c1−c32」と記憶されている符号語「c1−b32」とが一致するので、復号化完了信号「1」を出力し、復号化データ(ラスト)「1」を出力し、符号長「32」を出力する。
レジスタ403は、第3サイクルで取り込まれた「c1−c32」を出力する。
テーブル参照部402は、レジスタ403により保持されるビット列「c1−c32」と記憶されている符号語「c1−c32」とが一致するので、復号化データ(ラン、レベル)「(2、3)」を出力する。
レジスタ403は、ビットストリーム切出し部100により切出されたビット列「c1−c32」を取り込み次のサイクルで出力する。
<第5サイクル>
第5サイクルにおいて、テーブル参照部400は、ビットストリーム切出し部100により切出されたビット列「d1−d32」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラスト)「x」を出力し、符号長「0」を出力する。
テーブル参照部401は、ビットストリーム切出し部100により切出されたビット列「d1−d32」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラスト)「x」を出力し、符号長「0」を出力する。
レジスタ403は、第4サイクルで取り込まれた「c1−c32」を出力する。
テーブル参照部402は、レジスタ403により保持されるビット列「c1−c32」と記憶されている符号語「c1−c32」とが一致するので、復号化データ(ラン、レベル)「(2、3)」を出力する。
以上のように、逐次に処理が必要でない復号化データ(ラン、レベル)は、テーブル参照部402により、テーブル参照部400及び401による照合処理が行われるサイクルの次のサイクルで出力される。
また、本発明の実施の形態4に係る可変長符号復号化装置40において、復号化完了信号、逐次に処理が必要な復号化データ、及び符号長が、テーブル参照部400及び401により記憶され、逐次に処理が必要でない復号化データは、テーブル参照部402に記憶される。これにより、全ての復号化データをテーブル参照部400及び401に記憶する場合に比べて、テーブル参照部400及び401の容量を削減することができる。これにより、テーブル参照部400及び401の照合処理に要する時間を短縮することができる。よって、本発明の実施の形態4に係る可変長符号復号化装置40は、可変長符号化された符号語の復号化を高速に行うことができる。
なお、上記説明では、逐次に処理が必要でない復号化データを次のサイクルで出力する構成としているが、2サイクル以上後に出力してもよい。
(実施の形態5)
本発明の実施の形態5に係る可変長符号復号化装置は、実施の形態1に係る可変長符号復号化装置10の変形例であり、さらに、テーブル参照部101及び102に一致する符号語が記憶されていない場合に、エラーを検出するエラー検出部を備える。これにより、エラーが発生したことを外部に通知することができる。
まず、本発明の実施の形態5に係る可変長符号復号化装置の構成を説明する。
図15は、本発明の実施の形態5に係る可変長符号復号化装置50の構成を示すブロック図である。なお、図1と同様の要素には同一の符号を付しており、説明は省略する。
図15に示す可変長符号復号化装置50は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置50は、ビットストリーム切出し部100と、テーブル参照部101、102及び501と、マルチプレクサ103、107、108及び109と、レジスタ104、105、106及び403と、エラー検出部501とを備える。可変長符号復号化装置50は、実施の形態1に係る可変長符号復号化装置10の構成に加えて、レジスタ403と、テーブル参照部500と、エラー検出部501とを備える。
レジスタ403は、ビットストリーム切出し部100により切出されたビット列を保持する。
テーブル参照部500は、判定部510と、記憶部511とを備える。
記憶部511は、記憶部111及び121に記憶されていない複数の符号語と、該符号語にそれぞれ対応するエラー種別とのテーブルである可変長符号テーブルを記憶する。すなわち、記憶部511は、可変長符号復号化装置50により復号化される符号語に用いられる可変長符号化方式に規定されていない符号語と、該符号語にそれぞれ対応するエラー種別とを記憶する。ここで、エラー種別は、符号語の種類を識別するために使用される情報である。エラー種別は、符号語に対して任意に定義することができる。
判定部510は、レジスタ403に保持されるビット列と記憶部511に記憶される可変長符号テーブルとを照合し、レジスタ403に保持されるビット列に、記憶部511に記憶される符号語が含まれるか否かを判定する。判定部320は、レジスタ403に保持されるビット列に、記憶部511に記憶される符号語が含まれる場合に、該符号語に対応するエラー種別を出力する。また、判定部510は、レジスタ403に保持されるビット列に、記憶部511に記憶される符号語が含まれない場合に、エラー種別「0」を出力する。
エラー検出部501は、テーブル参照部101により出力された復号化完了信号とテーブル参照部102により出力された復号化完了信号とがともに「0」の場合に、可変長符号テーブルに規定されていない符号語が検出されたことを示すエラー検出信号「1」を出力する。すなわち、エラー検出部501は、判定部110により、ビットストリーム切出し部100により切出されたビット列に、記憶部111に記憶される符号語が含まれないと判定され、且つ判定部120により、ビットストリーム切出し部100により切出されたビット列に、記憶部121に記憶される符号語が含まれないと判定された場合に、エラーが検出されたことを示すエラー検出信号「1」を出力する。また、エラー検出部501は、テーブル参照部101により出力された復号化完了信号とテーブル参照部102により出力された復号化完了信号とのうち1以上が「1」の場合に、エラー検出信号「0」を出力する。
次に、本発明の実施の形態5に係る可変長符号復号化装置50の動作を説明する。
図16は、可変長符号復号化装置50による具体的な動作を示す図である。以下、可変長符号復号化装置50により、ビットストリーム「a1b1−b16c1−c32d1−d32」を復号化する動作を説明する。なお、符号語d1−d32は、図5に示す符号語である。また、図4と同様の動作については、説明を省略する。また、レジスタ403の動作は、図14と同様であり、説明を省略する。
なお、符号語d1−d32は、可変長符号テーブルに規定されていない符号語であり、記憶部511に記憶されている。また、符号語d1−d32に対応するエラー種別は「E」と定義されている。
<第0サイクル>
第0サイクルにおいて、テーブル参照部500は、レジスタ403により保持されるビット列「0」と記憶されている符号語とが一致しないので、エラー種別「0」を出力する。
エラー検出部501は、テーブル参照部101により出力された復号化完了信号が「1」なので、エラー検出信号「0」を出力する。
<第1サイクル>
第1サイクルにおいて、テーブル参照部500は、レジスタ403により保持されるビット列「a1b1−b16c1−c15」と記憶されている符号語とが一致しないので、エラー種別「0」を出力する。
エラー検出部501は、テーブル参照部102により出力された復号化完了信号が「1」なので、エラー検出信号「0」を出力する。
<第2サイクル>
第2サイクルにおいて、テーブル参照部500は、レジスタ403により保持されるビット列「b1−b16c1−c16」と記憶されている符号語とが一致しないので、エラー種別「0」を出力する。
エラー検出部501は、テーブル参照部102により出力された復号化完了信号が「1」なので、エラー検出信号「0」を出力する。
<第3サイクル>
第3サイクルにおいて、テーブル参照部500は、レジスタ403により保持されるビット列「b1−b16c1−c16」と記憶されている符号語とが一致しないので、エラー種別「0」を出力する。
エラー検出部501は、テーブル参照部102により出力された復号化完了信号が「1」なので、エラー検出信号「0」を出力する。
<第4サイクル>
第4サイクルにおいて、テーブル参照部500は、レジスタ403により保持されるビット列「c1c32」と記憶されている符号語とが一致しないので、エラー種別「0」を出力する。
エラー検出部501は、テーブル参照部102により出力された復号化完了信号が「1」なので、エラー検出信号「0」を出力する。
<第5サイクル>
第5サイクルにおいて、テーブル参照部500は、レジスタ403により保持されるビット列「c1c32」と記憶されている符号語とが一致しないので、エラー種別「0」を出力する。
エラー検出部501は、テーブル参照部101により出力された復号化完了信号とテーブル参照部102により出力された復号化完了信号がともに「0」なので、エラー検出信号「1」を出力する。
<第6サイクル>
第6サイクルにおいて、テーブル参照部500は、レジスタ403により保持されるビット列「d1d32」と記憶されている符号語「d1−d32」とが一致するので、エラー種別「E」を出力する。
エラー検出部501は、テーブル参照部101により出力された復号化完了信号とテーブル参照部102により出力された復号化完了信号がともに「0」なので、エラー検出信号「1」を出力する。
以上のように、本発明の実施の形態5に係る可変長符号復号化装置50は、ビットストリーム切出し部100により切出されたビット列に、テーブル参照部101及びテーブル参照部102にともに記憶されていない符号語が含まれる場合に、エラー検出信号「1」を出力する。これにより、外部の装置は、エラー検出信号により、記憶部111及び記憶部121に記憶される可変長符号テーブルに規定されていない符号語が検出されたか否かを判定することができる。これにより、外部の装置は、エラーが検出された場合に、ビットストリームを停止させる等の処理を行うことができる。
さらに、本発明の実施の形態5に係る可変長符号復号化装置50は、可変長符号テーブルに規定されていない符号語が検出された場合に、該符号語に対応するエラー種別を出力する。これにより、外部の装置は、例えば、ビットストリーム中に可変長符号テーブルに規定されていない符号語が含まれることを事前に把握している場合に、該符号語を検出し、該符号語をスキップする、又は該符号語を可変長符号テーブルに規定されている符号語に入れ替えて再復号化する等の適応的なエラー隠蔽を行うことができる。
なお、上記説明において、テーブル参照部500は、符号語に対応するエラー種別を出力するとしたが、レジスタ403に保持される符号語が記憶部511に記憶される符号語と一致する場合に、該符号語をそのまま出力してもよい。また、符号語及びエラー種別を出力してもよい。また、符号語のみを出力する場合には、記憶部511は、エラー種別を記憶しなくてもよい。
(実施の形態6)
本発明の実施の形態6に係る可変長符号復号化装置は、符号語に含まれる係数の数に応じて、最大で係数の個数分のサイクルで復号化及びビット列の切出しを行う。また、本発明の実施の形態6に係る可変長符号復号化装置は、復号化に要するサイクル数を変更可能である。これにより、本発明の実施の形態6に係る可変長符号復号化装置は、1つの符号語の復号化及びビット列の切出しに要するサイクル数を動作周波数や製造プロセスに応じて適応的に変更することができる。
まず、本発明の実施の形態6に係る可変長符号復号化装置の構成を説明する。
図17は、本発明の実施の形態6に係る可変長符号復号化装置60の構成を示すブロック図である。なお、図1と同様の要素には同一の符号を付しており、説明は省略する。
図17に示す可変長符号復号化装置60は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置60は、ビットストリーム切出し部100と、テーブル参照部101、600、601、602、603及び604と、マルチプレクサ605、612、613、614、615、622、623、624、625、632、633、634、636、637及び638と、レジスタ606、607、608、616、617、618、626、627及び628と、スイッチ609、610、611、619、620、621、629、630及び631と、制御部635とを備える。
また、可変長符号復号化装置60が復号化する符号語は、係数が1〜3個含まれる符号語であるとする。
テーブル参照部600は、判定部640と、記憶部641とを備える(図示せず)。
記憶部641は、2個の係数を含む複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とのテーブルである可変長符号テーブルを記憶する。
判定部640は、ビットストリーム切出し部100により切出されたビット列と記憶部641に記憶される可変長符号テーブルとを照合し、ビットストリーム切出し部100により切出されたビット列に、記憶部641に記憶される符号語が含まれるか否かを判定する。判定部640は、判定結果を示す復号化完了信号を出力する。具体的には、判定部640は、ビットストリーム切出し部100により切出されたビット列に、記憶部641に記憶される符号語が含まれる場合に、復号化完了信号「1」を出力する。判定部640は、ビットストリーム切出し部100により切出されたビット列に、記憶部641に記憶される符号語が含まれない場合に、復号化完了信号「0」を出力する。また、判定部640は、ビットストリーム切出し部100により切出されたビット列に、記憶部641に記憶される符号語が含まれる場合に、該符号語に対応する復号化データ(ラン、レベル、ラスト)と符号長とを出力する。また、判定部640は、ビットストリーム切出し部100により切出されたビット列に、記憶部641に記憶される符号語が含まれない場合に、任意の復号化データと、符号長「0」とを出力する。
テーブル参照部601は、判定部650と、記憶部651とを備える(図示せず)。
記憶部651は、記憶部641に記憶されていない2個の係数を含む複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とのテーブルである可変長符号テーブルを記憶する。
判定部650は、ビットストリーム切出し部100により切出されたビット列と記憶部651に記憶される可変長符号テーブルとを照合し、ビットストリーム切出し部100により切出されたビット列に、記憶部651に記憶される符号語が含まれるか否かを判定する。判定部650は、判定結果を示す復号化完了信号を出力する。具体的には、判定部650は、ビットストリーム切出し部100により切出されたビット列に、記憶部651に記憶される符号語が含まれる場合に、復号化完了信号「1」を出力する。判定部650は、ビットストリーム切出し部100により切出されたビット列に、記憶部651に記憶される符号語が含まれない場合に、復号化完了信号「0」を出力する。また、判定部650は、ビットストリーム切出し部100により切出されたビット列に、記憶部651に記憶される符号語が含まれる場合に、該符号語に対応する復号化データ(ラン、レベル、ラスト)と符号長とを出力する。また、判定部650は、ビットストリーム切出し部100により切出されたビット列に、記憶部651に記憶される符号語が含まれない場合に、任意の復号化データと、符号長「0」とを出力する。
テーブル参照部602は、判定部660と、記憶部661とを備える(図示せず)。
記憶部661は、3個の係数を含む複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とのテーブルである可変長符号テーブルを記憶する。
判定部660は、ビットストリーム切出し部100により切出されたビット列と記憶部661に記憶される可変長符号テーブルとを照合し、ビットストリーム切出し部100により切出されたビット列に、記憶部661に記憶される符号語が含まれるか否かを判定する。判定部660は、判定結果を示す復号化完了信号を出力する。具体的には、判定部660は、ビットストリーム切出し部100により切出されたビット列に、記憶部661に記憶される符号語が含まれる場合に、復号化完了信号「1」を出力する。判定部660は、ビットストリーム切出し部100により切出されたビット列に、記憶部661に記憶される符号語が含まれない場合に、復号化完了信号「0」を出力する。また、判定部660は、ビットストリーム切出し部100により切出されたビット列に、記憶部661に記憶される符号語が含まれる場合に、該符号語に対応する復号化データ(ラン、レベル、ラスト)と符号長とを出力する。また、判定部660は、ビットストリーム切出し部100により切出されたビット列に、記憶部661に記憶される符号語が含まれない場合に、任意の復号化データと、符号長「0」とを出力する。
テーブル参照部603は、判定部670と、記憶部671とを備える(図示せず)。
記憶部671は、記憶部661に記憶されていない3個の係数を含む複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とのテーブルである可変長符号テーブルを記憶する。
判定部670は、ビットストリーム切出し部100により切出されたビット列と記憶部671に記憶される可変長符号テーブルとを照合し、ビットストリーム切出し部100により切出されたビット列に、記憶部671に記憶される符号語が含まれるか否かを判定する。判定部670は、判定結果を示す復号化完了信号を出力する。具体的には、判定部670は、ビットストリーム切出し部100により切出されたビット列に、記憶部671に記憶される符号語が含まれる場合に、復号化完了信号「1」を出力する。判定部680は、ビットストリーム切出し部100により切出されたビット列に、記憶部671に記憶される符号語が含まれない場合に、復号化完了信号「0」を出力する。また、判定部670は、ビットストリーム切出し部100により切出されたビット列に、記憶部671に記憶される符号語が含まれる場合に、該符号語に対応する復号化データ(ラン、レベル、ラスト)と符号長とを出力する。また、判定部670は、ビットストリーム切出し部100により切出されたビット列に、記憶部671に記憶される符号語が含まれない場合に、任意の復号化データと、符号長「0」とを出力する。
テーブル参照部604は、判定部680と、記憶部681とを備える(図示せず)。
記憶部681は、記憶部661及び記憶部671に記憶されていない3個の係数を含む複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とのテーブルである可変長符号テーブルを記憶する。
判定部680は、ビットストリーム切出し部100により切出されたビット列と記憶部681に記憶される可変長符号テーブルとを照合し、ビットストリーム切出し部100により切出されたビット列に、記憶部681に記憶される符号語が含まれるか否かを判定する。判定部680は、判定結果を示す復号化完了信号を出力する。具体的には、判定部680は、ビットストリーム切出し部100により切出されたビット列に、記憶部681に記憶される符号語が含まれる場合に、復号化完了信号「1」を出力する。判定部680は、ビットストリーム切出し部100により切出されたビット列に、記憶部681に記憶される符号語が含まれない場合に、復号化完了信号「0」を出力する。また、判定部680は、ビットストリーム切出し部100により切出されたビット列に、記憶部681に記憶される符号語が含まれる場合に、該符号語に対応する復号化データ(ラン、レベル、ラスト)と符号長とを出力する。また、判定部680は、ビットストリーム切出し部100により切出されたビット列に、記憶部681に記憶される符号語が含まれない場合に、任意の復号化データと、符号長「0」とを出力する。
すなわち、テーブル参照部600及びテーブル参照部601は、任意に2分割した2個の係数を含む符号語に対応する復号化データ(ラン、レベル、ラスト)と符号長とを記憶する。
テーブル参照部602、テーブル参照部603及びテーブル参照部604は、任意に3分割した3個の係数を含む符号語に対応する復号化データ(ラン、レベル、ラスト)と符号長とを記憶する。
マルチプレクサ605は、レジスタ606に保持される復号化完了信号を選択信号として、レジスタ606へ出力する信号を選択する。マルチプレクサ605は、選択信号が「0」の場合、テーブル参照部600により出力された復号化完了信号を選択し、選択信号が「1」の場合、固定値「0」を選択する。
レジスタ606は、マルチプレクサ605により選択された復号化完了信号を保持する。レジスタ607は、テーブル参照部600により出力された復号化データを保持する。レジスタ608は、テーブル参照部600により出力された符号長を保持する。
スイッチ609、610、611、619、620、621、629、630及び631は、与えられた設定値「0」又は「1」に応じて、2種類の入力された信号のどちらかを出力するかを任意に設定することができるスイッチである。
スイッチ609、スイッチ610及びスイッチ611は、同一の設定値を保持する。スイッチ609は、テーブル参照部600により出力された復号化完了信号及びレジスタ606に保持される復号化完了信号のうちどちらかをマルチプレクサ612に出力する。具体的には、スイッチ609は、設定値が「0」の場合、テーブル参照部600により出力された復号化完了信号を出力し、設定値が「1」の場合、レジスタ606に保持される復号化完了信号を出力する。
スイッチ610は、テーブル参照部600により出力された復号化データ及びレジスタ607に保持される復号化データのうちどちらかをマルチプレクサ613に出力する。具体的には、スイッチ610は、設定値が「0」の場合、テーブル参照部600により出力された復号化データを出力し、設定値が「1」の場合、レジスタ607に保持される復号化データを出力する。
スイッチ611は、テーブル参照部600により出力された符号長及びレジスタ608に保持される符号長のうちどちらかをマルチプレクサ614に出力する。具体的には、スイッチ611は、設定値が「0」の場合、テーブル参照部600により出力された符号長を出力し、設定値が「1」の場合、レジスタ608に保持される符号長を出力する。
マルチプレクサ612は、スイッチ609により出力される復号化完了信号に応じて、テーブル参照部601により出力される復号化完了信号と、スイッチ609により出力される復号化完了信号とのいずれかを選択する。マルチプレクサ612は、スイッチ609により出力される復号化完了信号が「0」の場合には、テーブル参照部601により出力される復号化完了信号を選択する。マルチプレクサ612は、スイッチ609により出力される復号化完了信号が「1」の場合には、スイッチ609により出力される復号化完了信号を選択する。
マルチプレクサ613は、スイッチ609により出力される復号化完了信号に応じて、テーブル参照部601により出力される復号化データと、スイッチ610により出力される復号化データとのいずれかを選択する。マルチプレクサ613は、スイッチ609により出力される復号化完了信号が「0」の場合には、テーブル参照部601により出力される復号化データを選択する。マルチプレクサ613は、スイッチ609により出力される復号化完了信号が「1」の場合には、スイッチ610により出力される復号化データを選択する。
マルチプレクサ614は、スイッチ609により出力される復号化完了信号に応じて、テーブル参照部601により出力される符号長と、スイッチ611により出力される符号長とのいずれかを選択する。マルチプレクサ614は、スイッチ609により出力される復号化完了信号が「0」の場合には、テーブル参照部601により出力される符号長を選択する。マルチプレクサ614は、スイッチ609により出力される復号化完了信号が「1」の場合には、スイッチ611により出力される符号長を選択する。
マルチプレクサ615は、レジスタ616に保持される復号化完了信号を選択信号として、レジスタ616へ出力する信号を選択する。マルチプレクサ615は、選択信号が「0」の場合、テーブル参照部602により出力された復号化完了信号を選択し、選択信号が「1」の場合、固定値「0」を選択する。
レジスタ616は、マルチプレクサ615により選択された復号化完了信号を保持する。レジスタ617は、テーブル参照部602により出力された復号化データを保持する。レジスタ618は、テーブル参照部602により出力された符号長を保持する。
スイッチ619、スイッチ620及びスイッチ621は、同一の設定値を保持する。スイッチ619は、テーブル参照部602により出力された復号化完了信号及びレジスタ616に保持される復号化完了信号のうちどちらかをマルチプレクサ622に出力する。具体的には、スイッチ619は、設定値が「0」の場合、テーブル参照部602により出力された復号化完了信号を出力し、設定値が「1」の場合、レジスタ616に保持される復号化完了信号を出力する。
スイッチ620は、テーブル参照部602により出力された復号化データ及びレジスタ617に保持される復号化データのうちどちらかをマルチプレクサ623に出力する。具体的には、スイッチ620は、設定値が「0」の場合、テーブル参照部602により出力された復号化データを出力し、設定値が「1」の場合、レジスタ617に保持される復号化データを出力する。
スイッチ621は、テーブル参照部602により出力された符号長及びレジスタ618に保持される符号長のうちどちらかをマルチプレクサ624に出力する。具体的には、スイッチ621は、設定値が「0」の場合、テーブル参照部602により出力された符号長を出力し、設定値が「1」の場合、レジスタ618に保持される符号長を出力する。
マルチプレクサ622は、スイッチ619により出力される復号化完了信号に応じて、テーブル参照部603により出力される復号化完了信号と、スイッチ619により出力される復号化完了信号とのいずれかを選択する。マルチプレクサ622は、スイッチ619により出力される復号化完了信号が「0」の場合には、テーブル参照部603により出力される復号化完了信号を選択する。マルチプレクサ622は、スイッチ619により出力される復号化完了信号が「1」の場合には、スイッチ619により出力される復号化完了信号を選択する。
マルチプレクサ623は、スイッチ619により出力される復号化完了信号に応じて、テーブル参照部603により出力される復号化データと、スイッチ620により出力される復号化データとのいずれかを選択する。マルチプレクサ623は、スイッチ619により出力される復号化完了信号が「0」の場合には、テーブル参照部603により出力される復号化データを選択する。マルチプレクサ623は、スイッチ619により出力される復号化完了信号が「1」の場合には、スイッチ620により出力される復号化データを選択する。
マルチプレクサ624は、スイッチ619により出力される復号化完了信号に応じて、テーブル参照部603により出力される符号長と、スイッチ621により出力される符号長とのいずれかを選択する。マルチプレクサ624は、スイッチ619により出力される復号化完了信号が「0」の場合には、テーブル参照部603により出力される符号長を選択する。マルチプレクサ624は、スイッチ619により出力される復号化完了信号が「1」の場合には、スイッチ621により出力される符号長を選択する。
マルチプレクサ625は、レジスタ626に保持される復号化完了信号を選択信号として、レジスタ626へ出力する信号を選択する。マルチプレクサ625は、選択信号が「0」の場合、マルチプレクサ622により選択された復号化完了信号を選択し、選択信号が「1」の場合、固定値「0」を選択する。
レジスタ626は、マルチプレクサ625により選択された復号化完了信号を保持する。レジスタ627は、マルチプレクサ623により選択された復号化データを保持する。レジスタ628は、マルチプレクサ624により選択された符号長を保持する。
スイッチ629、スイッチ630及びスイッチ631は、同一の設定値を保持する。スイッチ629は、マルチプレクサ622により選択された復号化完了信号及びレジスタ626に保持される復号化完了信号のうちどちらかをマルチプレクサ632に出力する。具体的には、スイッチ629は、設定値が「0」の場合、マルチプレクサ622により選択された復号化完了信号を出力し、設定値が「1」の場合、レジスタ626に保持される復号化完了信号を出力する。
スイッチ630は、マルチプレクサ623により選択された復号化データ及びレジスタ627に保持される復号化データのうちどちらかをマルチプレクサ633に出力する。具体的には、スイッチ630は、設定値が「0」の場合、マルチプレクサ623により選択された復号化データを出力し、設定値が「1」の場合、レジスタ627に保持される復号化データを出力する。
スイッチ631は、マルチプレクサ624により選択された符号長及びレジスタ628に保持される符号長のうちどちらかをマルチプレクサ634に出力する。具体的には、スイッチ631は、設定値が「0」の場合、マルチプレクサ624により選択された符号長を出力し、設定値が「1」の場合、レジスタ628に保持される符号長を出力する。
マルチプレクサ632は、スイッチ629により出力される復号化完了信号に応じて、テーブル参照部604により出力される復号化完了信号と、スイッチ629により出力される復号化完了信号とのいずれかを選択する。マルチプレクサ632は、スイッチ629により出力される復号化完了信号が「0」の場合には、テーブル参照部604により出力される復号化完了信号を選択する。マルチプレクサ632は、スイッチ629により出力される復号化完了信号が「1」の場合には、スイッチ629により出力される復号化完了信号を選択する。
マルチプレクサ633は、スイッチ629により出力される復号化完了信号に応じて、テーブル参照部604により出力される復号化データと、スイッチ630により出力される復号化データとのいずれかを選択する。マルチプレクサ633は、スイッチ629により出力される復号化完了信号が「0」の場合には、テーブル参照部604により出力される復号化データを選択する。マルチプレクサ633は、スイッチ629により出力される復号化完了信号が「1」の場合には、スイッチ630により出力される復号化データを選択する。
マルチプレクサ634は、スイッチ629により出力される復号化完了信号に応じて、テーブル参照部604により出力される符号長と、スイッチ631により出力される符号長とのいずれかを選択する。マルチプレクサ634は、スイッチ629により出力される復号化完了信号が「0」の場合には、テーブル参照部604により出力される符号長を選択する。マルチプレクサ634は、スイッチ629により出力される復号化完了信号が「1」の場合には、スイッチ631により出力される符号長を選択する。
制御部635は、マルチプレクサ636、637及び638に選択信号を出力する。制御部635は、テーブル参照部101により出力された復号化完了信号が「1」の場合、選択信号「0」を出力し、マルチプレクサ612により選択された復号化完了信号が「1」の場合、選択信号「1」を出力し、マルチプレクサ632により選択された復号化完了信号が「1」の場合、選択信号「2」を出力する。また、制御部635は、テーブル参照部101により出力された復号化完了信号、マルチプレクサ612により選択された復号化完了信号、及びマルチプレクサ632により選択された復号化完了信号が全て「0」の場合、選択信号「0」を出力する。
マルチプレクサ636、マルチプレクサ637及びマルチプレクサ638は、制御部635により出力された選択信号を用いて、出力する信号を選択する。
マルチプレクサ636は、制御部635により出力される選択信号が「0」の場合、テーブル参照部101により出力された復号化完了信号を選択する。マルチプレクサ636は、制御部635により出力される選択信号が「1」の場合、マルチプレクサ612により選択された復号化完了信号を選択する。マルチプレクサ636は、制御部635により出力される選択信号が「2」の場合、マルチプレクサ632により選択された復号化完了信号を選択する。
マルチプレクサ637は、制御部635により出力される選択信号が「0」の場合、テーブル参照部101により出力された復号化データを選択する。マルチプレクサ637は、制御部635により出力される選択信号が「1」の場合、マルチプレクサ613により選択された復号化データを選択する。マルチプレクサ637は、制御部635により出力される選択信号が「2」の場合、マルチプレクサ633により選択された復号化データを選択する。
マルチプレクサ638は、制御部635により出力される選択信号が「0」の場合、テーブル参照部101により出力された符号長を選択する。マルチプレクサ638は、制御部635により出力される選択信号が「1」の場合、マルチプレクサ614により選択された符号長を選択する。マルチプレクサ638は、制御部635により出力される選択信号が「2」の場合、マルチプレクサ634により選択された符号長を選択する。
ここで、マルチプレクサ637により選択される復号化データは、マルチプレクサ636により選択される復号化完了信号が「1」となるサイクルでのみ有効である。
ビットストリーム切出し部100は、判定部640により、ビットストリーム切出し部100により切出されたビット列に、記憶部641に記憶される符号語が含まれると判定された場合、判定部640により判定が行われたサイクルと同じサイクル、又は次のサイクルで、判定部640により出力された符号長に基づき、未復号のビットストリームの先頭を判定し、次に復号化されるビット列を切出す。
ビットストリーム切出し部100は、判定部650により、ビットストリーム切出し部100により切出されたビット列に、記憶部651に記憶される符号語が含まれると判定された場合、判定部650により判定が行われたサイクルと同じサイクルで、判定部650により出力された符号長に基づき、未復号のビットストリームの先頭を判定し、次に復号化されるビット列を切出す。
ビットストリーム切出し部100は、判定部660により、ビットストリーム切出し部100により切出されたビット列に、記憶部661に記憶される符号語が含まれると判定された場合、判定部660により判定が行われたサイクルと同じサイクル、1サイクル後のサイクル、又は2サイクル後のサイクルで、判定部660により出力された符号長に基づき、未復号のビットストリームの先頭を判定し、次に復号化されるビット列を切出す。
ビットストリーム切出し部100は、判定部670により、ビットストリーム切出し部100により切出されたビット列に、記憶部671に記憶される符号語が含まれると判定された場合、判定部670により判定が行われたサイクルと同じサイクル、又は次のサイクルで、判定部670により出力された符号長に基づき、未復号のビットストリームの先頭を判定し、次に復号化されるビット列を切出す。
ビットストリーム切出し部100は、判定部680により、ビットストリーム切出し部100により切出されたビット列に、記憶部681に記憶される符号語が含まれると判定された場合、判定部680により判定が行われたサイクルと同じサイクルで、判定部680により出力された符号長に基づき、未復号のビットストリームの先頭を判定し、次に復号化されるビット列を切出す。
スイッチ609、610及び611は、判定部640により、ビットストリーム切出し部100により切出されたビット列に、記憶部641に記憶される符号語が含まれると判定された場合の、ビットストリーム切出し部100によるビット列の切出しが行われるサイクルを、判定部640により判定が行われたサイクルと同じサイクル、又は次のサイクルに切り替える。
スイッチ619、620、621、629、630及び631は、判定部660により、ビットストリーム切出し部100により切出されたビット列に、記憶部661に記憶される符号語が含まれると判定された場合の、ビットストリーム切出し部100によるビット列の切出しが行われるサイクルを、判定部660により判定が行われたサイクルと同じサイクル、1サイクル後のサイクル、又は2サイクル後のサイクルに切り替える。
スイッチ629、630及び631は、判定部670により、ビットストリーム切出し部100により切出されたビット列に、記憶部671に記憶される符号語が含まれると判定された場合の、ビットストリーム切出し部100によるビット列の切出しが行われるサイクルを、判定部670により判定が行われたサイクルと同じサイクル、又は次のサイクルに切り替える。
次に、本発明の実施の形態6に係る可変長符号復号化装置60の動作を説明する。
図18は、可変長符号復号化装置60による具体的な動作を示す図である。図19は、可変長符号復号化装置60に入力されるビットストリームに含まれる符号語の一例を示す図である。以下、可変長符号復号化装置60により、ビットストリーム「l1m1−m8n1−n16o1−o32」を復号化する動作を説明する。
図19に示すランの値が「0」である符号語l1は、テーブル参照部101に記憶されており、ランの値が1である符号語m1−m8は、テーブル参照部600に記憶されており、ランの値が2である符号語n1−n16は、テーブル参照部603に記憶されておりランの値が2である符号語o1−o32は、テーブル参照部603に記憶されている。
また、スイッチ609、スイッチ610及びスイッチ611は、同一の設定値「0」を保持し、スイッチ619、スイッチ620及びスイッチ621は、同一の設定値「0」を保持し、スイッチ629、スイッチ630及びスイッチ631は、同一の設定値「1」を保持する。
また、ビットストリーム切出し部100は初期値として「l1m1−m8n1−n16o1−o7」を出力し、レジスタ626は初期値として「0」を保持し、レジスタ627は、初期値として「(0、0、0)」を保持し、レジスタ628は、初期値として、「0」を保持している。
<第0サイクル>
第0サイクルにおいて、ビットストリーム切出し部100は、初期値「l1m1−m8n1−n16o1−o7」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により切出されたビット列「l1m1−m8n1−n16o1−o7」と記憶されている符号語「l1」とが一致するので、復号化完了信号「1」を出力し、復号化データ(ラン、レベル、ラスト)「(0、1、0)」を出力し、符号長「1」を出力する。
テーブル参照部600は、ビットストリーム切出し部100により切出されたビット列「l1m1−m8n1−n16o1−o7」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
テーブル参照部601は、ビットストリーム切出し部100により切出されたビット列「l1m1−m8n1−n16o1−o7」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
テーブル参照部602は、ビットストリーム切出し部100により切出されたビット列「l1m1−m8n1−n16o1−o7」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
テーブル参照部603は、ビットストリーム切出し部100により切出されたビット列「l1m1−m8n1−n16o1−o7」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
テーブル参照部604は、ビットストリーム切出し部100により切出されたビット列「l1m1−m8n1−n16o1−o7」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
スイッチ609は、設定値が「0」なので、テーブル参照部600により出力された復号化完了信号「0」を出力する。スイッチ610は、設定値が「0」なので、テーブル参照部600により出力された復号化データ「(x、x、x)」を出力する。スイッチ611は、設定値が「0」なので、テーブル参照部600により出力された符号長「0」を出力する。
マルチプレクサ612は、スイッチ609により出力された復号化完了信号が「0」なので、テーブル参照部601により出力された復号化完了信号「0」を選択する。マルチプレクサ613は、スイッチ609により出力された復号化完了信号が「0」なので、テーブル参照部601により出力された復号化データ「(x、x、x)」を選択する。マルチプレクサ614は、スイッチ609により出力された復号化完了信号が「0」なので、テーブル参照部601により出力された符号長「0」を選択する。
スイッチ619は、設定値が「0」なので、テーブル参照部602により出力された復号化完了信号「0」を出力する。スイッチ620は、設定値が「0」なので、テーブル参照部602により出力された復号化データ「(x、x、x)」を出力する。スイッチ621は、設定値が「0」なので、テーブル参照部602により出力された符号長「0」を出力する。
マルチプレクサ622は、スイッチ619により出力された復号化完了信号が「0」なので、テーブル参照部603により出力された復号化完了信号「0」を選択する。マルチプレクサ623は、スイッチ619により出力された復号化完了信号が「0」なので、テーブル参照部603により出力された復号化データ「(x、x、x)」を選択する。マルチプレクサ624は、スイッチ619により出力された復号化完了信号が「0」なので、テーブル参照部603により出力された符号長「0」を選択する。
レジスタ626は、初期値「0」を保持する。レジスタ627は、初期値「(0、0、0)」を保持する。レジスタ628は、初期値「0」を保持する。
マルチプレクサ625は、レジスタ626に保持される復号化完了信号が「0」なので、マルチプレクサ622により選択された復号化完了信号「0」を選択する。
スイッチ629は、設定値が「1」なので、レジスタ626に保持される復号化完了信号「0」を出力する。スイッチ630は、設定値が「1」なので、レジスタ627に保持される復号化データ「(x、x、x)」を出力する。スイッチ631は、設定値が「1」なので、レジスタ628に保持される符号長「0」を出力する。
マルチプレクサ632は、スイッチ629により出力された復号化完了信号が「0」なので、テーブル参照部604により出力された復号化完了信号「0」を選択する。マルチプレクサ633は、スイッチ629により出力された復号化完了信号が「0」なので、テーブル参照部604により出力された復号化データ「(x、x、x)」を選択する。マルチプレクサ634は、スイッチ629により出力された復号化完了信号が「0」なので、テーブル参照部604により出力された符号長「0」を選択する。
制御部635は、テーブル参照部101により出力された復号化完了信号が「1」なので、選択信号「0」を出力する。
マルチプレクサ636は、制御部635により出力された選択信号が「0」なので、テーブル参照部101により出力された復号化完了信号「1」を選択する。マルチプレクサ637は、制御部635により出力された選択信号が「0」なので、テーブル参照部101により出力された復号化データ「(0、1、0)」を選択する。マルチプレクサ638は、制御部635により出力された選択信号が「0」なので、テーブル参照部101により出力された符号長「1」を選択する。
ビットストリーム切出し部100は、マルチプレクサ638により選択された符号長が「1」なので、先頭のビットを1ビットずらして、ビット列「m1−m8n1−n16o1−o8」を切出す。ビットストリーム切出し部100は、次のサイクルで、切出されたビット列「m1−m8n1−n16o1−o8」を出力する。
レジスタ626は、マルチプレクサ625により選択された復号化完了信号「0」を取り込み次のサイクルで出力する。レジスタ627は、マルチプレクサ623により選択された復号化データ「(x、x、x)」を取り込み次のサイクルで出力する。レジスタ628は、マルチプレクサ624により選択された符号長「0」を取り込み次のサイクルで出力する。
<第1サイクル>
第1サイクルにおいて、ビットストリーム切出し部100は、第0サイクルで切出されたビット列「m1−m8n1−n16o1−o8」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により切出されたビット列「m1−m8n1−n16o1−o8」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
テーブル参照部600は、ビットストリーム切出し部100により切出されたビット列「m1−m8n1−n16o1−o8」と記憶されている符号語「m1−m8」とが一致するので、復号化完了信号「1」を出力し、復号化データ(ラン、レベル、ラスト)「(1、2、0)」を出力し、符号長「8」を出力する。
テーブル参照部601は、ビットストリーム切出し部100により切出されたビット列「m1−m8n1−n16o1−o8」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
テーブル参照部602は、ビットストリーム切出し部100により切出されたビット列「m1−m8n1−n16o1−o8」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
テーブル参照部603は、ビットストリーム切出し部100により切出されたビット列「m1−m8n1−n16o1−o8」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
テーブル参照部604は、ビットストリーム切出し部100により切出されたビット列「m1−m8n1−n16o1−o8」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
スイッチ609は、設定値が「0」なので、テーブル参照部600により出力された復号化完了信号「1」を出力する。スイッチ610は、設定値が「0」なので、テーブル参照部600により出力された復号化データ「(1、2、0)」を出力する。スイッチ611は、設定値が「0」なので、テーブル参照部600により出力された符号長「8」を出力する。
マルチプレクサ612は、スイッチ609により出力された復号化完了信号が「1」なので、スイッチ609により出力された復号化完了信号「1」を選択する。マルチプレクサ613は、スイッチ609により出力された復号化完了信号が「1」なので、スイッチ610により出力された復号化データ「(1、2、0)」を選択する。マルチプレクサ614は、スイッチ609により出力された復号化完了信号が「1」なので、スイッチ611により出力された符号長「8」を選択する。
スイッチ619は、設定値が「0」なので、テーブル参照部602により出力された復号化完了信号「0」を出力する。スイッチ620は、設定値が「0」なので、テーブル参照部602により出力された復号化データ「(x、x、x)」を出力する。スイッチ621は、設定値が「0」なので、テーブル参照部602により出力された符号長「0」を出力する。
マルチプレクサ622は、スイッチ619により出力された復号化完了信号が「0」なので、テーブル参照部603により出力された復号化完了信号「0」を選択する。マルチプレクサ623は、スイッチ619により出力された復号化完了信号が「0」なので、テーブル参照部603により出力された復号化データ「(x、x、x)」を選択する。マルチプレクサ624は、スイッチ619により出力された復号化完了信号が「0」なので、テーブル参照部603により出力された符号長「0」を選択する。
レジスタ626は、第0サイクルで取り込まれた復号化完了信号「0」を保持する。レジスタ627は、第0サイクルで取り込まれた復号化データ「(x、x、x)」を保持する。レジスタ628は、第0サイクルで取り込まれた符号長「0」を保持する。
マルチプレクサ625は、レジスタ626に保持される復号化完了信号が「0」なので、マルチプレクサ622により選択された復号化完了信号「0」を選択する。
スイッチ629は、設定値が「1」なので、レジスタ626に保持される復号化完了信号「0」を出力する。スイッチ630は、設定値が「1」なので、レジスタ627に保持される復号化データ「(x、x、x)」を出力する。スイッチ631は、設定値が「1」なので、レジスタ628に保持される符号長「0」を出力する。
マルチプレクサ632は、スイッチ629により出力された復号化完了信号が「0」なので、テーブル参照部604により出力された復号化完了信号「0」を選択する。マルチプレクサ633は、スイッチ629により出力された復号化完了信号が「0」なので、テーブル参照部604により出力された復号化データ「(x、x、x)」を選択する。マルチプレクサ634は、スイッチ629により出力された復号化完了信号が「0」なので、テーブル参照部604により出力された符号長「0」を選択する。
制御部635は、マルチプレクサ612により出力された復号化完了信号が「1」なので、選択信号「1」を出力する。
マルチプレクサ636は、制御部635により出力された選択信号が「1」なので、マルチプレクサ612により選択された復号化完了信号「1」を選択する。マルチプレクサ637は、制御部635により出力された選択信号が「1」なので、マルチプレクサ613により選択された復号化データ「(1、2、0)」を選択する。マルチプレクサ638は、制御部635により出力された選択信号が「1」なので、マルチプレクサ614により選択された符号長「8」を選択する。
ビットストリーム切出し部100は、マルチプレクサ638により選択された符号長が「8」なので、先頭のビットを8ビットずらして、ビット列「n1−n16o1−o16」を切出す。ビットストリーム切出し部100は、次のサイクルで、切出されたビット列「n1−n16o1−o16」を出力する。
レジスタ626は、マルチプレクサ625により選択された復号化完了信号「0」を取り込み次のサイクルで出力する。レジスタ627は、マルチプレクサ623により選択された復号化データ「(x、x、x)」を取り込み次のサイクルで出力する。レジスタ628は、マルチプレクサ624により選択された符号長「0」を取り込み次のサイクルで出力する。
<第2サイクル>
第2サイクルにおいて、ビットストリーム切出し部100は、第1サイクルで切出されたビット列「n1−n16o1−o16」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により切出されたビット列「n1−n16o1−o16」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
テーブル参照部600は、ビットストリーム切出し部100により切出されたビット列「n1−n16o1−o16」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
テーブル参照部601は、ビットストリーム切出し部100により切出されたビット列「n1−n16o1−o16」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
テーブル参照部602は、ビットストリーム切出し部100により切出されたビット列「n1−n16o1−o16」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
テーブル参照部603は、ビットストリーム切出し部100により切出されたビット列「n1−n16o1−o16」と記憶されている符号語「n1−n16」とが一致するので、復号化完了信号「1」を出力し、復号化データ(ラン、レベル、ラスト)「(2、3、0)」を出力し、符号長「16」を出力する。
テーブル参照部604は、ビットストリーム切出し部100により切出されたビット列「n1−n16o1−o16」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
スイッチ609は、設定値が「0」なので、テーブル参照部600により出力された復号化完了信号「0」を出力する。スイッチ610は、設定値が「0」なので、テーブル参照部600により出力された復号化データ「(x、x、x)」を出力する。スイッチ611は、設定値が「0」なので、テーブル参照部600により出力された符号長「0」を出力する。
マルチプレクサ612は、スイッチ609により出力された復号化完了信号が「0」なので、テーブル参照部601により出力された復号化完了信号「0」を選択する。マルチプレクサ613は、スイッチ609により出力された復号化完了信号が「0」なので、テーブル参照部601により出力された復号化データ「(x、x、x)」を選択する。マルチプレクサ614は、スイッチ609により出力された復号化完了信号が「0」なので、テーブル参照部601により出力された符号長「0」を選択する。
スイッチ619は、設定値が「0」なので、テーブル参照部602により出力された復号化完了信号「0」を出力する。スイッチ620は、設定値が「0」なので、テーブル参照部602により出力された復号化データ「(x、x、x)」を出力する。スイッチ621は、設定値が「0」なので、テーブル参照部602により出力された符号長「0」を出力する。
マルチプレクサ622は、スイッチ619により出力された復号化完了信号が「0」なので、テーブル参照部603により出力された復号化完了信号「1」を選択する。マルチプレクサ623は、スイッチ619により出力された復号化完了信号が「0」なので、テーブル参照部603により出力された復号化データ「(2、3、0)」を選択する。マルチプレクサ624は、スイッチ619により出力された復号化完了信号が「0」なので、テーブル参照部603により出力された符号長「16」を選択する。
レジスタ626は、第1サイクルで取り込まれた復号化完了信号「0」を保持する。レジスタ627は、第1サイクルで取り込まれた復号化データ「(x、x、x)」を保持する。レジスタ628は、第1サイクルで取り込まれた符号長「0」を保持する。
マルチプレクサ625は、レジスタ626に保持される復号化完了信号が「0」なので、マルチプレクサ622により選択された復号化完了信号「1」を選択する。
スイッチ629は、設定値が「1」なので、レジスタ626に保持される復号化完了信号「0」を出力する。スイッチ630は、設定値が「1」なので、レジスタ627に保持される復号化データ「(x、x、x)」を出力する。スイッチ631は、設定値が「1」なので、レジスタ628に保持される符号長「0」を出力する。
マルチプレクサ632は、スイッチ629により出力された復号化完了信号が「0」なので、テーブル参照部604により出力された復号化完了信号「0」を選択する。マルチプレクサ633は、スイッチ629により出力された復号化完了信号が「0」なので、テーブル参照部604により出力された復号化データ「(x、x、x)」を選択する。マルチプレクサ634は、スイッチ629により出力された復号化完了信号が「0」なので、テーブル参照部604により出力された符号長「0」を選択する。
制御部635は、テーブル参照部101により出力された復号化完了信号、マルチプレクサ612により選択された復号化完了信号、及びマルチプレクサ632により選択された復号化完了信号が全て「0」なので、選択信号「0」を出力する。
マルチプレクサ636は、制御部635により出力された選択信号が「0」なので、テーブル参照部101により出力された復号化完了信号「0」を選択する。マルチプレクサ637は、制御部635により出力された選択信号が「0」なので、テーブル参照部101により出力された復号化データ「(x、x、x)」を選択する。マルチプレクサ638は、制御部635により出力された選択信号が「0」なので、テーブル参照部101により出力された符号長「0」を選択する。
ビットストリーム切出し部100は、マルチプレクサ638により選択された符号長が「0」なので、ビット列「n1−n16o1−o16」を切出す。ビットストリーム切出し部100は、次のサイクルで、切出されたビット列「n1−n16o1−o16」を出力する。
レジスタ626は、マルチプレクサ625により選択された復号化完了信号「1」を取り込み次のサイクルで出力する。レジスタ627は、マルチプレクサ623により選択された復号化データ「(2、3、0)」を取り込み次のサイクルで出力する。レジスタ628は、マルチプレクサ624により選択された符号長「16」を取り込み次のサイクルで出力する。
<第3サイクル>
第3サイクルにおいて、ビットストリーム切出し部100は、第2サイクルで切出されたビット列「n1−n16o1−o16」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により切出されたビット列「n1−n16o1−o16」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
テーブル参照部600は、ビットストリーム切出し部100により切出されたビット列「n1−n16o1−o16」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
テーブル参照部601は、ビットストリーム切出し部100により切出されたビット列「n1−n16o1−o16」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
テーブル参照部602は、ビットストリーム切出し部100により切出されたビット列「n1−n16o1−o16」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
テーブル参照部603は、ビットストリーム切出し部100により切出されたビット列「n1−n16o1−o16」と記憶されている符号語「n1−n16」とが一致するので、復号化完了信号「1」を出力し、復号化データ(ラン、レベル、ラスト)「(2、3、0)」を出力し、符号長「16」を出力する。
テーブル参照部604は、ビットストリーム切出し部100により切出されたビット列「n1−n16o1−o16」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
スイッチ609は、設定値が「0」なので、テーブル参照部600により出力された復号化完了信号「0」を出力する。スイッチ610は、設定値が「0」なので、テーブル参照部600により出力された復号化データ「(x、x、x)」を出力する。スイッチ611は、設定値が「0」なので、テーブル参照部600により出力された符号長「0」を出力する。
マルチプレクサ612は、スイッチ609により出力された復号化完了信号が「0」なので、テーブル参照部601により出力された復号化完了信号「0」を選択する。マルチプレクサ613は、スイッチ609により出力された復号化完了信号が「0」なので、テーブル参照部601により出力された復号化データ「(x、x、x)」を選択する。マルチプレクサ614は、スイッチ609により出力された復号化完了信号が「0」なので、テーブル参照部601により出力された符号長「0」を選択する。
スイッチ619は、設定値が「0」なので、テーブル参照部602により出力された復号化完了信号「0」を出力する。スイッチ620は、設定値が「0」なので、テーブル参照部602により出力された復号化データ「(x、x、x)」を出力する。スイッチ621は、設定値が「0」なので、テーブル参照部602により出力された符号長「0」を出力する。
マルチプレクサ622は、スイッチ619により出力された復号化完了信号が「0」なので、テーブル参照部603により出力された復号化完了信号「1」を選択する。マルチプレクサ623は、スイッチ619により出力された復号化完了信号が「0」なので、テーブル参照部603により出力された復号化データ「(2、3、0)」を選択する。マルチプレクサ624は、スイッチ619により出力された復号化完了信号が「0」なので、テーブル参照部603により出力された符号長「16」を選択する。
レジスタ626は、第2サイクルで取り込まれた復号化完了信号「1」を保持する。レジスタ627は、第2サイクルで取り込まれた復号化データ「(2、3、0)」を保持する。レジスタ628は、第2サイクルで取り込まれた符号長「16」を保持する。
マルチプレクサ625は、レジスタ626に保持される復号化完了信号が「1」なので、固定値「0」を選択する。
スイッチ629は、設定値が「1」なので、レジスタ626に保持される復号化完了信号「1」を出力する。スイッチ630は、設定値が「1」なので、レジスタ627に保持される復号化データ「(2、3、0)」を出力する。スイッチ631は、設定値が「1」なので、レジスタ628に保持される符号長「16」を出力する。
マルチプレクサ632は、スイッチ629により出力された復号化完了信号が「1」なので、スイッチ629により出力された復号化完了信号「1」を選択する。マルチプレクサ633は、スイッチ629により出力された復号化完了信号が「1」なので、スイッチ630により出力された復号化データ「(2、3、0)」を選択する。マルチプレクサ634は、スイッチ629により出力された復号化完了信号が「1」なので、スイッチ631により出力された符号長「16」を選択する。
制御部635は、マルチプレクサ632により選択された復号化完了信号「1」なので、選択信号「2」を出力する。
マルチプレクサ636は、制御部635により出力された選択信号が「2」なので、マルチプレクサ632により選択された復号化完了信号「1」を選択する。マルチプレクサ637は、制御部635により出力された選択信号が「2」なので、マルチプレクサ633により選択された復号化データ「(2、3、0)」を選択する。マルチプレクサ638は、制御部635により出力された選択信号が「2」なので、マルチプレクサ634により選択された符号長「16」を選択する。
ビットストリーム切出し部100は、マルチプレクサ638により選択された符号長が「16」なので、先頭のビットを16ビットずらして、ビット列「o1−o32」を切出す。ビットストリーム切出し部100は、次のサイクルで、切出されたビット列「o1−o32」を出力する。
レジスタ626は、マルチプレクサ625により選択された復号化完了信号「0」を取り込み次のサイクルで出力する。レジスタ627は、マルチプレクサ623により選択された復号化データ「(2、3、0)」を取り込み次のサイクルで出力する。レジスタ628は、マルチプレクサ624により選択された符号長「16」を取り込み次のサイクルで出力する。
<第4サイクル>
第4サイクルにおいて、ビットストリーム切出し部100は、第3サイクルで切出されたビット列「o1−o32」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により切出されたビット列「o1−o32」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
テーブル参照部600は、ビットストリーム切出し部100により切出されたビット列「o1−o32」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
テーブル参照部601は、ビットストリーム切出し部100により切出されたビット列「o1−o32」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
テーブル参照部602は、ビットストリーム切出し部100により切出されたビット列「o1−o32」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
テーブル参照部603は、ビットストリーム切出し部100により切出されたビット列「o1−o32」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ(ラン、レベル、ラスト)「(x、x、x)」を出力し、符号長「0」を出力する。
テーブル参照部604は、ビットストリーム切出し部100により切出されたビット列「o1−o32」と記憶されている符号語「o1−o32」とが一致するので、復号化完了信号「1」を出力し、復号化データ(ラン、レベル、ラスト)「(2、4、1)」を出力し、符号長「32」を出力する。
スイッチ609は、設定値が「0」なので、テーブル参照部600により出力された復号化完了信号「0」を出力する。スイッチ610は、設定値が「0」なので、テーブル参照部600により出力された復号化データ「(x、x、x)」を出力する。スイッチ611は、設定値が「0」なので、テーブル参照部600により出力された符号長「0」を出力する。
マルチプレクサ612は、スイッチ609により出力された復号化完了信号が「0」なので、テーブル参照部601により出力された復号化完了信号「0」を選択する。マルチプレクサ613は、スイッチ609により出力された復号化完了信号が「0」なので、テーブル参照部601により出力された復号化データ「(x、x、x)」を選択する。マルチプレクサ614は、スイッチ609により出力された復号化完了信号が「0」なので、テーブル参照部601により出力された符号長「0」を選択する。
スイッチ619は、設定値が「0」なので、テーブル参照部602により出力された復号化完了信号「0」を出力する。スイッチ620は、設定値が「0」なので、テーブル参照部602により出力された復号化データ「(x、x、x)」を出力する。スイッチ621は、設定値が「0」なので、テーブル参照部602により出力された符号長「0」を出力する。
マルチプレクサ622は、スイッチ619により出力された復号化完了信号が「0」なので、テーブル参照部603により出力された復号化完了信号「0」を選択する。マルチプレクサ623は、スイッチ619により出力された復号化完了信号が「0」なので、テーブル参照部603により出力された復号化データ「(x、x、x)」を選択する。マルチプレクサ624は、スイッチ619により出力された復号化完了信号が「0」なので、テーブル参照部603により出力された符号長「0」を選択する。
レジスタ626は、第3サイクルで取り込まれた復号化完了信号「0」を保持する。レジスタ627は、第3サイクルで取り込まれた復号化データ「(2、3、0)」を保持する。レジスタ628は、第3サイクルで取り込まれた符号長「16」を保持する。
マルチプレクサ625は、レジスタ626に保持される復号化完了信号が「0」なので、マルチプレクサ622により選択された復号化完了信号「0」を出力する。
スイッチ629は、設定値が「1」なので、レジスタ626に保持される復号化完了信号「0」を出力する。スイッチ630は、設定値が「1」なので、レジスタ627に保持される復号化データ「(2、3、0)」を出力する。スイッチ631は、設定値が「1」なので、レジスタ628に保持される符号長「16」を出力する。
マルチプレクサ632は、スイッチ629により出力された復号化完了信号が「0」なので、テーブル参照部604により出力された復号化完了信号「1」を選択する。マルチプレクサ633は、スイッチ629により出力された復号化完了信号が「0」なので、テーブル参照部604により出力された復号化データ「(2、4、1)」を選択する。マルチプレクサ634は、スイッチ629により出力された復号化完了信号が「0」なので、テーブル参照部604により出力された符号長「32」を選択する。
制御部635は、マルチプレクサ632により選択された復号化完了信号「1」なので、選択信号「2」を出力する。
マルチプレクサ636は、制御部635により出力された選択信号が「2」なので、マルチプレクサ632により選択された復号化完了信号「1」を選択する。マルチプレクサ637は、制御部635により出力された選択信号が「2」なので、マルチプレクサ633により選択された復号化データ「(2、4、1)」を選択する。マルチプレクサ638は、制御部635により出力された選択信号が「2」なので、マルチプレクサ634により選択された符号長「32」を選択する。
以上のように、1個の係数を含む符号語、2個の係数を含む符号語、及び3個の係数を含む符号語のうちテーブル参照部604に記憶される符号語は、1サイクルで、復号化及びビット列の切出し処理が行われる。また、3個の係数を含む符号語のうちテーブル参照部602及び603に記憶される符号語は、2サイクルで復号化及びビット列の切出し処理が行われる。
また、スイッチ609、610及び611に設定値「1」を設定することで、テーブル参照部600に記憶される2個の係数を含む符号語の復号化及びビット列の切出し処理を、2サイクルで行うことができる。
また、スイッチ619、620及び621に設定値「1」を設定し、スイッチ629、630及び631に設定値「1」を設定することで、テーブル参照部602に記憶される3個の係数を含む符号語の復号化及びビット列の切出し処理を、3サイクルで行い、テーブル参照部603に記憶される3個の係数を含む符号語の復号化及びビット列の切出し処理を、2サイクルで行うことができる。
また、スイッチ619、620及び621に設定値「1」を設定し、スイッチ629、630及び631に設定値「0」を設定することで、テーブル参照部602に記憶される3個の係数を含む符号語の復号化及びビット列の切出し処理を、2サイクルで行い、テーブル参照部603に記憶される3個の係数を含む符号語の復号化及びビット列の切出し処理を、1サイクルで行うことができる。
また、スイッチ619、620及び621に設定値「0」を設定し、スイッチ629、630及び631に設定値「0」を設定することで、テーブル参照部602に記憶される3個の係数を含む符号語の復号化及びビット列の切出し処理を、1サイクルで行い、テーブル参照部603に記憶される3個の係数を含む符号語の復号化及びビット列の切出し処理を、1サイクルで行うことができる。
以上より、本発明の実施の形態6に係る可変長符号復号化装置60は、符号語に含まれる係数の数n(n:自然数)毎に、n個のテーブル参照部を備える。また、各テーブル参照部は、n個の符号語を含む符号語に対するテーブルをn個のテーブルに分割したテーブルを記憶する。これにより、各テーブル参照部が記憶する符号語の数を削減することができる。よって、各テーブル参照部の照合に要する時間を削減することができる。
また、本発明の実施の形態6に係る可変長符号復号化装置60は、n個の係数を含む符号語に対して、最大nサイクルで、復号化及びビット列の切出し処理を行う。これにより、1サイクルの時間を短縮することができる。よって、復号化を高速に行うことができる。特に、各テーブル参照部の出力を直列に接続することで、テーブルを階層的に分割した場合に、効率よく復号化を行うことができる。例えば、各テーブル参照部に記憶されるテーブルを32ビットのビット列の上位の複数ビット及び下位の複数ビットに対応するテーブルに分割する場合に、効率よく復号化を行うことができる。
また、本発明の実施の形態6に係る可変長符号復号化装置60は、スイッチにより、復号化及びビット列の切出し処理に要するサイクル数を切り替えることができる。これにより、符号語の復号化に要する時間を、動作周波数及び製造プロセスに応じて適応的に変更することができる。例えば、復号化に要するサイクル数を増加させることで、1サイクルの時間を短縮し、高周波での動作に対応することができる。また、低周波で動作させる場合には、復号化に要するサイクル数を減少させ、復号化に要するサイクル数の平均を減少させることができる。
なお、上記説明では、1〜3の係数を含む符号語を復号化する例を説明したが、4個以上の係数を含む符号語を復号化する場合に、本発明を適用してもよい。4個以上の係数を含む符号語に対して適用する場合、4個以上の係数を含む符号語をテーブル参照部101、600、601、602、603及び604のいずれかに記憶させてもよいし、さらに、4個以上の係数に応じた、テーブル参照部を備えてもよい。すなわち、n個(n:自然数)の係数を含む符号語に対して、最大でnサイクルで復号化及びビット列の切出しを行う構成であればよい。
また、上記説明では、可変長符号復号化装置60は、2個の係数を含む符号語を復号化するテーブル参照部として、テーブル参照部600及び601を備えているが、テーブル参照部600及び601のいずれかのみを備えてもよい。この場合、テーブル参照部600又は601が2個の係数を含む符号語の全てを記憶する。さらに、上記説明では、可変長符号復号化装置60は、3個の係数を含む符号語を復号化するテーブル参照部として、テーブル参照部602、603及び604を備えているが、テーブル参照部602、603及び604のうちいずれか1以上を備えてもよい。
(実施の形態7)
本発明の実施の形態7に係る可変長符号復号化装置は、3種以上の可変長符号化方式により符号化された符号語を復号化する。本発明の実施の形態7に係る可変長符号復号化装置は、各可変長符号化方式により符号化された符号語をそれぞれ復号化する複数のテーブル参照部を備え、最も復号化に要する時間が長いテーブル参照部に対して、ビット列の切出しを行うための、専用のレジスタを備える。これにより、最も復号化に要する時間が長いテーブル参照部に対する経路の遅延を低減し、高速化を実現することができる。
まず、本発明の実施の形態7に係る可変長符号復号化装置の構成を説明する。
図20は本発明の実施の形態7に係る可変長符号復号化装置70の構成を示すブロック図である。なお、図6と同様の要素には同一の符号を付しており、説明は省略する。
図20に示す可変長符号復号化装置70は、第1可変長符号化、第2可変長符号化及び第3可変長符号化のいずれかにより可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。ここで、第1可変長符号化、第2可変長符号化及び第3可変長符号化は、それぞれ異なる可変長符号化方式である。可変長符号復号化装置70は、ビットストリーム切出し部750と、テーブル参照部704、705及び706と、制御部707と、マルチプレクサ708、709、710、711、712、713、714とを備える。
ビットストリーム切出し部750は、未復号のビットストリームの先頭から、少なくとも可変長符号化に用いられる符号語の最大符号長分のビット列を切出す。ビットストリーム切出し部750は、ビットストリーム供給部200と、バレルシフタ700及び701と、レジスタ702及び703とを備える。
ビットストリーム供給部200は、マルチプレクサ714により選択された符号長に基づき未復号のビットストリームの先頭を判定する。ビットストリーム供給部200は、判定された未復号のビットストリームの先頭から、少なくとも第1可変長符号化、第2可変長符号化及び第3可変長符号化に用いられる符号語の最大符号長の2倍分のビット列を切出す。具体的には、ビットストリーム供給部200は、64ビット分のビット列を切出し、バレルシフタ700及び701へ出力する。
バレルシフタ700は、ビットストリーム供給部200により切出されたビット列を、マルチプレクサ708により選択された符号長分左へシフトし、シフトされたビット列の先頭から、少なくとも第1可変長符号化に用いられる符号語の最大符号長分のビット列を出力する。具体的には、バレルシフタ700は、32ビット分のビット列をレジスタ702へ出力する。
バレルシフタ701は、ビットストリーム供給部200により切出されたビット列を、マルチプレクサ711により選択された符号長分左へシフトし、シフトされたビット列の先頭から、少なくとも第2可変長符号化及び第3可変長符号化に用いられる符号語の最大符号長分のビット列を出力する。具体的には、バレルシフタ701は、32ビット分のビット列をレジスタ703へ出力する。
レジスタ702は、バレルシフタ700により出力されたビット列を保持する。レジスタ703は、バレルシフタ701により出力されたビット列を保持する。
テーブル参照部704、テーブル参照部705及びテーブル参照部706は、異なる種類の可変長符号化方式により符号化された符号語の復号化データを記憶する。テーブル参照部704は、テーブル参照部704、705及び706のうちで符号語を照合するのに要する時間が最も長い。
テーブル参照部704は、判定部720と、記憶部721とを備える。
記憶部721は、第1の可変長符号化方式により符号化された複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とのテーブルである可変長符号テーブルを記憶する。
判定部720は、レジスタ702に記憶されるビット列と記憶部721に記憶される可変長符号テーブルとを照合し、レジスタ702に記憶されるビット列に、記憶部721に記憶される符号語が含まれるか否かを判定する。判定部720は、判定結果を示す復号化完了信号を出力する。具体的には、判定部720は、レジスタ702に記憶されるビット列に、記憶部721に記憶される符号語が含まれる場合に、復号化完了信号「1」を出力する。判定部720は、レジスタ702に記憶されるビット列に、記憶部721に記憶される符号語が含まれない場合に、復号化完了信号「0」を出力する。また、判定部720は、レジスタ702に記憶されるビット列に、記憶部721に記憶される符号語が含まれる場合に、該符号語に対応する復号化データ(ラン、レベル、ラスト)及び符号長を出力する。また、判定部720は、レジスタ702に記憶されるビット列に、記憶部721に記憶される符号語が含まれない場合に、任意の復号化データ及び符号長「0」を出力する。
テーブル参照部705は、判定部730と、記憶部731とを備える。
記憶部731は、第2の可変長符号化方式により符号化された複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とのテーブルである可変長符号テーブルを記憶する。
判定部730は、レジスタ703に記憶されるビット列と記憶部731に記憶される可変長符号テーブルとを照合し、レジスタ703に記憶されるビット列に、記憶部731に記憶される符号語が含まれるか否かを判定する。判定部730は、判定結果を示す復号化完了信号を出力する。具体的には、判定部730は、レジスタ703に記憶されるビット列に、記憶部731に記憶される符号語が含まれる場合に、復号化完了信号「1」を出力する。判定部730は、レジスタ703に記憶されるビット列に、記憶部731に記憶される符号語が含まれない場合に、復号化完了信号「0」を出力する。また、判定部730は、レジスタ703に記憶されるビット列に、記憶部731に記憶される符号語が含まれる場合に、該符号語に対応する復号化データ(ラン、レベル、ラスト)及び符号長を出力する。また、判定部730は、レジスタ703に記憶されるビット列に、記憶部731に記憶される符号語が含まれない場合に、任意の復号化データ及び符号長「0」を出力する。
テーブル参照部706は、判定部740と、記憶部741とを備える。
記憶部741は、第3の可変長符号化方式により符号化された複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とのテーブルである可変長符号テーブルを記憶する。
判定部740は、レジスタ703に記憶されるビット列と記憶部741に記憶される可変長符号テーブルとを照合し、レジスタ703に記憶されるビット列に、記憶部741に記憶される符号語が含まれるか否かを判定する。判定部740は、判定結果を示す復号化完了信号を出力する。具体的には、判定部740は、レジスタ703に記憶されるビット列に、記憶部741に記憶される符号語が含まれる場合に、復号化完了信号「1」を出力する。判定部740は、レジスタ703に記憶されるビット列に、記憶部741に記憶される符号語が含まれない場合に、復号化完了信号「0」を出力する。また、判定部740は、レジスタ703に記憶されるビット列に、記憶部741に記憶される符号語が含まれる場合に、該符号語に対応する復号化データ(ラン、レベル、ラスト)及び符号長を出力する。また、判定部740は、レジスタ703に記憶されるビット列に、記憶部741に記憶される符号語が含まれない場合に、任意の復号化データ及び符号長「0」を出力する。
また、判定部720による、レジスタ702に記憶されるビット列に、記憶部721に記憶される符号語が含まれるか否かの判定に要する時間は、判定部730による、レジスタ703に記憶されるビット列に、記憶部731に記憶される符号語が含まれるか否かの判定に要する時間より長い。また、判定部720による、レジスタ702に記憶されるビット列に、記憶部721に記憶される符号語が含まれるか否かの判定に要する時間は、判定部740による、レジスタ703に記憶されるビット列に、記憶部741に記憶される符号語が含まれるか否かの判定に要する時間より長い。
制御部707は、複数の種類の可変長符号テーブルを切替えるための選択信号を出力する。制御部707は、テーブル参照部704を使用する場合は選択信号「0」を出力し、テーブル参照部705を使用する場合は選択信号「1」を出力し、テーブル参照部706を使用する場合は選択信号「2」を出力し、テーブル参照部704、705及び706のいずれも使用しない場合は選択信号「3」を出力する。
マルチプレクサ708は、制御部707により出力された選択信号に応じて、バレルシフタ700及びマルチプレクサ714へ出力する信号を選択する。マルチプレクサ708は、選択信号が「0」の場合、テーブル参照部704により出力された符号長を選択し、選択信号が「0」以外の場合、固定値「0」を選択する。
マルチプレクサ709は、制御部707により出力された選択信号に応じて、マルチプレクサ712へ出力する信号を選択する。マルチプレクサ709は、選択信号が「2」の場合、テーブル参照部706により出力された復号化完了信号を選択し、選択信号が「2」以外の場合、テーブル参照部705により出力された復号化完了信号を選択する。
マルチプレクサ710は、制御部707により出力された選択信号に応じて、マルチプレクサ713へ出力する信号を選択する。マルチプレクサ710は、選択信号が「2」の場合、テーブル参照部706により出力された復号化データを選択し、選択信号が「2」以外の場合、テーブル参照部705により出力された復号化データを選択する。
マルチプレクサ711は、制御部707により出力された選択信号に応じて、バレルシフタ701及びマルチプレクサ714へ出力する信号を選択する。マルチプレクサ711は、選択信号が「1」の場合、テーブル参照部705により出力された符号長を選択し、選択信号が「2」の場合、テーブル参照部706により出力された符号長を選択し、選択信号が「1」及び「2」以外の場合、固定値「0」を選択する。
マルチプレクサ712は、制御部707により出力された選択信号に応じて、出力する信号を選択する。マルチプレクサ712は、選択信号が「0」の場合、テーブル参照部704により出力された復号化完了信号を出力し、選択信号が「1」又は「2」の場合、マルチプレクサ709により選択された復号化完了信号を選択し、選択信号が「3」の場合、固定値「0」を選択する。
マルチプレクサ713は制御部707により出力された選択信号に応じて、出力する信号を選択する。マルチプレクサ713は、選択信号が「0」又は「3」の場合、テーブル参照部704により出力された復号化データを選択し、選択信号が「1」又は「2」の場合、マルチプレクサ710により選択された復号化データを選択する。
マルチプレクサ714は、制御部707により出力された選択信号に応じて、出力する信号を選択する。選択信号が「0」又は「3」の場合、マルチプレクサ708により選択された符号長を選択し、選択信号が「1」又は「2」の場合、マルチプレクサ711により選択された符号長を選択する。
ここで、マルチプレクサ713により選択される復号化データは、マルチプレクサ712により選択される復号化完了信号が「1」となるサイクルでのみ有効である。
次に、本発明の実施の形態7に係る可変長符号復号化装置70の動作を説明する。
図21は、可変長符号復号化装置70による具体的な動作を示す図である。図22は、可変長符号復号化装置70に入力されるビットストリームに含まれる符号語の一例を示す図である。以下、可変長符号復号化装置70により、ビットストリーム「p1p1−p16p1−p32」を復号化する動作を説明する。また、ビットストリーム「p1p1−p16p1−p32」にはビット列「q1−q32」が後続する。
また、図22に示すように、テーブル参照部704は第1の可変長符号化方式により符号化された符号語である符号語「p1」を記憶する。テーブル参照部705は第2の可変長符号化方式により符号化された符号語である符号語「p1−p16」を記憶する。テーブル参照部706は第3の可変長符号化方式により符号化された符号語である符号語「p1−p32」を記憶する。
また、テーブル参照部は、テーブル参照部704、テーブル参照部705、及びテーブル参照部706の順に切替えられる。
また、ビットストリーム供給部200は、初期値として「p1p1−p16p1−p32p1−p15」を保持し、レジスタ702は、初期値として「p1p1−p16p1−p15」を保持し、レジスタ703は、初期値として「p1p1−p16p1−p15」を保持する。
<第0サイクル>
第0サイクルにおいて、ビットストリーム供給部200は、初期値「p1p1−p16p1−p32p1−p15」を出力する。
バレルシフタ700は、ビットストリーム供給部200により出力されるビット列「p1p1−p16p1−p32p1−p15」を、マルチプレクサ708により選択された符号長「1」分左へシフトする。バレルシフタ700は、シフトされたビット列「p1−p16p1−p16」を出力する。
バレルシフタ701は、ビットストリーム供給部200により出力されるビット列「p1p1−p16p1−p32p1−p15」を、マルチプレクサ711により選択された符号長「0」分左へシフトする。バレルシフタ700は、シフトされたビット列「p1p1−p16p1−p15」を出力する。
レジスタ702は、初期値「p1p1−p16p1−p15」を保持する。レジスタ703は、初期値「p1p1−p16p1−p15」を保持する。
テーブル参照部704は、レジスタ702に保持されるビット列「p1p1−p16p1−p15」と記憶されている符号語「p1」とが一致するので、復号化完了信号「1」を出力し、復号化データ「P0」を出力し、符号長「1」を出力する。
テーブル参照部705は、レジスタ703に保持されるビット列「p1p1−p16p1−p15」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ「x」を出力し、符号長「x」を出力する。
テーブル参照部706は、レジスタ703に保持されるビット列「p1p1−p16p1−p15」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ「x」を出力し、符号長「x」を出力する。
制御部707は、テーブル参照部704を使用するので、選択信号「0」を出力する。
マルチプレクサ708は、制御部707により出力された選択信号が「0」なので、テーブル参照部704により出力された符号長「1」を選択する。
マルチプレクサ709、制御部707により出力された選択信号が「0」なので、テーブル参照部705により出力された復号化完了信号「0」を選択する。
マルチプレクサ710は、制御部707により出力された選択信号が「0」なので、テーブル参照部705により出力された復号化データ「x」を出力する。
マルチプレクサ711は、制御部707により出力された選択信号が「0」なので、固定値「0」を選択する。
マルチプレクサ712は、制御部707により出力された選択信号が「0」なので、テーブル参照部704により出力された復号化完了信号「1」を選択する。
マルチプレクサ713は、制御部707により出力された選択信号が「0」なので、テーブル参照部704により出力された復号化データ「P0」を選択する。
マルチプレクサ714は、制御部707により出力された選択信号が「0」なので、マルチプレクサ708により選択された符号長「1」を選択する。
ビットストリーム供給部200は、マルチプレクサ714により選択された符号長が「1」なので、先頭のビットを1ビットずらして、ビット列「p1−p16p1−p32p1−p16」を切出す。ビットストリーム供給部200は、次のサイクルで、切出されたビット列「p1−p16p1−p32p1−p16」を出力する。
レジスタ702は、バレルシフタ700により出力されたビット列「p1−p16p1−p16」を取り込み次のサイクルで出力する。レジスタ703は、バレルシフタ701により出力されたビット列「p1p1−p16p1−p15」を取り込み次のサイクルで出力する。
<第1サイクル>
第1サイクルにおいて、ビットストリーム供給部200は、第0サイクルで切出されたビット列「p1−p16p1−p32p1−p16」を出力する。
バレルシフタ700は、ビットストリーム供給部200により出力されるビット列「p1−p16p1−p32p1−p16」を、マルチプレクサ708により選択された符号長「0」分左へシフトする。バレルシフタ700は、シフトされたビット列「p1−p16p1−p16」を出力する。
バレルシフタ701は、ビットストリーム供給部200により出力されるビット列「p1−p16p1−p32p1−p16」を、マルチプレクサ711により出力された符号長「0」分左へシフトする。バレルシフタ701は、シフトされたビット列「p1−p16p1−p16」を出力する。
レジスタ702は、第0サイクルで取り込まれたビット列「p1−p16p1−p16」を保持する。レジスタ703は、第0サイクルで取り込まれたビット列「p1p1−p16p1−p15」を保持する。
テーブル参照部704は、レジスタ702に保持されるビット列「p1p1−p16p1−p15」と記憶されている符号語「p1」とが一致するので、復号化完了信号「1」を出力し、復号化データ「P0」を出力し、符号長「1」を出力する。
テーブル参照部705は、レジスタ703に保持されるビット列「p1p1−p16p1−p15」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ「x」を出力し、符号長「x」を出力する。
テーブル参照部706は、レジスタ703に保持されるビット列「p1p1−p16p1−p15」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ「x」を出力し、符号長「x」を出力する。
次のサイクルでは、異なるバレルシフタとレジスタとの組を使用するために、いずれのテーブル参照部も使用されない。よって、制御部707は、選択信号「3」を出力する。
マルチプレクサ708は、制御部707により出力された選択信号が「3」なので、固定値「0」を選択する。
マルチプレクサ709は、制御部707により出力された選択信号が「3」なので、テーブル参照部705により出力された復号化完了信号「0」を選択する。
マルチプレクサ710は、制御部707により出力された選択信号が「3」なので、テーブル参照部705により出力された復号化データ「x」を選択する。
マルチプレクサ711は、制御部707により出力された選択信号が「3」なので、固定値「0」を選択する。
マルチプレクサ712は、制御部707により出力された選択信号が「3」なので、固定値「0」を選択する。
マルチプレクサ713は、制御部707により出力された選択信号が「0」なので、テーブル参照部704により出力された復号化データ「P0」を選択する。
マルチプレクサ714は、制御部707により出力された選択信号が「0」なので、マルチプレクサ708により選択された符号長「0」を選択する。
ビットストリーム供給部200は、マルチプレクサ714により選択された符号長が「0」なので、ビット列「p1−p16p1−p32p1−p16」を切出す。ビットストリーム供給部200は、次のサイクルで、切出されたビット列「p1−p16p1−p32p1−p16」を出力する。
レジスタ702は、バレルシフタ700により出力されたビット列「p1−p16p1−p16」を取り込み次のサイクルで出力する。レジスタ703は、バレルシフタ701により出力されたビット列「p1−p16p1−p16」を取り込み次のサイクルで出力する。
<第2サイクル>
第2サイクルにおいて、ビットストリーム供給部200は、第1サイクルで切出されたビット列「p1−p16p1−p32p1−p16」を出力する。
バレルシフタ700は、ビットストリーム供給部200により出力されるビット列「p1−p16p1−p32p1−p16」を、マルチプレクサ708により選択された符号長「0」分左へシフトする。バレルシフタ700は、シフトされたビット列「p1−p16p1−p16」を出力する。
バレルシフタ701は、ビットストリーム供給部200により出力されるビット列「p1−p16p1−p32p1−p16」を、マルチプレクサ711により出力された符号長「16」分左へシフトする。バレルシフタ701は、シフトされたビット列「p1−p32」を出力する。
レジスタ702は、第1サイクルで取り込まれたビット列「p1−p16p1−p16」を保持する。レジスタ703は、第1サイクルで取り込まれたビット列「p1−p16p1−p16」を保持する。
テーブル参照部704は、レジスタ702に保持されるビット列「p1−p16p1−p16」と記憶されている符号語「p1」とが一致するので、復号化完了信号「1」を出力し、復号化データ「P0」を出力し、符号長「1」を出力する。
テーブル参照部705は、レジスタ703に保持されるビット列「p1−p16p1−p16」と記憶されている符号語「p1−p16」とが一致するので、復号化完了信号「1」を出力し、復号化データ「P1」を出力し、符号長「16」を出力する。
テーブル参照部706は、レジスタ703に保持されるビット列「p1−p16p1−p16」と記憶されている符号語とが一致しないので、復号化完了信号「0」を出力し、復号化データ「x」を出力し、符号長「x」を出力する。
制御部707は、テーブル参照部705を使用するので、選択信号「1」を出力する。
マルチプレクサ708は、制御部707により出力された選択信号が「1」なので、固定値「0」を選択する。
マルチプレクサ709は、制御部707により出力された選択信号が「1」なので、テーブル参照部705により出力された復号化完了信号「1」を選択する。
マルチプレクサ710は、制御部707により出力された選択信号が「1」なので、テーブル参照部705により出力された復号化データ「P1」を選択する。
マルチプレクサ711は、制御部707により出力された選択信号が「1」なので、テーブル参照部705により出力された符号長「16」を選択する。
マルチプレクサ712は、制御部707により出力された選択信号が「1」なので、マルチプレクサ709により出力された復号化完了信号「1」を選択する。
マルチプレクサ713は、制御部707により出力された選択信号が「1」なので、マルチプレクサ710により出力された復号化データ「P1」を選択する。
マルチプレクサ714は、制御部707により出力された選択信号が「1」なので、マルチプレクサ711により出力された符号長「16」を選択する。
ビットストリーム供給部200は、マルチプレクサ714により出力された符号長が「16」なので、先頭のビットを1ビットずらして、ビット列「p1−p32q1−q32」を切出す。ビットストリーム供給部200は、次のサイクルで、切出されたビット列「p1−p32q1−q32」を出力する。
レジスタ702は、バレルシフタ700により出力されたビット列「p1−p16p1−p16」を取り込み次のサイクルで出力する。レジスタ703は、バレルシフタ701により出力されたビット列「p1−p32」を取り込み次のサイクルで出力する。
<第3サイクル>
第3サイクルにおいて、ビットストリーム供給部200は、第2サイクルで切出されたビット列「p1−p32q1−q32」を出力する。
バレルシフタ700は、ビットストリーム供給部200により出力されるビット列「p1−p32q1−q32」を、マルチプレクサ708により選択された符号長「0」分左へシフトする。バレルシフタ700は、シフトされたビット列「p1−p32」を出力する。
バレルシフタ701は、ビットストリーム供給部200により出力されるビット列「p1−p32q1−q32」を、マルチプレクサ711により出力された符号長「32」分左へシフトする。バレルシフタ701は、シフトされたビット列「q1−q32」を出力する。
レジスタ702は、第2サイクルで取り込まれたビット列「p1−p16p1−p16」を保持する。レジスタ703は、第2サイクルで取り込まれたビット列「p1−p32」を保持する。
テーブル参照部704は、レジスタ702に保持されるビット列「p1−p16p1−p16」と記憶されている符号語「p1」とが一致するので、復号化完了信号「1」を出力し、復号化データ「P0」を出力し、符号長「1」を出力する。
テーブル参照部705は、レジスタ703に保持されるビット列「p1−p32」と記憶されている符号語「p1−p16」とが一致するので、復号化完了信号「1」を出力し、復号化データ「P1」を出力し、符号長「16」を出力する。
テーブル参照部706は、レジスタ703に保持されるビット列「p1−p32」と記憶されている符号語「p1−p32」とが一致するので、復号化完了信号「1」を出力し、復号化データ「P2」を出力し、符号長「32」を出力する。
制御部707は、テーブル参照部706を使用するので、選択信号「2」を出力する。
マルチプレクサ708は、制御部707により出力された選択信号が「2」なので、固定値「0」を選択する。
マルチプレクサ709は、制御部707により出力された選択信号が「2」なので、テーブル参照部706により出力された復号化完了信号「1」を選択する。
マルチプレクサ710は、制御部707により出力された選択信号が「2」なので、テーブル参照部706により出力された復号化データ「P2」を選択する。
マルチプレクサ711は、制御部707により出力された選択信号が「2」なので、テーブル参照部706により出力された符号長「32」を選択する。
マルチプレクサ712は、制御部707により出力された選択信号が「2」なので、マルチプレクサ709により出力された復号化完了信号「1」を選択する。
マルチプレクサ713は、制御部707により出力された選択信号が「2」なので、マルチプレクサ710により出力された復号化データ「P2」を選択する。
マルチプレクサ714は、制御部707により出力された選択信号が「2」なので、マルチプレクサ711により出力された符号長「32」を選択する。
以上のように、本発明の実施の形態7に係る可変長符号復号化装置70は、複数種類の可変長符号化方式の可変長符号テーブルをそれぞれ記憶する複数のテーブル参照部704、705及び706を備える。さらに、可変長符号復号化装置70は、複数のテーブル参照部704、705及び706のうち最も遅延の大きなテーブル参照部704に対応するバレルシフタ700と、最も遅延の大きなテーブル参照部704以外のテーブル参照部705及び706に対応するバレルシフタ701とを備える。これにより、最も遅延の大きなテーブル参照部704の経路における遅延を低減することができる。
具体的には、テーブル参照部704により出力される符号長は、2入力のマルチプレクサ708を介して、バレルシフタ700に入力される。一方、テーブル参照部705及び706により出力された符号長は、3入力のマルチプレクサ711を介して、バレルシフタ701に入力される。ここで、2入力のマルチプレクサは、3入力のマルチプレクサに比べて、ゲート数が少なく遅延量が少ない。よって、テーブル参照部704の経路の遅延をテーブル参照部705及び706の経路の遅延に比べ、少なくすることができる。また、1つのマルチプレクサにより、テーブル参照部704、705及び706により出力される符号長と、固定値「0」とのいずれかを選択する場合には、4入力のマルチプレクサが必要である。よって、1つのマルチプレクサでテーブル参照部704、705及び706により出力される符号長を選択する場合に比べて、テーブル参照部704の経路の遅延量を低減することができる。すなわち、最も遅延の大きなテーブル参照部704による復号化処理を高速化することができるので、可変長符号復号化装置70による復号化処理を高速化することができる。
また、テーブル参照部704により出力される復号化完了信号は、2入力のマルチプレクサ712のみを介して、外部に出力される。テーブル参照部704により出力される復号化データは、2入力のマルチプレクサ713のみを介して、外部に出力される。これにより、最も遅延の大きなテーブル参照部704による復号化処理を高速化することができるので、可変長符号復号化装置70による復号化処理を高速化することができる。
なお、テーブル参照部704、705及び706のうち1以上の構成を、上述した実施の形態1〜6に係る可変長符号復号化装置と同様の構成にしてもよい。すなわち、テーブル参照部704、705及び706のうち1以上の構成を、1個の係数を含む符号語を1サイクルで復号化し、2個以上の係数を含む符号語を2サイクルで復号化する構成にしてもよい。
また、4種類以上の可変長符号テーブルに対して本発明を適用してもよい。