(57)【特許請求の範囲】
【請求項１】
確率状態を示す第１のコンテキスト変数および優勢確率シンボルを示す第２のコンテキスト変数に基づいて、復号の基準となる第１の状態変数および復号対象となる第２の状態変数を更新しながら符号化データを復号する算術復号装置であって、
前記第１のコンテキスト変数に特定されるレンジにおける優勢確率シンボルのレンジおよび劣勢確率シンボルのレンジの遷移ならびに前記優勢確率シンボルのレンジが特定の値より小さくなるシンボルの番号を保持し、前記第１の状態変数および前記第１のコンテキスト変数に基づいて参照される復号情報テーブルと、
前記優勢確率シンボルのレンジおよび前記劣勢確率シンボルのレンジの遷移ならびに前記優勢確率シンボルのレンジが特定の値より小さくなるシンボルの前記番号および前記第２の状態変数に基づいて前記符号化データから一括して復号されるシンボル数を決定するシンボル数決定手段と、
前記第２のコンテキスト変数に基づいて前記一括して復号されるシンボル数に対応するシンボルを復号して出力する出力手段と
を具備することを特徴とする算術復号装置。
【請求項２】
前記優勢確率シンボルの連続する一群のシンボルについて前記優勢確率シンボルのレンジおよび前記劣勢確率シンボルのレンジを逐次生成する復号情報生成手段をさらに具備し、
前記復号情報テーブルは、前記一群のシンボルに続くシンボルの復号に必要な情報のみを保持することを特徴とする請求項１記載の算術復号装置。
【請求項３】
前記第１のコンテキスト変数をコンテキストインデックス毎に保持するコンテキスト変数テーブルと、
前記一群のシンボルのコンテキストインデックスが全て異なる場合にはそれぞれのコンテキストインデックスによって独立して前記コンテキスト変数テーブルから前記一群のシンボルに対応する第１のコンテキスト変数を取得し、前記一群のシンボルのコンテキストインデックスが全て等しい場合には前記コンテキスト変数テーブルから参照された先頭の第１のコンテキスト変数に基づいてそれ以降の第１のコンテキスト変数を遷移させることにより前記一群のシンボルに対応する第１のコンテキスト変数を取得する復号制御手段と
をさらに具備することを特徴とする請求項２記載の算術復号装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、算術復号方式に関し、特にコンテキスト適応型二値算術符号化方式（ＣＡＢＡＣ：Context-Adaptive Binary Arithmetic Coding）により符号化されたデータを復号する算術復号装置に関する。
【背景技術】
【０００２】
コンテキスト適応型二値算術符号化方式（ＣＡＢＡＣ）は、ＩＴＵ−Ｔ（International Telecommunication Union - Telecommunication standardization sector：国際電気通信連合の電気通信標準化部門）において標準化されたＨ．２６４における、エントロピー符号化方式の一つである（非特許文献１参照。）。このＣＡＢＡＣでは、符号化前に各種多値データを「０」か「１」のシンボルで表現することにより二値化する。それを二値算術符号化処理によって符号化する。復号の際にはその逆の処理を行うことになる。
【０００３】
二値算術符号化処理は、「０」か「１」のシンボルで表現されたデータをさらに出現確率が高いと推測される方のシンボルを優勢確率シンボル（ＭＰＳ：Most Probable Symbol）とし、ＭＰＳでない方を劣勢確率シンボル（ＬＰＳ：Least Probable Symbol）として、｛０，１｝から｛ＬＰＳ，ＭＰＳ｝に置き換える処理である。そして、ＬＰＳまたはＭＰＳの２シンボルによって表現された二値データを算術符号で符号化する。ＭＰＳが「０」であるか「１」であるかは、処理済みのデータに基づいて１シンボルごとに予測されて決定される。すなわち、符号化（エンコード）の際は符号化済みのデータのみから次に符号化するシンボルのＭＰＳ値が決まり、復号（デコード）の際には復号済みのデータのみから次に復号するシンボルのＭＰＳ値が決まる。
【０００４】
また、二値算術符号化処理では、予め用意された複数の確率モデル（コンテキスト）の中から現在の状態に適合するものに順次切り替えながら処理が行われる。ＣＡＢＡＣでは、それぞれのコンテキストに対応したコンテキスト変数をコンテキスト変数テーブルに格納しておいて、コンテキストインデックス（ｃｔｘＩｄｘ）によってコンテキスト変数ｃｏｎｔｅｘｔ［ｃｔｘＩｄｘ］を特定する。各コンテキスト変数は、出現確率を示す確率状態インデックスｐＳｔａｔｅＩｄｘと、出現確率の高い優勢確率シンボル（ＭＰＳ）を示すｖａｌＭＰＳとから構成される。ｐＳｔａｔｅＩｄｘは、そのコンテキストにおけるＬＰＳの出現確率の推定値を、予め定義された０から６３までの確率状態によって表す。ｖａｌＭＰＳは、ＭＰＳに該当するシンボルが「０」または「１」の何れであるかを表す。なお、各コンテキスト変数において、確率状態インデックスはｃｏｎｔｅｘｔ［ｃｔｘＩｄｘ］．ｐＳｔａｔｅＩｄｘと表記し、ＭＰＳはｃｏｎｔｅｘｔ［ｃｔｘＩｄｘ］．ｖａｌＭＰＳと表記する。
【０００５】
図２６は、ＣＡＢＡＣにおける復号処理の概念を示す図である。ＣＡＢＡＣの復号器は、内部状態変数としてｃｏｄＩＲａｎｇｅとｃｏｄＩＯｆｆｓｅｔとを保持している。ｃｏｄＩＲａｎｇｅには、次のシンボル出現確率が１００％に相当する領域として割り当てる領域幅を表す９ビットの値が保持される。したがって、ｃｏｄＩＲａｎｇｅによって指示可能な範囲は、０から５１１となる。ｃｏｄＩＯｆｆｓｅｔには、復号対象となる符号を示す９ビットの値が保持される。初期化時にｃｏｄＩＯｆｆｓｅｔには符号列の先頭９ビットが読み込まれ、ｃｏｄＩＲａｎｇｅには０ｘ１ＦＥ（「０ｘ」に続く数字は十六進数を表す。以下同様。）が設定される。
【０００６】
ｃｏｄＩＲａｎｇｅのうち、ＭＰＳの出現予測確率に割り当てられる領域幅をｃｏｄＩＲａｎｇｅＭＰＳとし、ＬＰＳの出現予測確率に割り当てられる領域幅をｃｏｄＩＲａｎｇｅＬＰＳとする。これにより、ｃｏｄＩＯｆｆｓｅｔの値がｃｏｄＩＲａｎｇｅＭＰＳ以上であればＬＰＳが、そうでなければＭＰＳが、それぞれ１シンボル復号される。ｃｏｄＩＲａｎｇｅＬＰＳは、ｃｏｄＩＲａｎｇｅの７ビット目から６ビット目までの値ｃｏｄＩＲａｎｇｅ［７：６］をｑＣｏｄＩＲａｎｇｅＩｄｘとして、図２７に示すテーブルｒａｎｇｅＴａｂＬＰＳ［ｐＳｔａｔｅＩｄｘ］［ｑＣｏｄＩＲａｎｇｅＩｄｘ］を参照することによって求められる。また、ｃｏｄＩＲａｎｇｅＭＰＳは、ｃｏｄＩＲａｎｇｅからｃｏｄＩＲａｎｇｅＬＰＳを減ずることによって求められる。
【０００７】
復号の結果、ＭＰＳならばｖａｌＭＰＳが、ＬＰＳならばｖａｌＭＰＳの反転値が、復号データとして出力される。そして、内部状態変数ｃｏｄＩＲａｎｇｅおよびｃｏｄＩＯｆｆｓｅｔの更新と、コンテキスト変数ｃｏｎｔｅｘｔ［ｃｔｘＩｄｘ］の更新とが行われる。これらの更新においては、復号結果がＭＰＳまたはＬＰＳの何れであるかによって処理内容が異なる。
【０００８】
（１）復号結果がＭＰＳであるとき、図２７に示す遷移テーブルのｔｒａｎｓＩｄｘＭＰＳに従って、ｐＳｔａｔｅＩｄｘがｔｒａｎｓＩｄｘＭＰＳ［ｃｏｎｔｅｘｔ［ｃｔｘＩｄｘ］．ｐＳｔａｔｅＩｄｘ］に遷移する。また、ｖａｌＭＰＳはｃｏｎｔｅｘｔ［ｃｔｘＩｄｘ］．ｖａｌＭＰＳのままの値となる。これらの値により、コンテキスト変数ｃｏｎｔｅｘｔ［ｃｔｘＩｄｘ］が更新される。 また、ｃｏｄＩＯｆｆｓｅｔは更新されず、ｃｏｄＩＲａｎｇｅはｃｏｄＩＲａｎｇｅＭＰＳの値に更新される。
【０００９】
（２）復号結果がＬＰＳであるとき、図２７に示す遷移テーブルのｔｒａｎｓＩｄｘＬＰＳに従って、ｐＳｔａｔｅＩｄｘがｔｒａｎｓＩｄｘＬＰＳ［ｃｏｎｔｅｘｔ［ｃｔｘＩｄｘ］．ｐＳｔａｔｅＩｄｘ］に遷移する。このとき、ｖａｌＭＰＳは、ｔｒａｎｓＩｄｘＬＰＳ［ｃｏｎｔｅｘｔ［ｃｔｘＩｄｘ］．ｐＳｔａｔｅＩｄｘ］が「０」ならばｃｏｎｔｅｘｔ［ｃｔｘＩｄｘ］．ｖａｌＭＰＳの反転値となり、それ以外であればｃｏｎｔｅｘｔ［ｃｔｘＩｄｘ］．ｖａｌＭＰＳのままの値となる。すなわち、ＬＰＳの出現確率の推定値が最も大きいｐＳｔａｔｅＩｄｘ＝０のときにＬＰＳが復号されたならばＬＰＳのシンボルが優勢になったと判断してｖａｌＭＰＳを反転させるが、それ以外の条件ではＭＰＳのシンボルが優勢のままであると判断してｖａｌＭＰＳを変更しない。これらの値により、コンテキスト変数ｃｏｎｔｅｘｔ［ｃｔｘＩｄｘ］が更新される。 また、ｃｏｄＩＯｆｆｓｅｔはｃｏｄＩＯｆｆｓｅｔ−ｃｏｄＩＲａｎｇｅＭＰＳとして更新され、 ｃｏｄＩＲａｎｇｅはｃｏｄＩＲａｎｇｅＬＰＳとして更新される。
【００１０】
内部状態変数は、さらに再正規化処理ＲｅｎｏｒｍＤにおいて、更新とストリームの取り込みが行われる。この再正規化処理において、ｃｏｄＩＲａｎｇｅが０ｘ１００（＝２５６）以上になるまで、ｃｏｄＩＲａｎｇｅは左シフトされる。これと同時にｃｏｄＩＯｆｆｓｅｔはｃｏｄＩＲａｎｇｅと同じ回数分左シフトされ、その際、１回左シフトされる毎にストリーム（符号化データ）から１ビット分が入力されて、ｃｏｄＩＯｆｆｓｅｔのＬＳＢの１ビット値として更新される。このようにして左シフト回数分のビット数が入力ストリームから取り込まれる。ｃｏｄＩＲａｎｇｅが最初から０ｘ１００以上であれば再正規化処理では内部状態変数が更新されない。以上が１シンボルの復号処理であり、次のシンボルの復号の際には、新たに計算されたｃｔｘＩｄｘを使って同様の処理を繰り返すことによって次々にシンボルが復号されていく。なお、以下では、単に「シフト」と称した場合にはＬＳＢ側からＭＳＢ側へシフトする左シフトを意味する。
【００１１】
上述のＣＡＢＡＣにおける従来の二値算術符号復号処理の回路構成例を図２９および図３０に示す。また、ＣＡＢＡＣにおける従来の二値算術符号復号処理の手順を図３１乃至３４に示す。
【００１２】
シンボルを１つ復号する際には、ｐＳｔａｔｅＩｄｘおよびｖａｌＭＰＳがコンテキスト変数テーブルから読み出される（ステップＳ９０１）。また、内部状態変数ｃｏｄＩＲａｎｇｅの７ビット目から６ビット目までの値がｑＣｏｄＩＲａｎｇｅＩｄｘに設定される（ステップＳ９０２）。そして、ｒａｎｇｅＴａｂＬＰＳ［ｐＳｔａｔｅＩｄｘ］［ｑＣｏｄＩＲａｎｇｅＩｄｘ］の参照値がｃｏｄＩＲａｎｇｅＬＰＳに設定され、ｃｏｄＩＲａｎｇｅからｃｏｄＩＲａｎｇｅＬＰＳを減じた値がｃｏｄＩＲａｎｇｅＭＰＳに設定される（ステップＳ９０３）。
【００１３】
このとき、ｃｏｄＩＯｆｆｓｅｔがｃｏｄＩＲａｎｇｅＭＰＳ以上であれば（ステップＳ９０６）、復号結果はＬＰＳになり、ｃｏｄＩＯｆｆｓｅｔからｃｏｄＩＲａｎｇｅＭＰＳを減じたものがｃｏｄＩＯｆｆｓｅｔとして更新され、ｃｏｄＩＲａｎｇｅＬＰＳがｃｏｄＩＲａｎｇｅとして更新される（ステップＳ９０７）とともに、コンテキスト変数が更新される（ステップＳ９１０）。
【００１４】
一方、ｃｏｄＩＯｆｆｓｅｔがｃｏｄＩＲａｎｇｅＭＰＳ未満であれば（ステップＳ９０６）、復号結果はＭＰＳになり、ｃｏｄＩＲａｎｇｅＭＰＳがｃｏｄＩＲａｎｇｅとして更新される（ステップＳ９０８）とともに、コンテキスト変数が更新される（ステップＳ９２０）。
【００１５】
その後、内部状態変数ｃｏｄＩＲａｎｇｅおよびｃｏｄＩＯｆｆｓｅｔは、再正規化の処理対象となる（ステップＳ９３０）。
【００１６】
復号結果がＬＰＳの場合（ステップＳ９１０）、ｖａｌＭＰＳの反転値が復号データとして出力される（ステップＳ９１１）。また、ｐＳｔａｔｅＩｄｘの次の状態は、遷移テーブルのｔｒａｎｓＩｄｘＬＰＳ［ｐＳｔａｔｅＩｄｘ］から求められる（ステップＳ９１２）。このとき、ｔｒａｎｓＩｄｘＬＰＳ［ｐＳｔａｔｅＩｄｘ］が「０」であった場合（ステップＳ９１３）、ｖａｌＭＰＳは反転される（ステップＳ９１４）。そして、このように求められたｐＳｔａｔｅＩｄｘおよびｖａｌＭＰＳにより、コンテキスト変数が更新される（ステップＳ９１５）。
【００１７】
復号結果がＭＰＳの場合（ステップＳ９２０）、ｖａｌＭＰＳの値が復号データとして出力される（ステップＳ９２１）。また、ｐＳｔａｔｅＩｄｘの次の状態は、遷移テーブルのｔｒａｎｓＩｄｘＭＰＳ［ｐＳｔａｔｅＩｄｘ］から求められ、これによりコンテキスト変数が更新される（ステップＳ９２２）。
【００１８】
再正規化処理においては（ステップＳ９３０）、ｃｏｄＩＲａｎｇｅが０ｘ０１００（＝２５６）より小さい場合には（ステップＳ９３１）、ｃｏｄＩＲａｎｇｅが０ｘ０１００以上になるまで、ｃｏｄＩＲａｎｇｅおよびｃｏｄＩＯｆｆｓｅｔが１ビットずつ左シフトされるとともに、ｃｏｄＩＯｆｆｓｅｔのＬＳＢにはストリーム（符号化データ）から１ビット分が入力される（ステップＳ９３２）。
【非特許文献１】ＩＴＵ−Ｔ  Ｈ．２６４
【発明の開示】
【発明が解決しようとする課題】
【００１９】
ＣＡＢＡＣの復号処理はこのように複雑である上に、１ビットに複数のシンボルを圧縮して収めることができるため、ストリームを１ビットも読み込むことなく複数のシンボルが復号される可能性があり、符号のビット数以上に１シンボルの復号処理を繰り返す必要がある場合が想定される。そして、その処理回数は一般に予想が難しい。さらに多値化処理が必要なことから、ハフマン符号などの可変長符号の復号に比べて処理量が多い。すなわち、１ビットには最大３６シンボルを圧縮することが可能であり、可変長符号の復号に比べて処理量のばらつきが非常に大きい。そのため、高ビットレートのストリームを復号する際には、ＣＡＢＡＣ復号処理の１シンボルあたりの処理サイクル数をできる限り少なくすることが求められてきた。
【００２０】
図２９および図３０のような回路構成により二値算術符号処理回路を実現する場合には、シフタ、減算器、比較器、テーブル参照回路、セレクタ、および、メモリアクセスなどの多くの処理が連なり、複雑であるため、１サイクルで１シンボル以上の復号を行う回路を高動作周波数で駆動できるように実装することは難しい。また、前のシンボルの復号が完了しないと次のシンボルの復号に必要な情報が確定しないため、次の復号処理を開始することができずに逐次処理となり、回路規模を増やして並列的に処理することにより効率を上げることは困難である。
【００２１】
本発明はこのような状況に鑑みてなされたものであり、コンテキスト適応型二値算術復号処理において、復号シンボル当りの処理サイクル数ではなく、符号化ビット当りの処理サイクルを下げることにより、復号処理を簡略化させて、復号処理性能を向上させることを目的とする。
【課題を解決するための手段】
【００２２】
本発明は、上記課題を解決するためになされたものであり、その第１の側面は、確率状態を示す第１のコンテキスト変数（例えば、ｐＳｔａｔｅＩｄｘ［ｉ］）および優勢確率シンボルを示す第２のコンテキスト変数（例えば、ｖａｌＭＰＳ［ｉ］）に基づいて、復号の基準となる第１の状態変数（例えば、ｃｏｄＩＲａｎｇｅ）および復号対象となる第２の状態変数（例えば、ｃｏｄＩＯｆｆｓｅｔ）を更新しながら符号化データを復号する算術復号装置であって、上記第１のコンテキスト変数に特定されるレンジにおける優勢確率シンボルのレンジ（例えば、ｃｏｄＩＲａｎｇｅＭＰＳ［ｉ］）および劣勢確率シンボルのレンジ（例えば、ｃｏｄＩＲａｎｇｅＬＰＳ［ｉ］）の遷移ならびに上記優勢確率シンボルのレンジが特定の値より小さくなるシンボルの番号（例えば、ｓｆｔＬ）を保持し、上記第１の状態変数および上記第１のコンテキスト変数に基づいて参照される復号情報テーブルと、上記優勢確率シンボルのレンジおよび上記劣勢確率シンボルのレンジの遷移ならびに上記優勢確率シンボルのレンジが特定の値より小さくなるシンボルの上記番号および上記第２の状態変数に基づいて上記符号化データから一括して復号されるシンボル数（例えば、長さＬ）を決定するシンボル数決定手段と、上記第２のコンテキスト変数に基づいて上記一括して復号されるシンボル数に対応するシンボルを復号して出力する出力手段とを具備することを特徴とする算術復号装置である。これにより、第１の状態変数および第１のコンテキスト変数により参照される情報から、一括復号可能なシンボルを特定させるという作用をもたらす。
【００２３】
また、この第１の側面において、上記優勢確率シンボルの連続する一群のシンボルについて上記優勢確率シンボルのレンジおよび上記劣勢確率シンボルのレンジを逐次生成する復号情報生成手段をさらに具備し、上記復号情報テーブルは上記一群のシンボルに続くシンボルの復号に必要な情報のみを保持するように構成してもよい。これにより、復号情報テーブルの規模を抑制させるという作用をもたらす。
【００２４】
また、この第１の側面において、上記第１のコンテキスト変数をコンテキストインデックス毎に保持するコンテキスト変数テーブルと、上記一群のシンボルのコンテキストインデックスが全て異なる場合にはそれぞれのコンテキストインデックスによって独立して上記コンテキスト変数テーブルから上記一群のシンボルに対応する第１のコンテキスト変数を取得し、上記一群のシンボルのコンテキストインデックスが全て等しい場合には上記コンテキスト変数テーブルから参照された先頭の第１のコンテキスト変数に基づいてそれ以降の第１のコンテキスト変数を遷移させることにより上記一群のシンボルに対応する第１のコンテキスト変数を取得する復号制御手段とをさらに具備してもよい。これにより、コンテキストインデックスが全て異なる場合と全て等しい場合とで切り替えながら、共通化した資源によりシンボルを復号させるという作用をもたらす。
【発明の効果】
【００２５】
本発明によれば、コンテキスト適応型二値算術復号処理において、復号処理性能を向上させるとともに、回路等の規模を削減させるという優れた効果を奏し得る。
【発明を実施するための最良の形態】
【００２６】
次に本発明の実施の形態について図面を参照して詳細に説明する。
【００２７】
図１は、本発明の実施の形態におけるＣＡＢＡＣ復号器２０の一構成例を示す図である。このＣＡＢＡＣ復号器２０は、符号列入力部１０から符号化データを受け取り、二値信号に復号した後に、多値信号に多値化するものである。このＣＡＢＡＣ復号器２０は、二値算術符号復号処理部２１と、コンテキストインデックス計算処理部２２と、コンテキスト変数テーブル保持部２３と、多値化処理部２４とを備えている。
【００２８】
コンテキストインデックス計算処理部２２は、コンテキストインデックス（ｃｔｘＩｄｘ）を計算して、その計算されたｃｔｘＩｄｘを二値算術符号復号処理部２１に供給するものである。
【００２９】
コンテキスト変数テーブル保持部２３は、各コンテキストに対応したコンテキスト変数をコンテキスト変数テーブルとして保持するものである。各コンテキスト変数は、出現確率を示す確率状態インデックスｐＳｔａｔｅＩｄｘと、出現確率の高い優勢確率シンボル（ＭＰＳ）を示すｖａｌＭＰＳとから構成される。コンテキスト変数テーブル保持部２３に保持されるコンテキスト変数は、ｃｔｘＩｄｘによって特定され、ｃｏｎｔｅｘｔ［ｃｔｘＩｄｘ］と表される。このとき、ｃｔｘＩｄｘによって特定された確率状態インデックスはｃｏｎｔｅｘｔ［ｃｔｘＩｄｘ］．ｐＳｔａｔｅＩｄｘと表され、ｃｔｘＩｄｘによって特定されたＭＰＳはｃｏｎｔｅｘｔ［ｃｔｘＩｄｘ］．ｖａｌＭＰＳと表される。
【００３０】
二値算術符号復号処理部２１は、符号列入力部１０から入力された符号化データを二値信号に復号するものである。この二値算術符号復号処理部２１は、シンボルを１つ復号する際、コンテキストインデックス計算処理部２２からｃｔｘＩｄｘを受け取り、このｃｔｘＩｄｘに基づいてコンテキスト変数テーブル保持部２３からコンテキスト変数ｃｏｎｔｅｘｔ［ｃｔｘＩｄｘ］を取得する。そして、このコンテキスト変数に基づいてシンボルを復号して、二値信号を多値化処理部２４に出力する。
【００３１】
多値化処理部２４は、二値算術符号復号処理部２１から出力された二値信号を元の多値信号に多値化するものである。二値算術符号化の際にはシンタックス要素（ＳＥ：Syntax Element）に応じて多値信号から二値信号への変換が行われており、この多値化処理部２４ではそのような二値信号を元の多値信号に戻す処理が行われる。ここで、シンタックス要素とは、Ｈ．２６４においてシンタックスで伝送することが規定されている情報である。
【００３２】
このように構成されるＣＡＢＡＣ復号器２０において各シンボルは復号される。ここで、復号結果ごとに行われる再正規化処理に注目する。図２７からも明らかなように、ｒａｎｇｅＴａｂＬＰＳに保持される値はすべて０ｘ１００（＝２５６）より小さいため、その値が代入されるｃｏｄＩＲａｎｇｅＬＰＳも常に０ｘ１００より小さくなる。したがって、ＬＰＳが復号されたときは１回以上のシフトが必ず発生することになる。一方、ＭＰＳが復号されたときはｃｏｄＩＲａｎｇｅが常に０ｘ８０（＝１２８）以上になるようにｒａｎｇｅＴａｂＬＰＳが定義されており、少なくとも１回のシフトにより０ｘ１００以上になるため、シフトを行わないか１回だけシフトするかの２通りである。シフトを行わない場合があるということは、１シンボルの復号後にｃｏｄＩＯｆｆｓｅｔが変化せず、新たな符号を入力することもない場合があるということを意味する。
【００３３】
図３５は、ＣＡＢＡＣにおける従来の二値算術符号復号処理の手順を形式上変更したものである。すなわち、ＭＰＳが復号されたときに「ｃｏｄＩＲａｎｇｅ＞＝０ｘ１００」であればシフトが発生しないため、再正規化処理ではｃｏｄＩＯｆｆｓｅｔを更新しないということを分かりやすいように図３１のフローを変更したものである。ただし、処理内容は図３１と同一である。具体的には、ＭＰＳのときシフトする必要があるかどうかのフラグＳｆｔＭＰＳを導入して、このフラグＳｆｔＭＰＳを再正規化処理に入る前に評価し、シフトが必要である旨を示しているときだけ再正規化処理を行い、シフトが必要である旨を示していないときには何もしないというフローに修正されている。このフラグＳｆｔＭＰＳは、「ｃｏｄＩＲａｎｇｅ＜０ｘ１００」を満たすときには「Ｙｅｓ」を保持し、それ以外のときには「Ｎｏ」を保持する。すなわち、フラグＳｆｔＭＰＳが「Ｙｅｓ」を保持していればシフトが必要であることを意味し、フラグＳｆｔＭＰＳが「Ｎｏ」を保持していればシフトが必要でないことを意味する。
【００３４】
本発明の実施の形態では、上述のようにＭＰＳが復号されたときにシフトしないケースがあることを有効に活用し、「１個以上の連続するＭＰＳ」か「０個以上の連続するＭＰＳと続く１個のＬＰＳ」かの何れかの場合について、一括してそれらのシンボルを復号する。ここで、「１個以上の連続するＭＰＳ」には「ＭＰＳが１個」の場合が含まれており、「０個以上の連続するＭＰＳと続く１個のＬＰＳ」には「ＬＰＳが１個」の場合が含まれているため、あらゆるデータをこの二種類のシンボル列に分解することができる。そのため、この二種類のシンボル列単位で復号することによって、あらゆるデータが復号可能となる。
【００３５】
ある時点から複数のシンボルを連続して復号する際に、Ｌ個のすべてがＭＰＳであって、その全てがシフトを伴わない場合（図３５の破線の部分だけを通り再正規化処理を行わない場合）であるときは、その間はｃｏｄＩＯｆｆｓｅｔが常に同じ値となる。このような条件を満たす場合について、２つの条件に注目する。
【００３６】
１つ目の条件として、ｃｏｄＩＲａｎｇｅが０ｘ１００より小さくなるとシフトが発生することに注目すると、１シンボル目を復号する際のｃｏｄＩＲａｎｇｅからＬ個のシンボル分のｃｏｄＩＲａｎｇｅＭＰＳ［ｉ］（ｉ＝０，...，Ｌ−１）を計算することが出来れば、ｉ番目のフラグＳｆｔＭＰＳ［ｉ］が「Ｙｅｓ」になるまでの長さｓｆｔＬを計算することができる。このフラグＳｆｔＭＰＳ［ｉ］は、「ｃｏｄＩＲａｎｇｅＭＰＳ［ｉ］＜０ｘ１００」を満たすときには「Ｙｅｓ」を保持し、それ以外のときには「Ｎｏ」を保持する。すなわち、フラグＳｆｔＭＰＳ［ｉ］が「Ｙｅｓ」を保持していればシフトが必要であることを意味し、フラグＳｆｔＭＰＳ［ｉ］が「Ｎｏ」を保持していればシフトが必要でないことを意味する。ただし、Ｌ−１番目まですべて「Ｎｏ」ならばｓｆｔＬはＬとする。
【００３７】
２つ目の条件として、ｃｏｄＩＲａｎｇｅＭＰＳがｃｏｄＩＯｆｆｓｅｔ以下になると復号結果はＬＰＳになるということに注目すると、１つのｃｏｄＩＯｆｆｓｅｔと、ｓｆｔＬ個のシンボル分のｃｏｄＩＲａｎｇｅＭＰＳ［ｉ］（ｉ＝０，...，ｓｆｔＬ−１）とを比較したフラグＧｅ［ｉ］により、ＭＰＳが連続する長さｇｅＬを計算することができる。このフラグＧｅ［ｉ］は、「ｃｏｄＩＯｆｆｓｅｔ＞＝ｃｏｄＩＲａｎｇｅＭＰＳ［ｉ］」を満たすときには「Ｙｅｓ」を保持し、それ以外のときには「Ｎｏ」を保持する。すなわち、フラグＧｅ［ｉ］が「Ｙｅｓ」を保持していればＬＰＳが復号されたことを意味し、フラグＧｅ［ｉ］が「Ｎｏ」を保持していればＭＰＳが復号されたことを意味する。したがって、フラグＧｅ［ｉ］をｉ＝０からｓｆｔＬ−１まで順番に比較して、Ｇｅ［ｉ］が初めてＹｅｓとなるまでの長さｇｅＬが、ＭＰＳの連続数になる。
【００３８】
これら２つの条件から生成したｓｆｔＬおよびｇｅＬのうち、値の小さい方が、「ＭＰＳが連続、かつ、シフトがない」状態が続く長さＬとなる。ＳｆｔＭＰＳ［ｉ］およびＧｅ［i］は並行して求めることができるため、ｓｆｔＬおよびｇｅＬは互いに独立して生成することができる。
【００３９】
ここではｃｏｄＩＯｆｆｓｅｔが一定であることを前提としているため、ｃｏｄＩＲａｎｇｅＭＰＳ［ｉ］は、ｃｏｄＩＯｆｆｓｅｔに依らず、各シンボルのｐＳｔａｔｅＩｄｘと１シンボル目を復号する際のｃｏｄＩＲａｎｇｅのみから計算することが可能である。
【００４０】
ただし、各シンボルのｐＳｔａｔｅＩｄｘは、全てのｃｔｘＩｄｘ［ｉ］が異なるときは依存関係がないため、別々にコンテキスト変数を使用する。たとえば、３シンボルの場合は、以下のようになる（式１乃至３）。
ｐＳｔａｔｅＩｄｘ［０］
＝ｃｏｎｔｅｘｔ［ｃｔｘＩｄｘ［０］］．ｐＳｔａｔｅＩｄｘ    （式１）
ｐＳｔａｔｅＩｄｘ［１］
＝ｃｏｎｔｅｘｔ［ｃｔｘＩｄｘ［１］］．ｐＳｔａｔｅＩｄｘ    （式２）
ｐＳｔａｔｅＩｄｘ［２］
＝ｃｏｎｔｅｘｔ［ｃｔｘＩｄｘ［２］］．ｐＳｔａｔｅＩｄｘ    （式３）
【００４１】
同じコンテキストを使う場合は、ＭＰＳであることを仮定して、先に復号される方のｐＳｔａｔｅＩｄｘからｔｒａｎｓＩｄｘＭＰＳ［ｐＳｔａｔｅＩｄｘ］によって求める必要がある。たとえば、ｃｔｘＩｄｘ［０］と、ｃｔｘＩｄｘ［１］と、ｃｔｘＩｄｘ［２］とが同じコンテキスト変数を指す場合は、以下のようになる（式４乃至６）。
ｐＳｔａｔｅＩｄｘ［０］
＝ｃｏｎｔｅｘｔ［ｃｔｘＩｄｘ［０］］．ｐＳｔａｔｅＩｄｘ    （式４）
ｐＳｔａｔｅＩｄｘ［１］
＝ｔｒａｎｓＩｄｘＭＰＳ［ｐＳｔａｔｅＩｄｘ［０］］        （式５）
ｐＳｔａｔｅＩｄｘ［２］
＝ｔｒａｎｓＩｄｘＭＰＳ［ｐＳｔａｔｅＩｄｘ［１］］        （式６）
【００４２】
このように依存関係のあるｃｔｘＩｄｘに関する処理を矛盾がないように行っておきさえすれば、ｃｏｄＩＲａｎｇｅＭＰＳ［ｉ］はｃｏｄＩＯｆｆｓｅｔに依らずに計算可能であり、ＳｆｔＭＰＳ［ｉ］についてもｃｏｄＩＲａｎｇｅＭＰＳ［ｉ］から同様に計算可能である。具体的には、３シンボルの場合は、以下のようになる（式７乃至１５）。
ｃｏｄＩＲａｎｇｅＬＰＳ［０］
＝ｒａｎｇｅＴａｂＬＰＳ［ｐＳｔａｔｅＩｄｘ［０］］
［（ｃｏｄＩＲａｎｇｅ＞＞６）＆３］  （式７）
ｃｏｄＩＲａｎｇｅＭＰＳ［０］
＝ｃｏｄＩＲａｎｇｅ−ｃｏｄＩＲａｎｇｅＬＰＳ［０］        （式８）
ｃｏｄＩＲａｎｇｅＬＰＳ［１］
＝ｒａｎｇｅＴａｂＬＰＳ［ｐＳｔａｔｅＩｄｘ［１］］
［（ｃｏｄＩＲａｎｇｅＭＰＳ［０］＞＞６）＆３］
（式９）
ｃｏｄＩＲａｎｇｅＭＰＳ［１］
＝ｃｏｄＩＲａｎｇｅＭＰＳ［０］−ｃｏｄＩＲａｎｇｅＬＰＳ［１］
（式１０）
ｃｏｄＩＲａｎｇｅＬＰＳ［２］
＝ｒａｎｇｅＴａｂＬＰＳ［ｐＳｔａｔｅＩｄｘ［２］］
［（ｃｏｄＩＲａｎｇｅＭＰＳ［１］＞＞６）＆３］
（式１１）
ｃｏｄＩＲａｎｇｅＭＰＳ［２］
＝ｃｏｄＩＲａｎｇｅＭＰＳ［１］−ｃｏｄＩＲａｎｇｅＬＰＳ［２］
（式１２）
ＳｆｔＭＰＳ［０］
＝（ｃｏｄＩＲａｎｇｅＭＰＳ［０］＞＝０ｘ０１００）
？  Ｙｅｓ  ：  Ｎｏ        （式１３）
ＳｆｔＭＰＳ［１］
＝（ｃｏｄＩＲａｎｇｅＭＰＳ［１］＞＝０ｘ０１００）
？  Ｙｅｓ  ：  Ｎｏ        （式１４）
ＳｆｔＭＰＳ［２］
＝（ｃｏｄＩＲａｎｇｅＭＰＳ［２］＞＝０ｘ０１００）
？  Ｙｅｓ  ：  Ｎｏ        （式１５）
【００４３】
このようにしてｓｆｔＬ、ｃｏｄＩＲａｎｇｅＭＰＳ［ｉ］、ｃｏｄＩＲａｎｇｅＬＰＳ［ｉ］は、ｐＳｔａｔｅＩｄｘ［ｉ］およびｃｏｄＩＲａｎｇｅのみで決定されることが分かる。そこで、本発明の実施の形態では、これらを予め計算してテーブルとして保存しておき、ｐＳｔａｔｅＩｄｘ［ｉ］（ｉ＝０，...，ｍａｘＬ−１）とｃｏｄＩＲａｎｇｅとに基づいて、ｓｆｔＬ、ｃｏｄＩＲａｎｇｅＭＰＳ［ｉ］、ｃｏｄＩＲａｎｇｅＬＰＳ［ｉ］（ｉ＝０，...，ｔＬ−１）を参照可能な後続シンボル復号情報テーブルを設ける。ここで、ｔＬは、このテーブルが対応している最大のシンボル長である。上述のｍａｘＬは、ｍａｘＬ＜＝ｔＬを満たすように決定される必要がある。この後続シンボル復号情報テーブルを用いることで、ｐＳｔａｔｅＩｄｘ［ｉ］（ｉ＝０，...，ｍａｘＬ−１）と、ｃｏｄＩＲａｎｇｅと、ｃｏｄＩＯｆｆｓｅｔから直ちに、「初めてＬＰＳが復号されるまでの連続するＭＰＳ」か「シフトがあるまでの連続するＭＰＳ」の長さが確定し、「１個以上の連続するＭＰＳ」または「０個以上の連続するＭＰＳと続く１個のＬＰＳ」を１サイクルまたは２サイクルで一括して復号することができる。
【００４４】
また、｛ＭＰＳ，ＬＰＳ｝から｛０，１｝の二値データへの変換も対応するコンテキスト変数のｖａｌＭＰＳを用いて一括復号可能である。ただし、ｖａｌＭＰＳの更新処理が必要である。ｖａｌＭＰＳが反転する可能性があるのはＬＰＳが復号されたときのみである。「１個以上の連続するＭＰＳ」を復号するときはＭＰＳのみであり、ｖａｌＭＰＳは更新しなくてよい。「０個以上の連続するＭＰＳと続く１個のＬＰＳ」を復号するときは、ＬＰＳの数は１つだけであり、反転の可能性も１回だけである。ＬＰＳが復号されたコンテキストについてのみ反転処理の判定をすればよい。判定結果から必要ならば反転して更新し、それ以外の場合には更新を行わない。
【００４５】
このようにして、複数シンボルの一括復号が可能であり、目的のシンボル数を復号するまでこの一括復号処理を繰り返すことで、全ての符号列の復号が可能である。
【００４６】
図２は、本発明の実施の形態における復号処理手順の一例を示す図である。本発明の実施の形態における復号処理では、コンテキスト適応型二値算術符号化方式（ＣＡＢＡＣ）により符号化されたＬ個のシンボルを一括して復号する。この一括復号処理（ＭｕｌｔｉＤｅｃｏｄｅＤｅｃｉｓｉｏｎ）では、まず、コンテキストインデックス計算処理部２２によって計算されたコンテキストインデックス（ｃｔｘＩｄｘ）に基づいてコンテキスト変数が取得される（ステップＳ８１０）。この際の上限値はｍａｘＬにより与えられる。すなわち、一括復号される最大シンボル数がｍａｘＬであり、後続の処理においては、このｍａｘＬを超えない範囲において一括復号可能なシンボル数Ｌが決定される。
【００４７】
そして、取得されたコンテキスト変数に基づいてｃｏｄＩＲａｎｇｅＬＰＳ［ｉ］およびｃｏｄＩＲａｎｇｅＭＰＳ［ｉ］が決定され、フラグＳｆｔＭＰＳ［ｉ］が生成され、これに基づいてｓｆｔＬが決定される（ステップＳ８２０）。また、フラグＧｅ［ｉ］が生成され、これに基づいてｇｅＬが決定される（ステップＳ８３０）。その結果、ｓｆｔＬよりもｇｅＬが小さければ（ステップＳ８０１）ＬにｇｅＬが設定され（ステップＳ８０２）、それ以外であればＬにｓｆｔＬが設定される（ステップＳ８０３）。すなわち、ＬにはｓｆｔＬおよびｇｅＬのうち小さい方の値が設定されることになる。このＬは「ＭＰＳが連続、かつ、シフトがない」状態が続く長さ、すなわち一括復号可能なシンボル数を表す。
【００４８】
Ｌ番目のフラグＧｅ［Ｌ］の値はｉｓＬＰＳに設定される（ステップＳ８０４）。すなわち、ｉｓＬＰＳは、Ｌ番目のシンボルがＬＰＳであれば「Ｙｅｓ」に設定され、ＭＰＳであれば「Ｎｏ」に設定される。
【００４９】
その後、コンテキスト変数および内部状態変数の更新が行われる（ステップＳ８４０）。この更新処理には、再正規化処理が含まれる。このようにして復号された二値信号は、多値化処理部２４に出力される（ステップＳ８９０）。
【００５０】
図３および図４は、本発明の実施の形態におけるコンテキスト変数取得処理（ステップＳ８１０）の手順の一例を示す図である。上述のように、ｃｔｘＩｄｘが全て等しい場合と、全て異なる場合とでは、コンテキスト変数の取得方法が異なる。
【００５１】
ｃｔｘＩｄｘが全て異なる場合には、図３のように別々にコンテキスト変数を取得することができる。すなわち、変数ｉが「０」に設定された後に（ステップＳ８１１）、変数ｉがｍａｘＬになるまで（ステップＳ８１３）「１」ずつ加算されながら（ステップＳ８１４）、それぞれ異なるｃｔｘＩｄｘ［ｉ］によってコンテキスト変数が取得される（ステップＳ８１２）。
【００５２】
一方、ｃｔｘＩｄｘが全て等しい場合には、図４のように先頭のコンテキスト変数に基づいて、後続のコンテキスト変数が取得される。すなわち、変数ｉが「０」に設定された後に（ステップＳ８１１）ｃｔｘＩｄｘ［ｉ］によってコンテキスト変数が取得され（ステップＳ８１２）、変数ｉがｍａｘＬより小さい間は（ステップＳ８１３）「１」ずつ加算されていく（ステップＳ８１４）。そして、図２８に示すｔｒａｎｓＩｄｘＭＰＳ［ｐＳｔａｔｅＩｄｘ［ｉ−１］］からｐＳｔａｔｅＩｄｘ［ｉ］が取得され、ｖａｌＭＰＳ［ｉ−１］からｖａｌＭＰＳ［ｉ］が取得される（ステップＳ８１５）。
【００５３】
図５は、本発明の実施の形態におけるレンジ生成処理（ステップＳ８２０）の手順の一例を示す図である。このレンジ生成処理（ｍａｋｅＲａｎｇｅ）では、ｃｏｄＩＲａｎｇｅＬＰＳ、ｃｏｄＩＲａｎｇｅＭＰＳ、ＳｆｔＭＰＳ［ｉ］およびｓｆｔＬが生成される。ここでは、変数ｉが「０」に設定された後（ステップＳ８２１）、変数ｉがｍａｘＬ以上になるか（ステップＳ８２５）、または、ＳｆｔＭＰＳ［ｉ］が「Ｙｅｓ」になるまでの間（ステップＳ８２６）、「１」ずつ加算されながら（ステップＳ８２８）以下の処理が繰り返される。
【００５４】
ｃｏｄＩＲａｎｇｅＬＰＳ［ｉ］は、ｃｏｄＩＲａｎｇｅの７ビット目から６ビット目までの値ｃｏｄＩＲａｎｇｅ［７：６］をｑＣｏｄＩＲａｎｇｅＩｄｘとして（ステップＳ８２２）、図２７に示すテーブルｒａｎｇｅＴａｂＬＰＳ［ｐＳｔａｔｅＩｄｘ［ｉ］］［ｑＣｏｄＩＲａｎｇｅＩｄｘ］を参照することによって求められる（ステップＳ８２３）。また、ｃｏｄＩＲａｎｇｅＭＰＳ［ｉ］は、ｃｏｄＩＲａｎｇｅからｃｏｄＩＲａｎｇｅＬＰＳ［ｉ］を減ずることによって求められる（ステップＳ８２３）。また、フラグＳｆｔＭＰＳ［ｉ］は、「ｃｏｄＩＲａｎｇｅＭＰＳ［ｉ］＜０ｘ１００」を満たすときには「Ｙｅｓ」を保持し、それ以外のときには「Ｎｏ」を保持するように設定される。
【００５５】
変数ｉがｍａｘＬ未満（ステップＳ８２５）、かつ、ＳｆｔＭＰＳ［ｉ］が「Ｎｏ」であれば、ｃｏｄＩＲａｎｇｅにｃｏｄＩＲａｎｇｅＭＰＳ［ｉ］が設定される（ステップＳ８２７）。その後、変数ｉは「１」加算される（ステップＳ８２８）。
【００５６】
変数ｉがｍａｘＬ以上になるか（ステップＳ８２５）、または、ＳｆｔＭＰＳ［ｉ］が「Ｙｅｓ」になると、その際の変数ｉがｓｆｔＬに設定される（ステップＳ８２９）。
【００５７】
図６は、本発明の実施の形態におけるＬＰＳ検索処理（ステップＳ８３０）の手順の一例を示す図である。このＬＰＳ検索処理（ｓｅａｒｃｈＬＰＳ）では、フラグＧｅ［ｉ］およびｇｅＬが生成される。ここでは、変数ｉが「０」に設定された後（ステップＳ８３１）、変数ｉがｓｆｔＬ以上になるか（ステップＳ８３５）、または、Ｇｅ［ｉ］が「Ｙｅｓ」になるまでの間（ステップＳ８３６）、「１」ずつ加算されながら（ステップＳ８３８）以下の処理が繰り返される。
【００５８】
フラグＧｅ［ｉ］は、「ｃｏｄＩＯｆｆｓｅｔ＞＝ｃｏｄＩＲａｎｇｅＭＰＳ［ｉ］」を満たすときには「Ｙｅｓ」を保持し、それ以外のときには「Ｎｏ」を保持するように設定される（ステップＳ８３４）。
【００５９】
変数ｉがｓｆｔＬ以上になるか（ステップＳ８３５）、または、Ｇｅ［ｉ］が「Ｙｅｓ」になると、その際の変数ｉがｇｅＬに設定される（ステップＳ８３９）。
【００６０】
図７および図８は、本発明の実施の形態におけるコンテキスト変数および内部状態変数の更新処理（ステップＳ８４０）の手順の一例を示す図である。上述のように、ｃｔｘＩｄｘが全て等しい場合と、全て異なる場合とでは、コンテキスト変数の取得方法が異なるため、コンテキスト変数の更新処理も異なる。
【００６１】
ｃｔｘＩｄｘが全て異なる場合には、図７のようにＬ−１個のシンボルの更新が先に行われる。すなわち、変数ｉが「０」に設定された後に（ステップＳ８４１）、変数ｉがＬになるまで（ステップＳ８４２）「１」ずつ加算されながら（ステップＳ８４４）、ＭＰＳであることを想定しながらコンテキスト変数が更新される（ステップＳ８４３）。
【００６２】
その後、ステップＳ８０４において設定されたｉｓＬＰＳの値に応じて以下の処理が行われる。ｉｓＬＰＳの値が「Ｙｅｓ」であれば（ステップＳ８４５）、Ｌ個目のシンボルがＬＰＳであるため、ＬＰＳであることを想定しながらコンテキスト変数が更新され（ステップＳ８５０）、ｃｏｄＩＲａｎｇｅにはｃｏｄＩＲａｎｇｅＬＰＳ［Ｌ］が設定され（ステップＳ８４６）、ｃｏｄＩＯｆｆｓｅｔにはｃｏｄＩＯｆｆｓｅｔからｃｏｄＩＲａｎｇｅを減じた値が設定される（ステップＳ８４７）。また、ＬＰＳであることを想定しながら再正規化処理が行われる（ステップＳ８７０）。
【００６３】
ｉｓＬＰＳの値が「Ｎｏ」であれば（ステップＳ８４５）、Ｌ個目のシンボルがＭＰＳであるため、ＭＰＳであることを想定しながらコンテキスト変数が更新され（ステップＳ８６０）、ｃｏｄＩＲａｎｇｅにはｃｏｄＩＲａｎｇｅＭＰＳ［Ｌ］が設定される（ステップＳ８４８）。また、ＭＰＳであることを想定しながら再正規化処理が行われる（ステップＳ８８０）。
【００６４】
一方、ｃｔｘＩｄｘが全て等しい場合には、Ｌ−１個のシンボルの更新（図７のステップＳ８４１乃至Ｓ８４４）を行うことなく、図８のようにｉｓＬＰＳの値に応じた処理が行われる。この場合の処理は、図７のステップＳ８４５以降の処理と同様である。
【００６５】
図９は、本発明の実施の形態におけるＬＰＳの場合の更新処理（ステップＳ８５０）の手順の一例を示す図である。ここでは、ＬＰＳが復号されたことを想定して、ｖａｌＭＰＳ［ｉ］の反転値がｂｉｎＶａｌ［ｉ］に設定される（ステップＳ８５１）。そして、図２８に示すｔｒａｎｓＩｄｘＬＰＳ［ｐＳｔａｔｅＩｄｘ［ｉ］］からｃｏｎｔｅｘｔ［ｃｔｘＩｄｘ［ｉ］］．ｐＳｔａｔｅＩｄｘが更新される（ステップＳ８５２）。また、ｔｒａｎｓＩｄｘＬＰＳ［ｐＳｔａｔｅＩｄｘ［ｉ］］が「０」であれば（ステップＳ８５３）、ｖａｌＭＰＳ［ｉ］の反転値からｃｏｎｔｅｘｔ［ｃｔｘＩｄｘ［ｉ］］．ｖａｌＭＰＳが更新される（ステップＳ８５４）。
【００６６】
図１０は、本発明の実施の形態におけるＭＰＳの場合の更新処理（ステップＳ８４３、Ｓ８６０）の手順の一例を示す図である。ここでは、ＭＰＳが復号されたことを想定して、ｖａｌＭＰＳ［ｉ］の値がｂｉｎＶａｌ［ｉ］に設定される（ステップＳ８６１）。そして、図２８に示すｔｒａｎｓＩｄｘＭＰＳ［ｐＳｔａｔｅＩｄｘ［ｉ］］からｃｏｎｔｅｘｔ［ｃｔｘＩｄｘ［ｉ］］．ｐＳｔａｔｅＩｄｘが更新される（ステップＳ８６２）。
【００６７】
図１１は、本発明の実施の形態におけるＬＰＳの場合の再正規化処理（ステップＳ８７０）の手順の一例を示す図である。ここでは、ｃｏｄＩＲａｎｇｅおよびｃｏｄＩＯｆｆｓｅｔが１ビット左シフトされるとともに、ｃｏｄＩＯｆｆｓｅｔのＬＳＢにはストリームから符号化データが１ビット分入力される（ステップＳ８７１）。これらの処理は、ｃｏｄＩＲａｎｇｅが０ｘ０１００以上になるまで繰り返される（ステップＳ８７２）。
【００６８】
図１２は、本発明の実施の形態におけるＭＰＳの場合の再正規化処理（ステップＳ８８０）の手順の一例を示す図である。ここでは、ステップＳ８８０におけるｓｆｔＭＰＳ［Ｌ］をｓｆｔとして、このｓｆｔが「Ｙｅｓ」を示しているときには、以下の処理が行われる（ステップＳ８８１）。ｃｏｄＩＲａｎｇｅおよびｃｏｄＩＯｆｆｓｅｔが１ビット左シフトされるとともに、ｃｏｄＩＯｆｆｓｅｔのＬＳＢにはストリームから符号化データが１ビット分入力される（ステップＳ８８２）。
【００６９】
図１３は、本発明の実施の形態におけるシンボル出力処理（ステップＳ８９０）の手順の一例を示す図である。ここでは、変数ｉが「０」に設定された後に（ステップＳ８９１）、変数ｉがＬになるまで（ステップＳ８９２）「１」ずつ加算されながら（ステップＳ８９４）、ｂｉｎＶａｌ［ｉ］が出力される（ステップＳ８９３）。
【００７０】
図１４は、本発明の実施の形態におけるＣＡＢＡＣ復号器の一構成例を示す図である。このＣＡＢＡＣ復号器は、一括復号処理回路１００と、復号制御回路２００と、コンテキスト変数テーブル保持部２３と、多値化処理部２４とを備える。
【００７１】
コンテキスト変数テーブル保持部２３は、コンテキストインデックスｃｔｘＩｄｘ［ｉ］により特定されるコンテキスト変数をコンテキスト変数テーブルとして保持するものである。このコンテキスト変数テーブル保持部２３は、コンテキスト変数として確率状態インデックスｃｏｎｔｅｘｔ［ｃｔｘＩｄｘ［ｉ］］．ｐＳｔａｔｅＩｄｘと、ＭＰＳ値ｃｏｎｔｅｘｔ［ｃｔｘＩｄｘ［ｉ］］．ｖａｌＭＰＳとを保持する。コンテキスト変数を特定するｃｔｘＩｄｘ［ｉ］は、復号制御回路２００から供給される。また、コンテキスト変数は復号制御回路２００から読み出され、更新される。また、コンテキスト変数テーブルへのアクセス制御のためのアクセス制御信号も復号制御回路２００から供給される。
【００７２】
一括復号処理回路１００は、符号列入力部１０から入力される符号化データを一括復号するものである。この一括復号処理回路１００は、コンテキスト変数（ｐＳｔａｔｅＩｄｘ［ｉ］およびｖａｌＭＰＳ）、内部状態変数（ｃｏｄＩＯｆｆｓｅｔおよびｃｏｄＩＲａｎｇｅ）およびｍａｘＬを復号制御回路２００から供給される。また、一括復号処理回路１００は、復号制御回路２００に対してコンテキスト変数および内部状態変数を更新する。一括復号処理回路１００による復号結果として、Ｏｕｔ＿ｄａｔａおよびＯｕｔ＿ｌｅｎｇｔｈが多値化処理部２４に出力される。Ｏｕｔ＿ｄａｔａはＬＳＢから順番に復号シンボルが格納されたものであり、Ｏｕｔ＿ｌｅｎｇｔｈは一括復号されたシンボル数より「１」少ない値を示すものである。なお、この復号に必要な制御信号である復号制御信号は一括復号処理回路１００と復号制御回路２００との間でやりとりされる。
【００７３】
復号制御回路２００は、一括復号処理回路１００における復号処理を制御するものである。この復号制御回路２００は、指定された長さｄＬが復号されるまで一括復号処理回路１００に対して繰り返し復号処理を実行させる。例えば、１回目は、ｄＬが６以上のときｍａｘＬ＝６を設定し、ｄＬが６未満のときはｍａｘＬ＝ｄＬを設定して復号を行うことによりＬ個のシンボルが復号される。２回目以降の繰り返しでは、ｐＳｔａｔｅＩｄｘ［ｉ］およびｖａｌＭＰＳ［ｉ］を、前回までに復号済みのシンボルの次のものが変数ｉ＝０になるように全体をずらして設定し直し、前回までに復号されたシンボル数とｄＬとの差が６より大きい間はｍａｘＬ＝６として、そうでない場合はその差をｍａｘＬとして、ｄＬ個のシンボル全てを復号するまで繰り返す。この復号制御回路２００は、内部状態変数（ｃｏｄＩＯｆｆｓｅｔおよびｃｏｄＩＲａｎｇｅ）を保持し、一括復号処理回路１００からの指示に基づいて更新する。また、この復号制御回路２００は、符号列入力部１０から符号化データを入力する際の制御に必要な入力制御信号を符号列入力部１０に出力する。
【００７４】
多値化処理部２４は、一括復号処理回路１００から出力された二値信号Ｏｕｔ＿ｄａｔａを元の多値信号に多値化するものである。
【００７５】
図１５は、本発明の実施の形態における一括復号処理回路１００の一構成例である。この一括復号処理回路１００は、最初の３シンボルまでを演算器のカスケード接続によって計算し、４シンボル目から６シンボル目までの３シンボルをテーブル参照することにより求めるよう構成している。ｃｔｘＩｄｘ［ｉ］が全て異なる場合、ｍａｘＬが３以下に設定され、ｐＳｔａｔｅＩｄｘ［ｉ］およびｖａｌＭＰＳ［ｉ］（ｉ＝０，１，２）には、全て別個のコンテキスト変数の値が設定される。一方、ｃｔｘＩｄｘ［ｉ］が全て同じ場合、ｍａｘＬが６以下に設定され、１つのコンテキスト変数の値ｐＳｔａｔｅＩｄｘ［０］およびｖａｌＭＰＳ［０］により、以下のように設定される。
ｐＳｔａｔｅＩｄｘ［１］
＝ｔｒａｎｓＩｄｘＭＰＳ［ｐＳｔａｔｅＩｄｘ［０］］
ｖａｌＭＰＳ［１］＝ｖａｌＭＰＳ［０］
ｐＳｔａｔｅＩｄｘ［２］
＝ｔｒａｎｓＩｄｘＭＰＳ［ｐＳｔａｔｅＩｄｘ［１］］
ｖａｌＭＰＳ［２］＝ｖａｌＭＰＳ［０］
【００７６】
この一括復号処理回路１００は、シンボル復号情報計算部１１１乃至１１３と、後続シンボル復号情報テーブル１１４と、ＬＰＳ探索部１２０と、ｃｏｄＩＲａｎｇｅＭＰＳセレクタ１３１と、ｃｏｄＩＲａｎｇｅＬＰＳセレクタ１３２と、ｐＳｔａｔｅＩｄｘ変換部１４１乃至１４３と、ｐＳｔａｔｅＩｄｘセレクタ１５０と、ＭＰＳ再正規化処理部１６１と、ＬＰＳ再正規化処理部１６２と、Ｒａｎｇｅ／Ｏｆｆｓｅｔセレクタ１７０と、二値データ一括変換部１８０と、コンテキスト変数更新値一括計算部１９０とを備える。
【００７７】
シンボル復号情報計算部１１１乃至１１３は、カスケード接続された演算器であり、シンボル復号情報としてｃｏｄＩＲａｎｇｅＬＰＳ［０〜２］およびｃｏｄＩＲａｎｇｅＭＰＳ［０〜２］をそれぞれ取得するものである。ｃｏｄＩＲａｎｇｅＬＰＳ［０〜２］およびｃｏｄＩＲａｎｇｅＭＰＳ［０〜２］は、上述の式７乃至１２により求められる。
【００７８】
後続シンボル復号情報テーブル１１４は、シンボル復号情報としてｃｏｄＩＲａｎｇｅＬＰＳ［３〜５］、ｃｏｄＩＲａｎｇｅＭＰＳ［３〜５］およびｓｆｔＬ３４５をそれぞれ取得するものである。この後続シンボル復号情報テーブル１１４は、シンボル復号情報計算部１１１乃至１１３のようなカスケード接続された演算器ではなく、ｃｏｄＩＲａｎｇｅおよびｐＳｔａｔｅＩｄｘ［０］により参照されるテーブルである。
【００７９】
ＬＰＳ探索部１２０は、復号制御回路２００から供給されたｃｏｄＩＯｆｆｓｅｔおよびｍａｘＬと、シンボル復号情報計算部１１１乃至１１３または後続シンボル復号情報テーブル１１４から供給されたｃｏｄＩＲａｎｇｅＬＰＳ［０〜５］、ｃｏｄＩＲａｎｇｅＭＰＳ［０〜５］およびｓｆｔＬ３４５とに基づいて、一括復号可能なシンボル数Ｌと、Ｌ番目のシンボルがＬＰＳか否かを示すｉｓＬＰＳと、Ｌ番目のシンボルのフラグＳｆｔＭＰＳ［Ｌ］とを生成するものである。
【００８０】
ｃｏｄＩＲａｎｇｅＭＰＳセレクタ１３１は、ＬＰＳ探索部１２０から出力された一括復号可能なシンボル数Ｌに従って、ｃｏｄＩＲａｎｇｅＭＰＳ［０〜５］の何れかをｒａｎｇｅＭＰＳとして選択するセレクタである。また、ｃｏｄＩＲａｎｇｅＬＰＳセレクタ１３２は、ＬＰＳ探索部１２０から出力された一括復号可能なシンボル数Ｌに従って、ｃｏｄＩＲａｎｇｅＬＰＳ［０〜５］の何れかをｒａｎｇｅＬＰＳとして選択するセレクタである。
【００８１】
ｐＳｔａｔｅＩｄｘ変換部１４１乃至１４３は、図２８の遷移テーブルｔｒａｎｓＩｄｘＭＰＳを満たすようにｐＳｔａｔｅＩｄｘを変換するものである。
【００８２】
ｐＳｔａｔｅＩｄｘセレクタ１５０は、ＬＰＳ探索部１２０から出力された一括復号可能なシンボル数Ｌに従って、復号制御回路２００から供給されたｐＳｔａｔｅＩｄｘ［０〜２］およびｐＳｔａｔｅＩｄｘ変換部１４１乃至１４３から供給されたｐＳｔａｔｅＩｄｘ［３〜５］の何れかをｐＳｔａｔｅＩｄｘ３４５として選択するセレクタである。
【００８３】
ＭＰＳ再正規化処理部１６１は、復号シンボルがＭＰＳであることを想定した再正規化処理を行うものである。ＬＰＳ再正規化処理部１６２は、復号シンボルがＬＰＳであることを想定した再正規化処理を行うものである。Ｒａｎｇｅ／Ｏｆｆｓｅｔセレクタ１７０は、ＬＰＳ探索部１２０から供給されたｉｓＬＰＳに従って、ＭＰＳ再正規化処理部１６１またはＬＰＳ再正規化処理部１６２の何れかにおいて再正規化されたｃｏｄＩＲａｎｇｅおよびｃｏｄＩＯｆｆｓｅｔを選択するセレクタである。
【００８４】
二値データ一括変換部１８０は、ｖａｌＭＰＳ［０〜２］から二値データを一括変換するものである。この二値データ一括変換部１８０により、Ｏｕｔ＿ｄａｔａおよびＯｕｔ＿ｌｅｎｇｔｈが出力される。
【００８５】
コンテキスト変数更新値一括計算部１９０は、コンテキスト変数を更新するための値を一括して計算するものである。より具体的には、このコンテキスト変数更新値一括計算部１９０により、ｐＳｔａｔｅＩｄｘ［０〜２］、ｖａｌＭＰＳ［０〜２］、ｐＳｔａｔｅＩｄｘ３４５およびｖａｌＭＰＳ３４５の出力値が復号制御回路２００に供給される。
【００８６】
コンテキスト変数の読み出しは、復号制御回路２００により行われ、ｐＳｔａｔｅＩｄｘ［ｉ］およびｖａｌＭＰＳ［ｉ］（ｉ＝０，１，２）に値が設定される。コンテキストインデックスが異なる場合において、同時に復号する最大のシンボルが１個または２個のときはｍａｘＬに個数を設定することで、必要のないｐＳｔａｔｅＩｄｘ［ｉ］およびｖａｌＭＰＳ［ｉ］は無視されるため、使用しないｐＳｔａｔｅＩｄｘ［ｉ］およびｖａｌＭＰＳ［ｉ］には任意の値を設定すればよい。
【００８７】
コンテキスト変数の更新も、復号制御回路２００を通して行われる。コンテキストインデックスが全て同じか異なるかは復号制御回路２００で把握しているため、全て同じ場合にはＯｕｔ＿ｐＳｔａｔｅＩｄｘ３４５およびＯｕｔ＿ｖａｌＭＰＳ３４５を更新値とする。異なる場合はｐＳｔａｔｅＩｄｘ［ｉ］およびｖａｌＭＰＳ［ｉ］（ｉ＝０，...，ｏｕｔ＿ｌｅｎｇｔｈ）のみを更新値とする。Ｏｕｔ＿ｌｅｎｇｔｈは一括復号できたシンボル数より「１」少ない値であり、Ｏｕｔ＿ｄａｔａにはＬＳＢから順番に復号シンボルが格納される。
【００８８】
図１６は、本発明の実施の形態におけるシンボル復号情報計算部１１０の一構成例を示す図である。このシンボル復号情報計算部１１０は、シンボル復号情報計算部１１１乃至１１３の各部を示している。但し、シンボル復号情報計算部１１１の場合、ｃｏｄＩＲａｎｇｅをｒａｎｇｅとし、ｐＳｔａｔｅＩｄｘ［０］をｉｄｘとし、ｃｏｄＩＲａｎｇｅＬＰＳ［０］をｒａｎｇｅＬＰＳとし、ｃｏｄＩＲａｎｇｅＭＰＳ［０］をｒａｎｇｅＭＰＳとする。また、シンボル復号情報計算部１１２の場合、ｃｏｄＩＲａｎｇｅＭＰＳ［０］をｒａｎｇｅとし、ｐＳｔａｔｅＩｄｘ［１］をｉｄｘとし、ｃｏｄＩＲａｎｇｅＬＰＳ［１］をｒａｎｇｅＬＰＳとし、ｃｏｄＩＲａｎｇｅＭＰＳ［１］をｒａｎｇｅＭＰＳとする。また、シンボル復号情報計算部１１３の場合、ｃｏｄＩＲａｎｇｅＭＰＳ［１］をｒａｎｇｅとし、ｐＳｔａｔｅＩｄｘ［２］をｉｄｘとし、ｃｏｄＩＲａｎｇｅＬＰＳ［２］をｒａｎｇｅＬＰＳとし、ｃｏｄＩＲａｎｇｅＭＰＳ［２］をｒａｎｇｅＭＰＳとする。
【００８９】
このシンボル復号情報計算部１１０は、テーブル１１８と、減算器１１９とをそれぞれ備えている。テーブル１１８は、図２７におけるｒａｎｇｅＴａｂＬＰＳテーブルであり、ｒａｎｇｅＴａｂＬＰＳ［ｉｄｘ］［ｑＲａｎｇｅＩｄｘ］をｒａｎｇｅＬＰＳとして出力する。ここで、ｑＲａｎｇｅＩｄｘはｒａｎｇｅの７ビット目から６ビット目までの値である。減算器１１９は、ｒａｎｇｅからｒａｎｇｅＬＰＳの値を減じたものをｒａｎｇｅＭＰＳとして出力するものである。
【００９０】
図１７は、本発明の実施の形態におけるｐＳｔａｔｅＩｄｘ変換部１４０の一構成例を示す図である。このｐＳｔａｔｅＩｄｘ変換部１４０は、ｐＳｔａｔｅＩｄｘ変換部１４１乃至１４３の各部を示している。但し、ｐＳｔａｔｅＩｄｘ変換部１４１は、ｐＳｔａｔｅＩｄｘ［２］をｉｄｘとし、ｐＳｔａｔｅＩｄｘ［３］をｎｉｄｘとする。また、ｐＳｔａｔｅＩｄｘ変換部１４２は、ｐＳｔａｔｅＩｄｘ［３］をｉｄｘとし、ｐＳｔａｔｅＩｄｘ［４］をｎｉｄｘとする。また、ｐＳｔａｔｅＩｄｘ変換部１４３は、ｐＳｔａｔｅＩｄｘ［４］をｉｄｘとし、ｐＳｔａｔｅＩｄｘ［５］をｎｉｄｘとする。
【００９１】
このｐＳｔａｔｅＩｄｘ変換部１４０は、図２８の遷移テーブルｔｒａｎｓＩｄｘＭＰＳを満たすようにｐＳｔａｔｅＩｄｘを変換するものであり、ｉｄｘが「６２」より小さければｉｄｘに「１」加算したものをｎｉｄｘとし、ｉｄｘが「６２」または「６３」であればｉｄｘをそのままｎｉｄｘとする（１４９）。
【００９２】
図１８は、本発明の実施の形態における後続シンボル復号情報テーブル１１４の等価回路例を示す図である。上述のように、後続シンボル復号情報テーブル１１４はｃｏｄＩＲａｎｇｅおよびｐＳｔａｔｅＩｄｘ［０］により参照されるテーブルであり、実際には同図のようなカスケード構成を有するわけではない。ここでは、動作を説明するために等価回路を示している。
【００９３】
この後続シンボル復号情報テーブル１１４の等価回路において、ｐＳｔａｔｅＩｄｘ変換部２１１乃至２１５は、それぞれが図１７により説明したｐＳｔａｔｅＩｄｘ変換部１４０と同様の機能を有し、図２８の遷移テーブルｔｒａｎｓＩｄｘＭＰＳを満たすようにｐＳｔａｔｅＩｄｘを変換する。また、シンボル復号情報計算部２２１乃至２２６は、それぞれが図１６により説明したシンボル復号情報計算部１１０と同様の機能を有し、図２７におけるｒａｎｇｅＴａｂＬＰＳテーブルに基づいて、それぞれｃｏｄＩＲａｎｇｅＬＰＳ［０〜５］およびｃｏｄＩＲａｎｇｅＭＰＳ［０〜５］の対応する要素を生成する。また、ｓｆｔＬ生成部２３０は、シンボル復号情報計算部２２１乃至２２６において生成されたｃｏｄＩＲａｎｇｅＭＰＳ［０〜５］を順番に参照して、最初に０ｘ０１００未満となるものの番号をｓｆｔＬ３４５として出力するものである。
【００９４】
なお、変数ｉがｓｆｔＬを超える場合のｃｏｄＩＲａｎｇｅＬＰＳ［ｉ］およびｃｏｄＩＲａｎｇｅＭＰＳ［ｉ］については、後段の回路で使用されないことを利用して、論理圧縮することも可能である。
【００９５】
図１９は、本発明の実施の形態におけるＬＰＳ探索部１２０の一構成例を示す図である。このＬＰＳ探索部１２０は、Ｇｅ生成部３１１乃至３１６と、ｍａｘＬ判定部３２１乃至３２６と、ＳｆｔＭＰＳ判定部３３１乃至３３３と、ｓｆｔＬ判定部３３４乃至３３６と、論理積回路３４２乃至３６６と、Ｌ生成部３７０と、ｉｓＬＰＳ生成部３８０と、セレクタ３９０とを備えている。
【００９６】
Ｇｅ生成部３１１乃至３１６は、ｃｏｄＩＯｆｆｓｅｔとｃｏｄＩＲａｎｇｅＭＰＳ［０〜５］とをそれぞれ比較することにより、Ｇｅ［０〜５］を生成するものである。Ｇｅ［ｉ］には、「ｃｏｄＩＯｆｆｓｅｔ＞＝ｃｏｄＩＲａｎｇｅＭＰＳ［ｉ］」を満たすときには真値「１」が設定され、それ以外のときには偽値「０」が設定される。
【００９７】
ｍａｘＬ判定部３２１乃至３２６は、それぞれ「０」乃至「５」の値以下にｍａｘＬが収まっていることを判定するものである。それぞれ対応する値以下にｍａｘＬが収まっていれば真値「１」が出力され、それ以外のときには偽値「０」が出力される。
【００９８】
ＳｆｔＭＰＳ判定部３３１乃至３３３は、それぞれＳｆｔＭＰＳ［０〜２］の反転値を出力するものである。ｃｏｄＩＲａｎｇｅＭＰＳ［ｉ］が０ｘ０１００以上であれば、ＳｆｔＭＰＳ［ｉ］は真値「１」になる。すなわち、ＳｆｔＭＰＳ判定部３３１乃至３３３は、それぞれｃｏｄＩＲａｎｇｅＭＰＳ［０〜２］が０ｘ０１００未満であれば真値「１」を出力し、それ以外のときには偽値「０」を出力する。
【００９９】
ｓｆｔＬ判定部３３４乃至３３６は、それぞれ「３」乃至「５」の値をｓｆｔＬ３４５が超えていることを判定するものである。すなわち、ｓｆｔＬ判定部３３４乃至３３６は、それぞれ対応する値をｓｆｔＬ３４５が超えていれば真値「１」を出力し、それ以外のときには偽値「０」を出力する。
【０１００】
論理積回路３４２は、ＳｆｔＭＰＳ［０］の反転値とＳｆｔＭＰＳ［１］の反転値との論理積を生成するものである。また、論理積回路３４３は、論理積回路３４２の出力とＳｆｔＭＰＳ［２］の反転値との論理積を生成するものである。これにより、論理積回路３５１乃至３５６の右側の入力には、ｓｆｔＬの示す位置まで「１」が入力され、それ以降には「０」が入力されることになる。一方、論理積回路３５１乃至３５６の左側の入力には、ｍａｘＬの示す位置まで「１」が入力され、それ以降には「０」が入力されているため、論理積回路３５１乃至３５６の出力としては、ｍａｘＬとｓｆｔＬのうち小さい方の値の示す位置まで「１」が出力され、それ以降は「０」が出力されることになる。
【０１０１】
論理積回路３６１乃至３６６には論理積回路３５１乃至３５６の出力とＧｅ生成部３１１乃至３１６の出力とが入力されるため、論理積回路３６１乃至３６６の出力としては、ｍａｘＬ、ｓｆｔＬまたはｇｅＬのうち最も小さい値の示す位置まで「１」が出力され、それ以降は「０」が出力されることになる。
【０１０２】
Ｌ生成部３７０は、論理積回路３６１乃至３６６の出力からシンボル長Ｌを生成するものである。すなわち、このＬ生成部３７０は、論理積回路３６１乃至３６６の出力を順番に参照して、最初に「０」になるものの番号をＬとして出力する。ただし、全ての出力が「１」の場合には、Ｌとして「６」が出力される。
【０１０３】
ｉｓＬＰＳ生成部３８０は、Ｌ番目のシンボルがＬＰＳであるか否かを示すｉｓＬＰＳを生成するものである。すなわち、ｉｓＬＰＳ生成部３８０は、Ｇｅ［Ｌ］をｉｓＬＰＳに設定する。
【０１０４】
セレクタ３９０は、ＳｆｔＭＰＳ判定部３３１乃至３３３およびｓｆｔＬ判定部３３４乃至３３６の出力を利用して、Ｌ番目のシンボルにおいてシフトが発生しているか否かを示すＳｆｔＭＰＳ［Ｌ］を選択するものである。
【０１０５】
なお、コンテキストインデックスが全て異なる場合、ｍａｘＬは「３」以下に設定されて、後続シンボル復号情報テーブル１１４は参照されないため、コンテキストインデックスが異なる場合と回路を共通化することができる。
【０１０６】
図２０は、本発明の実施の形態におけるＭＰＳ再正規化処理部１６１の一構成例を示す図である。このＭＰＳ再正規化処理部１６１は、セレクタ４３０および４４０を備えている。セレクタ４３０はｏｆｆｓｅｔを再正規化するためのものであり、セレクタ４４０はｒａｎｇｅを再正規化するためのものである。
【０１０７】
セレクタ４３０の右側には９ビットのｏｆｆｓｅｔが入力される。また、セレクタ４３０の左側には、４１０に示すように、ｏｆｆｓｅｔの下位８ビットと、そのＬＳＢ側にｓｔｒｅａｍの最上位ビットが付加されたものが入力される。ｓｆｔが「０」を示していればｏｆｆｓｅｔがそのまま出力され、ｓｆｔが「１」を示していればｏｆｆｓｅｔは左シフトされてＬＳＢ側にストリームから符号化ビットが入力される。
【０１０８】
なお、ｓｔｒｅａｍ［６：０］には、復号中のストリームの現在位置のビットから７ビット先までが割り当てられており、ＭＳＢ（ｓｔｒｅａｍ［６］）から順番に割り当てられている。
【０１０９】
セレクタ４４０の右側には９ビットのｒａｎｇｅＭＰＳが入力される。また、セレクタ４４０の左側には、４２０に示すように、ｒａｎｇｅＭＰＳの下位８ビットと、そのＬＳＢ側に１ビットの「０」が付加されたものが入力される。ｓｆｔが「０」を示していればｒａｎｇｅＭＰＳがそのまま出力され、ｓｆｔが「１」を示していればｒａｎｇｅＭＰＳは左シフトされてＬＳＢ側に「０」が補填される。
【０１１０】
図２１は、本発明の実施の形態におけるＬＰＳ再正規化処理部１６２の一構成例を示す図である。このＬＰＳ再正規化処理部１６２は、セレクタ５２０および５４０を備えている。セレクタ５２０はｏｆｆｓｅｔを再正規化するためのものであり、セレクタ５４０はｒａｎｇｅを再正規化するためのものである。
【０１１１】
セレクタ５２０には、５１１乃至５１７に示すように、９ビットのｏｆｆｓｅｔを１ビットから７ビット左シフトしてＬＳＢ側にストリームから符号化ビットを補填したものが入力される。すなわち、ｒａｎｇｅＬＰＳ［７］が１ビットの「１」である場合にはｏｆｆｓｅｔを１ビット左シフトしてＬＳＢ側に符号化ビットを１ビット補填したものが選択され、ｒａｎｇｅＬＰＳ［７：６］が２ビットの「０１」である場合にはｏｆｆｓｅｔを２ビット左シフトしてＬＳＢ側に符号化ビットを２ビット補填したものが選択され、ｒａｎｇｅＬＰＳ［７：５］が３ビットの「００１」である場合にはｏｆｆｓｅｔを３ビット左シフトしてＬＳＢ側に符号化ビットを３ビット補填したものが選択され、ｒａｎｇｅＬＰＳ［７：４］が４ビットの「０００１」である場合にはｏｆｆｓｅｔを４ビット左シフトしてＬＳＢ側に符号化ビットを４ビット補填したものが選択され、ｒａｎｇｅＬＰＳ［７：３］が５ビットの「００００１」である場合にはｏｆｆｓｅｔを５ビット左シフトしてＬＳＢ側に符号化ビットを５ビット補填したものが選択され、ｒａｎｇｅＬＰＳ［７：２］が６ビットの「０００００１」である場合にはｏｆｆｓｅｔを６ビット左シフトしてＬＳＢ側に符号化ビットを６ビット補填したものが選択され、ｒａｎｇｅＬＰＳ［７：１］が７ビットの「００００００１」である場合にはｏｆｆｓｅｔを７ビット左シフトしてＬＳＢ側に符号化ビットを７ビット補填したものが選択される。
【０１１２】
セレクタ５４０には、５３１乃至５３７に示すように、９ビットのｒａｎｇｅＬＰＳを１ビットから７ビット左シフトしてＬＳＢ側に「０」を補填したものが入力される。すなわち、ｒａｎｇｅＬＰＳ［７］が１ビットの「１」である場合にはｒａｎｇｅＬＰＳを１ビット左シフトしてＬＳＢ側に「０」を１ビット補填したものが選択され、ｒａｎｇｅＬＰＳ［７：６］が２ビットの「０１」である場合にはｒａｎｇｅＬＰＳを２ビット左シフトしてＬＳＢ側に「０」を２ビット補填したものが選択され、ｒａｎｇｅＬＰＳ［７：５］が３ビットの「００１」である場合にはｒａｎｇｅＬＰＳを３ビット左シフトしてＬＳＢ側に「０」を３ビット補填したものが選択され、ｒａｎｇｅＬＰＳ［７：４］が４ビットの「０００１」である場合にはｒａｎｇｅＬＰＳを４ビット左シフトしてＬＳＢ側に「０」を４ビット補填したものが選択され、ｒａｎｇｅＬＰＳ［７：３］が５ビットの「００００１」である場合にはｒａｎｇｅＬＰＳを５ビット左シフトしてＬＳＢ側に「０」を５ビット補填したものが選択され、ｒａｎｇｅＬＰＳ［７：２］が６ビットの「０００００１」である場合にはｒａｎｇｅＬＰＳを６ビット左シフトしてＬＳＢ側に「０」を６ビット補填したものが選択され、ｒａｎｇｅＬＰＳ［７：１］が７ビットの「００００００１」である場合にはｒａｎｇｅＬＰＳを７ビット左シフトしてＬＳＢ側に「０」を７ビット補填したものが選択される。
【０１１３】
図２２は、本発明の実施の形態における二値データ一括変換部１８０の一構成例を示す図である。この二値データ一括変換部１８０は、セレクタ６７０、６８０および６９０を備えている。セレクタ６７０は全てのシンボルがＭＰＳである場合のセレクタであり、セレクタ６８０はＬＰＳを含む場合のセレクタである。また、セレクタ６９０はセレクタ６７０および６８０の何れか一方の出力を選択するセレクタである。
【０１１４】
セレクタ６７０には、６１１乃至６１６に示すように、ｖａｌＭＰＳ［０〜２］を組み合わせたビット列が入力される。すなわち、Ｌが「０」である場合には５ビットの「０」のＬＳＢ側にｖａｌＭＰＳ［０］の反転値を付加した値が選択され、Ｌが「１」である場合には４ビットの「０」のＬＳＢ側にｖａｌＭＰＳ［１］の反転値およびｖａｌＭＰＳ［０］を順次付加した値が選択され、Ｌが「２」である場合には３ビットの「０」のＬＳＢ側にｖａｌＭＰＳ［２］の反転値、ｖａｌＭＰＳ［１］およびｖａｌＭＰＳ［０］を順次付加した値が選択され、Ｌが「３」である場合には２ビットの「０」のＬＳＢ側にｖａｌＭＰＳ［０］の反転値、ｖａｌＭＰＳ［２］、ｖａｌＭＰＳ［１］およびｖａｌＭＰＳ［０］を順次付加した値が選択され、Ｌが「４」である場合には１ビットの「０」のＬＳＢ側にｖａｌＭＰＳ［０］の反転値、ｖａｌＭＰＳ［０］、ｖａｌＭＰＳ［２］、ｖａｌＭＰＳ［１］およびｖａｌＭＰＳ［０］を順次付加した値が選択され、Ｌが「５」である場合にはｖａｌＭＰＳ［０］の反転値のＬＳＢ側に、２つのｖａｌＭＰＳ［０］、１つのｖａｌＭＰＳ［２］、ｖａｌＭＰＳ［１］およびｖａｌＭＰＳ［０］を順次付加した値が選択される。
【０１１５】
ここで、コンテキストインデックスが全て同じときには、ｖａｌＭＰＳ［１］にｖａｌＭＰＳ［０］が、ｖａｌＭＰＳ［２］にｖａｌＭＰＳ［０］がそれぞれ設定されるものとする。ｖａｌＭＰＳ［０］が反転して更新される状況が発生するためにはＬＰＳが続けて２回復号される必要があり、全てＭＰＳの場合、ＭＰＳが連続した後にＬＰＳが１個の場合、ＬＰＳが１個のみの場合の３つの場合を想定する本発明の実施の形態では、途中でｖａｌＭＰＳ［０］が更新されないことが保証されている。
【０１１６】
また、コンテキストインデックスが全て異なるときには、ｖａｌＭＰＳ［ｉ］（ｉ＝０，１，２）にそれぞれ別のコンテキストから設定され、一度しか参照されないため、ｖａｌＭＰＳ［ｉ］が更新されることを考慮しなくてよい。また、このときは、ｍａｘＬを「３」以下に設定することでＬが「２」以下になるため、コンテキストインデックスが全て同じ場合と回路を共通化できる。
【０１１７】
セレクタ６８０には、６２１乃至６２６に示すように、ｖａｌＭＰＳ［０〜２］を組み合わせたビット列が入力される。すなわち、Ｌが「０」である場合には５ビットの「０」のＬＳＢ側にｖａｌＭＰＳ［０］を付加した値が選択され、Ｌが「１」である場合には４ビットの「０」のＬＳＢ側にｖａｌＭＰＳ［１］およびｖａｌＭＰＳ［０］を順次付加した値が選択され、Ｌが「２」である場合には３ビットの「０」のＬＳＢ側にｖａｌＭＰＳ［２］、ｖａｌＭＰＳ［１］およびｖａｌＭＰＳ［０］を順次付加した値が選択され、Ｌが「３」である場合には２ビットの「０」のＬＳＢ側にｖａｌＭＰＳ［０］、ｖａｌＭＰＳ［２］、ｖａｌＭＰＳ［１］およびｖａｌＭＰＳ［０］を順次付加した値が選択され、Ｌが「４」である場合には１ビットの「０」のＬＳＢ側に２つのｖａｌＭＰＳ［０］、１つのｖａｌＭＰＳ［２］、ｖａｌＭＰＳ［１］およびｖａｌＭＰＳ［０］を順次付加した値が選択され、Ｌが「５」である場合には３つのｖａｌＭＰＳ［０］のＬＳＢ側に、１つのｖａｌＭＰＳ［２］、ｖａｌＭＰＳ［１］およびｖａｌＭＰＳ［０］を順次付加した値が選択される。
【０１１８】
セレクタ６９０は、ｉｓＬＰＳが「Ｙｅｓ」であればセレクタ６８０の出力を選択し、ｉｓＬＰＳが「Ｎｏ」であればセレクタ６７０の出力を選択する。セレクタ６９０の出力はＯｕｔ＿ｄａｔａとして出力され、ＬはＯｕｔ＿ｌｅｎｇｔｈとして出力される。Ｏｕｔ＿ｄａｔａとＯｕｔ＿ｌｅｎｇｔｈは、多値化処理部２４へ供給されるとｂｉｎＶａｌ［ｉ］＝ｏｕｔ＿ｄａｔａ［ｉ］（ｉ＝０，...，Ｏｕｔ＿ｌｅｎｇｔｈ）のＯｕｔ＿ｌｅｎｇｔｈ＋１個の二値信号として処理される。なお、Ｏｕｔ＿ｄａｔａ［ｉ］はＯｕｔ＿ｄａｔａのＬＳＢを０番目としてインデックスｉによって各ビットの値を示す。
【０１１９】
図２３は、本発明の実施の形態におけるコンテキスト変数更新値一括計算部１９０の一構成例を示す図である。このコンテキスト変数更新値一括計算部１９０は、シンボル状態判定部７１１乃至７１４と、ｐＳｔａｔｅＩｄｘ変換部７２１乃至７２４と、ｐＳｔａｔｅＩｄｘ変換部７３１乃至７３４と、セレクタ７４１乃至７４４および７５１乃至７５４を備える。
【０１２０】
シンボル状態判定部７１１乃至７１４は、ＬＰＳの出現確率の推定値が最も大きいｐＳｔａｔｅＩｄｘ＝０のときにＬＰＳが復号されたならばＬＰＳのシンボルが優勢になったと判断してｖａｌＭＰＳを反転させるための制御信号を生成するものである。
【０１２１】
ｐＳｔａｔｅＩｄｘ変換部７２１乃至７２４は、図２８の遷移テーブルｔｒａｎｓＩｄｘＬＰＳを満たすようにｐＳｔａｔｅＩｄｘを変換するものである。また、ｐＳｔａｔｅＩｄｘ変換部７３１乃至７３４は、図２８の遷移テーブルｔｒａｎｓＩｄｘＭＰＳを満たすようにｐＳｔａｔｅＩｄｘを変換するものである。
【０１２２】
セレクタ７４１乃至７４４は、ｐＳｔａｔｅＩｄｘの更新値を選択するものである。すなわち、セレクタ７４１は、Ｌが「０」で且つｉｓＬＰＳが「Ｙｅｓ」の場合にはｐＳｔａｔｅＩｄｘ変換部７２１を、それ以外の場合にはｐＳｔａｔｅＩｄｘ変換部７３１をｐＳｔａｔｅＩｄｘ［０］の更新値として選択する。また、セレクタ７４２は、Ｌが「１」で且つｉｓＬＰＳが「Ｙｅｓ」の場合にはｐＳｔａｔｅＩｄｘ変換部７２２を、それ以外の場合にはｐＳｔａｔｅＩｄｘ変換部７３２をｐＳｔａｔｅＩｄｘ［１］の更新値として選択する。また、セレクタ７４３は、Ｌが「２」で且つｉｓＬＰＳが「Ｙｅｓ」の場合にはｐＳｔａｔｅＩｄｘ変換部７２３を、それ以外の場合にはｐＳｔａｔｅＩｄｘ変換部７３３をｐＳｔａｔｅＩｄｘ［２］の更新値として選択する。また、セレクタ７４４は、Ｌが「３」で且つｉｓＬＰＳが「Ｙｅｓ」の場合にはｐＳｔａｔｅＩｄｘ変換部７２４を、それ以外の場合にはｐＳｔａｔｅＩｄｘ変換部７３４をｐＳｔａｔｅＩｄｘ３４５の更新値として選択する。
【０１２３】
セレクタ７５１乃至７５４は、ｖａｌＭＰＳの更新値を選択するものである。すなわち、セレクタ７５１は、シンボル状態判定部７１１の判定結果が「Ｙｅｓ」であればｖａｌＭＰＳ［０］の反転値を、「Ｎｏ」であればｖａｌＭＰＳ［０］の値をｖａｌＭＰＳ［０］の更新値として選択する。また、セレクタ７５２は、シンボル状態判定部７１２の判定結果が「Ｙｅｓ」であればｖａｌＭＰＳ［１］の反転値を、「Ｎｏ」であればｖａｌＭＰＳ［１］の値をｖａｌＭＰＳ［１］の更新値として選択する。また、セレクタ７５３は、シンボル状態判定部７１３の判定結果が「Ｙｅｓ」であればｖａｌＭＰＳ［２］の反転値を、「Ｎｏ」であればｖａｌＭＰＳ［２］の値をｖａｌＭＰＳ［２］の更新値として選択する。また、セレクタ７５４は、シンボル状態判定部７１４の判定結果が「Ｙｅｓ」であればｖａｌＭＰＳ［０］の反転値を、「Ｎｏ」であればｖａｌＭＰＳ［０］の値をｖａｌＭＰＳ３４５の更新値として選択する。
【０１２４】
ここで、コンテキストインデックスが全て異なるときには、ｃｔｘＩｄｘ［ｉ］（ｉ＝０，１，２）の示すコンテキスト変数が、それぞれｐＳｔａｔｅＩｄｘ［ｉ］およびｖａｌＭＰＳ［ｉ］（ｉ＝０，１，２）に対応し、Ｏｕｔ＿ｐＳｔａｔｅＩｄｘ［ｉ］およびＯｕｔ＿ｖａｌＭＰＳ［ｉ］（ｉ＝０，．．，Ｌ）がｃｔｘＩｄｘ［ｉ］（ｉ＝０，．．，Ｌ）の示すコンテキスト変数の更新値として使用される。しかし、ｉ＞ＬのＯｕｔ＿ｐＳｔａｔｅＩｄｘ［ｉ］およびＯｕｔ＿ｖａｌＭＰＳ［ｉ］は更新値としては使用されず、ｃｔｘＩｄｘ［ｉ］（ｉ＞Ｌ）の示すコンテキスト変数は更新されない。
【０１２５】
また、コンテキストインデックスが全て同じときには、ｃｔｘＩｄｘ［０］の示すコンテキスト変数のみが使用されるため、ｐＳｔａｔｅＩｄｘ［０］およびｖａｌＭＰＳ［０］にそのコンテキスト変数が設定される。ｐＳｔａｔｅＩｄｘ［０］は一括復号できたＭＰＳの数によって遷移回数が異なるため、ｐＳｔａｔｅＩｄｘ変換部１４１乃至１４３でそれぞれについて計算し、ｐＳｔａｔｅＩｄｘセレクタ１５０で選択したｐＳｔａｔｅ３４５に基づいて更新値を求める。Ｏｕｔ＿ｐＳｔａｔｅＩｄｘ３４５およびＯｕｔ＿ｖａｌＭＰＳ３４５のみがｃｔｘＩｄｘ［０］の示すコンテキスト変数の更新値として使用される。
【０１２６】
このように、本発明の実施の形態によれば、後続シンボル復号情報テーブル１１４を設けることにより、先頭のシンボルを復号する際のｃｏｄＩＲａｎｇｅとｐＳｔａｔｅＩｄｘとから、ｃｏｄＩＲａｎｇｅＭＰＳ、ｃｏｄＩＲａｎｇｅＬＰＳおよびシフトを発生しないシンボル長ｓｆｔＬをテーブル参照により取得することができる。また、全てのシンボルについてテーブル参照を行わずに、初めのシンボルについてはシンボル復号情報計算部１１１乃至１１３のカスケード接続により求め、後続のシンボルについてのみテーブル参照することにより、後続シンボル復号情報テーブル１１４に必要な容量を削減することができる。
【０１２７】
ここで、後続シンボル復号情報テーブル１１４のハードウェア規模について考察する。必要なビット数は、ｓｆｔＬに３ビット、ｃｏｄＩＲａｎｇｅＭＰＳ［ｉ］に９ビット（レンジが０ｘ０００から０ｘ１ＦＦであるため）、ｃｏｄＩＲａｎｇｅＬＰＳ［ｉ］に８ビット（レンジが０ｘ１００から０ｘ１ＦＦであるため）となる。また、場合分けすると、ｐＳｔａｔｅＩｄｘが６４通りとｃｏｄＩＲａｎｇｅが２５６通りであるため、全１６３８４通りになる。
【０１２８】
ここで、図１５のように後続シンボルのみをテーブル化するのではなく、仮に６シンボル全てをテーブル化した場合、それに必要な容量は、
（３＋（９＋８）×６）×１６３８４＝２１０ＫＢ（キロバイト）
となる。
【０１２９】
しかし、ｓｆｔＬがｍａｘＬより小さいものについては、ｍａｘＬ個の情報は必要ない。例えば、ｓｆｔＬが「１」であるタプルの情報としては
３＋９＋８＝２０ビット
しか有効なデータがない。ｃｏｄＩＯｆｆｓｅｔ＝０として常にＭＰＳが復号される条件において再正規化処理でシフトが必要になるまでに復号できるシンボルの数を調べた結果が図２４である。すなわち、図２４は、常にＭＰＳが復号される場合であるｃｏｄＩＯｆｆｓｅｔ＝０の条件で、ｃｏｄＩＲａｎｇｅを０ｘ１００から０ｘ１ＦＦまで、ｐＳｔａｔｅＩｄｘを０から６３まで振ったとき、１６３８４通り（２の１４乗）の全てについて、一括復号可能な長さｓｆｔＬとｃｏｄＩｒａｎｇｅＭＰＳ［ｉ］、ｃｏｄＩｒａｎｇｅＬＰＳ［ｉ］（ｉ＝０，．．，ｓｆｔＬ）をテーブル化することを考えたとき、ｓｆｔＬごとにテーブルのタプルを分類して割合を求めた表である。
【０１３０】
これに基づいて有効なデータを計算すると
３×１６３８４＋（９＋８）×（３４２９＋２７５７×２＋１６１１×３＋
１１７４×４＋８４６×５＋６５６７×６）＝約１３５ＫＢ
であり、これは全体の約６５％である。一般に、有効でないデータを任意の値として論理回路でテーブルを作成するとハードウェア規模は小さくなる。実際に、この例では、タプル間で同じ値が連続するものが多いため、効率良く論理圧縮されてハードウェア規模を小さくすることができる。
【０１３１】
また、図２４より、一括復号可能な長さとして３シンボルまでで、タプル数が半分程度（４７．６％）を占めることが分かる。そこで、後続シンボルのみをテーブル化することにより、さらにハードウェア規模を小さくすることを考える。テーブル化せずに６シンボル全てをカスケード接続により求めようとすると、依存関係のある計算のため、１サイクルで計算を完了するにはとても遅延が大きく最高動作周波数が下がり過ぎるという問題がある。図１５のように先頭の３シンボルをカスケードで計算し、残りの３シンボルをテーブル参照した場合、テーブルに必要な有効データは、
３×１６３８４
＋（９＋８）×（１１７４＋８４６×２＋６５６７×３）＝約５３ＫＢ
となり、全てをテーブル化した場合の約２５％で済むことが分かる。
【０１３２】
本発明の実施の形態においては、再正規化処理が発生しないとき、すなわち左シフトが発生しないときに限って複数のシンボルを一括して復号処理するため、再正規化が起こるときは１回のみで、ＭＰＳのときはシフト回数１回で、ＬＰＳのときはシフト回数１乃至７回であり、符号化データの入力は最大でも７ビットである。そのため、符号化データ入力の回路は７ビットまでのシフトに対応できればよい。従来のような、ＭＰＳかＬＰＳかの区別なく２シンボルを必ず復号するような回路においては、符号化データ入力の回路は１４ビットまでのシフトに対応しなくてはならなかった。この点からも、本発明の実施の形態は、複雑でなく小規模な回路で実装可能であることが分かる。
【０１３３】
なお、本発明の実施の形態において、ＭＰＳが連続する状態のみを複数シンボル一括復号の対象とするのは以下の理由による。すなわち、シフトなしで複数のＭＰＳが復号できるということは、符号１ビットに複数のＭＰＳが圧縮されていることを意味し、１ビット以下の符号である。実際、ｐＳｔａｔｅＩｄｘが「６２」以下のときは最大３５シンボルを１ビットに収めることが可能である。一方、ＬＰＳの場合は必ず１乃至７ビットの左シフトを伴うため、必ず１ビット以上の符号である。このようにＣＡＢＡＣでは同じビットレートのストリームでも上手くＭＰＳが連続するように符号化すればより多くの情報を含めることができる。そのため、そのようなストリームではＣＡＢＡＣ復号するシンボル数が増大し、１度に１シンボルしか復号できない符号処理装置では処理サイクル数もシンボル数に比例して増大してしまう。
【０１３４】
特に、ビットレートの制約がある場合には、符号ビット当たりの処理サイクルを下げるようにする方が、処理サイクル数のばらつきが少なくなり平滑化される。そのため、符号を処理するスピードのばらつきも平滑化されるため、符号取得のために瞬間的に大量のデータ転送を要求することなく、高効率な復号処理を実現することができる。
【０１３５】
図２５はｃｏｄＩＯｆｆｓｅｔを０ｘ０００から０ｘ１ＦＦまで振って、ＬＰＳが復号されてＭＰＳが連続でなくなることも考慮した実際の復号において、起こり得る全ての場合の全８３８８６０８（２の２３乗）通りにおいて一括復号可能な長さＬを求めて、Ｌごとに起こり得る数を分類して割合を求めた表である。
【０１３６】
この図２５から、一括復号可能な長さ１乃至６までの割合は７６．７％であり、全体の４分３以上に達することが分かる。すなわち、本発明の実施の形態のように６シンボル程度を一括して処理できると、約４分の３は１回で処理することができ、残りの約４分の１は数回に分割することで処理できることになる。１ビットに３５シンボルが符号化されている場合でも６回で処理することができる。これにより、十分に平滑化の効果が期待できることが分かる。
【０１３７】
なお、本発明の実施の形態は本発明を具現化するための一例を示したものであり、以下に示すように特許請求の範囲における発明特定事項とそれぞれ対応関係を有するが、これに限定されるものではなく本発明の要旨を逸脱しない範囲において種々の変形を施すことができる。
【０１３８】
すなわち、請求項１において、復号情報テーブルは例えば後続シンボル復号情報テーブル１１４に対応する。また、シンボル数決定手段は例えばＬＰＳ探索部１２０に対応する。また、出力手段は例えば二値データ一括変換部１８０に対応する。
【０１３９】
また、請求項２において、復号情報生成手段は例えばシンボル復号情報計算部１１１乃至１１３に対応する。
【０１４０】
また、請求項３において、コンテキスト変数テーブルは例えばコンテキスト変数テーブル保持部２３に対応する。また、復号制御手段は例えば復号制御回路２００に対応する。
【０１４１】
なお、本発明の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。
【図面の簡単な説明】
【０１４２】
【図１】本発明の実施の形態におけるＣＡＢＡＣ復号器２０の一構成例を示す図である。
【図２】本発明の実施の形態における復号処理手順の一例を示す図である。
【図３】本発明の実施の形態におけるコンテキスト変数取得処理（ステップＳ８１０）の手順の一例（ｃｔｘＩｄｘが全て異なる場合）を示す図である。
【図４】本発明の実施の形態におけるコンテキスト変数取得処理（ステップＳ８１０）の手順の他の例（ｃｔｘＩｄｘが全て等しい場合）を示す図である。
【図５】本発明の実施の形態におけるレンジ生成処理（ステップＳ８２０）の手順の一例を示す図である。
【図６】本発明の実施の形態におけるＬＰＳ検索処理（ステップＳ８３０）の手順の一例を示す図である。
【図７】本発明の実施の形態におけるコンテキスト変数および内部状態変数の更新処理（ステップＳ８４０）の手順の一例（ｃｔｘＩｄｘが全て異なる場合）を示す図である。
【図８】本発明の実施の形態におけるコンテキスト変数および内部状態変数の更新処理（ステップＳ８４０）の手順の他の例（ｃｔｘＩｄｘが全て等しい場合）を示す図である。
【図９】本発明の実施の形態におけるＬＰＳの場合の更新処理（ステップＳ８５０）の手順の一例を示す図である。
【図１０】本発明の実施の形態におけるＭＰＳの場合の更新処理（ステップＳ８４３、Ｓ８６０）の手順の一例を示す図である。
【図１１】本発明の実施の形態におけるＬＰＳの場合の再正規化処理（ステップＳ８７０）の手順の一例を示す図である。
【図１２】本発明の実施の形態におけるＭＰＳの場合の再正規化処理（ステップＳ８８０）の手順の一例を示す図である。
【図１３】本発明の実施の形態におけるシンボル出力処理（ステップＳ８９０）の手順の一例を示す図である。
【図１４】本発明の実施の形態におけるＣＡＢＡＣ復号器の一構成例を示す図である。
【図１５】本発明の実施の形態における一括復号処理回路１００の一構成例である。
【図１６】本発明の実施の形態におけるシンボル復号情報計算部１１０の一構成例を示す図である。
【図１７】本発明の実施の形態におけるｐＳｔａｔｅＩｄｘ変換部１４０の一構成例を示す図である。
【図１８】本発明の実施の形態における後続シンボル復号情報テーブル１１４の等価回路例を示す図である。
【図１９】本発明の実施の形態におけるＬＰＳ探索部１２０の一構成例を示す図である。
【図２０】本発明の実施の形態におけるＭＰＳ再正規化処理部１６１の一構成例を示す図である。
【図２１】本発明の実施の形態におけるＬＰＳ再正規化処理部１６２の一構成例を示す図である。
【図２２】本発明の実施の形態における二値データ一括変換部１８０の一構成例を示す図である。
【図２３】本発明の実施の形態におけるコンテキスト変数更新値一括計算部１９０の一構成例を示す図である。
【図２４】本発明の実施の形態におけるテーブル化の際のタプル数を分類した表である。
【図２５】本発明の実施の形態における一括復号可能な長さＬの発生数を分類した表である。
【図２６】ＣＡＢＡＣにおける復号処理の概念を示す図である。
【図２７】ＣＡＢＡＣにおけるテーブルｒａｎｇｅＴａｂＬＰＳ［ｐＳｔａｔｅＩｄｘ］［ｑＣｏｄＩＲａｎｇｅＩｄｘ］の内容を示す図である。
【図２８】ＣＡＢＡＣにおける遷移テーブルｔｒａｎｓＩｄｘＭＰＳおよびｔｒａｎｓＩｄｘＭＰＳの内容を示す図である。
【図２９】ＣＡＢＡＣにおける従来の二値算術符号復号処理部２１の構成例を示す図である。
【図３０】ＣＡＢＡＣにおける従来の再正規化処理部２５の構成例を示す図である。
【図３１】ＣＡＢＡＣにおける従来の二値算術符号復号処理の手順を示す図である。
【図３２】ＣＡＢＡＣにおける従来のＬＰＳ時の更新処理の手順を示す図である。
【図３３】ＣＡＢＡＣにおける従来のＭＰＳ時の更新処理の手順を示す図である。
【図３４】ＣＡＢＡＣにおける従来の再正規化処理の手順を示す図である。
【図３５】ＣＡＢＡＣにおける従来の二値算術符号復号処理手順の変形例を示す図である。
【符号の説明】
【０１４３】
１０  符号列入力部
２０  ＣＡＢＡＣ復号器
２１  二値算術符号復号処理部
２２  コンテキストインデックス計算処理部
２３  コンテキスト変数テーブル保持部
２４  多値化処理部
２５  再正規化処理部
１００  一括復号処理回路
１１０〜１１３  シンボル復号情報計算部
１１４  後続シンボル復号情報テーブル
１１８  ｒａｎｇｅＴａｂＬＰＳテーブル
１１９  減算器
１２０  ＬＰＳ探索部
１３１  ｃｏｄＩＲａｎｇｅＭＰＳセレクタ
１３２  ｃｏｄＩＲａｎｇｅＬＰＳセレクタ
１４０〜１４３  ｐＳｔａｔｅＩｄｘ変換部
１５０  ｐＳｔａｔｅＩｄｘセレクタ
１６１  ＭＰＳ再正規化処理部
１６２  ＬＰＳ再正規化処理部
１７０  Ｒａｎｇｅ／Ｏｆｆｓｅｔセレクタ
１８０  二値データ一括変換部
１９０  コンテキスト変数更新値一括計算部
２００  復号制御回路
２１１〜２１５  ｐＳｔａｔｅＩｄｘ変換部
２２１〜２２６  シンボル復号情報計算部
２３０  ｓｆｔＬ生成部
３１１〜３１６  Ｇｅ生成部
３２１〜３２６  ｍａｘＬ判定部
３３１〜３３３  ＳｆｔＭＰＳ判定部
３３４〜３３６  ｓｆｔＬ判定部
３７０  Ｌ生成部
３８０  ｉｓＬＰＳ生成部
３９０、４３０、４４０、５２０、５４０、６７０、６８０、６９０  セレクタ
７１１〜７１４  シンボル状態判定部
７２１〜７２４、７３１〜７３４  ｐＳｔａｔｅＩｄｘ変換部
７４１〜７４４、７５１〜７５４  セレクタ
【図１】
0004893657.tif 000002
【図２】
0004893657.tif 000003
【図３】
0004893657.tif 000004
【図４】
0004893657.tif 000005
【図５】
0004893657.tif 000006
【図６】
0004893657.tif 000007
【図７】
0004893657.tif 000008
【図８】
0004893657.tif 000009
【図９】
0004893657.tif 000010
【図１０】
0004893657.tif 000011
【図１１】
0004893657.tif 000012
【図１２】
0004893657.tif 000013
【図１３】
0004893657.tif 000014
【図１４】
0004893657.tif 000015
【図１５】
0004893657.tif 000016
【図１６】
0004893657.tif 000017
【図１７】
0004893657.tif 000018
【図１８】
0004893657.tif 000019
【図１９】
0004893657.tif 000020
【図２０】
0004893657.tif 000021
【図２１】
0004893657.tif 000022
【図２２】
0004893657.tif 000023
【図２３】
0004893657.tif 000024
【図２４】
0004893657.tif 000025
【図２５】
0004893657.tif 000026
【図２６】
0004893657.tif 000027
【図２７】
0004893657.tif 000028
【図２８】
0004893657.tif 000029
【図２９】
0004893657.tif 000030
【図３０】
0004893657.tif 000031
【図３１】
0004893657.tif 000032
【図３２】
0004893657.tif 000033
【図３３】
0004893657.tif 000034
【図３４】
0004893657.tif 000035
【図３５】
0004893657.tif 000036