(57)【要約】【課題】可変長符号化された符号語を高速に復号化する。【解決手段】本発明に係る可変長符号復号化装置１０は、ビットストリームからビット列を切出す切出し部１００と、１個の係数を含む符号語と、対応する復号化データ及び符号長とを記憶する記憶部１１１と、２個以上の係数を含む符号語と、対応する復号化データ及び符号長とを記憶する記憶部１２１と、切出されたビット列に、記憶部１１１に記憶される符号語が含まれるか否かを判定し、該符号語の復号化データ及び符号長を出力する判定部１１０と、切出されたビット列に、記憶部１２１に記憶される符号語が含まれるか否かを判定し、該符号語の復号化データ及び符号長を出力する判定部１２０とを備え、切出し部１００は、判定部１１０による判定が行われたサイクルと同じサイクルでビット列を切出し、判定部１２０による判定が行われたサイクルの次のサイクルでビット列を切出す。【選択図】図１
2008278075.tif 000002
【特許請求の範囲】
【請求項１】
可変長符号化されたデータである符号語を含むビットストリームを復号化する可変長符号復号化装置であって、
未復号のビットストリームの先頭から、少なくとも前記可変長符号化に用いられる符号語の最大符号長分のビット列を切出す切出し手段と、
１個のデータが符号化された複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とを記憶する第１記憶手段と、
２個以上のデータが符号化された複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とを記憶する第２記憶手段と、
前記切出し手段により切出されたビット列に、前記第１記憶手段に記憶される符号語が含まれるか否かを判定し、該符号語の復号化データ及び符号長を出力する第１判定手段と、
前記切出し手段により切出されたビット列に、前記第２記憶手段に記憶される符号語が含まれるか否かを判定し、該符号語の復号化データ及び符号長を出力する第２判定手段とを備え、
前記切出し手段は、前記第１判定手段により含まれると判定された場合、前記第１判定手段により前記判定が行われたサイクルと同じサイクルで、前記第１判定手段により出力された符号長に基づき、未復号のビットストリームの先頭を判定し、次に復号化されるビット列を切出し、
前記切出し手段は、前記第２判定手段により含まれると判定された場合、前記第２判定手段により前記判定が行われたサイクルの次のサイクルで、前記第２判定手段により出力された符号長に基づき、未復号のビットストリームの先頭を判定し、次に復号化されるビット列を切出す
ことを特徴とする可変長符号復号化装置。
【請求項２】
前記第１判定手段は、さらに、前記切出し手段により切出されたビット列に、前記第１記憶手段に記憶される符号語が含まれるか否かを示す復号化完了信号を出力し、
前記第２判定手段は、さらに、前記切出し手段により切出されたビット列に、前記第２記憶手段に記憶される符号語が含まれるか否かを示す復号化完了信号を出力し、
前記可変長符号復号化装置は、さらに、
前記第２判定手段により出力された復号化完了信号、復号化データ及び符号長を保持する第１レジスタと、
前記第１レジスタに保持される復号化完了信号に応じて、前記第１判定手段により出力される復号化完了信号、復号化データ及び符号長と、前記第１レジスタに保持される復号化完了信号、復号化データ及び符号長とのいずれかを選択する第１選択手段とを備え、
前記切出し手段は、前記第１選択手段により選択された符号長に基づき未復号のビットストリームの先頭を判定し、次に復号化されるビット列を切出す
ことを特徴とする請求項１記載の可変長符号復号化装置。
【請求項３】
前記切出し手段は、前記第１選択手段により選択された復号化完了信号が、前記切出し手段により切出されたビット列に前記第１記憶手段及び前記第２記憶手段に記憶される符号語が含まれない旨を示す場合に、前記第１選択手段により選択された符号長が無効であると判断し、前記第１選択手段により選択された符号長に基づき未復号のビットストリームの先頭を判定しない
ことを特徴とする請求項２記載の可変長符号復号化装置。
【請求項４】
前記切出し手段は、
前記第１選択手段により選択された符号長に基づき未復号のビットストリームの先頭を判定し、判定された未復号のビットストリームの先頭から、少なくとも前記可変長符号化に用いられる符号語の最大符号長の２倍分のビット列を切出すビットストリーム供給手段と、
前記ビットストリーム供給手段により切出されたビット列を、前記第１判定手段により出力される符号長分シフトし、シフトされたビット列の先頭から、少なくとも前記可変長符号化に用いられる符号語の最大符号長分のビット列を出力する第１シフタと、
前記ビットストリーム供給手段により切出されたビット列を、前記第１レジスタに保持される符号長分シフトし、シフトされたビット列の先頭から、少なくとも前記可変長符号化に用いられる符号語の最大符号長分のビット列を出力する第２シフタと、
前記第１レジスタに保持される復号化完了信号に応じて、前記第１シフタにより出力されるビット列と前記第２シフタにより出力されるビット列とのいずれかを選択する第２選択手段と、
前記第２選択手段により選択されたビット列を保持する第２レジスタとを備え、
前記第１シフタは、前記第１記憶手段に記憶される符号長のビット数のみをシフト可能であり、
前記第２シフタは、前記第２記憶手段に記憶される符号長のビット数のみをシフト可能であり、
前記第１判定手段は、前記第２レジスタに保持されるビット列に、前記第１記憶手段に記憶される符号語が含まれるか否かを判定し、該符号語の復号化データ及び符号長を出力し、
前記第２判定手段は、前記第２レジスタに保持されるビット列に、前記第２記憶手段に記憶される符号語が含まれるか否かを判定し、該符号語の復号化データ及び符号長を出力する
ことを特徴とする請求項２記載の可変長符号復号化装置。
【請求項５】
前記可変長符号復号化装置は、さらに、
前記第２記憶手段に記憶されていない２個以上のデータが符号化された複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とを記憶する第３記憶手段と、
前記切出し手段により切出されたビット列に、前記第３記憶手段に記憶される符号語が含まれるか否かを判定し、該符号語の復号化データ及び符号長とを出力する第３判定手段とを備え、
前記切出し手段は、前記第３判定手段により含まれると判定された場合、前記第３判定手段により前記判定が行われたサイクルと同じサイクルで、前記第３判定手段により出力された符号長に基づき、未復号のビットストリームの先頭を判定し、次に復号化されるビット列を切出す
ことを特徴とする請求項１記載の可変長符号復号化装置。
【請求項６】
前記第３判定手段による前記判定に要する時間は、前記第１判定手段による前記判定に要する時間と同じ又は短い
ことを特徴とする請求項５記載の可変長符号復号化装置。
【請求項７】
前記第１記憶手段は、１個のデータが符号化された複数の符号語と、該符号語にそれぞれ対応する逐次に処理が必要な復号化データと、該符号語にそれぞれ対応する符号長とを記憶し、
前記第２記憶手段は、２個以上のデータが符号化された複数の符号語と、該符号語にそれぞれ対応する逐次に処理が必要な復号化データと、該符号語にそれぞれ対応する符号長とを記憶し、
前記可変長符号復号化装置は、さらに、
前記切出し手段により切出されたビット列を保持する第３レジスタと、
前記第１記憶手段及び前記第２記憶手段に記憶される複数の符号語と、該符号語にそれぞれ対応する逐次処理が不要な復号化データとを記憶する第４記憶手段と、
前記第３レジスタに保持されるビット列に、前記第４記憶手段に記憶される符号語が含まれるか否かを判定し、該符号語の逐次に処理が不要な復号化データを出力する第４判定手段とを備える
ことを特徴とする請求項１記載の可変長符号復号化装置。
【請求項８】
前記可変長符号復号化装置は、さらに、
前記第１判定手段により含まれないと判定され、且つ前記第２判定手段により含まれないと判定された場合に、エラーが検出されたことを示すエラー検出信号を出力するエラー検出手段を備える
ことを特徴とする請求項１記載の可変長符号復号化装置。
【請求項９】
前記可変長符号復号化装置は、さらに、
前記切出し手段により切出されたビット列を保持する第３レジスタと、
前記第１記憶手段及び前記第２記憶手段に記憶されていない符号語と、該符号語に対応するエラー種別とを記憶する第５記憶手段と、
前記第３レジスタに保持されるビット列に、前記第５記憶手段に記憶される符号語が含まれるか否かを判定し、該符号語のエラー種別を出力する第５判定手段とを備える
ことを特徴とする請求項８記載の可変長符号復号化装置。
【請求項１０】
前記第２記憶手段は、２個のデータが符号化された複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とを記憶し、
前記可変長符号復号化装置は、さらに、
３個のデータが符号化された複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とを記憶する第３記憶手段と、
前記切出し手段により切出されたビット列に、前記第３記憶手段に記憶される符号語が含まれるか否かを判定し、該符号語の復号化データ及び符号長とを出力する第３判定手段とを備え、
前記切出し手段は、前記第２判定手段により含まれると判定された場合、前記第２判定手段により前記判定が行われたサイクルと同じサイクル、又は次のサイクルで、前記第２判定手段により出力された符号長に基づき、未復号のビットストリームの先頭を判定し、次に復号化されるビット列を切出し、
前記切出し手段は、前記第３判定手段により含まれると判定された場合、前記第３判定手段により前記判定が行われたサイクルと同じサイクル、１サイクル後のサイクル、又は２サイクル後のサイクルで、前記第３判定手段により出力された符号長に基づき、未復号のビットストリームの先頭を判定し、次に復号化されるビット列を切出し、
前記可変長符号復号化装置は、さらに、
前記第２判定手段により含まれると判定された場合の、前記切出し手段によるビット列の切出しが行われるサイクルを、前記第２判定手段により前記判定が行われたサイクルと同じサイクル、又は次のサイクルに切り替える第１スイッチと、
前記第３判定手段により含まれると判定された場合の、前記切出し手段によるビット列の切出しが行われるサイクルを、前記第３判定手段により前記判定が行われたサイクルと同じサイクル、１サイクル後のサイクル、又は２サイクル後に切り替える第２スイッチとを備える
ことを特徴とする請求項１記載の可変長符号復号化装置。
【請求項１１】
第１可変長符号化、第２可変長符号化及び第３可変長符号化のいずれかにより可変長符号化されたデータである符号語を含むビットストリームを復号化する可変長符号復号化装置であって、
未復号のビットストリームの先頭から、少なくとも前記第１可変長符号化、前記第２可変長符号化及び前記第３可変長符号化に用いられる符号語の最大符号長の２倍分のビット列を切出すビットストリーム供給手段と、
前記ビットストリーム供給手段により切出されたビット列をシフトし、シフトされたビット列の先頭から、少なくとも前記第１可変長符号化に用いられる符号語の最大符号長分のビット列を出力する第１シフタと、
前記ビットストリーム供給手段により切出されたビット列をシフトし、シフトされたビット列の先頭から、少なくとも前記第２可変長符号化及び前記第３可変長符号化に用いられる符号語の最大符号長分のビット列を出力する第２シフタと、
前記第１可変長符号化により符号化された複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とを記憶する第１記憶手段と、
前記第２可変長符号化により符号化された複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とを記憶する第２記憶手段と、
前記第３可変長符号化により符号化された複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とを記憶する第３記憶手段と、
前記第１シフタにより出力されたビット列に、前記第１記憶手段に記憶される符号語が含まれるか否かを判定し、該符号語の復号化データ及び符号長とを出力する第１判定手段と、
前記第２シフタによりシフトされたビット列に、前記第２記憶手段に記憶される符号語が含まれるか否かを判定し、該符号語の復号化データ及び符号長とを出力する第２判定手段と、
前記第２シフタによりシフトされたビット列に、前記第３記憶手段に記憶される符号語が含まれるか否かを判定し、該符号語の復号化データ及び符号長とを出力する第３判定手段と、
前記第２判定手段により出力される復号化データ及び符号長と、前記第３判定手段により出力される復号化データ及び符号長とのいずれかを選択する第１選択手段と、
前記第１判定手段により出力される復号化データ及び符号長と、前記第１選択手段により選択された復号化データ及び符号長とのいずれかを選択する第２選択手段とを備え、
前記ビットストリーム供給手段は、前記第２選択手段により選択された符号長に基づき未復号のビットストリームの先頭を判定し、ビット列を切出し、
前記第１シフタは、前記ビットストリーム供給手段により切出されたビット列を、前記第１判定手段により出力される符号長分シフトし、
前記第２シフタは、前記ビットストリーム供給手段により切出されたビット列を、前記第１選択手段により選択された符号長分シフトし、
前記第１判定手段による前記判定に要する時間は、前記第２判定手段による前記判定に要する時間より長く、
前記第１判定手段による前記判定に要する時間は、前記第３判定手段による前記判定に要する時間より長い
ことを特徴とする可変長符号復号化装置。
【請求項１２】
可変長符号化されたデータである符号語を含むビットストリームを復号化する可変長符号復号化方法であって、
１サイクルで、１個のデータが符号化された符号語を復号化し、復号化された符号語の符号長に基づき、前記ビットストリームから次に復号化されるビット列を切出し、
所定のサイクルで、２個以上のデータが符号化された符号語を復号化し、
前記所定のサイクルの次のサイクルで、前記所定のサイクルで復号化された符号語の符号長に基づき、前記ビットストリームから次に復号化されるビット列を切出す
ことを特徴とする可変長符号復号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、可変長符号化されたデータである符号語を含むビットストリームを復号化する可変長符号復号化装置に関する。
【背景技術】
【０００２】
近年、動画像圧縮符号化技術の進展は著しく、放送、通信及び蓄積等の分野で実用化されている。可変長符号化は、符号化する値の発生頻度に応じて符号長を変化させ、符号化効率を向上させる動画像圧縮符号化技術の一つである。可変長符号化されたデータ（以下、「符号語」と記す。）の復号化では、ビットストリームに含まれる符号語の符号長がそれぞれ異なるため、任意の符号語の位置を特定することができない。従って、ビットストリームの先頭から逐次に符号語を復号化する必要がある。
【０００３】
可変長符号化された符号語を復号化する可変長符号復号化装置として、例えば、特許文献１記載の可変長符号復号化装置が知られている。
【０００４】
図２３は、特許文献１記載の従来の可変長符号復号化装置の構成を示す図である。図２３に示す可変長符号復号化装置８０は、入力端子８０５と、参照用テーブル８２０及び８３０と、マルチプレクサ８４０及び８４１とを備える。
【０００５】
入力端子８０５には、ｎビットからなるビットストリームが入力される（ｎ：自然数）。参照用テーブル８２０には、ビットストリームのＭＳＢのｍビットが入力され、参照用テーブル８３０にはビットストリームのＬＳＢのｋビットが入力される（ｍ、ｋ：自然数、０＜＝ｍ＜＝ｎ、０＜＝ｋ＜＝ｎ）。
【０００６】
参照用テーブル８２０及び８３０は、アドレスにそれぞれ対応する符号語のビット長を示す符号長と、符号語が復号化されたデータである符号値とを含むテーブルを記憶する。なお、参照用テーブル８２０及び参照用テーブル８３０が記憶するテーブルは、符号語に対するアドレスが重複しないように、符号語に対する符号長と符号値とのテーブルを分割したものであり、並列して符号語を復号化することができる。
【０００７】
それぞれの参照用テーブル８２０及び８３０は、入力されたビットをアドレスとして用い、指定されたアドレスに記憶された、符号語のビット長を示す符号長と、符号語が復号化されたデータである符号値とを出力する。さらに、参照用テーブル８２０は、参照用テーブル８２０での符号語の復号化が成功しているか否かを示す復号化信号を出力する。復号化信号が「０」である場合、参照用テーブル８２０での可変長符号の復号化が成功していることを示し、復号化信号が「１」である場合、参照用テーブル８２０での可変長符号の復号化が成功していないことを示す。
【０００８】
マルチプレクサ８４０には、参照用テーブル８２０及び８３０から出力された符号値及び復号化信号が入力される。マルチプレクサ８４０は、復号化信号が「０」である場合、参照用テーブル８２０により出力された符号値を出力し、復号化信号が「１」である場合、参照用テーブル８３０により出力された符号値を出力する。
【０００９】
マルチプレクサ８４１には、参照用テーブル８２０及び８３０から出力された符号長及び復号化信号が入力される。マルチプレクサ８４１は、復号化信号が「０」である場合、参照用テーブル８２０により出力された符号長を出力し、復号化信号が「１」である場合、参照用テーブル８３０により出力された符号長を出力する。
【００１０】
以上の構成により、従来の可変長符号復号化装置８０は、２つの参照用テーブル８２０及び８３０により、並列して可変長符号化された符号語を復号化することができる。
【００１１】
また、従来の可変長符号復号化装置８０では、所定のサイクルにおいて１つの符号語が復号化される。次に、復号化された符号語の符号長を用いて未復号のビットストリームの先頭からビット列を切出す処理が行われる。以降のサイクルで、復号化処理と、切出し処理とを繰り返すことで、ビットストリームの先頭から順次符号語が復号化される。
【特許文献１】特許第３３４１９６２号公報（第６−１０頁、図６等）
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかしながら、可変長符号復号化装置には、より高速で復号化を行うことが望まれている。従来の可変長符号復号化装置において、１つの符号語の復号化に要する時間は、参照用テーブル８２０及び８３０による符号語の照合に要する時間と、復号化された符号語の符号長を用いて未復号のビットストリームの先頭からビット列を切出す時間との和となる。
【００１３】
なお、特許文献１記載の可変長符号復号化装置は、参照用テーブル８２０及び８３０の容量を削減することを目的としており、高速化に関しては、大きな効果はない。例えば、特許文献１記載の可変長符号復号化装置の動作速度は、１つの参照用テーブルを、動作速度を最適化しハードワイヤードで構成した場合と大きな差はない。
【００１４】
そこで、本発明は、可変長符号化された符号語を高速に復号化することのできる可変長符号復号化装置を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上記目的を達成するために、本発明に係る可変長符号復号化装置は、可変長符号化されたデータである符号語を含むビットストリームを復号化する可変長符号復号化装置であって、未復号のビットストリームの先頭から、少なくとも前記可変長符号化に用いられる符号語の最大符号長分のビット列を切出す切出し手段と、１個のデータが符号化された複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とを記憶する第１記憶手段と、２個以上のデータが符号化された複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とを記憶する第２記憶手段と、前記切出し手段により切出されたビット列に、前記第１記憶手段に記憶される符号語が含まれるか否かを判定し、該符号語の復号化データ及び符号長を出力する第１判定手段と、前記切出し手段により切出されたビット列に、前記第２記憶手段に記憶される符号語が含まれるか否かを判定し、該符号語の復号化データ及び符号長を出力する第２判定手段とを備え、前記切出し手段は、前記第１判定手段により含まれると判定された場合、前記第１判定手段により前記判定が行われたサイクルと同じサイクルで、前記第１判定手段により出力された符号長に基づき、未復号のビットストリームの先頭を判定し、次に復号化されるビット列を切出し、前記切出し手段は、前記第２判定手段により含まれると判定された場合、前記第２判定手段により前記判定が行われたサイクルの次のサイクルで、前記第２判定手段により出力された符号長に基づき、未復号のビットストリームの先頭を判定し、次に復号化されるビット列を切出す。
【００１６】
この構成によれば、２サイクルで、２個以上のデータが符号化された符号語の復号化及びビット列の切出しが行われる。これにより、１サイクルの時間は、第２判定手段による判定に要する時間と、切出し手段によるビット列の切出しに要する時間との長いほうによって決まる。よって、１サイクルで、判定処理と、ビット列の切出し処理とを共に行う場合に比べて、１サイクルの時間を短くすることができる。ここで、２個以上のデータが符号化された符号語を復号化した復号化データは、２個以上のデータを含む。よって、本発明に係る可変長符号復号化装置は、１サイクル当たり１データ以上を復号化することができる。すなわち、本発明に係る可変長符号復号化装置は、１サイクル当たりの１データ以上を復号化し、且つ１サイクルの時間を短くすることができる。よって、本発明に係る可変長符号復号化装置は、従来の可変長符号復号化装置に比べ、２個以上のデータが符号化された符号語を高速に復号化することができる。
【００１７】
さらに、１個のデータが符号化された符号語の数は、２個以上のデータが符号化された符号語の数より少ない。これにより、第１判定手段による判定に要する時間は、第２判定手段による判定に要する時間より短くなる。よって、本発明に係る可変長符号復号化装置は、１個のデータが復号化された符号語を高速に復号化することができる。
【００１８】
以上より、本発明に係る可変長符号復号化装置は、１サイクル当たりの１データ以上を復号化し、且つ可変長符号化された符号語を高速に復号化することができる。
【００１９】
また、前記第１判定手段は、さらに、前記切出し手段により切出されたビット列に、前記第１記憶手段に記憶される符号語が含まれるか否かを示す復号化完了信号を出力し、前記第２判定手段は、さらに、前記切出し手段により切出されたビット列に、前記第２記憶手段に記憶される符号語が含まれるか否かを示す復号化完了信号を出力し、前記可変長符号復号化装置は、さらに、前記第２判定手段により出力された復号化完了信号、復号化データ及び符号長を保持する第１レジスタと、前記第１レジスタに保持される復号化完了信号に応じて、前記第１判定手段により出力される復号化完了信号、復号化データ及び符号長と、前記第１レジスタに保持される復号化完了信号、復号化データ及び符号長とのいずれかを選択する第１選択手段とを備え、前記切出し手段は、前記第１選択手段により選択された符号長に基づき未復号のビットストリームの先頭を判定し、次に復号化されるビット列を切出してもよい。
【００２０】
この構成によれば、第２判定手段により出力された２個以上のデータが符号化された符号語の復号化データ、符号長及び復号化完了信号は、第１レジスタに一時的に保持される。さらに、次のサイクルにおいて、第１レジスタに保持される復号化データ、符号長及び復号化完了信号は、第１選択手段を介して出力され、切出し手段によるビット列の切出し処理が行われる。これにより、２サイクルで、２個以上のデータが符号化された符号語の復号化及びビット列の切出しを行うことができる。
【００２１】
また、前記切出し手段は、前記第１選択手段により選択された復号化完了信号が、前記切出し手段により切出されたビット列に前記第１記憶手段及び前記第２記憶手段に記憶される符号語が含まれない旨を示す場合に、前記第１選択手段により選択された符号長が無効であると判断し、前記第１選択手段により選択された符号長に基づき未復号のビットストリームの先頭を判定しなくてもよい。
【００２２】
この構成によれば、第１判定手段及び第２判定手段は、入力されたビット列と第１記憶手段又は第２記憶手段に記憶されている符号語とが一致しない場合に、任意の符号長を出力することが可能となる。よって、第１判定手段及び第２判定手段の構成を簡略化することができるので、第１判定手段及び第２判定手段の高速化及び小容量化を実現することができる。
【００２３】
また、前記切出し手段は、前記第１選択手段により選択された符号長に基づき未復号のビットストリームの先頭を判定し、判定された未復号のビットストリームの先頭から、少なくとも前記可変長符号化に用いられる符号語の最大符号長の２倍分のビット列を切出すビットストリーム供給手段と、前記ビットストリーム供給手段により切出されたビット列を、前記第１判定手段により出力される符号長分シフトし、シフトされたビット列の先頭から、少なくとも前記可変長符号化に用いられる符号語の最大符号長分のビット列を出力する第１シフタと、前記ビットストリーム供給手段により切出されたビット列を、前記第１レジスタに保持される符号長分シフトし、シフトされたビット列の先頭から、少なくとも前記可変長符号化に用いられる符号語の最大符号長分のビット列を出力する第２シフタと、前記第１レジスタに保持される復号化完了信号に応じて、前記第１シフタにより出力されるビット列と前記第２シフタにより出力されるビット列とのいずれかを選択する第２選択手段と、前記第２選択手段により選択されたビット列を保持する第２レジスタとを備え、前記第１シフタは、前記第１記憶手段に記憶される符号長のビット数のみをシフト可能であり、前記第２シフタは、前記第２記憶手段に記憶される符号長のビット数のみをシフト可能であり、前記第１判定手段は、前記第２レジスタに保持されるビット列に、前記第１記憶手段に記憶される符号語が含まれるか否かを判定し、該符号語の復号化データ及び符号長を出力し、前記第２判定手段は、前記第２レジスタに保持されるビット列に、前記第２記憶手段に記憶される符号語が含まれるか否かを判定し、該符号語の復号化データ及び符号長を出力してもよい。
【００２４】
この構成によれば、第１シフタ及び第２シフタのシフト可能なビット数を対応する前記可変長符号テーブルが出力し得る符号長に限定したことにより、第１シフタ及び第２シフタは高速化される。これにより、本発明に係る可変長符号復号化装置は、復号化された符号語の符号長を用いて未復号のビットストリームの先頭からビット列を切出す処理に要する時間を短縮することができる。すなわち、本発明に係る可変長符号復号化装置は、可変長符号化された符号語を高速に復号化することができる。
【００２５】
また、前記可変長符号復号化装置は、さらに、前記第２記憶手段に記憶されていない２個以上のデータが符号化された複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とを記憶する第３記憶手段と、前記切出し手段により切出されたビット列に、前記第３記憶手段に記憶される符号語が含まれるか否かを判定し、該符号語の復号化データ及び符号長とを出力する第３判定手段とを備え、前記切出し手段は、前記第３判定手段により含まれると判定された場合、前記第３判定手段により前記判定が行われたサイクルと同じサイクルで、前記第３判定手段により出力された符号長に基づき、未復号のビットストリームの先頭を判定し、次に復号化されるビット列を切出してもよい。
【００２６】
この構成によれば、第２記憶手段及び第３記憶手段のそれぞれに記憶される符号語の数が減少するので、第２判定手段及び第３判定手段における判定に要する時間を短縮することができる。また、第３記憶手段に記憶される符号語は、１サイクルで復号化及びビット列の切出しが行われるので、符号語当たりの処理サイクル数を平均的に減らすことができる。
【００２７】
また、前記第３判定手段による前記判定に要する時間は、前記第１判定手段による前記判定に要する時間と同じ又は短くてもよい。
【００２８】
この構成によれば、１サイクルで復号化及びビット列の切出しを行う場合の判定に要する時間の最大値は増加せず、且つ２サイクルで復号化及びビット列の切出しを行う場合の判定に要する時間を短縮することができる。
【００２９】
また、前記第１記憶手段は、１個のデータが符号化された複数の符号語と、該符号語にそれぞれ対応する逐次に処理が必要な復号化データと、該符号語にそれぞれ対応する符号長とを記憶し、前記第２記憶手段は、２個以上のデータが符号化された複数の符号語と、該符号語にそれぞれ対応する逐次に処理が必要な復号化データと、該符号語にそれぞれ対応する符号長とを記憶し、前記可変長符号復号化装置は、さらに、前記切出し手段により切出されたビット列を保持する第３レジスタと、前記第１記憶手段及び前記第２記憶手段に記憶される複数の符号語と、該符号語にそれぞれ対応する逐次処理が不要な復号化データとを記憶する第４記憶手段と、前記第３レジスタに保持されるビット列に、前記第４記憶手段に記憶される符号語が含まれるか否かを判定し、該符号語の逐次に処理が不要な復号化データを出力する第４判定手段とを備えてもよい。
【００３０】
この構成によれば、本発明に係る可変長符号復号化装置において、逐次に処理が必要な復号化データ、及び符号長が、第１記憶手段及び第２記憶手段に記憶され、逐次に処理が必要でない復号化データは、第４記憶手段に記憶される。これにより、全ての復号化データを第１記憶手段及び第２記憶手段に記憶する場合に比べて、第１記憶手段及び第２記憶手段の容量を削減することができる。これにより、第１判定手段及び第２判定手段による判定に要する時間を短縮することができる。よって、本発明に係る可変長符号復号化装置は、可変長符号化された符号語の復号化を高速で行うことができる。
【００３１】
また、前記可変長符号復号化装置は、さらに、前記第１判定手段により含まれないと判定され、且つ前記第２判定手段により含まれないと判定された場合に、エラーが検出されたことを示すエラー検出信号を出力するエラー検出手段を備えてもよい。
【００３２】
この構成によれば、本発明に係る可変長符号復号化装置は、切出し手段により切出されたビット列に、第１記憶手段及び第２記憶手段にともに記憶されていない符号語が含まれる場合に、エラー検出信号を出力する。これにより、外部の装置は、エラー検出信号により、可変長符号テーブルに規定されていない符号語が検出されたか否かを判定することができる。これにより、外部の装置は、エラーが検出された場合に、ビットストリームを停止させる等の処理を行うことができる。
【００３３】
また、前記可変長符号復号化装置は、さらに、前記切出し手段により切出されたビット列を保持する第３レジスタと、前記第１記憶手段及び前記第２記憶手段に記憶されていない符号語と、該符号語に対応するエラー種別とを記憶する第５記憶手段と、前記第３レジスタに保持されるビット列に、前記第５記憶手段に記憶される符号語が含まれるか否かを判定し、該符号語のエラー種別を出力する第５判定手段とを備えてもよい。
【００３４】
この構成によれば、本発明に係る可変長符号復号化装置は、第１記憶手段及び第２記憶手段にともに記憶されていない符号語が検出された場合に、該符号語に対応するエラー種別を出力する。これにより、外部の装置は、例えば、ビットストリーム中に第１記憶手段及び第２記憶手段にともに記憶されていない符号語が含まれることを事前に把握している場合に、該符号語を検出し、該符号語をスキップする、又は該符号語を第１記憶手段又は第２記憶手段に記憶されている符号語に入れ替えて再復号化する等の適応的なエラー隠蔽を行うことができる。
【００３５】
また、前記第２記憶手段は、２個のデータが符号化された複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とを記憶し、前記可変長符号復号化装置は、さらに、３個のデータが符号化された複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とを記憶する第３記憶手段と、前記切出し手段により切出されたビット列に、前記第３記憶手段に記憶される符号語が含まれるか否かを判定し、該符号語の復号化データ及び符号長とを出力する第３判定手段とを備え、前記切出し手段は、前記第２判定手段により含まれると判定された場合、前記第２判定手段により前記判定が行われたサイクルと同じサイクル、又は次のサイクルで、前記第２判定手段により出力された符号長に基づき、未復号のビットストリームの先頭を判定し、次に復号化されるビット列を切出し、前記切出し手段は、前記第３判定手段により含まれると判定された場合、前記第３判定手段により前記判定が行われたサイクルと同じサイクル、１サイクル後のサイクル、又は２サイクル後のサイクルで、前記第３判定手段により出力された符号長に基づき、未復号のビットストリームの先頭を判定し、次に復号化されるビット列を切出し、前記可変長符号復号化装置は、さらに、前記第２判定手段により含まれると判定された場合の、前記切出し手段によるビット列の切出しが行われるサイクルを、前記第２判定手段により前記判定が行われたサイクルと同じサイクル、又は次のサイクルに切り替える第１スイッチと、前記第３判定手段により含まれると判定された場合の、前記切出し手段によるビット列の切出しが行われるサイクルを、前記第３判定手段により前記判定が行われたサイクルと同じサイクル、１サイクル後のサイクル、又は２サイクル後に切り替える第２スイッチとを備えてもよい。
【００３６】
この構成によれば、本発明に係る可変長符号復号化装置は、２個の係数を含む符号語に対して、最大２サイクルで、復号化及びビット列の切出し処理を行い、３個の係数を含む符号語に対して、最大３サイクルで、復号化及びビット列の切出し処理を行う。これにより、１サイクルの時間を短縮することができる。よって、本発明に係る可変長符号復号化装置は、復号化を高速に行うことができる。また、本発明に係る可変長符号復号化装置は、第１スイッチ及び第２スイッチにより、復号化及びビット列の切出し処理に要するサイクル数を切り替えることができる。これにより、符号語の復号化に要する時間を、動作周波数及び製造プロセスに応じて適応的に変更することができる。
【００３７】
また、本発明に係る可変長符号復号化装置は、第１可変長符号化、第２可変長符号化及び第３可変長符号化のいずれかにより可変長符号化されたデータである符号語を含むビットストリームを復号化する可変長符号復号化装置であって、未復号のビットストリームの先頭から、少なくとも前記第１可変長符号化、前記第２可変長符号化及び前記第３可変長符号化に用いられる符号語の最大符号長の２倍分のビット列を切出すビットストリーム供給手段と、前記ビットストリーム供給手段により切出されたビット列をシフトし、シフトされたビット列の先頭から、少なくとも前記第１可変長符号化に用いられる符号語の最大符号長分のビット列を出力する第１シフタと、前記ビットストリーム供給手段により切出されたビット列をシフトし、シフトされたビット列の先頭から、少なくとも前記第２可変長符号化及び前記第３可変長符号化に用いられる符号語の最大符号長分のビット列を出力する第２シフタと、前記第１可変長符号化により符号化された複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とを記憶する第１記憶手段と、前記第２可変長符号化により符号化された複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とを記憶する第２記憶手段と、前記第３可変長符号化により符号化された複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とを記憶する第３記憶手段と、前記第１シフタにより出力されたビット列に、前記第１記憶手段に記憶される符号語が含まれるか否かを判定し、該符号語の復号化データ及び符号長とを出力する第１判定手段と、前記第２シフタによりシフトされたビット列に、前記第２記憶手段に記憶される符号語が含まれるか否かを判定し、該符号語の復号化データ及び符号長とを出力する第２判定手段と、前記第２シフタによりシフトされたビット列に、前記第３記憶手段に記憶される符号語が含まれるか否かを判定し、該符号語の復号化データ及び符号長とを出力する第３判定手段と、前記第２判定手段により出力される復号化データ及び符号長と、前記第３判定手段により出力される復号化データ及び符号長とのいずれかを選択する第１選択手段と、前記第１判定手段により出力される復号化データ及び符号長と、前記第１選択手段により選択された復号化データ及び符号長とのいずれかを選択する第２選択手段とを備え、前記ビットストリーム供給手段は、前記第２選択手段により選択された符号長に基づき未復号のビットストリームの先頭を判定し、ビット列を切出し、前記第１シフタは、前記ビットストリーム供給手段により切出されたビット列を、前記第１判定手段により出力される符号長分シフトし、前記第２シフタは、前記ビットストリーム供給手段により切出されたビット列を、前記第１選択手段により選択された符号長分シフトし、前記第１判定手段による前記判定に要する時間は、前記第２判定手段による前記判定に要する時間より長く、前記第１判定手段による前記判定に要する時間は、前記第３判定手段による前記判定に要する時間より長い。
【００３８】
この構成によれば、本発明に係る可変長符号復号化装置は、最も遅延の大きな第１判定手段の経路における遅延を低減することができる。具体的には、第１判定手段により出力された符号長が、第１シフタに入力される。一方、第２判定手段及び第３判定手段により出力された符号長は、第１選択手段を介して、第２シフタに入力される。よって、第１判定手段の経路の遅延を第２判定手段及び第３判定手段の経路の遅延に比べ、少なくすることができる。これにより、最も遅延の大きな第１判定手段による復号化処理を高速化することができるので、可変長符号復号化装置による復号化処理を高速化することができる。
【００３９】
また、本発明に係る可変長符号復号化方法は、可変長符号化されたデータである符号語を含むビットストリームを復号化する可変長符号復号化方法であって、１サイクルで、１個のデータが符号化された符号語を復号化し、復号化された符号語の符号長に基づき、前記ビットストリームから次に復号化されるビット列を切出し、所定のサイクルで、２個以上のデータが符号化された符号語を復号化し、前記所定のサイクルの次のサイクルで、前記所定のサイクルで復号化された符号語の符号長に基づき、前記ビットストリームから次に復号化されるビット列を切出す。
【００４０】
これによれば、２サイクルで、２個以上のデータが符号化された符号語の復号化及びビット列の切出しが行われる。これにより、１サイクルの時間は、復号化に要する時間と、ビット列の切出しに要する時間との長いほうによって決まる。よって、１サイクルで、復号化処理と、ビット列の切出し処理とを共に行う場合に比べて、１サイクルの時間を短くすることができる。よって、１サイクルで、判定処理と、ビット列の切出し処理とを共に行う場合に比べて、１サイクルの時間を短くすることができる。ここで、２個以上のデータが符号化された符号語を復号化した復号化データは、２個以上のデータを含む。よって、本発明に係る可変長符号復号化方法は、１サイクル当たり１データ以上を復号化することができる。すなわち、本発明に係る可変長符号復号化方法は、１サイクル当たりの１データ以上を復号化し、且つ１サイクルの時間を短くすることができる。よって、本発明に係る可変長符号復号化方法は、２個以上のデータが符号化された符号語を高速に復号化することができる。
【００４１】
さらに、１個のデータが符号化された符号語の数は、２個以上のデータが符号化された符号語の数より少ない。これにより、１個のデータが符号化された符号語の復号化に要する時間は、２個以上のデータが符号化された符号語の復号化に要する時間より短くなる。よって、本発明に係る可変長符号復号化方法は、１個のデータが復号化された符号語を高速に復号化することができる。
【００４２】
以上より、本発明に係る可変長符号復号化方法は、１サイクル当たりの１データ以上を復号化し、且つ可変長符号化された符号語を高速に復号化することができる。
【００４３】
なお、本発明は、このような可変長符号復号化装置及び可変長符号復号化方法として実現することができるだけでなく、可変長符号復号化方法に含まれる特徴的なステップをコンピュータに実行させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、ＣＤ−ＲＯＭ等の記録媒体やインターネット等の伝送媒体を介して流通させることができるのは言うまでもない。
【発明の効果】
【００４４】
本発明は、可変長符号化された符号語を高速に復号化することのできる可変長符号復号化装置を提供することができる。
【発明を実施するための最良の形態】
【００４５】
以下、本発明の実施例に係る可変長符号復号化装置について図面を参照しながら説明する。
【００４６】
（実施の形態１）
本発明の実施の形態１に係る可変長符号復号化装置は、２個以上のデータが符号化された符号語を２サイクルで復号化する。これにより、１サイクルの時間を短くすることができるので、可変長符号復号化装置の高速化を実現することができる。
【００４７】
まず、本発明の実施の形態１に係る可変長符号復号化装置の構成を説明する。
図１は、本発明の実施の形態１に係る可変長符号復号化装置の構成を示すブロック図である。
【００４８】
図１に示す可変長符号復号化装置１０は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置１０は、ビットストリーム切出し部１００と、テーブル参照部１０１及び１０２と、マルチプレクサ１０３、１０７、１０８及び１０９と、レジスタ１０４、１０５及び１０６とを備える。
【００４９】
ビットストリーム切出し部１００は、未復号のビットストリームの先頭から、少なくとも可変長符号化に用いられる符号語の最大符号長分のビット列を切出す。具体的には、ビットストリーム切出し部１００は、未復号のビットストリームの先頭から３２ビット分のビット列を切出し出力する。また、ビットストリーム切出し部１００は、マルチプレクサ１０９により選択された符号長に基づき未復号のビットストリームの先頭を判定し、ビット列を切出す。
【００５０】
テーブル参照部１０１は、判定部１１０と、記憶部１１１とを備える。
記憶部１１１は、１個の係数のみを含む複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とのテーブルである可変長符号テーブルを記憶する。ここで、係数とは、可変長符号化で１つの符号語に符号化されるデータの数である。すなわち、１個の係数を含む符号語とは、１個のデータが符号化された符号語である。
【００５１】
判定部１１０は、ビットストリーム切出し部１００により切出されたビット列と記憶部１１１に記憶される可変長符号テーブルとを照合し、ビットストリーム切出し部１００により切出されたビット列に、記憶部１１１に記憶される符号語が含まれるか否かを判定する。判定部１１０は、判定結果を示す復号化完了信号をマルチプレクサ１０７に出力する。具体的には、判定部１１０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部１１１に記憶される符号語が含まれる場合に、復号化完了信号「１」を出力する。なお、復号化完了信号「１」等の記載は、復号化完了信号として論理値「１」が出力されることを示し、以下、同様の表記を用いる。判定部１１０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部１１１に記憶される符号語が含まれない場合に、復号化完了信号「０」を出力する。また、判定部１１０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部１１１に記憶される符号語が含まれる場合に、該符号語に対応する復号化データ（ラン、レベル、ラスト）をマルチプレクサ１０８に出力し、該符号語に対応する符号長をマルチプレクサ１０９に出力する。また、判定部１１０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部１１１に記憶される符号語が含まれない場合に、任意の復号化データをマルチプレクサ１０８に出力し、符号長「０」をマルチプレクサ１０９に出力する。
【００５２】
テーブル参照部１０２は、判定部１２０と、記憶部１２１とを備える。
記憶部１２１は、２個以上の係数を含む複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とのテーブルである可変長符号テーブルを記憶する。すなわち、２個以上のデータが符号化された複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とを記憶する。
【００５３】
判定部１２０は、ビットストリーム切出し部１００により切出されたビット列と記憶部１２１に記憶される可変長符号テーブルとを照合し、ビットストリーム切出し部１００により切出されたビット列に、記憶部１２１に記憶される符号語が含まれるか否かを判定する。判定部１２０は、判定結果を示す復号化完了信号をマルチプレクサ１０３に出力する。具体的には、判定部１２０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部１２１に記憶される符号語が含まれる場合に、復号化完了信号「１」を出力する。判定部１２０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部１２１に記憶される符号語が含まれない場合に、復号化完了信号「０」を出力する。また、判定部１２０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部１２１に記憶される符号語が含まれる場合に、該符号語に対応する復号化データ（ラン、レベル、ラスト）をレジスタ１０５に出力し、該符号語に対応する符号長をレジスタ１０６に出力する。また、判定部１２０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部１２１に記憶される符号語が含まれない場合に、任意の復号化データをレジスタ１０５に出力し、符号長「０」をレジスタ１０６に出力する。
【００５４】
マルチプレクサ１０３は、レジスタ１０４に保持される復号化完了信号を選択信号として、レジスタ１０４へ出力する信号を選択する。マルチプレクサ１０３は、選択信号が「０」の場合、テーブル参照部１０２により出力された復号化完了信号を選択し、選択信号が「１」の場合、固定値「０」を選択する。
【００５５】
レジスタ１０４は、マルチプレクサ１０３により選択された復号化完了信号を保持する。レジスタ１０５は、テーブル参照部１０２により出力された復号化データを保持する。レジスタ１０６は、テーブル参照部１０２により出力された符号長を保持する。
【００５６】
マルチプレクサ１０７は、レジスタ１０４に保持される復号化完了信号に応じて、テーブル参照部１０１により出力される復号化完了信号と、レジスタ１０４に保持される復号化完了信号とのいずれかを選択する。マルチプレクサ１０７は、レジスタ１０４に保持される復号化完了信号が「０」の場合には、テーブル参照部１０１により出力される復号化完了信号を選択する。マルチプレクサ１０７は、レジスタ１０４に保持される復号化完了信号が「１」の場合には、レジスタ１０４に保持される復号化完了信号を選択する。
【００５７】
マルチプレクサ１０８は、レジスタ１０４に保持される復号化完了信号に応じて、テーブル参照部１０１により出力される復号化データと、レジスタ１０５に保持される復号化データとのいずれかを選択する。マルチプレクサ１０８は、レジスタ１０４に保持される復号化完了信号が「０」の場合には、テーブル参照部１０１により出力される復号化データを選択する。マルチプレクサ１０８は、レジスタ１０４に保持される復号化完了信号が「１」の場合には、レジスタ１０５に保持される復号化データを選択する。
【００５８】
マルチプレクサ１０９は、レジスタ１０４に保持される復号化完了信号に応じて、テーブル参照部１０１により出力される符号長と、レジスタ１０６に保持される符号長とのいずれかを選択する。マルチプレクサ１０９は、レジスタ１０４に保持される復号化完了信号が「０」の場合には、テーブル参照部１０１により出力される符号長を選択する。マルチプレクサ１０９は、レジスタ１０４に保持される復号化完了信号が「１」の場合には、レジスタ１０６に保持される符号長を選択する。
【００５９】
ビットストリーム切出し部１００は、判定部１１０により、ビットストリーム切出し部１００により切出されたビット列に、記憶部１１１に記憶される符号語が含まれると判定された場合、判定部１１０により判定が行われたサイクルと同じサイクルで、判定部１１０により出力された符号長に基づき、未復号のビットストリームの先頭を判定し、次に復号化されるビット列を切出す。また、ビットストリーム切出し部１００は、判定部１２０により、ビットストリーム切出し部１００により切出されたビット列に、記憶部１２１に記憶される符号語が含まれると判定された場合、判定部１２０により判定が行われたサイクルの次のサイクルで、判定部１２０により出力された符号長に基づき、未復号のビットストリームの先頭を判定し、次に復号化されるビット列を切出す。
【００６０】
図２は、記憶部１１１に記憶される可変長符号テーブルの一例を示す図である。図３は、記憶部１２１に保持される可変長テーブルの一例を示す図である。
【００６１】
図２及び図３に示すように記憶部１１１及び１２１に記憶される可変長符号テーブルは、符号語と、符号語の復号化データであるラン、レベル及びラストと、符号語の符号の長さ（ビット数）である符号長とを含む。記憶部１１１及び１２１に記憶される可変長符号テーブルは、ラン、レベル及びラストからなる１組を符号化した、最大符号長３２ビットの可変長符号テーブルである。なお、図２及び図３において、ａ１は単一のビットを示し、ｅ１−ｅ４等はｅ１、ｅ２、ｅ３、ｅ４の４ビットのデータが連続するビット列を示す。また、記憶部１１１に記憶される可変長符号テーブルは、１個の係数のみを含む符号語に対応するテーブルである。記憶部１２１に記憶される可変長符号テーブルは、２個以上の係数を含む符号に対応するテーブルである。
【００６２】
ランは、値が「０」である先行する係数の個数を示す。レベルは、値が「０」でない係数の値を示す。ラストは、符号語が水平方向及び垂直方向にそれぞれ８個の係数、合計６４個の係数からなるブロックの最後であることを示す。
【００６３】
ここで、可変長符号復号化装置１０が復号化するビットストリームは、デジタルビデオデータである。また、用いられる可変長符号化には、水平方向及び垂直方向にそれぞれ８個の係数、合計６４個の係数からなるブロックの単位が用いられる。該可変長符号化では、ブロック内の連続する係数のうち値が「０」の係数と、値が「０」でない係数とを一つの符号語に符号化する。すなわち、ランは符号語に含まれる係数の個数に対応し、ランの値に１を加算した値が符号語に含まれる係数の個数である。例えば、図２に示す符号語ａ１のようにランの値が「０」の符号語は、１個の係数を含む符号語である。また、図３に示す符号語ｃ１−ｃ３２は、ランの値が「２」であり、３個の係数を含む符号語である。
【００６４】
図２及び図３に示すテーブルを用いた場合、例えば、「１、０、２、０、０、３」という信号に対しては、最初の「１」は１つの符号語ａ１に符号化される。次の「０、２」は、１つの符号語ｂ１−ｂ１６に符号化される。次の「０、０、３」は、１つの符号語ｃ１−ｃ３２に符号化される。このように、値「０」の係数を含む複数の係数を１つの符号語に符号化することで、効率良く、データ量を削減することができる。
【００６５】
次に、本発明の実施の形態１に係る可変長符号復号化装置１０の動作を説明する。
本発明の実施の形態１に係る可変長符号復号化装置１０は、１サイクルで、１個の係数を含む符号語を復号化し、復号化された符号語の符号長に基づき、ビットストリームから次に復号化されるビット列を切出す。また、可変長符号復号化装置１０は、所定のサイクルで、２個以上のデータが符号化された符号語を復号化し、所定のサイクルの次のサイクルで、所定のサイクルで復号化された符号語の符号長に基づき、ビットストリームから次に復号化されるビット列を切出す。
【００６６】
図４は、可変長符号復号化装置１０による具体的な動作を示す図である。図５は、可変長符号復号化装置１０に入力されるビットストリームに含まれる符号語の一例を示す図である。以下、可変長符号復号化装置１０により、ビットストリーム「ａ１ｂ１−ｂ１６ｃ１−ｃ３２」を復号化する動作を説明する。
【００６７】
なお、図５に示すランの値が「０」である符号語ａ１は、テーブル参照部１０１に記憶されており、ランの値が１以上である符号語ｂ１−ｂ１６及び符号語ｃ１−ｃ３２は、テーブル参照部１０２に記憶されている。
【００６８】
また、ビットストリーム切出し部１００は初期値として「ａ１ｂ１−ｂ１６ｃ１−ｃ１５」を出力し、レジスタ１０４は初期値として「０」を保持し、レジスタ１０５は、初期値として「（０、０、０）」を保持し、レジスタ１０６は、初期値として、「０」を保持している。
【００６９】
＜第０サイクル＞
第０サイクルにおいて、ビットストリーム切出し部１００は、初期値「ａ１ｂ１−ｂ１６ｃ１−ｃ１５」を出力する。
【００７０】
テーブル参照部１０１は、ビットストリーム切出し部１００により切出されたビット列「ａ１ｂ１−ｂ１６ｃ１−ｃ１５」と記憶されている符号語「ａ１」とが一致するので、復号化完了信号「１」を出力し、復号化データ（ラン、レベル、ラスト）「（０、１、０）」を出力し、符号長「１」を出力する。
【００７１】
テーブル参照部１０２は、ビットストリーム切出し部１００により切出されたビット列「ａ１ｂ１−ｂ１６ｃ１−ｃ１５」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する（ｘ：任意の値）。
【００７２】
マルチプレクサ１０３は、レジスタ１０４に保持される復号化完了信号が「０」なので、テーブル参照部１０２により出力された復号化完了信号「０」を選択する。
【００７３】
レジスタ１０４は初期値である復号化完了信号「０」を保持し、レジスタ１０５は初期値である復号化データ「（０、０、０）」を保持し、レジスタ１０６は初期値である符号長「０」を保持する。
【００７４】
マルチプレクサ１０７は、レジスタ１０４に保持される復号化完了信号が「０」なので、テーブル参照部１０１により出力される復号化完了信号「１」を選択する。マルチプレクサ１０８は、レジスタ１０４に保持される復号化完了信号が「０」なので、テーブル参照部１０１により出力される復号化データ「（０、１、０）」を選択する。マルチプレクサ１０９は、レジスタ１０４に保持される復号化完了信号が「０」なので、テーブル参照部１０１により出力される符号長「１」を選択する。
【００７５】
ビットストリーム切出し部１００は、マルチプレクサ１０９により選択された符号長が「１」なので、先頭のビットを１ビットずらして、ビット列「ｂ１−ｂ１６ｃ１−ｃ１６」を切出す。ビットストリーム切出し部１００は、次のサイクルで、切出されたビット列「ｂ１−ｂ１６ｃ１−ｃ１６」を出力する。
【００７６】
レジスタ１０４は、マルチプレクサ１０３により選択された復号化完了信号「０」を取り込み次のサイクルで出力する。レジスタ１０５は、テーブル参照部１０２により出力された復号化データ「（ｘ、ｘ、ｘ）」を取り込み次のサイクルで出力する。レジスタ１０６は、テーブル参照部１０２により出力された符号長「０」を取り込み次のサイクルで出力する。
【００７７】
＜第１サイクル＞
第１サイクルにおいて、ビットストリーム切出し部１００は、第０サイクルで切出されたビット列「ｂ１−ｂ１６ｃ１−ｃ１６」を出力する。
【００７８】
テーブル参照部１０１は、ビットストリーム切出し部１００により切出されたビット列「ｂ１−ｂ１６ｃ１−ｃ１６」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【００７９】
テーブル参照部１０２は、ビットストリーム切出し部１００により切出されたビット列「ｂ１−ｂ１６ｃ１−ｃ１６」と記憶されている符号語「ｂ１−ｂ１６」とが一致するので、復号化完了信号「１」を出力し、復号化データ（ラン、レベル、ラスト）「（１、２、０）」を出力し、符号長「１６」を出力する。
【００８０】
マルチプレクサ１０３は、レジスタ１０４に保持される復号化完了信号が「０」なので、テーブル参照部１０２により出力された復号化完了信号「１」を選択する。
【００８１】
レジスタ１０４は第０サイクルで取り込まれた復号化完了信号「０」を保持する。レジスタ１０５は第０サイクルで取り込まれた復号化データ「（ｘ、ｘ、ｘ）」を保持する。レジスタ１０６は第０サイクルで取り込まれた符号長「０」を保持する。
【００８２】
マルチプレクサ１０７は、レジスタ１０４に保持される復号化完了信号が「０」なので、テーブル参照部１０１により出力された復号化完了信号「０」を選択する。マルチプレクサ１０８は、レジスタ１０４に保持される復号化完了信号が「０」なので、テーブル参照部１０１により出力された復号化データ「（ｘ、ｘ、ｘ）」を選択する。マルチプレクサ１０９は、レジスタ１０４に保持される復号化完了信号が「０」なので、テーブル参照部１０１により出力された符号長「０」を選択する。
【００８３】
ビットストリーム切出し部１００は、マルチプレクサ１０９により選択された符号長が「０」なので、ビット列「ｂ１−ｂ１６ｃ１−ｃ１６」を切出す。ビットストリーム切出し部１００は、次のサイクルで、切出されたビット列「ｂ１−ｂ１６ｃ１−ｃ１６」を出力する。
【００８４】
レジスタ１０４は、マルチプレクサ１０３により選択された復号化完了信号「１」を取り込み次のサイクルで出力する。レジスタ１０５は、テーブル参照部１０２により出力された復号化データ「（１、２、０）」を取り込み次のサイクルで出力する。レジスタ１０６は、テーブル参照部１０２により出力された符号長「１６」を取り込み次のサイクルで出力する。
【００８５】
＜第２サイクル＞
第２サイクルにおいて、ビットストリーム切出し部１００は、第１サイクルで切出されたビット列「ｂ１−ｂ１６ｃ１−ｃ１６」を出力する。
【００８６】
テーブル参照部１０１は、ビットストリーム切出し部１００により切出されたビット列「ｂ１−ｂ１６ｃ１−ｃ１６」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【００８７】
テーブル参照部１０２は、ビットストリーム切出し部１００により切出されたビット列「ｂ１−ｂ１６ｃ１−ｃ１６」と記憶されている符号語「ｂ１−ｂ１６」とが一致するので、復号化完了信号「１」を出力し、復号化データ（ラン、レベル、ラスト）「（１、２、０）」を出力し、符号長「１６」を出力する。
【００８８】
マルチプレクサ１０３は、レジスタ１０４に保持される復号化完了信号が「１」なので、固定値「０」を選択する。
【００８９】
レジスタ１０４は第１サイクルで取り込まれた復号化完了信号「１」を保持する。レジスタ１０５は第１サイクルで取り込まれた復号化データ「（１、２、０）」を保持する。レジスタ１０６は第１サイクルで取り込まれた符号長「１６」を保持する。
【００９０】
マルチプレクサ１０７は、レジスタ１０４に保持される復号化完了信号が「１」なので、レジスタ１０４に保持される復号化完了信号「１」を選択する。マルチプレクサ１０８は、レジスタ１０４に保持される復号化完了信号が「１」なので、レジスタ１０５に保持される復号化データ「（１、２、０）」を選択する。マルチプレクサ１０９は、レジスタ１０４に保持される復号化完了信号が「０」なので、レジスタ１０６に保持される符号長「１６」を選択する。
【００９１】
ビットストリーム切出し部１００は、マルチプレクサ１０９により選択された符号長が「１６」なので、先頭を１６ビットずらして、ビット列「ｃ１−ｃ１６」を切出す。ビットストリーム切出し部１００は、次のサイクルで、切出されたビット列「ｃ１−ｃ１６」を出力する。
【００９２】
レジスタ１０４は、マルチプレクサ１０３により選択された復号化完了信号「０」を取り込み次のサイクルで出力する。レジスタ１０５は、テーブル参照部１０２により出力された復号化データ「（１、２、０）」を取り込み次のサイクルで出力する。レジスタ１０６は、テーブル参照部１０２により出力された符号長「１６」を取り込み次のサイクルで出力する。
【００９３】
＜第３サイクル＞
第３サイクルにおいて、ビットストリーム切出し部１００は、第２サイクルで切出されたビット列「ｃ１−ｃ３２」を出力する。
【００９４】
テーブル参照部１０１は、ビットストリーム切出し部１００により切出されたビット列「ｃ１−ｃ３２」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【００９５】
テーブル参照部１０２は、ビットストリーム切出し部１００により切出されたビット列「ｃ１−ｃ３２」と記憶されている符号語「ｃ１−ｃ３２」とが一致するので、復号化完了信号「１」を出力し、復号化データ（ラン、レベル、ラスト）「（２、３、１）」を出力し、符号長「３２」を出力する。
【００９６】
マルチプレクサ１０３は、レジスタ１０４に保持される復号化完了信号が「０」なので、テーブル参照部１０２により出力された復号化完了信号「１」を選択する。
【００９７】
レジスタ１０４は第２サイクルで取り込まれた復号化完了信号「０」を保持する。レジスタ１０５は第２サイクルで取り込まれた復号化データ「（１、２、０）」を保持する。レジスタ１０６は第２サイクルで取り込まれた符号長「１６」を保持する。
【００９８】
マルチプレクサ１０７は、レジスタ１０４に保持される復号化完了信号が「０」なので、テーブル参照部１０１により出力された復号化完了信号「０」を選択する。マルチプレクサ１０８は、レジスタ１０４に保持される復号化完了信号が「０」なので、テーブル参照部１０１により出力された復号化データ「（ｘ、ｘ、ｘ）」を選択する。マルチプレクサ１０９は、レジスタ１０４に保持される復号化完了信号が「０」なので、テーブル参照部１０１により出力された符号長「０」を選択する。
【００９９】
ビットストリーム切出し部１００は、マルチプレクサ１０９により選択された符号長が「０」なので、ビット列「ｃ１−ｃ１６」を切出す。ビットストリーム切出し部１００は、次のサイクルで、切出されたビット列「ｃ１−ｃ１６」を出力する。
【０１００】
レジスタ１０４は、マルチプレクサ１０３により選択された復号化完了信号「１」を取り込み次のサイクルで出力する。レジスタ１０５は、テーブル参照部１０２により出力された復号化データ「（２、３、１）」を取り込み次のサイクルで出力する。レジスタ１０６は、テーブル参照部１０２により出力された符号長「３２」を取り込み次のサイクルで出力する。
【０１０１】
＜第４サイクル＞
第４サイクルにおいて、ビットストリーム切出し部１００は、第３サイクルで切出されたビット列「ｃ１−ｃ３２」を出力する。
【０１０２】
テーブル参照部１０１は、ビットストリーム切出し部１００により切出されたビット列「ｃ１−ｃ３２」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【０１０３】
テーブル参照部１０２は、ビットストリーム切出し部１００により切出されたビット列「ｃ１−ｃ３２」と記憶されている符号語「ｃ１−ｃ３２」とが一致するので、復号化完了信号「１」を出力し、復号化データ（ラン、レベル、ラスト）「（２、３、１）」を出力し、符号長「３２」を出力する。
【０１０４】
マルチプレクサ１０３は、レジスタ１０４に保持される復号化完了信号が「１」なので、固定値「０」を選択する。
【０１０５】
レジスタ１０４は第３サイクルで取り込まれた復号化完了信号「１」を保持する。レジスタ１０５は第３サイクルで取り込まれた復号化データ「（２、３、１）」を保持する。レジスタ１０６は第３サイクルで取り込まれた符号長「３２」を保持する。
【０１０６】
マルチプレクサ１０７は、レジスタ１０４に保持される復号化完了信号が「１」なので、レジスタ１０４に保持される復号化完了信号「１」を選択する。マルチプレクサ１０８は、レジスタ１０４に保持される復号化完了信号が「１」なので、レジスタ１０５に保持される復号化データ「（２、３、１）」を選択する。マルチプレクサ１０９は、レジスタ１０４に保持される復号化完了信号が「０」なので、レジスタ１０６に保持される符号長「３２」を選択する。
【０１０７】
以上より、本発明の実施の形態１に係る可変長符号復号化装置１０は、１個の係数を含む符号語をテーブル参照部１０１により復号化し、２個以上の係数を含む符号語を、テーブル参照部１０２により復号化する。
【０１０８】
ここで、テーブル参照部１０１に記憶される可変長符号テーブルに含まれる符号語の数は、テーブル参照部１０２に記憶される可変長符号テーブルに含まれる符号語の数より少ない。例えば、テーブル参照部１０１及び１０２ランの値「０」〜「５」に対して、それぞれのレベルの符号語が記憶されるとすると、ランの値「０」の符号語がテーブル参照部１０１に記憶され、ランの値「１」〜「５」の符号語がテーブル参照部１０２に記憶される。よって、テーブル参照部１０１に記憶される符号語は、テーブル参照部１０２に記憶される符号語の１／５程度となる。これにより、テーブル参照部１０１で照合に要する時間は、テーブル参照部１０２で照合に要する時間より短くなる。
【０１０９】
一方、図２３に示すような２つの参照用テーブル８２０及び８３０を用いて復号化を行う場合には、１つの符号語の復号化に要する時間は、参照用テーブル８２０及び８３０での照合に要する時間のうち長い方により決定する。ここで、参照用テーブル８２０又は８３０で照合される符号語は、符号語全体の半分以上である。本発明の実施の形態１に係る可変長符号復号化装置１０のテーブル参照部１０１で照合される符号語は、符号語全体の半分以下である。よって、本発明の実施の形態１に係る可変長符号復号化装置１０は、従来の可変長符号復号化装置に比べ、１個の係数を含む符号語を高速に復号化することができる。
【０１１０】
また、テーブル参照部１０２により復号化された２個以上の係数を含む符号語の復号化データ、符号長及び復号化完了信号は、レジスタ１０４、１０５及び１０６に一時的に保持される。さらに、次のサイクルにおいて、レジスタ１０４、１０５及び１０６に保持される復号化データ、符号長及び復号化完了信号は、マルチプレクサ１０７、１０８及び１０９を介して出力され、ビットストリーム切出し部１００によるビット列の切出し処理が行われる。すなわち、２サイクルで、２個以上の係数を含む符号語の復号化及びビット列の切出しが行われる。これにより、１サイクルの時間は、テーブル参照部１０２による照合に要する時間と、ビットストリーム切出し部１００によるビット列の切出しに要する時間との長いほうによって決まる。よって、従来の可変長符号復号化装置のように、１サイクルで、照合処理と、ビット列の切出し処理とを共に行う場合に比べて、１サイクルの時間を短くすることができる。
【０１１１】
ここで、２個以上の係数を含む符号語を復号化した復号化データは、２個以上のデータを含む。よって、２個以上の係数を含む符号語を２サイクルで復号化しても、１サイクル当たり１データ以上を復号化することができる。よって、本発明の実施の形態１に係る可変長符号復号化装置１０は、２個以上の係数を含む符号語に対して、１サイクル当たり１データ以上を復号化し、且つ１サイクルの時間を短くすることで、高速化を実現することができる。
【０１１２】
また、１個の係数を含む符号語は、１サイクルで復号化するので、本発明の実施の形態１に係る可変長符号復号化装置１０は、１サイクル当たり１データ以上を復号化することができる。
【０１１３】
以上のように、本発明の実施の形態１に係る可変長符号復号化装置１０は、１サイクル当たり１データ以上を復号化し、且つ可変長符号化された符号語を高速に復号化することができる。
【０１１４】
なお、上記説明において、一致する符号語がない場合に、テーブル参照部１０１及び１０２が符号長「０」を出力することにより、ビットストリーム切出し部１００によるビットストリームの先頭位置をずらす処理を行わないようにしているが、以下の処理を行ってもよい。
【０１１５】
ビットストリーム切出し部１００は、マルチプレクサ１０７により選択される復号化完了信号に基づき、マルチプレクサ１０９により選択された符号長が有効であるか否かを判定してもよい。すなわち、ビットストリーム切出し部１００は、マルチプレクサ１０７により選択された復号化完了信号が「０」の場合に、マルチプレクサ１０９により選択された符号長が無効であると判断し、該符号長に基づき未復号のビットストリームの先頭を判定しない。また、ビットストリーム切出し部１００は、マルチプレクサ１０７により選択された復号化完了信号が「１」の場合に、マルチプレクサ１０９により選択された符号長が有効であると判断し、該符号長に基づき未復号のビットストリームの先頭を判定し、ビット列の切出しを行う。
【０１１６】
これにより、テーブル参照部１０１及びテーブル参照部１０２は、入力されたビット列と記憶されている符号語とが一致しない場合に、任意の符号長を出力することが可能となる。よって、テーブル参照部１０１及びテーブル参照部１０２の構成を簡略化することができるので、テーブル参照部１０１及びテーブル参照部１０２の高速化及び小容量化を実現することができる。
【０１１７】
また、上記説明において、テーブル参照部１０１の記憶部１１１は、１個の係数を含む符号語を記憶しているが、１個の係数を含む符号語に加え、２個以上の係数を含む符号語の一部を記憶してもよい。
【０１１８】
（実施の形態２）
本発明の実施の形態２に係る可変長符号復号化装置は、ビットストリーム切出し部が、テーブル参照部１０１及び１０２にそれぞれ対応したシフタを備える。これにより、ビット列の切出し処理を高速に行うことができる。
【０１１９】
まず、本発明の実施の形態２に係る可変長符号復号化装置の構成を説明する。
図６は、本発明の実施の形態２に係る可変長符号復号化装置２０の構成を示すブロック図である。なお、図１と同様の要素には同一の符号を付しており、説明を省略する。
【０１２０】
図６に示す可変長符号復号化装置２０は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置２０は、ビットストリーム切出し部２１０と、テーブル参照部１０１及び１０２と、マルチプレクサ１０３、１０７、１０８及び１０９と、レジスタ１０４、１０５及び１０６とを備える。可変長符号復号化装置２０は、実施の形態１に係る可変長符号復号化装置１０に対して、ビットストリーム切出し部２１０の構成が異なる。
【０１２１】
ビットストリーム切出し部２１０は、未復号のビットストリームの先頭から、少なくとも可変長符号化に用いられる符号語の最大符号長分のビット列を切出す。ビットストリーム切出し部２１０は、ビットストリーム供給部２００と、シフタ２０１及び２０２と、マルチプレクサ２０３と、レジスタ２０４とを備える。
【０１２２】
ビットストリーム供給部２００は、マルチプレクサ１０９により選択された符号長に基づき未復号のビットストリームの先頭を判定する。ビットストリーム供給部２００は、判定された未復号のビットストリームの先頭から、少なくとも可変長符号化に用いられる符号語の最大符号長の２倍分のビット列を切出す。具体的には、ビットストリーム供給部２００は、６４ビット分のビット列を切出し、シフタ２０１及び２０２へ出力する。
【０１２３】
シフタ２０１は、ビットストリーム供給部２００により切出されたビット列を、テーブル参照部１０１により出力される符号長分左へシフトし、シフトされたビット列の先頭から、少なくとも前記可変長符号化に用いられる符号語の最大符号長分のビット列を出力する。具体的には、シフタ２０１は、３２ビットのビット列を出力する。また、シフタ２０１は、記憶部１１１に記憶される符号長のビット数のみをシフト可能である。例えば、記憶部１１１に記憶される符号長が１〜４、及び８の場合には、１〜４ビット分及び８ビット分のシフトが可能であり、他のビット数（５〜７等）のシフトを行うことができない。
【０１２４】
シフタ２０２は、ビットストリーム供給部２００により切出されたビット列を、テーブル参照部１０２により出力される符号長分左へシフトし、シフトされたビット列の先頭から、少なくとも前記可変長符号化に用いられる符号語の最大符号長分のビット列を出力する。具体的には、シフタ２０２は、３２ビットのビット列を出力する。また、シフタ２０２は、記憶部１２１に記憶される符号長のビット数のみをシフト可能である。例えば、記憶部１２１に記憶される符号長が５〜３２の場合には、５〜３２ビット分のシフトが可能であり、他のビット数（１〜４等）のシフトを行うことができない。
【０１２５】
マルチプレクサ２０３は、レジスタ１０４に保持される復号化完了信号に応じて、シフタ２０１により出力されるビット列とシフタ２０２により出力されるビット列とのいずれかを選択する。マルチプレクサ２０３は、レジスタ１０４に保持される復号化完了信号が「０」の場合、シフタ２０１により出力されたビット列を選択し出力する。マルチプレクサ２０３は、レジスタ１０４に保持される復号化完了信号が「１」の場合、シフタ２０２により出力されたビット列を選択し出力する。
【０１２６】
レジスタ２０４は、マルチプレクサ２０３により選択されたビット列を保持する。
次に、本発明の実施の形態２に係る可変長符号復号化装置２０の動作を説明する。
【０１２７】
図７は、可変長符号復号化装置２０による具体的な動作を示す図である。以下、可変長符号復号化装置２０により、ビットストリーム「ａ１ｂ１−ｂ１６ｃ１−ｃ３２」を復号化する動作を説明する。なお、符号語ａ１、ｂ１−ｂ１６、及びｃ１−ｃ３２は、図５に示す符号語である。また、図４と同様の動作については、説明を省略し、ビットストリーム切出し部２１０の動作のみを説明する。
【０１２８】
また、ビットストリーム供給部２００は、初期値として、「ａ１ｂ１−ｂ１６ｃ１−ｃ３２ｄ１−ｄ１５」を出力し、レジスタ２０４は、初期値として、「ａ１ｂ１−ｂ１６ｃ１−ｃ１５」を保持している。
【０１２９】
＜第０サイクル＞
第０サイクルにおいて、ビットストリーム供給部２００は、初期値「ａ１ｂ１−ｂ１６ｃ１−ｃ３２ｄ１−ｄ１５」を出力する。
【０１３０】
シフタ２０１は、ビットストリーム供給部２００により出力されるビット列「ａ１ｂ１−ｂ１６ｃ１−ｃ３２ｄ１−ｄ１５」を、テーブル参照部１０１により出力された符号長「１」分左へシフトし、ビット列「ｂ１−ｂ１６ｃ１−ｃ１６」を出力する。
【０１３１】
シフタ２０２は、ビットストリーム供給部２００により出力されるビット列「ａ１ｂ１−ｂ１６ｃ１−ｃ３２ｄ１−ｄ１５」を、レジスタ１０６に保持される符号長「０」分左へシフトし、ビット列「ａ１ｂ１−ｂ１６ｃ１−ｃ１５」を出力する。
【０１３２】
マルチプレクサ２０３は、レジスタ１０４に保持される復号化完了信号が「０」なので、シフタ２０１により出力されたビット列「ｂ１−ｂ１６ｃ１−ｃ１６」を選択する。
【０１３３】
レジスタ２０４は、初期値「ａ１ｂ１−ｂ１６ｃ１−ｃ１５」を保持する。
ビットストリーム供給部２００は、マルチプレクサ１０９により選択された符号長が「１」なので、先頭のビットを１ビットずらして、ビット列「ｂ１−ｂ１６ｃ１−ｃ３２ｄ１−ｄ１６」を切出す。ビットストリーム供給部２００は、次のサイクルで、切出されたビット列「ｂ１−ｂ１６ｃ１−ｃ３２ｄ１−ｄ１６」を出力する。
【０１３４】
レジスタ２０４は、マルチプレクサ２０３により選択されたビット列「ｂ１−ｂ１６ｃ１−ｃ１６」を取り込み次のサイクルで出力する。
【０１３５】
＜第１サイクル＞
第１サイクルにおいて、ビットストリーム供給部２００は、第０サイクルで切出されたビット列「ｂ１−ｂ１６ｃ１−ｃ３２ｄ１−ｄ１６」を出力する。
【０１３６】
シフタ２０１は、ビットストリーム供給部２００により出力されるビット列「ｂ１−ｂ１６ｃ１−ｃ３２ｄ１−ｄ１６」を、テーブル参照部１０１により出力された符号長「０」分左へシフトし、ビット列「ｂ１−ｂ１６ｃ１−ｃ１６」を出力する。
【０１３７】
シフタ２０２は、ビットストリーム供給部２００により出力されるビット列「ｂ１−ｂ１６ｃ１−ｃ３２ｄ１−ｄ１６」を、レジスタ１０６に保持される符号長「０」分左へシフトし、ビット列「ｂ１−ｂ１６ｃ１−ｃ１６」を出力する。
【０１３８】
マルチプレクサ２０３は、レジスタ１０４に保持される復号化完了信号が「０」なので、シフタ２０１により出力されたビット列「ｂ１−ｂ１６ｃ１−ｃ１６」を選択する。
【０１３９】
レジスタ２０４は、第０サイクルで取り込まれた「ｂ１−ｂ１６ｃ１−ｃ１６」を保持する。
【０１４０】
ビットストリーム供給部２００は、マルチプレクサ１０９により選択された符号長が「０」なので、ビット列「ｂ１−ｂ１６ｃ１−ｃ３２ｄ１−ｄ１６」を切出す。ビットストリーム供給部２００は、次のサイクルで、切出されたビット列「ｂ１−ｂ１６ｃ１−ｃ３２ｄ１−ｄ１６」を出力する。
【０１４１】
レジスタ２０４は、マルチプレクサ２０３により選択されたビット列「ｂ１−ｂ１６ｃ１−ｃ１６」を取り込み次のサイクルで出力する。
【０１４２】
＜第２サイクル＞
第２サイクルにおいて、ビットストリーム供給部２００は、第１サイクルで切出されたビット列「ｂ１−ｂ１６ｃ１−ｃ３２ｄ１−ｄ１６」を出力する。
【０１４３】
シフタ２０１は、ビットストリーム供給部２００により出力されるビット列「ｂ１−ｂ１６ｃ１−ｃ３２ｄ１−ｄ１６」を、テーブル参照部１０１により出力された符号長「０」分左へシフトし、ビット列「ｂ１−ｂ１６ｃ１−ｃ１６」を出力する。
【０１４４】
シフタ２０２は、ビットストリーム供給部２００により出力されるビット列「ｂ１−ｂ１６ｃ１−ｃ３２ｄ１−ｄ１６」を、レジスタ１０６に保持される符号長「１６」分左へシフトし、ビット列「ｃ１−ｃ３２」を出力する。
【０１４５】
マルチプレクサ２０３は、レジスタ１０４に保持される復号化完了信号が「１」なので、シフタ２０２により出力されたビット列「ｃ１−ｃ３２」を選択する。
【０１４６】
レジスタ２０４は、第１サイクルで取り込まれた「ｂ１−ｂ１６ｃ１−ｃ１６」を保持する。
【０１４７】
ビットストリーム供給部２００は、マルチプレクサ１０９により選択された符号長が「１６」なので、先頭を１６ビットずらして、ビット列「ｃ１−ｃ３２ｄ１−ｄ３２」切出す。ビットストリーム供給部２００は、次のサイクルで、切出されたビット列「ｃ１−ｃ３２ｄ１−ｄ３２」を出力する。
【０１４８】
レジスタ２０４は、マルチプレクサ２０３により選択されたビット列「ｃ１−ｃ３２」を取り込み次のサイクルで出力する。
【０１４９】
＜第３サイクル＞
第３サイクルにおいて、ビットストリーム供給部２００は、第２サイクルで切出されたビット列「ｃ１−ｃ３２ｄ１−ｄ３２」を出力する。
【０１５０】
シフタ２０１は、ビットストリーム供給部２００により出力されるビット列「ｃ１−ｃ３２ｄ１−ｄ３２」を、テーブル参照部１０１により出力された符号長「０」分左へシフトし、ビット列「ｃ１−ｃ３２」を出力する。
【０１５１】
シフタ２０２は、ビットストリーム供給部２００により出力されるビット列「ｃ１−ｃ３２ｄ１−ｄ３２」を、レジスタ１０６に保持される符号長「０」分左へシフトし、ビット列「ｃ１−ｃ３２」を出力する。
【０１５２】
マルチプレクサ２０３は、レジスタ１０４に保持される復号化完了信号が「０」なので、シフタ２０１により出力されたビット列「ｃ１−ｃ３２」を選択する。
【０１５３】
レジスタ２０４は、第２サイクルで取り込まれた「ｃ１−ｃ３２」を保持する。
ビットストリーム供給部２００は、マルチプレクサ１０９により選択された符号長が「０」なので、ビット列「ｃ１−ｃ３２ｄ１−ｄ３２」を切出す。ビットストリーム供給部２００は、切出されたビット列「ｃ１−ｃ３２ｄ１−ｄ３２」を次のサイクルで出力する。
【０１５４】
レジスタ２０４は、マルチプレクサ２０３により選択されたビット列「ｃ１−ｃ３２」を取り込み次のサイクルで出力する。
【０１５５】
＜第４サイクル＞
第４サイクルにおいて、ビットストリーム供給部２００は、第３サイクルで切出されたビット列「ｃ１−ｃ３２ｄ１−ｄ３２」を出力する。
【０１５６】
シフタ２０１は、ビットストリーム供給部２００により出力されるビット列「ｃ１−ｃ３２ｄ１−ｄ３２」を、テーブル参照部１０１により出力された符号長「０」分左へシフトし、ビット列「ｃ１−ｃ３２」を出力する。
【０１５７】
シフタ２０２は、ビットストリーム供給部２００により出力されるビット列「ｃ１−ｃ３２ｄ１−ｄ３２」を、レジスタ１０６に保持される符号長「３２」分左へシフトし、ビット列「ｄ１−ｄ３２」を出力する。
【０１５８】
マルチプレクサ２０３は、レジスタ１０４に保持される復号化完了信号が「１」なので、シフタ２０２により出力されたビット列「ｄ１−ｄ３２」を選択する。
【０１５９】
レジスタ２０４は、第３サイクルで取り込まれた「ｃ１−ｃ３２」を保持する。
以上のように、ビットストリーム切出し部２１０は、未復号のビットストリームの先頭から、可変長符号化に用いられる符号語の最大符号長分（３２ビット）のビット列を切出し、切出したビット列をテーブル参照部１０１及び１０２に出力することができる。
【０１６０】
以上より、本発明の実施の形態２に係る可変長符号復号化装置２０のビットストリーム切出し部２１０は、１個の係数のみを含む符号語を復号化するテーブル参照部１０１に対応するシフタ２０１と、複数の係数を含む符号語を復号化するテーブル参照部１０２に対応するシフタ２０２とを備える。ここで、シフタ２０１は、テーブル参照部１０１の記憶部１１１に記憶される符号語の符号長分のビット数をシフトする機能のみを有する。また、シフタ２０２は、テーブル参照部１０２の記憶部１２１に記憶される符号語の符号長分のビット数をシフトする機能のみを有する。すなわち、シフタ２０１及び２０２のシフト可能なビット数を対応する前記可変長符号テーブルが出力し得る符号長に限定した構成にすることにより、シフタ２０１及び２０２が高速化される。これにより、本発明の実施の形態２に係る可変長符号復号化装置２０は、復号化された符号語の符号長を用いて未復号のビットストリームの先頭からビット列を切出す処理に要する時間を短縮することができる。すなわち、本発明の実施の形態２に係る可変長符号復号化装置２０は、可変長符号化された符号語を高速に復号化することができる。
【０１６１】
（実施の形態３）
本発明の実施の形態３に係る可変長符号復号化装置は、実施の形態１に係る可変長符号復号化装置１０の変形例であり、さらに、２個以上の係数を含む符号語を１サイクルで復号化するテーブル参照部を備える。これにより、２個以上の係数を含む符号語の復号化に要する時間を短縮することができる。
【０１６２】
まず、本発明の実施の形態３に係る可変長符号復号化装置の構成を説明する。
図８は、本発明の実施の形態３に係る可変長符号復号化装置３０の構成を示すブロック図である。なお、図１と同様の要素には同一の符号を付しており、説明は省略する。
【０１６３】
図８に示す可変長符号復号化装置３０は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置３０は、ビットストリーム切出し部１００と、テーブル参照部１０１、３００及び３０１と、マルチプレクサ１０３、１０７、１０８及び１０９と、レジスタ１０４、１０５及び１０６とを備える。可変長符号復号化装置３０は、実施の形態１に係る可変長符号復号化装置１０に対して、テーブル参照部３００、マルチプレクサ３０２、３０９、３１０、３１１、及びレジスタ３０３の構成又は接続関係と、テーブル参照部３０１、マルチプレクサ３０６、３０７及び３０８を備える点とが異なる。
【０１６４】
テーブル参照部３００は、判定部３２０と、記憶部３２１とを備える。
記憶部３２１は、２個以上の係数を含む複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とのテーブルである可変長符号テーブルを記憶する。
【０１６５】
判定部３２０は、ビットストリーム切出し部１００により切出されたビット列と記憶部３２１に記憶される可変長符号テーブルとを照合し、ビットストリーム切出し部１００により切出されたビット列に、記憶部３２１に記憶される符号語が含まれるか否かを判定する。判定部３２０は、判定結果を示す復号化完了信号を出力する。具体的には、判定部３２０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部３２１に記憶される符号語が含まれる場合に、復号化完了信号「１」を出力する。判定部３２０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部３２１に記憶される符号語が含まれない場合に、復号化完了信号「０」を出力する。また、判定部３２０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部３２１に記憶される符号語が含まれる場合に、該符号語に対応する復号化データ（ラン、レベル、ラスト）と符号長とを出力する。また、判定部３２０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部３２１に記憶される符号語が含まれない場合に、任意の復号化データと、符号長「０」とを出力する。
【０１６６】
テーブル参照部３０１は、判定部３３０と、記憶部３３１とを備える。
記憶部３３１は、記憶部３２１に記憶されていない２個以上の係数を含む複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とのテーブルである可変長符号テーブルを記憶する。
【０１６７】
判定部３３０は、ビットストリーム切出し部１００により切出されたビット列と記憶部３３１に記憶される可変長符号テーブルとを照合し、ビットストリーム切出し部１００により切出されたビット列に、記憶部３３１に記憶される符号語が含まれるか否かを判定する。判定部３３０は、判定結果を示す復号化完了信号を出力する。具体的には、判定部３３０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部３３１に記憶される符号語が含まれる場合に、復号化完了信号「１」を出力する。判定部３３０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部３３１に記憶される符号語が含まれない場合に、復号化完了信号「０」を出力する。また、判定部３３０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部３３１に記憶される符号語が含まれる場合に、該符号語に対応する復号化データ（ラン、レベル、ラスト）と符号長とを出力する。また、判定部３３０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部３３１に記憶される符号語が含まれない場合に、任意の復号化データと、符号長「０」とを出力する。
【０１６８】
マルチプレクサ３０２は、レジスタ３０３に保持される復号化完了信号を選択信号として、レジスタ３０３へ出力する信号を選択する。マルチプレクサ３０２は、選択信号が「０」の場合、テーブル参照部３００により出力された復号化完了信号を選択し、選択信号が「１」の場合、固定値「０」を選択する。
【０１６９】
レジスタ３０３は、マルチプレクサ３０２により選択された復号化完了信号を保持する。レジスタ３０４は、テーブル参照部３００により出力された復号化データを保持する。レジスタ３０５は、テーブル参照部３００により出力された符号長を保持する。
【０１７０】
マルチプレクサ３０６は、レジスタ３０３に保持される復号化完了信号に応じて、テーブル参照部３０１により出力される復号化完了信号と、レジスタ３０３に保持される復号化完了信号とのいずれかを選択する。マルチプレクサ３０６は、レジスタ３０３に保持される復号化完了信号が「０」の場合には、テーブル参照部３０１により出力される復号化完了信号を選択する。マルチプレクサ３０６は、レジスタ３０３に保持される復号化完了信号が「１」の場合には、レジスタ３０３に保持される復号化完了信号を選択する。
【０１７１】
マルチプレクサ３０７は、レジスタ３０３に保持される復号化完了信号に応じて、テーブル参照部３０１により出力される復号化データと、レジスタ３０４に保持される復号化データとのいずれかを選択する。マルチプレクサ３０７は、レジスタ３０３に保持される復号化完了信号が「０」の場合には、テーブル参照部３０１により出力される復号化データを選択する。マルチプレクサ３０７は、レジスタ３０３に保持される復号化完了信号が「１」の場合には、レジスタ３０４に保持される復号化データを選択する。
【０１７２】
マルチプレクサ３０８は、レジスタ３０３に保持される復号化完了信号に応じて、テーブル参照部３０１により出力される符号長と、レジスタ３０５に保持される符号長とのいずれかを選択する。マルチプレクサ３０８は、レジスタ３０３に保持される復号化完了信号が「０」の場合には、テーブル参照部３０１により出力される符号長を選択する。マルチプレクサ３０８は、レジスタ３０３に保持される復号化完了信号が「１」の場合には、レジスタ３０５に保持される符号長を選択する。
【０１７３】
マルチプレクサ３０９は、マルチプレクサ３０６により選択された復号化完了信号に応じて、テーブル参照部１０１により出力される復号化完了信号と、マルチプレクサ３０６により選択された復号化完了信号とのいずれかを選択する。マルチプレクサ３０９は、マルチプレクサ３０６により選択された復号化完了信号が「０」の場合には、テーブル参照部１０１により出力される復号化完了信号を選択する。マルチプレクサ３０９は、マルチプレクサ３０６により選択された復号化完了信号が「１」の場合には、マルチプレクサ３０６により選択された復号化完了信号を選択する。
【０１７４】
マルチプレクサ３１０は、マルチプレクサ３０６により選択された復号化完了信号に応じて、テーブル参照部１０１により出力される復号化データと、マルチプレクサ３０７により選択された復号化データとのいずれかを選択する。マルチプレクサ３１０は、マルチプレクサ３０６により選択された復号化完了信号が「０」の場合には、テーブル参照部１０１により出力される復号化データを選択する。マルチプレクサ３１０は、マルチプレクサ３０６により選択された復号化完了信号が「１」の場合には、マルチプレクサ３０７により選択された復号化データを選択する。
【０１７５】
マルチプレクサ３１１は、マルチプレクサ３０６により選択された復号化完了信号に応じて、テーブル参照部１０１により出力される符号長と、マルチプレクサ３０８により選択された符号長とのいずれかを選択する。マルチプレクサ３１１は、マルチプレクサ３０６により選択された復号化完了信号が「０」の場合には、テーブル参照部１０１により出力される符号長を選択する。マルチプレクサ３１１は、マルチプレクサ３０６により選択された復号化完了信号が「１」の場合には、マルチプレクサ３０８により選択された符号長を選択する。
【０１７６】
ビットストリーム切出し部１００は、判定部３２０により、ビットストリーム切出し部１００により切出されたビット列に、記憶部３２１に記憶される符号語が含まれると判定された場合、判定部３２０により判定が行われたサイクルの次のサイクルで、判定部３２０により出力された符号長に基づき、未復号のビットストリームの先頭を判定し、次に復号化されるビット列を切出す。また、ビットストリーム切出し部１００は、判定部３３０により、ビットストリーム切出し部１００により切出されたビット列に、記憶部３３１に記憶される符号語が含まれると判定された場合、判定部３３０により判定が行われたサイクルと同じサイクルで、判定部３３０により出力された符号長に基づき、未復号のビットストリームの先頭を判定し、次に復号化されるビット列を切出す。
【０１７７】
次に、本発明の実施の形態３に係る可変長符号復号化装置３０の動作を説明する。
図９は、可変長符号復号化装置３０による具体的な動作を示す図である。以下、可変長符号復号化装置３０により、ビットストリーム「ａ１ｂ１−ｂ１６ｃ１−ｃ３２」を復号化する動作を説明する。なお、符号語ａ１、ｂ１−ｂ１６、及びｃ１−ｃ３２は、図５に示す符号語である。また、図４と同様の動作については、説明を省略する。
【０１７８】
なお、ランの値が１以上である符号語ｂ１−ｂ１６は、テーブル参照部３００に記憶されており、符号語ｃ１−ｃ３２は、テーブル参照部３０１に記憶されている。また、レジスタ３０３は初期値として「０」を保持し、レジスタ３０４は、初期値として「（０、０、０）」を保持し、レジスタ３０５は、初期値として、「０」を保持している。
【０１７９】
＜第０サイクル＞
第０サイクルにおいて、テーブル参照部３００は、ビットストリーム切出し部１００により切出されたビット列「ａ１ｂ１−ｂ１６ｃ１−ｃ１５」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【０１８０】
テーブル参照部３０１は、ビットストリーム切出し部１００により切出されたビット列「ａ１ｂ１−ｂ１６ｃ１−ｃ１５」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【０１８１】
マルチプレクサ３０２は、レジスタ３０３に保持される復号化完了信号が「０」なので、テーブル参照部３００により出力された復号化完了信号「０」を選択する。
【０１８２】
レジスタ３０３は初期値である復号化完了信号「０」を保持し、レジスタ３０４は初期値である復号化データ「（０、０、０）」を保持し、レジスタ３０５は初期値である符号長「０」を保持する。
【０１８３】
マルチプレクサ３０６は、レジスタ３０３に保持される復号化完了信号が「０」なので、テーブル参照部３０１により出力された復号化完了信号「０」を選択する。マルチプレクサ３０７は、レジスタ３０３に保持される復号化完了信号が「０」なので、テーブル参照部３０１により出力された復号化データ「（ｘ、ｘ、ｘ）」を選択する。マルチプレクサ３０８は、レジスタ３０３に保持される復号化完了信号が「０」なので、テーブル参照部３０１により出力された符号長「０」を選択する。
【０１８４】
マルチプレクサ３０９は、レジスタ３０３に保持される復号化完了信号が「０」なので、テーブル参照部１０１により出力された復号化完了信号「１」を選択する。マルチプレクサ３１０は、レジスタ３０３に保持される復号化完了信号が「０」なので、テーブル参照部１０１により出力された復号化データ「（０、１、０）」を選択する。マルチプレクサ３１１は、レジスタ３０３に保持される復号化完了信号が「０」なので、テーブル参照部１０１により出力された符号長「１」を選択する。
【０１８５】
レジスタ３０３は、マルチプレクサ３０２により選択された復号化完了信号「０」を取り込み次のサイクルで出力する。レジスタ３０４は、テーブル参照部３００により出力された復号化データ「（ｘ、ｘ、ｘ）」を取り込み次のサイクルで出力する。レジスタ３０５は、テーブル参照部３００により出力された符号長「０」を取り込み次のサイクルで出力する。
【０１８６】
＜第１サイクル＞
第１サイクルにおいて、テーブル参照部３００は、ビットストリーム切出し部１００により切出されたビット列「ｂ１−ｂ１６ｃ１−ｃ１６」と記憶されている符号語「ｂ１−ｂ１６」とが一致するので、復号化完了信号「１」を出力し、復号化データ（ラン、レベル、ラスト）「（１、２、０）」を出力し、符号長「１６」を出力する。
【０１８７】
テーブル参照部３０１は、ビットストリーム切出し部１００により切出されたビット列「ｂ１−ｂ１６ｃ１−ｃ１６」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【０１８８】
マルチプレクサ３０２は、レジスタ３０３に保持される復号化完了信号が「０」なので、テーブル参照部３００により出力された復号化完了信号「１」を選択する。
【０１８９】
レジスタ３０３は、第０サイクルで取り込まれた復号化完了信号「０」を保持する。レジスタ３０４は、第０サイクルで取り込まれた復号化データ「（ｘ、ｘ、ｘ）」を保持する。レジスタ３０５は、第０サイクルで取り込まれた符号長「０」を保持する。
【０１９０】
マルチプレクサ３０６は、レジスタ３０３に保持される復号化完了信号が「０」なので、テーブル参照部３０１により出力された復号化完了信号「０」を選択する。マルチプレクサ３０７は、レジスタ３０３に保持される復号化完了信号が「０」なので、テーブル参照部３０１により出力された復号化データ「（ｘ、ｘ、ｘ）」を選択する。マルチプレクサ３０８は、レジスタ３０３に保持される復号化完了信号が「０」なので、テーブル参照部３０１により出力された符号長「０」を選択する。
【０１９１】
マルチプレクサ３０９は、レジスタ３０３に保持される復号化完了信号が「０」なので、テーブル参照部１０１により出力された復号化完了信号「０」を選択する。マルチプレクサ３１０は、レジスタ３０３に保持される復号化完了信号が「０」なので、テーブル参照部１０１により出力された復号化データ「（ｘ、ｘ、ｘ）」を選択する。マルチプレクサ３１１は、レジスタ３０３に保持される復号化完了信号が「０」なので、テーブル参照部１０１により出力された符号長「０」を選択する。
【０１９２】
レジスタ３０３は、マルチプレクサ３０２により選択された復号化完了信号「１」を取り込み次のサイクルで出力する。レジスタ３０４は、テーブル参照部３００により出力された復号化データ「（１、２、０）」を取り込み次のサイクルで出力する。レジスタ３０５は、テーブル参照部３００により出力された符号長「１６」を取り込み次のサイクルで出力する。
【０１９３】
＜第２サイクル＞
第２サイクルにおいて、テーブル参照部３００は、ビットストリーム切出し部１００により切出されたビット列「ｂ１−ｂ１６ｃ１−ｃ１６」と記憶されている符号語「ｂ１−ｂ１６」とが一致するので、復号化完了信号「１」を出力し、復号化データ（ラン、レベル、ラスト）「（１、２、０）」を出力し、符号長「１６」を出力する。
【０１９４】
テーブル参照部３０１は、ビットストリーム切出し部１００により切出されたビット列「ｂ１−ｂ１６ｃ１−ｃ１６」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【０１９５】
マルチプレクサ３０２は、レジスタ３０３に保持される復号化完了信号が「１」なので、固定値「０」を選択する。
【０１９６】
レジスタ３０３は、第１サイクルで取り込まれた復号化完了信号「１」を保持する。レジスタ３０４は、第１サイクルで取り込まれた復号化データ「（１、２、０）」を保持する。レジスタ３０５は、第１サイクルで取り込まれた符号長「１６」を保持する。
【０１９７】
マルチプレクサ３０６は、レジスタ３０３に保持される復号化完了信号が「１」なので、レジスタ３０３に保持される復号化完了信号「１」を選択する。マルチプレクサ３０７は、レジスタ３０３に保持される復号化完了信号が「１」なので、レジスタ３０４に保持される復号化データ「（１、２、０）」を選択する。マルチプレクサ３０８は、レジスタ３０３に保持される復号化完了信号が「１」なので、レジスタ３０５に保持される符号長「１６」を選択する。
【０１９８】
マルチプレクサ３０９は、レジスタ３０３に保持される復号化完了信号が「１」なので、マルチプレクサ３０６により選択された復号化完了信号「１」を選択する。マルチプレクサ３１０は、レジスタ３０３に保持される復号化完了信号が「１」なので、マルチプレクサ３０７により選択された復号化データ「（１、２、０）」を選択する。マルチプレクサ３１１は、レジスタ３０３に保持される復号化完了信号が「１」なので、マルチプレクサ３０８により選択された符号長「１６」を選択する。
【０１９９】
レジスタ３０３は、マルチプレクサ３０２により選択された復号化完了信号「０」を取り込み次のサイクルで出力する。レジスタ３０４は、テーブル参照部３００により出力された復号化データ「（１、２、０）」を取り込み次のサイクルで出力する。レジスタ３０５は、テーブル参照部３００により出力された符号長「１６」を取り込み次のサイクルで出力する。
【０２００】
＜第３サイクル＞
第３サイクルにおいて、テーブル参照部３００は、ビットストリーム切出し部１００により切出されたビット列「ｃ１−ｃ３２」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【０２０１】
テーブル参照部３０１は、ビットストリーム切出し部１００により切出されたビット列「ｃ１−ｃ３２」と記憶されている符号語「ｃ１−ｃ３２」とが一致するので、復号化完了信号「１」を出力し、復号化データ（ラン、レベル、ラスト）「（２、３、１）」を出力し、符号長「３２」を出力する。
【０２０２】
マルチプレクサ３０２は、レジスタ３０３に保持される復号化完了信号が「０」なので、テーブル参照部３００により出力された復号化完了信号「０」を出力する。
【０２０３】
レジスタ３０３は、第２サイクルで取り込まれた復号化完了信号「０」を保持する。レジスタ３０４は、第２サイクルで取り込まれた復号化データ「（１、２、０）」を保持する。レジスタ３０５は、第２サイクルで取り込まれた符号長「１６」を保持する。
【０２０４】
マルチプレクサ３０６は、レジスタ３０３に保持される復号化完了信号が「０」なので、テーブル参照部３０１により出力された復号化完了信号「１」を選択する。マルチプレクサ３０７は、レジスタ３０３に保持される復号化完了信号が「０」なので、テーブル参照部３０１により出力された復号化データ「（２、３、１）」を選択する。マルチプレクサ３０８は、レジスタ３０３に保持される復号化完了信号が「０」なので、テーブル参照部３０１により出力された符号長「３２」を選択する。
【０２０５】
マルチプレクサ３０９は、レジスタ３０３に保持される復号化完了信号が「１」なので、マルチプレクサ３０６により選択された復号化完了信号「１」を選択する。マルチプレクサ３１０は、レジスタ３０３に保持される復号化完了信号が「１」なので、マルチプレクサ３０７により選択された復号化データ「（２、３、０）」を選択する。マルチプレクサ３１１は、レジスタ３０３に保持される復号化完了信号が「１」なので、マルチプレクサ３０８により選択された符号長「３２」を選択する。
【０２０６】
以上より、本発明の実施の形態３に係る可変長符号復号化装置３０は、複数の係数を含む符号語を復号化するテーブル参照部３００及び３０１を備える。これにより、テーブル参照部３００及び３０１のそれぞれに記憶される符号語の数が減少するので、テーブル参照部３００及び３０１における照合に要する時間を短縮することができる。
【０２０７】
さらに、テーブル参照部３００で復号化された符号語に対しては、次のサイクルでビット列の切出しが行われ、テーブル参照部３０１で復号化された符号語に対しては、同じサイクルでビット列の切出しが行われる。テーブル参照部３０１で復号化される符号語は、１サイクルで１つの復号化及びビット列の切出しが行われるので、符号語当たりの処理サイクル数を平均的に減らすことができる。特に、上述した実施の形態１に係る可変長符号復号化装置１０において、テーブル参照部１０２による照合に要する時間が、テーブル参照部１０１による照合に要する時間とビットストリーム切出し部１００によるビット列の切出しに要する時間との和より長い場合に、効果的である。
【０２０８】
ここで、テーブル参照部３０１による判定処理（照合処理）に要する時間が、テーブル参照部１０１による判定処理（照合処理）に要する時間と同じ又は短くなるように、テーブル参照部３００及び３０１に記憶される符号語を分割することが好ましい。これにより、１サイクルで復号化を行う場合の照合に要する時間の最大値は増加せず、且つ２サイクルで復号化を行う場合の照合に要する時間を短縮することができる。
【０２０９】
（実施の形態４）
本発明の実施の形態４に係る可変長符号復号化装置は、実施の形態１に係る可変長符号復号化装置１０の変形例である。本発明の実施の形態４に係る可変長符号復号化装置は、逐次に処理が必要な復号化データの可変長符号テーブルを記憶するテーブル参照部と、逐次に処理が必要でない復号化データの可変長符号テーブルを記憶するテーブル参照部とを備える。これにより、逐次に処理が必要な復号化データをより高速に出力することができる。
【０２１０】
まず、本発明の実施の形態４に係る可変長符号復号化装置の構成を説明する。
図１０は、本発明の実施の形態４に係る可変長符号復号化装置４０の構成を示すブロック図である。なお、図１と同様の要素には同一の符号を付しており、説明は省略する。
【０２１１】
図１０に示す可変長符号復号化装置４０は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置４０は、ビットストリーム切出し部１００と、テーブル参照部４００、４０１及び４０２と、マルチプレクサ１０３、１０７、１０８及び１０９と、レジスタ１０４、１０５、１０６及び４０３とを備える。可変長符号復号化装置４０は、実施の形態１に係る可変長符号復号化装置１０に対して、テーブル参照部４００及び４０１の構成と、テーブル参照部４０２及びレジスタ４０３を備える点とが異なる。
【０２１２】
テーブル参照部４００は、判定部４１０と、記憶部４１１とを備える。
記憶部４１１は、１個の係数を含む複数の符号語と、該符号語にそれぞれ対応する逐次に処理が必要な復号化データと、該符号語にそれぞれ対応する符号長とのテーブルである可変長符号テーブルを記憶する。
【０２１３】
図１１は、記憶部４１１に記憶される可変長符号テーブルの一例を示す図である。図１１に示すように、記憶部４１１に記憶される可変長符号テーブルは、１個の係数を含む符号語と、符号語の復号化データのうち逐次に処理が必要であるラストと、符号語の符号の長さ（ビット数）である符号長とを含む。
【０２１４】
ここで、ラストが逐次に処理が必要な理由は、後続のビットストリームとして、異なる種別のデータが送られてくる場合があり、その情報を早期に外部に通知する必要があるからである。例えば、可変長符号化された画像データの後に、画像データ以外のデータが送られてくる場合がある。
【０２１５】
判定部４１０は、ビットストリーム切出し部１００により切出されたビット列と記憶部４１１に記憶される可変長符号テーブルとを照合し、ビットストリーム切出し部１００により切出されたビット列に、記憶部４１１に記憶される符号語が含まれるか否かを判定する。判定部４１０は、判定結果を示す復号化完了信号をマルチプレクサ１０７に出力する。具体的には、判定部４１０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部４１１に記憶される符号語が含まれる場合に、復号化完了信号「１」を出力する。判定部４１０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部４１１に記憶される符号語が含まれない場合に、復号化完了信号「０」を出力する。また、判定部４１０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部４１１に記憶される符号語が含まれる場合に、該符号語に対応する復号化データ（ラスト）をマルチプレクサ１０８に出力し、該符号語に対応する符号長をマルチプレクサ１０９に出力する。また、判定部４１０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部４１１に記憶される符号語が含まれない場合に、任意の復号化データ（ラスト）をマルチプレクサ１０８に出力し、符号長「０」をマルチプレクサ１０９に出力する。
【０２１６】
テーブル参照部４０１は、判定部４２０と、記憶部４２１とを備える。
記憶部４２１は、２個以上の係数を含む複数の符号語と、該符号語にそれぞれ対応する復号化データと、該符号語にそれぞれ対応する符号長とのテーブルである可変長符号テーブルを記憶する。
【０２１７】
図１２は、記憶部４２１に記憶される可変長符号テーブルの一例を示す図である。図１２に示すように、記憶部４２１に記憶される可変長符号テーブルは、２個以上の係数を含む符号語と、符号語の復号化データのうち逐次に処理が必要であるラストと、符号語の符号の長さ（ビット数）である符号長とを含む。
【０２１８】
判定部４２０は、ビットストリーム切出し部１００により切出されたビット列と記憶部４２１に記憶される可変長符号テーブルとを照合し、ビットストリーム切出し部１００により切出されたビット列に、記憶部４２１に記憶される符号語が含まれるか否かを判定する。判定部４２０は、判定結果を示す復号化完了信号をマルチプレクサ１０３に出力する。具体的には、判定部４２０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部４２１に記憶される符号語が含まれる場合に、復号化完了信号「１」を出力する。判定部４２０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部４２１に記憶される符号語が含まれない場合に、復号化完了信号「０」を出力する。また、判定部４２０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部４２１に記憶される符号語が含まれる場合に、該符号語に対応する復号化データ（ラスト）をレジスタ１０５に出力し、該符号語に対応する符号長をレジスタ１０６に出力する。また、判定部４２０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部４２１に記憶される符号語が含まれない場合に、任意の復号化データ（ラスト）をレジスタ１０５に出力し、符号長「０」をレジスタ１０６に出力する。
【０２１９】
テーブル参照部４０２は、判定部４３０と、記憶部４３１とを備える。
記憶部４３１は、記憶部４１１及び記憶部４２１に記憶される複数の符号語と、該符号語にそれぞれ対応する逐次処理が不要な復号化データとのテーブルである可変長符号テーブルを記憶する。
【０２２０】
図１３は、記憶部４３１に記憶される可変長符号テーブルの一例を示す図である。図１３に示すように、記憶部４３１に記憶される可変長符号テーブルは、符号語と、符号語の復号化データのうち逐次に処理が必要でないラン及びレベルとを含む。また、記憶部４３１は、記憶部４１１に記憶される符号語と、記憶部４２１に記憶される符号語とを記憶する。
【０２２１】
判定部４３０は、レジスタ４０３に保持されるビット列と記憶部４３１に記憶される可変長符号テーブルとを照合し、レジスタ４０３により保持されるビット列に、記憶部４３１に記憶される符号語が含まれるか否かを判定する。判定部４３０は、レジスタ４０３により保持されるビット列に、記憶部４３１に記憶される符号語が含まれる場合に、該符号語に対応する復号化データ（ラン、レベル）を出力する。また、判定部４３０は、レジスタ４０３により保持されるビット列に、記憶部４３１に記憶される符号語が含まれない場合に、任意の復号化データ（ラン、レベル）を出力する。
【０２２２】
ここで、判定部４３０により出力される復号化データは、マルチプレクサ１０７により選択される復号化完了信号が「１」となるサイクルの次のサイクルで有効である。
【０２２３】
レジスタ４０３は、ビットストリーム切出し部１００により切出されたビット列を保持する。
【０２２４】
次に、本発明の実施の形態４に係る可変長符号復号化装置４０の動作を説明する。
図１４は、可変長符号復号化装置４０による具体的な動作を示す図である。以下、可変長符号復号化装置４０により、ビットストリーム「ａ１ｂ１−ｂ１６ｃ１−ｃ３２」を復号化する動作を説明する。なお、図４と同様の動作については、説明を省略する。
【０２２５】
なお、レジスタ４０３は、初期値として、「０」を保持している。
【０２２６】
＜第０サイクル＞
第０サイクルにおいて、テーブル参照部４００は、ビットストリーム切出し部１００により切出されたビット列「ａ１ｂ１−ｂ１６ｃ１−ｃ１５」と記憶されている符号語「ａ１」とが一致するので、復号化完了信号「１」を出力し、復号化データ（ラスト）「０」を出力し、符号長「１」を出力する。
【０２２７】
テーブル参照部４０１は、ビットストリーム切出し部１００により切出されたビット列「ａ１ｂ１−ｂ１６ｃ１−ｃ１５」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラスト）「ｘ」を出力し、符号長「０」を出力する。
【０２２８】
レジスタ４０３は、初期値「０」を出力する。
テーブル参照部４０２は、レジスタ４０３により保持されるビット列「０」と記憶されている符号語とが一致しないので、復号化データ（ラン、レベル）「（ｘ、ｘ）」を出力する。
【０２２９】
レジスタ４０３は、ビットストリーム切出し部１００により切出されたビット列「ａ１ｂ１−ｂ１６ｃ１−ｃ１５」を取り込み次のサイクルで出力する。
【０２３０】
＜第１サイクル＞
第１サイクルにおいて、テーブル参照部４００は、ビットストリーム切出し部１００により切出されたビット列「ｂ１−ｂ１６ｃ１−ｃ１６」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラスト）「ｘ」を出力し、符号長「０」を出力する。
【０２３１】
テーブル参照部４０１は、ビットストリーム切出し部１００により切出されたビット列「ｂ１−ｂ１６ｃ１−ｃ１６」と記憶されている符号語「ｂ１−ｂ１６」とが一致するので、復号化完了信号「１」を出力し、復号化データ（ラスト）「０」を出力し、符号長「１６」を出力する。
【０２３２】
レジスタ４０３は、第０サイクルで取り込まれた「ａ１ｂ１−ｂ１６ｃ１−ｃ１５」を出力する。
【０２３３】
テーブル参照部４０２は、レジスタ４０３により保持されるビット列「ａ１ｂ１−ｂ１６ｃ１−ｃ１５」と記憶されている符号語「ａ１」とが一致するので、復号化データ（ラン、レベル）「（０、１）」を出力する。
【０２３４】
レジスタ４０３は、ビットストリーム切出し部１００により切出されたビット列「ｂ１−ｂ１６ｃ１−ｃ１６」を取り込み次のサイクルで出力する。
【０２３５】
＜第２サイクル＞
第２サイクルにおいて、テーブル参照部４００は、ビットストリーム切出し部１００により切出されたビット列「ｂ１−ｂ１６ｃ１−ｃ１６」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラスト）「ｘ」を出力し、符号長「０」を出力する。
【０２３６】
テーブル参照部４０１は、ビットストリーム切出し部１００により切出されたビット列「ｂ１−ｂ１６ｃ１−ｃ１６」と記憶されている符号語「ｂ１−ｂ１６」とが一致するので、復号化完了信号「１」を出力し、復号化データ（ラスト）「０」を出力し、符号長「１６」を出力する。
【０２３７】
レジスタ４０３は、第１サイクルで取り込まれた「ｂ１−ｂ１６ｃ１−ｃ１６」を出力する。
【０２３８】
テーブル参照部４０２は、レジスタ４０３により保持されるビット列「ｂ１−ｂ１６ｃ１−ｃ１６」と記憶されている符号語「ｂ１−ｂ１６」とが一致するので、復号化データ（ラン、レベル）「（１、２）」を出力する。
【０２３９】
レジスタ４０３は、ビットストリーム切出し部１００により切出されたビット列「ｂ１−ｂ１６ｃ１−ｃ１６」を取り込み次のサイクルで出力する。
【０２４０】
＜第３サイクル＞
第３サイクルにおいて、テーブル参照部４００は、ビットストリーム切出し部１００により切出されたビット列「ｃ１−ｃ３２」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラスト）「ｘ」を出力し、符号長「０」を出力する。
【０２４１】
テーブル参照部４０１は、ビットストリーム切出し部１００により切出されたビット列「ｃ１−ｃ３２」と記憶されている符号語「ｃ１−ｂ３２」とが一致するので、復号化完了信号「１」を出力し、復号化データ（ラスト）「１」を出力し、符号長「３２」を出力する。
【０２４２】
レジスタ４０３は、第２サイクルで取り込まれた「ｂ１−ｂ１６ｃ１−ｃ１６」を出力する。
【０２４３】
テーブル参照部４０２は、レジスタ４０３により保持されるビット列「ｂ１−ｂ１６ｃ１−ｃ１６」と記憶されている符号語「ｂ１−ｂ１６」とが一致するので、復号化データ（ラン、レベル）「（１、２）」を出力する。
【０２４４】
レジスタ４０３は、ビットストリーム切出し部１００により切出されたビット列「ｃ１−ｃ３２」を取り込み次のサイクルで出力する。
【０２４５】
＜第４サイクル＞
第４サイクルにおいて、テーブル参照部４００は、ビットストリーム切出し部１００により切出されたビット列「ｃ１−ｃ３２」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラスト）「ｘ」を出力し、符号長「０」を出力する。
【０２４６】
テーブル参照部４０１は、ビットストリーム切出し部１００により切出されたビット列「ｃ１−ｃ３２」と記憶されている符号語「ｃ１−ｂ３２」とが一致するので、復号化完了信号「１」を出力し、復号化データ（ラスト）「１」を出力し、符号長「３２」を出力する。
【０２４７】
レジスタ４０３は、第３サイクルで取り込まれた「ｃ１−ｃ３２」を出力する。
テーブル参照部４０２は、レジスタ４０３により保持されるビット列「ｃ１−ｃ３２」と記憶されている符号語「ｃ１−ｃ３２」とが一致するので、復号化データ（ラン、レベル）「（２、３）」を出力する。
【０２４８】
レジスタ４０３は、ビットストリーム切出し部１００により切出されたビット列「ｃ１−ｃ３２」を取り込み次のサイクルで出力する。
【０２４９】
＜第５サイクル＞
第５サイクルにおいて、テーブル参照部４００は、ビットストリーム切出し部１００により切出されたビット列「ｄ１−ｄ３２」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラスト）「ｘ」を出力し、符号長「０」を出力する。
【０２５０】
テーブル参照部４０１は、ビットストリーム切出し部１００により切出されたビット列「ｄ１−ｄ３２」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラスト）「ｘ」を出力し、符号長「０」を出力する。
【０２５１】
レジスタ４０３は、第４サイクルで取り込まれた「ｃ１−ｃ３２」を出力する。
テーブル参照部４０２は、レジスタ４０３により保持されるビット列「ｃ１−ｃ３２」と記憶されている符号語「ｃ１−ｃ３２」とが一致するので、復号化データ（ラン、レベル）「（２、３）」を出力する。
【０２５２】
以上のように、逐次に処理が必要でない復号化データ（ラン、レベル）は、テーブル参照部４０２により、テーブル参照部４００及び４０１による照合処理が行われるサイクルの次のサイクルで出力される。
【０２５３】
また、本発明の実施の形態４に係る可変長符号復号化装置４０において、復号化完了信号、逐次に処理が必要な復号化データ、及び符号長が、テーブル参照部４００及び４０１により記憶され、逐次に処理が必要でない復号化データは、テーブル参照部４０２に記憶される。これにより、全ての復号化データをテーブル参照部４００及び４０１に記憶する場合に比べて、テーブル参照部４００及び４０１の容量を削減することができる。これにより、テーブル参照部４００及び４０１の照合処理に要する時間を短縮することができる。よって、本発明の実施の形態４に係る可変長符号復号化装置４０は、可変長符号化された符号語の復号化を高速に行うことができる。
【０２５４】
なお、上記説明では、逐次に処理が必要でない復号化データを次のサイクルで出力する構成としているが、２サイクル以上後に出力してもよい。
【０２５５】
（実施の形態５）
本発明の実施の形態５に係る可変長符号復号化装置は、実施の形態１に係る可変長符号復号化装置１０の変形例であり、さらに、テーブル参照部１０１及び１０２に一致する符号語が記憶されていない場合に、エラーを検出するエラー検出部を備える。これにより、エラーが発生したことを外部に通知することができる。
【０２５６】
まず、本発明の実施の形態５に係る可変長符号復号化装置の構成を説明する。
図１５は、本発明の実施の形態５に係る可変長符号復号化装置５０の構成を示すブロック図である。なお、図１と同様の要素には同一の符号を付しており、説明は省略する。
【０２５７】
図１５に示す可変長符号復号化装置５０は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置５０は、ビットストリーム切出し部１００と、テーブル参照部１０１、１０２及び５０１と、マルチプレクサ１０３、１０７、１０８及び１０９と、レジスタ１０４、１０５、１０６及び４０３と、エラー検出部５０１とを備える。可変長符号復号化装置５０は、実施の形態１に係る可変長符号復号化装置１０の構成に加えて、レジスタ４０３と、テーブル参照部５００と、エラー検出部５０１とを備える。
【０２５８】
レジスタ４０３は、ビットストリーム切出し部１００により切出されたビット列を保持する。
【０２５９】
テーブル参照部５００は、判定部５１０と、記憶部５１１とを備える。
記憶部５１１は、記憶部１１１及び１２１に記憶されていない複数の符号語と、該符号語にそれぞれ対応するエラー種別とのテーブルである可変長符号テーブルを記憶する。すなわち、記憶部５１１は、可変長符号復号化装置５０により復号化される符号語に用いられる可変長符号化方式に規定されていない符号語と、該符号語にそれぞれ対応するエラー種別とを記憶する。ここで、エラー種別は、符号語の種類を識別するために使用される情報である。エラー種別は、符号語に対して任意に定義することができる。
【０２６０】
判定部５１０は、レジスタ４０３に保持されるビット列と記憶部５１１に記憶される可変長符号テーブルとを照合し、レジスタ４０３に保持されるビット列に、記憶部５１１に記憶される符号語が含まれるか否かを判定する。判定部３２０は、レジスタ４０３に保持されるビット列に、記憶部５１１に記憶される符号語が含まれる場合に、該符号語に対応するエラー種別を出力する。また、判定部５１０は、レジスタ４０３に保持されるビット列に、記憶部５１１に記憶される符号語が含まれない場合に、エラー種別「０」を出力する。
【０２６１】
エラー検出部５０１は、テーブル参照部１０１により出力された復号化完了信号とテーブル参照部１０２により出力された復号化完了信号とがともに「０」の場合に、可変長符号テーブルに規定されていない符号語が検出されたことを示すエラー検出信号「１」を出力する。すなわち、エラー検出部５０１は、判定部１１０により、ビットストリーム切出し部１００により切出されたビット列に、記憶部１１１に記憶される符号語が含まれないと判定され、且つ判定部１２０により、ビットストリーム切出し部１００により切出されたビット列に、記憶部１２１に記憶される符号語が含まれないと判定された場合に、エラーが検出されたことを示すエラー検出信号「１」を出力する。また、エラー検出部５０１は、テーブル参照部１０１により出力された復号化完了信号とテーブル参照部１０２により出力された復号化完了信号とのうち１以上が「１」の場合に、エラー検出信号「０」を出力する。
【０２６２】
次に、本発明の実施の形態５に係る可変長符号復号化装置５０の動作を説明する。
図１６は、可変長符号復号化装置５０による具体的な動作を示す図である。以下、可変長符号復号化装置５０により、ビットストリーム「ａ１ｂ１−ｂ１６ｃ１−ｃ３２ｄ１−ｄ３２」を復号化する動作を説明する。なお、符号語ｄ１−ｄ３２は、図５に示す符号語である。また、図４と同様の動作については、説明を省略する。また、レジスタ４０３の動作は、図１４と同様であり、説明を省略する。
【０２６３】
なお、符号語ｄ１−ｄ３２は、可変長符号テーブルに規定されていない符号語であり、記憶部５１１に記憶されている。また、符号語ｄ１−ｄ３２に対応するエラー種別は「Ｅ」と定義されている。
【０２６４】
＜第０サイクル＞
第０サイクルにおいて、テーブル参照部５００は、レジスタ４０３により保持されるビット列「０」と記憶されている符号語とが一致しないので、エラー種別「０」を出力する。
【０２６５】
エラー検出部５０１は、テーブル参照部１０１により出力された復号化完了信号が「１」なので、エラー検出信号「０」を出力する。
【０２６６】
＜第１サイクル＞
第１サイクルにおいて、テーブル参照部５００は、レジスタ４０３により保持されるビット列「ａ１ｂ１−ｂ１６ｃ１−ｃ１５」と記憶されている符号語とが一致しないので、エラー種別「０」を出力する。
【０２６７】
エラー検出部５０１は、テーブル参照部１０２により出力された復号化完了信号が「１」なので、エラー検出信号「０」を出力する。
【０２６８】
＜第２サイクル＞
第２サイクルにおいて、テーブル参照部５００は、レジスタ４０３により保持されるビット列「ｂ１−ｂ１６ｃ１−ｃ１６」と記憶されている符号語とが一致しないので、エラー種別「０」を出力する。
【０２６９】
エラー検出部５０１は、テーブル参照部１０２により出力された復号化完了信号が「１」なので、エラー検出信号「０」を出力する。
【０２７０】
＜第３サイクル＞
第３サイクルにおいて、テーブル参照部５００は、レジスタ４０３により保持されるビット列「ｂ１−ｂ１６ｃ１−ｃ１６」と記憶されている符号語とが一致しないので、エラー種別「０」を出力する。
【０２７１】
エラー検出部５０１は、テーブル参照部１０２により出力された復号化完了信号が「１」なので、エラー検出信号「０」を出力する。
【０２７２】
＜第４サイクル＞
第４サイクルにおいて、テーブル参照部５００は、レジスタ４０３により保持されるビット列「ｃ１ｃ３２」と記憶されている符号語とが一致しないので、エラー種別「０」を出力する。
【０２７３】
エラー検出部５０１は、テーブル参照部１０２により出力された復号化完了信号が「１」なので、エラー検出信号「０」を出力する。
【０２７４】
＜第５サイクル＞
第５サイクルにおいて、テーブル参照部５００は、レジスタ４０３により保持されるビット列「ｃ１ｃ３２」と記憶されている符号語とが一致しないので、エラー種別「０」を出力する。
【０２７５】
エラー検出部５０１は、テーブル参照部１０１により出力された復号化完了信号とテーブル参照部１０２により出力された復号化完了信号がともに「０」なので、エラー検出信号「１」を出力する。
【０２７６】
＜第６サイクル＞
第６サイクルにおいて、テーブル参照部５００は、レジスタ４０３により保持されるビット列「ｄ１ｄ３２」と記憶されている符号語「ｄ１−ｄ３２」とが一致するので、エラー種別「Ｅ」を出力する。
【０２７７】
エラー検出部５０１は、テーブル参照部１０１により出力された復号化完了信号とテーブル参照部１０２により出力された復号化完了信号がともに「０」なので、エラー検出信号「１」を出力する。
【０２７８】
以上のように、本発明の実施の形態５に係る可変長符号復号化装置５０は、ビットストリーム切出し部１００により切出されたビット列に、テーブル参照部１０１及びテーブル参照部１０２にともに記憶されていない符号語が含まれる場合に、エラー検出信号「１」を出力する。これにより、外部の装置は、エラー検出信号により、記憶部１１１及び記憶部１２１に記憶される可変長符号テーブルに規定されていない符号語が検出されたか否かを判定することができる。これにより、外部の装置は、エラーが検出された場合に、ビットストリームを停止させる等の処理を行うことができる。
【０２７９】
さらに、本発明の実施の形態５に係る可変長符号復号化装置５０は、可変長符号テーブルに規定されていない符号語が検出された場合に、該符号語に対応するエラー種別を出力する。これにより、外部の装置は、例えば、ビットストリーム中に可変長符号テーブルに規定されていない符号語が含まれることを事前に把握している場合に、該符号語を検出し、該符号語をスキップする、又は該符号語を可変長符号テーブルに規定されている符号語に入れ替えて再復号化する等の適応的なエラー隠蔽を行うことができる。
【０２８０】
なお、上記説明において、テーブル参照部５００は、符号語に対応するエラー種別を出力するとしたが、レジスタ４０３に保持される符号語が記憶部５１１に記憶される符号語と一致する場合に、該符号語をそのまま出力してもよい。また、符号語及びエラー種別を出力してもよい。また、符号語のみを出力する場合には、記憶部５１１は、エラー種別を記憶しなくてもよい。
【０２８１】
（実施の形態６）
本発明の実施の形態６に係る可変長符号復号化装置は、符号語に含まれる係数の数に応じて、最大で係数の個数分のサイクルで復号化及びビット列の切出しを行う。また、本発明の実施の形態６に係る可変長符号復号化装置は、復号化に要するサイクル数を変更可能である。これにより、本発明の実施の形態６に係る可変長符号復号化装置は、１つの符号語の復号化及びビット列の切出しに要するサイクル数を動作周波数や製造プロセスに応じて適応的に変更することができる。
【０２８２】
まず、本発明の実施の形態６に係る可変長符号復号化装置の構成を説明する。
図１７は、本発明の実施の形態６に係る可変長符号復号化装置６０の構成を示すブロック図である。なお、図１と同様の要素には同一の符号を付しており、説明は省略する。
【０２８３】
図１７に示す可変長符号復号化装置６０は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置６０は、ビットストリーム切出し部１００と、テーブル参照部１０１、６００、６０１、６０２、６０３及び６０４と、マルチプレクサ６０５、６１２、６１３、６１４、６１５、６２２、６２３、６２４、６２５、６３２、６３３、６３４、６３６、６３７及び６３８と、レジスタ６０６、６０７、６０８、６１６、６１７、６１８、６２６、６２７及び６２８と、スイッチ６０９、６１０、６１１、６１９、６２０、６２１、６２９、６３０及び６３１と、制御部６３５とを備える。
【０２８４】
また、可変長符号復号化装置６０が復号化する符号語は、係数が１〜３個含まれる符号語であるとする。
【０２８５】
テーブル参照部６００は、判定部６４０と、記憶部６４１とを備える（図示せず）。
記憶部６４１は、２個の係数を含む複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とのテーブルである可変長符号テーブルを記憶する。
【０２８６】
判定部６４０は、ビットストリーム切出し部１００により切出されたビット列と記憶部６４１に記憶される可変長符号テーブルとを照合し、ビットストリーム切出し部１００により切出されたビット列に、記憶部６４１に記憶される符号語が含まれるか否かを判定する。判定部６４０は、判定結果を示す復号化完了信号を出力する。具体的には、判定部６４０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部６４１に記憶される符号語が含まれる場合に、復号化完了信号「１」を出力する。判定部６４０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部６４１に記憶される符号語が含まれない場合に、復号化完了信号「０」を出力する。また、判定部６４０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部６４１に記憶される符号語が含まれる場合に、該符号語に対応する復号化データ（ラン、レベル、ラスト）と符号長とを出力する。また、判定部６４０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部６４１に記憶される符号語が含まれない場合に、任意の復号化データと、符号長「０」とを出力する。
【０２８７】
テーブル参照部６０１は、判定部６５０と、記憶部６５１とを備える（図示せず）。
記憶部６５１は、記憶部６４１に記憶されていない２個の係数を含む複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とのテーブルである可変長符号テーブルを記憶する。
【０２８８】
判定部６５０は、ビットストリーム切出し部１００により切出されたビット列と記憶部６５１に記憶される可変長符号テーブルとを照合し、ビットストリーム切出し部１００により切出されたビット列に、記憶部６５１に記憶される符号語が含まれるか否かを判定する。判定部６５０は、判定結果を示す復号化完了信号を出力する。具体的には、判定部６５０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部６５１に記憶される符号語が含まれる場合に、復号化完了信号「１」を出力する。判定部６５０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部６５１に記憶される符号語が含まれない場合に、復号化完了信号「０」を出力する。また、判定部６５０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部６５１に記憶される符号語が含まれる場合に、該符号語に対応する復号化データ（ラン、レベル、ラスト）と符号長とを出力する。また、判定部６５０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部６５１に記憶される符号語が含まれない場合に、任意の復号化データと、符号長「０」とを出力する。
【０２８９】
テーブル参照部６０２は、判定部６６０と、記憶部６６１とを備える（図示せず）。
記憶部６６１は、３個の係数を含む複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とのテーブルである可変長符号テーブルを記憶する。
【０２９０】
判定部６６０は、ビットストリーム切出し部１００により切出されたビット列と記憶部６６１に記憶される可変長符号テーブルとを照合し、ビットストリーム切出し部１００により切出されたビット列に、記憶部６６１に記憶される符号語が含まれるか否かを判定する。判定部６６０は、判定結果を示す復号化完了信号を出力する。具体的には、判定部６６０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部６６１に記憶される符号語が含まれる場合に、復号化完了信号「１」を出力する。判定部６６０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部６６１に記憶される符号語が含まれない場合に、復号化完了信号「０」を出力する。また、判定部６６０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部６６１に記憶される符号語が含まれる場合に、該符号語に対応する復号化データ（ラン、レベル、ラスト）と符号長とを出力する。また、判定部６６０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部６６１に記憶される符号語が含まれない場合に、任意の復号化データと、符号長「０」とを出力する。
【０２９１】
テーブル参照部６０３は、判定部６７０と、記憶部６７１とを備える（図示せず）。
記憶部６７１は、記憶部６６１に記憶されていない３個の係数を含む複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とのテーブルである可変長符号テーブルを記憶する。
【０２９２】
判定部６７０は、ビットストリーム切出し部１００により切出されたビット列と記憶部６７１に記憶される可変長符号テーブルとを照合し、ビットストリーム切出し部１００により切出されたビット列に、記憶部６７１に記憶される符号語が含まれるか否かを判定する。判定部６７０は、判定結果を示す復号化完了信号を出力する。具体的には、判定部６７０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部６７１に記憶される符号語が含まれる場合に、復号化完了信号「１」を出力する。判定部６８０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部６７１に記憶される符号語が含まれない場合に、復号化完了信号「０」を出力する。また、判定部６７０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部６７１に記憶される符号語が含まれる場合に、該符号語に対応する復号化データ（ラン、レベル、ラスト）と符号長とを出力する。また、判定部６７０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部６７１に記憶される符号語が含まれない場合に、任意の復号化データと、符号長「０」とを出力する。
【０２９３】
テーブル参照部６０４は、判定部６８０と、記憶部６８１とを備える（図示せず）。
記憶部６８１は、記憶部６６１及び記憶部６７１に記憶されていない３個の係数を含む複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とのテーブルである可変長符号テーブルを記憶する。
【０２９４】
判定部６８０は、ビットストリーム切出し部１００により切出されたビット列と記憶部６８１に記憶される可変長符号テーブルとを照合し、ビットストリーム切出し部１００により切出されたビット列に、記憶部６８１に記憶される符号語が含まれるか否かを判定する。判定部６８０は、判定結果を示す復号化完了信号を出力する。具体的には、判定部６８０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部６８１に記憶される符号語が含まれる場合に、復号化完了信号「１」を出力する。判定部６８０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部６８１に記憶される符号語が含まれない場合に、復号化完了信号「０」を出力する。また、判定部６８０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部６８１に記憶される符号語が含まれる場合に、該符号語に対応する復号化データ（ラン、レベル、ラスト）と符号長とを出力する。また、判定部６８０は、ビットストリーム切出し部１００により切出されたビット列に、記憶部６８１に記憶される符号語が含まれない場合に、任意の復号化データと、符号長「０」とを出力する。
【０２９５】
すなわち、テーブル参照部６００及びテーブル参照部６０１は、任意に２分割した２個の係数を含む符号語に対応する復号化データ（ラン、レベル、ラスト）と符号長とを記憶する。
【０２９６】
テーブル参照部６０２、テーブル参照部６０３及びテーブル参照部６０４は、任意に３分割した３個の係数を含む符号語に対応する復号化データ（ラン、レベル、ラスト）と符号長とを記憶する。
【０２９７】
マルチプレクサ６０５は、レジスタ６０６に保持される復号化完了信号を選択信号として、レジスタ６０６へ出力する信号を選択する。マルチプレクサ６０５は、選択信号が「０」の場合、テーブル参照部６００により出力された復号化完了信号を選択し、選択信号が「１」の場合、固定値「０」を選択する。
【０２９８】
レジスタ６０６は、マルチプレクサ６０５により選択された復号化完了信号を保持する。レジスタ６０７は、テーブル参照部６００により出力された復号化データを保持する。レジスタ６０８は、テーブル参照部６００により出力された符号長を保持する。
【０２９９】
スイッチ６０９、６１０、６１１、６１９、６２０、６２１、６２９、６３０及び６３１は、与えられた設定値「０」又は「１」に応じて、２種類の入力された信号のどちらかを出力するかを任意に設定することができるスイッチである。
【０３００】
スイッチ６０９、スイッチ６１０及びスイッチ６１１は、同一の設定値を保持する。スイッチ６０９は、テーブル参照部６００により出力された復号化完了信号及びレジスタ６０６に保持される復号化完了信号のうちどちらかをマルチプレクサ６１２に出力する。具体的には、スイッチ６０９は、設定値が「０」の場合、テーブル参照部６００により出力された復号化完了信号を出力し、設定値が「１」の場合、レジスタ６０６に保持される復号化完了信号を出力する。
【０３０１】
スイッチ６１０は、テーブル参照部６００により出力された復号化データ及びレジスタ６０７に保持される復号化データのうちどちらかをマルチプレクサ６１３に出力する。具体的には、スイッチ６１０は、設定値が「０」の場合、テーブル参照部６００により出力された復号化データを出力し、設定値が「１」の場合、レジスタ６０７に保持される復号化データを出力する。
【０３０２】
スイッチ６１１は、テーブル参照部６００により出力された符号長及びレジスタ６０８に保持される符号長のうちどちらかをマルチプレクサ６１４に出力する。具体的には、スイッチ６１１は、設定値が「０」の場合、テーブル参照部６００により出力された符号長を出力し、設定値が「１」の場合、レジスタ６０８に保持される符号長を出力する。
【０３０３】
マルチプレクサ６１２は、スイッチ６０９により出力される復号化完了信号に応じて、テーブル参照部６０１により出力される復号化完了信号と、スイッチ６０９により出力される復号化完了信号とのいずれかを選択する。マルチプレクサ６１２は、スイッチ６０９により出力される復号化完了信号が「０」の場合には、テーブル参照部６０１により出力される復号化完了信号を選択する。マルチプレクサ６１２は、スイッチ６０９により出力される復号化完了信号が「１」の場合には、スイッチ６０９により出力される復号化完了信号を選択する。
【０３０４】
マルチプレクサ６１３は、スイッチ６０９により出力される復号化完了信号に応じて、テーブル参照部６０１により出力される復号化データと、スイッチ６１０により出力される復号化データとのいずれかを選択する。マルチプレクサ６１３は、スイッチ６０９により出力される復号化完了信号が「０」の場合には、テーブル参照部６０１により出力される復号化データを選択する。マルチプレクサ６１３は、スイッチ６０９により出力される復号化完了信号が「１」の場合には、スイッチ６１０により出力される復号化データを選択する。
【０３０５】
マルチプレクサ６１４は、スイッチ６０９により出力される復号化完了信号に応じて、テーブル参照部６０１により出力される符号長と、スイッチ６１１により出力される符号長とのいずれかを選択する。マルチプレクサ６１４は、スイッチ６０９により出力される復号化完了信号が「０」の場合には、テーブル参照部６０１により出力される符号長を選択する。マルチプレクサ６１４は、スイッチ６０９により出力される復号化完了信号が「１」の場合には、スイッチ６１１により出力される符号長を選択する。
【０３０６】
マルチプレクサ６１５は、レジスタ６１６に保持される復号化完了信号を選択信号として、レジスタ６１６へ出力する信号を選択する。マルチプレクサ６１５は、選択信号が「０」の場合、テーブル参照部６０２により出力された復号化完了信号を選択し、選択信号が「１」の場合、固定値「０」を選択する。
【０３０７】
レジスタ６１６は、マルチプレクサ６１５により選択された復号化完了信号を保持する。レジスタ６１７は、テーブル参照部６０２により出力された復号化データを保持する。レジスタ６１８は、テーブル参照部６０２により出力された符号長を保持する。
【０３０８】
スイッチ６１９、スイッチ６２０及びスイッチ６２１は、同一の設定値を保持する。スイッチ６１９は、テーブル参照部６０２により出力された復号化完了信号及びレジスタ６１６に保持される復号化完了信号のうちどちらかをマルチプレクサ６２２に出力する。具体的には、スイッチ６１９は、設定値が「０」の場合、テーブル参照部６０２により出力された復号化完了信号を出力し、設定値が「１」の場合、レジスタ６１６に保持される復号化完了信号を出力する。
【０３０９】
スイッチ６２０は、テーブル参照部６０２により出力された復号化データ及びレジスタ６１７に保持される復号化データのうちどちらかをマルチプレクサ６２３に出力する。具体的には、スイッチ６２０は、設定値が「０」の場合、テーブル参照部６０２により出力された復号化データを出力し、設定値が「１」の場合、レジスタ６１７に保持される復号化データを出力する。
【０３１０】
スイッチ６２１は、テーブル参照部６０２により出力された符号長及びレジスタ６１８に保持される符号長のうちどちらかをマルチプレクサ６２４に出力する。具体的には、スイッチ６２１は、設定値が「０」の場合、テーブル参照部６０２により出力された符号長を出力し、設定値が「１」の場合、レジスタ６１８に保持される符号長を出力する。
【０３１１】
マルチプレクサ６２２は、スイッチ６１９により出力される復号化完了信号に応じて、テーブル参照部６０３により出力される復号化完了信号と、スイッチ６１９により出力される復号化完了信号とのいずれかを選択する。マルチプレクサ６２２は、スイッチ６１９により出力される復号化完了信号が「０」の場合には、テーブル参照部６０３により出力される復号化完了信号を選択する。マルチプレクサ６２２は、スイッチ６１９により出力される復号化完了信号が「１」の場合には、スイッチ６１９により出力される復号化完了信号を選択する。
【０３１２】
マルチプレクサ６２３は、スイッチ６１９により出力される復号化完了信号に応じて、テーブル参照部６０３により出力される復号化データと、スイッチ６２０により出力される復号化データとのいずれかを選択する。マルチプレクサ６２３は、スイッチ６１９により出力される復号化完了信号が「０」の場合には、テーブル参照部６０３により出力される復号化データを選択する。マルチプレクサ６２３は、スイッチ６１９により出力される復号化完了信号が「１」の場合には、スイッチ６２０により出力される復号化データを選択する。
【０３１３】
マルチプレクサ６２４は、スイッチ６１９により出力される復号化完了信号に応じて、テーブル参照部６０３により出力される符号長と、スイッチ６２１により出力される符号長とのいずれかを選択する。マルチプレクサ６２４は、スイッチ６１９により出力される復号化完了信号が「０」の場合には、テーブル参照部６０３により出力される符号長を選択する。マルチプレクサ６２４は、スイッチ６１９により出力される復号化完了信号が「１」の場合には、スイッチ６２１により出力される符号長を選択する。
【０３１４】
マルチプレクサ６２５は、レジスタ６２６に保持される復号化完了信号を選択信号として、レジスタ６２６へ出力する信号を選択する。マルチプレクサ６２５は、選択信号が「０」の場合、マルチプレクサ６２２により選択された復号化完了信号を選択し、選択信号が「１」の場合、固定値「０」を選択する。
【０３１５】
レジスタ６２６は、マルチプレクサ６２５により選択された復号化完了信号を保持する。レジスタ６２７は、マルチプレクサ６２３により選択された復号化データを保持する。レジスタ６２８は、マルチプレクサ６２４により選択された符号長を保持する。
【０３１６】
スイッチ６２９、スイッチ６３０及びスイッチ６３１は、同一の設定値を保持する。スイッチ６２９は、マルチプレクサ６２２により選択された復号化完了信号及びレジスタ６２６に保持される復号化完了信号のうちどちらかをマルチプレクサ６３２に出力する。具体的には、スイッチ６２９は、設定値が「０」の場合、マルチプレクサ６２２により選択された復号化完了信号を出力し、設定値が「１」の場合、レジスタ６２６に保持される復号化完了信号を出力する。
【０３１７】
スイッチ６３０は、マルチプレクサ６２３により選択された復号化データ及びレジスタ６２７に保持される復号化データのうちどちらかをマルチプレクサ６３３に出力する。具体的には、スイッチ６３０は、設定値が「０」の場合、マルチプレクサ６２３により選択された復号化データを出力し、設定値が「１」の場合、レジスタ６２７に保持される復号化データを出力する。
【０３１８】
スイッチ６３１は、マルチプレクサ６２４により選択された符号長及びレジスタ６２８に保持される符号長のうちどちらかをマルチプレクサ６３４に出力する。具体的には、スイッチ６３１は、設定値が「０」の場合、マルチプレクサ６２４により選択された符号長を出力し、設定値が「１」の場合、レジスタ６２８に保持される符号長を出力する。
【０３１９】
マルチプレクサ６３２は、スイッチ６２９により出力される復号化完了信号に応じて、テーブル参照部６０４により出力される復号化完了信号と、スイッチ６２９により出力される復号化完了信号とのいずれかを選択する。マルチプレクサ６３２は、スイッチ６２９により出力される復号化完了信号が「０」の場合には、テーブル参照部６０４により出力される復号化完了信号を選択する。マルチプレクサ６３２は、スイッチ６２９により出力される復号化完了信号が「１」の場合には、スイッチ６２９により出力される復号化完了信号を選択する。
【０３２０】
マルチプレクサ６３３は、スイッチ６２９により出力される復号化完了信号に応じて、テーブル参照部６０４により出力される復号化データと、スイッチ６３０により出力される復号化データとのいずれかを選択する。マルチプレクサ６３３は、スイッチ６２９により出力される復号化完了信号が「０」の場合には、テーブル参照部６０４により出力される復号化データを選択する。マルチプレクサ６３３は、スイッチ６２９により出力される復号化完了信号が「１」の場合には、スイッチ６３０により出力される復号化データを選択する。
【０３２１】
マルチプレクサ６３４は、スイッチ６２９により出力される復号化完了信号に応じて、テーブル参照部６０４により出力される符号長と、スイッチ６３１により出力される符号長とのいずれかを選択する。マルチプレクサ６３４は、スイッチ６２９により出力される復号化完了信号が「０」の場合には、テーブル参照部６０４により出力される符号長を選択する。マルチプレクサ６３４は、スイッチ６２９により出力される復号化完了信号が「１」の場合には、スイッチ６３１により出力される符号長を選択する。
【０３２２】
制御部６３５は、マルチプレクサ６３６、６３７及び６３８に選択信号を出力する。制御部６３５は、テーブル参照部１０１により出力された復号化完了信号が「１」の場合、選択信号「０」を出力し、マルチプレクサ６１２により選択された復号化完了信号が「１」の場合、選択信号「１」を出力し、マルチプレクサ６３２により選択された復号化完了信号が「１」の場合、選択信号「２」を出力する。また、制御部６３５は、テーブル参照部１０１により出力された復号化完了信号、マルチプレクサ６１２により選択された復号化完了信号、及びマルチプレクサ６３２により選択された復号化完了信号が全て「０」の場合、選択信号「０」を出力する。
【０３２３】
マルチプレクサ６３６、マルチプレクサ６３７及びマルチプレクサ６３８は、制御部６３５により出力された選択信号を用いて、出力する信号を選択する。
【０３２４】
マルチプレクサ６３６は、制御部６３５により出力される選択信号が「０」の場合、テーブル参照部１０１により出力された復号化完了信号を選択する。マルチプレクサ６３６は、制御部６３５により出力される選択信号が「１」の場合、マルチプレクサ６１２により選択された復号化完了信号を選択する。マルチプレクサ６３６は、制御部６３５により出力される選択信号が「２」の場合、マルチプレクサ６３２により選択された復号化完了信号を選択する。
【０３２５】
マルチプレクサ６３７は、制御部６３５により出力される選択信号が「０」の場合、テーブル参照部１０１により出力された復号化データを選択する。マルチプレクサ６３７は、制御部６３５により出力される選択信号が「１」の場合、マルチプレクサ６１３により選択された復号化データを選択する。マルチプレクサ６３７は、制御部６３５により出力される選択信号が「２」の場合、マルチプレクサ６３３により選択された復号化データを選択する。
【０３２６】
マルチプレクサ６３８は、制御部６３５により出力される選択信号が「０」の場合、テーブル参照部１０１により出力された符号長を選択する。マルチプレクサ６３８は、制御部６３５により出力される選択信号が「１」の場合、マルチプレクサ６１４により選択された符号長を選択する。マルチプレクサ６３８は、制御部６３５により出力される選択信号が「２」の場合、マルチプレクサ６３４により選択された符号長を選択する。
【０３２７】
ここで、マルチプレクサ６３７により選択される復号化データは、マルチプレクサ６３６により選択される復号化完了信号が「１」となるサイクルでのみ有効である。
【０３２８】
ビットストリーム切出し部１００は、判定部６４０により、ビットストリーム切出し部１００により切出されたビット列に、記憶部６４１に記憶される符号語が含まれると判定された場合、判定部６４０により判定が行われたサイクルと同じサイクル、又は次のサイクルで、判定部６４０により出力された符号長に基づき、未復号のビットストリームの先頭を判定し、次に復号化されるビット列を切出す。
【０３２９】
ビットストリーム切出し部１００は、判定部６５０により、ビットストリーム切出し部１００により切出されたビット列に、記憶部６５１に記憶される符号語が含まれると判定された場合、判定部６５０により判定が行われたサイクルと同じサイクルで、判定部６５０により出力された符号長に基づき、未復号のビットストリームの先頭を判定し、次に復号化されるビット列を切出す。
【０３３０】
ビットストリーム切出し部１００は、判定部６６０により、ビットストリーム切出し部１００により切出されたビット列に、記憶部６６１に記憶される符号語が含まれると判定された場合、判定部６６０により判定が行われたサイクルと同じサイクル、１サイクル後のサイクル、又は２サイクル後のサイクルで、判定部６６０により出力された符号長に基づき、未復号のビットストリームの先頭を判定し、次に復号化されるビット列を切出す。
【０３３１】
ビットストリーム切出し部１００は、判定部６７０により、ビットストリーム切出し部１００により切出されたビット列に、記憶部６７１に記憶される符号語が含まれると判定された場合、判定部６７０により判定が行われたサイクルと同じサイクル、又は次のサイクルで、判定部６７０により出力された符号長に基づき、未復号のビットストリームの先頭を判定し、次に復号化されるビット列を切出す。
【０３３２】
ビットストリーム切出し部１００は、判定部６８０により、ビットストリーム切出し部１００により切出されたビット列に、記憶部６８１に記憶される符号語が含まれると判定された場合、判定部６８０により判定が行われたサイクルと同じサイクルで、判定部６８０により出力された符号長に基づき、未復号のビットストリームの先頭を判定し、次に復号化されるビット列を切出す。
【０３３３】
スイッチ６０９、６１０及び６１１は、判定部６４０により、ビットストリーム切出し部１００により切出されたビット列に、記憶部６４１に記憶される符号語が含まれると判定された場合の、ビットストリーム切出し部１００によるビット列の切出しが行われるサイクルを、判定部６４０により判定が行われたサイクルと同じサイクル、又は次のサイクルに切り替える。
【０３３４】
スイッチ６１９、６２０、６２１、６２９、６３０及び６３１は、判定部６６０により、ビットストリーム切出し部１００により切出されたビット列に、記憶部６６１に記憶される符号語が含まれると判定された場合の、ビットストリーム切出し部１００によるビット列の切出しが行われるサイクルを、判定部６６０により判定が行われたサイクルと同じサイクル、１サイクル後のサイクル、又は２サイクル後のサイクルに切り替える。
【０３３５】
スイッチ６２９、６３０及び６３１は、判定部６７０により、ビットストリーム切出し部１００により切出されたビット列に、記憶部６７１に記憶される符号語が含まれると判定された場合の、ビットストリーム切出し部１００によるビット列の切出しが行われるサイクルを、判定部６７０により判定が行われたサイクルと同じサイクル、又は次のサイクルに切り替える。
【０３３６】
次に、本発明の実施の形態６に係る可変長符号復号化装置６０の動作を説明する。
図１８は、可変長符号復号化装置６０による具体的な動作を示す図である。図１９は、可変長符号復号化装置６０に入力されるビットストリームに含まれる符号語の一例を示す図である。以下、可変長符号復号化装置６０により、ビットストリーム「ｌ１ｍ１−ｍ８ｎ１−ｎ１６ｏ１−ｏ３２」を復号化する動作を説明する。
【０３３７】
図１９に示すランの値が「０」である符号語ｌ１は、テーブル参照部１０１に記憶されており、ランの値が１である符号語ｍ１−ｍ８は、テーブル参照部６００に記憶されており、ランの値が２である符号語ｎ１−ｎ１６は、テーブル参照部６０３に記憶されておりランの値が２である符号語ｏ１−ｏ３２は、テーブル参照部６０３に記憶されている。
【０３３８】
また、スイッチ６０９、スイッチ６１０及びスイッチ６１１は、同一の設定値「０」を保持し、スイッチ６１９、スイッチ６２０及びスイッチ６２１は、同一の設定値「０」を保持し、スイッチ６２９、スイッチ６３０及びスイッチ６３１は、同一の設定値「１」を保持する。
【０３３９】
また、ビットストリーム切出し部１００は初期値として「ｌ１ｍ１−ｍ８ｎ１−ｎ１６ｏ１−ｏ７」を出力し、レジスタ６２６は初期値として「０」を保持し、レジスタ６２７は、初期値として「（０、０、０）」を保持し、レジスタ６２８は、初期値として、「０」を保持している。
【０３４０】
＜第０サイクル＞
第０サイクルにおいて、ビットストリーム切出し部１００は、初期値「ｌ１ｍ１−ｍ８ｎ１−ｎ１６ｏ１−ｏ７」を出力する。
【０３４１】
テーブル参照部１０１は、ビットストリーム切出し部１００により切出されたビット列「ｌ１ｍ１−ｍ８ｎ１−ｎ１６ｏ１−ｏ７」と記憶されている符号語「ｌ１」とが一致するので、復号化完了信号「１」を出力し、復号化データ（ラン、レベル、ラスト）「（０、１、０）」を出力し、符号長「１」を出力する。
【０３４２】
テーブル参照部６００は、ビットストリーム切出し部１００により切出されたビット列「ｌ１ｍ１−ｍ８ｎ１−ｎ１６ｏ１−ｏ７」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【０３４３】
テーブル参照部６０１は、ビットストリーム切出し部１００により切出されたビット列「ｌ１ｍ１−ｍ８ｎ１−ｎ１６ｏ１−ｏ７」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【０３４４】
テーブル参照部６０２は、ビットストリーム切出し部１００により切出されたビット列「ｌ１ｍ１−ｍ８ｎ１−ｎ１６ｏ１−ｏ７」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【０３４５】
テーブル参照部６０３は、ビットストリーム切出し部１００により切出されたビット列「ｌ１ｍ１−ｍ８ｎ１−ｎ１６ｏ１−ｏ７」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【０３４６】
テーブル参照部６０４は、ビットストリーム切出し部１００により切出されたビット列「ｌ１ｍ１−ｍ８ｎ１−ｎ１６ｏ１−ｏ７」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【０３４７】
スイッチ６０９は、設定値が「０」なので、テーブル参照部６００により出力された復号化完了信号「０」を出力する。スイッチ６１０は、設定値が「０」なので、テーブル参照部６００により出力された復号化データ「（ｘ、ｘ、ｘ）」を出力する。スイッチ６１１は、設定値が「０」なので、テーブル参照部６００により出力された符号長「０」を出力する。
【０３４８】
マルチプレクサ６１２は、スイッチ６０９により出力された復号化完了信号が「０」なので、テーブル参照部６０１により出力された復号化完了信号「０」を選択する。マルチプレクサ６１３は、スイッチ６０９により出力された復号化完了信号が「０」なので、テーブル参照部６０１により出力された復号化データ「（ｘ、ｘ、ｘ）」を選択する。マルチプレクサ６１４は、スイッチ６０９により出力された復号化完了信号が「０」なので、テーブル参照部６０１により出力された符号長「０」を選択する。
【０３４９】
スイッチ６１９は、設定値が「０」なので、テーブル参照部６０２により出力された復号化完了信号「０」を出力する。スイッチ６２０は、設定値が「０」なので、テーブル参照部６０２により出力された復号化データ「（ｘ、ｘ、ｘ）」を出力する。スイッチ６２１は、設定値が「０」なので、テーブル参照部６０２により出力された符号長「０」を出力する。
【０３５０】
マルチプレクサ６２２は、スイッチ６１９により出力された復号化完了信号が「０」なので、テーブル参照部６０３により出力された復号化完了信号「０」を選択する。マルチプレクサ６２３は、スイッチ６１９により出力された復号化完了信号が「０」なので、テーブル参照部６０３により出力された復号化データ「（ｘ、ｘ、ｘ）」を選択する。マルチプレクサ６２４は、スイッチ６１９により出力された復号化完了信号が「０」なので、テーブル参照部６０３により出力された符号長「０」を選択する。
【０３５１】
レジスタ６２６は、初期値「０」を保持する。レジスタ６２７は、初期値「（０、０、０）」を保持する。レジスタ６２８は、初期値「０」を保持する。
【０３５２】
マルチプレクサ６２５は、レジスタ６２６に保持される復号化完了信号が「０」なので、マルチプレクサ６２２により選択された復号化完了信号「０」を選択する。
【０３５３】
スイッチ６２９は、設定値が「１」なので、レジスタ６２６に保持される復号化完了信号「０」を出力する。スイッチ６３０は、設定値が「１」なので、レジスタ６２７に保持される復号化データ「（ｘ、ｘ、ｘ）」を出力する。スイッチ６３１は、設定値が「１」なので、レジスタ６２８に保持される符号長「０」を出力する。
【０３５４】
マルチプレクサ６３２は、スイッチ６２９により出力された復号化完了信号が「０」なので、テーブル参照部６０４により出力された復号化完了信号「０」を選択する。マルチプレクサ６３３は、スイッチ６２９により出力された復号化完了信号が「０」なので、テーブル参照部６０４により出力された復号化データ「（ｘ、ｘ、ｘ）」を選択する。マルチプレクサ６３４は、スイッチ６２９により出力された復号化完了信号が「０」なので、テーブル参照部６０４により出力された符号長「０」を選択する。
【０３５５】
制御部６３５は、テーブル参照部１０１により出力された復号化完了信号が「１」なので、選択信号「０」を出力する。
【０３５６】
マルチプレクサ６３６は、制御部６３５により出力された選択信号が「０」なので、テーブル参照部１０１により出力された復号化完了信号「１」を選択する。マルチプレクサ６３７は、制御部６３５により出力された選択信号が「０」なので、テーブル参照部１０１により出力された復号化データ「（０、１、０）」を選択する。マルチプレクサ６３８は、制御部６３５により出力された選択信号が「０」なので、テーブル参照部１０１により出力された符号長「１」を選択する。
【０３５７】
ビットストリーム切出し部１００は、マルチプレクサ６３８により選択された符号長が「１」なので、先頭のビットを１ビットずらして、ビット列「ｍ１−ｍ８ｎ１−ｎ１６ｏ１−ｏ８」を切出す。ビットストリーム切出し部１００は、次のサイクルで、切出されたビット列「ｍ１−ｍ８ｎ１−ｎ１６ｏ１−ｏ８」を出力する。
【０３５８】
レジスタ６２６は、マルチプレクサ６２５により選択された復号化完了信号「０」を取り込み次のサイクルで出力する。レジスタ６２７は、マルチプレクサ６２３により選択された復号化データ「（ｘ、ｘ、ｘ）」を取り込み次のサイクルで出力する。レジスタ６２８は、マルチプレクサ６２４により選択された符号長「０」を取り込み次のサイクルで出力する。
【０３５９】
＜第１サイクル＞
第１サイクルにおいて、ビットストリーム切出し部１００は、第０サイクルで切出されたビット列「ｍ１−ｍ８ｎ１−ｎ１６ｏ１−ｏ８」を出力する。
【０３６０】
テーブル参照部１０１は、ビットストリーム切出し部１００により切出されたビット列「ｍ１−ｍ８ｎ１−ｎ１６ｏ１−ｏ８」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【０３６１】
テーブル参照部６００は、ビットストリーム切出し部１００により切出されたビット列「ｍ１−ｍ８ｎ１−ｎ１６ｏ１−ｏ８」と記憶されている符号語「ｍ１−ｍ８」とが一致するので、復号化完了信号「１」を出力し、復号化データ（ラン、レベル、ラスト）「（１、２、０）」を出力し、符号長「８」を出力する。
【０３６２】
テーブル参照部６０１は、ビットストリーム切出し部１００により切出されたビット列「ｍ１−ｍ８ｎ１−ｎ１６ｏ１−ｏ８」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【０３６３】
テーブル参照部６０２は、ビットストリーム切出し部１００により切出されたビット列「ｍ１−ｍ８ｎ１−ｎ１６ｏ１−ｏ８」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【０３６４】
テーブル参照部６０３は、ビットストリーム切出し部１００により切出されたビット列「ｍ１−ｍ８ｎ１−ｎ１６ｏ１−ｏ８」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【０３６５】
テーブル参照部６０４は、ビットストリーム切出し部１００により切出されたビット列「ｍ１−ｍ８ｎ１−ｎ１６ｏ１−ｏ８」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【０３６６】
スイッチ６０９は、設定値が「０」なので、テーブル参照部６００により出力された復号化完了信号「１」を出力する。スイッチ６１０は、設定値が「０」なので、テーブル参照部６００により出力された復号化データ「（１、２、０）」を出力する。スイッチ６１１は、設定値が「０」なので、テーブル参照部６００により出力された符号長「８」を出力する。
【０３６７】
マルチプレクサ６１２は、スイッチ６０９により出力された復号化完了信号が「１」なので、スイッチ６０９により出力された復号化完了信号「１」を選択する。マルチプレクサ６１３は、スイッチ６０９により出力された復号化完了信号が「１」なので、スイッチ６１０により出力された復号化データ「（１、２、０）」を選択する。マルチプレクサ６１４は、スイッチ６０９により出力された復号化完了信号が「１」なので、スイッチ６１１により出力された符号長「８」を選択する。
【０３６８】
スイッチ６１９は、設定値が「０」なので、テーブル参照部６０２により出力された復号化完了信号「０」を出力する。スイッチ６２０は、設定値が「０」なので、テーブル参照部６０２により出力された復号化データ「（ｘ、ｘ、ｘ）」を出力する。スイッチ６２１は、設定値が「０」なので、テーブル参照部６０２により出力された符号長「０」を出力する。
【０３６９】
マルチプレクサ６２２は、スイッチ６１９により出力された復号化完了信号が「０」なので、テーブル参照部６０３により出力された復号化完了信号「０」を選択する。マルチプレクサ６２３は、スイッチ６１９により出力された復号化完了信号が「０」なので、テーブル参照部６０３により出力された復号化データ「（ｘ、ｘ、ｘ）」を選択する。マルチプレクサ６２４は、スイッチ６１９により出力された復号化完了信号が「０」なので、テーブル参照部６０３により出力された符号長「０」を選択する。
【０３７０】
レジスタ６２６は、第０サイクルで取り込まれた復号化完了信号「０」を保持する。レジスタ６２７は、第０サイクルで取り込まれた復号化データ「（ｘ、ｘ、ｘ）」を保持する。レジスタ６２８は、第０サイクルで取り込まれた符号長「０」を保持する。
【０３７１】
マルチプレクサ６２５は、レジスタ６２６に保持される復号化完了信号が「０」なので、マルチプレクサ６２２により選択された復号化完了信号「０」を選択する。
【０３７２】
スイッチ６２９は、設定値が「１」なので、レジスタ６２６に保持される復号化完了信号「０」を出力する。スイッチ６３０は、設定値が「１」なので、レジスタ６２７に保持される復号化データ「（ｘ、ｘ、ｘ）」を出力する。スイッチ６３１は、設定値が「１」なので、レジスタ６２８に保持される符号長「０」を出力する。
【０３７３】
マルチプレクサ６３２は、スイッチ６２９により出力された復号化完了信号が「０」なので、テーブル参照部６０４により出力された復号化完了信号「０」を選択する。マルチプレクサ６３３は、スイッチ６２９により出力された復号化完了信号が「０」なので、テーブル参照部６０４により出力された復号化データ「（ｘ、ｘ、ｘ）」を選択する。マルチプレクサ６３４は、スイッチ６２９により出力された復号化完了信号が「０」なので、テーブル参照部６０４により出力された符号長「０」を選択する。
【０３７４】
制御部６３５は、マルチプレクサ６１２により出力された復号化完了信号が「１」なので、選択信号「１」を出力する。
【０３７５】
マルチプレクサ６３６は、制御部６３５により出力された選択信号が「１」なので、マルチプレクサ６１２により選択された復号化完了信号「１」を選択する。マルチプレクサ６３７は、制御部６３５により出力された選択信号が「１」なので、マルチプレクサ６１３により選択された復号化データ「（１、２、０）」を選択する。マルチプレクサ６３８は、制御部６３５により出力された選択信号が「１」なので、マルチプレクサ６１４により選択された符号長「８」を選択する。
【０３７６】
ビットストリーム切出し部１００は、マルチプレクサ６３８により選択された符号長が「８」なので、先頭のビットを８ビットずらして、ビット列「ｎ１−ｎ１６ｏ１−ｏ１６」を切出す。ビットストリーム切出し部１００は、次のサイクルで、切出されたビット列「ｎ１−ｎ１６ｏ１−ｏ１６」を出力する。
【０３７７】
レジスタ６２６は、マルチプレクサ６２５により選択された復号化完了信号「０」を取り込み次のサイクルで出力する。レジスタ６２７は、マルチプレクサ６２３により選択された復号化データ「（ｘ、ｘ、ｘ）」を取り込み次のサイクルで出力する。レジスタ６２８は、マルチプレクサ６２４により選択された符号長「０」を取り込み次のサイクルで出力する。
【０３７８】
＜第２サイクル＞
第２サイクルにおいて、ビットストリーム切出し部１００は、第１サイクルで切出されたビット列「ｎ１−ｎ１６ｏ１−ｏ１６」を出力する。
【０３７９】
テーブル参照部１０１は、ビットストリーム切出し部１００により切出されたビット列「ｎ１−ｎ１６ｏ１−ｏ１６」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【０３８０】
テーブル参照部６００は、ビットストリーム切出し部１００により切出されたビット列「ｎ１−ｎ１６ｏ１−ｏ１６」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【０３８１】
テーブル参照部６０１は、ビットストリーム切出し部１００により切出されたビット列「ｎ１−ｎ１６ｏ１−ｏ１６」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【０３８２】
テーブル参照部６０２は、ビットストリーム切出し部１００により切出されたビット列「ｎ１−ｎ１６ｏ１−ｏ１６」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【０３８３】
テーブル参照部６０３は、ビットストリーム切出し部１００により切出されたビット列「ｎ１−ｎ１６ｏ１−ｏ１６」と記憶されている符号語「ｎ１−ｎ１６」とが一致するので、復号化完了信号「１」を出力し、復号化データ（ラン、レベル、ラスト）「（２、３、０）」を出力し、符号長「１６」を出力する。
【０３８４】
テーブル参照部６０４は、ビットストリーム切出し部１００により切出されたビット列「ｎ１−ｎ１６ｏ１−ｏ１６」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【０３８５】
スイッチ６０９は、設定値が「０」なので、テーブル参照部６００により出力された復号化完了信号「０」を出力する。スイッチ６１０は、設定値が「０」なので、テーブル参照部６００により出力された復号化データ「（ｘ、ｘ、ｘ）」を出力する。スイッチ６１１は、設定値が「０」なので、テーブル参照部６００により出力された符号長「０」を出力する。
【０３８６】
マルチプレクサ６１２は、スイッチ６０９により出力された復号化完了信号が「０」なので、テーブル参照部６０１により出力された復号化完了信号「０」を選択する。マルチプレクサ６１３は、スイッチ６０９により出力された復号化完了信号が「０」なので、テーブル参照部６０１により出力された復号化データ「（ｘ、ｘ、ｘ）」を選択する。マルチプレクサ６１４は、スイッチ６０９により出力された復号化完了信号が「０」なので、テーブル参照部６０１により出力された符号長「０」を選択する。
【０３８７】
スイッチ６１９は、設定値が「０」なので、テーブル参照部６０２により出力された復号化完了信号「０」を出力する。スイッチ６２０は、設定値が「０」なので、テーブル参照部６０２により出力された復号化データ「（ｘ、ｘ、ｘ）」を出力する。スイッチ６２１は、設定値が「０」なので、テーブル参照部６０２により出力された符号長「０」を出力する。
【０３８８】
マルチプレクサ６２２は、スイッチ６１９により出力された復号化完了信号が「０」なので、テーブル参照部６０３により出力された復号化完了信号「１」を選択する。マルチプレクサ６２３は、スイッチ６１９により出力された復号化完了信号が「０」なので、テーブル参照部６０３により出力された復号化データ「（２、３、０）」を選択する。マルチプレクサ６２４は、スイッチ６１９により出力された復号化完了信号が「０」なので、テーブル参照部６０３により出力された符号長「１６」を選択する。
【０３８９】
レジスタ６２６は、第１サイクルで取り込まれた復号化完了信号「０」を保持する。レジスタ６２７は、第１サイクルで取り込まれた復号化データ「（ｘ、ｘ、ｘ）」を保持する。レジスタ６２８は、第１サイクルで取り込まれた符号長「０」を保持する。
【０３９０】
マルチプレクサ６２５は、レジスタ６２６に保持される復号化完了信号が「０」なので、マルチプレクサ６２２により選択された復号化完了信号「１」を選択する。
【０３９１】
スイッチ６２９は、設定値が「１」なので、レジスタ６２６に保持される復号化完了信号「０」を出力する。スイッチ６３０は、設定値が「１」なので、レジスタ６２７に保持される復号化データ「（ｘ、ｘ、ｘ）」を出力する。スイッチ６３１は、設定値が「１」なので、レジスタ６２８に保持される符号長「０」を出力する。
【０３９２】
マルチプレクサ６３２は、スイッチ６２９により出力された復号化完了信号が「０」なので、テーブル参照部６０４により出力された復号化完了信号「０」を選択する。マルチプレクサ６３３は、スイッチ６２９により出力された復号化完了信号が「０」なので、テーブル参照部６０４により出力された復号化データ「（ｘ、ｘ、ｘ）」を選択する。マルチプレクサ６３４は、スイッチ６２９により出力された復号化完了信号が「０」なので、テーブル参照部６０４により出力された符号長「０」を選択する。
【０３９３】
制御部６３５は、テーブル参照部１０１により出力された復号化完了信号、マルチプレクサ６１２により選択された復号化完了信号、及びマルチプレクサ６３２により選択された復号化完了信号が全て「０」なので、選択信号「０」を出力する。
【０３９４】
マルチプレクサ６３６は、制御部６３５により出力された選択信号が「０」なので、テーブル参照部１０１により出力された復号化完了信号「０」を選択する。マルチプレクサ６３７は、制御部６３５により出力された選択信号が「０」なので、テーブル参照部１０１により出力された復号化データ「（ｘ、ｘ、ｘ）」を選択する。マルチプレクサ６３８は、制御部６３５により出力された選択信号が「０」なので、テーブル参照部１０１により出力された符号長「０」を選択する。
【０３９５】
ビットストリーム切出し部１００は、マルチプレクサ６３８により選択された符号長が「０」なので、ビット列「ｎ１−ｎ１６ｏ１−ｏ１６」を切出す。ビットストリーム切出し部１００は、次のサイクルで、切出されたビット列「ｎ１−ｎ１６ｏ１−ｏ１６」を出力する。
【０３９６】
レジスタ６２６は、マルチプレクサ６２５により選択された復号化完了信号「１」を取り込み次のサイクルで出力する。レジスタ６２７は、マルチプレクサ６２３により選択された復号化データ「（２、３、０）」を取り込み次のサイクルで出力する。レジスタ６２８は、マルチプレクサ６２４により選択された符号長「１６」を取り込み次のサイクルで出力する。
【０３９７】
＜第３サイクル＞
第３サイクルにおいて、ビットストリーム切出し部１００は、第２サイクルで切出されたビット列「ｎ１−ｎ１６ｏ１−ｏ１６」を出力する。
【０３９８】
テーブル参照部１０１は、ビットストリーム切出し部１００により切出されたビット列「ｎ１−ｎ１６ｏ１−ｏ１６」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【０３９９】
テーブル参照部６００は、ビットストリーム切出し部１００により切出されたビット列「ｎ１−ｎ１６ｏ１−ｏ１６」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【０４００】
テーブル参照部６０１は、ビットストリーム切出し部１００により切出されたビット列「ｎ１−ｎ１６ｏ１−ｏ１６」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【０４０１】
テーブル参照部６０２は、ビットストリーム切出し部１００により切出されたビット列「ｎ１−ｎ１６ｏ１−ｏ１６」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【０４０２】
テーブル参照部６０３は、ビットストリーム切出し部１００により切出されたビット列「ｎ１−ｎ１６ｏ１−ｏ１６」と記憶されている符号語「ｎ１−ｎ１６」とが一致するので、復号化完了信号「１」を出力し、復号化データ（ラン、レベル、ラスト）「（２、３、０）」を出力し、符号長「１６」を出力する。
【０４０３】
テーブル参照部６０４は、ビットストリーム切出し部１００により切出されたビット列「ｎ１−ｎ１６ｏ１−ｏ１６」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【０４０４】
スイッチ６０９は、設定値が「０」なので、テーブル参照部６００により出力された復号化完了信号「０」を出力する。スイッチ６１０は、設定値が「０」なので、テーブル参照部６００により出力された復号化データ「（ｘ、ｘ、ｘ）」を出力する。スイッチ６１１は、設定値が「０」なので、テーブル参照部６００により出力された符号長「０」を出力する。
【０４０５】
マルチプレクサ６１２は、スイッチ６０９により出力された復号化完了信号が「０」なので、テーブル参照部６０１により出力された復号化完了信号「０」を選択する。マルチプレクサ６１３は、スイッチ６０９により出力された復号化完了信号が「０」なので、テーブル参照部６０１により出力された復号化データ「（ｘ、ｘ、ｘ）」を選択する。マルチプレクサ６１４は、スイッチ６０９により出力された復号化完了信号が「０」なので、テーブル参照部６０１により出力された符号長「０」を選択する。
【０４０６】
スイッチ６１９は、設定値が「０」なので、テーブル参照部６０２により出力された復号化完了信号「０」を出力する。スイッチ６２０は、設定値が「０」なので、テーブル参照部６０２により出力された復号化データ「（ｘ、ｘ、ｘ）」を出力する。スイッチ６２１は、設定値が「０」なので、テーブル参照部６０２により出力された符号長「０」を出力する。
【０４０７】
マルチプレクサ６２２は、スイッチ６１９により出力された復号化完了信号が「０」なので、テーブル参照部６０３により出力された復号化完了信号「１」を選択する。マルチプレクサ６２３は、スイッチ６１９により出力された復号化完了信号が「０」なので、テーブル参照部６０３により出力された復号化データ「（２、３、０）」を選択する。マルチプレクサ６２４は、スイッチ６１９により出力された復号化完了信号が「０」なので、テーブル参照部６０３により出力された符号長「１６」を選択する。
【０４０８】
レジスタ６２６は、第２サイクルで取り込まれた復号化完了信号「１」を保持する。レジスタ６２７は、第２サイクルで取り込まれた復号化データ「（２、３、０）」を保持する。レジスタ６２８は、第２サイクルで取り込まれた符号長「１６」を保持する。
【０４０９】
マルチプレクサ６２５は、レジスタ６２６に保持される復号化完了信号が「１」なので、固定値「０」を選択する。
【０４１０】
スイッチ６２９は、設定値が「１」なので、レジスタ６２６に保持される復号化完了信号「１」を出力する。スイッチ６３０は、設定値が「１」なので、レジスタ６２７に保持される復号化データ「（２、３、０）」を出力する。スイッチ６３１は、設定値が「１」なので、レジスタ６２８に保持される符号長「１６」を出力する。
【０４１１】
マルチプレクサ６３２は、スイッチ６２９により出力された復号化完了信号が「１」なので、スイッチ６２９により出力された復号化完了信号「１」を選択する。マルチプレクサ６３３は、スイッチ６２９により出力された復号化完了信号が「１」なので、スイッチ６３０により出力された復号化データ「（２、３、０）」を選択する。マルチプレクサ６３４は、スイッチ６２９により出力された復号化完了信号が「１」なので、スイッチ６３１により出力された符号長「１６」を選択する。
【０４１２】
制御部６３５は、マルチプレクサ６３２により選択された復号化完了信号「１」なので、選択信号「２」を出力する。
【０４１３】
マルチプレクサ６３６は、制御部６３５により出力された選択信号が「２」なので、マルチプレクサ６３２により選択された復号化完了信号「１」を選択する。マルチプレクサ６３７は、制御部６３５により出力された選択信号が「２」なので、マルチプレクサ６３３により選択された復号化データ「（２、３、０）」を選択する。マルチプレクサ６３８は、制御部６３５により出力された選択信号が「２」なので、マルチプレクサ６３４により選択された符号長「１６」を選択する。
【０４１４】
ビットストリーム切出し部１００は、マルチプレクサ６３８により選択された符号長が「１６」なので、先頭のビットを１６ビットずらして、ビット列「ｏ１−ｏ３２」を切出す。ビットストリーム切出し部１００は、次のサイクルで、切出されたビット列「ｏ１−ｏ３２」を出力する。
【０４１５】
レジスタ６２６は、マルチプレクサ６２５により選択された復号化完了信号「０」を取り込み次のサイクルで出力する。レジスタ６２７は、マルチプレクサ６２３により選択された復号化データ「（２、３、０）」を取り込み次のサイクルで出力する。レジスタ６２８は、マルチプレクサ６２４により選択された符号長「１６」を取り込み次のサイクルで出力する。
【０４１６】
＜第４サイクル＞
第４サイクルにおいて、ビットストリーム切出し部１００は、第３サイクルで切出されたビット列「ｏ１−ｏ３２」を出力する。
【０４１７】
テーブル参照部１０１は、ビットストリーム切出し部１００により切出されたビット列「ｏ１−ｏ３２」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【０４１８】
テーブル参照部６００は、ビットストリーム切出し部１００により切出されたビット列「ｏ１−ｏ３２」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【０４１９】
テーブル参照部６０１は、ビットストリーム切出し部１００により切出されたビット列「ｏ１−ｏ３２」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【０４２０】
テーブル参照部６０２は、ビットストリーム切出し部１００により切出されたビット列「ｏ１−ｏ３２」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【０４２１】
テーブル参照部６０３は、ビットストリーム切出し部１００により切出されたビット列「ｏ１−ｏ３２」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ（ラン、レベル、ラスト）「（ｘ、ｘ、ｘ）」を出力し、符号長「０」を出力する。
【０４２２】
テーブル参照部６０４は、ビットストリーム切出し部１００により切出されたビット列「ｏ１−ｏ３２」と記憶されている符号語「ｏ１−ｏ３２」とが一致するので、復号化完了信号「１」を出力し、復号化データ（ラン、レベル、ラスト）「（２、４、１）」を出力し、符号長「３２」を出力する。
【０４２３】
スイッチ６０９は、設定値が「０」なので、テーブル参照部６００により出力された復号化完了信号「０」を出力する。スイッチ６１０は、設定値が「０」なので、テーブル参照部６００により出力された復号化データ「（ｘ、ｘ、ｘ）」を出力する。スイッチ６１１は、設定値が「０」なので、テーブル参照部６００により出力された符号長「０」を出力する。
【０４２４】
マルチプレクサ６１２は、スイッチ６０９により出力された復号化完了信号が「０」なので、テーブル参照部６０１により出力された復号化完了信号「０」を選択する。マルチプレクサ６１３は、スイッチ６０９により出力された復号化完了信号が「０」なので、テーブル参照部６０１により出力された復号化データ「（ｘ、ｘ、ｘ）」を選択する。マルチプレクサ６１４は、スイッチ６０９により出力された復号化完了信号が「０」なので、テーブル参照部６０１により出力された符号長「０」を選択する。
【０４２５】
スイッチ６１９は、設定値が「０」なので、テーブル参照部６０２により出力された復号化完了信号「０」を出力する。スイッチ６２０は、設定値が「０」なので、テーブル参照部６０２により出力された復号化データ「（ｘ、ｘ、ｘ）」を出力する。スイッチ６２１は、設定値が「０」なので、テーブル参照部６０２により出力された符号長「０」を出力する。
【０４２６】
マルチプレクサ６２２は、スイッチ６１９により出力された復号化完了信号が「０」なので、テーブル参照部６０３により出力された復号化完了信号「０」を選択する。マルチプレクサ６２３は、スイッチ６１９により出力された復号化完了信号が「０」なので、テーブル参照部６０３により出力された復号化データ「（ｘ、ｘ、ｘ）」を選択する。マルチプレクサ６２４は、スイッチ６１９により出力された復号化完了信号が「０」なので、テーブル参照部６０３により出力された符号長「０」を選択する。
【０４２７】
レジスタ６２６は、第３サイクルで取り込まれた復号化完了信号「０」を保持する。レジスタ６２７は、第３サイクルで取り込まれた復号化データ「（２、３、０）」を保持する。レジスタ６２８は、第３サイクルで取り込まれた符号長「１６」を保持する。
【０４２８】
マルチプレクサ６２５は、レジスタ６２６に保持される復号化完了信号が「０」なので、マルチプレクサ６２２により選択された復号化完了信号「０」を出力する。
【０４２９】
スイッチ６２９は、設定値が「１」なので、レジスタ６２６に保持される復号化完了信号「０」を出力する。スイッチ６３０は、設定値が「１」なので、レジスタ６２７に保持される復号化データ「（２、３、０）」を出力する。スイッチ６３１は、設定値が「１」なので、レジスタ６２８に保持される符号長「１６」を出力する。
【０４３０】
マルチプレクサ６３２は、スイッチ６２９により出力された復号化完了信号が「０」なので、テーブル参照部６０４により出力された復号化完了信号「１」を選択する。マルチプレクサ６３３は、スイッチ６２９により出力された復号化完了信号が「０」なので、テーブル参照部６０４により出力された復号化データ「（２、４、１）」を選択する。マルチプレクサ６３４は、スイッチ６２９により出力された復号化完了信号が「０」なので、テーブル参照部６０４により出力された符号長「３２」を選択する。
【０４３１】
制御部６３５は、マルチプレクサ６３２により選択された復号化完了信号「１」なので、選択信号「２」を出力する。
【０４３２】
マルチプレクサ６３６は、制御部６３５により出力された選択信号が「２」なので、マルチプレクサ６３２により選択された復号化完了信号「１」を選択する。マルチプレクサ６３７は、制御部６３５により出力された選択信号が「２」なので、マルチプレクサ６３３により選択された復号化データ「（２、４、１）」を選択する。マルチプレクサ６３８は、制御部６３５により出力された選択信号が「２」なので、マルチプレクサ６３４により選択された符号長「３２」を選択する。
【０４３３】
以上のように、１個の係数を含む符号語、２個の係数を含む符号語、及び３個の係数を含む符号語のうちテーブル参照部６０４に記憶される符号語は、１サイクルで、復号化及びビット列の切出し処理が行われる。また、３個の係数を含む符号語のうちテーブル参照部６０２及び６０３に記憶される符号語は、２サイクルで復号化及びビット列の切出し処理が行われる。
【０４３４】
また、スイッチ６０９、６１０及び６１１に設定値「１」を設定することで、テーブル参照部６００に記憶される２個の係数を含む符号語の復号化及びビット列の切出し処理を、２サイクルで行うことができる。
【０４３５】
また、スイッチ６１９、６２０及び６２１に設定値「１」を設定し、スイッチ６２９、６３０及び６３１に設定値「１」を設定することで、テーブル参照部６０２に記憶される３個の係数を含む符号語の復号化及びビット列の切出し処理を、３サイクルで行い、テーブル参照部６０３に記憶される３個の係数を含む符号語の復号化及びビット列の切出し処理を、２サイクルで行うことができる。
【０４３６】
また、スイッチ６１９、６２０及び６２１に設定値「１」を設定し、スイッチ６２９、６３０及び６３１に設定値「０」を設定することで、テーブル参照部６０２に記憶される３個の係数を含む符号語の復号化及びビット列の切出し処理を、２サイクルで行い、テーブル参照部６０３に記憶される３個の係数を含む符号語の復号化及びビット列の切出し処理を、１サイクルで行うことができる。
【０４３７】
また、スイッチ６１９、６２０及び６２１に設定値「０」を設定し、スイッチ６２９、６３０及び６３１に設定値「０」を設定することで、テーブル参照部６０２に記憶される３個の係数を含む符号語の復号化及びビット列の切出し処理を、１サイクルで行い、テーブル参照部６０３に記憶される３個の係数を含む符号語の復号化及びビット列の切出し処理を、１サイクルで行うことができる。
【０４３８】
以上より、本発明の実施の形態６に係る可変長符号復号化装置６０は、符号語に含まれる係数の数ｎ（ｎ：自然数）毎に、ｎ個のテーブル参照部を備える。また、各テーブル参照部は、ｎ個の符号語を含む符号語に対するテーブルをｎ個のテーブルに分割したテーブルを記憶する。これにより、各テーブル参照部が記憶する符号語の数を削減することができる。よって、各テーブル参照部の照合に要する時間を削減することができる。
【０４３９】
また、本発明の実施の形態６に係る可変長符号復号化装置６０は、ｎ個の係数を含む符号語に対して、最大ｎサイクルで、復号化及びビット列の切出し処理を行う。これにより、１サイクルの時間を短縮することができる。よって、復号化を高速に行うことができる。特に、各テーブル参照部の出力を直列に接続することで、テーブルを階層的に分割した場合に、効率よく復号化を行うことができる。例えば、各テーブル参照部に記憶されるテーブルを３２ビットのビット列の上位の複数ビット及び下位の複数ビットに対応するテーブルに分割する場合に、効率よく復号化を行うことができる。
【０４４０】
また、本発明の実施の形態６に係る可変長符号復号化装置６０は、スイッチにより、復号化及びビット列の切出し処理に要するサイクル数を切り替えることができる。これにより、符号語の復号化に要する時間を、動作周波数及び製造プロセスに応じて適応的に変更することができる。例えば、復号化に要するサイクル数を増加させることで、１サイクルの時間を短縮し、高周波での動作に対応することができる。また、低周波で動作させる場合には、復号化に要するサイクル数を減少させ、復号化に要するサイクル数の平均を減少させることができる。
【０４４１】
なお、上記説明では、１〜３の係数を含む符号語を復号化する例を説明したが、４個以上の係数を含む符号語を復号化する場合に、本発明を適用してもよい。４個以上の係数を含む符号語に対して適用する場合、４個以上の係数を含む符号語をテーブル参照部１０１、６００、６０１、６０２、６０３及び６０４のいずれかに記憶させてもよいし、さらに、４個以上の係数に応じた、テーブル参照部を備えてもよい。すなわち、ｎ個（ｎ：自然数）の係数を含む符号語に対して、最大でｎサイクルで復号化及びビット列の切出しを行う構成であればよい。
【０４４２】
また、上記説明では、可変長符号復号化装置６０は、２個の係数を含む符号語を復号化するテーブル参照部として、テーブル参照部６００及び６０１を備えているが、テーブル参照部６００及び６０１のいずれかのみを備えてもよい。この場合、テーブル参照部６００又は６０１が２個の係数を含む符号語の全てを記憶する。さらに、上記説明では、可変長符号復号化装置６０は、３個の係数を含む符号語を復号化するテーブル参照部として、テーブル参照部６０２、６０３及び６０４を備えているが、テーブル参照部６０２、６０３及び６０４のうちいずれか１以上を備えてもよい。
【０４４３】
（実施の形態７）
本発明の実施の形態７に係る可変長符号復号化装置は、３種以上の可変長符号化方式により符号化された符号語を復号化する。本発明の実施の形態７に係る可変長符号復号化装置は、各可変長符号化方式により符号化された符号語をそれぞれ復号化する複数のテーブル参照部を備え、最も復号化に要する時間が長いテーブル参照部に対して、ビット列の切出しを行うための、専用のレジスタを備える。これにより、最も復号化に要する時間が長いテーブル参照部に対する経路の遅延を低減し、高速化を実現することができる。
【０４４４】
まず、本発明の実施の形態７に係る可変長符号復号化装置の構成を説明する。
図２０は本発明の実施の形態７に係る可変長符号復号化装置７０の構成を示すブロック図である。なお、図６と同様の要素には同一の符号を付しており、説明は省略する。
【０４４５】
図２０に示す可変長符号復号化装置７０は、第１可変長符号化、第２可変長符号化及び第３可変長符号化のいずれかにより可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。ここで、第１可変長符号化、第２可変長符号化及び第３可変長符号化は、それぞれ異なる可変長符号化方式である。可変長符号復号化装置７０は、ビットストリーム切出し部７５０と、テーブル参照部７０４、７０５及び７０６と、制御部７０７と、マルチプレクサ７０８、７０９、７１０、７１１、７１２、７１３、７１４とを備える。
【０４４６】
ビットストリーム切出し部７５０は、未復号のビットストリームの先頭から、少なくとも可変長符号化に用いられる符号語の最大符号長分のビット列を切出す。ビットストリーム切出し部７５０は、ビットストリーム供給部２００と、バレルシフタ７００及び７０１と、レジスタ７０２及び７０３とを備える。
【０４４７】
ビットストリーム供給部２００は、マルチプレクサ７１４により選択された符号長に基づき未復号のビットストリームの先頭を判定する。ビットストリーム供給部２００は、判定された未復号のビットストリームの先頭から、少なくとも第１可変長符号化、第２可変長符号化及び第３可変長符号化に用いられる符号語の最大符号長の２倍分のビット列を切出す。具体的には、ビットストリーム供給部２００は、６４ビット分のビット列を切出し、バレルシフタ７００及び７０１へ出力する。
【０４４８】
バレルシフタ７００は、ビットストリーム供給部２００により切出されたビット列を、マルチプレクサ７０８により選択された符号長分左へシフトし、シフトされたビット列の先頭から、少なくとも第１可変長符号化に用いられる符号語の最大符号長分のビット列を出力する。具体的には、バレルシフタ７００は、３２ビット分のビット列をレジスタ７０２へ出力する。
【０４４９】
バレルシフタ７０１は、ビットストリーム供給部２００により切出されたビット列を、マルチプレクサ７１１により選択された符号長分左へシフトし、シフトされたビット列の先頭から、少なくとも第２可変長符号化及び第３可変長符号化に用いられる符号語の最大符号長分のビット列を出力する。具体的には、バレルシフタ７０１は、３２ビット分のビット列をレジスタ７０３へ出力する。
【０４５０】
レジスタ７０２は、バレルシフタ７００により出力されたビット列を保持する。レジスタ７０３は、バレルシフタ７０１により出力されたビット列を保持する。
【０４５１】
テーブル参照部７０４、テーブル参照部７０５及びテーブル参照部７０６は、異なる種類の可変長符号化方式により符号化された符号語の復号化データを記憶する。テーブル参照部７０４は、テーブル参照部７０４、７０５及び７０６のうちで符号語を照合するのに要する時間が最も長い。
【０４５２】
テーブル参照部７０４は、判定部７２０と、記憶部７２１とを備える。
記憶部７２１は、第１の可変長符号化方式により符号化された複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とのテーブルである可変長符号テーブルを記憶する。
【０４５３】
判定部７２０は、レジスタ７０２に記憶されるビット列と記憶部７２１に記憶される可変長符号テーブルとを照合し、レジスタ７０２に記憶されるビット列に、記憶部７２１に記憶される符号語が含まれるか否かを判定する。判定部７２０は、判定結果を示す復号化完了信号を出力する。具体的には、判定部７２０は、レジスタ７０２に記憶されるビット列に、記憶部７２１に記憶される符号語が含まれる場合に、復号化完了信号「１」を出力する。判定部７２０は、レジスタ７０２に記憶されるビット列に、記憶部７２１に記憶される符号語が含まれない場合に、復号化完了信号「０」を出力する。また、判定部７２０は、レジスタ７０２に記憶されるビット列に、記憶部７２１に記憶される符号語が含まれる場合に、該符号語に対応する復号化データ（ラン、レベル、ラスト）及び符号長を出力する。また、判定部７２０は、レジスタ７０２に記憶されるビット列に、記憶部７２１に記憶される符号語が含まれない場合に、任意の復号化データ及び符号長「０」を出力する。
【０４５４】
テーブル参照部７０５は、判定部７３０と、記憶部７３１とを備える。
記憶部７３１は、第２の可変長符号化方式により符号化された複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とのテーブルである可変長符号テーブルを記憶する。
【０４５５】
判定部７３０は、レジスタ７０３に記憶されるビット列と記憶部７３１に記憶される可変長符号テーブルとを照合し、レジスタ７０３に記憶されるビット列に、記憶部７３１に記憶される符号語が含まれるか否かを判定する。判定部７３０は、判定結果を示す復号化完了信号を出力する。具体的には、判定部７３０は、レジスタ７０３に記憶されるビット列に、記憶部７３１に記憶される符号語が含まれる場合に、復号化完了信号「１」を出力する。判定部７３０は、レジスタ７０３に記憶されるビット列に、記憶部７３１に記憶される符号語が含まれない場合に、復号化完了信号「０」を出力する。また、判定部７３０は、レジスタ７０３に記憶されるビット列に、記憶部７３１に記憶される符号語が含まれる場合に、該符号語に対応する復号化データ（ラン、レベル、ラスト）及び符号長を出力する。また、判定部７３０は、レジスタ７０３に記憶されるビット列に、記憶部７３１に記憶される符号語が含まれない場合に、任意の復号化データ及び符号長「０」を出力する。
【０４５６】
テーブル参照部７０６は、判定部７４０と、記憶部７４１とを備える。
記憶部７４１は、第３の可変長符号化方式により符号化された複数の符号語と、該符号語にそれぞれ対応する復号化データ及び符号長とのテーブルである可変長符号テーブルを記憶する。
【０４５７】
判定部７４０は、レジスタ７０３に記憶されるビット列と記憶部７４１に記憶される可変長符号テーブルとを照合し、レジスタ７０３に記憶されるビット列に、記憶部７４１に記憶される符号語が含まれるか否かを判定する。判定部７４０は、判定結果を示す復号化完了信号を出力する。具体的には、判定部７４０は、レジスタ７０３に記憶されるビット列に、記憶部７４１に記憶される符号語が含まれる場合に、復号化完了信号「１」を出力する。判定部７４０は、レジスタ７０３に記憶されるビット列に、記憶部７４１に記憶される符号語が含まれない場合に、復号化完了信号「０」を出力する。また、判定部７４０は、レジスタ７０３に記憶されるビット列に、記憶部７４１に記憶される符号語が含まれる場合に、該符号語に対応する復号化データ（ラン、レベル、ラスト）及び符号長を出力する。また、判定部７４０は、レジスタ７０３に記憶されるビット列に、記憶部７４１に記憶される符号語が含まれない場合に、任意の復号化データ及び符号長「０」を出力する。
【０４５８】
また、判定部７２０による、レジスタ７０２に記憶されるビット列に、記憶部７２１に記憶される符号語が含まれるか否かの判定に要する時間は、判定部７３０による、レジスタ７０３に記憶されるビット列に、記憶部７３１に記憶される符号語が含まれるか否かの判定に要する時間より長い。また、判定部７２０による、レジスタ７０２に記憶されるビット列に、記憶部７２１に記憶される符号語が含まれるか否かの判定に要する時間は、判定部７４０による、レジスタ７０３に記憶されるビット列に、記憶部７４１に記憶される符号語が含まれるか否かの判定に要する時間より長い。
【０４５９】
制御部７０７は、複数の種類の可変長符号テーブルを切替えるための選択信号を出力する。制御部７０７は、テーブル参照部７０４を使用する場合は選択信号「０」を出力し、テーブル参照部７０５を使用する場合は選択信号「１」を出力し、テーブル参照部７０６を使用する場合は選択信号「２」を出力し、テーブル参照部７０４、７０５及び７０６のいずれも使用しない場合は選択信号「３」を出力する。
【０４６０】
マルチプレクサ７０８は、制御部７０７により出力された選択信号に応じて、バレルシフタ７００及びマルチプレクサ７１４へ出力する信号を選択する。マルチプレクサ７０８は、選択信号が「０」の場合、テーブル参照部７０４により出力された符号長を選択し、選択信号が「０」以外の場合、固定値「０」を選択する。
【０４６１】
マルチプレクサ７０９は、制御部７０７により出力された選択信号に応じて、マルチプレクサ７１２へ出力する信号を選択する。マルチプレクサ７０９は、選択信号が「２」の場合、テーブル参照部７０６により出力された復号化完了信号を選択し、選択信号が「２」以外の場合、テーブル参照部７０５により出力された復号化完了信号を選択する。
【０４６２】
マルチプレクサ７１０は、制御部７０７により出力された選択信号に応じて、マルチプレクサ７１３へ出力する信号を選択する。マルチプレクサ７１０は、選択信号が「２」の場合、テーブル参照部７０６により出力された復号化データを選択し、選択信号が「２」以外の場合、テーブル参照部７０５により出力された復号化データを選択する。
【０４６３】
マルチプレクサ７１１は、制御部７０７により出力された選択信号に応じて、バレルシフタ７０１及びマルチプレクサ７１４へ出力する信号を選択する。マルチプレクサ７１１は、選択信号が「１」の場合、テーブル参照部７０５により出力された符号長を選択し、選択信号が「２」の場合、テーブル参照部７０６により出力された符号長を選択し、選択信号が「１」及び「２」以外の場合、固定値「０」を選択する。
【０４６４】
マルチプレクサ７１２は、制御部７０７により出力された選択信号に応じて、出力する信号を選択する。マルチプレクサ７１２は、選択信号が「０」の場合、テーブル参照部７０４により出力された復号化完了信号を出力し、選択信号が「１」又は「２」の場合、マルチプレクサ７０９により選択された復号化完了信号を選択し、選択信号が「３」の場合、固定値「０」を選択する。
【０４６５】
マルチプレクサ７１３は制御部７０７により出力された選択信号に応じて、出力する信号を選択する。マルチプレクサ７１３は、選択信号が「０」又は「３」の場合、テーブル参照部７０４により出力された復号化データを選択し、選択信号が「１」又は「２」の場合、マルチプレクサ７１０により選択された復号化データを選択する。
【０４６６】
マルチプレクサ７１４は、制御部７０７により出力された選択信号に応じて、出力する信号を選択する。選択信号が「０」又は「３」の場合、マルチプレクサ７０８により選択された符号長を選択し、選択信号が「１」又は「２」の場合、マルチプレクサ７１１により選択された符号長を選択する。
【０４６７】
ここで、マルチプレクサ７１３により選択される復号化データは、マルチプレクサ７１２により選択される復号化完了信号が「１」となるサイクルでのみ有効である。
【０４６８】
次に、本発明の実施の形態７に係る可変長符号復号化装置７０の動作を説明する。
図２１は、可変長符号復号化装置７０による具体的な動作を示す図である。図２２は、可変長符号復号化装置７０に入力されるビットストリームに含まれる符号語の一例を示す図である。以下、可変長符号復号化装置７０により、ビットストリーム「ｐ１ｐ１−ｐ１６ｐ１−ｐ３２」を復号化する動作を説明する。また、ビットストリーム「ｐ１ｐ１−ｐ１６ｐ１−ｐ３２」にはビット列「ｑ１−ｑ３２」が後続する。
【０４６９】
また、図２２に示すように、テーブル参照部７０４は第１の可変長符号化方式により符号化された符号語である符号語「ｐ１」を記憶する。テーブル参照部７０５は第２の可変長符号化方式により符号化された符号語である符号語「ｐ１−ｐ１６」を記憶する。テーブル参照部７０６は第３の可変長符号化方式により符号化された符号語である符号語「ｐ１−ｐ３２」を記憶する。
【０４７０】
また、テーブル参照部は、テーブル参照部７０４、テーブル参照部７０５、及びテーブル参照部７０６の順に切替えられる。
【０４７１】
また、ビットストリーム供給部２００は、初期値として「ｐ１ｐ１−ｐ１６ｐ１−ｐ３２ｐ１−ｐ１５」を保持し、レジスタ７０２は、初期値として「ｐ１ｐ１−ｐ１６ｐ１−ｐ１５」を保持し、レジスタ７０３は、初期値として「ｐ１ｐ１−ｐ１６ｐ１−ｐ１５」を保持する。
【０４７２】
＜第０サイクル＞
第０サイクルにおいて、ビットストリーム供給部２００は、初期値「ｐ１ｐ１−ｐ１６ｐ１−ｐ３２ｐ１−ｐ１５」を出力する。
【０４７３】
バレルシフタ７００は、ビットストリーム供給部２００により出力されるビット列「ｐ１ｐ１−ｐ１６ｐ１−ｐ３２ｐ１−ｐ１５」を、マルチプレクサ７０８により選択された符号長「１」分左へシフトする。バレルシフタ７００は、シフトされたビット列「ｐ１−ｐ１６ｐ１−ｐ１６」を出力する。
【０４７４】
バレルシフタ７０１は、ビットストリーム供給部２００により出力されるビット列「ｐ１ｐ１−ｐ１６ｐ１−ｐ３２ｐ１−ｐ１５」を、マルチプレクサ７１１により選択された符号長「０」分左へシフトする。バレルシフタ７００は、シフトされたビット列「ｐ１ｐ１−ｐ１６ｐ１−ｐ１５」を出力する。
【０４７５】
レジスタ７０２は、初期値「ｐ１ｐ１−ｐ１６ｐ１−ｐ１５」を保持する。レジスタ７０３は、初期値「ｐ１ｐ１−ｐ１６ｐ１−ｐ１５」を保持する。
【０４７６】
テーブル参照部７０４は、レジスタ７０２に保持されるビット列「ｐ１ｐ１−ｐ１６ｐ１−ｐ１５」と記憶されている符号語「ｐ１」とが一致するので、復号化完了信号「１」を出力し、復号化データ「Ｐ０」を出力し、符号長「１」を出力する。
【０４７７】
テーブル参照部７０５は、レジスタ７０３に保持されるビット列「ｐ１ｐ１−ｐ１６ｐ１−ｐ１５」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ「ｘ」を出力し、符号長「ｘ」を出力する。
【０４７８】
テーブル参照部７０６は、レジスタ７０３に保持されるビット列「ｐ１ｐ１−ｐ１６ｐ１−ｐ１５」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ「ｘ」を出力し、符号長「ｘ」を出力する。
【０４７９】
制御部７０７は、テーブル参照部７０４を使用するので、選択信号「０」を出力する。
マルチプレクサ７０８は、制御部７０７により出力された選択信号が「０」なので、テーブル参照部７０４により出力された符号長「１」を選択する。
【０４８０】
マルチプレクサ７０９、制御部７０７により出力された選択信号が「０」なので、テーブル参照部７０５により出力された復号化完了信号「０」を選択する。
【０４８１】
マルチプレクサ７１０は、制御部７０７により出力された選択信号が「０」なので、テーブル参照部７０５により出力された復号化データ「ｘ」を出力する。
【０４８２】
マルチプレクサ７１１は、制御部７０７により出力された選択信号が「０」なので、固定値「０」を選択する。
【０４８３】
マルチプレクサ７１２は、制御部７０７により出力された選択信号が「０」なので、テーブル参照部７０４により出力された復号化完了信号「１」を選択する。
【０４８４】
マルチプレクサ７１３は、制御部７０７により出力された選択信号が「０」なので、テーブル参照部７０４により出力された復号化データ「Ｐ０」を選択する。
【０４８５】
マルチプレクサ７１４は、制御部７０７により出力された選択信号が「０」なので、マルチプレクサ７０８により選択された符号長「１」を選択する。
【０４８６】
ビットストリーム供給部２００は、マルチプレクサ７１４により選択された符号長が「１」なので、先頭のビットを１ビットずらして、ビット列「ｐ１−ｐ１６ｐ１−ｐ３２ｐ１−ｐ１６」を切出す。ビットストリーム供給部２００は、次のサイクルで、切出されたビット列「ｐ１−ｐ１６ｐ１−ｐ３２ｐ１−ｐ１６」を出力する。
【０４８７】
レジスタ７０２は、バレルシフタ７００により出力されたビット列「ｐ１−ｐ１６ｐ１−ｐ１６」を取り込み次のサイクルで出力する。レジスタ７０３は、バレルシフタ７０１により出力されたビット列「ｐ１ｐ１−ｐ１６ｐ１−ｐ１５」を取り込み次のサイクルで出力する。
【０４８８】
＜第１サイクル＞
第１サイクルにおいて、ビットストリーム供給部２００は、第０サイクルで切出されたビット列「ｐ１−ｐ１６ｐ１−ｐ３２ｐ１−ｐ１６」を出力する。
【０４８９】
バレルシフタ７００は、ビットストリーム供給部２００により出力されるビット列「ｐ１−ｐ１６ｐ１−ｐ３２ｐ１−ｐ１６」を、マルチプレクサ７０８により選択された符号長「０」分左へシフトする。バレルシフタ７００は、シフトされたビット列「ｐ１−ｐ１６ｐ１−ｐ１６」を出力する。
【０４９０】
バレルシフタ７０１は、ビットストリーム供給部２００により出力されるビット列「ｐ１−ｐ１６ｐ１−ｐ３２ｐ１−ｐ１６」を、マルチプレクサ７１１により出力された符号長「０」分左へシフトする。バレルシフタ７０１は、シフトされたビット列「ｐ１−ｐ１６ｐ１−ｐ１６」を出力する。
【０４９１】
レジスタ７０２は、第０サイクルで取り込まれたビット列「ｐ１−ｐ１６ｐ１−ｐ１６」を保持する。レジスタ７０３は、第０サイクルで取り込まれたビット列「ｐ１ｐ１−ｐ１６ｐ１−ｐ１５」を保持する。
【０４９２】
テーブル参照部７０４は、レジスタ７０２に保持されるビット列「ｐ１ｐ１−ｐ１６ｐ１−ｐ１５」と記憶されている符号語「ｐ１」とが一致するので、復号化完了信号「１」を出力し、復号化データ「Ｐ０」を出力し、符号長「１」を出力する。
【０４９３】
テーブル参照部７０５は、レジスタ７０３に保持されるビット列「ｐ１ｐ１−ｐ１６ｐ１−ｐ１５」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ「ｘ」を出力し、符号長「ｘ」を出力する。
【０４９４】
テーブル参照部７０６は、レジスタ７０３に保持されるビット列「ｐ１ｐ１−ｐ１６ｐ１−ｐ１５」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ「ｘ」を出力し、符号長「ｘ」を出力する。
【０４９５】
次のサイクルでは、異なるバレルシフタとレジスタとの組を使用するために、いずれのテーブル参照部も使用されない。よって、制御部７０７は、選択信号「３」を出力する。
【０４９６】
マルチプレクサ７０８は、制御部７０７により出力された選択信号が「３」なので、固定値「０」を選択する。
【０４９７】
マルチプレクサ７０９は、制御部７０７により出力された選択信号が「３」なので、テーブル参照部７０５により出力された復号化完了信号「０」を選択する。
【０４９８】
マルチプレクサ７１０は、制御部７０７により出力された選択信号が「３」なので、テーブル参照部７０５により出力された復号化データ「ｘ」を選択する。
【０４９９】
マルチプレクサ７１１は、制御部７０７により出力された選択信号が「３」なので、固定値「０」を選択する。
【０５００】
マルチプレクサ７１２は、制御部７０７により出力された選択信号が「３」なので、固定値「０」を選択する。
【０５０１】
マルチプレクサ７１３は、制御部７０７により出力された選択信号が「０」なので、テーブル参照部７０４により出力された復号化データ「Ｐ０」を選択する。
【０５０２】
マルチプレクサ７１４は、制御部７０７により出力された選択信号が「０」なので、マルチプレクサ７０８により選択された符号長「０」を選択する。
【０５０３】
ビットストリーム供給部２００は、マルチプレクサ７１４により選択された符号長が「０」なので、ビット列「ｐ１−ｐ１６ｐ１−ｐ３２ｐ１−ｐ１６」を切出す。ビットストリーム供給部２００は、次のサイクルで、切出されたビット列「ｐ１−ｐ１６ｐ１−ｐ３２ｐ１−ｐ１６」を出力する。
【０５０４】
レジスタ７０２は、バレルシフタ７００により出力されたビット列「ｐ１−ｐ１６ｐ１−ｐ１６」を取り込み次のサイクルで出力する。レジスタ７０３は、バレルシフタ７０１により出力されたビット列「ｐ１−ｐ１６ｐ１−ｐ１６」を取り込み次のサイクルで出力する。
【０５０５】
＜第２サイクル＞
第２サイクルにおいて、ビットストリーム供給部２００は、第１サイクルで切出されたビット列「ｐ１−ｐ１６ｐ１−ｐ３２ｐ１−ｐ１６」を出力する。
【０５０６】
バレルシフタ７００は、ビットストリーム供給部２００により出力されるビット列「ｐ１−ｐ１６ｐ１−ｐ３２ｐ１−ｐ１６」を、マルチプレクサ７０８により選択された符号長「０」分左へシフトする。バレルシフタ７００は、シフトされたビット列「ｐ１−ｐ１６ｐ１−ｐ１６」を出力する。
【０５０７】
バレルシフタ７０１は、ビットストリーム供給部２００により出力されるビット列「ｐ１−ｐ１６ｐ１−ｐ３２ｐ１−ｐ１６」を、マルチプレクサ７１１により出力された符号長「１６」分左へシフトする。バレルシフタ７０１は、シフトされたビット列「ｐ１−ｐ３２」を出力する。
【０５０８】
レジスタ７０２は、第１サイクルで取り込まれたビット列「ｐ１−ｐ１６ｐ１−ｐ１６」を保持する。レジスタ７０３は、第１サイクルで取り込まれたビット列「ｐ１−ｐ１６ｐ１−ｐ１６」を保持する。
【０５０９】
テーブル参照部７０４は、レジスタ７０２に保持されるビット列「ｐ１−ｐ１６ｐ１−ｐ１６」と記憶されている符号語「ｐ１」とが一致するので、復号化完了信号「１」を出力し、復号化データ「Ｐ０」を出力し、符号長「１」を出力する。
【０５１０】
テーブル参照部７０５は、レジスタ７０３に保持されるビット列「ｐ１−ｐ１６ｐ１−ｐ１６」と記憶されている符号語「ｐ１−ｐ１６」とが一致するので、復号化完了信号「１」を出力し、復号化データ「Ｐ１」を出力し、符号長「１６」を出力する。
【０５１１】
テーブル参照部７０６は、レジスタ７０３に保持されるビット列「ｐ１−ｐ１６ｐ１−ｐ１６」と記憶されている符号語とが一致しないので、復号化完了信号「０」を出力し、復号化データ「ｘ」を出力し、符号長「ｘ」を出力する。
【０５１２】
制御部７０７は、テーブル参照部７０５を使用するので、選択信号「１」を出力する。
マルチプレクサ７０８は、制御部７０７により出力された選択信号が「１」なので、固定値「０」を選択する。
【０５１３】
マルチプレクサ７０９は、制御部７０７により出力された選択信号が「１」なので、テーブル参照部７０５により出力された復号化完了信号「１」を選択する。
【０５１４】
マルチプレクサ７１０は、制御部７０７により出力された選択信号が「１」なので、テーブル参照部７０５により出力された復号化データ「Ｐ１」を選択する。
【０５１５】
マルチプレクサ７１１は、制御部７０７により出力された選択信号が「１」なので、テーブル参照部７０５により出力された符号長「１６」を選択する。
【０５１６】
マルチプレクサ７１２は、制御部７０７により出力された選択信号が「１」なので、マルチプレクサ７０９により出力された復号化完了信号「１」を選択する。
【０５１７】
マルチプレクサ７１３は、制御部７０７により出力された選択信号が「１」なので、マルチプレクサ７１０により出力された復号化データ「Ｐ１」を選択する。
【０５１８】
マルチプレクサ７１４は、制御部７０７により出力された選択信号が「１」なので、マルチプレクサ７１１により出力された符号長「１６」を選択する。
【０５１９】
ビットストリーム供給部２００は、マルチプレクサ７１４により出力された符号長が「１６」なので、先頭のビットを１ビットずらして、ビット列「ｐ１−ｐ３２ｑ１−ｑ３２」を切出す。ビットストリーム供給部２００は、次のサイクルで、切出されたビット列「ｐ１−ｐ３２ｑ１−ｑ３２」を出力する。
【０５２０】
レジスタ７０２は、バレルシフタ７００により出力されたビット列「ｐ１−ｐ１６ｐ１−ｐ１６」を取り込み次のサイクルで出力する。レジスタ７０３は、バレルシフタ７０１により出力されたビット列「ｐ１−ｐ３２」を取り込み次のサイクルで出力する。
【０５２１】
＜第３サイクル＞
第３サイクルにおいて、ビットストリーム供給部２００は、第２サイクルで切出されたビット列「ｐ１−ｐ３２ｑ１−ｑ３２」を出力する。
【０５２２】
バレルシフタ７００は、ビットストリーム供給部２００により出力されるビット列「ｐ１−ｐ３２ｑ１−ｑ３２」を、マルチプレクサ７０８により選択された符号長「０」分左へシフトする。バレルシフタ７００は、シフトされたビット列「ｐ１−ｐ３２」を出力する。
【０５２３】
バレルシフタ７０１は、ビットストリーム供給部２００により出力されるビット列「ｐ１−ｐ３２ｑ１−ｑ３２」を、マルチプレクサ７１１により出力された符号長「３２」分左へシフトする。バレルシフタ７０１は、シフトされたビット列「ｑ１−ｑ３２」を出力する。
【０５２４】
レジスタ７０２は、第２サイクルで取り込まれたビット列「ｐ１−ｐ１６ｐ１−ｐ１６」を保持する。レジスタ７０３は、第２サイクルで取り込まれたビット列「ｐ１−ｐ３２」を保持する。
【０５２５】
テーブル参照部７０４は、レジスタ７０２に保持されるビット列「ｐ１−ｐ１６ｐ１−ｐ１６」と記憶されている符号語「ｐ１」とが一致するので、復号化完了信号「１」を出力し、復号化データ「Ｐ０」を出力し、符号長「１」を出力する。
【０５２６】
テーブル参照部７０５は、レジスタ７０３に保持されるビット列「ｐ１−ｐ３２」と記憶されている符号語「ｐ１−ｐ１６」とが一致するので、復号化完了信号「１」を出力し、復号化データ「Ｐ１」を出力し、符号長「１６」を出力する。
【０５２７】
テーブル参照部７０６は、レジスタ７０３に保持されるビット列「ｐ１−ｐ３２」と記憶されている符号語「ｐ１−ｐ３２」とが一致するので、復号化完了信号「１」を出力し、復号化データ「Ｐ２」を出力し、符号長「３２」を出力する。
【０５２８】
制御部７０７は、テーブル参照部７０６を使用するので、選択信号「２」を出力する。
マルチプレクサ７０８は、制御部７０７により出力された選択信号が「２」なので、固定値「０」を選択する。
【０５２９】
マルチプレクサ７０９は、制御部７０７により出力された選択信号が「２」なので、テーブル参照部７０６により出力された復号化完了信号「１」を選択する。
【０５３０】
マルチプレクサ７１０は、制御部７０７により出力された選択信号が「２」なので、テーブル参照部７０６により出力された復号化データ「Ｐ２」を選択する。
【０５３１】
マルチプレクサ７１１は、制御部７０７により出力された選択信号が「２」なので、テーブル参照部７０６により出力された符号長「３２」を選択する。
【０５３２】
マルチプレクサ７１２は、制御部７０７により出力された選択信号が「２」なので、マルチプレクサ７０９により出力された復号化完了信号「１」を選択する。
【０５３３】
マルチプレクサ７１３は、制御部７０７により出力された選択信号が「２」なので、マルチプレクサ７１０により出力された復号化データ「Ｐ２」を選択する。
【０５３４】
マルチプレクサ７１４は、制御部７０７により出力された選択信号が「２」なので、マルチプレクサ７１１により出力された符号長「３２」を選択する。
【０５３５】
以上のように、本発明の実施の形態７に係る可変長符号復号化装置７０は、複数種類の可変長符号化方式の可変長符号テーブルをそれぞれ記憶する複数のテーブル参照部７０４、７０５及び７０６を備える。さらに、可変長符号復号化装置７０は、複数のテーブル参照部７０４、７０５及び７０６のうち最も遅延の大きなテーブル参照部７０４に対応するバレルシフタ７００と、最も遅延の大きなテーブル参照部７０４以外のテーブル参照部７０５及び７０６に対応するバレルシフタ７０１とを備える。これにより、最も遅延の大きなテーブル参照部７０４の経路における遅延を低減することができる。
【０５３６】
具体的には、テーブル参照部７０４により出力される符号長は、２入力のマルチプレクサ７０８を介して、バレルシフタ７００に入力される。一方、テーブル参照部７０５及び７０６により出力された符号長は、３入力のマルチプレクサ７１１を介して、バレルシフタ７０１に入力される。ここで、２入力のマルチプレクサは、３入力のマルチプレクサに比べて、ゲート数が少なく遅延量が少ない。よって、テーブル参照部７０４の経路の遅延をテーブル参照部７０５及び７０６の経路の遅延に比べ、少なくすることができる。また、１つのマルチプレクサにより、テーブル参照部７０４、７０５及び７０６により出力される符号長と、固定値「０」とのいずれかを選択する場合には、４入力のマルチプレクサが必要である。よって、１つのマルチプレクサでテーブル参照部７０４、７０５及び７０６により出力される符号長を選択する場合に比べて、テーブル参照部７０４の経路の遅延量を低減することができる。すなわち、最も遅延の大きなテーブル参照部７０４による復号化処理を高速化することができるので、可変長符号復号化装置７０による復号化処理を高速化することができる。
【０５３７】
また、テーブル参照部７０４により出力される復号化完了信号は、２入力のマルチプレクサ７１２のみを介して、外部に出力される。テーブル参照部７０４により出力される復号化データは、２入力のマルチプレクサ７１３のみを介して、外部に出力される。これにより、最も遅延の大きなテーブル参照部７０４による復号化処理を高速化することができるので、可変長符号復号化装置７０による復号化処理を高速化することができる。
【０５３８】
なお、テーブル参照部７０４、７０５及び７０６のうち１以上の構成を、上述した実施の形態１〜６に係る可変長符号復号化装置と同様の構成にしてもよい。すなわち、テーブル参照部７０４、７０５及び７０６のうち１以上の構成を、１個の係数を含む符号語を１サイクルで復号化し、２個以上の係数を含む符号語を２サイクルで復号化する構成にしてもよい。
【０５３９】
また、４種類以上の可変長符号テーブルに対して本発明を適用してもよい。
【産業上の利用可能性】
【０５４０】
本発明は、可変長符号復号化装置に適用でき、特に、ＬＳＩ等の電子回路で実現される動画像復号化装置として適用することができる。例えば、符号化された動画像を復号化して再生するパーソナルコンピュータ、デジタルテレビ、ＤＶＤプレーヤー、ＤＶＤレコーダー、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ）及び携帯電話機等に備えられる動画像復号化装置として有用である。
【図面の簡単な説明】
【０５４１】
【図１】本発明の実施の形態１に係る可変長符号復号化装置の構成を示すブロック図である。
【図２】本発明の実施の形態１に係る記憶部１１１に記憶される可変長符号テーブルの一例を示す図である。
【図３】本発明の実施の形態１に係る記憶部１２１に記憶される可変長符号テーブルの一例を示す図である。
【図４】本発明の実施の形態１に係る可変長符号復号化装置の動作を示す図である。
【図５】本発明の実施の形態１に係る符号語の一例を示す図である。
【図６】本発明の実施の形態２に係る可変長符号復号化装置の構成を示すブロック図である。
【図７】本発明の実施の形態２に係る可変長符号復号化装置の動作を示す図である。
【図８】本発明の実施の形態３に係る可変長符号復号化装置の構成を示すブロック図である。
【図９】本発明の実施の形態３に係る可変長符号復号化装置の動作を示す図である。
【図１０】本発明の実施の形態４に係る可変長符号復号化装置の構成を示すブロック図である。
【図１１】本発明の実施の形態４に係る記憶部４１１に記憶される可変長符号テーブルの一例を示す図である。
【図１２】本発明の実施の形態４に係る記憶部４２１に記憶される可変長符号テーブルの一例を示す図である。
【図１３】本発明の実施の形態４に係る記憶部４３１に記憶される可変長符号テーブルの一例を示す図である。
【図１４】本発明の実施の形態４に係る可変長符号復号化装置の動作を示す図である。
【図１５】本発明の実施の形態５に係る可変長符号復号化装置の構成を示すブロック図である。
【図１６】本発明の実施の形態５に係る可変長符号復号化装置の動作を示す図である。
【図１７】本発明の実施の形態６に係る可変長符号復号化装置の構成を示すブロック図である。
【図１８】本発明の実施の形態６に係る可変長符号復号化装置の動作を示す図である。
【図１９】本発明の実施の形態６に係る符号語の一例を示す図である。
【図２０】本発明の実施の形態７に係る可変長符号復号化装置の構成を示すブロック図である。
【図２１】本発明の実施の形態７に係る可変長符号復号化装置の動作を示す図である。
【図２２】本発明の実施の形態７に係る符号語の一例を示す図である。
【図２３】従来の可変長符号復号化装置の構成を示すブロック図である。
【符号の説明】
【０５４２】
１０、２０、３０、４０、５０、６０、７０、８０    可変長符号復号化装置
１００、２１０、７５０    ビットストリーム切出し部
１０１、１０２、３００、３０１、４００、４０１、４０２、５００、６００、６０１、６０２、６０３、６０４、７０４、７０５、７０６    テーブル参照部
１０３、１０７、１０８、１０９、２０３、３０２、３０６、３０７、３０８、３０９、３１０、３１１、６０５、６１２、６１３、６１４、６１５、６２２、６２３、６２４、６２５、６３２、６３３、６３４、６３６、６３７、６３８、７０８、７０９、７１０、７１１、７１２、７１３、７１４、８４０、８４１    マルチプレクサ
１０４、１０５、１０６、２０４、３０３、３０４、３０５、４０３、６０６、６０７、６０８、６１６、６１７、６１８、６２６、６２７、６２８、７０２、７０３    レジスタ
１１０、１２０、３２０、３３０、４１０、４２０、４３０、５１０、６４０、６５０、６６０、６７０、６８０、７２０、７３０、７４０    判定部
１１１、１２１、３２１、３３１、４１１、４２１、４３１、５１１、６４１、６５１、６６１、６７１、６８１、７２１、７３１、７４１    記憶部
２００    ビットストリーム供給部
５０１    エラー検出部
６０９、６１０、６１１、６１９、６２０、６２１、６２９、６３０、６３１    スイッチ
６３５、７０７    制御部
７００、７０１    バレルシフタ
８０５    入力端子
８２０、８３０    参照用テーブル
【図１】
2008278075.tif 000003
【図２】
2008278075.tif 000004
【図３】
2008278075.tif 000005
【図４】
2008278075.tif 000006
【図５】
2008278075.tif 000007
【図６】
2008278075.tif 000008
【図７】
2008278075.tif 000009
【図８】
2008278075.tif 000010
【図９】
2008278075.tif 000011
【図１０】
2008278075.tif 000012
【図１１】
2008278075.tif 000013
【図１２】
2008278075.tif 000014
【図１３】
2008278075.tif 000015
【図１４】
2008278075.tif 000016
【図１５】
2008278075.tif 000017
【図１６】
2008278075.tif 000018
【図１７】
2008278075.tif 000019
【図１８】
2008278075.tif 000020
【図１９】
2008278075.tif 000021
【図２０】
2008278075.tif 000022
【図２１】
2008278075.tif 000023
【図２２】
2008278075.tif 000024
【図２３】
2008278075.tif 000025