(57)【要約】  所定量のビットストリームが蓄積された時点で復号化を開始し、かつ、ビットストリーム終端の符号語の符号長が所定量未満の場合でも、復号化を完了する。  ビットストリームを復号化する可変長符号復号化装置（１０）であって、可変長符号テーブル（１１３）を記憶する記憶部（１１１）と、固定長のビット列を出力するビットストリーム切出し部（１００）と、記憶部（１１１）を参照することで復号化データ及び符号長を出力する参照部（１１２）と、固定長のビット列が蓄積されているかを判定する判定部（１０２）と、固定長より短い長さのビット列が蓄積されているかを判定する判定部（１０３）と、判定部（１０２及び１０３）の判定結果の一方を選択する選択部（１０４）とを備え、ビットストリーム切出し部（１００）は、選択された判定結果に基づいて先頭ビットを決定し、選択部（１０４）は判定部（１０２及び１０３）の判定結果の選択を切り換える。
2009122675.tif 000002
【特許請求の範囲】
【請求項１】
可変長符号化されたデータを含むビットストリームを復号化する可変長符号復号化装置であって、
可変長符号化に用いられる複数の符号語と、前記複数の符号語のそれぞれに対応する復号化データ及び符号長とを記憶する第１記憶手段と、
前記ビットストリームを蓄積するバッファを有し、前記バッファに蓄積されている未復号のビットストリームの先頭ビットから連続する第１の長さのビット列を出力し、前記バッファに蓄積されている未復号のビットストリームの長さが前記第１の長さ未満の場合は、前記ビット列の終端にデータを付加することで、前記第１の長さのビット列を出力するビット出力手段と、
前記第１記憶手段を参照することで、前記ビット出力手段により出力されたビット列の先頭の符号語と一致する符号語に対応する復号化データ及び符号長を出力する第１参照手段と、
少なくとも前記第１の長さの未復号のビットストリームが前記バッファに蓄積されているか否かを判定する第１判定手段と、
前記第１の長さより短い少なくとも第２の長さの未復号のビットストリームが前記バッファに蓄積されているか否かを判定する第２判定手段と、
前記第１判定手段と前記第２判定手段とのいずれか一方の判定結果を選択する選択手段とを備え、
前記ビット出力手段は、前記選択手段により選択された判定結果が、少なくとも前記第１の長さ又は前記第２の長さの未復号のビットストリームが前記バッファに蓄積されていることを示す場合に、前記第１参照手段により出力された符号長に基づいて、新たな先頭ビットを決定し、決定された先頭ビットに従って新たな前記第１の長さのビット列を出力し、
前記選択手段は、前記バッファに蓄積されている未復号のビットストリームの長さに応じて、前記第１判定手段及び前記第２判定手段の判定結果の選択を切り換える
ことを特徴とする可変長符号復号化装置。
【請求項２】
前記選択手段は、前記第１判定手段の判定結果を選択した場合であり、かつ、選択した判定結果が少なくとも前記第１の長さの未復号のビットストリームが前記バッファに蓄積されていることを示さない場合に、前記第２判定手段の判定結果を選択する
ことを特徴とする請求項１記載の可変長符号復号化装置。
【請求項３】
前記選択手段は、さらに、前記第２判定手段の判定結果を選択した場合であり、かつ、選択した判定結果が少なくとも前記第２の長さの未復号のビットストリームが前記バッファに蓄積されていることを示す場合に、前記第１判定手段の判定結果を選択する
ことを特徴とする請求項２記載の可変長符号復号化装置。
【請求項４】
前記選択手段は、前記第１判定手段の判定結果と前記第２判定手段の判定結果とを交互に選択する
ことを特徴とする請求項１記載の可変長符号復号化装置。
【請求項５】
前記第２の長さは、前記第１参照手段により出力された符号長である
ことを特徴とする請求項１記載の可変長符号復号化装置。
【請求項６】
前記第１の長さは、前記第１記憶手段に記憶された複数の符号長の中で最大の長さである
ことを特徴とする請求項１記載の可変長符号復号化装置。
【請求項７】
前記第２の長さは、１ビットであり、
前記可変長符号復号化装置は、さらに、
前記ビットストリームの終端を検出する終端検出手段を備え、
前記選択手段は、前記終端検出手段により前記終端が検出された場合に、前記第２判定手段の判定結果を選択する
ことを特徴とする請求項１記載の可変長符号復号化装置。
【請求項８】
前記終端検出手段は、前記ビットストリームの終端であることを示す符号語を検出することで、前記終端を検出する
ことを特徴とする請求項７記載の可変長符号復号化装置。
【請求項９】
前記終端検出手段は、前記ビットストリームに含まれるヘッダ情報を解析することで、前記終端を検出する
ことを特徴とする請求項７記載の可変長符号復号化装置。
【請求項１０】
前記選択手段は、前記ビット出力手段により出力された前記第１の長さのビット列に、前記ビットストリームの終端であることを示す符号語が含まれる場合に、前記第２判定手段の判定結果を選択する
ことを特徴とする請求項１記載の可変長符号復号化装置。
【請求項１１】
前記可変長符号復号化装置は、さらに、
前記第１記憶手段に記憶された符号語とは異なり、可変長符号化に用いられる複数の符号語と、前記複数の符号語のそれぞれに対応する復号化データ及び符号長とを記憶する第２記憶手段と、
前記第２記憶手段を参照することで、前記ビット出力手段により出力されたビット列の先頭の符号語と一致する符号語に対応する復号化データ及び符号長を出力する第２参照手段と、
前記第１参照手段と前記第２参照手段とのいずれかを選択する第２選択手段とを備え、
前記第１の長さは、前記第２選択手段により選択された参照手段が参照する記憶手段に記憶された複数の符号長の中で最大の長さである
ことを特徴とする請求項１記載の可変長符号復号化装置。
【請求項１２】
可変長符号化されたデータを含むビットストリームを復号化する可変長符号復号化装置であって、
可変長符号化に用いられる複数の符号語と、前記複数の符号語のそれぞれに対応する復号化データ及び符号長とを記憶する第１記憶手段と、
前記ビットストリームの終端を検出する終端検出手段と、
前記終端検出手段により前記終端が検出された場合に、前記ビットストリームの終端にデータを付加するデータ付加手段と、
前記ビットストリームを蓄積するバッファを有し、前記バッファに蓄積されている未復号のビットストリームの先頭ビットから連続する固定長のビット列を出力し、前記バッファに蓄積されている未復号のビットストリームの長さが前記固定長未満の場合は、前記ビット列の終端にデータを付加することで、前記固定長のビット列を出力するビット出力手段と、
前記第１記憶手段を参照することで、前記ビット出力手段により出力されたビット列の先頭の符号語と一致する符号語に対応する復号化データ及び符号長を出力する第１参照手段と、
少なくとも前記固定長の未復号のビットストリームが前記バッファに蓄積されているか否かを判定する第１判定手段とを備え、
前記ビット出力手段は、前記第１判定手段の判定結果が、少なくとも前記固定長の未復号のビットストリームが前記バッファに蓄積されていることを示す場合に、前記第１参照手段により出力された符号長に基づいて、新たな先頭ビットを決定し、決定された先頭ビットに従って新たな前記固定長のビット列を出力し、
前記データ付加手段は、少なくとも前記固定長より１ビット短い長さのデータを付加する
ことを特徴とする可変長符号復号化装置。
【請求項１３】
前記固定長は、前記第１記憶手段に記憶された複数の符号長の中で最大の長さである
ことを特徴とする請求項１２記載の可変長符号復号化装置。
【請求項１４】
前記可変長符号復号化装置は、さらに、
前記第１記憶手段に記憶された符号語とは異なり、可変長符号化に用いられる複数の符号語と、前記複数の符号語のそれぞれに対応する復号化データ及び符号長とを記憶する第２記憶手段と、
前記第２記憶手段を参照することで、前記ビット出力手段により出力されたビット列の先頭の符号語と一致する符号語に対応する復号化データ及び符号長を出力する第２参照手段と、
前記第１参照手段と前記第２参照手段とのいずれかを選択する第２選択手段とを備え、
前記第１の長さは、前記第２選択手段により選択された参照手段が参照する記憶手段に記憶された複数の符号長の中で最大の長さである
ことを特徴とする請求項１２記載の可変長符号復号化装置。
【請求項１５】
可変長符号化されたデータを含むビットストリームを復号化する可変長符号復号化方法であって、
前記ビットストリームをバッファに蓄積し、前記バッファに蓄積されている未復号のビットストリームの先頭ビットから連続する第１の長さのビット列を出力し、前記バッファに蓄積されている未復号のビットストリームの長さが前記第１の長さ未満の場合は、前記ビット列の終端にデータを付加することで、前記第１の長さのビット列を出力するビット出力ステップと、
可変長符号化に用いられる複数の符号語と、前記複数の符号語のそれぞれに対応する復号化データ及び符号長とを記憶するメモリを参照することで、前記ビット出力ステップにおいて出力されたビット列の先頭の符号語と一致する符号語に対応する復号化データ及び符号長を出力する参照ステップと、
少なくとも前記第１の長さの未復号のビットストリームが前記バッファに蓄積されているか否かを判定する第１判定ステップと、
前記第１の長さより短い少なくとも第２の長さの未復号のビットストリームが前記バッファに蓄積されているか否かを判定する第２判定ステップと、
前記第１判定ステップと前記第２判定ステップとのいずれか一方の判定結果を選択する選択ステップとを含み、
前記ビット出力ステップでは、前記選択ステップにより選択された判定結果が、少なくとも前記第１の長さ又は前記第２の長さの未復号のビットストリームが前記バッファに蓄積されていることを示す場合に、前記参照ステップにおいて出力された符号長に基づいて、新たな先頭ビットを決定し、決定された先頭ビットに従って新たな前記第１の長さのビット列を出力し、
前記選択ステップでは、前記バッファに蓄積されている未復号のビットストリームの長さに応じて、前記第１判定ステップ及び前記第２判定ステップの判定結果の選択を切り換える
ことを特徴とする可変長符号復号化方法。
【請求項１６】
可変長符号化されたデータを含むビットストリームを復号化する集積回路であって、
可変長符号化に用いられる複数の符号語と、前記複数の符号語のそれぞれに対応する復号化データ及び符号長とを記憶する記憶手段と、
前記ビットストリームを蓄積するバッファを有し、前記バッファに蓄積されている未復号のビットストリームの先頭ビットから連続する第１の長さのビット列を出力し、前記バッファに蓄積されている未復号のビットストリームの長さが前記第１の長さ未満の場合は、前記ビット列の終端にデータを付加することで、前記第１の長さのビット列を出力するビット出力手段と、
前記記憶手段を参照することで、前記ビット出力手段により出力されたビット列の先頭の符号語と一致する符号語に対応する復号化データ及び符号長を出力する参照手段と、
少なくとも前記第１の長さの未復号のビットストリームが前記バッファに蓄積されているか否かを判定する第１判定手段と、
前記第１の長さより短い少なくとも第２の長さの未復号のビットストリームが前記バッファに蓄積されているか否かを判定する第２判定手段と、
前記第１判定手段と前記第２判定手段とのいずれか一方の判定結果を選択する選択手段とを備え、
前記ビット出力手段は、前記選択手段により選択された判定結果が、少なくとも前記第１の長さ又は前記第２の長さの未復号のビットストリームが前記バッファに蓄積されていることを示す場合に、前記参照手段により出力された符号長に基づいて、新たな先頭ビットを決定し、決定された先頭ビットに従って新たな前記第１の長さのビット列を出力し、
前記選択手段は、前記バッファに蓄積されている未復号のビットストリームの長さに応じて、前記第１判定手段及び前記第２判定手段の判定結果の選択を切り換える
ことを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、可変長符号化されたデータである符号語を含むビットストリームを復号化する可変長符号復号化装置及びその方法に関する。
【背景技術】
【０００２】
近年、動画像や音声の圧縮符号化技術の進展は著しく、放送、通信及び蓄積等の分野で実用化されている。可変長符号化は、符号化する値の発生頻度に応じて符号長を変化させることで、符号化効率を向上させる圧縮符号化技術の一つである。可変長符号化されたデータ（以下、「符号語」と記す）の復号化では、ビットストリームに含まれる符号語の符号長がそれぞれ異なるため、任意の符号語の位置を特定することができない。したがって、ビットストリームの先頭から逐次に符号語を復号化する必要がある。また、ＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）等の規格では、所定の復号化単位が規定されており、復号化単位毎に復号化開始時刻（ＤＴＳ：Ｄｅｃｏｄｉｎｇ  Ｔｉｍｅ  Ｓｔａｍｐ）がヘッダに格納されている。【０００３】
可変長符号化された符号語を復号化する可変長符号復号化装置として、例えば、特許文献１に記載の可変長符号復号化装置が知られている。【０００４】
図１６は、特許文献１に記載の従来の可変長符号復号化装置の構成を示す図である。図１６に示す可変長符号復号化装置は、ビデオデコーダ６００と、メモリ７００とを備える。【０００５】
ビデオデコーダ６００は、ＭＰＥＧ方式で圧縮符号化された画像のコードデータ（ビットストリーム）を復号化する。ビデオデコーダ６００は、入力インタフェース６１０と、メモリインタフェース６２０と、画像伸張部６３０と、出力インタフェース６４０と、コントローラ６５０とを備える。【０００６】
画像伸張部６３０は、ＶＬＤ（Ｖａｒｉａｂｌｅ  Ｌｅｎｇｔｈ  Ｄｅｃｏｄｉｎｇ）部６３１と、ＩＱ（Ｉｎｖｅｒｓｅ  Ｑｕａｎｔｉｚａｔｉｏｎ）部６３２と、ＩＤＣＴ（Ｉｎｖｅｒｓｅ  Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）部６３３と、ＭＶＣ（Ｍｏｔｉｏｎ  Ｖｅｃｔｏｒ  Ｃａｌｃｕｌａｔｉｏｎ）部６３４と、ＭＣ（Ｍｏｔｉｏｎ  Ｃｏｍｐｅｎｓａｔｉｏｎ）部６３５と、バイト／ワード変換部６３６と、クロック制御部６３７と、パーサー部６３８とを備える。【０００７】
メモリ７００は、コードバッファメモリ７１０と、フレームメモリ７２０とを備える。コードバッファメモリ７１０は、未復号のビットストリームを蓄積する。【０００８】
バイト／ワード変換部６３６は、コードバッファメモリ７１０に蓄積されている未復号のビットストリームをバイト単位からワード単位へ変換し出力する。また、バイト／ワード変換部６３６は、所定量の未復号のビットストリームがコードバッファメモリ７１０に蓄積されるまで、クロック制御部６３７へアンダーフロー信号を出力する。【０００９】
クロック制御部６３７は、バイト／ワード変換部６３６によりアンダーフロー信号が出力されている間、ＶＬＤ部６３１へクロック信号を供給しない。【００１０】
ＶＬＤ部６３１は、クロック制御部６３７によりクロック信号が供給されている間、可変長符号テーブルを用いて、バイト／ワード変換部６３６により出力された未復号のビットストリームを復号化する。【００１１】
以上の構成により、図１６に示す従来の可変長符号復号化装置は、所定の復号化単位を復号化する場合に、復号化開始時刻まで待つことなく、所定量の未復号のビットストリームが蓄積された時点で復号化を開始することができるので、ハード資源を効率的に利用することができる。
【特許文献１】特開平１１−１２２１１３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかしながら、上記従来の可変長符号復号化装置では、所定量の未復号のビットストリームが蓄積された時点で復号化を開始することができるが、ビットストリーム終端の符号語の符号長が所定量未満の場合に、復号化を完了することができないという問題点を有していた。【００１３】
これにより、上記従来の可変長符号復号化装置では、ビットストリームの最後まで復号化を実行することができず、例えば、ビットストリームが動画像の場合は、最後の１枚が出力されないなどの問題が生じる。このため、特許文献１に示す技術は、例えば、先頭ピクチャに対してのみ適用され、後続のピクチャに対しては、通常のＤＴＳに基づいた復号化が実行される。すなわち、従来の可変長符号復号化装置を、ビットストリームの最初から最後まで適用することはできなかった。【００１４】
そこで、本発明は上記従来の問題点を解決するもので、所定量の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が所定量未満の場合でも、復号化を完了することのできる可変長符号復号化装置を提供することを目的とする。これにより、ＤＴＳに先行してビットストリームの復号化を実行できるとともに、ビットストリームの最後まで復号化を実行することができる。
【課題を解決するための手段】
【００１５】
上記目的を達成するために、本発明の可変長符号復号化装置は、可変長符号化されたデータを含むビットストリームを復号化する可変長符号復号化装置であって、可変長符号化に用いられる複数の符号語と、前記複数の符号語のそれぞれに対応する復号化データ及び符号長とを記憶する第１記憶手段と、前記ビットストリームを蓄積するバッファを有し、前記バッファに蓄積されている未復号のビットストリームの先頭ビットから連続する第１の長さのビット列を出力し、前記バッファに蓄積されている未復号のビットストリームの長さが前記第１の長さ未満の場合は、前記ビット列の終端にデータを付加することで、前記第１の長さのビット列を出力するビット出力手段と、前記第１記憶手段を参照することで、前記ビット出力手段により出力されたビット列の先頭の符号語と一致する符号語に対応する復号化データ及び符号長を出力する第１参照手段と、少なくとも前記第１の長さの未復号のビットストリームが前記バッファに蓄積されているか否かを判定する第１判定手段と、前記第１の長さより短い少なくとも第２の長さの未復号のビットストリームが前記バッファに蓄積されているか否かを判定する第２判定手段と、前記第１判定手段と前記第２判定手段とのいずれか一方の判定結果を選択する選択手段とを備え、前記ビット出力手段は、前記選択手段により選択された判定結果が、少なくとも前記第１の長さ又は前記第２の長さの未復号のビットストリームが前記バッファに蓄積されていることを示す場合に、前記第１参照手段により出力された符号長に基づいて、新たな先頭ビットを決定し、決定された先頭ビットに従って新たな前記第１の長さのビット列を出力し、前記選択手段は、前記バッファに蓄積されている未復号のビットストリームの長さに応じて、前記第１判定手段及び前記第２判定手段の判定結果の選択を切り換える。【００１６】
これにより、少なくとも第２の長さの未復号のビットストリームが蓄積されていれば、ビットストリームを復号化することができる。よって、第１の長さ以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が第１の長さ未満の場合でも、復号化を完了することができる。【００１７】
また、前記選択手段は、前記第１判定手段の判定結果を選択した場合であり、かつ、選択した判定結果が少なくとも前記第１の長さの未復号のビットストリームが前記バッファに蓄積されていることを示さない場合に、前記第２判定手段の判定結果を選択してもよい。【００１８】
また、前記選択手段は、さらに、前記第２判定手段の判定結果を選択した場合であり、かつ、選択した判定結果が少なくとも前記第２の長さの未復号のビットストリームが前記バッファに蓄積されていることを示す場合に、前記第１判定手段の判定結果を選択してもよい。【００１９】
また、前記選択手段は、前記第１判定手段の判定結果と前記第２判定手段の判定結果とを交互に選択してもよい。【００２０】
また、前記第２の長さは、前記第１参照手段により出力された符号長でもよい。【００２１】
また、前記第１の長さは、前記第１記憶手段に記憶された複数の符号長の中で最大の長さでもよい。【００２２】
また、前記第２の長さは、１ビットであり、前記可変長符号復号化装置は、さらに、前記ビットストリームの終端を検出する終端検出手段を備え、前記選択手段は、前記終端検出手段により前記終端が検出された場合に、前記第２判定手段の判定結果を選択してもよい。【００２３】
これにより、ビットストリームの終端が検出された場合に、少なくとも１ビット分の未復号のビットストリームが蓄積されていれば、ビットストリームを復号化することができる。よって、第１の長さ以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が第１の長さ未満の場合でも、復号化を完了することができる。【００２４】
また、前記選択手段は、前記ビット出力手段により出力された前記第１の長さのビット列に、前記ビットストリームの終端であることを示す符号語が含まれる場合に、前記第２判定手段の判定結果を選択してもよい。【００２５】
これにより、ビット出力手段により出力されたビット列にビットストリームの終端であることを示す符号語が含まれ、かつ、少なくとも未復号のビットストリームの先頭ビットから当該符号語の終端までの長さ分の未復号のビットストリームが蓄積されていれば、ビットストリームを復号化することができる。よって、第１の長さ以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が第１の長さ未満の場合でも、復号化を完了することができる。【００２６】
また、本発明の可変長符号復号化装置は、可変長符号化されたデータを含むビットストリームを復号化する可変長符号復号化装置であって、可変長符号化に用いられる複数の符号語と、前記複数の符号語のそれぞれに対応する復号化データ及び符号長とを記憶する第１記憶手段と、前記ビットストリームの終端を検出する終端検出手段と、前記終端検出手段により前記終端が検出された場合に、前記ビットストリームの終端にデータを付加するデータ付加手段と、前記ビットストリームを蓄積するバッファを有し、前記バッファに蓄積されている未復号のビットストリームの先頭ビットから連続する固定長のビット列を出力し、前記バッファに蓄積されている未復号のビットストリームの長さが前記固定長未満の場合は、前記ビット列の終端にデータを付加することで、前記固定長のビット列を出力するビット出力手段と、前記第１記憶手段を参照することで、前記ビット出力手段により出力されたビット列の先頭の符号語と一致する符号語に対応する復号化データ及び符号長を出力する第１参照手段と、少なくとも前記固定長の未復号のビットストリームが前記バッファに蓄積されているか否かを判定する第１判定手段とを備え、前記ビット出力手段は、前記第１判定手段の判定結果が、少なくとも前記固定長の未復号のビットストリームが前記バッファに蓄積されていることを示す場合に、前記第１参照手段により出力された符号長に基づいて、新たな先頭ビットを決定し、決定された先頭ビットに従って新たな前記固定長のビット列を出力し、前記データ付加手段は、少なくとも前記固定長より１ビット短い長さのデータを付加してもよい。【００２７】
これにより、ビットストリームの終端に少なくとも第１の長さより１ビット短いデータを付加することで、ビットストリーム終端の符号語を蓄積する場合に、蓄積される未復号のビットストリームの長さを必ず第１の長さ以上にすることができる。よって、第１の長さ以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が第１の長さ未満の場合でも、復号化を完了することができる。【００２８】
また、前記固定長は、前記第１記憶手段に記憶された複数の符号長の中で最大の長さでもよい。【００２９】
また、前記終端検出手段は、前記ビットストリームの終端であることを示す符号語を検出することで、前記終端を検出してもよい。【００３０】
また、前記終端検出手段は、前記ビットストリームに含まれるヘッダ情報を解析することで、前記終端を検出してもよい。【００３１】
また、前記可変長符号復号化装置は、さらに、前記第１記憶手段に記憶された符号語とは異なり、可変長符号化に用いられる複数の符号語と、前記複数の符号語のそれぞれに対応する復号化データ及び符号長とを記憶する第２記憶手段と、前記第２記憶手段を参照することで、前記ビット出力手段により出力されたビット列の先頭の符号語と一致する符号語に対応する復号化データ及び符号長を出力する第２参照手段と、前記第１参照手段と前記第２参照手段とのいずれかを選択する第２選択手段とを備え、前記第１の長さは、前記第２選択手段により選択された参照手段が参照する記憶手段に記憶された複数の符号長の中で最大の長さでもよい。【００３２】
これにより、複数の記憶手段に記憶された複数の最大符号長のうち、少なくともいずれか１つの最大符号長分の未復号のビットストリームが蓄積されていれば、当該記憶手段に記憶された可変長符号テーブルに含まれる符号語を復号化することができる。よって、記憶手段に記憶された最大符号長の短い可変長符号テーブルに含まれる符号語を高速に復号化することができる。【００３３】
また、本発明は、装置として実現できるだけでなく、上記の可変長符号復号化装置を構成する各処理手段をステップとする可変長符号復号化方法として実現することもできる。さらに、上記の各装置を構成する構成要素の一部又は全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。
【発明の効果】
【００３４】
本発明は、所定量の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が所定量未満の場合でも、復号化を完了することのできる可変長符号復号化装置を提供することができる。
【図面の簡単な説明】
【００３５】
【図１】図１は、実施の形態１の可変長符号復号化装置の構成を示すブロック図である。
【図２】図２は、実施の形態１のビットストリーム切出し部の詳細を示すブロック図である。
【図３】図３は、実施の形態１の記憶部に記憶される可変長符号テーブルの一例を示す図である。
【図４】図４は、実施の形態１の可変長符号復号化装置の動作を示す図である。
【図５】図５は、実施の形態１の可変長符号復号化装置の動作を示す図である。
【図６】図６は、実施の形態１のビットストリーム切出し部が出力する蓄積状態の出力形式の一例を示す図である。
【図７】図７は、実施の形態２の可変長符号復号化装置の構成を示すブロック図である。
【図８】図８は、実施の形態２の可変長符号復号化装置の動作を示す図である。
【図９】図９は、実施の形態３の可変長符号復号化装置の構成を示すブロック図である。
【図１０】図１０は、実施の形態３の可変長符号復号化装置の動作を示す図である。
【図１１】図１１は、実施の形態４の可変長符号復号化装置の構成を示すブロック図である。
【図１２】図１２は、実施の形態４の可変長符号復号化装置の動作を示す図である。
【図１３】図１３は、実施の形態５の可変長符号復号化装置の構成を示すブロック図である。
【図１４】図１４は、実施の形態５の記憶部に記憶される可変長符号テーブルの一例を示す図である。
【図１５】図１５は、実施の形態５の可変長符号復号化装置の動作を示す図である。
【図１６】図１６は、従来の可変長符号復号化装置の構成を示すブロック図である。
【符号の説明】
【００３６】
１０、２０、３０、４０、５０  可変長符号復号化装置
１００  ビットストリーム切出し部
１０１、５０１  テーブル参照部
１０２、１０３、２０３、３０３、５０２  判定部
１０４、２０４、３０４、５０８、５０９  選択部
１０５  判定方法制御部
１１１、５１１  記憶部
１１２、５１２  参照部
１１３、５１３  可変長符号テーブル
１２１  バッファ
１２２  切出し部
１２３  蓄積状態出力部
２０６  ビットストリーム終端検出部
４０７  データ付加部
５１０  テーブル制御部
６００  ビデオデコーダ
６１０  入力インタフェース
６２０  メモリインタフェース
６３０  画像伸張部
６３１  ＶＬＤ部
６３２  ＩＱ部
６３３  ＩＤＣＴ部
６３４  ＭＶＣ部
６３５  ＭＣ部
６３６  バイト／ワード変換部
６３７  クロック制御部
６３８  パーサー部
６４０  出力インタフェース
６５０  コントローラ
７００  メモリ
７１０  コードバッファメモリ
７２０  フレームメモリ
【発明を実施するための最良の形態】
【００３７】
以下、本発明の可変長符号復号化装置について実施の形態に基づいて図面を参照しながら説明する。【００３８】
（実施の形態１）
まず、本実施の形態の可変長符号復号化装置の構成を説明する。【００３９】
図１は、本実施の形態の可変長符号復号化装置の構成を示すブロック図である。【００４０】
図１に示す可変長符号復号化装置１０は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置１０は、ビットストリーム切出し部１００と、テーブル参照部１０１と、判定部１０２及び１０３と、選択部１０４と、判定方法制御部１０５とを備える。なお、本実施の形態では、可変長符号化に用いられる符号語の最大符号長は８ビットであるとする。【００４１】
ビットストリーム切出し部１００は、入力されたビットストリームを蓄積するバッファを有し、バッファに蓄積されている未復号のビットストリームの先頭ビットから連続する所定の第１の長さのビット列を出力する。ここでは、ビットストリーム切出し部１００は、未復号のビットストリームを蓄積し、当該ビットストリームの先頭ビットから、少なくとも可変長符号化に用いられる符号語の最大符号長分のビット列を切出し出力する。具体的には、ビットストリーム切出し部１００は、未復号のビットストリームの先頭ビットから８ビット分のビット列を切出し出力する。【００４２】
また、ビットストリーム切出し部１００は、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが、第１の長さ未満の場合は、当該ビット列の終端にデータを付加することで、第１の長さのビット列を出力する。具体的には、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満の場合は、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し出力する。【００４３】
また、ビットストリーム切出し部１００は、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さを蓄積状態として出力する。【００４４】
さらに、ビットストリーム切出し部１００は、選択部１０４により出力された判定信号に基づいて、新たな先頭ビットを決定し、決定された先頭ビットから８ビット分のビット列を切出し出力する。なお、ビットストリーム切出し部１００の構成については、図２を参照しながら後述する。【００４５】
テーブル参照部１０１は、記憶部１１１と、参照部１１２とを備える。【００４６】
記憶部１１１は、可変長符号化に用いられる複数の符号語と、複数の復号化データ及び符号長とを対応付けたテーブルである可変長符号テーブル１１３を記憶するメモリなどである。【００４７】
参照部１１２は、記憶部１１１を参照することで、ビットストリーム切出し部１００により出力されたビット列の先頭の符号語と一致する符号語に対応する復号化データ及び符号長を出力する。【００４８】
具体的には、参照部１１２は、まず、可変長符号テーブル１１３を参照することで、出力されたビット列の先頭の符号語が、記憶部１１１に記憶された符号語と一致するか否かを判定する。そして、参照部１１２は、ビットストリーム切出し部１００により出力されたビット列の先頭の符号語が、記憶部１１１に記憶された符号語と一致する場合に、当該符号語に対応する復号化データ及び符号長を出力する。また、ビットストリーム切出し部１００により出力されたビット列の先頭の符号語が、記憶部１１１に記憶された符号語と一致しない場合に、参照部１１２は、任意の復号化データ及び符号長を出力する。【００４９】
判定部１０２は、少なくとも第１の長さの未復号のビットストリームがビットストリーム切出し部１００に蓄積されているか否かを判定する。ここでは、判定部１０２は、少なくとも可変長符号化に用いられる符号語の最大符号長分の未復号のビットストリームがビットストリーム切出し部１００に蓄積されているか否かを判定する。【００５０】
具体的には、ビットストリーム切出し部１００により出力された蓄積状態が「８」以上の場合に、判定部１０２は、判定信号「１」を出力する。また、ビットストリーム切出し部１００により出力された蓄積状態が「８」未満の場合に、判定部１０２は、判定信号「０」を出力する。なお、判定部１０２は、最大符号長以上の未復号のビットストリームがビットストリーム切出し部１００に蓄積されている場合に、テーブル参照部１０１により出力された符号長及び復号化データを有効と判定する（判定信号「１」を出力する）。なお、判定信号「０」などの記載は、判定信号として論理値「０」が出力されることを示し、以下、同様の表記を用いる。【００５１】
判定部１０３は、少なくとも第１の長さより短い第２の長さの未復号のビットストリームがビットストリーム切出し部１００に蓄積されているか否かを判定する。ここでは、判定部１０３は、少なくともテーブル参照部１０１により出力された符号長分の未復号のビットストリームがビットストリーム切出し部１００に蓄積されているか否かを判定する。【００５２】
具体的には、ビットストリーム切出し部１００により出力された蓄積状態が、テーブル参照部１０１により出力された符号長以上の場合に、判定部１０３は、判定信号「１」を出力する。また、ビットストリーム切出し部１００により出力された蓄積状態が、テーブル参照部１０１により出力された符号長未満の場合に、判定部１０３は、判定信号「０」を出力する。なお、判定部１０３は、テーブル参照部１０１により出力された符号長以上の未復号のビットストリームがビットストリーム切出し部１００に蓄積されている場合に、テーブル参照部１０１により出力された符号長及び復号化データを有効と判定する（判定信号「１」を出力する）。【００５３】
選択部１０４は、判定部１０２と判定部１０３とのいずれか一方の判定結果を選択する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さに応じて、選択部１０４は、判定部１０２及び１０３の判定結果の選択を切り換える。ここでは、判定方法制御部１０５により出力された選択信号に応じて、選択部１０４は、判定部１０２により出力された判定信号と、判定部１０３により出力された判定信号とのいずれかを選択する。【００５４】
具体的には、判定方法制御部１０５により出力された選択信号が「０」の場合に、選択部１０４は、判定部１０２により出力された判定信号を選択する。また、判定方法制御部１０５により出力された選択信号が「１」の場合に、選択部１０４は、判定部１０３により出力された判定信号を選択する。【００５５】
判定方法制御部１０５は、判定部１０２により出力された判定信号と、判定部１０３により出力された判定信号とのいずれかを選択するための選択信号を出力する。具体的には、選択部１０４により選択された判定信号が「０」の場合に、判定方法制御部１０５は、次のサイクルで選択信号「１」を出力する。また、選択部１０４により選択された判定信号が「１」の場合に、判定方法制御部１０５は、次のサイクルで選択信号「０」を出力する。なお、初期状態では、選択信号「０」を出力する。【００５６】
なお、以上のように、本実施の形態の可変長符号復号化装置１０では、選択部１０４を判定方法制御部１０５が制御することで、選択部１０４は、判定部１０２を選択した場合であり、かつ、選択した判定結果が少なくとも第１の長さ（最大符号長）の未復号のビットストリームがビットストリーム切出し部１００に蓄積されていることを示さない場合に、判定部１０３を選択するように切り換える。さらに、判定部１０３を選択した場合であり、かつ、選択した判定結果が少なくとも第２の長さ（テーブル参照部１０１により出力された符号長）の未復号のビットストリームがビットストリーム切出し部１００に蓄積されていることを示す場合に、判定部１０２を選択するように切り換える。【００５７】
すなわち、本実施の形態の可変長符号復号化装置１０では、判定部１０２においてテーブル参照部１０１により出力された符号長及び復号化データを無効と判定された場合に、次のサイクルで判定部１０３を選択するように、判定方法制御部１０５が選択部１０４を制御する。さらに、判定部１０３においてテーブル参照部１０１により出力された符号長及び復号化データを有効と判定された場合に、次のサイクルで判定部１０２を選択するように、判定方法制御部１０５が選択部１０４を制御する。【００５８】
これにより、判定部１０２及び１０３を適宜切り換えることで、最大符号長以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が最大符号長未満の場合でも、復号化を完了することができる。【００５９】
図２は、ビットストリーム切出し部１００の詳細を示すブロック図である。同図に示すように、ビットストリーム切出し部１００は、バッファ１２１と、切出し部１２２と、蓄積状態出力部１２３とを備える。【００６０】
バッファ１２１は、入力された未復号のビットストリームを蓄積するメモリなどの記憶部である。【００６１】
切出し部１２２は、バッファ１２１に蓄積されている未復号のビットストリームの先頭ビットから８ビット分のビット列を切出し出力する。このとき、バッファ１２１に蓄積されている未復号のビットストリームの長さが８ビット未満の場合は、切出し部１２２は、当該ビット列の終端に不足分の「０」を付加し出力する。【００６２】
さらに、切出し部１２２は、選択部１０４により選択された判定信号が「１」の場合に、参照部１１２により出力された符号長が有効であると判断し、当該符号長に基づいて未復号のビットストリームの新たな先頭ビットを決定し、ビット列を切出し出力する。具体的には、切出し部１２２は、バッファ１２１に蓄積されている未復号のビットストリームの先頭ビットから当該符号長＋１番目のビットを新たな先頭ビットとして決定する。つまり、新たな先頭ビットより前のビットストリームは、復号済みのビットストリームであり、新たな先頭ビット以降のビットストリームが、新たな未復号のビットストリームである。【００６３】
また、切出し部１２２は、選択部１０４により選択された判定信号が「０」の場合に、参照部１１２により出力された符号長が無効であると判断し、ビットストリームの新たな先頭ビットを決定しない。【００６４】
蓄積状態出力部１２３は、バッファ１２１に蓄積されている未復号のビットストリームの長さを蓄積状態として出力する。【００６５】
図３は、記憶部１１１に記憶される可変長符号テーブル１１３の一例を示す図である。図３に示すように、記憶部１１１に記憶される可変長符号テーブル１１３は、符号語と、符号語の復号化データと、符号語の符号の長さである符号長とが対応付けられている。なお、記憶部１１１に記憶される可変長符号テーブル１１３は、最大符号長が８ビットの可変長符号テーブルである。【００６６】
次に、本実施の形態の可変長符号復号化装置１０の動作を説明する。【００６７】
図４は、可変長符号復号化装置１０による具体的な動作を示す図である。以下、可変長符号復号化装置１０により、ビットストリーム「１１１１１１１０１１１０１０」を復号化する動作を説明する。ここでは、一例として、ビットストリームは、４ビットずつビットストリーム切出し部１００に入力されるとする。なお、図４に示すように、判定部１０２及び１０３の欄で示す下線付きの数字（判定信号）は、選択部１０４で選択される数字（判定信号）である。【００６８】
＜第１サイクル＞
第１サイクルにおいて、可変長符号復号化装置１０に、ビットストリーム「１１１１１１１０１１１０１０」の第１ビット〜第４ビット「１１１１」が入力される。【００６９】
ビットストリーム切出し部１００は、入力されたビットストリーム「１１１１」を蓄積し、蓄積状態「４」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１１１１００００」を出力する。【００７０】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１１００００」の第１ビット〜第５ビット「１１１１０」と、記憶部１１１により記憶された符号語「１１１１０」が一致するので、復号化データ「ｅ」及び符号長「５」を出力する。【００７１】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「４」が「８」未満なので、判定信号「０」を出力する。【００７２】
判定部１０３は、ビットストリーム切出し部１００により出力された蓄積状態「４」が、テーブル参照部１０１により出力された符号長「５」未満なので、判定信号「０」を出力する。【００７３】
選択部１０４は、判定方法制御部１０５により出力された選択信号が「０」（初期状態）なので、判定部１０２により出力された判定信号「０」を選択する。【００７４】
判定方法制御部１０５は、選択部１０４により選択された判定信号が「０」なので、次のサイクル（第２サイクル）で選択信号「１」を出力する。【００７５】
ビットストリーム切出し部１００は、選択部１０４により選択された判定信号が「０」なので、テーブル参照部１０１により出力された符号長「５」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。【００７６】
＜第２サイクル＞
第２サイクルにおいて、可変長符号復号化装置１０に、ビットストリーム「１１１１１１１０１１１０１０」の第５ビット〜第８ビット「１１１０」が入力される。【００７７】
ビットストリーム切出し部１００は、入力されたビットストリーム「１１１０」を蓄積し、蓄積状態「８」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット以上なので、ビットストリーム切出し部１００は、当該ビットストリームの先頭ビットから８ビット分のビット列を切出し、ビット列「１１１１１１１０」を出力する。【００７８】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１１１１１０」と、記憶部１１１により記憶された符号語「１１１１１１１０」が一致するので、復号化データ「ｈ」及び符号長「８」を出力する。【００７９】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「８」が「８」以上なので、判定信号「１」を出力する。【００８０】
判定部１０３は、ビットストリーム切出し部１００により出力された蓄積状態「８」が、テーブル参照部１０１により出力された符号長「８」以上なので、判定信号「１」を出力する。【００８１】
選択部１０４は、判定方法制御部１０５により出力された選択信号が「１」なので、判定部１０３により出力された判定信号「１」を選択する。【００８２】
判定方法制御部１０５は、選択部１０４により選択された判定信号が「１」なので、次のサイクル（第３サイクル）で選択信号「０」を出力する。【００８３】
ビットストリーム切出し部１００は、選択部１０４により選択された判定信号が「１」なので、テーブル参照部１０１により出力された符号長「８」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部１００は、「１１１１１１１０」の次のビットを新たな先頭ビットと決定する。【００８４】
＜第３サイクル＞
第３サイクルにおいて、可変長符号復号化装置１０に、ビットストリーム「１１１１１１１０１１１０１０」の第９ビット〜第１２ビット「１１１０」が入力される。【００８５】
ビットストリーム切出し部１００は、入力されたビットストリーム「１１１０」を蓄積し、蓄積状態「４」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１１１０００００」を出力する。【００８６】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１０００００」の第１ビット〜第４ビット「１１１０」と、記憶部１１１により記憶された符号語「１１１０」が一致するので、復号化データ「ｄ」及び符号長「４」を出力する。【００８７】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「４」が「８」未満なので、判定信号「０」を出力する。【００８８】
判定部１０３は、ビットストリーム切出し部１００により出力された蓄積状態「４」が、テーブル参照部１０１により出力された符号長「４」以上なので、判定信号「１」を出力する。【００８９】
選択部１０４は、判定方法制御部１０５により出力された選択信号が「０」なので、判定部１０２により出力された判定信号「０」を選択する。【００９０】
判定方法制御部１０５は、選択部１０４により選択された判定信号が「０」なので、次のサイクル（第４サイクル）で選択信号「１」を出力する。【００９１】
ビットストリーム切出し部１００は、選択部１０４により選択された判定信号が「０」なので、テーブル参照部１０１により出力された符号長「４」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。【００９２】
＜第４サイクル＞
第４サイクルにおいて、可変長符号復号化装置１０に、ビットストリーム「１１１１１１１０１１１０１０」の第１３ビット〜第１４ビット「１０」が入力される。【００９３】
ビットストリーム切出し部１００は、入力されたビットストリーム「１０」を蓄積し、蓄積状態「６」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１１１０１０００」を出力する。【００９４】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１０１０００」の第１ビット〜第４ビット「１１１０」と、記憶部１１１により記憶された符号語「１１１０」が一致するので、復号化データ「ｄ」及び符号長「４」を出力する。【００９５】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「６」が「８」未満なので、判定信号「０」を出力する。【００９６】
判定部１０３は、ビットストリーム切出し部１００により出力された蓄積状態「６」が、テーブル参照部１０１により出力された符号長「４」以上なので、判定信号「１」を出力する。【００９７】
選択部１０４は、判定方法制御部１０５により出力された選択信号が「１」なので、判定部１０３により出力された判定信号「１」を選択する。【００９８】
判定方法制御部１０５は、選択部１０４により選択された判定信号が「１」なので、次のサイクル（第５サイクル）で選択信号「０」を出力する。【００９９】
ビットストリーム切出し部１００は、選択部１０４により選択された判定信号が「１」なので、テーブル参照部１０１により出力された符号長「４」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部１００は、「１１１０」の次のビット「１」を新たな先頭ビットとして決定する。【０１００】
＜第５サイクル＞
第５サイクルにおいて、可変長符号復号化装置１０に、ビットストリームは入力されない。【０１０１】
ビットストリーム切出し部１００は、ビットストリームが入力されないので、ビットストリームを蓄積せず、蓄積状態「２」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１０００００００」を出力する。【０１０２】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１０００００００」の第１ビット〜第２ビット「１０」と、記憶部１１１により記憶された符号語「１０」が一致するので、復号化データ「ｂ」及び符号長「２」を出力する。【０１０３】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「２」が「８」未満なので、判定信号「０」を出力する。【０１０４】
判定部１０３は、ビットストリーム切出し部１００により出力された蓄積状態「２」が、テーブル参照部１０１により出力された符号長「２」以上なので、判定信号「１」を出力する。【０１０５】
選択部１０４は、判定方法制御部１０５により出力された選択信号が「０」なので、判定部１０２により出力された判定信号「０」を選択する。【０１０６】
判定方法制御部１０５は、選択部１０４により選択された判定信号が「０」なので、次のサイクル（第６サイクル）で選択信号「１」を出力する。【０１０７】
ビットストリーム切出し部１００は、選択部１０４により選択された判定信号が「０」なので、テーブル参照部１０１により出力された符号長「２」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。【０１０８】
＜第６サイクル＞
第６サイクルにおいて、可変長符号復号化装置１０に、ビットストリームは入力されない。【０１０９】
ビットストリーム切出し部１００は、ビットストリームが入力されないので、ビットストリームを蓄積せず、蓄積状態「２」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１０００００００」を出力する。【０１１０】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１０００００００」の第１ビット〜第２ビット「１０」と、記憶部１１１により記憶された符号語「１０」が一致するので、復号化データ「ｂ」及び符号長「２」を出力する。【０１１１】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「２」が「８」未満なので、判定信号「０」を出力する。【０１１２】
判定部１０３は、ビットストリーム切出し部１００により出力された蓄積状態「２」が、テーブル参照部１０１により出力された符号長「２」以上なので、判定信号「１」を出力する。【０１１３】
選択部１０４は、判定方法制御部１０５により出力された選択信号が「１」なので、判定部１０３により出力された判定信号「１」を選択する。【０１１４】
判定方法制御部１０５は、選択部１０４により選択された判定信号が「１」なので、次のサイクル（第７サイクル）で選択信号「０」を出力する。【０１１５】
ビットストリーム切出し部１００は、選択部１０４により選択された判定信号が「１」なので、テーブル参照部１０１により出力された符号長「２」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。【０１１６】
以上のように、本実施の形態の可変長符号復号化装置１０は、少なくともテーブル参照部１０１により出力された符号長分の未復号のビットストリームがビットストリーム切出し部１００に蓄積されていれば、８ビット以上の未復号のビットストリームが蓄積されていなくても、ビットストリームを復号化することができる。これにより、８ビット以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が８ビット未満の場合でも、復号化を完了することができる。【０１１７】
図５は、可変長符号復号化装置１０による具体的な動作を示す図である。以下、可変長符号復号化装置１０により、ビットストリーム「１１１０１１１０…」を復号化する動作を説明する。ここでは、一例として、ビットストリームは、２ビットずつビットストリーム切出し部１００に入力されるとする。なお、図５に示すように、判定部１０２及び１０３の欄で示す下線付きの数字（判定信号）は、選択部１０４で選択される数字（判定信号）である。【０１１８】
＜第１サイクル＞
第１サイクルにおいて、可変長符号復号化装置１０に、ビットストリーム「１１１０１１１０…」の第１ビット〜第２ビット「１１」が入力される。【０１１９】
ビットストリーム切出し部１００は、入力されたビットストリーム「１１」を蓄積し、蓄積状態「２」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１１００００００」を出力する。【０１２０】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１００００００」の第１ビット〜第３ビット「１１０」と、記憶部１１１により記憶された符号語「１１０」が一致するので、復号化データ「ｃ」及び符号長「３」を出力する。【０１２１】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「２」が「８」未満なので、判定信号「０」を出力する。【０１２２】
判定部１０３は、ビットストリーム切出し部１００により出力された蓄積状態「２」が、テーブル参照部１０１により出力された符号長「３」未満なので、判定信号「０」を出力する。【０１２３】
選択部１０４は、判定方法制御部１０５により出力された選択信号が「０」（初期状態）なので、判定部１０２により出力された判定信号「０」を選択する。【０１２４】
判定方法制御部１０５は、選択部１０４により選択された判定信号が「０」なので、次のサイクル（第２サイクル）で選択信号「１」を出力する。【０１２５】
ビットストリーム切出し部１００は、選択部１０４により選択された判定信号が「０」なので、テーブル参照部１０１により出力された符号長「３」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。【０１２６】
＜第２サイクル＞
第２サイクルにおいて、可変長符号復号化装置１０に、ビットストリーム「１１１０１１１０…」の第３ビット〜第４ビット「１０」が入力される。【０１２７】
ビットストリーム切出し部１００は、入力されたビットストリーム「１０」を蓄積し、蓄積状態「４」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１１１０００００」を出力する。【０１２８】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１０００００」の第１ビット〜第４ビット「１１１０」と、記憶部１１１により記憶された符号語「１１１０」が一致するので、復号化データ「ｄ」及び符号長「４」を出力する。【０１２９】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「４」が「８」未満なので、判定信号「０」を出力する。【０１３０】
判定部１０３は、ビットストリーム切出し部１００により出力された蓄積状態「４」が、テーブル参照部１０１により出力された符号長「４」以上なので、判定信号「１」を出力する。【０１３１】
選択部１０４は、判定方法制御部１０５により出力された選択信号が「１」なので、判定部１０３により出力された判定信号「１」を選択する。【０１３２】
判定方法制御部１０５は、選択部１０４により選択された判定信号が「１」なので、次のサイクル（第３サイクル）で選択信号「０」を出力する。【０１３３】
ビットストリーム切出し部１００は、選択部１０４により選択された判定信号が「１」なので、テーブル参照部１０１により出力された符号長「４」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部１００は、「１１１０」の次のビットを新たな先頭ビットとして決定する。【０１３４】
以上のように、本実施の形態の可変長符号復号化装置１０は、少なくともテーブル参照部１０１により出力された符号長分の未復号のビットストリームがビットストリーム切出し部１００に蓄積されていれば、８ビット以上の未復号のビットストリームが蓄積されていなくても、ビットストリームを復号化することができる。これにより、ビットストリーム終端の符号語の符号長が８ビット未満の場合でも、復号化を完了できることに加えて、さらに、符号長が８ビット未満の符号語を高速に復号化することができる。【０１３５】
なお、上記説明において、ビットストリーム切出し部１００は、蓄積されている未復号のビットストリームの長さを蓄積状態として出力しているが、図６に示す出力形式１又は２で出力してもよい。具体的には、出力形式１では、蓄積されている未復号のビットストリームの長さが８ビット以上の場合に、蓄積状態「８」を出力する。また、出力形式２では、蓄積状態の長さは８ビットで、蓄積状態の各ビットはビットストリーム切出し部１００により出力されたビット列の各ビットに対応し、当該ビット列の当該ビットが蓄積されているか否かを示す。【０１３６】
また、上記説明において、ビットストリーム切出し部１００は、蓄積されている未復号のビットストリームの長さが８ビット未満の場合に、当該ビット列の終端に不足分の「０」を付加しているが、「０」以外の任意のデータを付加してもよい。【０１３７】
また、ビットストリーム切出し部１００が出力するビット列の長さは、所定の固定長であってもよい。すなわち、ビットストリーム切出し部１００は、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの先頭ビットから連続する固定長のビット列を出力してもよい。このとき、判定部１０２は、少なくとも固定長の未復号のビットストリームが、ビットストリーム切出し部１００に蓄積されているか否かを判定する。【０１３８】
また、判定方法制御部１０５は、サイクル毎に判定部１０２及び１０３の選択を交互に切り換えるように選択部１０４を制御してもよい。【０１３９】
また、上記説明において、記憶部１１１は、最大符号長が８ビットの可変長符号テーブルを記憶しているが、８ビット以外の任意の最大符号長の可変長符号テーブルを記憶してもよい。【０１４０】
（実施の形態２）
まず、本実施の形態の可変長符号復号化装置の構成を説明する。【０１４１】
図７は、本実施の形態の可変長符号復号化装置２０の構成を示すブロック図である。なお、図１と同様の要素には同一の符号を付しており、説明を省略する。【０１４２】
図７に示す可変長符号復号化装置２０は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置２０は、ビットストリーム切出し部１００と、テーブル参照部１０１と、判定部１０２及び２０３と、選択部２０４と、ビットストリーム終端検出部２０６とを備える。可変長符号復号化装置２０は、実施の形態１の可変長符号復号化装置１０に対して、判定方法制御部１０５が削除され、判定部１０３の代わりに判定部２０３を備え、選択部１０４の代わりに選択部２０４を備え、さらに、新たにビットストリーム終端検出部２０６を備える点が異なる。【０１４３】
判定部２０３は、少なくとも第１の長さより短い第２の長さの未復号のビットストリームがビットストリーム切出し部１００に蓄積されているか否かを判定する。ここでは、判定部２０３は、少なくとも１ビット分の未復号のビットストリームがビットストリーム切出し部１００に蓄積されているか否かを判定する。具体的には、ビットストリーム切出し部１００により出力された蓄積状態が「１」以上の場合に、判定部２０３は、判定信号「１」を出力する。また、ビットストリーム切出し部１００により出力された蓄積状態が「１」未満の場合に、判定部２０３は、判定信号「０」を出力する。【０１４４】
選択部２０４は、ビットストリーム終端検出部２０６によりビットストリームの終端が検出された場合、判定部２０３の判定結果を選択する。ここでは、ビットストリーム終端検出部２０６により出力された終端検出信号に応じて、選択部２０４は、判定部１０２により出力された判定信号と、判定部２０３により出力された判定信号とのいずれかを選択する。具体的には、ビットストリーム終端検出部２０６により出力された終端検出信号が「０」の場合に、選択部２０４は、判定部１０２により出力された判定信号を選択する。また、ビットストリーム終端検出部２０６により出力された終端検出信号が「１」の場合に、選択部２０４は、判定部２０３により出力された判定信号を選択する。【０１４５】
ビットストリーム終端検出部２０６は、入力されるビットストリームの終端を検出する。具体的には、ビットストリーム終端検出部２０６は、ビットストリームの終端であることを示す符号語を検出する、又は、ヘッダ情報を解析することで、ビットストリームの終端を検出する。なお、ビットストリーム終端検出部２０６は、ビットストリームの終端を検出するまで、終端検出信号「０」を出力し続ける。ビットストリームの終端を検出した後は、終端検出信号「１」を出力する。【０１４６】
ビットストリーム切出し部１００は、選択部２０４により選択された判定信号が「１」の場合に、参照部１１２により出力された符号長が有効であると判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、ビット列を切出し出力する。具体的には、ビットストリーム切出し部１００は、バッファ１２１に蓄積されている未復号のビットストリームの先頭ビットから当該符号長＋１番目のビットを新たな先頭ビットとして決定する。つまり、新たな先頭ビットより前のビットストリームは、復号済みのビットストリームであり、新たな先頭ビット以降のビットストリームが、新たな未復号のビットストリームである。また、選択部２０４により選択された判定信号が「０」の場合に、ビットストリーム切出し部１００は、参照部１１２により出力された符号長が無効であると判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。【０１４７】
以上のように、判定部２０３は、少なくとも１ビット分の未復号のビットストリームがビットストリーム切出し部１００に蓄積されている場合に、テーブル参照部１０１により出力された符号長及び復号化データを有効と判定する（判定信号「１」を出力する）。本実施の形態の可変長符号復号化装置２０は、判定部２０３を備えることで、少なくとも１ビット分の未復号のビットストリームがビットストリーム切出し部１００に蓄積されている場合は、ビットストリームの復号化を実行することができる。【０１４８】
ただし、判定部２０３による判定は、ビットストリームの終端が判明している場合でないと信用性に欠けるために、ビットストリームの終端が検出されるまでは、判定部１０２による判定が実行される。すなわち、選択部２０４は、ビットストリーム終端検出部２０６でビットストリームの終端が検出されるまでは、判定部１０２を選択する。ビットストリーム終端検出部２０６でビットストリームの終端が検出された後は、判定部２０３を選択する。【０１４９】
これにより、ビットストリームの終端が検出された場合に、判定部１０２から判定部２０３に切り換えることで、最大符号長以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が最大符号長未満の場合でも、復号化を完了することができる。【０１５０】
次に、本実施の形態の可変長符号復号化装置２０の動作を説明する。【０１５１】
図８は、可変長符号復号化装置２０による具体的な動作を示す図である。以下、可変長符号復号化装置２０により、ビットストリーム「１１１１１１１０１１１０１０」を復号化する動作を説明する。ここでは、一例として、ビットストリームは、４ビットずつビットストリーム切出し部１００及びビットストリーム終端検出部２０６に入力されるとする。なお、図８に示すように、判定部１０２及び２０３の欄で示す下線付きの数字（判定信号）は、選択部２０４で選択される数字（判定信号）である。【０１５２】
＜第１サイクル＞
第１サイクルにおいて、可変長符号復号化装置２０に、ビットストリーム「１１１１１１１０１１１０１０」の第１ビット〜第４ビット「１１１１」が入力される。【０１５３】
ビットストリーム終端検出部２０６は、ビットストリームの終端を検出しないので、終端検出信号「０」を出力する。【０１５４】
ビットストリーム切出し部１００は、入力されたビットストリーム「１１１１」を蓄積し、蓄積状態「４」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１１１１００００」を出力する。【０１５５】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１１００００」の第１ビット〜第５ビット「１１１１０」と、記憶部１１１により記憶された符号語「１１１１０」が一致するので、復号化データ「ｅ」及び符号長「５」を出力する。【０１５６】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「４」が「８」未満なので、判定信号「０」を出力する。【０１５７】
判定部２０３は、ビットストリーム切出し部１００により出力された蓄積状態「４」が「１」以上なので、判定信号「１」を出力する。【０１５８】
選択部２０４は、ビットストリーム終端検出部２０６により出力された終端検出信号が「０」なので、判定部１０２により出力された判定信号「０」を選択する。【０１５９】
ビットストリーム切出し部１００は、選択部２０４により選択された判定信号が「０」なので、テーブル参照部１０１により出力された符号長「５」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。【０１６０】
＜第２サイクル＞
第２サイクルにおいて、可変長符号復号化装置２０に、ビットストリーム「１１１１１１１０１１１０１０」の第５ビット〜第８ビット「１１１０」が入力される。【０１６１】
ビットストリーム終端検出部２０６は、ビットストリームの終端を検出しないので、終端検出信号「０」を出力する。【０１６２】
ビットストリーム切出し部１００は、入力されたビットストリーム「１１１０」を蓄積し、蓄積状態「８」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット以上なので、ビットストリーム切出し部１００は、当該ビットストリームの先頭ビットから８ビット分のビット列を切出し、ビット列「１１１１１１１０」を出力する。【０１６３】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１１１１１０」と、記憶部１１１により記憶された符号語「１１１１１１１０」が一致するので、復号化データ「ｈ」及び符号長「８」を出力する。【０１６４】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「８」が「８」以上なので、判定信号「１」を出力する。【０１６５】
判定部２０３は、ビットストリーム切出し部１００により出力された蓄積状態「８」が「１」以上なので、判定信号「１」を出力する。【０１６６】
選択部２０４は、ビットストリーム終端検出部２０６により出力された終端検出信号が「０」なので、判定部１０２により出力された判定信号「１」を選択する。【０１６７】
ビットストリーム切出し部１００は、選択部２０４により選択された判定信号が「１」なので、テーブル参照部１０１により出力された符号長「８」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部１００は、「１１１１１１１０」の次のビットを新たな先頭ビットとして決定する。【０１６８】
＜第３サイクル＞
第３サイクルにおいて、可変長符号復号化装置２０に、ビットストリーム「１１１１１１１０１１１０１０」の第９ビット〜第１２ビット「１１１０」が入力される。【０１６９】
ビットストリーム終端検出部２０６は、ビットストリームの終端を検出しないので、終端検出信号「０」を出力する。【０１７０】
ビットストリーム切出し部１００は、入力されたビットストリーム「１１１０」を蓄積し、蓄積状態「４」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１１１０００００」を出力する。【０１７１】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１０００００」の第１ビット〜第４ビット「１１１０」と、記憶部１１１により記憶された符号語「１１１０」が一致するので、復号化データ「ｄ」及び符号長「４」を出力する。【０１７２】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「４」が「８」未満なので、判定信号「０」を出力する。【０１７３】
判定部２０３は、ビットストリーム切出し部１００により出力された蓄積状態「４」が「１」以上なので、判定信号「１」を出力する。【０１７４】
選択部２０４は、ビットストリーム終端検出部２０６により出力された終端検出信号が「０」なので、判定部１０２により出力された判定信号「０」を選択する。【０１７５】
ビットストリーム切出し部１００は、選択部２０４により選択された判定信号が「０」なので、テーブル参照部１０１により出力された符号長「４」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。【０１７６】
＜第４サイクル＞
第４サイクルにおいて、可変長符号復号化装置２０に、ビットストリーム「１１１１１１１０１１１０１０」の第１３ビット〜第１４ビット「１０」が入力される。【０１７７】
ビットストリーム終端検出部２０６は、ビットストリームの終端を検出するので、終端検出信号「１」を出力する。【０１７８】
ビットストリーム切出し部１００は、入力されたビットストリーム「１０」を蓄積し、蓄積状態「６」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１１１０１０００」を出力する。【０１７９】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１０１０００」の第１ビット〜第４ビット「１１１０」と、記憶部１１１により記憶された符号語「１１１０」が一致するので、復号化データ「ｄ」及び符号長「４」を出力する。【０１８０】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「６」が「８」未満なので、判定信号「０」を出力する。【０１８１】
判定部２０３は、ビットストリーム切出し部１００により出力された蓄積状態「６」が「１」以上なので、判定信号「１」を出力する。【０１８２】
選択部２０４は、ビットストリーム終端検出部２０６により出力された終端検出信号が「１」なので、判定部２０３により出力された判定信号「１」を選択する。【０１８３】
ビットストリーム切出し部１００は、選択部２０４により選択された判定信号が「１」なので、テーブル参照部１０１により出力された符号長「４」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部１００は、「１１１０」の次のビット「１」を新たな先頭ビットとして決定する。【０１８４】
＜第５サイクル＞
第５サイクルにおいて、可変長符号復号化装置２０に、ビットストリームは入力されない。【０１８５】
ビットストリーム終端検出部２０６は、第４サイクルでビットストリームの終端を検出したので、終端検出信号「１」を出力する。【０１８６】
ビットストリーム切出し部１００は、ビットストリームが入力されないので、ビットストリームを蓄積せず、蓄積状態「２」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１０００００００」を出力する。【０１８７】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１０００００００」の第１ビット〜第２ビット「１０」と、記憶部１１１により記憶された符号語「１０」が一致するので、復号化データ「ｂ」及び符号長「２」を出力する。【０１８８】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「２」が「８」未満なので、判定信号「０」を出力する。【０１８９】
判定部２０３は、ビットストリーム切出し部１００により出力された蓄積状態「２」が「１」以上なので、判定信号「１」を出力する。【０１９０】
選択部２０４は、ビットストリーム終端検出部２０６により出力された終端検出信号が「１」なので、判定部２０３により出力された判定信号「１」を選択する。【０１９１】
ビットストリーム切出し部１００は、選択部２０４により出力された判定信号が「１」なので、テーブル参照部１０１により出力された符号長「２」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。【０１９２】
以上のように、本実施の形態の可変長符号復号化装置２０は、ビットストリーム終端検出部２０６によりビットストリームの終端が検出された場合に、少なくとも１ビット分の未復号のビットストリームがビットストリーム切出し部１００に蓄積されていれば、８ビット以上の未復号のビットストリームが蓄積されていなくても、ビットストリームを復号化することができる。これにより、８ビット以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が８ビット未満の場合でも、復号化を完了することができる。【０１９３】
（実施の形態３）
まず、本実施の形態の可変長符号復号化装置の構成を説明する。【０１９４】
図９は、本実施の形態の可変長符号復号化装置３０の構成を示すブロック図である。なお、図１と同様の要素には同一の符号を付しており、説明を省略する。【０１９５】
図９に示す可変長符号復号化装置３０は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置３０は、ビットストリーム切出し部１００と、テーブル参照部１０１と、判定部１０２及び３０３と、選択部３０４とを備える。可変長符号復号化装置３０は、実施の形態１の可変長符号復号化装置１０に対して、判定方法制御部１０５が削除され、判定部１０３の代わりに判定部３０３を備え、選択部１０４の代わりに選択部３０４を備える点が異なる。なお、本実施の形態では、符号語「１０」が、ビットストリームの終端であることを示す符号語であるとする。【０１９６】
判定部３０３は、ビットストリーム切出し部１００により出力されたビット列にビットストリームの終端であることを示す符号語が含まれ、かつ、少なくとも未復号のビットストリームの先頭ビットから当該符号語の終端までの長さ分の未復号のビットストリームがビットストリーム切出し部１００に蓄積されているか否かを判定する。【０１９７】
具体的には、ビットストリーム切出し部１００により出力されたビット列を逐次復号化することで、符号語「１０」が復号化され、かつ、ビットストリーム切出し部１００により出力された蓄積状態が、当該ビット列の先頭ビットから復号化された符号語「１０」の終端までの長さ以上の場合に、判定部３０３は、判定信号「１」を出力する。また、ビットストリーム切出し部１００により出力されたビット列を逐次復号化することで、符号語「１０」が復号化され、かつ、ビットストリーム切出し部１００により出力された蓄積状態が、当該ビット列の先頭ビットから復号化された符号語「１０」の終端までの長さ未満の場合に、判定部３０３は、判定信号「０」を出力する。また、ビットストリーム切出し部１００により出力されたビット列を逐次復号化することで、符号語「１０」が復号化されない場合は、判定部３０３は、判定信号「０」を出力する。【０１９８】
選択部３０４は、判定部３０３により出力された判定信号に応じて、判定部１０３により出力された判定信号と、判定部３０３により出力された判定信号とのいずれかを選択する。具体的には、判定部３０３により出力された判定信号が「０」の場合に、選択部３０４は、判定部１０３により出力された判定信号を選択する。また、判定部３０３により出力された判定信号が「１」の場合に、選択部３０４は、判定部３０３により出力された判定信号を選択する。【０１９９】
ビットストリーム切出し部１００は、選択部３０４により選択された判定信号が「１」の場合に、参照部１１２により出力された符号長が有効であると判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、ビット列を切出し出力する。具体的には、ビットストリーム切出し部１００は、バッファ１２１に蓄積されている未復号のビットストリームの先頭ビットから当該符号長＋１番目のビットを新たな先頭ビットとして決定する。つまり、新たな先頭ビットより前のビットストリームは、復号済みのビットストリームであり、新たな先頭ビット以降のビットストリームが、新たな未復号のビットストリームである。また、選択部３０４により選択された判定信号が「０」の場合に、ビットストリーム切出し部１００は、参照部１１２により出力された符号長が無効であると判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。【０２００】
以上のように、判定部３０３は、ビットストリーム切出し部１００により出力されたビット列にビットストリームの終端であることを示す符号語が含まれ、かつ、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが、未復号のビットストリームの先頭ビットから当該符号語までの長さ以上である場合に、テーブル参照部１０１により出力された符号長及び復号化データを有効と判定する（判定信号「１」を出力する）。そして、選択部３０４は、判定部３０３において有効であると判定された場合は、判定部３０３の判定結果を選択する。【０２０１】
これにより、実施の形態２と同様に、ビットストリームの終端が検出された場合に、判定部１０２から判定部３０３に切り換えることで、最大符号長以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が最大符号長未満の場合でも、復号化を完了することができる。【０２０２】
次に、本実施の形態の可変長符号復号化装置３０の動作を説明する。【０２０３】
図１０は、可変長符号復号化装置３０による具体的な動作を示す図である。以下、可変長符号復号化装置３０により、ビットストリーム「１１１１１１１０１１１０１０」を復号化する動作を説明する。ここでは、一例として、ビットストリームは、４ビットずつビットストリーム切出し部１００に入力されるとする。なお、図１０に示すように、判定部１０２及び３０３の欄で示す下線付きの数字（判定信号）は、選択部３０４で選択される数字（判定信号）である。【０２０４】
＜第１サイクル＞
第１サイクルにおいて、可変長符号復号化装置３０に、ビットストリーム「１１１１１１１０１１１０１０」の第１ビット〜第４ビット「１１１１」が入力される。【０２０５】
ビットストリーム切出し部１００は、入力されたビットストリーム「１１１１」を蓄積し、蓄積状態「４」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１１１１００００」を出力する。【０２０６】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１１００００」の第１ビット〜第５ビット「１１１１０」と、記憶部１１１により記憶された符号語「１１１１０」が一致するので、復号化データ「ｅ」及び符号長「５」を出力する。【０２０７】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「４」が「８」未満なので、判定信号「０」を出力する。【０２０８】
判定部３０３は、ビットストリーム切出し部１００により出力されたビット列「１１１１００００」を逐次復号化することで、符号語「１０」が復号化されないので、判定信号「０」を出力する。【０２０９】
選択部３０４は、判定部３０３により出力された判定信号が「０」なので、判定部１０２により出力された判定信号「０」を選択する。【０２１０】
ビットストリーム切出し部１００は、選択部３０４により選択された判定信号が「０」なので、テーブル参照部１０１により出力された符号長「５」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。【０２１１】
＜第２サイクル＞
第２サイクルにおいて、可変長符号復号化装置３０に、ビットストリーム「１１１１１１１０１１１０１０」の第５ビット〜第８ビット「１１１０」が入力される。【０２１２】
ビットストリーム切出し部１００は、入力されたビットストリーム「１１１０」を蓄積し、蓄積状態「８」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット以上なので、ビットストリーム切出し部１００は、当該ビットストリームの先頭ビットから８ビット分のビット列を切出し、ビット列「１１１１１１１０」を出力する。【０２１３】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１１１１１０」と、記憶部１１１により記憶された符号語「１１１１１１１０」が一致するので、復号化データ「ｈ」及び符号長「８」を出力する。【０２１４】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「８」が「８」以上なので、判定信号「１」を出力する。【０２１５】
判定部３０３は、ビットストリーム切出し部１００により出力されたビット列「１１１１１１１０」を逐次復号化することで、符号語「１０」が復号化されないので、判定信号「０」を出力する。【０２１６】
選択部３０４は、判定部３０３により出力された判定信号が「０」なので、判定部１０２により出力された判定信号「１」を選択する。【０２１７】
ビットストリーム切出し部１００は、選択部３０４により選択された判定信号が「１」なので、テーブル参照部１０１により出力された符号長「８」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部１００は、「１１１１１１１０」の次のビットを新たな先頭ビットとして決定する。【０２１８】
＜第３サイクル＞
第３サイクルにおいて、可変長符号復号化装置３０に、ビットストリーム「１１１１１１１０１１１０１０」の第９ビット〜第１２ビット「１１１０」が入力される。【０２１９】
ビットストリーム切出し部１００は、入力されたビットストリーム「１１１０」を蓄積し、蓄積状態「４」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１１１０００００」を出力する。【０２２０】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１０００００」の第１ビット〜第４ビット「１１１０」と、記憶部１１１により記憶された符号語「１１１０」が一致するので、復号化データ「ｄ」及び符号長「４」を出力する。【０２２１】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「４」が「８」未満なので、判定信号「０」を出力する。【０２２２】
判定部３０３は、ビットストリーム切出し部１００により出力されたビット列「１１１０００００」を逐次復号化することで、符号語「１０」が復号化されないので、判定信号「０」を出力する。【０２２３】
選択部３０４は、判定部３０３により出力された判定信号が「０」なので、判定部１０２により出力された判定信号「０」を選択する。【０２２４】
ビットストリーム切出し部１００は、選択部３０４により選択された判定信号が「０」なので、テーブル参照部１０１により出力された符号長「４」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。【０２２５】
＜第４サイクル＞
第４サイクルにおいて、可変長符号復号化装置３０に、ビットストリーム「１１１１１１１０１１１０１０」の第１３ビット〜第１４ビット「１０」が入力される。【０２２６】
ビットストリーム切出し部１００は、入力されたビットストリーム「１０」を蓄積し、蓄積状態「６」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１１１０１０００」を出力する。【０２２７】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１０１０００」の第１ビット〜第４ビット「１１１０」と、記憶部１１１により記憶された符号語「１１１０」が一致するので、復号化データ「ｄ」及び符号長「４」を出力する。【０２２８】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「６」が「８」未満なので、判定信号「０」を出力する。【０２２９】
判定部３０３は、ビットストリーム切出し部１００により出力されたビット列「１１１０１０００」を逐次復号化することで、符号語「１０」が復号化され、かつ、ビットストリーム切出し部１００により出力された蓄積状態「６」が、当該ビット列の先頭ビットから復号化された符号語「１０」の終端までの長さ「６」以上なので、判定信号「１」を出力する。【０２３０】
選択部３０４は、判定部３０３により出力された判定信号が「１」なので、判定部３０３により出力された判定信号「１」を選択する。【０２３１】
ビットストリーム切出し部１００は、選択部３０４により選択された判定信号が「１」なので、テーブル参照部１０１により出力された符号長「４」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部１００は、「１１１０」の次のビット「１」を新たな先頭ビットとして決定する。【０２３２】
＜第５サイクル＞
第５サイクルにおいて、可変長符号復号化装置３０に、ビットストリームは入力されない。【０２３３】
ビットストリーム切出し部１００は、ビットストリームが入力されないので、ビットストリームを蓄積せず、蓄積状態「２」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１０００００００」を出力する。【０２３４】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１０００００００」の第１ビット〜第２ビット「１０」と、記憶部１１１により記憶された符号語「１０」が一致するので、復号化データ「ｂ」及び符号長「２」を出力する。【０２３５】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「２」が「８」未満なので、判定信号「０」を出力する。【０２３６】
判定部３０３は、ビットストリーム切出し部１００により出力されたビット列「１０００００００」を逐次復号化することで、符号語「１０」が復号化され、かつ、ビットストリーム切出し部１００により出力された蓄積状態「２」が、当該ビット列の先頭ビットから復号化された符号語「１０」の終端までの長さ「２」以上なので、判定信号「１」を出力する。【０２３７】
選択部３０４は、判定部３０３により出力された判定信号が「１」なので、判定部３０３により出力された判定信号「１」を選択する。【０２３８】
ビットストリーム切出し部１００は、選択部３０４により選択された判定信号が「１」なので、テーブル参照部１０１により出力された符号長「２」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。【０２３９】
以上のように、本実施の形態の可変長符号復号化装置３０は、ビットストリーム切出し部１００により出力されたビット列にビットストリームの終端であることを示す符号語「１０」が含まれ、かつ、少なくとも未復号のビットストリームの先頭ビットから当該符号語の終端までの長さ分の未復号のビットストリームがビットストリーム切出し部１００に蓄積されていれば、８ビット以上の未復号のビットストリームが蓄積されていなくても、ビットストリームを復号化することができる。これにより、８ビット以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が８ビット未満の場合でも、復号化を完了することができる。【０２４０】
（実施の形態４）
まず、本実施の形態の可変長符号復号化装置の構成を説明する。【０２４１】
図１１は、本実施の形態の可変長符号復号化装置の構成を示すブロック図である。なお、図１と同様の要素には同一の符号を付しており、説明を省略する。【０２４２】
図１１に示す可変長符号復号化装置４０は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置４０は、ビットストリーム切出し部１００と、テーブル参照部１０１と、判定部１０２と、ビットストリーム終端検出部２０６と、データ付加部４０７とを備える。可変長符号復号化装置４０は、実施の形態１の可変長符号復号化装置１０に対して、判定部１０３と選択部１０４と判定方法制御部１０５とが削除され、さらに、新たにビットストリーム終端検出部２０６とデータ付加部４０７とを備える点が異なる。【０２４３】
ビットストリーム終端検出部２０６は、実施の形態２で示すビットストリーム終端検出部２０６と同じである。【０２４４】
データ付加部４０７は、ビットストリーム終端検出部２０６によりビットストリームの終端が検出された場合に、ビットストリームの終端にデータを付加する。具体的には、ビットストリーム終端検出部２０６により出力された終端検出信号が「１」の場合に、データ付加部４０７は、入力されたビットストリームの終端に７ビットの「０」を付加し出力する。また、ビットストリーム終端検出部２０６により出力された終端検出信号が「０」の場合に、データ付加部４０７は、入力されたビットストリームをそのまま出力する。また、ビットストリームが入力されない場合は、何も出力しない。【０２４５】
以上のように、本実施の形態の可変長符号復号化装置４０は、実施の形態１〜３とは異なり、１つの判定部（判定部１０２）しか備えていない。判定部１０２は、上述したように、ビットストリーム切出し部１００に蓄積されるビットストリームの符号長が最大符号長以上であるか否かを判定する。すなわち、ビットストリーム切出し部１００に蓄積されるビットストリームの符号長が最大符号長未満である場合であっても、ビットストリームの復号化を行うために、終端が検出された場合にはデータ付加部４０７がビットストリームの終端にデータを付加する。【０２４６】
これにより、ビットストリーム終端の符号語を蓄積する場合に、蓄積される未復号のビットストリームの長さを必ず最大符号長以上にすることができる。よって、最大符号長以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が最大符号長未満の場合でも、復号化を完了することができる。【０２４７】
次に、本実施の形態の可変長符号復号化装置４０の動作を説明する。【０２４８】
図１２は、可変長符号復号化装置４０による具体的な動作を示す図である。以下、可変長符号復号化装置４０により、ビットストリーム「１１１１１１１０１１１０１０」を復号化する動作を説明する。ここでは、一例として、ビットストリームは、４ビットずつビットストリーム終端検出部２０６及びデータ付加部４０７に入力されるとする。【０２４９】
＜第１サイクル＞
第１サイクルにおいて、可変長符号復号化装置４０に、ビットストリーム「１１１１１１１０１１１０１０」の第１ビット〜第４ビット「１１１１」が入力される。【０２５０】
ビットストリーム終端検出部２０６は、ビットストリームの終端を検出しないので、終端検出信号「０」を出力する。【０２５１】
データ付加部４０７は、ビットストリーム終端検出部２０６により出力された終端検出信号が「０」なので、入力されたビットストリーム「１１１１」をそのまま出力する。【０２５２】
ビットストリーム切出し部１００は、データ付加部４０７により出力されたビットストリーム「１１１１」を蓄積し、蓄積状態「４」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１１１１００００」を出力する。【０２５３】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１１００００」の第１ビット〜第５ビット「１１１１０」と、記憶部１１１により記憶された符号語「１１１１０」が一致するので、復号化データ「ｅ」及び符号長「５」を出力する。【０２５４】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「４」が「８」未満なので、判定信号「０」を出力する。【０２５５】
ビットストリーム切出し部１００は、判定部１０２により出力された判定信号が「０」なので、テーブル参照部１０１により出力された符号長「５」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。【０２５６】
＜第２サイクル＞
第２サイクルにおいて、可変長符号復号化装置４０に、ビットストリーム「１１１１１１１０１１１０１０」の第５ビット〜第８ビット「１１１０」が入力される。【０２５７】
ビットストリーム終端検出部２０６は、ビットストリームの終端を検出しないので、終端検出信号「０」を出力する。【０２５８】
データ付加部４０７は、ビットストリーム終端検出部２０６により出力された終端検出信号が「０」なので、入力されたビットストリーム「１１１０」をそのまま出力する。【０２５９】
ビットストリーム切出し部１００は、データ付加部４０７により出力されたビットストリーム「１１１０」を蓄積し、蓄積状態「８」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット以上なので、ビットストリーム切出し部１００は、当該ビットストリームの先頭ビットから８ビット分のビット列を切出し、ビット列「１１１１１１１０」を出力する。【０２６０】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１１１１１０」と、記憶部１１１により記憶された符号語「１１１１１１１０」が一致するので、復号化データ「ｈ」及び符号長「８」を出力する。【０２６１】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「８」が「８」以上なので、判定信号「１」を出力する。【０２６２】
ビットストリーム切出し部１００は、判定部１０２により出力された判定信号が「１」なので、テーブル参照部１０１により出力された符号長「８」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部１００は、「１１１１１１１０」の次のビットを新たな先頭ビットとして決定する。【０２６３】
＜第３サイクル＞
第３サイクルにおいて、可変長符号復号化装置４０に、ビットストリーム「１１１１１１１０１１１０１０」の第９ビット〜第１２ビット「１１１０」が入力される。【０２６４】
ビットストリーム終端検出部２０６は、ビットストリームの終端を検出しないので、終端検出信号「０」を出力する。【０２６５】
データ付加部４０７は、ビットストリーム終端検出部２０６により出力された終端検出信号が「０」なので、入力されたビットストリーム「１１１０」をそのまま出力する。【０２６６】
ビットストリーム切出し部１００は、データ付加部４０７により出力されたビットストリーム「１１１０」を蓄積し、蓄積状態「４」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１１１０００００」を出力する。【０２６７】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１０００００」の第１ビット〜第４ビット「１１１０」と、記憶部１１１により記憶された符号語「１１１０」が一致するので、復号化データ「ｄ」及び符号長「４」を出力する。【０２６８】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「４」が「８」未満なので、判定信号「０」を出力する。【０２６９】
ビットストリーム切出し部１００は、判定部１０２により出力された判定信号が「０」なので、テーブル参照部１０１により出力された符号長「４」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。【０２７０】
＜第４サイクル＞
第４サイクルにおいて、可変長符号復号化装置４０に、ビットストリーム「１１１１１１１０１１１０１０」の第１３ビット〜第１４ビット「１０」が入力される。【０２７１】
ビットストリーム終端検出部２０６は、ビットストリームの終端を検出するので、終端検出信号「１」を出力する。【０２７２】
データ付加部４０７は、ビットストリーム終端検出部２０６により出力された終端検出信号が「１」なので、入力されたビットストリーム「１０」の終端に７ビットの「０」を付加し、ビットストリーム「１００００００００」を出力する。【０２７３】
ビットストリーム切出し部１００は、データ付加部４０７により出力されたビットストリーム「１００００００００」を蓄積し、蓄積状態「１３」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット以上なので、ビットストリーム切出し部１００は、当該ビットストリームの先頭ビットから８ビット分のビット列を切出し、ビット列「１１１０１０００」を出力する。【０２７４】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１０１０００」の第１ビット〜第４ビット「１１１０」と、記憶部１１１により記憶された符号語「１１１０」が一致するので、復号化データ「ｄ」及び符号長「４」を出力する。【０２７５】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「１３」が「８」以上なので、判定信号「１」を出力する。【０２７６】
ビットストリーム切出し部１００は、判定部１０２により出力された判定信号が「１」なので、テーブル参照部１０１により出力された符号長「４」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部１００は、「１１１０」の次のビット「１」を新たな先頭ビットとして決定する。【０２７７】
＜第５サイクル＞
第５サイクルにおいて、可変長符号復号化装置４０に、ビットストリームは入力されない。【０２７８】
ビットストリーム終端検出部２０６は、第４サイクルでビットストリームの終端を検出したので、終端検出信号「１」を出力する。【０２７９】
データ付加部４０７は、ビットストリームが入力されないので、何も出力しない。【０２８０】
ビットストリーム切出し部１００は、データ付加部４０７によりビットストリームが出力されないので、ビットストリームを蓄積せず、蓄積状態「９」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット以上なので、ビットストリーム切出し部１００は、当該ビットストリームの先頭ビットから８ビット分のビット列を切出し、ビット列「１０００００００」を出力する。【０２８１】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１０００００００」の第１ビット〜第２ビット「１０」と、記憶部１１１により記憶された符号語「１０」が一致するので、復号化データ「ｂ」及び符号長「２」を出力する。【０２８２】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「９」が「８」以上なので、判定信号「１」を出力する。【０２８３】
ビットストリーム切出し部１００は、判定部１０２により出力された判定信号が「１」なので、テーブル参照部１０１により出力された符号長「２」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。【０２８４】
以上のように、本実施の形態の可変長符号復号化装置４０は、ビットストリーム終端の符号語をビットストリーム切出し部１００に蓄積する場合に、データ付加部４０７によりビットストリームの終端に７ビットの「０」を付加することで、８ビット以上の未復号のビットストリームを蓄積することができる。これにより、８ビット以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が８ビット未満の場合でも、復号化を完了することができる。【０２８５】
なお、上記説明において、データ付加部４０７は、ビットストリーム終端検出部２０６により出力された終端検出信号が「１」の場合に、入力されたビットストリームの終端に７ビットの「０」を付加しているが、「０」以外の任意のデータを付加してもよい。【０２８６】
また、ビットストリーム切出し部１００が出力するビット列の長さは、所定の固定長であってもよい。すなわち、ビットストリーム切出し部１００は、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの先頭ビットから連続する固定長のビット列を出力してもよい。このとき、判定部１０２は、少なくとも固定長の未復号のビットストリームが、ビットストリーム切出し部１００に蓄積されているか否かを判定する。また、データ付加部４０７は、少なくとも固定長より１ビット短い長さのデータをビットストリームの終端に付加する。【０２８７】
（実施の形態５）
まず、本実施の形態の可変長符号復号化装置の構成を説明する。【０２８８】
図１３は、本実施の形態の可変長符号復号化装置５０の構成を示すブロック図である。なお、図１１と同様の要素には同一の符号を付しており、説明を省略する。【０２８９】
図１３に示す可変長符号復号化装置５０は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置５０は、ビットストリーム終端検出部２０６と、データ付加部４０７と、ビットストリーム切出し部１００と、テーブル参照部１０１及び５０１と、判定部５０２と、選択部５０８及び５０９と、テーブル制御部５１０とを備える。可変長符号復号化装置５０は、実施の形態４の可変長符号復号化装置４０に対して、判定部１０２の代わりに判定部５０２を備え、さらに、新たにテーブル参照部５０１と、選択部５０８及び５０９と、テーブル制御部５１０とを備える点が異なる。【０２９０】
判定部５０２は、少なくともテーブル制御部５１０により出力された最大符号長分の未復号のビットストリームがビットストリーム切出し部１００に蓄積されているか否かを判定する。具体的には、ビットストリーム切出し部１００により出力された蓄積状態が、テーブル制御部５１０により出力された最大符号長以上の場合に、判定部５０２は、判定信号「１」を出力する。また、ビットストリーム切出し部１００により出力された蓄積状態が、テーブル制御部５１０により出力された最大符号長未満の場合に、判定部５０２は、判定信号「０」を出力する。【０２９１】
テーブル参照部５０１は、記憶部５１１と、参照部５１２とを備える。記憶部５１１は、記憶部１１１とは異なる種類の可変長符号テーブル５１３を記憶するメモリである。図１４は、記憶部５１１に記憶される可変長符号テーブル５１３の一例を示す図である。なお、記憶部５１１に記憶される可変長符号テーブル５１３は、最大符号長が４ビットの可変長符号テーブルである。【０２９２】
選択部５０８は、テーブル制御部５１０により出力された選択信号に応じて、テーブル参照部１０１により出力された復号化データと、テーブル参照部５０１により出力された復号化データとのいずれかを選択する。具体的には、テーブル制御部５１０により出力された選択信号が「０」の場合に、選択部５０８は、テーブル参照部１０１により出力された復号化データを選択する。また、テーブル制御部５１０により出力された選択信号が「１」の場合に、選択部５０８は、テーブル参照部５０１により出力された復号化データを選択する。【０２９３】
選択部５０９は、テーブル制御部５１０により出力された選択信号に応じて、テーブル参照部１０１により出力された符号長と、テーブル参照部５０１により出力された符号長とのいずれかを選択する。具体的には、テーブル制御部５１０により出力された選択信号が「０」の場合に、選択部５０９は、テーブル参照部１０１により出力された符号長を選択する。また、テーブル制御部５１０により出力された選択信号が「１」の場合に、選択部５０９は、テーブル参照部５０１により出力された符号長を選択する。【０２９４】
テーブル制御部５１０は、テーブル参照部１０１により出力された復号化データ及び符号長と、テーブル参照部５０１により出力された復号化データ及び符号長とのいずれかを選択するための選択信号を出力する。具体的には、選択信号「０」を出力し、かつ、判定部５０２により出力された判定信号が「１」の場合に、テーブル制御部５１０は、次のサイクルで選択信号「１」を出力する。また、選択信号「１」を出力し、かつ、判定部５０２により出力された判定信号が「１」の場合に、テーブル制御部５１０は、次のサイクルで選択信号「０」を出力する。また、判定部５０２により出力された判定信号が「０」の場合は、次のサイクルで選択信号を更新しない。なお、初期状態では、選択信号「０」を出力する。【０２９５】
また、テーブル制御部５１０は、出力する選択信号に応じて、記憶部１１１により記憶された可変長符号テーブル１１３に含まれる符号語の最大符号長と、記憶部５１１により記憶された可変長符号テーブル５１３に含まれる符号語の最大符号長とのいずれかを出力する。具体的には、選択信号「０」を出力する場合に、テーブル制御部５１０は、最大符号長「８」を出力する。また、選択信号「１」を出力する場合に、テーブル制御部５１０は、最大符号長「４」を出力する。なお、初期状態では、選択信号「０」を出力するので、最大符号長「８」を出力する。【０２９６】
ビットストリーム切出し部１００は、判定部５０２により出力された判定信号が「１」の場合に、選択部５０９により選択された符号長が有効であると判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、ビット列を切出し出力する。具体的には、ビットストリーム切出し部１００は、バッファ１２１に蓄積されている未復号のビットストリームの先頭ビットから当該符号長＋１番目のビットを新たな先頭ビットとして決定する。つまり、新たな先頭ビットより前のビットストリームは、復号済みのビットストリームであり、新たな先頭ビット以降のビットストリームが、新たな未復号のビットストリームである。【０２９７】
また、判定部５０２により出力された判定信号が「０」の場合に、ビットストリーム切出し部１００は、選択部５０９により選択された符号長が無効であると判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。【０２９８】
これにより、判定部５０２で用いられる閾値を適宜切替えることで、複数の記憶部のうち、記憶部に記憶された最大符号長の短い可変長符号テーブルに含まれる符号語を高速に復号化することができる。【０２９９】
次に、本実施の形態の可変長符号復号化装置５０の動作を説明する。【０３００】
図１５は、可変長符号復号化装置５０による具体的な動作を示す図である。以下、可変長符号復号化装置５０により、ビットストリーム「１１１１１１１００００１１１１１１１１０…」を復号化する動作を説明する。ここでは、一例として、ビットストリームは、４ビットずつビットストリーム終端検出部２０６及びデータ付加部４０７に入力されるとする。なお、図１５に示すように、テーブル参照部１０１及びテーブル参照部５０１の欄で示す下線付きの文字（復号化データ）及び数字（符号長）はそれぞれ、選択部５０８及び５０９で選択される文字（復号化データ）及び数字（符号長）である。【０３０１】
＜第１サイクル＞
第１サイクルにおいて、可変長符号復号化装置５０に、ビットストリーム「１１１１１１１００００１１１１１１１１０…」の第１ビット〜第４ビット「１１１１」が入力される。【０３０２】
ビットストリーム終端検出部２０６は、ビットストリームの終端を検出しないので、終端検出信号「０」を出力する。【０３０３】
データ付加部４０７は、ビットストリーム終端検出部２０６により出力された終端検出信号が「０」なので、入力されたビットストリーム「１１１１」をそのまま出力する。【０３０４】
ビットストリーム切出し部１００は、データ付加部４０７により出力されたビットストリーム「１１１１」を蓄積し、蓄積状態「４」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１１１１００００」を出力する。【０３０５】
判定部５０２は、ビットストリーム切出し部１００により出力された蓄積状態「４」がテーブル制御部５１０により出力された最大符号長「８」未満なので（初期状態）、判定信号「０」を出力する。【０３０６】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１１００００」の第１ビット〜第５ビット「１１１１０」と、記憶部１１１により記憶された符号語「１１１１０」が一致するので、復号化データ「ｅ」及び符号長「５」を出力する。【０３０７】
テーブル参照部５０１は、ビットストリーム切出し部１００により出力されたビット列「１１１１００００」の第１ビット「１」と、記憶部５１１により記憶された符号語「１」が一致するので、復号化データ「ｉ」及び符号長「１」を出力する。【０３０８】
選択部５０８及び５０９は、テーブル制御部５１０により出力された選択信号が「０」なので（初期状態）、テーブル参照部１０１により出力された復号化データ「ｅ」及び符号長「５」を選択する。【０３０９】
テーブル制御部５１０は、判定部５０２により出力された判定信号が「０」なので、次のサイクル（第２サイクル）で選択信号を更新せず、選択信号「０」及び最大符号長「８」を出力する。【０３１０】
ビットストリーム切出し部１００は、判定部５０２により出力された判定信号が「０」なので、選択部５０９により選択された符号長「５」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。【０３１１】
＜第２サイクル＞
第２サイクルにおいて、可変長符号復号化装置５０に、ビットストリーム「１１１１１１１００００１１１１１１１１０…」の第５ビット〜第８ビット「１１１０」が入力される。【０３１２】
ビットストリーム終端検出部２０６は、ビットストリームの終端を検出しないので、終端検出信号「０」を出力する。【０３１３】
データ付加部４０７は、ビットストリーム終端検出部２０６により出力された終端検出信号が「０」なので、入力されたビットストリーム「１１１０」をそのまま出力する。【０３１４】
ビットストリーム切出し部１００は、データ付加部４０７により出力されたビットストリーム「１１１０」を蓄積し、蓄積状態「８」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット以上なので、ビットストリーム切出し部１００は、当該ビットストリームの先頭ビットから８ビット分のビット列を切出し、ビット列「１１１１１１１０」を出力する。【０３１５】
判定部５０２は、ビットストリーム切出し部１００により出力された蓄積状態「８」がテーブル制御部５１０により出力された最大符号長「８」以上なので、判定信号「１」を出力する。【０３１６】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１１１１１０」と、記憶部１１１により記憶された符号語「１１１１１１１０」が一致するので、復号化データ「ｈ」及び符号長「８」を出力する。【０３１７】
テーブル参照部５０１は、ビットストリーム切出し部１００により出力されたビット列「１１１１１１１０」の第１ビット「１」と、記憶部５１１により記憶された符号語「１」が一致するので、復号化データ「ｉ」及び符号長「１」を出力する。【０３１８】
選択部５０８及び５０９は、テーブル制御部５１０により出力された選択信号が「０」なので、テーブル参照部１０１により出力された復号化データ「ｈ」及び符号長「８」を選択する。【０３１９】
テーブル制御部５１０は、選択信号「０」を出力し、かつ、判定部５０２により出力された判定信号が「１」なので、次のサイクル（第３サイクル）で選択信号「１」及び最大符号長「４」を出力する。【０３２０】
ビットストリーム切出し部１００は、判定部５０２により出力された判定信号が「１」なので、選択部５０９により選択された符号長「８」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部１００は、「１１１１１１１０」の次のビットを新たな先頭ビットとして決定する。【０３２１】
＜第３サイクル＞
第３サイクルにおいて、可変長符号復号化装置５０に、ビットストリーム「１１１１１１１００００１１１１１１１１０…」の第９ビット〜第１２ビット「０００１」が入力される。【０３２２】
ビットストリーム終端検出部２０６は、ビットストリームの終端を検出しないので、終端検出信号「０」を出力する。【０３２３】
データ付加部４０７は、ビットストリーム終端検出部２０６により出力された終端検出信号が「０」なので、入力されたビットストリーム「０００１」をそのまま出力する。【０３２４】
ビットストリーム切出し部１００は、データ付加部４０７により出力されたビットストリーム「０００１」を蓄積し、蓄積状態「４」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「０００１００００」を出力する。【０３２５】
判定部５０２は、ビットストリーム切出し部１００により出力された蓄積状態「４」がテーブル制御部５１０により出力された最大符号長「４」以上なので、判定信号「１」を出力する。【０３２６】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「０００１００００」の第１ビット「０」と、記憶部１１１により記憶された符号語「０」が一致するので、復号化データ「ａ」及び符号長「１」を出力する。【０３２７】
テーブル参照部５０１は、ビットストリーム切出し部１００により出力されたビット列「０００１００００」の第１ビット〜第４ビット「０００１」と、記憶部５１１により記憶された符号語「０００１」が一致するので、復号化データ「ｌ」及び符号長「４」を出力する。【０３２８】
選択部５０８及び５０９は、テーブル制御部５１０により出力された選択信号が「１」なので、テーブル参照部５０１により出力された復号化データ「ｌ」及び符号長「４」を選択する。【０３２９】
テーブル制御部５１０は、選択信号「１」を出力し、かつ、判定部５０２により出力された判定信号が「１」なので、次のサイクル（第４サイクル）で選択信号「０」及び最大符号長「８」を出力する。【０３３０】
ビットストリーム切出し部１００は、判定部５０２により出力された判定信号が「１」なので、選択部５０９により選択された符号長「４」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。【０３３１】
以上のように、本実施の形態の可変長符号復号化装置５０は、記憶部５１１に記憶された可変長符号テーブル５１３に含まれる符号語を復号化する場合に、少なくとも４ビットの未復号のビットストリームがビットストリーム切出し部１００に蓄積されていれば、８ビット以上の未復号のビットストリームが蓄積されていなくても、復号化を実行することができる。これにより、最大符号長が８ビット未満の可変長符号テーブル５１３に含まれる符号語を高速に復号化することができる。【０３３２】
なお、上記説明において、記憶部５１１は、最大符号長が４ビットの可変長符号テーブルを記憶しているが、４ビット以外の任意の最大符号長の可変長符号テーブルを記憶してもよい。【０３３３】
また、上記説明において、テーブル制御部５１０は、符号語を復号化する毎に、テーブル参照部１０１及び５０１を交互に選択しているが、規格等に応じて任意の順序で選択してもよい。【０３３４】
また、上記説明において、可変長符号復号化装置５０は、２種類のテーブル参照部１０１及び５０１を備えているが、３種類以上のテーブル参照部を備えてもよい。【０３３５】
また、上述した実施の形態１〜４の可変長符号復号化装置に対して本実施の形態を適用してもよい。すなわち、実施の形態１〜４の可変長符号復号化装置において、判定部１０２の構成を判定部５０２と同様の構成にし、テーブル参照部５０１と、選択部５０８及び５０９と、テーブル制御部５１０とを追加してもよい。【０３３６】
以上、本発明の可変長符号復号化装置及びその方法について、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。【０３３７】
例えば、本発明の可変長符号復号化方法に含まれるステップをコンピュータに実行させるプログラムとして実現してもよい。さらに、当該プログラムを記録したコンピュータ読み取り可能なＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）などの記録媒体として実現し、又は、当該プログラムを示す情報、データ又は信号として実現してもよい。さらに、それらプログラム、情報、データ及び信号は、インターネット等の通信ネットワークを介して配信してもよい。
【産業上の利用可能性】
【０３３８】
本発明は、可変長符号復号化装置に適用でき、特に、ＬＳＩ等の電子回路で実現される動画像又は音声の復号化装置として適用することができる。例えば、符号化された動画像又は音声を復号化して再生するパーソナルコンピュータ、デジタルテレビ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）プレーヤー、ＤＶＤレコーダー、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ）及び携帯電話機等に備えられる動画像又は音声の復号化装置として有用である。
【図１】
2009122675.tif 000003
【図２】
2009122675.tif 000004
【図３】
2009122675.tif 000005
【図４】
2009122675.tif 000006
【図５】
2009122675.tif 000007
【図６】
2009122675.tif 000008
【図７】
2009122675.tif 000009
【図８】
2009122675.tif 000010
【図９】
2009122675.tif 000011
【図１０】
2009122675.tif 000012
【図１１】
2009122675.tif 000013
【図１２】
2009122675.tif 000014
【図１３】
2009122675.tif 000015
【図１４】
2009122675.tif 000016
【図１５】
2009122675.tif 000017
【図１６】
2009122675.tif 000018
【手続補正書】
【提出日】平成22年5月27日(2010.5.27)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、可変長符号化されたデータである符号語を含むビットストリームを復号化する可変長符号復号化装置及びその方法に関する。
【背景技術】
【０００２】
近年、動画像や音声の圧縮符号化技術の進展は著しく、放送、通信及び蓄積等の分野で実用化されている。可変長符号化は、符号化する値の発生頻度に応じて符号長を変化させることで、符号化効率を向上させる圧縮符号化技術の一つである。可変長符号化されたデータ（以下、「符号語」と記す）の復号化では、ビットストリームに含まれる符号語の符号長がそれぞれ異なるため、任意の符号語の位置を特定することができない。したがって、ビットストリームの先頭から逐次に符号語を復号化する必要がある。また、ＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）等の規格では、所定の復号化単位が規定されており、復号化単位毎に復号化開始時刻（ＤＴＳ：Ｄｅｃｏｄｉｎｇ  Ｔｉｍｅ  Ｓｔａｍｐ）がヘッダに格納されている。
【０００３】
可変長符号化された符号語を復号化する可変長符号復号化装置として、例えば、特許文献１に記載の可変長符号復号化装置が知られている。
【０００４】
図１６は、特許文献１に記載の従来の可変長符号復号化装置の構成を示す図である。図１６に示す可変長符号復号化装置は、ビデオデコーダ６００と、メモリ７００とを備える。
【０００５】
ビデオデコーダ６００は、ＭＰＥＧ方式で圧縮符号化された画像のコードデータ（ビットストリーム）を復号化する。ビデオデコーダ６００は、入力インタフェース６１０と、メモリインタフェース６２０と、画像伸張部６３０と、出力インタフェース６４０と、コントローラ６５０とを備える。
【０００６】
画像伸張部６３０は、ＶＬＤ（Ｖａｒｉａｂｌｅ  Ｌｅｎｇｔｈ  Ｄｅｃｏｄｉｎｇ）部６３１と、ＩＱ（Ｉｎｖｅｒｓｅ  Ｑｕａｎｔｉｚａｔｉｏｎ）部６３２と、ＩＤＣＴ（Ｉｎｖｅｒｓｅ  Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）部６３３と、ＭＶＣ（Ｍｏｔｉｏｎ  Ｖｅｃｔｏｒ  Ｃａｌｃｕｌａｔｉｏｎ）部６３４と、ＭＣ（Ｍｏｔｉｏｎ  Ｃｏｍｐｅｎｓａｔｉｏｎ）部６３５と、バイト／ワード変換部６３６と、クロック制御部６３７と、パーサー部６３８とを備える。
【０００７】
メモリ７００は、コードバッファメモリ７１０と、フレームメモリ７２０とを備える。コードバッファメモリ７１０は、未復号のビットストリームを蓄積する。
【０００８】
バイト／ワード変換部６３６は、コードバッファメモリ７１０に蓄積されている未復号のビットストリームをバイト単位からワード単位へ変換し出力する。また、バイト／ワード変換部６３６は、所定量の未復号のビットストリームがコードバッファメモリ７１０に蓄積されるまで、クロック制御部６３７へアンダーフロー信号を出力する。
【０００９】
クロック制御部６３７は、バイト／ワード変換部６３６によりアンダーフロー信号が出力されている間、ＶＬＤ部６３１へクロック信号を供給しない。
【００１０】
ＶＬＤ部６３１は、クロック制御部６３７によりクロック信号が供給されている間、可変長符号テーブルを用いて、バイト／ワード変換部６３６により出力された未復号のビットストリームを復号化する。
【００１１】
以上の構成により、図１６に示す従来の可変長符号復号化装置は、所定の復号化単位を復号化する場合に、復号化開始時刻まで待つことなく、所定量の未復号のビットストリームが蓄積された時点で復号化を開始することができるので、ハード資源を効率的に利用することができる。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開平１１−１２２１１３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかしながら、上記従来の可変長符号復号化装置では、所定量の未復号のビットストリームが蓄積された時点で復号化を開始することができるが、ビットストリーム終端の符号語の符号長が所定量未満の場合に、復号化を完了することができないという問題点を有していた。
【００１４】
これにより、上記従来の可変長符号復号化装置では、ビットストリームの最後まで復号化を実行することができず、例えば、ビットストリームが動画像の場合は、最後の１枚が出力されないなどの問題が生じる。このため、特許文献１に示す技術は、例えば、先頭ピクチャに対してのみ適用され、後続のピクチャに対しては、通常のＤＴＳに基づいた復号化が実行される。すなわち、従来の可変長符号復号化装置を、ビットストリームの最初から最後まで適用することはできなかった。
【００１５】
そこで、本発明は上記従来の問題点を解決するもので、所定量の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が所定量未満の場合でも、復号化を完了することのできる可変長符号復号化装置を提供することを目的とする。これにより、ＤＴＳに先行してビットストリームの復号化を実行できるとともに、ビットストリームの最後まで復号化を実行することができる。
【課題を解決するための手段】
【００１６】
上記目的を達成するために、本発明の可変長符号復号化装置は、可変長符号化されたデータを含むビットストリームを復号化する可変長符号復号化装置であって、可変長符号化に用いられる複数の符号語と、前記複数の符号語のそれぞれに対応する復号化データ及び符号長とを記憶する第１記憶手段と、前記ビットストリームを蓄積するバッファを有し、前記バッファに蓄積されている未復号のビットストリームの先頭ビットから連続する第１の長さのビット列を出力し、前記バッファに蓄積されている未復号のビットストリームの長さが前記第１の長さ未満の場合は、前記ビット列の終端にデータを付加することで、前記第１の長さのビット列を出力するビット出力手段と、前記第１記憶手段を参照することで、前記ビット出力手段により出力されたビット列の先頭の符号語と一致する符号語に対応する復号化データ及び符号長を出力する第１参照手段と、少なくとも前記第１の長さの未復号のビットストリームが前記バッファに蓄積されているか否かを判定する第１判定手段と、前記第１の長さより短い少なくとも第２の長さの未復号のビットストリームが前記バッファに蓄積されているか否かを判定する第２判定手段と、前記第１判定手段と前記第２判定手段とのいずれか一方の判定結果を選択する選択手段とを備え、前記ビット出力手段は、前記選択手段により選択された判定結果が、少なくとも前記第１の長さ又は前記第２の長さの未復号のビットストリームが前記バッファに蓄積されていることを示す場合に、前記第１参照手段により出力された符号長に基づいて、新たな先頭ビットを決定し、決定された先頭ビットに従って新たな前記第１の長さのビット列を出力し、前記選択手段は、前記バッファに蓄積されている未復号のビットストリームの長さに応じて、前記第１判定手段及び前記第２判定手段の判定結果の選択を切り換える。
【００１７】
これにより、少なくとも第２の長さの未復号のビットストリームが蓄積されていれば、ビットストリームを復号化することができる。よって、第１の長さ以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が第１の長さ未満の場合でも、復号化を完了することができる。
【００１８】
また、前記選択手段は、前記第１判定手段の判定結果を選択した場合であり、かつ、選択した判定結果が少なくとも前記第１の長さの未復号のビットストリームが前記バッファに蓄積されていることを示さない場合に、前記第２判定手段の判定結果を選択してもよい。
【００１９】
また、前記選択手段は、さらに、前記第２判定手段の判定結果を選択した場合であり、かつ、選択した判定結果が少なくとも前記第２の長さの未復号のビットストリームが前記バッファに蓄積されていることを示す場合に、前記第１判定手段の判定結果を選択してもよい。
【００２０】
また、前記選択手段は、前記第１判定手段の判定結果と前記第２判定手段の判定結果とを交互に選択してもよい。
【００２１】
また、前記第２の長さは、前記第１参照手段により出力された符号長でもよい。
【００２２】
また、前記第１の長さは、前記第１記憶手段に記憶された複数の符号長の中で最大の長さでもよい。
【００２３】
また、前記第２の長さは、１ビットであり、前記可変長符号復号化装置は、さらに、前記ビットストリームの終端を検出する終端検出手段を備え、前記選択手段は、前記終端検出手段により前記終端が検出された場合に、前記第２判定手段の判定結果を選択してもよい。
【００２４】
これにより、ビットストリームの終端が検出された場合に、少なくとも１ビット分の未復号のビットストリームが蓄積されていれば、ビットストリームを復号化することができる。よって、第１の長さ以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が第１の長さ未満の場合でも、復号化を完了することができる。
【００２５】
また、前記選択手段は、前記ビット出力手段により出力された前記第１の長さのビット列に、前記ビットストリームの終端であることを示す符号語が含まれる場合に、前記第２判定手段の判定結果を選択してもよい。
【００２６】
これにより、ビット出力手段により出力されたビット列にビットストリームの終端であることを示す符号語が含まれ、かつ、少なくとも未復号のビットストリームの先頭ビットから当該符号語の終端までの長さ分の未復号のビットストリームが蓄積されていれば、ビットストリームを復号化することができる。よって、第１の長さ以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が第１の長さ未満の場合でも、復号化を完了することができる。
【００２７】
また、本発明の可変長符号復号化装置は、可変長符号化されたデータを含むビットストリームを復号化する可変長符号復号化装置であって、可変長符号化に用いられる複数の符号語と、前記複数の符号語のそれぞれに対応する復号化データ及び符号長とを記憶する第１記憶手段と、前記ビットストリームの終端を検出する終端検出手段と、前記終端検出手段により前記終端が検出された場合に、前記ビットストリームの終端にデータを付加するデータ付加手段と、前記ビットストリームを蓄積するバッファを有し、前記バッファに蓄積されている未復号のビットストリームの先頭ビットから連続する固定長のビット列を出力し、前記バッファに蓄積されている未復号のビットストリームの長さが前記固定長未満の場合は、前記ビット列の終端にデータを付加することで、前記固定長のビット列を出力するビット出力手段と、前記第１記憶手段を参照することで、前記ビット出力手段により出力されたビット列の先頭の符号語と一致する符号語に対応する復号化データ及び符号長を出力する第１参照手段と、少なくとも前記固定長の未復号のビットストリームが前記バッファに蓄積されているか否かを判定する第１判定手段とを備え、前記ビット出力手段は、前記第１判定手段の判定結果が、少なくとも前記固定長の未復号のビットストリームが前記バッファに蓄積されていることを示す場合に、前記第１参照手段により出力された符号長に基づいて、新たな先頭ビットを決定し、決定された先頭ビットに従って新たな前記固定長のビット列を出力し、前記データ付加手段は、少なくとも前記固定長より１ビット短い長さのデータを付加してもよい。
【００２８】
これにより、ビットストリームの終端に少なくとも第１の長さより１ビット短いデータを付加することで、ビットストリーム終端の符号語を蓄積する場合に、蓄積される未復号のビットストリームの長さを必ず第１の長さ以上にすることができる。よって、第１の長さ以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が第１の長さ未満の場合でも、復号化を完了することができる。
【００２９】
また、前記固定長は、前記第１記憶手段に記憶された複数の符号長の中で最大の長さでもよい。
【００３０】
また、前記終端検出手段は、前記ビットストリームの終端であることを示す符号語を検出することで、前記終端を検出してもよい。
【００３１】
また、前記終端検出手段は、前記ビットストリームに含まれるヘッダ情報を解析することで、前記終端を検出してもよい。
【００３２】
また、前記可変長符号復号化装置は、さらに、前記第１記憶手段に記憶された符号語とは異なり、可変長符号化に用いられる複数の符号語と、前記複数の符号語のそれぞれに対応する復号化データ及び符号長とを記憶する第２記憶手段と、前記第２記憶手段を参照することで、前記ビット出力手段により出力されたビット列の先頭の符号語と一致する符号語に対応する復号化データ及び符号長を出力する第２参照手段と、前記第１参照手段と前記第２参照手段とのいずれかを選択する第２選択手段とを備え、前記第１の長さは、前記第２選択手段により選択された参照手段が参照する記憶手段に記憶された複数の符号長の中で最大の長さでもよい。
【００３３】
これにより、複数の記憶手段に記憶された複数の最大符号長のうち、少なくともいずれか１つの最大符号長分の未復号のビットストリームが蓄積されていれば、当該記憶手段に記憶された可変長符号テーブルに含まれる符号語を復号化することができる。よって、記憶手段に記憶された最大符号長の短い可変長符号テーブルに含まれる符号語を高速に復号化することができる。
【００３４】
また、本発明は、装置として実現できるだけでなく、上記の可変長符号復号化装置を構成する各処理手段をステップとする可変長符号復号化方法として実現することもできる。さらに、上記の各装置を構成する構成要素の一部又は全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。
【発明の効果】
【００３５】
本発明は、所定量の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が所定量未満の場合でも、復号化を完了することのできる可変長符号復号化装置を提供することができる。
【図面の簡単な説明】
【００３６】
【図１】図１は、実施の形態１の可変長符号復号化装置の構成を示すブロック図である。
【図２】図２は、実施の形態１のビットストリーム切出し部の詳細を示すブロック図である。
【図３】図３は、実施の形態１の記憶部に記憶される可変長符号テーブルの一例を示す図である。
【図４】図４は、実施の形態１の可変長符号復号化装置の動作を示す図である。
【図５】図５は、実施の形態１の可変長符号復号化装置の動作を示す図である。
【図６】図６は、実施の形態１のビットストリーム切出し部が出力する蓄積状態の出力形式の一例を示す図である。
【図７】図７は、実施の形態２の可変長符号復号化装置の構成を示すブロック図である。
【図８】図８は、実施の形態２の可変長符号復号化装置の動作を示す図である。
【図９】図９は、実施の形態３の可変長符号復号化装置の構成を示すブロック図である。
【図１０】図１０は、実施の形態３の可変長符号復号化装置の動作を示す図である。
【図１１】図１１は、実施の形態４の可変長符号復号化装置の構成を示すブロック図である。
【図１２】図１２は、実施の形態４の可変長符号復号化装置の動作を示す図である。
【図１３】図１３は、実施の形態５の可変長符号復号化装置の構成を示すブロック図である。
【図１４】図１４は、実施の形態５の記憶部に記憶される可変長符号テーブルの一例を示す図である。
【図１５】図１５は、実施の形態５の可変長符号復号化装置の動作を示す図である。
【図１６】図１６は、従来の可変長符号復号化装置の構成を示すブロック図である。
【発明を実施するための形態】
【００３７】
以下、本発明の可変長符号復号化装置について実施の形態に基づいて図面を参照しながら説明する。
【００３８】
（実施の形態１）
まず、本実施の形態の可変長符号復号化装置の構成を説明する。
【００３９】
図１は、本実施の形態の可変長符号復号化装置の構成を示すブロック図である。
【００４０】
図１に示す可変長符号復号化装置１０は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置１０は、ビットストリーム切出し部１００と、テーブル参照部１０１と、判定部１０２及び１０３と、選択部１０４と、判定方法制御部１０５とを備える。なお、本実施の形態では、可変長符号化に用いられる符号語の最大符号長は８ビットであるとする。
【００４１】
ビットストリーム切出し部１００は、入力されたビットストリームを蓄積するバッファを有し、バッファに蓄積されている未復号のビットストリームの先頭ビットから連続する所定の第１の長さのビット列を出力する。ここでは、ビットストリーム切出し部１００は、未復号のビットストリームを蓄積し、当該ビットストリームの先頭ビットから、少なくとも可変長符号化に用いられる符号語の最大符号長分のビット列を切出し出力する。具体的には、ビットストリーム切出し部１００は、未復号のビットストリームの先頭ビットから８ビット分のビット列を切出し出力する。
【００４２】
また、ビットストリーム切出し部１００は、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが、第１の長さ未満の場合は、当該ビット列の終端にデータを付加することで、第１の長さのビット列を出力する。具体的には、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満の場合は、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し出力する。
【００４３】
また、ビットストリーム切出し部１００は、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さを蓄積状態として出力する。
【００４４】
さらに、ビットストリーム切出し部１００は、選択部１０４により出力された判定信号に基づいて、新たな先頭ビットを決定し、決定された先頭ビットから８ビット分のビット列を切出し出力する。なお、ビットストリーム切出し部１００の構成については、図２を参照しながら後述する。
【００４５】
テーブル参照部１０１は、記憶部１１１と、参照部１１２とを備える。
【００４６】
記憶部１１１は、可変長符号化に用いられる複数の符号語と、複数の復号化データ及び符号長とを対応付けたテーブルである可変長符号テーブル１１３を記憶するメモリなどである。
【００４７】
参照部１１２は、記憶部１１１を参照することで、ビットストリーム切出し部１００により出力されたビット列の先頭の符号語と一致する符号語に対応する復号化データ及び符号長を出力する。
【００４８】
具体的には、参照部１１２は、まず、可変長符号テーブル１１３を参照することで、出力されたビット列の先頭の符号語が、記憶部１１１に記憶された符号語と一致するか否かを判定する。そして、参照部１１２は、ビットストリーム切出し部１００により出力されたビット列の先頭の符号語が、記憶部１１１に記憶された符号語と一致する場合に、当該符号語に対応する復号化データ及び符号長を出力する。また、ビットストリーム切出し部１００により出力されたビット列の先頭の符号語が、記憶部１１１に記憶された符号語と一致しない場合に、参照部１１２は、任意の復号化データ及び符号長を出力する。
【００４９】
判定部１０２は、少なくとも第１の長さの未復号のビットストリームがビットストリーム切出し部１００に蓄積されているか否かを判定する。ここでは、判定部１０２は、少なくとも可変長符号化に用いられる符号語の最大符号長分の未復号のビットストリームがビットストリーム切出し部１００に蓄積されているか否かを判定する。
【００５０】
具体的には、ビットストリーム切出し部１００により出力された蓄積状態が「８」以上の場合に、判定部１０２は、判定信号「１」を出力する。また、ビットストリーム切出し部１００により出力された蓄積状態が「８」未満の場合に、判定部１０２は、判定信号「０」を出力する。なお、判定部１０２は、最大符号長以上の未復号のビットストリームがビットストリーム切出し部１００に蓄積されている場合に、テーブル参照部１０１により出力された符号長及び復号化データを有効と判定する（判定信号「１」を出力する）。なお、判定信号「０」などの記載は、判定信号として論理値「０」が出力されることを示し、以下、同様の表記を用いる。
【００５１】
判定部１０３は、少なくとも第１の長さより短い第２の長さの未復号のビットストリームがビットストリーム切出し部１００に蓄積されているか否かを判定する。ここでは、判定部１０３は、少なくともテーブル参照部１０１により出力された符号長分の未復号のビットストリームがビットストリーム切出し部１００に蓄積されているか否かを判定する。
【００５２】
具体的には、ビットストリーム切出し部１００により出力された蓄積状態が、テーブル参照部１０１により出力された符号長以上の場合に、判定部１０３は、判定信号「１」を出力する。また、ビットストリーム切出し部１００により出力された蓄積状態が、テーブル参照部１０１により出力された符号長未満の場合に、判定部１０３は、判定信号「０」を出力する。なお、判定部１０３は、テーブル参照部１０１により出力された符号長以上の未復号のビットストリームがビットストリーム切出し部１００に蓄積されている場合に、テーブル参照部１０１により出力された符号長及び復号化データを有効と判定する（判定信号「１」を出力する）。
【００５３】
選択部１０４は、判定部１０２と判定部１０３とのいずれか一方の判定結果を選択する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さに応じて、選択部１０４は、判定部１０２及び１０３の判定結果の選択を切り換える。ここでは、判定方法制御部１０５により出力された選択信号に応じて、選択部１０４は、判定部１０２により出力された判定信号と、判定部１０３により出力された判定信号とのいずれかを選択する。
【００５４】
具体的には、判定方法制御部１０５により出力された選択信号が「０」の場合に、選択部１０４は、判定部１０２により出力された判定信号を選択する。また、判定方法制御部１０５により出力された選択信号が「１」の場合に、選択部１０４は、判定部１０３により出力された判定信号を選択する。
【００５５】
判定方法制御部１０５は、判定部１０２により出力された判定信号と、判定部１０３により出力された判定信号とのいずれかを選択するための選択信号を出力する。具体的には、選択部１０４により選択された判定信号が「０」の場合に、判定方法制御部１０５は、次のサイクルで選択信号「１」を出力する。また、選択部１０４により選択された判定信号が「１」の場合に、判定方法制御部１０５は、次のサイクルで選択信号「０」を出力する。なお、初期状態では、選択信号「０」を出力する。
【００５６】
なお、以上のように、本実施の形態の可変長符号復号化装置１０では、選択部１０４を判定方法制御部１０５が制御することで、選択部１０４は、判定部１０２を選択した場合であり、かつ、選択した判定結果が少なくとも第１の長さ（最大符号長）の未復号のビットストリームがビットストリーム切出し部１００に蓄積されていることを示さない場合に、判定部１０３を選択するように切り換える。さらに、判定部１０３を選択した場合であり、かつ、選択した判定結果が少なくとも第２の長さ（テーブル参照部１０１により出力された符号長）の未復号のビットストリームがビットストリーム切出し部１００に蓄積されていることを示す場合に、判定部１０２を選択するように切り換える。
【００５７】
すなわち、本実施の形態の可変長符号復号化装置１０では、判定部１０２においてテーブル参照部１０１により出力された符号長及び復号化データを無効と判定された場合に、次のサイクルで判定部１０３を選択するように、判定方法制御部１０５が選択部１０４を制御する。さらに、判定部１０３においてテーブル参照部１０１により出力された符号長及び復号化データを有効と判定された場合に、次のサイクルで判定部１０２を選択するように、判定方法制御部１０５が選択部１０４を制御する。
【００５８】
これにより、判定部１０２及び１０３を適宜切り換えることで、最大符号長以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が最大符号長未満の場合でも、復号化を完了することができる。
【００５９】
図２は、ビットストリーム切出し部１００の詳細を示すブロック図である。同図に示すように、ビットストリーム切出し部１００は、バッファ１２１と、切出し部１２２と、蓄積状態出力部１２３とを備える。
【００６０】
バッファ１２１は、入力された未復号のビットストリームを蓄積するメモリなどの記憶部である。
【００６１】
切出し部１２２は、バッファ１２１に蓄積されている未復号のビットストリームの先頭ビットから８ビット分のビット列を切出し出力する。このとき、バッファ１２１に蓄積されている未復号のビットストリームの長さが８ビット未満の場合は、切出し部１２２は、当該ビット列の終端に不足分の「０」を付加し出力する。
【００６２】
さらに、切出し部１２２は、選択部１０４により選択された判定信号が「１」の場合に、参照部１１２により出力された符号長が有効であると判断し、当該符号長に基づいて未復号のビットストリームの新たな先頭ビットを決定し、ビット列を切出し出力する。具体的には、切出し部１２２は、バッファ１２１に蓄積されている未復号のビットストリームの先頭ビットから当該符号長＋１番目のビットを新たな先頭ビットとして決定する。つまり、新たな先頭ビットより前のビットストリームは、復号済みのビットストリームであり、新たな先頭ビット以降のビットストリームが、新たな未復号のビットストリームである。
【００６３】
また、切出し部１２２は、選択部１０４により選択された判定信号が「０」の場合に、参照部１１２により出力された符号長が無効であると判断し、ビットストリームの新たな先頭ビットを決定しない。
【００６４】
蓄積状態出力部１２３は、バッファ１２１に蓄積されている未復号のビットストリームの長さを蓄積状態として出力する。
【００６５】
図３は、記憶部１１１に記憶される可変長符号テーブル１１３の一例を示す図である。図３に示すように、記憶部１１１に記憶される可変長符号テーブル１１３は、符号語と、符号語の復号化データと、符号語の符号の長さである符号長とが対応付けられている。なお、記憶部１１１に記憶される可変長符号テーブル１１３は、最大符号長が８ビットの可変長符号テーブルである。
【００６６】
次に、本実施の形態の可変長符号復号化装置１０の動作を説明する。
【００６７】
図４は、可変長符号復号化装置１０による具体的な動作を示す図である。以下、可変長符号復号化装置１０により、ビットストリーム「１１１１１１１０１１１０１０」を復号化する動作を説明する。ここでは、一例として、ビットストリームは、４ビットずつビットストリーム切出し部１００に入力されるとする。なお、図４に示すように、判定部１０２及び１０３の欄で示す下線付きの数字（判定信号）は、選択部１０４で選択される数字（判定信号）である。
【００６８】
＜第１サイクル＞
第１サイクルにおいて、可変長符号復号化装置１０に、ビットストリーム「１１１１１１１０１１１０１０」の第１ビット〜第４ビット「１１１１」が入力される。
【００６９】
ビットストリーム切出し部１００は、入力されたビットストリーム「１１１１」を蓄積し、蓄積状態「４」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１１１１００００」を出力する。
【００７０】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１１００００」の第１ビット〜第５ビット「１１１１０」と、記憶部１１１により記憶された符号語「１１１１０」が一致するので、復号化データ「ｅ」及び符号長「５」を出力する。
【００７１】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「４」が「８」未満なので、判定信号「０」を出力する。
【００７２】
判定部１０３は、ビットストリーム切出し部１００により出力された蓄積状態「４」が、テーブル参照部１０１により出力された符号長「５」未満なので、判定信号「０」を出力する。
【００７３】
選択部１０４は、判定方法制御部１０５により出力された選択信号が「０」（初期状態）なので、判定部１０２により出力された判定信号「０」を選択する。
【００７４】
判定方法制御部１０５は、選択部１０４により選択された判定信号が「０」なので、次のサイクル（第２サイクル）で選択信号「１」を出力する。
【００７５】
ビットストリーム切出し部１００は、選択部１０４により選択された判定信号が「０」なので、テーブル参照部１０１により出力された符号長「５」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
【００７６】
＜第２サイクル＞
第２サイクルにおいて、可変長符号復号化装置１０に、ビットストリーム「１１１１１１１０１１１０１０」の第５ビット〜第８ビット「１１１０」が入力される。
【００７７】
ビットストリーム切出し部１００は、入力されたビットストリーム「１１１０」を蓄積し、蓄積状態「８」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット以上なので、ビットストリーム切出し部１００は、当該ビットストリームの先頭ビットから８ビット分のビット列を切出し、ビット列「１１１１１１１０」を出力する。
【００７８】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１１１１１０」と、記憶部１１１により記憶された符号語「１１１１１１１０」が一致するので、復号化データ「ｈ」及び符号長「８」を出力する。
【００７９】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「８」が「８」以上なので、判定信号「１」を出力する。
【００８０】
判定部１０３は、ビットストリーム切出し部１００により出力された蓄積状態「８」が、テーブル参照部１０１により出力された符号長「８」以上なので、判定信号「１」を出力する。
【００８１】
選択部１０４は、判定方法制御部１０５により出力された選択信号が「１」なので、判定部１０３により出力された判定信号「１」を選択する。
【００８２】
判定方法制御部１０５は、選択部１０４により選択された判定信号が「１」なので、次のサイクル（第３サイクル）で選択信号「０」を出力する。
【００８３】
ビットストリーム切出し部１００は、選択部１０４により選択された判定信号が「１」なので、テーブル参照部１０１により出力された符号長「８」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部１００は、「１１１１１１１０」の次のビットを新たな先頭ビットと決定する。
【００８４】
＜第３サイクル＞
第３サイクルにおいて、可変長符号復号化装置１０に、ビットストリーム「１１１１１１１０１１１０１０」の第９ビット〜第１２ビット「１１１０」が入力される。
【００８５】
ビットストリーム切出し部１００は、入力されたビットストリーム「１１１０」を蓄積し、蓄積状態「４」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１１１０００００」を出力する。
【００８６】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１０００００」の第１ビット〜第４ビット「１１１０」と、記憶部１１１により記憶された符号語「１１１０」が一致するので、復号化データ「ｄ」及び符号長「４」を出力する。
【００８７】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「４」が「８」未満なので、判定信号「０」を出力する。
【００８８】
判定部１０３は、ビットストリーム切出し部１００により出力された蓄積状態「４」が、テーブル参照部１０１により出力された符号長「４」以上なので、判定信号「１」を出力する。
【００８９】
選択部１０４は、判定方法制御部１０５により出力された選択信号が「０」なので、判定部１０２により出力された判定信号「０」を選択する。
【００９０】
判定方法制御部１０５は、選択部１０４により選択された判定信号が「０」なので、次のサイクル（第４サイクル）で選択信号「１」を出力する。
【００９１】
ビットストリーム切出し部１００は、選択部１０４により選択された判定信号が「０」なので、テーブル参照部１０１により出力された符号長「４」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
【００９２】
＜第４サイクル＞
第４サイクルにおいて、可変長符号復号化装置１０に、ビットストリーム「１１１１１１１０１１１０１０」の第１３ビット〜第１４ビット「１０」が入力される。
【００９３】
ビットストリーム切出し部１００は、入力されたビットストリーム「１０」を蓄積し、蓄積状態「６」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１１１０１０００」を出力する。
【００９４】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１０１０００」の第１ビット〜第４ビット「１１１０」と、記憶部１１１により記憶された符号語「１１１０」が一致するので、復号化データ「ｄ」及び符号長「４」を出力する。
【００９５】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「６」が「８」未満なので、判定信号「０」を出力する。
【００９６】
判定部１０３は、ビットストリーム切出し部１００により出力された蓄積状態「６」が、テーブル参照部１０１により出力された符号長「４」以上なので、判定信号「１」を出力する。
【００９７】
選択部１０４は、判定方法制御部１０５により出力された選択信号が「１」なので、判定部１０３により出力された判定信号「１」を選択する。
【００９８】
判定方法制御部１０５は、選択部１０４により選択された判定信号が「１」なので、次のサイクル（第５サイクル）で選択信号「０」を出力する。
【００９９】
ビットストリーム切出し部１００は、選択部１０４により選択された判定信号が「１」なので、テーブル参照部１０１により出力された符号長「４」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部１００は、「１１１０」の次のビット「１」を新たな先頭ビットとして決定する。
【０１００】
＜第５サイクル＞
第５サイクルにおいて、可変長符号復号化装置１０に、ビットストリームは入力されない。
【０１０１】
ビットストリーム切出し部１００は、ビットストリームが入力されないので、ビットストリームを蓄積せず、蓄積状態「２」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１０００００００」を出力する。
【０１０２】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１０００００００」の第１ビット〜第２ビット「１０」と、記憶部１１１により記憶された符号語「１０」が一致するので、復号化データ「ｂ」及び符号長「２」を出力する。
【０１０３】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「２」が「８」未満なので、判定信号「０」を出力する。
【０１０４】
判定部１０３は、ビットストリーム切出し部１００により出力された蓄積状態「２」が、テーブル参照部１０１により出力された符号長「２」以上なので、判定信号「１」を出力する。
【０１０５】
選択部１０４は、判定方法制御部１０５により出力された選択信号が「０」なので、判定部１０２により出力された判定信号「０」を選択する。
【０１０６】
判定方法制御部１０５は、選択部１０４により選択された判定信号が「０」なので、次のサイクル（第６サイクル）で選択信号「１」を出力する。
【０１０７】
ビットストリーム切出し部１００は、選択部１０４により選択された判定信号が「０」なので、テーブル参照部１０１により出力された符号長「２」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
【０１０８】
＜第６サイクル＞
第６サイクルにおいて、可変長符号復号化装置１０に、ビットストリームは入力されない。
【０１０９】
ビットストリーム切出し部１００は、ビットストリームが入力されないので、ビットストリームを蓄積せず、蓄積状態「２」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１０００００００」を出力する。
【０１１０】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１０００００００」の第１ビット〜第２ビット「１０」と、記憶部１１１により記憶された符号語「１０」が一致するので、復号化データ「ｂ」及び符号長「２」を出力する。
【０１１１】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「２」が「８」未満なので、判定信号「０」を出力する。
【０１１２】
判定部１０３は、ビットストリーム切出し部１００により出力された蓄積状態「２」が、テーブル参照部１０１により出力された符号長「２」以上なので、判定信号「１」を出力する。
【０１１３】
選択部１０４は、判定方法制御部１０５により出力された選択信号が「１」なので、判定部１０３により出力された判定信号「１」を選択する。
【０１１４】
判定方法制御部１０５は、選択部１０４により選択された判定信号が「１」なので、次のサイクル（第７サイクル）で選択信号「０」を出力する。
【０１１５】
ビットストリーム切出し部１００は、選択部１０４により選択された判定信号が「１」なので、テーブル参照部１０１により出力された符号長「２」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。
【０１１６】
以上のように、本実施の形態の可変長符号復号化装置１０は、少なくともテーブル参照部１０１により出力された符号長分の未復号のビットストリームがビットストリーム切出し部１００に蓄積されていれば、８ビット以上の未復号のビットストリームが蓄積されていなくても、ビットストリームを復号化することができる。これにより、８ビット以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が８ビット未満の場合でも、復号化を完了することができる。
【０１１７】
図５は、可変長符号復号化装置１０による具体的な動作を示す図である。以下、可変長符号復号化装置１０により、ビットストリーム「１１１０１１１０…」を復号化する動作を説明する。ここでは、一例として、ビットストリームは、２ビットずつビットストリーム切出し部１００に入力されるとする。なお、図５に示すように、判定部１０２及び１０３の欄で示す下線付きの数字（判定信号）は、選択部１０４で選択される数字（判定信号）である。
【０１１８】
＜第１サイクル＞
第１サイクルにおいて、可変長符号復号化装置１０に、ビットストリーム「１１１０１１１０…」の第１ビット〜第２ビット「１１」が入力される。
【０１１９】
ビットストリーム切出し部１００は、入力されたビットストリーム「１１」を蓄積し、蓄積状態「２」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１１００００００」を出力する。
【０１２０】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１００００００」の第１ビット〜第３ビット「１１０」と、記憶部１１１により記憶された符号語「１１０」が一致するので、復号化データ「ｃ」及び符号長「３」を出力する。
【０１２１】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「２」が「８」未満なので、判定信号「０」を出力する。
【０１２２】
判定部１０３は、ビットストリーム切出し部１００により出力された蓄積状態「２」が、テーブル参照部１０１により出力された符号長「３」未満なので、判定信号「０」を出力する。
【０１２３】
選択部１０４は、判定方法制御部１０５により出力された選択信号が「０」（初期状態）なので、判定部１０２により出力された判定信号「０」を選択する。
【０１２４】
判定方法制御部１０５は、選択部１０４により選択された判定信号が「０」なので、次のサイクル（第２サイクル）で選択信号「１」を出力する。
【０１２５】
ビットストリーム切出し部１００は、選択部１０４により選択された判定信号が「０」なので、テーブル参照部１０１により出力された符号長「３」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
【０１２６】
＜第２サイクル＞
第２サイクルにおいて、可変長符号復号化装置１０に、ビットストリーム「１１１０１１１０…」の第３ビット〜第４ビット「１０」が入力される。
【０１２７】
ビットストリーム切出し部１００は、入力されたビットストリーム「１０」を蓄積し、蓄積状態「４」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１１１０００００」を出力する。
【０１２８】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１０００００」の第１ビット〜第４ビット「１１１０」と、記憶部１１１により記憶された符号語「１１１０」が一致するので、復号化データ「ｄ」及び符号長「４」を出力する。
【０１２９】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「４」が「８」未満なので、判定信号「０」を出力する。
【０１３０】
判定部１０３は、ビットストリーム切出し部１００により出力された蓄積状態「４」が、テーブル参照部１０１により出力された符号長「４」以上なので、判定信号「１」を出力する。
【０１３１】
選択部１０４は、判定方法制御部１０５により出力された選択信号が「１」なので、判定部１０３により出力された判定信号「１」を選択する。
【０１３２】
判定方法制御部１０５は、選択部１０４により選択された判定信号が「１」なので、次のサイクル（第３サイクル）で選択信号「０」を出力する。
【０１３３】
ビットストリーム切出し部１００は、選択部１０４により選択された判定信号が「１」なので、テーブル参照部１０１により出力された符号長「４」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部１００は、「１１１０」の次のビットを新たな先頭ビットとして決定する。
【０１３４】
以上のように、本実施の形態の可変長符号復号化装置１０は、少なくともテーブル参照部１０１により出力された符号長分の未復号のビットストリームがビットストリーム切出し部１００に蓄積されていれば、８ビット以上の未復号のビットストリームが蓄積されていなくても、ビットストリームを復号化することができる。これにより、ビットストリーム終端の符号語の符号長が８ビット未満の場合でも、復号化を完了できることに加えて、さらに、符号長が８ビット未満の符号語を高速に復号化することができる。
【０１３５】
なお、上記説明において、ビットストリーム切出し部１００は、蓄積されている未復号のビットストリームの長さを蓄積状態として出力しているが、図６に示す出力形式１又は２で出力してもよい。具体的には、出力形式１では、蓄積されている未復号のビットストリームの長さが８ビット以上の場合に、蓄積状態「８」を出力する。また、出力形式２では、蓄積状態の長さは８ビットで、蓄積状態の各ビットはビットストリーム切出し部１００により出力されたビット列の各ビットに対応し、当該ビット列の当該ビットが蓄積されているか否かを示す。
【０１３６】
また、上記説明において、ビットストリーム切出し部１００は、蓄積されている未復号のビットストリームの長さが８ビット未満の場合に、当該ビット列の終端に不足分の「０」を付加しているが、「０」以外の任意のデータを付加してもよい。
【０１３７】
また、ビットストリーム切出し部１００が出力するビット列の長さは、所定の固定長であってもよい。すなわち、ビットストリーム切出し部１００は、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの先頭ビットから連続する固定長のビット列を出力してもよい。このとき、判定部１０２は、少なくとも固定長の未復号のビットストリームが、ビットストリーム切出し部１００に蓄積されているか否かを判定する。
【０１３８】
また、判定方法制御部１０５は、サイクル毎に判定部１０２及び１０３の選択を交互に切り換えるように選択部１０４を制御してもよい。
【０１３９】
また、上記説明において、記憶部１１１は、最大符号長が８ビットの可変長符号テーブルを記憶しているが、８ビット以外の任意の最大符号長の可変長符号テーブルを記憶してもよい。
【０１４０】
（実施の形態２）
まず、本実施の形態の可変長符号復号化装置の構成を説明する。
【０１４１】
図７は、本実施の形態の可変長符号復号化装置２０の構成を示すブロック図である。なお、図１と同様の要素には同一の符号を付しており、説明を省略する。
【０１４２】
図７に示す可変長符号復号化装置２０は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置２０は、ビットストリーム切出し部１００と、テーブル参照部１０１と、判定部１０２及び２０３と、選択部２０４と、ビットストリーム終端検出部２０６とを備える。可変長符号復号化装置２０は、実施の形態１の可変長符号復号化装置１０に対して、判定方法制御部１０５が削除され、判定部１０３の代わりに判定部２０３を備え、選択部１０４の代わりに選択部２０４を備え、さらに、新たにビットストリーム終端検出部２０６を備える点が異なる。
【０１４３】
判定部２０３は、少なくとも第１の長さより短い第２の長さの未復号のビットストリームがビットストリーム切出し部１００に蓄積されているか否かを判定する。ここでは、判定部２０３は、少なくとも１ビット分の未復号のビットストリームがビットストリーム切出し部１００に蓄積されているか否かを判定する。具体的には、ビットストリーム切出し部１００により出力された蓄積状態が「１」以上の場合に、判定部２０３は、判定信号「１」を出力する。また、ビットストリーム切出し部１００により出力された蓄積状態が「１」未満の場合に、判定部２０３は、判定信号「０」を出力する。
【０１４４】
選択部２０４は、ビットストリーム終端検出部２０６によりビットストリームの終端が検出された場合、判定部２０３の判定結果を選択する。ここでは、ビットストリーム終端検出部２０６により出力された終端検出信号に応じて、選択部２０４は、判定部１０２により出力された判定信号と、判定部２０３により出力された判定信号とのいずれかを選択する。具体的には、ビットストリーム終端検出部２０６により出力された終端検出信号が「０」の場合に、選択部２０４は、判定部１０２により出力された判定信号を選択する。また、ビットストリーム終端検出部２０６により出力された終端検出信号が「１」の場合に、選択部２０４は、判定部２０３により出力された判定信号を選択する。
【０１４５】
ビットストリーム終端検出部２０６は、入力されるビットストリームの終端を検出する。具体的には、ビットストリーム終端検出部２０６は、ビットストリームの終端であることを示す符号語を検出する、又は、ヘッダ情報を解析することで、ビットストリームの終端を検出する。なお、ビットストリーム終端検出部２０６は、ビットストリームの終端を検出するまで、終端検出信号「０」を出力し続ける。ビットストリームの終端を検出した後は、終端検出信号「１」を出力する。
【０１４６】
ビットストリーム切出し部１００は、選択部２０４により選択された判定信号が「１」の場合に、参照部１１２により出力された符号長が有効であると判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、ビット列を切出し出力する。具体的には、ビットストリーム切出し部１００は、バッファ１２１に蓄積されている未復号のビットストリームの先頭ビットから当該符号長＋１番目のビットを新たな先頭ビットとして決定する。つまり、新たな先頭ビットより前のビットストリームは、復号済みのビットストリームであり、新たな先頭ビット以降のビットストリームが、新たな未復号のビットストリームである。また、選択部２０４により選択された判定信号が「０」の場合に、ビットストリーム切出し部１００は、参照部１１２により出力された符号長が無効であると判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
【０１４７】
以上のように、判定部２０３は、少なくとも１ビット分の未復号のビットストリームがビットストリーム切出し部１００に蓄積されている場合に、テーブル参照部１０１により出力された符号長及び復号化データを有効と判定する（判定信号「１」を出力する）。本実施の形態の可変長符号復号化装置２０は、判定部２０３を備えることで、少なくとも１ビット分の未復号のビットストリームがビットストリーム切出し部１００に蓄積されている場合は、ビットストリームの復号化を実行することができる。
【０１４８】
ただし、判定部２０３による判定は、ビットストリームの終端が判明している場合でないと信用性に欠けるために、ビットストリームの終端が検出されるまでは、判定部１０２による判定が実行される。すなわち、選択部２０４は、ビットストリーム終端検出部２０６でビットストリームの終端が検出されるまでは、判定部１０２を選択する。ビットストリーム終端検出部２０６でビットストリームの終端が検出された後は、判定部２０３を選択する。
【０１４９】
これにより、ビットストリームの終端が検出された場合に、判定部１０２から判定部２０３に切り換えることで、最大符号長以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が最大符号長未満の場合でも、復号化を完了することができる。
【０１５０】
次に、本実施の形態の可変長符号復号化装置２０の動作を説明する。
【０１５１】
図８は、可変長符号復号化装置２０による具体的な動作を示す図である。以下、可変長符号復号化装置２０により、ビットストリーム「１１１１１１１０１１１０１０」を復号化する動作を説明する。ここでは、一例として、ビットストリームは、４ビットずつビットストリーム切出し部１００及びビットストリーム終端検出部２０６に入力されるとする。なお、図８に示すように、判定部１０２及び２０３の欄で示す下線付きの数字（判定信号）は、選択部２０４で選択される数字（判定信号）である。
【０１５２】
＜第１サイクル＞
第１サイクルにおいて、可変長符号復号化装置２０に、ビットストリーム「１１１１１１１０１１１０１０」の第１ビット〜第４ビット「１１１１」が入力される。
【０１５３】
ビットストリーム終端検出部２０６は、ビットストリームの終端を検出しないので、終端検出信号「０」を出力する。
【０１５４】
ビットストリーム切出し部１００は、入力されたビットストリーム「１１１１」を蓄積し、蓄積状態「４」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１１１１００００」を出力する。
【０１５５】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１１００００」の第１ビット〜第５ビット「１１１１０」と、記憶部１１１により記憶された符号語「１１１１０」が一致するので、復号化データ「ｅ」及び符号長「５」を出力する。
【０１５６】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「４」が「８」未満なので、判定信号「０」を出力する。
【０１５７】
判定部２０３は、ビットストリーム切出し部１００により出力された蓄積状態「４」が「１」以上なので、判定信号「１」を出力する。
【０１５８】
選択部２０４は、ビットストリーム終端検出部２０６により出力された終端検出信号が「０」なので、判定部１０２により出力された判定信号「０」を選択する。
【０１５９】
ビットストリーム切出し部１００は、選択部２０４により選択された判定信号が「０」なので、テーブル参照部１０１により出力された符号長「５」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
【０１６０】
＜第２サイクル＞
第２サイクルにおいて、可変長符号復号化装置２０に、ビットストリーム「１１１１１１１０１１１０１０」の第５ビット〜第８ビット「１１１０」が入力される。
【０１６１】
ビットストリーム終端検出部２０６は、ビットストリームの終端を検出しないので、終端検出信号「０」を出力する。
【０１６２】
ビットストリーム切出し部１００は、入力されたビットストリーム「１１１０」を蓄積し、蓄積状態「８」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット以上なので、ビットストリーム切出し部１００は、当該ビットストリームの先頭ビットから８ビット分のビット列を切出し、ビット列「１１１１１１１０」を出力する。
【０１６３】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１１１１１０」と、記憶部１１１により記憶された符号語「１１１１１１１０」が一致するので、復号化データ「ｈ」及び符号長「８」を出力する。
【０１６４】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「８」が「８」以上なので、判定信号「１」を出力する。
【０１６５】
判定部２０３は、ビットストリーム切出し部１００により出力された蓄積状態「８」が「１」以上なので、判定信号「１」を出力する。
【０１６６】
選択部２０４は、ビットストリーム終端検出部２０６により出力された終端検出信号が「０」なので、判定部１０２により出力された判定信号「１」を選択する。
【０１６７】
ビットストリーム切出し部１００は、選択部２０４により選択された判定信号が「１」なので、テーブル参照部１０１により出力された符号長「８」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部１００は、「１１１１１１１０」の次のビットを新たな先頭ビットとして決定する。
【０１６８】
＜第３サイクル＞
第３サイクルにおいて、可変長符号復号化装置２０に、ビットストリーム「１１１１１１１０１１１０１０」の第９ビット〜第１２ビット「１１１０」が入力される。
【０１６９】
ビットストリーム終端検出部２０６は、ビットストリームの終端を検出しないので、終端検出信号「０」を出力する。
【０１７０】
ビットストリーム切出し部１００は、入力されたビットストリーム「１１１０」を蓄積し、蓄積状態「４」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１１１０００００」を出力する。
【０１７１】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１０００００」の第１ビット〜第４ビット「１１１０」と、記憶部１１１により記憶された符号語「１１１０」が一致するので、復号化データ「ｄ」及び符号長「４」を出力する。
【０１７２】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「４」が「８」未満なので、判定信号「０」を出力する。
【０１７３】
判定部２０３は、ビットストリーム切出し部１００により出力された蓄積状態「４」が「１」以上なので、判定信号「１」を出力する。
【０１７４】
選択部２０４は、ビットストリーム終端検出部２０６により出力された終端検出信号が「０」なので、判定部１０２により出力された判定信号「０」を選択する。
【０１７５】
ビットストリーム切出し部１００は、選択部２０４により選択された判定信号が「０」なので、テーブル参照部１０１により出力された符号長「４」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
【０１７６】
＜第４サイクル＞
第４サイクルにおいて、可変長符号復号化装置２０に、ビットストリーム「１１１１１１１０１１１０１０」の第１３ビット〜第１４ビット「１０」が入力される。
【０１７７】
ビットストリーム終端検出部２０６は、ビットストリームの終端を検出するので、終端検出信号「１」を出力する。
【０１７８】
ビットストリーム切出し部１００は、入力されたビットストリーム「１０」を蓄積し、蓄積状態「６」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１１１０１０００」を出力する。
【０１７９】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１０１０００」の第１ビット〜第４ビット「１１１０」と、記憶部１１１により記憶された符号語「１１１０」が一致するので、復号化データ「ｄ」及び符号長「４」を出力する。
【０１８０】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「６」が「８」未満なので、判定信号「０」を出力する。
【０１８１】
判定部２０３は、ビットストリーム切出し部１００により出力された蓄積状態「６」が「１」以上なので、判定信号「１」を出力する。
【０１８２】
選択部２０４は、ビットストリーム終端検出部２０６により出力された終端検出信号が「１」なので、判定部２０３により出力された判定信号「１」を選択する。
【０１８３】
ビットストリーム切出し部１００は、選択部２０４により選択された判定信号が「１」なので、テーブル参照部１０１により出力された符号長「４」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部１００は、「１１１０」の次のビット「１」を新たな先頭ビットとして決定する。
【０１８４】
＜第５サイクル＞
第５サイクルにおいて、可変長符号復号化装置２０に、ビットストリームは入力されない。
【０１８５】
ビットストリーム終端検出部２０６は、第４サイクルでビットストリームの終端を検出したので、終端検出信号「１」を出力する。
【０１８６】
ビットストリーム切出し部１００は、ビットストリームが入力されないので、ビットストリームを蓄積せず、蓄積状態「２」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１０００００００」を出力する。
【０１８７】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１０００００００」の第１ビット〜第２ビット「１０」と、記憶部１１１により記憶された符号語「１０」が一致するので、復号化データ「ｂ」及び符号長「２」を出力する。
【０１８８】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「２」が「８」未満なので、判定信号「０」を出力する。
【０１８９】
判定部２０３は、ビットストリーム切出し部１００により出力された蓄積状態「２」が「１」以上なので、判定信号「１」を出力する。
【０１９０】
選択部２０４は、ビットストリーム終端検出部２０６により出力された終端検出信号が「１」なので、判定部２０３により出力された判定信号「１」を選択する。
【０１９１】
ビットストリーム切出し部１００は、選択部２０４により出力された判定信号が「１」なので、テーブル参照部１０１により出力された符号長「２」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。
【０１９２】
以上のように、本実施の形態の可変長符号復号化装置２０は、ビットストリーム終端検出部２０６によりビットストリームの終端が検出された場合に、少なくとも１ビット分の未復号のビットストリームがビットストリーム切出し部１００に蓄積されていれば、８ビット以上の未復号のビットストリームが蓄積されていなくても、ビットストリームを復号化することができる。これにより、８ビット以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が８ビット未満の場合でも、復号化を完了することができる。
【０１９３】
（実施の形態３）
まず、本実施の形態の可変長符号復号化装置の構成を説明する。
【０１９４】
図９は、本実施の形態の可変長符号復号化装置３０の構成を示すブロック図である。なお、図１と同様の要素には同一の符号を付しており、説明を省略する。
【０１９５】
図９に示す可変長符号復号化装置３０は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置３０は、ビットストリーム切出し部１００と、テーブル参照部１０１と、判定部１０２及び３０３と、選択部３０４とを備える。可変長符号復号化装置３０は、実施の形態１の可変長符号復号化装置１０に対して、判定方法制御部１０５が削除され、判定部１０３の代わりに判定部３０３を備え、選択部１０４の代わりに選択部３０４を備える点が異なる。なお、本実施の形態では、符号語「１０」が、ビットストリームの終端であることを示す符号語であるとする。
【０１９６】
判定部３０３は、ビットストリーム切出し部１００により出力されたビット列にビットストリームの終端であることを示す符号語が含まれ、かつ、少なくとも未復号のビットストリームの先頭ビットから当該符号語の終端までの長さ分の未復号のビットストリームがビットストリーム切出し部１００に蓄積されているか否かを判定する。
【０１９７】
具体的には、ビットストリーム切出し部１００により出力されたビット列を逐次復号化することで、符号語「１０」が復号化され、かつ、ビットストリーム切出し部１００により出力された蓄積状態が、当該ビット列の先頭ビットから復号化された符号語「１０」の終端までの長さ以上の場合に、判定部３０３は、判定信号「１」を出力する。また、ビットストリーム切出し部１００により出力されたビット列を逐次復号化することで、符号語「１０」が復号化され、かつ、ビットストリーム切出し部１００により出力された蓄積状態が、当該ビット列の先頭ビットから復号化された符号語「１０」の終端までの長さ未満の場合に、判定部３０３は、判定信号「０」を出力する。また、ビットストリーム切出し部１００により出力されたビット列を逐次復号化することで、符号語「１０」が復号化されない場合は、判定部３０３は、判定信号「０」を出力する。
【０１９８】
選択部３０４は、判定部３０３により出力された判定信号に応じて、判定部１０３により出力された判定信号と、判定部３０３により出力された判定信号とのいずれかを選択する。具体的には、判定部３０３により出力された判定信号が「０」の場合に、選択部３０４は、判定部１０３により出力された判定信号を選択する。また、判定部３０３により出力された判定信号が「１」の場合に、選択部３０４は、判定部３０３により出力された判定信号を選択する。
【０１９９】
ビットストリーム切出し部１００は、選択部３０４により選択された判定信号が「１」の場合に、参照部１１２により出力された符号長が有効であると判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、ビット列を切出し出力する。具体的には、ビットストリーム切出し部１００は、バッファ１２１に蓄積されている未復号のビットストリームの先頭ビットから当該符号長＋１番目のビットを新たな先頭ビットとして決定する。つまり、新たな先頭ビットより前のビットストリームは、復号済みのビットストリームであり、新たな先頭ビット以降のビットストリームが、新たな未復号のビットストリームである。また、選択部３０４により選択された判定信号が「０」の場合に、ビットストリーム切出し部１００は、参照部１１２により出力された符号長が無効であると判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
【０２００】
以上のように、判定部３０３は、ビットストリーム切出し部１００により出力されたビット列にビットストリームの終端であることを示す符号語が含まれ、かつ、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが、未復号のビットストリームの先頭ビットから当該符号語までの長さ以上である場合に、テーブル参照部１０１により出力された符号長及び復号化データを有効と判定する（判定信号「１」を出力する）。そして、選択部３０４は、判定部３０３において有効であると判定された場合は、判定部３０３の判定結果を選択する。
【０２０１】
これにより、実施の形態２と同様に、ビットストリームの終端が検出された場合に、判定部１０２から判定部３０３に切り換えることで、最大符号長以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が最大符号長未満の場合でも、復号化を完了することができる。
【０２０２】
次に、本実施の形態の可変長符号復号化装置３０の動作を説明する。
【０２０３】
図１０は、可変長符号復号化装置３０による具体的な動作を示す図である。以下、可変長符号復号化装置３０により、ビットストリーム「１１１１１１１０１１１０１０」を復号化する動作を説明する。ここでは、一例として、ビットストリームは、４ビットずつビットストリーム切出し部１００に入力されるとする。なお、図１０に示すように、判定部１０２及び３０３の欄で示す下線付きの数字（判定信号）は、選択部３０４で選択される数字（判定信号）である。
【０２０４】
＜第１サイクル＞
第１サイクルにおいて、可変長符号復号化装置３０に、ビットストリーム「１１１１１１１０１１１０１０」の第１ビット〜第４ビット「１１１１」が入力される。
【０２０５】
ビットストリーム切出し部１００は、入力されたビットストリーム「１１１１」を蓄積し、蓄積状態「４」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１１１１００００」を出力する。
【０２０６】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１１００００」の第１ビット〜第５ビット「１１１１０」と、記憶部１１１により記憶された符号語「１１１１０」が一致するので、復号化データ「ｅ」及び符号長「５」を出力する。
【０２０７】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「４」が「８」未満なので、判定信号「０」を出力する。
【０２０８】
判定部３０３は、ビットストリーム切出し部１００により出力されたビット列「１１１１００００」を逐次復号化することで、符号語「１０」が復号化されないので、判定信号「０」を出力する。
【０２０９】
選択部３０４は、判定部３０３により出力された判定信号が「０」なので、判定部１０２により出力された判定信号「０」を選択する。
【０２１０】
ビットストリーム切出し部１００は、選択部３０４により選択された判定信号が「０」なので、テーブル参照部１０１により出力された符号長「５」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
【０２１１】
＜第２サイクル＞
第２サイクルにおいて、可変長符号復号化装置３０に、ビットストリーム「１１１１１１１０１１１０１０」の第５ビット〜第８ビット「１１１０」が入力される。
【０２１２】
ビットストリーム切出し部１００は、入力されたビットストリーム「１１１０」を蓄積し、蓄積状態「８」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット以上なので、ビットストリーム切出し部１００は、当該ビットストリームの先頭ビットから８ビット分のビット列を切出し、ビット列「１１１１１１１０」を出力する。
【０２１３】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１１１１１０」と、記憶部１１１により記憶された符号語「１１１１１１１０」が一致するので、復号化データ「ｈ」及び符号長「８」を出力する。
【０２１４】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「８」が「８」以上なので、判定信号「１」を出力する。
【０２１５】
判定部３０３は、ビットストリーム切出し部１００により出力されたビット列「１１１１１１１０」を逐次復号化することで、符号語「１０」が復号化されないので、判定信号「０」を出力する。
【０２１６】
選択部３０４は、判定部３０３により出力された判定信号が「０」なので、判定部１０２により出力された判定信号「１」を選択する。
【０２１７】
ビットストリーム切出し部１００は、選択部３０４により選択された判定信号が「１」なので、テーブル参照部１０１により出力された符号長「８」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部１００は、「１１１１１１１０」の次のビットを新たな先頭ビットとして決定する。
【０２１８】
＜第３サイクル＞
第３サイクルにおいて、可変長符号復号化装置３０に、ビットストリーム「１１１１１１１０１１１０１０」の第９ビット〜第１２ビット「１１１０」が入力される。
【０２１９】
ビットストリーム切出し部１００は、入力されたビットストリーム「１１１０」を蓄積し、蓄積状態「４」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１１１０００００」を出力する。
【０２２０】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１０００００」の第１ビット〜第４ビット「１１１０」と、記憶部１１１により記憶された符号語「１１１０」が一致するので、復号化データ「ｄ」及び符号長「４」を出力する。
【０２２１】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「４」が「８」未満なので、判定信号「０」を出力する。
【０２２２】
判定部３０３は、ビットストリーム切出し部１００により出力されたビット列「１１１０００００」を逐次復号化することで、符号語「１０」が復号化されないので、判定信号「０」を出力する。
【０２２３】
選択部３０４は、判定部３０３により出力された判定信号が「０」なので、判定部１０２により出力された判定信号「０」を選択する。
【０２２４】
ビットストリーム切出し部１００は、選択部３０４により選択された判定信号が「０」なので、テーブル参照部１０１により出力された符号長「４」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
【０２２５】
＜第４サイクル＞
第４サイクルにおいて、可変長符号復号化装置３０に、ビットストリーム「１１１１１１１０１１１０１０」の第１３ビット〜第１４ビット「１０」が入力される。
【０２２６】
ビットストリーム切出し部１００は、入力されたビットストリーム「１０」を蓄積し、蓄積状態「６」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１１１０１０００」を出力する。
【０２２７】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１０１０００」の第１ビット〜第４ビット「１１１０」と、記憶部１１１により記憶された符号語「１１１０」が一致するので、復号化データ「ｄ」及び符号長「４」を出力する。
【０２２８】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「６」が「８」未満なので、判定信号「０」を出力する。
【０２２９】
判定部３０３は、ビットストリーム切出し部１００により出力されたビット列「１１１０１０００」を逐次復号化することで、符号語「１０」が復号化され、かつ、ビットストリーム切出し部１００により出力された蓄積状態「６」が、当該ビット列の先頭ビットから復号化された符号語「１０」の終端までの長さ「６」以上なので、判定信号「１」を出力する。
【０２３０】
選択部３０４は、判定部３０３により出力された判定信号が「１」なので、判定部３０３により出力された判定信号「１」を選択する。
【０２３１】
ビットストリーム切出し部１００は、選択部３０４により選択された判定信号が「１」なので、テーブル参照部１０１により出力された符号長「４」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部１００は、「１１１０」の次のビット「１」を新たな先頭ビットとして決定する。
【０２３２】
＜第５サイクル＞
第５サイクルにおいて、可変長符号復号化装置３０に、ビットストリームは入力されない。
【０２３３】
ビットストリーム切出し部１００は、ビットストリームが入力されないので、ビットストリームを蓄積せず、蓄積状態「２」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１０００００００」を出力する。
【０２３４】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１０００００００」の第１ビット〜第２ビット「１０」と、記憶部１１１により記憶された符号語「１０」が一致するので、復号化データ「ｂ」及び符号長「２」を出力する。
【０２３５】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「２」が「８」未満なので、判定信号「０」を出力する。
【０２３６】
判定部３０３は、ビットストリーム切出し部１００により出力されたビット列「１０００００００」を逐次復号化することで、符号語「１０」が復号化され、かつ、ビットストリーム切出し部１００により出力された蓄積状態「２」が、当該ビット列の先頭ビットから復号化された符号語「１０」の終端までの長さ「２」以上なので、判定信号「１」を出力する。
【０２３７】
選択部３０４は、判定部３０３により出力された判定信号が「１」なので、判定部３０３により出力された判定信号「１」を選択する。
【０２３８】
ビットストリーム切出し部１００は、選択部３０４により選択された判定信号が「１」なので、テーブル参照部１０１により出力された符号長「２」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。
【０２３９】
以上のように、本実施の形態の可変長符号復号化装置３０は、ビットストリーム切出し部１００により出力されたビット列にビットストリームの終端であることを示す符号語「１０」が含まれ、かつ、少なくとも未復号のビットストリームの先頭ビットから当該符号語の終端までの長さ分の未復号のビットストリームがビットストリーム切出し部１００に蓄積されていれば、８ビット以上の未復号のビットストリームが蓄積されていなくても、ビットストリームを復号化することができる。これにより、８ビット以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が８ビット未満の場合でも、復号化を完了することができる。
【０２４０】
（実施の形態４）
まず、本実施の形態の可変長符号復号化装置の構成を説明する。
【０２４１】
図１１は、本実施の形態の可変長符号復号化装置の構成を示すブロック図である。なお、図１と同様の要素には同一の符号を付しており、説明を省略する。
【０２４２】
図１１に示す可変長符号復号化装置４０は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置４０は、ビットストリーム切出し部１００と、テーブル参照部１０１と、判定部１０２と、ビットストリーム終端検出部２０６と、データ付加部４０７とを備える。可変長符号復号化装置４０は、実施の形態１の可変長符号復号化装置１０に対して、判定部１０３と選択部１０４と判定方法制御部１０５とが削除され、さらに、新たにビットストリーム終端検出部２０６とデータ付加部４０７とを備える点が異なる。
【０２４３】
ビットストリーム終端検出部２０６は、実施の形態２で示すビットストリーム終端検出部２０６と同じである。
【０２４４】
データ付加部４０７は、ビットストリーム終端検出部２０６によりビットストリームの終端が検出された場合に、ビットストリームの終端にデータを付加する。具体的には、ビットストリーム終端検出部２０６により出力された終端検出信号が「１」の場合に、データ付加部４０７は、入力されたビットストリームの終端に７ビットの「０」を付加し出力する。また、ビットストリーム終端検出部２０６により出力された終端検出信号が「０」の場合に、データ付加部４０７は、入力されたビットストリームをそのまま出力する。また、ビットストリームが入力されない場合は、何も出力しない。
【０２４５】
以上のように、本実施の形態の可変長符号復号化装置４０は、実施の形態１〜３とは異なり、１つの判定部（判定部１０２）しか備えていない。判定部１０２は、上述したように、ビットストリーム切出し部１００に蓄積されるビットストリームの符号長が最大符号長以上であるか否かを判定する。すなわち、ビットストリーム切出し部１００に蓄積されるビットストリームの符号長が最大符号長未満である場合であっても、ビットストリームの復号化を行うために、終端が検出された場合にはデータ付加部４０７がビットストリームの終端にデータを付加する。
【０２４６】
これにより、ビットストリーム終端の符号語を蓄積する場合に、蓄積される未復号のビットストリームの長さを必ず最大符号長以上にすることができる。よって、最大符号長以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が最大符号長未満の場合でも、復号化を完了することができる。
【０２４７】
次に、本実施の形態の可変長符号復号化装置４０の動作を説明する。
【０２４８】
図１２は、可変長符号復号化装置４０による具体的な動作を示す図である。以下、可変長符号復号化装置４０により、ビットストリーム「１１１１１１１０１１１０１０」を復号化する動作を説明する。ここでは、一例として、ビットストリームは、４ビットずつビットストリーム終端検出部２０６及びデータ付加部４０７に入力されるとする。
【０２４９】
＜第１サイクル＞
第１サイクルにおいて、可変長符号復号化装置４０に、ビットストリーム「１１１１１１１０１１１０１０」の第１ビット〜第４ビット「１１１１」が入力される。
【０２５０】
ビットストリーム終端検出部２０６は、ビットストリームの終端を検出しないので、終端検出信号「０」を出力する。
【０２５１】
データ付加部４０７は、ビットストリーム終端検出部２０６により出力された終端検出信号が「０」なので、入力されたビットストリーム「１１１１」をそのまま出力する。
【０２５２】
ビットストリーム切出し部１００は、データ付加部４０７により出力されたビットストリーム「１１１１」を蓄積し、蓄積状態「４」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１１１１００００」を出力する。
【０２５３】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１１００００」の第１ビット〜第５ビット「１１１１０」と、記憶部１１１により記憶された符号語「１１１１０」が一致するので、復号化データ「ｅ」及び符号長「５」を出力する。
【０２５４】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「４」が「８」未満なので、判定信号「０」を出力する。
【０２５５】
ビットストリーム切出し部１００は、判定部１０２により出力された判定信号が「０」なので、テーブル参照部１０１により出力された符号長「５」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
【０２５６】
＜第２サイクル＞
第２サイクルにおいて、可変長符号復号化装置４０に、ビットストリーム「１１１１１１１０１１１０１０」の第５ビット〜第８ビット「１１１０」が入力される。
【０２５７】
ビットストリーム終端検出部２０６は、ビットストリームの終端を検出しないので、終端検出信号「０」を出力する。
【０２５８】
データ付加部４０７は、ビットストリーム終端検出部２０６により出力された終端検出信号が「０」なので、入力されたビットストリーム「１１１０」をそのまま出力する。
【０２５９】
ビットストリーム切出し部１００は、データ付加部４０７により出力されたビットストリーム「１１１０」を蓄積し、蓄積状態「８」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット以上なので、ビットストリーム切出し部１００は、当該ビットストリームの先頭ビットから８ビット分のビット列を切出し、ビット列「１１１１１１１０」を出力する。
【０２６０】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１１１１１０」と、記憶部１１１により記憶された符号語「１１１１１１１０」が一致するので、復号化データ「ｈ」及び符号長「８」を出力する。
【０２６１】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「８」が「８」以上なので、判定信号「１」を出力する。
【０２６２】
ビットストリーム切出し部１００は、判定部１０２により出力された判定信号が「１」なので、テーブル参照部１０１により出力された符号長「８」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部１００は、「１１１１１１１０」の次のビットを新たな先頭ビットとして決定する。
【０２６３】
＜第３サイクル＞
第３サイクルにおいて、可変長符号復号化装置４０に、ビットストリーム「１１１１１１１０１１１０１０」の第９ビット〜第１２ビット「１１１０」が入力される。
【０２６４】
ビットストリーム終端検出部２０６は、ビットストリームの終端を検出しないので、終端検出信号「０」を出力する。
【０２６５】
データ付加部４０７は、ビットストリーム終端検出部２０６により出力された終端検出信号が「０」なので、入力されたビットストリーム「１１１０」をそのまま出力する。
【０２６６】
ビットストリーム切出し部１００は、データ付加部４０７により出力されたビットストリーム「１１１０」を蓄積し、蓄積状態「４」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１１１０００００」を出力する。
【０２６７】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１０００００」の第１ビット〜第４ビット「１１１０」と、記憶部１１１により記憶された符号語「１１１０」が一致するので、復号化データ「ｄ」及び符号長「４」を出力する。
【０２６８】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「４」が「８」未満なので、判定信号「０」を出力する。
【０２６９】
ビットストリーム切出し部１００は、判定部１０２により出力された判定信号が「０」なので、テーブル参照部１０１により出力された符号長「４」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
【０２７０】
＜第４サイクル＞
第４サイクルにおいて、可変長符号復号化装置４０に、ビットストリーム「１１１１１１１０１１１０１０」の第１３ビット〜第１４ビット「１０」が入力される。
【０２７１】
ビットストリーム終端検出部２０６は、ビットストリームの終端を検出するので、終端検出信号「１」を出力する。
【０２７２】
データ付加部４０７は、ビットストリーム終端検出部２０６により出力された終端検出信号が「１」なので、入力されたビットストリーム「１０」の終端に７ビットの「０」を付加し、ビットストリーム「１００００００００」を出力する。
【０２７３】
ビットストリーム切出し部１００は、データ付加部４０７により出力されたビットストリーム「１００００００００」を蓄積し、蓄積状態「１３」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット以上なので、ビットストリーム切出し部１００は、当該ビットストリームの先頭ビットから８ビット分のビット列を切出し、ビット列「１１１０１０００」を出力する。
【０２７４】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１０１０００」の第１ビット〜第４ビット「１１１０」と、記憶部１１１により記憶された符号語「１１１０」が一致するので、復号化データ「ｄ」及び符号長「４」を出力する。
【０２７５】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「１３」が「８」以上なので、判定信号「１」を出力する。
【０２７６】
ビットストリーム切出し部１００は、判定部１０２により出力された判定信号が「１」なので、テーブル参照部１０１により出力された符号長「４」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部１００は、「１１１０」の次のビット「１」を新たな先頭ビットとして決定する。
【０２７７】
＜第５サイクル＞
第５サイクルにおいて、可変長符号復号化装置４０に、ビットストリームは入力されない。
【０２７８】
ビットストリーム終端検出部２０６は、第４サイクルでビットストリームの終端を検出したので、終端検出信号「１」を出力する。
【０２７９】
データ付加部４０７は、ビットストリームが入力されないので、何も出力しない。
【０２８０】
ビットストリーム切出し部１００は、データ付加部４０７によりビットストリームが出力されないので、ビットストリームを蓄積せず、蓄積状態「９」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット以上なので、ビットストリーム切出し部１００は、当該ビットストリームの先頭ビットから８ビット分のビット列を切出し、ビット列「１０００００００」を出力する。
【０２８１】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１０００００００」の第１ビット〜第２ビット「１０」と、記憶部１１１により記憶された符号語「１０」が一致するので、復号化データ「ｂ」及び符号長「２」を出力する。
【０２８２】
判定部１０２は、ビットストリーム切出し部１００により出力された蓄積状態「９」が「８」以上なので、判定信号「１」を出力する。
【０２８３】
ビットストリーム切出し部１００は、判定部１０２により出力された判定信号が「１」なので、テーブル参照部１０１により出力された符号長「２」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。
【０２８４】
以上のように、本実施の形態の可変長符号復号化装置４０は、ビットストリーム終端の符号語をビットストリーム切出し部１００に蓄積する場合に、データ付加部４０７によりビットストリームの終端に７ビットの「０」を付加することで、８ビット以上の未復号のビットストリームを蓄積することができる。これにより、８ビット以上の未復号のビットストリームが蓄積された時点で復号化を開始することができ、かつ、ビットストリーム終端の符号語の符号長が８ビット未満の場合でも、復号化を完了することができる。
【０２８５】
なお、上記説明において、データ付加部４０７は、ビットストリーム終端検出部２０６により出力された終端検出信号が「１」の場合に、入力されたビットストリームの終端に７ビットの「０」を付加しているが、「０」以外の任意のデータを付加してもよい。
【０２８６】
また、ビットストリーム切出し部１００が出力するビット列の長さは、所定の固定長であってもよい。すなわち、ビットストリーム切出し部１００は、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの先頭ビットから連続する固定長のビット列を出力してもよい。このとき、判定部１０２は、少なくとも固定長の未復号のビットストリームが、ビットストリーム切出し部１００に蓄積されているか否かを判定する。また、データ付加部４０７は、少なくとも固定長より１ビット短い長さのデータをビットストリームの終端に付加する。
【０２８７】
（実施の形態５）
まず、本実施の形態の可変長符号復号化装置の構成を説明する。
【０２８８】
図１３は、本実施の形態の可変長符号復号化装置５０の構成を示すブロック図である。なお、図１１と同様の要素には同一の符号を付しており、説明を省略する。
【０２８９】
図１３に示す可変長符号復号化装置５０は、可変長符号化されたデータである符号語を含むビットストリームを復号化し、復号化されたデータを出力する。可変長符号復号化装置５０は、ビットストリーム終端検出部２０６と、データ付加部４０７と、ビットストリーム切出し部１００と、テーブル参照部１０１及び５０１と、判定部５０２と、選択部５０８及び５０９と、テーブル制御部５１０とを備える。可変長符号復号化装置５０は、実施の形態４の可変長符号復号化装置４０に対して、判定部１０２の代わりに判定部５０２を備え、さらに、新たにテーブル参照部５０１と、選択部５０８及び５０９と、テーブル制御部５１０とを備える点が異なる。
【０２９０】
判定部５０２は、少なくともテーブル制御部５１０により出力された最大符号長分の未復号のビットストリームがビットストリーム切出し部１００に蓄積されているか否かを判定する。具体的には、ビットストリーム切出し部１００により出力された蓄積状態が、テーブル制御部５１０により出力された最大符号長以上の場合に、判定部５０２は、判定信号「１」を出力する。また、ビットストリーム切出し部１００により出力された蓄積状態が、テーブル制御部５１０により出力された最大符号長未満の場合に、判定部５０２は、判定信号「０」を出力する。
【０２９１】
テーブル参照部５０１は、記憶部５１１と、参照部５１２とを備える。記憶部５１１は、記憶部１１１とは異なる種類の可変長符号テーブル５１３を記憶するメモリである。図１４は、記憶部５１１に記憶される可変長符号テーブル５１３の一例を示す図である。なお、記憶部５１１に記憶される可変長符号テーブル５１３は、最大符号長が４ビットの可変長符号テーブルである。
【０２９２】
選択部５０８は、テーブル制御部５１０により出力された選択信号に応じて、テーブル参照部１０１により出力された復号化データと、テーブル参照部５０１により出力された復号化データとのいずれかを選択する。具体的には、テーブル制御部５１０により出力された選択信号が「０」の場合に、選択部５０８は、テーブル参照部１０１により出力された復号化データを選択する。また、テーブル制御部５１０により出力された選択信号が「１」の場合に、選択部５０８は、テーブル参照部５０１により出力された復号化データを選択する。
【０２９３】
選択部５０９は、テーブル制御部５１０により出力された選択信号に応じて、テーブル参照部１０１により出力された符号長と、テーブル参照部５０１により出力された符号長とのいずれかを選択する。具体的には、テーブル制御部５１０により出力された選択信号が「０」の場合に、選択部５０９は、テーブル参照部１０１により出力された符号長を選択する。また、テーブル制御部５１０により出力された選択信号が「１」の場合に、選択部５０９は、テーブル参照部５０１により出力された符号長を選択する。
【０２９４】
テーブル制御部５１０は、テーブル参照部１０１により出力された復号化データ及び符号長と、テーブル参照部５０１により出力された復号化データ及び符号長とのいずれかを選択するための選択信号を出力する。具体的には、選択信号「０」を出力し、かつ、判定部５０２により出力された判定信号が「１」の場合に、テーブル制御部５１０は、次のサイクルで選択信号「１」を出力する。また、選択信号「１」を出力し、かつ、判定部５０２により出力された判定信号が「１」の場合に、テーブル制御部５１０は、次のサイクルで選択信号「０」を出力する。また、判定部５０２により出力された判定信号が「０」の場合は、次のサイクルで選択信号を更新しない。なお、初期状態では、選択信号「０」を出力する。
【０２９５】
また、テーブル制御部５１０は、出力する選択信号に応じて、記憶部１１１により記憶された可変長符号テーブル１１３に含まれる符号語の最大符号長と、記憶部５１１により記憶された可変長符号テーブル５１３に含まれる符号語の最大符号長とのいずれかを出力する。具体的には、選択信号「０」を出力する場合に、テーブル制御部５１０は、最大符号長「８」を出力する。また、選択信号「１」を出力する場合に、テーブル制御部５１０は、最大符号長「４」を出力する。なお、初期状態では、選択信号「０」を出力するので、最大符号長「８」を出力する。
【０２９６】
ビットストリーム切出し部１００は、判定部５０２により出力された判定信号が「１」の場合に、選択部５０９により選択された符号長が有効であると判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、ビット列を切出し出力する。具体的には、ビットストリーム切出し部１００は、バッファ１２１に蓄積されている未復号のビットストリームの先頭ビットから当該符号長＋１番目のビットを新たな先頭ビットとして決定する。つまり、新たな先頭ビットより前のビットストリームは、復号済みのビットストリームであり、新たな先頭ビット以降のビットストリームが、新たな未復号のビットストリームである。
【０２９７】
また、判定部５０２により出力された判定信号が「０」の場合に、ビットストリーム切出し部１００は、選択部５０９により選択された符号長が無効であると判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
【０２９８】
これにより、判定部５０２で用いられる閾値を適宜切替えることで、複数の記憶部のうち、記憶部に記憶された最大符号長の短い可変長符号テーブルに含まれる符号語を高速に復号化することができる。
【０２９９】
次に、本実施の形態の可変長符号復号化装置５０の動作を説明する。
【０３００】
図１５は、可変長符号復号化装置５０による具体的な動作を示す図である。以下、可変長符号復号化装置５０により、ビットストリーム「１１１１１１１００００１１１１１１１１０…」を復号化する動作を説明する。ここでは、一例として、ビットストリームは、４ビットずつビットストリーム終端検出部２０６及びデータ付加部４０７に入力されるとする。なお、図１５に示すように、テーブル参照部１０１及びテーブル参照部５０１の欄で示す下線付きの文字（復号化データ）及び数字（符号長）はそれぞれ、選択部５０８及び５０９で選択される文字（復号化データ）及び数字（符号長）である。
【０３０１】
＜第１サイクル＞
第１サイクルにおいて、可変長符号復号化装置５０に、ビットストリーム「１１１１１１１００００１１１１１１１１０…」の第１ビット〜第４ビット「１１１１」が入力される。
【０３０２】
ビットストリーム終端検出部２０６は、ビットストリームの終端を検出しないので、終端検出信号「０」を出力する。
【０３０３】
データ付加部４０７は、ビットストリーム終端検出部２０６により出力された終端検出信号が「０」なので、入力されたビットストリーム「１１１１」をそのまま出力する。
【０３０４】
ビットストリーム切出し部１００は、データ付加部４０７により出力されたビットストリーム「１１１１」を蓄積し、蓄積状態「４」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「１１１１００００」を出力する。
【０３０５】
判定部５０２は、ビットストリーム切出し部１００により出力された蓄積状態「４」がテーブル制御部５１０により出力された最大符号長「８」未満なので（初期状態）、判定信号「０」を出力する。
【０３０６】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１１００００」の第１ビット〜第５ビット「１１１１０」と、記憶部１１１により記憶された符号語「１１１１０」が一致するので、復号化データ「ｅ」及び符号長「５」を出力する。
【０３０７】
テーブル参照部５０１は、ビットストリーム切出し部１００により出力されたビット列「１１１１００００」の第１ビット「１」と、記憶部５１１により記憶された符号語「１」が一致するので、復号化データ「ｉ」及び符号長「１」を出力する。
【０３０８】
選択部５０８及び５０９は、テーブル制御部５１０により出力された選択信号が「０」なので（初期状態）、テーブル参照部１０１により出力された復号化データ「ｅ」及び符号長「５」を選択する。
【０３０９】
テーブル制御部５１０は、判定部５０２により出力された判定信号が「０」なので、次のサイクル（第２サイクル）で選択信号を更新せず、選択信号「０」及び最大符号長「８」を出力する。
【０３１０】
ビットストリーム切出し部１００は、判定部５０２により出力された判定信号が「０」なので、選択部５０９により選択された符号長「５」を無効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定しない。
【０３１１】
＜第２サイクル＞
第２サイクルにおいて、可変長符号復号化装置５０に、ビットストリーム「１１１１１１１００００１１１１１１１１０…」の第５ビット〜第８ビット「１１１０」が入力される。
【０３１２】
ビットストリーム終端検出部２０６は、ビットストリームの終端を検出しないので、終端検出信号「０」を出力する。
【０３１３】
データ付加部４０７は、ビットストリーム終端検出部２０６により出力された終端検出信号が「０」なので、入力されたビットストリーム「１１１０」をそのまま出力する。
【０３１４】
ビットストリーム切出し部１００は、データ付加部４０７により出力されたビットストリーム「１１１０」を蓄積し、蓄積状態「８」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット以上なので、ビットストリーム切出し部１００は、当該ビットストリームの先頭ビットから８ビット分のビット列を切出し、ビット列「１１１１１１１０」を出力する。
【０３１５】
判定部５０２は、ビットストリーム切出し部１００により出力された蓄積状態「８」がテーブル制御部５１０により出力された最大符号長「８」以上なので、判定信号「１」を出力する。
【０３１６】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「１１１１１１１０」と、記憶部１１１により記憶された符号語「１１１１１１１０」が一致するので、復号化データ「ｈ」及び符号長「８」を出力する。
【０３１７】
テーブル参照部５０１は、ビットストリーム切出し部１００により出力されたビット列「１１１１１１１０」の第１ビット「１」と、記憶部５１１により記憶された符号語「１」が一致するので、復号化データ「ｉ」及び符号長「１」を出力する。
【０３１８】
選択部５０８及び５０９は、テーブル制御部５１０により出力された選択信号が「０」なので、テーブル参照部１０１により出力された復号化データ「ｈ」及び符号長「８」を選択する。
【０３１９】
テーブル制御部５１０は、選択信号「０」を出力し、かつ、判定部５０２により出力された判定信号が「１」なので、次のサイクル（第３サイクル）で選択信号「１」及び最大符号長「４」を出力する。
【０３２０】
ビットストリーム切出し部１００は、判定部５０２により出力された判定信号が「１」なので、選択部５０９により選択された符号長「８」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。ここでは、ビットストリーム切出し部１００は、「１１１１１１１０」の次のビットを新たな先頭ビットとして決定する。
【０３２１】
＜第３サイクル＞
第３サイクルにおいて、可変長符号復号化装置５０に、ビットストリーム「１１１１１１１００００１１１１１１１１０…」の第９ビット〜第１２ビット「０００１」が入力される。
【０３２２】
ビットストリーム終端検出部２０６は、ビットストリームの終端を検出しないので、終端検出信号「０」を出力する。
【０３２３】
データ付加部４０７は、ビットストリーム終端検出部２０６により出力された終端検出信号が「０」なので、入力されたビットストリーム「０００１」をそのまま出力する。
【０３２４】
ビットストリーム切出し部１００は、データ付加部４０７により出力されたビットストリーム「０００１」を蓄積し、蓄積状態「４」を出力する。また、ビットストリーム切出し部１００に蓄積されている未復号のビットストリームの長さが８ビット未満なので、ビットストリーム切出し部１００は、当該ビット列の終端に不足分の「０」を付加し、ビット列「０００１００００」を出力する。
【０３２５】
判定部５０２は、ビットストリーム切出し部１００により出力された蓄積状態「４」がテーブル制御部５１０により出力された最大符号長「４」以上なので、判定信号「１」を出力する。
【０３２６】
テーブル参照部１０１は、ビットストリーム切出し部１００により出力されたビット列「０００１００００」の第１ビット「０」と、記憶部１１１により記憶された符号語「０」が一致するので、復号化データ「ａ」及び符号長「１」を出力する。
【０３２７】
テーブル参照部５０１は、ビットストリーム切出し部１００により出力されたビット列「０００１００００」の第１ビット〜第４ビット「０００１」と、記憶部５１１により記憶された符号語「０００１」が一致するので、復号化データ「ｌ」及び符号長「４」を出力する。
【０３２８】
選択部５０８及び５０９は、テーブル制御部５１０により出力された選択信号が「１」なので、テーブル参照部５０１により出力された復号化データ「ｌ」及び符号長「４」を選択する。
【０３２９】
テーブル制御部５１０は、選択信号「１」を出力し、かつ、判定部５０２により出力された判定信号が「１」なので、次のサイクル（第４サイクル）で選択信号「０」及び最大符号長「８」を出力する。
【０３３０】
ビットストリーム切出し部１００は、判定部５０２により出力された判定信号が「１」なので、選択部５０９により選択された符号長「４」を有効と判断し、当該符号長に基づき未復号のビットストリームの新たな先頭ビットを決定し、次のサイクルで復号化されるビット列を切出し出力する。
【０３３１】
以上のように、本実施の形態の可変長符号復号化装置５０は、記憶部５１１に記憶された可変長符号テーブル５１３に含まれる符号語を復号化する場合に、少なくとも４ビットの未復号のビットストリームがビットストリーム切出し部１００に蓄積されていれば、８ビット以上の未復号のビットストリームが蓄積されていなくても、復号化を実行することができる。これにより、最大符号長が８ビット未満の可変長符号テーブル５１３に含まれる符号語を高速に復号化することができる。
【０３３２】
なお、上記説明において、記憶部５１１は、最大符号長が４ビットの可変長符号テーブルを記憶しているが、４ビット以外の任意の最大符号長の可変長符号テーブルを記憶してもよい。
【０３３３】
また、上記説明において、テーブル制御部５１０は、符号語を復号化する毎に、テーブル参照部１０１及び５０１を交互に選択しているが、規格等に応じて任意の順序で選択してもよい。
【０３３４】
また、上記説明において、可変長符号復号化装置５０は、２種類のテーブル参照部１０１及び５０１を備えているが、３種類以上のテーブル参照部を備えてもよい。
【０３３５】
また、上述した実施の形態１〜４の可変長符号復号化装置に対して本実施の形態を適用してもよい。すなわち、実施の形態１〜４の可変長符号復号化装置において、判定部１０２の構成を判定部５０２と同様の構成にし、テーブル参照部５０１と、選択部５０８及び５０９と、テーブル制御部５１０とを追加してもよい。
【０３３６】
以上、本発明の可変長符号復号化装置及びその方法について、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。
【０３３７】
例えば、本発明の可変長符号復号化方法に含まれるステップをコンピュータに実行させるプログラムとして実現してもよい。さらに、当該プログラムを記録したコンピュータ読み取り可能なＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）などの記録媒体として実現し、又は、当該プログラムを示す情報、データ又は信号として実現してもよい。さらに、それらプログラム、情報、データ及び信号は、インターネット等の通信ネットワークを介して配信してもよい。
【産業上の利用可能性】
【０３３８】
本発明は、可変長符号復号化装置に適用でき、特に、ＬＳＩ等の電子回路で実現される動画像又は音声の復号化装置として適用することができる。例えば、符号化された動画像又は音声を復号化して再生するパーソナルコンピュータ、デジタルテレビ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）プレーヤー、ＤＶＤレコーダー、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ）及び携帯電話機等に備えられる動画像又は音声の復号化装置として有用である。
【符号の説明】
【０３３９】
１０、２０、３０、４０、５０  可変長符号復号化装置
１００  ビットストリーム切出し部
１０１、５０１  テーブル参照部
１０２、１０３、２０３、３０３、５０２  判定部
１０４、２０４、３０４、５０８、５０９  選択部
１０５  判定方法制御部
１１１、５１１  記憶部
１１２、５１２  参照部
１１３、５１３  可変長符号テーブル
１２１  バッファ
１２２  切出し部
１２３  蓄積状態出力部
２０６  ビットストリーム終端検出部
４０７  データ付加部
５１０  テーブル制御部
６００  ビデオデコーダ
６１０  入力インタフェース
６２０  メモリインタフェース
６３０  画像伸張部
６３１  ＶＬＤ部
６３２  ＩＱ部
６３３  ＩＤＣＴ部
６３４  ＭＶＣ部
６３５  ＭＣ部
６３６  バイト／ワード変換部
６３７  クロック制御部
６３８  パーサー部
６４０  出力インタフェース
６５０  コントローラ
７００  メモリ
７１０  コードバッファメモリ
７２０  フレームメモリ
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
可変長符号化されたデータを含むビットストリームを復号化する可変長符号復号化装置であって、
可変長符号化に用いられる複数の符号語と、前記複数の符号語のそれぞれに対応する復号化データ及び符号長とを記憶する第１記憶手段と、
前記ビットストリームを蓄積するバッファを有し、前記バッファに蓄積されている未復号のビットストリームの先頭ビットから連続する第１の長さのビット列を出力し、前記バッファに蓄積されている未復号のビットストリームの長さが前記第１の長さ未満の場合は、前記ビット列の終端にデータを付加することで、前記第１の長さのビット列を出力するビット出力手段と、
前記第１記憶手段を参照することで、前記ビット出力手段により出力されたビット列の先頭の符号語と一致する符号語に対応する復号化データ及び符号長を出力する第１参照手段と、
少なくとも前記第１の長さの未復号のビットストリームが前記バッファに蓄積されているか否かを判定する第１判定手段と、
前記第１の長さより短い少なくとも第２の長さの未復号のビットストリームが前記バッファに蓄積されているか否かを判定する第２判定手段と、
前記第１判定手段と前記第２判定手段とのいずれか一方の判定結果を選択する選択手段とを備え、
前記ビット出力手段は、前記選択手段により選択された判定結果が、少なくとも前記第１の長さ又は前記第２の長さの未復号のビットストリームが前記バッファに蓄積されていることを示す場合に、前記第１参照手段により出力された符号長に基づいて、新たな先頭ビットを決定し、決定された先頭ビットに従って新たな前記第１の長さのビット列を出力し、
前記選択手段は、前記バッファに蓄積されている未復号のビットストリームの長さに応じて、前記第１判定手段及び前記第２判定手段の判定結果の選択を切り換える
ことを特徴とする可変長符号復号化装置。
【請求項２】
前記選択手段は、前記第１判定手段の判定結果を選択した場合であり、かつ、選択した判定結果が少なくとも前記第１の長さの未復号のビットストリームが前記バッファに蓄積されていることを示さない場合に、前記第２判定手段の判定結果を選択する
ことを特徴とする請求項１記載の可変長符号復号化装置。
【請求項３】
前記選択手段は、さらに、前記第２判定手段の判定結果を選択した場合であり、かつ、選択した判定結果が少なくとも前記第２の長さの未復号のビットストリームが前記バッファに蓄積されていることを示す場合に、前記第１判定手段の判定結果を選択する
ことを特徴とする請求項２記載の可変長符号復号化装置。
【請求項４】
前記選択手段は、前記第１判定手段の判定結果と前記第２判定手段の判定結果とを交互に選択する
ことを特徴とする請求項１記載の可変長符号復号化装置。
【請求項５】
前記第２の長さは、前記第１参照手段により出力された符号長である
ことを特徴とする請求項１記載の可変長符号復号化装置。
【請求項６】
前記第１の長さは、前記第１記憶手段に記憶された複数の符号長の中で最大の長さである
ことを特徴とする請求項１記載の可変長符号復号化装置。
【請求項７】
前記第２の長さは、１ビットであり、
前記可変長符号復号化装置は、さらに、
前記ビットストリームの終端を検出する終端検出手段を備え、
前記選択手段は、前記終端検出手段により前記終端が検出された場合に、前記第２判定手段の判定結果を選択する
ことを特徴とする請求項１記載の可変長符号復号化装置。
【請求項８】
前記終端検出手段は、前記ビットストリームの終端であることを示す符号語を検出することで、前記終端を検出する
ことを特徴とする請求項７記載の可変長符号復号化装置。
【請求項９】
前記終端検出手段は、前記ビットストリームに含まれるヘッダ情報を解析することで、前記終端を検出する
ことを特徴とする請求項７記載の可変長符号復号化装置。
【請求項１０】
前記選択手段は、前記ビット出力手段により出力された前記第１の長さのビット列に、前記ビットストリームの終端であることを示す符号語が含まれる場合に、前記第２判定手段の判定結果を選択する
ことを特徴とする請求項１記載の可変長符号復号化装置。
【請求項１１】
前記可変長符号復号化装置は、さらに、
前記第１記憶手段に記憶された符号語とは異なり、可変長符号化に用いられる複数の符号語と、前記複数の符号語のそれぞれに対応する復号化データ及び符号長とを記憶する第２記憶手段と、
前記第２記憶手段を参照することで、前記ビット出力手段により出力されたビット列の先頭の符号語と一致する符号語に対応する復号化データ及び符号長を出力する第２参照手段と、
前記第１参照手段と前記第２参照手段とのいずれかを選択する第２選択手段とを備え、
前記第１の長さは、前記第２選択手段により選択された参照手段が参照する記憶手段に記憶された複数の符号長の中で最大の長さである
ことを特徴とする請求項１記載の可変長符号復号化装置。
【請求項１２】
可変長符号化されたデータを含むビットストリームを復号化する可変長符号復号化装置であって、
可変長符号化に用いられる複数の符号語と、前記複数の符号語のそれぞれに対応する復号化データ及び符号長とを記憶する第１記憶手段と、
前記ビットストリームの終端を検出する終端検出手段と、
前記終端検出手段により前記終端が検出された場合に、前記ビットストリームの終端にデータを付加するデータ付加手段と、
前記ビットストリームを蓄積するバッファを有し、前記バッファに蓄積されている未復号のビットストリームの先頭ビットから連続する固定長のビット列を出力し、前記バッファに蓄積されている未復号のビットストリームの長さが前記固定長未満の場合は、前記ビット列の終端にデータを付加することで、前記固定長のビット列を出力するビット出力手段と、
前記第１記憶手段を参照することで、前記ビット出力手段により出力されたビット列の先頭の符号語と一致する符号語に対応する復号化データ及び符号長を出力する第１参照手段と、
少なくとも前記固定長の未復号のビットストリームが前記バッファに蓄積されているか否かを判定する第１判定手段とを備え、
前記ビット出力手段は、前記第１判定手段の判定結果が、少なくとも前記固定長の未復号のビットストリームが前記バッファに蓄積されていることを示す場合に、前記第１参照手段により出力された符号長に基づいて、新たな先頭ビットを決定し、決定された先頭ビットに従って新たな前記固定長のビット列を出力し、
前記データ付加手段は、少なくとも前記固定長より１ビット短い長さのデータを付加する
ことを特徴とする可変長符号復号化装置。
【請求項１３】
前記固定長は、前記第１記憶手段に記憶された複数の符号長の中で最大の長さである
ことを特徴とする請求項１２記載の可変長符号復号化装置。
【請求項１４】
前記可変長符号復号化装置は、さらに、
前記第１記憶手段に記憶された符号語とは異なり、可変長符号化に用いられる複数の符号語と、前記複数の符号語のそれぞれに対応する復号化データ及び符号長とを記憶する第２記憶手段と、
前記第２記憶手段を参照することで、前記ビット出力手段により出力されたビット列の先頭の符号語と一致する符号語に対応する復号化データ及び符号長を出力する第２参照手段と、
前記第１参照手段と前記第２参照手段とのいずれかを選択する第２選択手段とを備え、
前記第１の長さは、前記第２選択手段により選択された参照手段が参照する記憶手段に記憶された複数の符号長の中で最大の長さである
ことを特徴とする請求項１２記載の可変長符号復号化装置。
【請求項１５】
可変長符号化されたデータを含むビットストリームを復号化する可変長符号復号化方法であって、
前記ビットストリームをバッファに蓄積し、前記バッファに蓄積されている未復号のビットストリームの先頭ビットから連続する第１の長さのビット列を出力し、前記バッファに蓄積されている未復号のビットストリームの長さが前記第１の長さ未満の場合は、前記ビット列の終端にデータを付加することで、前記第１の長さのビット列を出力するビット出力ステップと、
可変長符号化に用いられる複数の符号語と、前記複数の符号語のそれぞれに対応する復号化データ及び符号長とを記憶するメモリを参照することで、前記ビット出力ステップにおいて出力されたビット列の先頭の符号語と一致する符号語に対応する復号化データ及び符号長を出力する参照ステップと、
少なくとも前記第１の長さの未復号のビットストリームが前記バッファに蓄積されているか否かを判定する第１判定ステップと、
前記第１の長さより短い少なくとも第２の長さの未復号のビットストリームが前記バッファに蓄積されているか否かを判定する第２判定ステップと、
前記第１判定ステップと前記第２判定ステップとのいずれか一方の判定結果を選択する選択ステップとを含み、
前記ビット出力ステップでは、前記選択ステップにより選択された判定結果が、少なくとも前記第１の長さ又は前記第２の長さの未復号のビットストリームが前記バッファに蓄積されていることを示す場合に、前記参照ステップにおいて出力された符号長に基づいて、新たな先頭ビットを決定し、決定された先頭ビットに従って新たな前記第１の長さのビット列を出力し、
前記選択ステップでは、前記バッファに蓄積されている未復号のビットストリームの長さに応じて、前記第１判定ステップ及び前記第２判定ステップの判定結果の選択を切り換える
ことを特徴とする可変長符号復号化方法。
【請求項１６】
可変長符号化されたデータを含むビットストリームを復号化する集積回路であって、
可変長符号化に用いられる複数の符号語と、前記複数の符号語のそれぞれに対応する復号化データ及び符号長とを記憶する記憶手段と、
前記ビットストリームを蓄積するバッファを有し、前記バッファに蓄積されている未復号のビットストリームの先頭ビットから連続する第１の長さのビット列を出力し、前記バッファに蓄積されている未復号のビットストリームの長さが前記第１の長さ未満の場合は、前記ビット列の終端にデータを付加することで、前記第１の長さのビット列を出力するビット出力手段と、
前記記憶手段を参照することで、前記ビット出力手段により出力されたビット列の先頭の符号語と一致する符号語に対応する復号化データ及び符号長を出力する参照手段と、
少なくとも前記第１の長さの未復号のビットストリームが前記バッファに蓄積されているか否かを判定する第１判定手段と、
前記第１の長さより短い少なくとも第２の長さの未復号のビットストリームが前記バッファに蓄積されているか否かを判定する第２判定手段と、
前記第１判定手段と前記第２判定手段とのいずれか一方の判定結果を選択する選択手段とを備え、
前記ビット出力手段は、前記選択手段により選択された判定結果が、少なくとも前記第１の長さ又は前記第２の長さの未復号のビットストリームが前記バッファに蓄積されていることを示す場合に、前記参照手段により出力された符号長に基づいて、新たな先頭ビットを決定し、決定された先頭ビットに従って新たな前記第１の長さのビット列を出力し、
前記選択手段は、前記バッファに蓄積されている未復号のビットストリームの長さに応じて、前記第１判定手段及び前記第２判定手段の判定結果の選択を切り換える
ことを特徴とする集積回路。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2009122675.tif 000019
【図２】
2009122675.tif 000020
【図３】
2009122675.tif 000021
【図４】
2009122675.tif 000022
【図５】
2009122675.tif 000023
【図６】
2009122675.tif 000024
【図７】
2009122675.tif 000025
【図８】
2009122675.tif 000026
【図９】
2009122675.tif 000027
【図１０】
2009122675.tif 000028
【図１１】
2009122675.tif 000029
【図１２】
2009122675.tif 000030
【図１３】
2009122675.tif 000031
【図１４】
2009122675.tif 000032
【図１５】
2009122675.tif 000033
【図１６】
2009122675.tif 000034
【国際調査報告】
2009122675.tif 000035
2009122675.tif 000036
2009122675.tif 000037
2009122675.tif 000038