以下、本発明の可変長符号復号化装置について実施の形態に基づいて図面を参照しながら説明する。
(実施の形態1)
まず、本実施の形態の可変長符号復号化装置の構成を説明する。
図1は、本実施の形態の可変長符号復号化装置の構成を示すブロック図である。
図1に示す可変長符号復号化装置10は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置10は、ビットストリーム切出し部100と、テーブル参照部101と、判定部102及び103と、選択部104と、判定方法制御部105とを備える。なお、本実施の形態では、可変長符号化に用いられる符号語の最大符号長は8ビットであるとする。
ビットストリーム切出し部100は、入力されたビットストリームを蓄積するバッファを有し、バッファに蓄積されている未復号のビットストリームの先頭ビットから連続する所定の第1の長さのビット列を出力する。ここでは、ビットストリーム切出し部100は、未復号のビットストリームを蓄積し、当該ビットストリームの先頭ビットから、少なくとも可変長符号化に用いられる符号語の最大符号長分のビット列を切出し出力する。具体的には、ビットストリーム切出し部100は、未復号のビットストリームの先頭ビットから8ビット分のビット列を切出し出力する。
また、ビットストリーム切出し部100は、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが、第1の長さ未満の場合は、当該ビット列の終端にデータを付加することで、第1の長さのビット列を出力する。具体的には、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満の場合は、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し出力する。
また、ビットストリーム切出し部100は、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さを蓄積状態として出力する。
さらに、ビットストリーム切出し部100は、選択部104により出力された判定信号に基づいて、新たな先頭ビットを決定し、決定された先頭ビットから8ビット分のビット列を切出し出力する。なお、ビットストリーム切出し部100の構成については、図2を参照しながら後述する。
テーブル参照部101は、記憶部111と、参照部112とを備える。
記憶部111は、可変長符号化に用いられる複数の符号語と、複数の復号化データ及び符号長とを対応付けたテーブルである可変長符号テーブル113を記憶するメモリなどである。
参照部112は、記憶部111を参照することで、ビットストリーム切出し部100により出力されたビット列の先頭の符号語と一致する符号語に対応する復号化データ及び符号長を出力する。
具体的には、参照部112は、まず、可変長符号テーブル113を参照することで、出力されたビット列の先頭の符号語が、記憶部111に記憶された符号語と一致するか否かを判定する。そして、参照部112は、ビットストリーム切出し部100により出力されたビット列の先頭の符号語が、記憶部111に記憶された符号語と一致する場合に、当該符号語に対応する復号化データ及び符号長を出力する。また、ビットストリーム切出し部100により出力されたビット列の先頭の符号語が、記憶部111に記憶された符号語と一致しない場合に、参照部112は、任意の復号化データ及び符号長を出力する。
判定部102は、少なくとも第1の長さの未復号のビットストリームがビットストリーム切出し部100に蓄積されているか否かを判定する。ここでは、判定部102は、少なくとも可変長符号化に用いられる符号語の最大符号長分の未復号のビットストリームがビットストリーム切出し部100に蓄積されているか否かを判定する。
具体的には、ビットストリーム切出し部100により出力された蓄積状態が「8」以上の場合に、判定部102は、判定信号「1」を出力する。また、ビットストリーム切出し部100により出力された蓄積状態が「8」未満の場合に、判定部102は、判定信号「0」を出力する。なお、判定部102は、最大符号長以上の未復号のビットストリームがビットストリーム切出し部100に蓄積されている場合に、テーブル参照部101により出力された符号長及び復号化データを有効と判定する(判定信号「1」を出力する)。なお、判定信号「0」などの記載は、判定信号として論理値「0」が出力されることを示し、以下、同様の表記を用いる。
判定部103は、少なくとも第1の長さより短い第2の長さの未復号のビットストリームがビットストリーム切出し部100に蓄積されているか否かを判定する。ここでは、判定部103は、少なくともテーブル参照部101により出力された符号長分の未復号のビットストリームがビットストリーム切出し部100に蓄積されているか否かを判定する。
具体的には、ビットストリーム切出し部100により出力された蓄積状態が、テーブル参照部101により出力された符号長以上の場合に、判定部103は、判定信号「1」を出力する。また、ビットストリーム切出し部100により出力された蓄積状態が、テーブル参照部101により出力された符号長未満の場合に、判定部103は、判定信号「0」を出力する。なお、判定部103は、テーブル参照部101により出力された符号長以上の未復号のビットストリームがビットストリーム切出し部100に蓄積されている場合に、テーブル参照部101により出力された符号長及び復号化データを有効と判定する(判定信号「1」を出力する)。
選択部104は、判定部102と判定部103とのいずれか一方の判定結果を選択する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さに応じて、選択部104は、判定部102及び103の判定結果の選択を切り換える。ここでは、判定方法制御部105により出力された選択信号に応じて、選択部104は、判定部102により出力された判定信号と、判定部103により出力された判定信号とのいずれかを選択する。
具体的には、判定方法制御部105により出力された選択信号が「0」の場合に、選択部104は、判定部102により出力された判定信号を選択する。また、判定方法制御部105により出力された選択信号が「1」の場合に、選択部104は、判定部103により出力された判定信号を選択する。
判定方法制御部105は、判定部102により出力された判定信号と、判定部103により出力された判定信号とのいずれかを選択するための選択信号を出力する。具体的には、選択部104により選択された判定信号が「0」の場合に、判定方法制御部105は、次のサイクルで選択信号「1」を出力する。また、選択部104により選択された判定信号が「1」の場合に、判定方法制御部105は、次のサイクルで選択信号「0」を出力する。なお、初期状態では、選択信号「0」を出力する。
なお、以上のように、本実施の形態の可変長符号復号化装置10では、選択部104を判定方法制御部105が制御することで、選択部104は、判定部102を選択した場合であり、かつ、選択した判定結果が少なくとも第1の長さ(最大符号長)の未復号のビットストリームがビットストリーム切出し部100に蓄積されていることを示さない場合に、判定部103を選択するように切り換える。さらに、判定部103を選択した場合であり、かつ、選択した判定結果が少なくとも第2の長さ(テーブル参照部101により出力された符号長)の未復号のビットストリームがビットストリーム切出し部100に蓄積されていることを示す場合に、判定部102を選択するように切り換える。
すなわち、本実施の形態の可変長符号復号化装置10では、判定部102においてテーブル参照部101により出力された符号長及び復号化データを無効と判定された場合に、次のサイクルで判定部103を選択するように、判定方法制御部105が選択部104を制御する。さらに、判定部103においてテーブル参照部101により出力された符号長及び復号化データを有効と判定された場合に、次のサイクルで判定部102を選択するように、判定方法制御部105が選択部104を制御する。
これにより、判定部102及び103を適宜切り換えることで、最大符号長以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が最大符号長未満の場合でも、復号化を完了することができる。
図2は、ビットストリーム切出し部100の詳細を示すブロック図である。同図に示すように、ビットストリーム切出し部100は、バッファ121と、切出し部122と、蓄積状態出力部123とを備える。
バッファ121は、入力された未復号のビットストリームを蓄積するメモリなどの記憶部である。
切出し部122は、バッファ121に蓄積されている未復号のビットストリームの先頭ビットから8ビット分のビット列を切出し出力する。このとき、バッファ121に蓄積されている未復号のビットストリームの長さが8ビット未満の場合は、切出し部122は、当該ビット列の終端に不足分の「0」を付加し出力する。
さらに、切出し部122は、選択部104により選択された判定信号が「1」の場合に、参照部112により出力された符号長が有効であると判断し、当該符号長に基づいて未復号のビットストリームの新たな先頭ビットを決定し、ビット列を切出し出力する。具体的には、切出し部122は、バッファ121に蓄積されている未復号のビットストリームの先頭ビットから当該符号長+1番目のビットを新たな先頭ビットとして決定する。つまり、新たな先頭ビットより前のビットストリームは、復号済みのビットストリームであり、新たな先頭ビット以降のビットストリームが、新たな未復号のビットストリームである。
また、切出し部122は、選択部104により選択された判定信号が「0」の場合に、参照部112により出力された符号長が無効であると判断し、ビットストリームの新たな先頭ビットを決定しない。
蓄積状態出力部123は、バッファ121に蓄積されている未復号のビットストリームの長さを蓄積状態として出力する。
図3は、記憶部111に記憶される可変長符号テーブル113の一例を示す図である。図3に示すように、記憶部111に記憶される可変長符号テーブル113は、符号語と、符号語の復号化データと、符号語の符号の長さである符号長とが対応付けられている。なお、記憶部111に記憶される可変長符号テーブル113は、最大符号長が8ビットの可変長符号テーブルである。
次に、本実施の形態の可変長符号復号化装置10の動作を説明する。
図4は、可変長符号復号化装置10による具体的な動作を示す図である。以下、可変長符号復号化装置10により、ビットストリーム「11111110111010」を復号化する動作を説明する。ここでは、一例として、ビットストリームは、4ビットずつビットストリーム切出し部100に入力されるとする。なお、図4に示すように、判定部102及び103の欄で示す下線付きの数字(判定信号)は、選択部104で選択される数字(判定信号)である。
<第1サイクル>
第1サイクルにおいて、可変長符号復号化装置10に、ビットストリーム「11111110111010」の第1ビット〜第4ビット「1111」が入力される。
ビットストリーム切出し部100は、入力されたビットストリーム「1111」を蓄積し、蓄積状態「4」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「11110000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11110000」の第1ビット〜第5ビット「11110」と、記憶部111により記憶された符号語「11110」が一致するので、復号化データ「e」及び符号長「5」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「4」が「8」未満なので、判定信号「0」を出力する。
判定部103は、ビットストリーム切出し部100により出力された蓄積状態「4」が、テーブル参照部101により出力された符号長「5」未満なので、判定信号「0」を出力する。
選択部104は、判定方法制御部105により出力された選択信号が「0」(初期状態)なので、判定部102により出力された判定信号「0」を選択する。
判定方法制御部105は、選択部104により選択された判定信号が「0」なので、次のサイクル(第2サイクル)で選択信号「1」を出力する。
ビットストリーム切出し部100は、選択部104により選択された判定信号が「0」なので、テーブル参照部101により出力された符号長「5」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
<第2サイクル>
第2サイクルにおいて、可変長符号復号化装置10に、ビットストリーム「11111110111010」の第5ビット〜第8ビット「1110」が入力される。
ビットストリーム切出し部100は、入力されたビットストリーム「1110」を蓄積し、蓄積状態「8」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット以上なので、ビットストリーム切出し部100は、当該ビットストリームの先頭ビットから8ビット分のビット列を切出し、ビット列「11111110」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11111110」と、記憶部111により記憶された符号語「11111110」が一致するので、復号化データ「h」及び符号長「8」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「8」が「8」以上なので、判定信号「1」を出力する。
判定部103は、ビットストリーム切出し部100により出力された蓄積状態「8」が、テーブル参照部101により出力された符号長「8」以上なので、判定信号「1」を出力する。
選択部104は、判定方法制御部105により出力された選択信号が「1」なので、判定部103により出力された判定信号「1」を選択する。
判定方法制御部105は、選択部104により選択された判定信号が「1」なので、次のサイクル(第3サイクル)で選択信号「0」を出力する。
ビットストリーム切出し部100は、選択部104により選択された判定信号が「1」なので、テーブル参照部101により出力された符号長「8」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部100は、「11111110」の次のビットを新たな先頭ビットと決定する。
<第3サイクル>
第3サイクルにおいて、可変長符号復号化装置10に、ビットストリーム「11111110111010」の第9ビット〜第12ビット「1110」が入力される。
ビットストリーム切出し部100は、入力されたビットストリーム「1110」を蓄積し、蓄積状態「4」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「11100000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11100000」の第1ビット〜第4ビット「1110」と、記憶部111により記憶された符号語「1110」が一致するので、復号化データ「d」及び符号長「4」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「4」が「8」未満なので、判定信号「0」を出力する。
判定部103は、ビットストリーム切出し部100により出力された蓄積状態「4」が、テーブル参照部101により出力された符号長「4」以上なので、判定信号「1」を出力する。
選択部104は、判定方法制御部105により出力された選択信号が「0」なので、判定部102により出力された判定信号「0」を選択する。
判定方法制御部105は、選択部104により選択された判定信号が「0」なので、次のサイクル(第4サイクル)で選択信号「1」を出力する。
ビットストリーム切出し部100は、選択部104により選択された判定信号が「0」なので、テーブル参照部101により出力された符号長「4」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
<第4サイクル>
第4サイクルにおいて、可変長符号復号化装置10に、ビットストリーム「11111110111010」の第13ビット〜第14ビット「10」が入力される。
ビットストリーム切出し部100は、入力されたビットストリーム「10」を蓄積し、蓄積状態「6」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「11101000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11101000」の第1ビット〜第4ビット「1110」と、記憶部111により記憶された符号語「1110」が一致するので、復号化データ「d」及び符号長「4」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「6」が「8」未満なので、判定信号「0」を出力する。
判定部103は、ビットストリーム切出し部100により出力された蓄積状態「6」が、テーブル参照部101により出力された符号長「4」以上なので、判定信号「1」を出力する。
選択部104は、判定方法制御部105により出力された選択信号が「1」なので、判定部103により出力された判定信号「1」を選択する。
判定方法制御部105は、選択部104により選択された判定信号が「1」なので、次のサイクル(第5サイクル)で選択信号「0」を出力する。
ビットストリーム切出し部100は、選択部104により選択された判定信号が「1」なので、テーブル参照部101により出力された符号長「4」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部100は、「1110」の次のビット「1」を新たな先頭ビットとして決定する。
<第5サイクル>
第5サイクルにおいて、可変長符号復号化装置10に、ビットストリームは入力されない。
ビットストリーム切出し部100は、ビットストリームが入力されないので、ビットストリームを蓄積せず、蓄積状態「2」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「10000000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「10000000」の第1ビット〜第2ビット「10」と、記憶部111により記憶された符号語「10」が一致するので、復号化データ「b」及び符号長「2」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「2」が「8」未満なので、判定信号「0」を出力する。
判定部103は、ビットストリーム切出し部100により出力された蓄積状態「2」が、テーブル参照部101により出力された符号長「2」以上なので、判定信号「1」を出力する。
選択部104は、判定方法制御部105により出力された選択信号が「0」なので、判定部102により出力された判定信号「0」を選択する。
判定方法制御部105は、選択部104により選択された判定信号が「0」なので、次のサイクル(第6サイクル)で選択信号「1」を出力する。
ビットストリーム切出し部100は、選択部104により選択された判定信号が「0」なので、テーブル参照部101により出力された符号長「2」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
<第6サイクル>
第6サイクルにおいて、可変長符号復号化装置10に、ビットストリームは入力されない。
ビットストリーム切出し部100は、ビットストリームが入力されないので、ビットストリームを蓄積せず、蓄積状態「2」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「10000000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「10000000」の第1ビット〜第2ビット「10」と、記憶部111により記憶された符号語「10」が一致するので、復号化データ「b」及び符号長「2」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「2」が「8」未満なので、判定信号「0」を出力する。
判定部103は、ビットストリーム切出し部100により出力された蓄積状態「2」が、テーブル参照部101により出力された符号長「2」以上なので、判定信号「1」を出力する。
選択部104は、判定方法制御部105により出力された選択信号が「1」なので、判定部103により出力された判定信号「1」を選択する。
判定方法制御部105は、選択部104により選択された判定信号が「1」なので、次のサイクル(第7サイクル)で選択信号「0」を出力する。
ビットストリーム切出し部100は、選択部104により選択された判定信号が「1」なので、テーブル参照部101により出力された符号長「2」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。
以上のように、本実施の形態の可変長符号復号化装置10は、少なくともテーブル参照部101により出力された符号長分の未復号のビットストリームがビットストリーム切出し部100に蓄積されていれば、8ビット以上の未復号のビットストリームが蓄積されていなくても、ビットストリームを復号化することができる。これにより、8ビット以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が8ビット未満の場合でも、復号化を完了することができる。
図5は、可変長符号復号化装置10による具体的な動作を示す図である。以下、可変長符号復号化装置10により、ビットストリーム「11101110…」を復号化する動作を説明する。ここでは、一例として、ビットストリームは、2ビットずつビットストリーム切出し部100に入力されるとする。なお、図5に示すように、判定部102及び103の欄で示す下線付きの数字(判定信号)は、選択部104で選択される数字(判定信号)である。
<第1サイクル>
第1サイクルにおいて、可変長符号復号化装置10に、ビットストリーム「11101110…」の第1ビット〜第2ビット「11」が入力される。
ビットストリーム切出し部100は、入力されたビットストリーム「11」を蓄積し、蓄積状態「2」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「11000000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11000000」の第1ビット〜第3ビット「110」と、記憶部111により記憶された符号語「110」が一致するので、復号化データ「c」及び符号長「3」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「2」が「8」未満なので、判定信号「0」を出力する。
判定部103は、ビットストリーム切出し部100により出力された蓄積状態「2」が、テーブル参照部101により出力された符号長「3」未満なので、判定信号「0」を出力する。
選択部104は、判定方法制御部105により出力された選択信号が「0」(初期状態)なので、判定部102により出力された判定信号「0」を選択する。
判定方法制御部105は、選択部104により選択された判定信号が「0」なので、次のサイクル(第2サイクル)で選択信号「1」を出力する。
ビットストリーム切出し部100は、選択部104により選択された判定信号が「0」なので、テーブル参照部101により出力された符号長「3」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
<第2サイクル>
第2サイクルにおいて、可変長符号復号化装置10に、ビットストリーム「11101110…」の第3ビット〜第4ビット「10」が入力される。
ビットストリーム切出し部100は、入力されたビットストリーム「10」を蓄積し、蓄積状態「4」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「11100000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11100000」の第1ビット〜第4ビット「1110」と、記憶部111により記憶された符号語「1110」が一致するので、復号化データ「d」及び符号長「4」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「4」が「8」未満なので、判定信号「0」を出力する。
判定部103は、ビットストリーム切出し部100により出力された蓄積状態「4」が、テーブル参照部101により出力された符号長「4」以上なので、判定信号「1」を出力する。
選択部104は、判定方法制御部105により出力された選択信号が「1」なので、判定部103により出力された判定信号「1」を選択する。
判定方法制御部105は、選択部104により選択された判定信号が「1」なので、次のサイクル(第3サイクル)で選択信号「0」を出力する。
ビットストリーム切出し部100は、選択部104により選択された判定信号が「1」なので、テーブル参照部101により出力された符号長「4」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部100は、「1110」の次のビットを新たな先頭ビットとして決定する。
以上のように、本実施の形態の可変長符号復号化装置10は、少なくともテーブル参照部101により出力された符号長分の未復号のビットストリームがビットストリーム切出し部100に蓄積されていれば、8ビット以上の未復号のビットストリームが蓄積されていなくても、ビットストリームを復号化することができる。これにより、ビットストリーム終端の符号語の符号長が8ビット未満の場合でも、復号化を完了できることに加えて、さらに、符号長が8ビット未満の符号語を高速に復号化することができる。
なお、上記説明において、ビットストリーム切出し部100は、蓄積されている未復号のビットストリームの長さを蓄積状態として出力しているが、図6に示す出力形式1又は2で出力してもよい。具体的には、出力形式1では、蓄積されている未復号のビットストリームの長さが8ビット以上の場合に、蓄積状態「8」を出力する。また、出力形式2では、蓄積状態の長さは8ビットで、蓄積状態の各ビットはビットストリーム切出し部100により出力されたビット列の各ビットに対応し、当該ビット列の当該ビットが蓄積されているか否かを示す。
また、上記説明において、ビットストリーム切出し部100は、蓄積されている未復号のビットストリームの長さが8ビット未満の場合に、当該ビット列の終端に不足分の「0」を付加しているが、「0」以外の任意のデータを付加してもよい。
また、ビットストリーム切出し部100が出力するビット列の長さは、所定の固定長であってもよい。すなわち、ビットストリーム切出し部100は、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの先頭ビットから連続する固定長のビット列を出力してもよい。このとき、判定部102は、少なくとも固定長の未復号のビットストリームが、ビットストリーム切出し部100に蓄積されているか否かを判定する。
また、判定方法制御部105は、サイクル毎に判定部102及び103の選択を交互に切り換えるように選択部104を制御してもよい。
また、上記説明において、記憶部111は、最大符号長が8ビットの可変長符号テーブルを記憶しているが、8ビット以外の任意の最大符号長の可変長符号テーブルを記憶してもよい。
(実施の形態2)
まず、本実施の形態の可変長符号復号化装置の構成を説明する。
図7は、本実施の形態の可変長符号復号化装置20の構成を示すブロック図である。なお、図1と同様の要素には同一の符号を付しており、説明を省略する。
図7に示す可変長符号復号化装置20は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置20は、ビットストリーム切出し部100と、テーブル参照部101と、判定部102及び203と、選択部204と、ビットストリーム終端検出部206とを備える。可変長符号復号化装置20は、実施の形態1の可変長符号復号化装置10に対して、判定方法制御部105が削除され、判定部103の代わりに判定部203を備え、選択部104の代わりに選択部204を備え、さらに、新たにビットストリーム終端検出部206を備える点が異なる。
判定部203は、少なくとも第1の長さより短い第2の長さの未復号のビットストリームがビットストリーム切出し部100に蓄積されているか否かを判定する。ここでは、判定部203は、少なくとも1ビット分の未復号のビットストリームがビットストリーム切出し部100に蓄積されているか否かを判定する。具体的には、ビットストリーム切出し部100により出力された蓄積状態が「1」以上の場合に、判定部203は、判定信号「1」を出力する。また、ビットストリーム切出し部100により出力された蓄積状態が「1」未満の場合に、判定部203は、判定信号「0」を出力する。
選択部204は、ビットストリーム終端検出部206によりビットストリームの終端が検出された場合、判定部203の判定結果を選択する。ここでは、ビットストリーム終端検出部206により出力された終端検出信号に応じて、選択部204は、判定部102により出力された判定信号と、判定部203により出力された判定信号とのいずれかを選択する。具体的には、ビットストリーム終端検出部206により出力された終端検出信号が「0」の場合に、選択部204は、判定部102により出力された判定信号を選択する。また、ビットストリーム終端検出部206により出力された終端検出信号が「1」の場合に、選択部204は、判定部203により出力された判定信号を選択する。
ビットストリーム終端検出部206は、入力されるビットストリームの終端を検出する。具体的には、ビットストリーム終端検出部206は、ビットストリームの終端であることを示す符号語を検出する、又は、ヘッダ情報を解析することで、ビットストリームの終端を検出する。なお、ビットストリーム終端検出部206は、ビットストリームの終端を検出するまで、終端検出信号「0」を出力し続ける。ビットストリームの終端を検出した後は、終端検出信号「1」を出力する。
ビットストリーム切出し部100は、選択部204により選択された判定信号が「1」の場合に、参照部112により出力された符号長が有効であると判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、ビット列を切出し出力する。具体的には、ビットストリーム切出し部100は、バッファ121に蓄積されている未復号のビットストリームの先頭ビットから当該符号長+1番目のビットを新たな先頭ビットとして決定する。つまり、新たな先頭ビットより前のビットストリームは、復号済みのビットストリームであり、新たな先頭ビット以降のビットストリームが、新たな未復号のビットストリームである。また、選択部204により選択された判定信号が「0」の場合に、ビットストリーム切出し部100は、参照部112により出力された符号長が無効であると判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
以上のように、判定部203は、少なくとも1ビット分の未復号のビットストリームがビットストリーム切出し部100に蓄積されている場合に、テーブル参照部101により出力された符号長及び復号化データを有効と判定する(判定信号「1」を出力する)。本実施の形態の可変長符号復号化装置20は、判定部203を備えることで、少なくとも1ビット分の未復号のビットストリームがビットストリーム切出し部100に蓄積されている場合は、ビットストリームの復号化を実行することができる。
ただし、判定部203による判定は、ビットストリームの終端が判明している場合でないと信用性に欠けるために、ビットストリームの終端が検出されるまでは、判定部102による判定が実行される。すなわち、選択部204は、ビットストリーム終端検出部206でビットストリームの終端が検出されるまでは、判定部102を選択する。ビットストリーム終端検出部206でビットストリームの終端が検出された後は、判定部203を選択する。
これにより、ビットストリームの終端が検出された場合に、判定部102から判定部203に切り換えることで、最大符号長以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が最大符号長未満の場合でも、復号化を完了することができる。
次に、本実施の形態の可変長符号復号化装置20の動作を説明する。
図8は、可変長符号復号化装置20による具体的な動作を示す図である。以下、可変長符号復号化装置20により、ビットストリーム「11111110111010」を復号化する動作を説明する。ここでは、一例として、ビットストリームは、4ビットずつビットストリーム切出し部100及びビットストリーム終端検出部206に入力されるとする。なお、図8に示すように、判定部102及び203の欄で示す下線付きの数字(判定信号)は、選択部204で選択される数字(判定信号)である。
<第1サイクル>
第1サイクルにおいて、可変長符号復号化装置20に、ビットストリーム「11111110111010」の第1ビット〜第4ビット「1111」が入力される。
ビットストリーム終端検出部206は、ビットストリームの終端を検出しないので、終端検出信号「0」を出力する。
ビットストリーム切出し部100は、入力されたビットストリーム「1111」を蓄積し、蓄積状態「4」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「11110000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11110000」の第1ビット〜第5ビット「11110」と、記憶部111により記憶された符号語「11110」が一致するので、復号化データ「e」及び符号長「5」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「4」が「8」未満なので、判定信号「0」を出力する。
判定部203は、ビットストリーム切出し部100により出力された蓄積状態「4」が「1」以上なので、判定信号「1」を出力する。
選択部204は、ビットストリーム終端検出部206により出力された終端検出信号が「0」なので、判定部102により出力された判定信号「0」を選択する。
ビットストリーム切出し部100は、選択部204により選択された判定信号が「0」なので、テーブル参照部101により出力された符号長「5」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
<第2サイクル>
第2サイクルにおいて、可変長符号復号化装置20に、ビットストリーム「11111110111010」の第5ビット〜第8ビット「1110」が入力される。
ビットストリーム終端検出部206は、ビットストリームの終端を検出しないので、終端検出信号「0」を出力する。
ビットストリーム切出し部100は、入力されたビットストリーム「1110」を蓄積し、蓄積状態「8」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット以上なので、ビットストリーム切出し部100は、当該ビットストリームの先頭ビットから8ビット分のビット列を切出し、ビット列「11111110」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11111110」と、記憶部111により記憶された符号語「11111110」が一致するので、復号化データ「h」及び符号長「8」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「8」が「8」以上なので、判定信号「1」を出力する。
判定部203は、ビットストリーム切出し部100により出力された蓄積状態「8」が「1」以上なので、判定信号「1」を出力する。
選択部204は、ビットストリーム終端検出部206により出力された終端検出信号が「0」なので、判定部102により出力された判定信号「1」を選択する。
ビットストリーム切出し部100は、選択部204により選択された判定信号が「1」なので、テーブル参照部101により出力された符号長「8」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部100は、「11111110」の次のビットを新たな先頭ビットとして決定する。
<第3サイクル>
第3サイクルにおいて、可変長符号復号化装置20に、ビットストリーム「11111110111010」の第9ビット〜第12ビット「1110」が入力される。
ビットストリーム終端検出部206は、ビットストリームの終端を検出しないので、終端検出信号「0」を出力する。
ビットストリーム切出し部100は、入力されたビットストリーム「1110」を蓄積し、蓄積状態「4」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「11100000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11100000」の第1ビット〜第4ビット「1110」と、記憶部111により記憶された符号語「1110」が一致するので、復号化データ「d」及び符号長「4」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「4」が「8」未満なので、判定信号「0」を出力する。
判定部203は、ビットストリーム切出し部100により出力された蓄積状態「4」が「1」以上なので、判定信号「1」を出力する。
選択部204は、ビットストリーム終端検出部206により出力された終端検出信号が「0」なので、判定部102により出力された判定信号「0」を選択する。
ビットストリーム切出し部100は、選択部204により選択された判定信号が「0」なので、テーブル参照部101により出力された符号長「4」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
<第4サイクル>
第4サイクルにおいて、可変長符号復号化装置20に、ビットストリーム「11111110111010」の第13ビット〜第14ビット「10」が入力される。
ビットストリーム終端検出部206は、ビットストリームの終端を検出するので、終端検出信号「1」を出力する。
ビットストリーム切出し部100は、入力されたビットストリーム「10」を蓄積し、蓄積状態「6」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「11101000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11101000」の第1ビット〜第4ビット「1110」と、記憶部111により記憶された符号語「1110」が一致するので、復号化データ「d」及び符号長「4」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「6」が「8」未満なので、判定信号「0」を出力する。
判定部203は、ビットストリーム切出し部100により出力された蓄積状態「6」が「1」以上なので、判定信号「1」を出力する。
選択部204は、ビットストリーム終端検出部206により出力された終端検出信号が「1」なので、判定部203により出力された判定信号「1」を選択する。
ビットストリーム切出し部100は、選択部204により選択された判定信号が「1」なので、テーブル参照部101により出力された符号長「4」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部100は、「1110」の次のビット「1」を新たな先頭ビットとして決定する。
<第5サイクル>
第5サイクルにおいて、可変長符号復号化装置20に、ビットストリームは入力されない。
ビットストリーム終端検出部206は、第4サイクルでビットストリームの終端を検出したので、終端検出信号「1」を出力する。
ビットストリーム切出し部100は、ビットストリームが入力されないので、ビットストリームを蓄積せず、蓄積状態「2」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「10000000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「10000000」の第1ビット〜第2ビット「10」と、記憶部111により記憶された符号語「10」が一致するので、復号化データ「b」及び符号長「2」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「2」が「8」未満なので、判定信号「0」を出力する。
判定部203は、ビットストリーム切出し部100により出力された蓄積状態「2」が「1」以上なので、判定信号「1」を出力する。
選択部204は、ビットストリーム終端検出部206により出力された終端検出信号が「1」なので、判定部203により出力された判定信号「1」を選択する。
ビットストリーム切出し部100は、選択部204により出力された判定信号が「1」なので、テーブル参照部101により出力された符号長「2」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。
以上のように、本実施の形態の可変長符号復号化装置20は、ビットストリーム終端検出部206によりビットストリームの終端が検出された場合に、少なくとも1ビット分の未復号のビットストリームがビットストリーム切出し部100に蓄積されていれば、8ビット以上の未復号のビットストリームが蓄積されていなくても、ビットストリームを復号化することができる。これにより、8ビット以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が8ビット未満の場合でも、復号化を完了することができる。
(実施の形態3)
まず、本実施の形態の可変長符号復号化装置の構成を説明する。
図9は、本実施の形態の可変長符号復号化装置30の構成を示すブロック図である。なお、図1と同様の要素には同一の符号を付しており、説明を省略する。
図9に示す可変長符号復号化装置30は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置30は、ビットストリーム切出し部100と、テーブル参照部101と、判定部102及び303と、選択部304とを備える。可変長符号復号化装置30は、実施の形態1の可変長符号復号化装置10に対して、判定方法制御部105が削除され、判定部103の代わりに判定部303を備え、選択部104の代わりに選択部304を備える点が異なる。なお、本実施の形態では、符号語「10」が、ビットストリームの終端であることを示す符号語であるとする。
判定部303は、ビットストリーム切出し部100により出力されたビット列にビットストリームの終端であることを示す符号語が含まれ、かつ、少なくとも未復号のビットストリームの先頭ビットから当該符号語の終端までの長さ分の未復号のビットストリームがビットストリーム切出し部100に蓄積されているか否かを判定する。
具体的には、ビットストリーム切出し部100により出力されたビット列を逐次復号化することで、符号語「10」が復号化され、かつ、ビットストリーム切出し部100により出力された蓄積状態が、当該ビット列の先頭ビットから復号化された符号語「10」の終端までの長さ以上の場合に、判定部303は、判定信号「1」を出力する。また、ビットストリーム切出し部100により出力されたビット列を逐次復号化することで、符号語「10」が復号化され、かつ、ビットストリーム切出し部100により出力された蓄積状態が、当該ビット列の先頭ビットから復号化された符号語「10」の終端までの長さ未満の場合に、判定部303は、判定信号「0」を出力する。また、ビットストリーム切出し部100により出力されたビット列を逐次復号化することで、符号語「10」が復号化されない場合は、判定部303は、判定信号「0」を出力する。
選択部304は、判定部303により出力された判定信号に応じて、判定部103により出力された判定信号と、判定部303により出力された判定信号とのいずれかを選択する。具体的には、判定部303により出力された判定信号が「0」の場合に、選択部304は、判定部103により出力された判定信号を選択する。また、判定部303により出力された判定信号が「1」の場合に、選択部304は、判定部303により出力された判定信号を選択する。
ビットストリーム切出し部100は、選択部304により選択された判定信号が「1」の場合に、参照部112により出力された符号長が有効であると判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、ビット列を切出し出力する。具体的には、ビットストリーム切出し部100は、バッファ121に蓄積されている未復号のビットストリームの先頭ビットから当該符号長+1番目のビットを新たな先頭ビットとして決定する。つまり、新たな先頭ビットより前のビットストリームは、復号済みのビットストリームであり、新たな先頭ビット以降のビットストリームが、新たな未復号のビットストリームである。また、選択部304により選択された判定信号が「0」の場合に、ビットストリーム切出し部100は、参照部112により出力された符号長が無効であると判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
以上のように、判定部303は、ビットストリーム切出し部100により出力されたビット列にビットストリームの終端であることを示す符号語が含まれ、かつ、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが、未復号のビットストリームの先頭ビットから当該符号語までの長さ以上である場合に、テーブル参照部101により出力された符号長及び復号化データを有効と判定する(判定信号「1」を出力する)。そして、選択部304は、判定部303において有効であると判定された場合は、判定部303の判定結果を選択する。
これにより、実施の形態2と同様に、ビットストリームの終端が検出された場合に、判定部102から判定部303に切り換えることで、最大符号長以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が最大符号長未満の場合でも、復号化を完了することができる。
次に、本実施の形態の可変長符号復号化装置30の動作を説明する。
図10は、可変長符号復号化装置30による具体的な動作を示す図である。以下、可変長符号復号化装置30により、ビットストリーム「11111110111010」を復号化する動作を説明する。ここでは、一例として、ビットストリームは、4ビットずつビットストリーム切出し部100に入力されるとする。なお、図10に示すように、判定部102及び303の欄で示す下線付きの数字(判定信号)は、選択部304で選択される数字(判定信号)である。
<第1サイクル>
第1サイクルにおいて、可変長符号復号化装置30に、ビットストリーム「11111110111010」の第1ビット〜第4ビット「1111」が入力される。
ビットストリーム切出し部100は、入力されたビットストリーム「1111」を蓄積し、蓄積状態「4」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「11110000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11110000」の第1ビット〜第5ビット「11110」と、記憶部111により記憶された符号語「11110」が一致するので、復号化データ「e」及び符号長「5」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「4」が「8」未満なので、判定信号「0」を出力する。
判定部303は、ビットストリーム切出し部100により出力されたビット列「11110000」を逐次復号化することで、符号語「10」が復号化されないので、判定信号「0」を出力する。
選択部304は、判定部303により出力された判定信号が「0」なので、判定部102により出力された判定信号「0」を選択する。
ビットストリーム切出し部100は、選択部304により選択された判定信号が「0」なので、テーブル参照部101により出力された符号長「5」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
<第2サイクル>
第2サイクルにおいて、可変長符号復号化装置30に、ビットストリーム「11111110111010」の第5ビット〜第8ビット「1110」が入力される。
ビットストリーム切出し部100は、入力されたビットストリーム「1110」を蓄積し、蓄積状態「8」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット以上なので、ビットストリーム切出し部100は、当該ビットストリームの先頭ビットから8ビット分のビット列を切出し、ビット列「11111110」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11111110」と、記憶部111により記憶された符号語「11111110」が一致するので、復号化データ「h」及び符号長「8」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「8」が「8」以上なので、判定信号「1」を出力する。
判定部303は、ビットストリーム切出し部100により出力されたビット列「11111110」を逐次復号化することで、符号語「10」が復号化されないので、判定信号「0」を出力する。
選択部304は、判定部303により出力された判定信号が「0」なので、判定部102により出力された判定信号「1」を選択する。
ビットストリーム切出し部100は、選択部304により選択された判定信号が「1」なので、テーブル参照部101により出力された符号長「8」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部100は、「11111110」の次のビットを新たな先頭ビットとして決定する。
<第3サイクル>
第3サイクルにおいて、可変長符号復号化装置30に、ビットストリーム「11111110111010」の第9ビット〜第12ビット「1110」が入力される。
ビットストリーム切出し部100は、入力されたビットストリーム「1110」を蓄積し、蓄積状態「4」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「11100000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11100000」の第1ビット〜第4ビット「1110」と、記憶部111により記憶された符号語「1110」が一致するので、復号化データ「d」及び符号長「4」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「4」が「8」未満なので、判定信号「0」を出力する。
判定部303は、ビットストリーム切出し部100により出力されたビット列「11100000」を逐次復号化することで、符号語「10」が復号化されないので、判定信号「0」を出力する。
選択部304は、判定部303により出力された判定信号が「0」なので、判定部102により出力された判定信号「0」を選択する。
ビットストリーム切出し部100は、選択部304により選択された判定信号が「0」なので、テーブル参照部101により出力された符号長「4」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
<第4サイクル>
第4サイクルにおいて、可変長符号復号化装置30に、ビットストリーム「11111110111010」の第13ビット〜第14ビット「10」が入力される。
ビットストリーム切出し部100は、入力されたビットストリーム「10」を蓄積し、蓄積状態「6」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「11101000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11101000」の第1ビット〜第4ビット「1110」と、記憶部111により記憶された符号語「1110」が一致するので、復号化データ「d」及び符号長「4」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「6」が「8」未満なので、判定信号「0」を出力する。
判定部303は、ビットストリーム切出し部100により出力されたビット列「11101000」を逐次復号化することで、符号語「10」が復号化され、かつ、ビットストリーム切出し部100により出力された蓄積状態「6」が、当該ビット列の先頭ビットから復号化された符号語「10」の終端までの長さ「6」以上なので、判定信号「1」を出力する。
選択部304は、判定部303により出力された判定信号が「1」なので、判定部303により出力された判定信号「1」を選択する。
ビットストリーム切出し部100は、選択部304により選択された判定信号が「1」なので、テーブル参照部101により出力された符号長「4」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部100は、「1110」の次のビット「1」を新たな先頭ビットとして決定する。
<第5サイクル>
第5サイクルにおいて、可変長符号復号化装置30に、ビットストリームは入力されない。
ビットストリーム切出し部100は、ビットストリームが入力されないので、ビットストリームを蓄積せず、蓄積状態「2」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「10000000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「10000000」の第1ビット〜第2ビット「10」と、記憶部111により記憶された符号語「10」が一致するので、復号化データ「b」及び符号長「2」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「2」が「8」未満なので、判定信号「0」を出力する。
判定部303は、ビットストリーム切出し部100により出力されたビット列「10000000」を逐次復号化することで、符号語「10」が復号化され、かつ、ビットストリーム切出し部100により出力された蓄積状態「2」が、当該ビット列の先頭ビットから復号化された符号語「10」の終端までの長さ「2」以上なので、判定信号「1」を出力する。
選択部304は、判定部303により出力された判定信号が「1」なので、判定部303により出力された判定信号「1」を選択する。
ビットストリーム切出し部100は、選択部304により選択された判定信号が「1」なので、テーブル参照部101により出力された符号長「2」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。
以上のように、本実施の形態の可変長符号復号化装置30は、ビットストリーム切出し部100により出力されたビット列にビットストリームの終端であることを示す符号語「10」が含まれ、かつ、少なくとも未復号のビットストリームの先頭ビットから当該符号語の終端までの長さ分の未復号のビットストリームがビットストリーム切出し部100に蓄積されていれば、8ビット以上の未復号のビットストリームが蓄積されていなくても、ビットストリームを復号化することができる。これにより、8ビット以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が8ビット未満の場合でも、復号化を完了することができる。
(実施の形態4)
まず、本実施の形態の可変長符号復号化装置の構成を説明する。
図11は、本実施の形態の可変長符号復号化装置の構成を示すブロック図である。なお、図1と同様の要素には同一の符号を付しており、説明を省略する。
図11に示す可変長符号復号化装置40は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置40は、ビットストリーム切出し部100と、テーブル参照部101と、判定部102と、ビットストリーム終端検出部206と、データ付加部407とを備える。可変長符号復号化装置40は、実施の形態1の可変長符号復号化装置10に対して、判定部103と選択部104と判定方法制御部105とが削除され、さらに、新たにビットストリーム終端検出部206とデータ付加部407とを備える点が異なる。
ビットストリーム終端検出部206は、実施の形態2で示すビットストリーム終端検出部206と同じである。
データ付加部407は、ビットストリーム終端検出部206によりビットストリームの終端が検出された場合に、ビットストリームの終端にデータを付加する。具体的には、ビットストリーム終端検出部206により出力された終端検出信号が「1」の場合に、データ付加部407は、入力されたビットストリームの終端に7ビットの「0」を付加し出力する。また、ビットストリーム終端検出部206により出力された終端検出信号が「0」の場合に、データ付加部407は、入力されたビットストリームをそのまま出力する。また、ビットストリームが入力されない場合は、何も出力しない。
以上のように、本実施の形態の可変長符号復号化装置40は、実施の形態1〜3とは異なり、1つの判定部(判定部102)しか備えていない。判定部102は、上述したように、ビットストリーム切出し部100に蓄積されるビットストリームの符号長が最大符号長以上であるか否かを判定する。すなわち、ビットストリーム切出し部100に蓄積されるビットストリームの符号長が最大符号長未満である場合であっても、ビットストリームの復号化を行うために、終端が検出された場合にはデータ付加部407がビットストリームの終端にデータを付加する。
これにより、ビットストリーム終端の符号語を蓄積する場合に、蓄積される未復号のビットストリームの長さを必ず最大符号長以上にすることができる。よって、最大符号長以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が最大符号長未満の場合でも、復号化を完了することができる。
次に、本実施の形態の可変長符号復号化装置40の動作を説明する。
図12は、可変長符号復号化装置40による具体的な動作を示す図である。以下、可変長符号復号化装置40により、ビットストリーム「11111110111010」を復号化する動作を説明する。ここでは、一例として、ビットストリームは、4ビットずつビットストリーム終端検出部206及びデータ付加部407に入力されるとする。
<第1サイクル>
第1サイクルにおいて、可変長符号復号化装置40に、ビットストリーム「11111110111010」の第1ビット〜第4ビット「1111」が入力される。
ビットストリーム終端検出部206は、ビットストリームの終端を検出しないので、終端検出信号「0」を出力する。
データ付加部407は、ビットストリーム終端検出部206により出力された終端検出信号が「0」なので、入力されたビットストリーム「1111」をそのまま出力する。
ビットストリーム切出し部100は、データ付加部407により出力されたビットストリーム「1111」を蓄積し、蓄積状態「4」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「11110000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11110000」の第1ビット〜第5ビット「11110」と、記憶部111により記憶された符号語「11110」が一致するので、復号化データ「e」及び符号長「5」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「4」が「8」未満なので、判定信号「0」を出力する。
ビットストリーム切出し部100は、判定部102により出力された判定信号が「0」なので、テーブル参照部101により出力された符号長「5」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
<第2サイクル>
第2サイクルにおいて、可変長符号復号化装置40に、ビットストリーム「11111110111010」の第5ビット〜第8ビット「1110」が入力される。
ビットストリーム終端検出部206は、ビットストリームの終端を検出しないので、終端検出信号「0」を出力する。
データ付加部407は、ビットストリーム終端検出部206により出力された終端検出信号が「0」なので、入力されたビットストリーム「1110」をそのまま出力する。
ビットストリーム切出し部100は、データ付加部407により出力されたビットストリーム「1110」を蓄積し、蓄積状態「8」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット以上なので、ビットストリーム切出し部100は、当該ビットストリームの先頭ビットから8ビット分のビット列を切出し、ビット列「11111110」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11111110」と、記憶部111により記憶された符号語「11111110」が一致するので、復号化データ「h」及び符号長「8」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「8」が「8」以上なので、判定信号「1」を出力する。
ビットストリーム切出し部100は、判定部102により出力された判定信号が「1」なので、テーブル参照部101により出力された符号長「8」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部100は、「11111110」の次のビットを新たな先頭ビットとして決定する。
<第3サイクル>
第3サイクルにおいて、可変長符号復号化装置40に、ビットストリーム「11111110111010」の第9ビット〜第12ビット「1110」が入力される。
ビットストリーム終端検出部206は、ビットストリームの終端を検出しないので、終端検出信号「0」を出力する。
データ付加部407は、ビットストリーム終端検出部206により出力された終端検出信号が「0」なので、入力されたビットストリーム「1110」をそのまま出力する。
ビットストリーム切出し部100は、データ付加部407により出力されたビットストリーム「1110」を蓄積し、蓄積状態「4」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「11100000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11100000」の第1ビット〜第4ビット「1110」と、記憶部111により記憶された符号語「1110」が一致するので、復号化データ「d」及び符号長「4」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「4」が「8」未満なので、判定信号「0」を出力する。
ビットストリーム切出し部100は、判定部102により出力された判定信号が「0」なので、テーブル参照部101により出力された符号長「4」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
<第4サイクル>
第4サイクルにおいて、可変長符号復号化装置40に、ビットストリーム「11111110111010」の第13ビット〜第14ビット「10」が入力される。
ビットストリーム終端検出部206は、ビットストリームの終端を検出するので、終端検出信号「1」を出力する。
データ付加部407は、ビットストリーム終端検出部206により出力された終端検出信号が「1」なので、入力されたビットストリーム「10」の終端に7ビットの「0」を付加し、ビットストリーム「100000000」を出力する。
ビットストリーム切出し部100は、データ付加部407により出力されたビットストリーム「100000000」を蓄積し、蓄積状態「13」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット以上なので、ビットストリーム切出し部100は、当該ビットストリームの先頭ビットから8ビット分のビット列を切出し、ビット列「11101000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11101000」の第1ビット〜第4ビット「1110」と、記憶部111により記憶された符号語「1110」が一致するので、復号化データ「d」及び符号長「4」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「13」が「8」以上なので、判定信号「1」を出力する。
ビットストリーム切出し部100は、判定部102により出力された判定信号が「1」なので、テーブル参照部101により出力された符号長「4」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部100は、「1110」の次のビット「1」を新たな先頭ビットとして決定する。
<第5サイクル>
第5サイクルにおいて、可変長符号復号化装置40に、ビットストリームは入力されない。
ビットストリーム終端検出部206は、第4サイクルでビットストリームの終端を検出したので、終端検出信号「1」を出力する。
データ付加部407は、ビットストリームが入力されないので、何も出力しない。
ビットストリーム切出し部100は、データ付加部407によりビットストリームが出力されないので、ビットストリームを蓄積せず、蓄積状態「9」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット以上なので、ビットストリーム切出し部100は、当該ビットストリームの先頭ビットから8ビット分のビット列を切出し、ビット列「10000000」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「10000000」の第1ビット〜第2ビット「10」と、記憶部111により記憶された符号語「10」が一致するので、復号化データ「b」及び符号長「2」を出力する。
判定部102は、ビットストリーム切出し部100により出力された蓄積状態「9」が「8」以上なので、判定信号「1」を出力する。
ビットストリーム切出し部100は、判定部102により出力された判定信号が「1」なので、テーブル参照部101により出力された符号長「2」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。
以上のように、本実施の形態の可変長符号復号化装置40は、ビットストリーム終端の符号語をビットストリーム切出し部100に蓄積する場合に、データ付加部407によりビットストリームの終端に7ビットの「0」を付加することで、8ビット以上の未復号のビットストリームを蓄積することができる。これにより、8ビット以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が8ビット未満の場合でも、復号化を完了することができる。
なお、上記説明において、データ付加部407は、ビットストリーム終端検出部206により出力された終端検出信号が「1」の場合に、入力されたビットストリームの終端に7ビットの「0」を付加しているが、「0」以外の任意のデータを付加してもよい。
また、ビットストリーム切出し部100が出力するビット列の長さは、所定の固定長であってもよい。すなわち、ビットストリーム切出し部100は、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの先頭ビットから連続する固定長のビット列を出力してもよい。このとき、判定部102は、少なくとも固定長の未復号のビットストリームが、ビットストリーム切出し部100に蓄積されているか否かを判定する。また、データ付加部407は、少なくとも固定長より1ビット短い長さのデータをビットストリームの終端に付加する。
(実施の形態5)
まず、本実施の形態の可変長符号復号化装置の構成を説明する。
図13は、本実施の形態の可変長符号復号化装置50の構成を示すブロック図である。なお、図11と同様の要素には同一の符号を付しており、説明を省略する。
図13に示す可変長符号復号化装置50は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置50は、ビットストリーム終端検出部206と、データ付加部407と、ビットストリーム切出し部100と、テーブル参照部101及び501と、判定部502と、選択部508及び509と、テーブル制御部510とを備える。可変長符号復号化装置50は、実施の形態4の可変長符号復号化装置40に対して、判定部102の代わりに判定部502を備え、さらに、新たにテーブル参照部501と、選択部508及び509と、テーブル制御部510とを備える点が異なる。
判定部502は、少なくともテーブル制御部510により出力された最大符号長分の未復号のビットストリームがビットストリーム切出し部100に蓄積されているか否かを判定する。具体的には、ビットストリーム切出し部100により出力された蓄積状態が、テーブル制御部510により出力された最大符号長以上の場合に、判定部502は、判定信号「1」を出力する。また、ビットストリーム切出し部100により出力された蓄積状態が、テーブル制御部510により出力された最大符号長未満の場合に、判定部502は、判定信号「0」を出力する。
テーブル参照部501は、記憶部511と、参照部512とを備える。記憶部511は、記憶部111とは異なる種類の可変長符号テーブル513を記憶するメモリである。図14は、記憶部511に記憶される可変長符号テーブル513の一例を示す図である。なお、記憶部511に記憶される可変長符号テーブル513は、最大符号長が4ビットの可変長符号テーブルである。
選択部508は、テーブル制御部510により出力された選択信号に応じて、テーブル参照部101により出力された復号化データと、テーブル参照部501により出力された復号化データとのいずれかを選択する。具体的には、テーブル制御部510により出力された選択信号が「0」の場合に、選択部508は、テーブル参照部101により出力された復号化データを選択する。また、テーブル制御部510により出力された選択信号が「1」の場合に、選択部508は、テーブル参照部501により出力された復号化データを選択する。
選択部509は、テーブル制御部510により出力された選択信号に応じて、テーブル参照部101により出力された符号長と、テーブル参照部501により出力された符号長とのいずれかを選択する。具体的には、テーブル制御部510により出力された選択信号が「0」の場合に、選択部509は、テーブル参照部101により出力された符号長を選択する。また、テーブル制御部510により出力された選択信号が「1」の場合に、選択部509は、テーブル参照部501により出力された符号長を選択する。
テーブル制御部510は、テーブル参照部101により出力された復号化データ及び符号長と、テーブル参照部501により出力された復号化データ及び符号長とのいずれかを選択するための選択信号を出力する。具体的には、選択信号「0」を出力し、かつ、判定部502により出力された判定信号が「1」の場合に、テーブル制御部510は、次のサイクルで選択信号「1」を出力する。また、選択信号「1」を出力し、かつ、判定部502により出力された判定信号が「1」の場合に、テーブル制御部510は、次のサイクルで選択信号「0」を出力する。また、判定部502により出力された判定信号が「0」の場合は、次のサイクルで選択信号を更新しない。なお、初期状態では、選択信号「0」を出力する。
また、テーブル制御部510は、出力する選択信号に応じて、記憶部111により記憶された可変長符号テーブル113に含まれる符号語の最大符号長と、記憶部511により記憶された可変長符号テーブル513に含まれる符号語の最大符号長とのいずれかを出力する。具体的には、選択信号「0」を出力する場合に、テーブル制御部510は、最大符号長「8」を出力する。また、選択信号「1」を出力する場合に、テーブル制御部510は、最大符号長「4」を出力する。なお、初期状態では、選択信号「0」を出力するので、最大符号長「8」を出力する。
ビットストリーム切出し部100は、判定部502により出力された判定信号が「1」の場合に、選択部509により選択された符号長が有効であると判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、ビット列を切出し出力する。具体的には、ビットストリーム切出し部100は、バッファ121に蓄積されている未復号のビットストリームの先頭ビットから当該符号長+1番目のビットを新たな先頭ビットとして決定する。つまり、新たな先頭ビットより前のビットストリームは、復号済みのビットストリームであり、新たな先頭ビット以降のビットストリームが、新たな未復号のビットストリームである。
また、判定部502により出力された判定信号が「0」の場合に、ビットストリーム切出し部100は、選択部509により選択された符号長が無効であると判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
これにより、判定部502で用いられる閾値を適宜切替えることで、複数の記憶部のうち、記憶部に記憶された最大符号長の短い可変長符号テーブルに含まれる符号語を高速に復号化することができる。
次に、本実施の形態の可変長符号復号化装置50の動作を説明する。
図15は、可変長符号復号化装置50による具体的な動作を示す図である。以下、可変長符号復号化装置50により、ビットストリーム「11111110000111111110…」を復号化する動作を説明する。ここでは、一例として、ビットストリームは、4ビットずつビットストリーム終端検出部206及びデータ付加部407に入力されるとする。なお、図15に示すように、テーブル参照部101及びテーブル参照部501の欄で示す下線付きの文字(復号化データ)及び数字(符号長)はそれぞれ、選択部508及び509で選択される文字(復号化データ)及び数字(符号長)である。
<第1サイクル>
第1サイクルにおいて、可変長符号復号化装置50に、ビットストリーム「11111110000111111110…」の第1ビット〜第4ビット「1111」が入力される。
ビットストリーム終端検出部206は、ビットストリームの終端を検出しないので、終端検出信号「0」を出力する。
データ付加部407は、ビットストリーム終端検出部206により出力された終端検出信号が「0」なので、入力されたビットストリーム「1111」をそのまま出力する。
ビットストリーム切出し部100は、データ付加部407により出力されたビットストリーム「1111」を蓄積し、蓄積状態「4」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「11110000」を出力する。
判定部502は、ビットストリーム切出し部100により出力された蓄積状態「4」がテーブル制御部510により出力された最大符号長「8」未満なので(初期状態)、判定信号「0」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11110000」の第1ビット〜第5ビット「11110」と、記憶部111により記憶された符号語「11110」が一致するので、復号化データ「e」及び符号長「5」を出力する。
テーブル参照部501は、ビットストリーム切出し部100により出力されたビット列「11110000」の第1ビット「1」と、記憶部511により記憶された符号語「1」が一致するので、復号化データ「i」及び符号長「1」を出力する。
選択部508及び509は、テーブル制御部510により出力された選択信号が「0」なので(初期状態)、テーブル参照部101により出力された復号化データ「e」及び符号長「5」を選択する。
テーブル制御部510は、判定部502により出力された判定信号が「0」なので、次のサイクル(第2サイクル)で選択信号を更新せず、選択信号「0」及び最大符号長「8」を出力する。
ビットストリーム切出し部100は、判定部502により出力された判定信号が「0」なので、選択部509により選択された符号長「5」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
<第2サイクル>
第2サイクルにおいて、可変長符号復号化装置50に、ビットストリーム「11111110000111111110…」の第5ビット〜第8ビット「1110」が入力される。
ビットストリーム終端検出部206は、ビットストリームの終端を検出しないので、終端検出信号「0」を出力する。
データ付加部407は、ビットストリーム終端検出部206により出力された終端検出信号が「0」なので、入力されたビットストリーム「1110」をそのまま出力する。
ビットストリーム切出し部100は、データ付加部407により出力されたビットストリーム「1110」を蓄積し、蓄積状態「8」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット以上なので、ビットストリーム切出し部100は、当該ビットストリームの先頭ビットから8ビット分のビット列を切出し、ビット列「11111110」を出力する。
判定部502は、ビットストリーム切出し部100により出力された蓄積状態「8」がテーブル制御部510により出力された最大符号長「8」以上なので、判定信号「1」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「11111110」と、記憶部111により記憶された符号語「11111110」が一致するので、復号化データ「h」及び符号長「8」を出力する。
テーブル参照部501は、ビットストリーム切出し部100により出力されたビット列「11111110」の第1ビット「1」と、記憶部511により記憶された符号語「1」が一致するので、復号化データ「i」及び符号長「1」を出力する。
選択部508及び509は、テーブル制御部510により出力された選択信号が「0」なので、テーブル参照部101により出力された復号化データ「h」及び符号長「8」を選択する。
テーブル制御部510は、選択信号「0」を出力し、かつ、判定部502により出力された判定信号が「1」なので、次のサイクル(第3サイクル)で選択信号「1」及び最大符号長「4」を出力する。
ビットストリーム切出し部100は、判定部502により出力された判定信号が「1」なので、選択部509により選択された符号長「8」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部100は、「11111110」の次のビットを新たな先頭ビットとして決定する。
<第3サイクル>
第3サイクルにおいて、可変長符号復号化装置50に、ビットストリーム「11111110000111111110…」の第9ビット〜第12ビット「0001」が入力される。
ビットストリーム終端検出部206は、ビットストリームの終端を検出しないので、終端検出信号「0」を出力する。
データ付加部407は、ビットストリーム終端検出部206により出力された終端検出信号が「0」なので、入力されたビットストリーム「0001」をそのまま出力する。
ビットストリーム切出し部100は、データ付加部407により出力されたビットストリーム「0001」を蓄積し、蓄積状態「4」を出力する。また、ビットストリーム切出し部100に蓄積されている未復号のビットストリームの長さが8ビット未満なので、ビットストリーム切出し部100は、当該ビット列の終端に不足分の「0」を付加し、ビット列「00010000」を出力する。
判定部502は、ビットストリーム切出し部100により出力された蓄積状態「4」がテーブル制御部510により出力された最大符号長「4」以上なので、判定信号「1」を出力する。
テーブル参照部101は、ビットストリーム切出し部100により出力されたビット列「00010000」の第1ビット「0」と、記憶部111により記憶された符号語「0」が一致するので、復号化データ「a」及び符号長「1」を出力する。
テーブル参照部501は、ビットストリーム切出し部100により出力されたビット列「00010000」の第1ビット〜第4ビット「0001」と、記憶部511により記憶された符号語「0001」が一致するので、復号化データ「l」及び符号長「4」を出力する。
選択部508及び509は、テーブル制御部510により出力された選択信号が「1」なので、テーブル参照部501により出力された復号化データ「l」及び符号長「4」を選択する。
テーブル制御部510は、選択信号「1」を出力し、かつ、判定部502により出力された判定信号が「1」なので、次のサイクル(第4サイクル)で選択信号「0」及び最大符号長「8」を出力する。
ビットストリーム切出し部100は、判定部502により出力された判定信号が「1」なので、選択部509により選択された符号長「4」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。
以上のように、本実施の形態の可変長符号復号化装置50は、記憶部511に記憶された可変長符号テーブル513に含まれる符号語を復号化する場合に、少なくとも4ビットの未復号のビットストリームがビットストリーム切出し部100に蓄積されていれば、8ビット以上の未復号のビットストリームが蓄積されていなくても、復号化を実行することができる。これにより、最大符号長が8ビット未満の可変長符号テーブル513に含まれる符号語を高速に復号化することができる。
なお、上記説明において、記憶部511は、最大符号長が4ビットの可変長符号テーブルを記憶しているが、4ビット以外の任意の最大符号長の可変長符号テーブルを記憶してもよい。
また、上記説明において、テーブル制御部510は、符号語を復号化する毎に、テーブル参照部101及び501を交互に選択しているが、規格等に応じて任意の順序で選択してもよい。
また、上記説明において、可変長符号復号化装置50は、2種類のテーブル参照部101及び501を備えているが、3種類以上のテーブル参照部を備えてもよい。
また、上述した実施の形態1〜4の可変長符号復号化装置に対して本実施の形態を適用してもよい。すなわち、実施の形態1〜4の可変長符号復号化装置において、判定部102の構成を判定部502と同様の構成にし、テーブル参照部501と、選択部508及び509と、テーブル制御部510とを追加してもよい。
以上、本発明の可変長符号復号化装置及びその方法について、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。
例えば、本発明の可変長符号復号化方法に含まれるステップをコンピュータに実行させるプログラムとして実現してもよい。さらに、当該プログラムを記録したコンピュータ読み取り可能なCD−ROM(Compact Disc−Read Only Memory)などの記録媒体として実現し、又は、当該プログラムを示す情報、データ又は信号として実現してもよい。さらに、それらプログラム、情報、データ及び信号は、インターネット等の通信ネットワークを介して配信してもよい。