(57)【要約】【課題】ＣＡＢＡＣで符号化されたデータを復号化する際の算術復号処理の高速化を可能にする復号化装置及びその方法を提供する。【解決手段】コンテクスト適応型２値算術符号化方式によってシンタクスの多値情報が２値データに変換された後に算術符号化された符号化データを入力とし、元の多値情報に復号化する算術復号化装置であって、現在の２値データを復元中に、「次の次の識別子コード」候補及び「次の次の識別子コード」候補に対応する「コンテクストインデクス」候補とを同サイクル中に並列に算出し、次のサイクルで「次の識別子コード」、次の識別子コードに対応するコンテクストインデクス候補及び「コンテクストインデクス」候補に対応する「確率変数」候補を別の同サイクル中に並列に算出し、現在の２値データの復元結果が判明した時点で、それに応じていずれかの算出結果を選択することを特徴とする。【選択図】図１
2008289125.tif 000002
【特許請求の範囲】
【請求項１】
シンタクスの多値情報を２値データに変換した後にコンテクスト適応型２値算術符号化方式で算術符号化することによって得られる符号化データを復号化する算術復号化装置であって、
前記符号化データを復号化して２値データを出力する２値データ復号化手段と、
２値データが属するシンタクスエレメントに一意に対応する識別子コードを入力として、次の識別子コードを算出する識別子コード算出手段と、
前記識別子コードと隣接情報によって分類される２値データに対して、分類毎につけられる識別番号であるコンテクストインデクスの中から、前記識別子コード算出手段で算出された次の識別子コードに対応するコンテクストインデクスを算出するコンテクストインデクス算出手段と、
コンテクストインデクスに対応する確率変数を格納した確率変数テーブルを有し、前記コンテクストインデクス算出手段で算出されたコンテクストインデクスに対応する確率変数を出力する確率変数出力手段とを備え、
前記２値データ復号化手段が１ビットの２値データを出力する処理サイクルにおいて、
前記２値データ復号化手段は、前記確率変数出力手段から出力された確率変数を用いて前記復号化をし、
前記識別子コード算出手段による次の識別子コードの算出と前記コンテクストインデクス算出手段によるコンテクストインデクスの算出とは、前記処理サイクル内に実行され、
さらに、前記コンテクストインデクスに対応する確率変数を出力する処理は、前記処理サイクル内に実行され、
前記識別子コード算出手段による次の識別子コードの算出と前記コンテクストインデクス算出手段によるコンテクストインデクスの算出とからなる処理サイクルと、前記確率変数出力手段が確率変数を出力する処理サイクルと、前記２値データ復号化手段が復号化する処理サイクルとは、３段のパイプラインとして、同時に実行される
ことを特徴とする算術復号化装置。
【請求項２】
前記識別子コード算出手段は、入力の識別子コードに対応する２値データが“０”である場合の前記次の識別子コードと、入力の識別子コードに対応する２値データが“１”である場合の前記次の識別子コードとを出力する
ことを特徴とする請求項１に記載の算術復号化装置。
【請求項３】
前記識別子コード及び前記次の識別子コードは、前記多値情報を構成する２値データの並びにおける２値データの位置を指定する情報であるｂｉｎＩｄｘを含む
ことを特徴とする請求項１に記載の算術復号化装置。
【請求項４】
前記識別子コード算出手段は、さらに、現在の処理サイクルで復号中の２値データに対応する現在の識別子コードが入力されることを特徴とする
請求項１〜３のいずれか１項に記載の算術復号化装置。
【請求項５】
前記コンテクストインデクス算出手段は、
現在復号中の２値データが“０”かつ次に復号化される２値データが“０”である場合、現在復号中の２値データが“０”かつ次に復号化される２値データが“１”である場合、現在復号中の２値データが“１”かつ次に復号化される２値データが“０”である場合または現在復号中の２値データが“１”かつ次に復号化される２値データが“１”である場合を示す２ビットの情報を持つ、次の識別子コードが入力される
ことを特徴とする請求項１〜４のいずれか１項に記載の算術復号化装置。
【請求項６】
前記コンテクストインデクス算出手段は、
さらに、前記次の識別子コードの１つ前の識別子コードと、現在復号中の２値データに対応する現在の識別子コードが入力される
ことを特徴とする請求項５に記載の算術復号化装置。
【請求項７】
前記識別子コード算出手段は、
前記２値データ復号化手段により現在の処理サイクルで復号された２値データ“０”と次の処理サイクルで復号化される次の２値データ“０”または“１”とに対応する識別子コードが入力される場合の、次の次の処理サイクルで復号化される次の次の２値データに対応する第１の次の識別子コードを算出し、さらに、
前記２値データ復号化手段により現在の処理サイクルで復号された２値データ“１”と次の処理サイクルで復号化される次の２値データ“０”または“１”とに対応する識別子コードが入力される場合の、次の次の処理サイクルで復号化される次の次の２値データに対応する第２の次の識別子コードを算出し、
前記２値データ復号化手段から現在の処理サイクルで復号され出力された２値データに対応して、算出した前記第１または第２の次の識別子コードを選択して出力する
ことを特徴とする請求項１〜６のいずれか１項に記載の算術復号化装置。
【請求項８】
前記識別子コード算出手段は、
現在の処理サイクルで復号され出力された２値データが“０”の場合、（２値データ、次の２値データ）＝（０、０）及び（０、１）に対応する前記第１の次の識別子コードを選択し、選択した前記第１の次の識別子コードを次の識別子コードとして出力し、
現在の処理サイクルで復号され出力された２値データが“１”の場合、（２値データ、次の２値データ）＝（１、０）及び（１、１）に対応する前記第２の次の識別子コードを選択し、選択した前記第２の次の識別子コードを次の識別子コードとして出力する
ことを特徴とする請求項７に記載の算術復号化装置。
【請求項９】
前記コンテクストインデクス算出手段は、
現在の処理サイクル及び次の処理サイクルにおいて、（現在の処理サイクルで復号中の２値データ、次の処理サイクルで復号される２値データ）＝（０、０）を出力する場合に、次の次に復号化される次の次の２値データに対応するコンテクストインデクスと、（０、１）を出力した場合に次の次に復号化される次の次の２値データに対応するコンテクストインデクスと、（１、０）を出力したとき次の次に復号化される次の次の２値データに対応するコンテクストインデクスと、（１、１）を出力したとき次の次に復号化される次の次の２値データに対応するコンテクストインデクスとの、４種類のコンテクストインデクスを算出した後、
現在の処理サイクルで前記２値データ復号化手段から出力された２値データに対応して、前記４種類のコンテクストインデクスの中から、（０、０）及び（０、１）に対応する２種類のコンテクストインデクス、または、（１、０）及び（１、１）に対応する２種類のコンテクストインデクスを選択して出力する
ことを特徴とする請求項１〜６のいずれか１項に記載の算術復号化装置。
【請求項１０】
前記確率変数出力手段は、
前記２値データ復号化手段が現在の処理サイクルで２値データ“０”を出力する場合に次の処理サイクルで復号化される２値データに対応する第１のコンテクストインデクスと、前記２値データ復号化手段が現在の処理サイクルで２値データ“１”を出力する場合に次の処理サイクルで復号化される２値データに対応する第２のコンテクストインデクスとが入力され、
前記第１のコンテクストインデクスに対応する第１の確率変数と、前記第２のコンテクストインデクスに対応する第２の確率変数との２種類の確率変数を出力し、
現在の処理サイクルで前記２値データ復号化手段から出力された２値データに対応して、前記２種類の確率変数から、２値データ“０”に対応する前記第１の確率変数、または、２値データ“１”に対応する前記第２の確率変数を選択して出力する
ことを特徴とする請求項１〜６のいずれか１項に記載の算術復号化装置。
【請求項１１】
前記２値データ復号化手段は、
前記復号化を実行するとともに、復号化の結果に対応する新たな確率変数と当該確率変数に対応するコンテクストインデクスを出力する復号化部と、
前記復号化部から出力された確率変数及びコンテクストインデクスを保持する確率変数レジスタと、
前記確率変数出力手段から出力された確率変数に対応するコンテクストインデクスと前記確率変数レジスタに保持されたコンテクストインデクスとを比較する比較器と、
前記比較器での比較結果が一致である場合に、前記確率変数出力手段から出力された確率変数及び前記確率変数レジスタに保持された確率変数のうち、前記確率変数レジスタに保持された確率変数を選択して前記復号化部に出力するセレクタとを有する
ことを特徴とする請求項１に記載の算術復号化装置。
【請求項１２】
前記確率変数レジスタは、先入れ先出し方式のパイプラインバッファである
ことを特徴とする請求項１１に記載の算術復号化装置。
【請求項１３】
前記算術復号化装置はさらに、
前記識別子コードの値が動画像における動きベクトルであるＭＶＤベクトルを示す場合に、
前記識別子コードを入力として、次のＭＶＤベクトルを示す識別子コードを算出するＭＶＤ算出手段と、
前記ＭＶＤ算出手段が算出した識別子コードを入力として、前記コンテクストインデクスを算出するＭＶＤコンテクストインデクス算出手段と、
前記コンテクストインデクス算出手段で算出されたコンテクストインデクス及び前記ＭＶＤコンテクストインデクス算出手段で算出されたＭＶＤコンテクストインデクスのうち、前記識別子コードの値に対応するものを選択するコンテクストインデクス選択手段とを備える
ことを特徴とする請求項１に記載の算術復号化装置。
【請求項１４】
前記ＭＶＤ算出手段に入力される、前記識別子コードが、
前記確率変数出力手段において、前記確率変数を出力するサイクルに存在する識別子コードである
ことを特徴とする請求項１３に記載の算術復号化装置。
【請求項１５】
前記算術復号化装置はさらに、
前記符号化データを含む１つのストリームを連続して供給すること、及び、複数のストリームを切り替えながら供給することを選択的に実行するストリーム供給手段を備え、
前記２値データ復号化手段は、前記ストリーム供給手段から供給されるストリームに対して、前記復号化を実行する
ことを特徴とする請求項１に記載の算術復号化装置。
【請求項１６】
シンタクスの多値情報を２値データに変換した後にコンテクスト適応型２値算術符号化方式で算術符号化することによって得られる符号化データを復号化する算術復号化装置であって、
前記符号化データを復号化して２値データを出力する２値データ復号化手段と、
識別子コードを入力として、次の識別子コードを算出する識別子コード算出手段と、
前記識別子コードと隣接情報等によって分類される２値データに対して、分類毎につけられる識別番号であるコンテクストインデクスの中から、前記識別子コード算出手段で算出された識別子コードに対応するコンテクストインデクスを算出するコンテクストインデクス算出手段と、
コンテクストインデクスに対応する確率変数を格納した確率変数テーブルを有し、前記コンテクストインデクス算出手段で算出されたコンテクストインデクスに対応する確率変数を出力する確率変数出力手段と、
前記識別子コードの値が動画像における動きベクトルであるＭＶＤベクトルを示す場合に、
前記識別子コードを入力として、次のＭＶＤベクトルを示す識別子コードを算出するＭＶＤ算出手段と、
前記ＭＶＤ算出手段が算出した識別子コードを入力として、前記コンテクストインデクスを算出するＭＶＤコンテクストインデクス算出手段と、
前記コンテクストインデクス算出手段で算出されたコンテクストインデクス及び前記ＭＶＤコンテクストインデクス算出手段で算出されたＭＶＤコンテクストインデクスのうち、前記識別子コードの値に対応するものを選択するコンテクストインデクス選択手段とを備え、
前記２値データ復号化手段が１ビットの２値データを出力する処理サイクルにおいて、
前記２値データ復号化手段は、前記確率変数出力手段から出力された確率変数を用いて前記復号化をする
ことを特徴とする算術復号化装置。
【請求項１７】
シンタクスの多値情報を２値データに変換した後にコンテクスト適応型２値算術符号化方式で算術符号化することによって得られる符号化データを復号化する算術復号化用の半導体集積回路であって、
前記符号化データを復号化して２値データを出力する２値データ復号化回路と、
２値データが属するシンタクスエレメントに一意に対応する識別子コードを入力として、次の識別子コードを算出する識別子コード算出回路と、
識別子コードと隣接情報等によって分類される２値データに対して、分類毎につけられる識別番号であるコンテクストインデクスの中から、前記識別子コード算出回路で算出された識別子コードに対応するコンテクストインデクスを算出するコンテクストインデクス算出回路と、
コンテクストインデクスに対応する確率変数を格納した確率変数テーブルを有し、前記コンテクストインデクス算出回路で算出されたコンテクストインデクスに対応する確率変数を出力する確率変数出力回路とを備え、
前記２値データ復号化回路が１ビットの２値データを出力する処理サイクルにおいて、
前記２値データ復号化回路は、前記確率変数出力回路から出力された確率変数を用いて前記復号化をし、
前記識別子コード算出回路による識別子コードの算出と前記コンテクストインデクス算出回路によるコンテクストインデクスの算出とは、前記処理サイクル内に実行され、
さらに、前記コンテクストインデクスに対応する確率変数を出力する処理は、前記処理サイクル内に実行され、
前記識別子コード算出回路による識別子コードの算出と前記コンテクストインデクス算出回路によるコンテクストインデクスの算出とからなる処理サイクルと、前記確率変数出力回路が確率変数を出力する処理サイクルと、前記２値データ復号化回路が復号化する処理サイクルとは、３段のパイプラインとして、同時に実行される
ことを特徴とする算術復号化用の半導体集積回路。
【請求項１８】
シンタクスの多値情報を２値データに変換した後にコンテクスト適応型２値算術符号化方式で算術符号化することによって得られる符号化データを復号化する算術復号化方法であって、
前記符号化データを復号化して２値データを出力する２値データ復号化ステップと、
２値データが属するシンタクスエレメントに一意に対応する識別子コードを入力として、次の識別子コードを算出する識別子コード算出ステップと、
識別子コードと隣接情報等とによって分類される２値データに対して、分類毎につけられる識別番号であるコンテクストインデクスの中から、前記識別子コード算出ステップで算出された識別子コードに対応するコンテクストインデクスを算出するコンテクストインデクス算出ステップと、
コンテクストインデクスに対応する確率変数を格納した確率変数テーブルを有し、前記コンテクストインデクス算出ステップで算出されたコンテクストインデクスに対応する確率変数を出力する確率変数出力ステップとを備え、
前記２値データ復号化ステップが１ビットの２値データを出力する処理サイクルにおいて、
前記２値データ復号化ステップは、前記確率変数出力ステップから出力された確率変数を用いて前記復号化をし、
前記識別子コード算出ステップによる識別子コードの算出と前記コンテクストインデクス算出ステップによるコンテクストインデクスの算出とは、前記処理サイクル内に実行され、
さらに、前記コンテクストインデクスに対応する確率変数を出力する処理は、前記処理サイクル内に実行され、
前記識別子コード算出ステップによる識別子コードの算出と前記コンテクストインデクス算出ステップによるコンテクストインデクスの算出とからなる処理サイクルと、前記確率変数出力ステップが確率変数を出力する処理サイクルと、前記２値データ復号化ステップが復号化する処理サイクルとは、３段のパイプラインとして、同時に実行される
ことを特徴とする算術復号化方法。
【請求項１９】
コンテクスト適応型２値算術符号化方式で２値データを算術符号化する、Ｈ．２６４／ＡＶＣのＣＡＢＡＣ（Ｃｏｎｔｅｘｔ−ｂａｓｅｄ  Ａｄａｐｔｉｖｅ  Ｂｉｎａｒｙ  Ａｒｉｔｈｍｅｔｉｃ  Ｃｏｄｉｎｇ）算術符号化装置であって、
２値データが属するシンタクスエレメントと、多値情報を構成する２値データの並びにおける２値データの位置を指定する情報であるｂｉｎＩｄｘとに対応する識別子コードを設定し、符号化する２値データと当該２値データに対応する前記識別子コードとを入力として、次の識別子コードを出力する識別子コードシーケンス部と、
前記識別子コードを入力としてコンテクストインデクスを算出するコンテクストインデクス算出部と、
算出された前記コンテクストインデクスを引数としてｐＳｔａｔｅＩｄｘとｖａｌＭＰＳとを出力する確率変数テーブルと、
前記ｐＳｔａｔｅＩｄｘと前記ｖａｌＭＰＳと当該２値データとを入力として当該２値データの符号化を行うエンコード部とを備える
ことを特徴とする算術符号化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、算術復号化装置及びその方法に関し、特に、Ｈ．２６４／ＡＶＣの動画像に関して符号化されたデータを復号化する算術復号化装置及びその方法に関する。
【背景技術】
【０００２】
デジタル技術の発展とともに、映像情報を符号化する技術も進化、発展してきている。それに伴い、映像情報、特に動画像の情報のデータ量も、非常に大きくなっている。そのため、デジタル映像を符号化したデータを放送やＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のメディアで転送する場合、転送量は非常に大きくなってしまう。特に、最近実用化されているハイビジョン放送などのデータ量は、従来のＳＤ（Ｓｔａｎｄａｒｄ  Ｄｅｆｉｎｉｔｉｏｎ）映像のデータ量と比べて、６倍の大きさになっている。
【０００３】
デジタル映像技術の発展とともに、増大するデータ量を処理するために、データを圧縮する技術が発展してきた。その発展は、映像データの特性を生かした圧縮技術によって実現されている。また、コンピュータにおける情報処理能力の増大に伴い、圧縮技術が必要とする複雑な演算も可能となり、映像データの圧縮率が大幅に向上している。例えば、衛星デジタルハイビジョン放送や、地上波デジタルハイビジョン放送で採用されているＭＰＥＧ−２と呼ばれる圧縮技術の方式がある。ＭＰＥＧ−２によって衛星デジタルハイビジョン放送の映像データは約１／３０に圧縮することができる。
【０００４】
ＭＰＥＧ−２に続く次の映像圧縮技術としてＡＶＣ／Ｈ．２６４（Ｈ．２６４／ＡＶＣ）が規格化されている。ＡＶＣ／Ｈ．２６４は、ＭＰＥＧ−２の約２倍の圧縮率を実現する規格である。ＡＶＣ／Ｈ．２６４では、多くの圧縮化技術を実装し、それらを組み合わせることで高い圧縮率を実現している。それに伴い、ＡＶＣ／Ｈ．２６４の圧縮化技術が必要とする演算量も大幅に増加している。
【０００５】
ＡＶＣ／Ｈ．２６４で実装されている圧縮化技術の一つにエントロピー符号化（可変長符号化）がある。エントロピー符号化の方式としては、ＣＡＶＬＣとＣＡＢＡＣとの２つの方式が用意されている。ＣＡＶＬＣとは、Ｃｏｎｔｅｘｔ−Ａｄａｐｔｉｖｅ  Ｖａｒｉａｂｌｅ  Ｌｅｎｇｔｈ  Ｃｏｄｉｎｇ（コンテクスト適応型可変長符号化方式）の略であり、ＤＣＴ係数を符号化する際、連続する０の長さであるランとレベルを、可変長符号化テーブルを用いて、スキャンの方向と反対の方向から符号化を行う方式である。
【０００６】
ＣＡＢＡＣとは、Ｃｏｎｔｅｘｔ−ｂａｓｅｄ  Ａｄａｐｔｉｖｅ  Ｂｉｎａｒｙ  Ａｒｉｔｈｍｅｔｉｃ  Ｃｏｄｉｎｇ（コンテクスト適応型２値算術符号化方式）の略であり、時間とともに変化する符号化対象の出現頻度を変化させて符号化を行う方式である。
【０００７】
また、一般に算術符号化と呼ばれる方式である。ＣＡＢＡＣでは、通常の算術符号化のほかに、圧縮すべき符号毎にコンテクストインデクス（以下、ｃｔｘＩｄｘと記載。）をつけて、そのｃｔｘＩｄｘ毎に出現頻度の変更と管理を行っている。
【０００８】
ＣＡＢＡＣでの符号化の処理は主に２つの処理に分けられる。１つ目の処理は、シンタクスエレメント（Ｓｙｎｔａｘ  Ｅｌｅｍｅｎｔ）と呼ばれる符号化すべき多値情報を２値データに変換する２値化（ｂｉｎａｒｉｚａｔｉｏｎ）と呼ばれる処理である。２つ目の処理は、２値化によって得られた２値データに対してコンテクストインデクス（ｃｔｘＩｄｘ）を算出し算術符号化を行う処理である。
【０００９】
ここで、コンテクストインデクスとは、算術符号化における２値データを、シンタクスエレメントや隣接マクロブロック情報等によって分類し、その分類毎につけられる識別番号のことである。
【００１０】
ＣＡＢＡＣにより符号化されたデータ（以下、「符号化データ」と記載。）を復号化する処理は、上述した符号化の場合と同様に２つの処理に分けられる。符号化データに対して算術復号化を行って２値データを出力する処理と、２値データをシンタクスエレメント（Ｓｙｎｔａｘ  Ｅｌｅｍｅｎｔ）に変換する多値化を行う処理である。
【００１１】
算術復号化の処理は、以下の手順で行われる。
【００１２】
１．シンタクスエレメント、ｂｉｎＩｄｘを復号化回路（手段）に入力する。算術復号処理では、一回の処理で、入力されたシンタクスエレメント、ｂｉｎＩｄｘに対応する１ビットの２値データ（ｂｉｎＶａｌ）が出力される。ここで、ｂｉｎＶａｌとは２値データの値であり、ｂｉｎＩｄｘとは、多値情報を構成する２値データの並びにおける２値データの位置を指定する情報である。
【００１３】
２．シンタクスエレメントと、ｂｉｎＩｄｘと、隣接マクロブロックの情報とを用いて演算することによりコンテクストインデクスを算出する。
【００１４】
３．算出されたコンテクストインデクスを用いて、確率変数テーブルにアクセスしてコンテクストインデクスに現在割り当てられている発生確率であるｐＳｔａｔｅＩｄｘと、発生確率の高いシンボルを表す情報であるｖａｌＭＰＳとを読み出す。
【００１５】
ここで、ｖａｌＭＰＳとは、ＭＰＳ（Ｍｏｓｔ  Ｐｒｏｂａｂｌｅ  Ｓｙｍｂｏｌ）の値、すなわち、発生確率が最も高いシンボルでの値である。また、ｐＳｔａｔｅＩｄｘとは、対応したＭＰＳ発生確率が得られるＭＰＳの発生確率をもつテーブルの番号である。
【００１６】
４．ｐＳｔａｔｅＩｄｘとｖａｌＭＰＳを入力として、算術符号化で用いられる区間情報であるｃｏｄＩＲａｎｇｅとｃｏｄＩＯｆｆｓｅｔとともに演算を行い、２値データを１ビット出力する。
【００１７】
５．ｃｏｄＩＲａｎｇｅとｃｏｄＩＯｆｆｓｅｔを更新する。
【００１８】
６．発生確率ｐＳｔａｔｅＩｄｘとｖａｌＭＰＳを更新し、確率変数テーブルの値を更新する。
【００１９】
７．次のシンタクスエレメント、ｂｉｎＩｄｘの値を決める。デコードされたｂｉｎＶａｌ（２値データ）を用いて、次のシンタクスエレメントとｂｉｎＩｄｘの値を計算し、デコードの処理が完了する。ここで算出されたシンタクスエレメントとｂｉｎＩｄｘは、次のｂｉｎＶａｌをデコードする際の入力になる。
【００２０】
しかしながら、上記の算術復号化の手順は処理時間を多く必要とし、算術復号処理の高速化ができないという問題がある。
【００２１】
算術復号化の手順においては、主に次の４つの処理に多くの処理時間を必要とする。すなわち、１）コンテクストインデクスの算出処理と、２）確率変数テーブルからｐＳｔａｔｅＩｄｘ／ｖａｌＭＰＳを読み出す処理と、３）ｃｏｄＩＲａｎｇｅとｃｏｄＩＯｆｆｓｅｔを用いたｂｉｎＶａｌ（２値データ）の算出処理と、４）次のシンタクスエレメントとｂｉｎＩｄｘとを算出する処理である。
【００２２】
そして、１ビットのｂｉｎＶａｌを出力するためには、上述の１）〜４）の４つの処理を順に行わなければならない。また、これらの４つの処理はすべて、１つ前の処理が完了しないと実行できない。
【００２３】
特許文献１では、この課題を解決する方法の一つが開示されている。上記特許文献１における復号化装置では、１つ先のシンボル、２つ先のシンボル、３つ先のシンボルそれぞれについて先行して処理を行い、実際に取り得る状態の各々に対応した情報を並列に出力している。そして、実際の復号結果を用いて、セレクタを制御し、並列に出力されている情報のうちの一つを選択している。
【００２４】
上記特許文献１における復号化装置は、コンテクスト生成器でコンテクストを４つ作成し、４つのコンテクストＲＡＭからコンテクストに対応する値を読み出している。
【００２５】
また、確率変数の更新に伴ってパイプラインにハザードが発生してしまう問題を、コンテクストが同じ場合の確率変数をＬＰＳとＭＰＳについて用意することで対応している。それにより、算術復号処理の高速化を実現している。
【特許文献１】特開２００１−１８９６６１号公報
【発明の開示】
【発明が解決しようとする課題】
【００２６】
しかしながら、上記特許文献１における復号化装置では、ＣＡＢＡＣで扱うシンタクスエレメントの定義がなく、ＣＡＢＡＣに対する考慮はされていない。そのため、ＣＡＢＡＣでの算術復号処理の高速化は実現できない。
【００２７】
本発明は、上記の問題点に鑑みてなされたものであり、ＣＡＢＡＣで符号化されたデータを復号化する際の算術復号処理の高速化を可能にする復号化装置及びその方法を提供することを目的とする。
【課題を解決するための手段】
【００２８】
上記目的を達成するために、本発明に係る復号化装置は、シンタクスの多値情報を２値データに変換した後にコンテクスト適応型２値算術符号化方式で算術符号化することによって得られる符号化データを復号化する算術復号化装置であって、前記符号化データを復号化して２値データを出力する２値データ復号化手段と、２値データが属するシンタクスエレメントに一意に対応する識別子コードを入力として次の識別子コードを算出する識別子コード算出手段と、前記識別子コードと隣接情報等によって分類される２値データに対して、分類毎につけられる識別番号であるコンテクストインデクスの中から、前記識別子コード算出手段で算出された次の識別子コードに対応するコンテクストインデクスを算出するコンテクストインデクス算出手段と、コンテクストインデクスに対応する確率変数を格納した確率変数テーブルを有し、前記コンテクストインデクス算出手段で算出されたコンテクストインデクスに対応する確率変数を出力する確率変数出力手段とを備え、前記２値データ復号化手段が１ビットの２値データを出力する処理サイクルにおいて、前記２値データ復号化手段は、前記確率変数出力手段から出力された確率変数を用いて前記復号化をし、前記識別子コード算出手段による次の識別子コードの算出と前記コンテクストインデクス算出手段によるコンテクストインデクスの算出とは、前記処理サイクル内に実行され、さらに、前記コンテクストインデクスに対応する確率変数を出力する処理は、前記処理サイクル内に実行され、前記識別子コード算出手段による次の識別子コードの算出と前記コンテクストインデクス算出手段によるコンテクストインデクスの算出とからなる処理サイクルと、前記確率変数出力手段が確率変数を出力する処理サイクルと、前記２値データ復号化手段が復号化する処理サイクルとは、３段のパイプラインとして、同時に実行されることを特徴とする。
【００２９】
この構成により、現在の２値データを復元中に、「次の次の識別子コード」候補及び「次の次の識別子コード」候補に対応する「コンテクストインデクス」候補とを同処理サイクル中に並列に算出し、次のサイクル中に「次の（１つ先の）識別子コード」、次の識別子コードに対応するコンテクストインデクス候補及び「コンテクストインデクス」候補に対応する「確率変数」候補を並列に算出し、現在の２値データの復元結果が判明した時点で、それに応じていずれかの算出結果を選択することで、算術復号化の手順において、１つ前の処理が完了しないと実行できなかった２値データ及びシンタクスを復元する処理を３段階のパイプライン化することができる。それにより、ＣＡＢＡＣで符号化されたデータを復号化する際の算術復号処理の高速化を可能にするＣＡＢＡＣ算術復号化装置を実現することができる。
【００３０】
このとき、前記識別子コード算出手段は、入力の識別子コードに対応する２値データが“０”である場合の前記次の識別子コードと、入力の識別子コードに対応する２値データが“１”である場合の前記次の識別子コードとを出力してもよく、前記識別子コード及び前記次の識別子コードは、前記多値情報を構成する２値データの並びにおける２値データの位置を指定する情報であるｂｉｎＩｄｘを含んでもよい。
【００３１】
また、前記識別子コード算出手段は、さらに、現在の処理サイクルで復号中の２値データに対応する現在の識別子コードが入力されることを特徴としてもよい。
【００３２】
また、前記コンテクストインデクス算出手段は、現在復号中の２値データが“０”かつ次に復号化される２値データが“０”である場合、現在復号中の２値データが“０”かつ次に復号化される２値データが“１”である場合、現在復号中の２値データが“１”かつ次に復号化される２値データが“０”である場合または現在復号中の２値データが“１”かつ次に復号化される２値データが“１”である場合を示す２ビットの情報を持つ、次の識別子コードが入力されることを特徴としてもよい。
【００３３】
また、前記コンテクストインデクス算出手段は、さらに、前記次の識別子コードの１つ前の識別子コードと、現在復号中の２値データに対応する現在の識別子コードが入力されてもよい。
【００３４】
また、前記識別子コード算出手段は、前記２値データ復号化手段により現在の処理サイクルで復号された２値データ“０”と次の処理サイクルで復号化される次の２値データ“０”または“１”とに対応する識別子コードが入力される場合の、次の次の処理サイクルで復号化される次の次の２値データに対応する第１の次の識別子コードを算出し、さらに、前記２値データ復号化手段により現在の処理サイクルで復号された２値データ“１”と次の処理サイクルで復号化される次の２値データ“０”または“１”とに対応する識別子コードが入力される場合の、次の次の処理サイクルで復号化される次の次の２値データに対応する第２の次の識別子コードを算出し、前記２値データ復号化手段から現在の処理サイクルで復号され出力された２値データに対応して、算出した前記第１または第２の次の識別子コードを選択して出力してもよい。
【００３５】
また、前記識別子コード算出手段は、現在の処理サイクルで復号され出力された２値データが“０”の場合、（２値データ、次の２値データ）＝（０、０）及び（０、１）に対応する前記第１の次の識別子コードを選択し、選択した前記第１の次の識別子コードを次の識別子コードとして出力し、現在の処理サイクルで復号され出力された２値データが“１”の場合、（２値データ、次の２値データ）＝（１、０）及び（１、１）に対応する前記第２の次の識別子コードを選択し、選択した前記第２の次の識別子コードを次の識別子コードとして出力してもよい。
【００３６】
また、前記コンテクストインデクス算出手段は、現在の処理サイクル及び次の処理サイクルにおいて、（現在の処理サイクルで復号中の２値データ、次の処理サイクルで復号される２値データ）＝（０、０）を出力する場合に、次の次に復号化される次の次の２値データに対応するコンテクストインデクスと、（０、１）を出力した場合に次の次に復号化される次の次の２値データに対応するコンテクストインデクスと、（１、０）を出力したとき次の次に復号化される次の次の２値データに対応するコンテクストインデクスと、（１、１）を出力したとき次の次に復号化される次の次の２値データに対応するコンテクストインデクスとの、４種類のコンテクストインデクスを算出した後、現在の処理サイクルで前記２値データ復号化手段から出力された２値データに対応して、前記４種類のコンテクストインデクスの中から、（０、０）及び（０、１）に対応する２種類のコンテクストインデクス、または、（１、０）及び（１、１）に対応する２種類のコンテクストインデクスを選択して出力してもよい。
【００３７】
また、前記確率変数出力手段は、前記２値データ復号化手段が現在の処理サイクルで２値データ“０”を出力する場合に次の処理サイクルで復号化される２値データに対応する第１のコンテクストインデクスと、前記２値データ復号化手段が現在の処理サイクルで２値データ“１”を出力する場合に次の処理サイクルで復号化される２値データに対応する第２のコンテクストインデクスとが入力され、前記第１のコンテクストインデクスに対応する第１の確率変数と、前記第２のコンテクストインデクスに対応する第２の確率変数との２種類の確率変数を出力し、現在の処理サイクルで前記２値データ復号化手段から出力された２値データに対応して、前記２種類の確率変数から、２値データ“０”に対応する前記第１の確率変数、または、２値データ“１”に対応する前記第２の確率変数を選択して出力してもよい。
【００３８】
この構成により、２値データ及びシンタクスを復元する処理を３段階のパイプライン化する復号化装置における回路の構成を簡便にすることができる。
【００３９】
このとき、前記２値データ復号化手段は、前記復号化を実行するとともに、復号化の結果に対応する新たな確率変数と当該確率変数に対応するコンテクストインデクスを出力する復号化部と、前記復号化部から出力された確率変数及びコンテクストインデクスを保持する確率変数レジスタと、前記確率変数出力手段から出力された確率変数に対応するコンテクストインデクスと前記確率変数レジスタに保持されたコンテクストインデクスとを比較する比較器と、前記比較器での比較結果が一致である場合に、前記確率変数出力手段から出力された確率変数及び前記確率変数レジスタに保持された確率変数のうち、前記確率変数レジスタに保持された確率変数を選択して前記復号化部に出力するセレクタとを有してもよい。
【００４０】
この構成により、次の識別子コードに対応するコンテクストインデクス候補及び「コンテクストインデクス」候補に対応する「確率変数」候補を競合することなく「確率変数」として用いることができる。
【００４１】
このとき、前記確率変数レジスタは、先入れ先出し方式のパイプラインバッファであってもよい。
【００４２】
この構成により、２値データ復号化手段が２値データ復号化部手段で更新された「確率変数」を出力してから、確率変数出力手段が有する確率変数テーブルに２値データ復号化手段で更新された「確率変数」値が反映されるまで複数の処理サイクルを必要とした場合でも復号化装置のパイプラインに対応することができる。
【００４３】
このとき、前記算術復号化装置はさらに、前記識別子コードの値が動画像における動きベクトルであるＭＶＤベクトルを示す場合に、前記識別子コードを入力として、次のＭＶＤベクトルを示す識別子コードを算出するＭＶＤ算出手段と、前記ＭＶＤ算出手段が算出した識別子コードを入力として、前記コンテクストインデクスを算出するＭＶＤコンテクストインデクス算出手段と、前記コンテクストインデクス算出手段で算出されたコンテクストインデクス及び前記ＭＶＤコンテクストインデクス算出手段で算出されたＭＶＤコンテクストインデクスのうち、前記識別子コードの値に対応するものを選択するコンテクストインデクス選択手段とを備えることを特徴としてもよい。
【００４４】
このとき、前記ＭＶＤ算出手段に入力される、前記識別子コードが、前記確率変数出力手段において、前記確率変数を出力するサイクルに存在する識別子コードであってもよい。
【００４５】
ところで、識別子コードの値が動きベクトルであるＭＶＤベクトルを示す場合には、ＭＶＤのコンテクスト算出は、ＭＶＤの種類が多く、検索（対応付け）が複雑なため、処理量が大きい。そのため、２値データ復号化手段が１ビットの２値データを復元して出力する処理サイクルにコンテクストインデクス算出処理が間に合わない。この構成によれば、識別子コードの値が動きベクトルであるＭＶＤベクトルを示す場合にＭＶＤのコンテクストインデクス算出処理を独立させ並列化することで、ＣＡＢＡＣによって符号化されたデータを復号化する際の算術復号処理の高速化を可能とする。
【００４６】
このとき、前記算術復号化装置はさらに、前記符号化データを含む１つのストリームを連続して供給すること、及び、複数のストリームを切り替えながら供給することを選択的に実行するストリーム供給手段を備え、前記２値データ復号化手段は、前記ストリーム供給手段から供給されるストリームに対して、前記復号化を実行してもよい。
【００４７】
この構成により、算術復号化の出力データレートをクロック周波数まで高めることができる。それにより、高ビットレートのストリームを復号化することと、通常のビットレート（１０〜４０Ｍｂｐｓ）のストリームを複数同時に復号化することの両方に対応することが可能になり、さまざまなストリームに対してスケーラブルに対応できる算術復号回路を有する復号化装置を実現できる。
【００４８】
また、本発明に係る復号化装置は、シンタクスの多値情報を２値データに変換した後にコンテクスト適応型２値算術符号化方式で算術符号化することによって得られる符号化データを復号化する算術復号化装置であって、前記符号化データを復号化して２値データを出力する２値データ復号化手段と、識別子コードを入力として、次の識別子コードを算出する識別子コード算出手段と、識別子コードと隣接情報等によって分類される２値データに対して、分類毎につけられる識別番号であるコンテクストインデクスの中から、前記識別子コード算出手段で算出された識別子コードに対応するコンテクストインデクスを算出するコンテクストインデクス算出手段と、コンテクストインデクスに対応する確率変数を格納した確率変数テーブルを有し、前記コンテクストインデクス算出手段で算出されたコンテクストインデクスに対応する確率変数を出力する確率変数出力手段と、前記識別子コードの値が動画像における動きベクトルであるＭＶＤベクトルを示す場合に、前記識別子コードを入力として、次のＭＶＤベクトルを示す識別子コードを算出するＭＶＤ算出手段と、前記ＭＶＤ算出手段が算出した識別子コードを入力として、前記コンテクストインデクスを算出するＭＶＤコンテクストインデクス算出手段と、前記コンテクストインデクス算出手段で算出されたコンテクストインデクス及び前記ＭＶＤコンテクストインデクス算出手段で算出されたＭＶＤコンテクストインデクスのうち、前記識別子コードの値に対応するものを選択するコンテクストインデクス選択手段とを備え、前記２値データ復号化手段が１ビットの２値データを出力する処理サイクルにおいて、前記２値データ復号化手段は、前記確率変数出力手段から出力された確率変数を用いて前記復号化をすることを特徴としてもよい。
【００４９】
また、コンテクスト適応型２値算術符号化方式で２値データを算術符号化する、Ｈ．２６４／ＡＶＣのＣＡＢＡＣ（Ｃｏｎｔｅｘｔ−ｂａｓｅｄ  Ａｄａｐｔｉｖｅ  Ｂｉｎａｒｙ  Ａｒｉｔｈｍｅｔｉｃ  Ｃｏｄｉｎｇ）算術符号化装置であって、２値データが属するシンタクスエレメントと、多値情報を構成する２値データの並びにおける２値データの位置を指定する情報であるｂｉｎＩｄｘとに対応する識別子コードを設定し、符号化する２値データと当該２値データに対応する前記識別子コードとを入力として、次の識別子コードを出力する識別子コードシーケンス部と、前記識別子コードを入力としてコンテクストインデクスを算出するコンテクストインデクス算出部と、前記コンテクストインデクスを引数としてｐＳｔａｔｅＩｄｘとｖａｌＭＰＳとを出力する確率変数テーブルと、前記ｐＳｔａｔｅＩｄｘと前記ｖａｌＭＰＳと当該２値データとを入力として当該２値データの符号化を行うエンコード部とを備える算術符号化装置により、ＣＡＢＡＣの算術符号化を行う。
【００５０】
なお、本発明は、装置として実現するだけでなく、このような装置が備える処理手段を備える集積回路として実現したり、その装置を構成する処理手段をステップとする方法として実現したり、それらステップをコンピュータに実行させるプログラムとして実現したり、そのプログラムを示す情報、データまたは信号として実現したりすることもできる。そして、それらプログラム、情報、データ及び信号は、ＣＤ−ＲＯＭ等の記録媒体やインターネット等の通信媒体を介して配信してもよい。
【発明の効果】
【００５１】
本発明によれば、ＣＡＢＡＣによって符号化されたデータを復号化する際の算術復号処理の高速化を可能にする復号化装置及びその方法を実現することができる。また、復号化装置及び方法で用いられるｂｉｎＶａｌが属するシンタクスエレメント及びｂｉｎＩｄｘを使用した方式を算術符号化にも適用することで、画像データをＣＡＢＡＣによって符号化する際の算術符号化処理の高速化及び高効率化を可能にする符号化装置及びその方法を実現することができる。よって、ハイビジョン放送のようなデータ量が多くて高画質が要求される映像が普及しつつある今日における本発明の実用的価値は極めて高い。
【発明を実施するための最良の形態】
【００５２】
（実施の形態１）
以下、本発明の実施の形態１について、図面を用いて説明する。
【００５３】
図１は、本発明の実施の形態１における復号化装置の構成を示すブロック図である。
【００５４】
図１に示されるように、復号化装置１００は、コンテクスト適応型２値算術符号化方式によってシンタクスの多値情報が２値データに変換された後に算術符号化された符号化データを入力とし、元の識別子コードに復号化する算術復号化装置であって、次識別子コード０算出部１０と、次識別子コード１算出部１１と、コンテクストインデクス００算出部１２と、コンテクストインデクス０１算出部１３と、コンテクストインデクス１０算出部１４と、コンテクストインデクス１１算出部１５と、確率変数テーブル０部１６と、確率変数テーブル１部１７と、２値データ復号化部１８と、確率変数レジスタ１９と、ＳＥＬ＿Ｓ０部２０と、ＳＥＬ＿Ｓ１部２１と、ＳＥＬ＿Ｃ０部２２と、ＳＥＬ＿Ｃ１部２３と、ＳＥＬ＿Ｓ部２４と、ＳＥＬ＿Ｃ部２５と、ＳＥＬ＿Ｋ部２６と、ＳＥＬ部２７と、次の識別子コードＦＦ２８及び２９と、次のコンテクストインデクスＦＦ３０及び３１と、識別子コードＦＦ３２と、コンテクストインデクスＦＦ３３と、確率変数ＦＦ３４と、隣接及びカレントマクロブロック情報レジスタ３５とを備えている。
【００５５】
次識別子コード０算出部１０と次識別子コード１算出部１１とは、本発明に係る識別子コード算出手段に相当し、前記２値データ復号化手段が１ビットの２値データを復元して出力する処理サイクルと並行して、次の次の１ビットの２値データを復元するために必要となる識別子コードを算出する。具体的には、次識別子コード０算出部１０と次識別子コード１算出部１１とは、「次の識別子コード」を入力として「次の次の識別子コード」を算出する。次識別子コード０算出部１０と次識別子コード１算出部１１とにより算出され出力される「次の次の識別子コード」は、「次の識別子コード」に対応するｂｉｎＶａｌの値（復号する２値データ）が０の場合と１の場合とのそれぞれの場合における識別子コードである。すなわち、４つの「次の次の識別子コード」が出力される。なお、次識別子コード０算出部１０と次識別子コード１算出部１１は、便宜上名前を変えてあるが、回路構成は全く同じものである。
【００５６】
コンテクストインデクス００算出部１２とコンテクストインデクス０１算出部１３とコンテクストインデクス１０算出部１４とコンテクストインデクス１１算出部１５とは、本発明に係るコンテクストインデクス算出手段に相当し、前記識別子コード算出手段で算出された識別子コードから、次の１ビットの２値データを復元するために必要となるコンテクストインデックスを算出する。具体的には、コンテクストインデクス００算出部１２とコンテクストインデクス０１算出部１３とコンテクストインデクス１０算出部１４とコンテクストインデクス１１算出部１５とは、次識別子コード０算出部１０と次識別子コード１算出部１１とから「次の次の識別子コード」がそれぞれ入力され、入力された識別子コードに対応する「次の次のコンテクストインデクス」をそれぞれ算出する。すなわち、４つの「次の次のコンテクストインデクス」が出力される。
【００５７】
なお、コンテクストインデクス００算出部１２とコンテクストインデクス０１算出部１３とコンテクストインデクス１０算出部１４とコンテクストインデクス１１算出部１５とは、便宜上名前を変えてあるが、回路構成は全く同じものである。
【００５８】
ＳＥＬ＿Ｃ０部２２と、ＳＥＬ＿Ｃ１部２３とは、同じサイクルで算出されたｂｉｎＶａｌの値（復号する２値データ）により、コンテクストインデクス００算出部１２とコンテクストインデクス０１算出部１３とコンテクストインデクス１０算出部１４とからそれぞれ出力された４つの「次の次のコンテクストインデクス」のうち２つの「次の次のコンテクストインデクス」を選択する回路である。選択された「次の次のコンテクストインデクス」は、次のサイクルで「次のコンテクストインデクス」となる。
【００５９】
ここで、サイクルとは、２値データ復号化部１８が１ビットの２値データ（ｂｉｎＶａｌ）を復元して出力する処理サイクルのことを言う。図１においては、次識別子コード０算出部１０と次識別子コード１算出部１１とコンテクストインデクス００算出部１２とコンテクストインデクス０１算出部１３とコンテクストインデクス１０算出部１４とコンテクストインデクス１１算出部１５とＳＥＬ＿Ｓ０部２０とＳＥＬ＿Ｓ１部２１とＳＥＬ＿Ｃ０部２２とＳＥＬ＿Ｃ１部２３と（図１のＡで示される範囲の構成）が同じサイクル内で処理される。また、図１における確率変数テーブル０部１６と確率変数テーブル１部１７とＳＥＬ＿Ｓ部２４とＳＥＬ＿Ｃ部２５とＳＥＬ＿Ｋ部２６と次の識別子コードＦＦ２８及び２９の出力と次のコンテクストインデクスＦＦ３０及び３１の出力と（図１のＢで示される範囲の構成）が同じサイクル内で処理される。また、２値データ復号化部１８とＳＥＬ部２７と識別子コードＦＦ３２の出力とコンテクストインデクスＦＦ３３の出力と確率変数ＦＦ３４の出力と（図１のＣで示される範囲の構成）が同じサイクル内で処理される。
【００６０】
また、図１のＡ、Ｂ及びＣの範囲におけるサイクルは同じサイクル時間で並行に実行される。
【００６１】
次のコンテクストインデクスＦＦ３０及び３１は、ＳＥＬ＿Ｃ０部２２及びＳＥＬ＿Ｃ１部２３により選択された２つの「次の次のコンテクストインデクス」がセットされる回路である。
【００６２】
ＳＥＬ＿Ｓ０部２０とＳＥＬ＿Ｓ１部２１とは、次識別子コード０算出部１０と次識別子コード１算出部１１とから出力された４つの「次の次の識別子コード」のうち２つの「次の次の識別子コード」を、同じサイクルで算出されたｂｉｎＶａｌの値（復号する２値データ）により選択する回路である。選択された「次の次の識別子コード」は、次のサイクルで「次の識別子コード」となる。
【００６３】
次の識別子コードＦＦ２８及び２９は、ＳＥＬ＿Ｓ０部２０及びＳＥＬ＿Ｓ１部２１で選択された２つの「次の次の識別子コード」がセットされる回路である。
【００６４】
ＳＥＬ＿Ｓ部２４は、同じサイクルで算出されたｂｉｎＶａｌの値（復号する２値データ）により、次の識別子コードＦＦ２８及び２９から出力された２つの「次の識別子コード」のどちらかを選択する回路である。選択された「次の識別子コード」は、次のサイクルで「識別子コード」となる。
【００６５】
識別子コードＦＦ３２は、ＳＥＬ＿Ｓ部２４により選択された「次の識別子コード」がセットされる回路である。識別子コードＦＦ３２は、次のサイクルで「識別子コード」を出力する。
【００６６】
確率変数テーブル０部１６及び確率変数テーブル１部１７は、本発明に係る確率変数出力手段に相当し、コンテクストインデクスに対応する確率変数を格納した確率変数テーブルを有し、前記処理サイクルと並行して、前記確率変数テーブルを参照することで、前記コンテクストインデクス算出手段で算出されたコンテクストインデクスに対応する確率変数を出力する。具体的には、確率変数テーブル０部１６及び確率変数テーブル１部１７は、コンテクストインデクスを引数として、確率変数を格納するテーブルを有し、「次のコンテクストインデクス」に対応する「確率変数」を参照し出力する。符号化データをデコードする処理の最初に初期化される。また、２値データ復号化部１８によるｂｉｎＶａｌの値（復号する２値データ）の出力処理により、新しい確率変数が計算されると、その値を更新する。
【００６７】
ＳＥＬ＿Ｋ部２６は、同じサイクルで算出されたｂｉｎＶａｌの値（復号する２値データ）により、確率変数テーブル０部１６及び確率変数テーブル１部１７から出力された「確率変数」のどちらかを「確率変数」として選択する回路である。
【００６８】
確率変数ＦＦ３４は、ＳＥＬ＿Ｋ部２６により選択された「確率変数」がセットされる。
【００６９】
ＳＥＬ＿Ｃ部２５は、同じサイクルで算出されたｂｉｎＶａｌの値（復号する２値データ）により、次のコンテクストインデクスＦＦ３０及び３１にセットされている２つの「次のコンテクストインデクス」のどちらかを選択する回路である。選択された「次のコンテクストインデクス」は、次のサイクルで「コンテクストインデクス」となる。
【００７０】
コンテクストインデクスＦＦ３３は、ＳＥＬ＿Ｃ部２５により選択された「次のコンテクストインデクス」がセットされる回路である。
【００７１】
２値データ復号化部１８は、本発明に係る２値データ復号化手段に相当し、前記２値データを復元して出力する。具体的には、２値データ復号化部１８は、「確率変数」が入力され、２値データであるｂｉｎＶａｌの値を出力する。同時に、「確率変数」を更新して、更新した「確率変数」を確率変数レジスタ１９に出力する。確率変数レジスタ１９では、コンテクストインデクスＦＦ３３が出力する「コンテクストインデクス」と、２値データ復号化部１８が出力する更新した「確率変数」を、１対（セット）として保存する。
【００７２】
ＳＥＬ部２７は、確率変数ＦＦ３４が出力する「確率変数」と、確率変数レジスタ１９の中に格納されている「確率変数」の中から最新の「確率変数」を選択する。具体的には、コンテクストインデクスＦＦ３３が出力する「コンテクストインデクス」と同じコンテクストインデクスが、前記確率変数レジスタ１９内にあるとき、前記確率変数レジスタ内にあるコンテクストインデクスと対になる確率変数をＳＥＬ部２７で選択して、２値データ復号化部１８に入力して、復号化処理を行う。
【００７３】
隣接及びカレントマクロブロック情報レジスタ３５は、２値データ復号化部１８で復号化処理された結果出力される２値データの値とその２値データに対応する識別子コードとを元に作成される情報をレジスタに格納する。
【００７４】
隣接及びカレントマクロブロック情報レジスタ３５に格納されている情報は、次識別子コード０算出部１０、次識別子コード１算出部１１、コンテクストインデクス００算出部１２、コンテクストインデクス０１算出部１３、コンテクストインデクス１０算出部１４及びコンテクストインデクス１１算出部１５に入力され、それらが値を算出する際に参照される。
【００７５】
確率変数レジスタ１９は、本発明に係る確率変数レジスタに相当し、前記復号化部から出力された確率変数及びコンテクストインデクスを保持する。具体的には、コンテクストインデクスＦＦ３３が出力する「コンテクストインデクス」と、前記２値データ復号化部で更新された「確率変数」を１対（セット）として一時保存する。確率変数レジスタ１９は、算術復号化処理により、確率変数テーブルに上書きされる「確率変数」を、「コンテクストインデクス」とセットで確率変数テーブルに書き込まれるまで、格納する。
【００７６】
次に、図１を用いて、コンテクスト適応型２値算術符号化方式によってシンタクスの多値情報が２値データに変換された後に算術符号化された符号化データを入力とし、元のシンタクスエレメントに復号化する復号化装置１００の動きを具体的に説明する。
【００７７】
次識別子コード０算出部１０は、「次の識別子コード」である「識別子コード０＿ｉ＋１」が入力され、「次の次の識別子コード」となる「識別子コード００＿ｉ＋２」と「識別子コード０１＿ｉ＋２」とをコンテクストインデクス００算出部１２とコンテクストインデクス０１算出部１３及びＳＥＬ＿Ｓ０部２０とＳＥＬ＿Ｓ１部２１に出力する。
【００７８】
次識別子コード１算出部１１は、「次の識別子コード」である「識別子コード１＿ｉ＋１」が入力され、「次の次の識別子コード」となる「識別子コード１０＿ｉ＋２」と「識別子コード１１＿ｉ＋２」とをコンテクストインデクス１０算出部１４とコンテクストインデクス１１算出部１５及びＳＥＬ＿Ｓ０部２０とＳＥＬ＿Ｓ１部２１に出力する。
【００７９】
コンテクストインデクス００算出部１２は、「次の次の識別子コード」である「識別子コード００＿ｉ＋２」が入力され、「次の次のコンテクストインデクス」となる「ｃｔｘＩｄｘ００＿ｉ＋２」をＳＥＬ＿Ｃ０部２２に出力する。
【００８０】
コンテクストインデクス０１算出部１３は、「次の次の識別子コード」である「識別子コード０１＿ｉ＋２」が入力され、「次の次のコンテクストインデクス」となる「ｃｔｘＩｄｘ０１＿ｉ＋２」をＳＥＬ＿Ｃ１部２３に出力する。
【００８１】
コンテクストインデクス１０算出部１４は、「次の次の識別子コード」である「識別子コード１０＿ｉ＋２」が入力され、「次の次のコンテクストインデクス」となる「ｃｔｘＩｄｘ１０＿ｉ＋２」をＳＥＬ＿Ｃ０部２２に出力する。
【００８２】
コンテクストインデクス１１算出部１５は、「次の次の識別子コード」である「識別子コード１１＿ｉ＋２」が入力され、「次の次のコンテクストインデクス」となる「ｃｔｘＩｄｘ１１＿ｉ＋２」をＳＥＬ＿Ｃ１部２３に出力する。
【００８３】
ＳＥＬ＿Ｃ０部２２は、「次の次のコンテクストインデクス」である「ｃｔｘＩｄｘ００＿ｉ＋２」と「ｃｔｘＩｄｘ１０＿ｉ＋２」とを入力として、ｂｉｎＶａｌ＝０のとき「ｃｔｘＩｄｘ００＿ｉ＋２」を選択し、ｂｉｎＶａｌ＝１のとき「ｃｔｘＩｄｘ１０＿ｉ＋２」を選択して、次のサイクルで「次のコンテクストインデクス」となる「ｃｔｘＩｄｘ０＿ｉ＋２」として次のコンテクストインデクスＦＦ３０に出力する。
【００８４】
ＳＥＬ＿Ｃ１部２３は、「次の次のコンテクストインデクス」である「ｃｔｘＩｄｘ０１＿ｉ＋２」と「ｃｔｘＩｄｘ１１＿ｉ＋２」を入力として、ｂｉｎＶａｌ＝０のとき「ｃｔｘＩｄｘ０１＿ｉ＋２」を選択し、ｂｉｎＶａｌ＝１のとき「ｃｔｘＩｄｘ１１＿ｉ＋２」を選択して、次のサイクルで「次のコンテクストインデクス」となる「ｃｔｘＩｄｘ１＿ｉ＋２」として次のコンテクストインデクスＦＦ３１に出力する。
【００８５】
次のコンテクストインデクスＦＦ３０と次のコンテクストインデクスＦＦ３１は、「ｃｔｘＩｄｘ０＿ｉ＋２」と「ｃｔｘＩｄｘ１＿ｉ＋２」をそれぞれセットし、「ｃｔｘＩｄｘ０＿ｉ＋１」と「ｃｔｘＩｄｘ１＿ｉ＋１」としてＳＥＬ＿Ｃ部２５及び確率変数テーブル０部１６と確率変数テーブル１部１７に出力する。
【００８６】
ＳＥＬ＿Ｓ０部２０は、「次の次の識別子コード」である「識別子コード００＿ｉ＋２」と「識別子コード１０＿ｉ＋２」とを入力として、ｂｉｎＶａｌ＝０のとき「識別子コード００＿ｉ＋２」を選択し、ｂｉｎＶａｌ＝１のとき「識別子コード１０＿ｉ＋２」を選択して、次のサイクルで「次の識別子コード」となる「識別子コード０＿ｉ＋２」として次の識別子コードＦＦ２８に出力する。
【００８７】
ＳＥＬ＿Ｓ１部２１は、「その次の識別子コード」である「識別子コード０１＿ｉ＋２」と「識別子コード１１＿ｉ＋２」とを入力として、ｂｉｎＶａｌ＝０のとき「識別子コード１０＿ｉ＋２」を選択し、ｂｉｎＶａｌ＝１のとき「識別子コード１１＿ｉ＋２」を選択して、次のサイクルで「次の識別子コード」となる「識別子コード１＿ｉ＋２」として次の識別子コードＦＦ２９に出力する。
【００８８】
次の識別子コードＦＦ２８は、「識別子コード０＿ｉ＋２」をセットし、「識別子コード０＿ｉ＋１」としてＳＥＬ＿Ｓ部２４及び次識別子コード０算出部１０に出力する。
【００８９】
次の識別子コードＦＦ２９は、「識別子コード１＿ｉ＋２」をセットし、「識別子コード１＿ｉ＋１」としてＳＥＬ＿Ｓ部２４及び次識別子コード１算出部１１に出力する。
【００９０】
ＳＥＬ＿Ｓ部２４は、「次の識別子コード」である「識別子コード０＿ｉ＋１」と「識別子コード１＿ｉ＋１」とを入力として、ｂｉｎＶａｌ＝０のとき「識別子コード０＿ｉ＋１」を選択し、ｂｉｎＶａｌ＝１のとき「識別子コード１＿ｉ＋１」を選択して、次のサイクルで「識別子コード」となる「識別子コード＿ｉ＋１」として識別子コードＦＦ３２に出力する。
【００９１】
識別子コードＦＦ３２は、「識別子コード＿ｉ＋１」をセットし、「識別子コード＿ｉ」として出力する。
【００９２】
確率変数テーブル０部１６及び確率変数テーブル１部１７は、次のコンテクストインデクスＦＦ３０と次のコンテクストインデクスＦＦ３１から出力された「コンテクストインデクス」である「ｃｔｘＩｄｘ０＿ｉ＋１」と「ｃｔｘＩｄｘ１＿ｉ＋１」と確率変数テーブルとを用いて、「コンテクストインデクス」それぞれに対応する「確率変数」を参照する。確率変数テーブル０部１６は、「ｃｔｘＩｄｘ０＿ｉ＋１」に対応する「確率変数」を「確率変数０＿ｉ＋１」として出力する。また、確率変数テーブル１部１７は、「ｃｔｘＩｄｘ１＿ｉ＋１」に対応する「確率変数」を「確率変数１＿ｉ＋１」として出力する。
【００９３】
また、確率変数テーブル０部１６及び確率変数テーブル１部１７は、便宜上名前を変えてあるが、変数テーブルの内容及び回路構成は全く同じものである。
【００９４】
ＳＥＬ＿Ｋ部２６は、「確率変数」である「確率変数０＿ｉ＋１」と「確率変数１＿ｉ＋１」とを入力として、ｂｉｎＶａｌ＝０のとき「確率変数０＿ｉ＋１」を選択し、ｂｉｎＶａｌ＝１のとき「確率変数１＿ｉ＋１」を選択して、「確率変数＿ｉ＋１」として確率変数ＦＦ３４に出力する。
【００９５】
確率変数ＦＦ３４は、「確率変数＿ｉ＋１」をセットし、「確率変数＿ｉ」として、出力する。そして、確率変数ＦＦ３４は、「確率変数＿ｉ」をＳＥＬ２７を介して２値データ復号化部１８に出力する。
【００９６】
ＳＥＬ＿Ｃ部２５は、次のコンテクストインデクスＦＦ３０と次のコンテクストインデクスＦＦ３１からの出力された「次のコンテクストインデクス」である「ｃｔｘＩｄｘ０＿ｉ＋１」と「ｃｔｘＩｄｘ１＿ｉ＋１」とを入力とする。ＳＥＬ＿Ｃ部２５はｂｉｎＶａｌ＝０のとき「ｃｔｘＩｄｘ０＿ｉ＋１」を選択し、ｂｉｎＶａｌ＝１のとき「ｃｔｘＩｄｘ１＿ｉ＋１」を選択して、次のサイクルで「コンテクストインデクス」となる「ｃｔｘＩｄｘ＿ｉ＋１」としてコンテクストインデクスＦＦ３３に出力する。
【００９７】
コンテクストインデクスＦＦ３３は、「ｃｔｘＩｄｘ＿ｉ＋１」をセットし、「ｃｔｘＩｄｘ＿ｉ」として値を出力する。
【００９８】
２値データ復号化部１８は、確率変数ＦＦ３４により確率変数として出力された「確率変数＿ｉ」を入力として、２値データであるｂｉｎＶａｌを出力する。同時に、更新された確率変数として「確率変数＿ｎｅｗ」を確率変数レジスタ１９に出力する。
【００９９】
確率変数レジスタ１９は、コンテクストインデクスＦＦ３３が出力する「コンテクストインデクス」と、「確率変数＿ｎｅｗ」を１対（セット）として一時保存する。
【０１００】
図２は、画像復号化装置が動作したときのタイミングチャートの一例を示す図である。図２を用いて図１のＡ、Ｂ及びＣの範囲におけるサイクルが同じサイクル時間で並行に実行されることで、算術復号化の手順において、１つ前の処理が完了しないと実行できなかったｂｉｎＶａｌを復号する処理及び次の識別子コードを算出する処理が３段階のパイプライン化により連続して処理できることを説明する。
【０１０１】
図２は、ＴｊサイクルからＴｊ＋７サイクルまで経過した場合の処理を示している。例えば、Ｔｊ＋３サイクルにおいて、「次識別子コード０算出部１０」は、「次の識別子コード」である「識別子コード０＿ｉ＋１」＝“Ｓｊ＋４＿２”を入力として、「次の次の
識別子コード」である「識別子コード００＿ｉ＋２」＝“Ｓｊ＋５＿０”と「識別子コー
ド０１＿ｉ＋２」＝“Ｓｊ＋５＿１”を出力する。同様に、もう一方の「次識別子コード
１算出部１１」は、「次の識別子コード」である「識別子コード１＿ｉ＋１」＝“Ｓｊ＋
４＿３”を入力として、「次の次の識別子コード」である「識別子コード１０＿ｉ＋２」
＝“Ｓｊ＋５＿２”と「識別子コード１１＿ｉ＋２」＝“Ｓｊ＋５＿３”を出力する。２
値データ復号化部１８の処理により、Ｔｊ＋３の同じサイクル内でｂｉｎＶａｌ＝“１”
が出力される。この値を使用して、「次の次の識別子コード」である「識別子コード００＿ｉ＋２」＝“Ｓｊ＋５＿０”と「識別子コード０１＿ｉ＋２」＝“Ｓｊ＋５＿１”と「
識別子コード１０＿ｉ＋２」＝“Ｓｊ＋５＿２”と「識別子コード１１＿ｉ＋２」＝“Ｓ
ｊ＋５＿３”とから「識別子コード１０＿ｉ＋２」＝“Ｓｊ＋５＿２”と「識別子コード
１１＿ｉ＋２」＝“Ｓｊ＋５＿３”が選択され、「識別子コード０＿ｉ＋２」＝“Ｓｊ＋
５＿２”と「識別子コード１＿ｉ＋２」＝“Ｓｊ＋５＿３”とされる。さらに、「識別子
コード０＿ｉ＋２」＝“Ｓｊ＋５＿２”と「識別子コード１＿ｉ＋２」＝“Ｓｊ＋５＿３
”の値を次の識別子コードＦＦ２８及び２９にセットし、次の識別子コードＦＦ２８及び
２９は、Ｔｊ＋４のサイクルにおいて、「識別子コード０＿ｉ＋１」＝“Ｓｊ＋５＿２”
と「識別子コード１＿ｉ＋１」＝“Ｓｊ＋５＿３”の値を出力する。
【０１０２】
また、Ｔｊ＋３サイクルにおいて、「次の識別子コード」である「識別子コード０＿ｉ＋１」＝“Ｓｊ＋４＿２”と「識別子コード１＿ｉ＋１」＝“Ｓｊ＋４＿３”とは、Ｔｊ
＋３の同じサイクル内で出力されたｂｉｎＶａｌ＝“１”の値により、「識別子コード１
＿ｉ＋１」＝“Ｓｊ＋４＿３”が選択され、「識別子コード＿ｉ＋１」＝“Ｓｊ＋４＿３
”となる。さらに、「識別子コード＿ｉ＋１」＝“Ｓｊ＋４＿３”の値を識別子コードＦ
Ｆ３２にセットし、識別子コードＦＦ３２は、次のＴｊ＋４サイクルにおいて「識別子コード＿ｉ」＝“Ｓｊ＋４＿３”の値を出力する。
【０１０３】
また、「コンテクストインデクス」についても同様である。したがって、次のＴｊ＋４サイクルにおいて、次の識別子コードＦＦ２８及び２９の出力は、「識別子コード０＿ｉ＋１」＝“Ｓｊ＋５＿２”及び「識別子コード１＿ｉ＋１」＝“Ｓｊ＋５＿３”となるの
と同様に、次のコンテクストインデクスＦＦ３０及び３１の出力は、「ｃｔｘＩｄｘ０＿ｉ＋１」＝“Ｃｊ＋５＿２”及び「ｃｔｘＩｄｘ１＿ｉ＋１」＝“Ｃｊ＋５＿３”となる
。また、識別子コードＦＦ３２の出力は、Ｔｊ＋４サイクルにおいて、「識別子コード＿ｉ」＝“Ｓｊ＋４＿３”となり、コンテクストインデクスＦＦ３３の出力は、「ｃｔｘＩ
ｄｘ＿ｉ」＝“Ｃｊ＋４＿３”となる。
【０１０４】
以上をまとめると、２値データ復号化部１８が、確率変数テーブル０部１６または確率変数テーブル１部１７から出力された確率変数を用いて、シンタクスの多値情報を２値データに変換した後にコンテクスト適応型２値算術符号化方式で算術符号化することによって得られる符号化データを復号化する。次識別子コード０算出部１０と次識別子コード１算出部１１とによる識別子コード候補の算出とコンテクストインデクス００算出部１２とコンテクストインデクス０１算出部１３とコンテクストインデクス１０算出部１４とコンテクストインデクス１１算出部１５とによるコンテクストインデクスの算出とは、同じ処理サイクル内で実行される。次識別子コード０算出部１０と次識別子コード１算出部１１とによる識別子コードの算出とコンテクストインデクス００算出部１２とコンテクストインデクス０１算出部１３とコンテクストインデクス１０算出部１４とコンテクストインデクス１１算出部１５とによるコンテクストインデクスの算出とからなる処理サイクルと、確率変数テーブル０部１６または確率変数テーブル１部１７からの確率変数を出力する処理サイクルと、２値データ復号化部１８が復号化する処理サイクルとは、３段のパイプラインとして、同時に実行される。
【０１０５】
図３は、図１における次識別子コード０算出部１０あるいは次識別子コード１算出部１１の変形例である。次識別子コード算出部１１１は、入力した識別子コードに対応するｂｉｎＶａｌが“１”のときの次の識別子コードを出力し、次識別子コード算出部１１２は
、入力した識別子コードに対応するｂｉｎＶａｌが“０”のときの次の識別子コードを出
力する。したがって、図１における次識別子コード０算出部１０あるいは次識別子コード１算出部１１を図３に示す次識別子コード算出部１１１及び次識別子コード算出部１１２で構成されてもよい。すなわち、ｂｉｎＶａｌの０または１の値に対応する場合のみ出力する回路にて図３に示す次識別子コード算出部１１１及び次識別子コード算出部１１２を構成してもよい。
【０１０６】
図４は、図１における次識別子コード０算出部１０あるいは次識別子コード１算出部１１の機能を概念的に示した図である。次識別子コード算出部１１３は、１つの識別子コードの入力に対して、入力した識別子コードに対応するｂｉｎＶａｌが“１”のときの次の
識別子コードと、入力した識別子コードに対応するｂｉｎＶａｌが“０”のときの次の識
別子コードの２つを出力する。したがって、図１における次識別子コード０算出部１０あるいは次識別子コード１算出部１１は、図４に示す次識別子コード算出部１１３にて構成されている。すなわち、１つの値に対して２つの値が出力する回路にて次識別子コード算出部１１１及び次識別子コード算出部１１２が構成されている。
【０１０７】
図５は、図１における確率変数レジスタ１９が確率変数の選択を行う回路を示す図であり、図１における確率変数レジスタ周辺の回路を詳細に示した図である。図５における回路は、２値データ復号化部１８と、確率変数レジスタ１９と、ＳＥＬ部２７と、コンテクストインデクスＦＦ３３と、確率変数ＦＦ３４と、比較器１８０とを備える。
【０１０８】
２値データ復号化部１８で更新された「確率変数」である「確率変数＿ｎｅｗ」は、コンテクストインデクスと１対（セット）で、確率変数レジスタ１９に格納される。確率変数レジスタ１９に格納された「確率変数」は、確率変数テーブルに値が反映されたら、削除される。
【０１０９】
比較器１８０は、本発明に係る比較器に相当し、前記確率変数出力手段から出力された確率変数に対応するコンテクストインデクスと前記確率変数レジスタに保持されたコンテクストインデクスとを比較する。
【０１１０】
ＳＥＬ２７は、本発明に係るセレクタに相当し、前記比較器での比較結果をもとに、前記確率変数出力手段から出力された確率変数及び前記確率変数レジスタに保持された確率変数の中から一つを選択して前記復号化部に出力する。具体的には、比較器１８０は、コンテクストインデクスＦＦ３３から出力される「コンテクストインデクス」である「ｃｔｘＩｄｘ＿ｉ」と、確率変数レジスタ１９に格納される「コンテクストインデクス」と比較する。同じものがあった場合は、ＳＥＬ２７は、確率変数レジスタ１９が保持する「コンテクストインデクス」に対応する「確率変数」を選択して、２値データ復号化部１８に出力する。同じものがない場合は、確率変数ＦＦ３４が出力する確率変数＿ｉを選択して、２値データ復号化部１８に出力する。
【０１１１】
コンテクストインデクスＦＦ３３から出力される「コンテクストインデクス」である「ｃｔｘＩｄｘ＿ｉ」と、同じ「コンテクストインデクス」が確率変数レジスタ１９の内部で複数保持されていた場合は、時間的に一番新しく格納された「コンテクストインデクス」に対応する「確率変数」を選択する。
【０１１２】
上記のように確率変数レジスタ１９を構成することで、同じ「コンテクストインデクス」が連続して、確率変数テーブルへの書き込みが間に合わない場合でも、確率変数レジスタで「確率変数」を置き換えて処理することができるので、図５の範囲（図１におけるＣの範囲）においても１サイクルで復号化処理することができる。
【０１１３】
また、確率変数レジスタ１９を構成することで、次の識別子コードに対応するコンテクストインデクス候補及び「コンテクストインデクス」候補に対応する「確率変数」候補を競合することなく「確率変数」として用いることができる。
【０１１４】
図６は、図１における確率変数レジスタ１９の変形例を示す図である。図６は、確率変数レジスタ１９が、先入れ先出し方式のパイプラインバッファであり、ＦＦ１９１、ＦＦ１９２、ＦＦ１９３、ＦＦ１９４及びＦＦ１９６によるパイプラインで構成されているときに確率変数の選択を行う回路を示す図を示す。
【０１１５】
コンテクストインデクスＦＦ３３から出力される「コンテクストインデクス」である「ｃｔｘＩｄｘ＿ｉ」と、２値データ復号化部１８で更新され出力された「確率変数」である「確率変数＿ｎｅｗ」とは、１対（１セット）とされて、確率変数レジスタ１９に入力される。確率変数レジスタ１９では、入力された「コンテクストインデクス」である「ｃｔｘＩｄｘ＿ｉ」と「確率変数」である「確率変数＿ｎｅｗ」とを、ＦＦ１９４とＦＦ１９１とでラッチする。ＦＦ１９４とＦＦ１９１とでラッチされた信号はそれぞれ、「ｃｔｘＩｄｘ＿１」、「確率変数＿１」という名前で出力される。同様に、「ｃｔｘＩｄｘ＿１」と「確率変数＿１」はＦＦ１９５とＦＦ１９２とでラッチされて「ｃｔｘＩｄｘ＿２」、「確率変数＿２」という信号で出力される。さらに、「ｃｔｘＩｄｘ＿２」と「確率変数＿２」はＦＦ１９６とＦＦ１９３とでラッチされて「ｃｔｘＩｄｘ＿３」、「確率変数＿３」という信号で出力される。
【０１１６】
比較器１８０は、比較器１８１、１８２及び１８３等の複数から構成されている。比較器１８０は、「ｃｔｘＩｄｘ＿ｉ」と、「ｃｔｘＩｄｘ＿１」または「ｃｔｘＩｄｘ＿２」または「ｃｔｘＩｄｘ＿３」とを比較し、一致しているかどうか判定する。比較器１８０において、「ｃｔｘＩｄｘ＿１」または「ｃｔｘＩｄｘ＿２」または「ｃｔｘＩｄｘ＿３」との中で、「ｃｔｘＩｄｘ＿ｉ」と一致しているものが見つかった場合、一致した「ｃｔｘＩｄｘ＿１」または「ｃｔｘＩｄｘ＿２」または「ｃｔｘＩｄｘ＿３」と１対（１セット）になっている「確率変数＿１」または「確率変数＿２」または「確率変数＿３」はＳＥＬ２７により選択され、２値データ復号化部１８に入力される。「ｃｔｘＩｄｘ＿ｉ」と「ｃｔｘＩｄｘ＿１」または「ｃｔｘＩｄｘ＿２」または「ｃｔｘＩｄｘ＿３」がすべて一致しない場合、ＳＥＬ２７により、確率変数ＦＦ３４から出力された「確率変数」である「確率変数＿ｉ」が選択される。
【０１１７】
「ｃｔｘＩｄｘ＿１」または「ｃｔｘＩｄｘ＿２」または「ｃｔｘＩｄｘ＿３」の中に、「ｃｔｘＩｄｘ＿ｉ」と一致するものが複数存在した場合は、「ｃｔｘＩｄｘ＿ｉ」と時間的に近いものが選択される。例えば、「ｃｔｘＩｄｘ＿１」と「ｃｔｘＩｄｘ＿２」とが「ｃｔｘＩｄｘ＿ｉ」と一致した場合は、「ｃｔｘＩｄｘ＿１」が優先され、ＳＥＬ２７によって「確率変数＿１」が選択される。「ｃｔｘＩｄｘ＿２」と「ｃｔｘＩｄｘ＿３」とが「ｃｔｘＩｄｘ＿ｉ」と一致した場合は、「ｃｔｘＩｄｘ＿２」が優先され、ＳＥＬ２７によって「確率変数＿２」が選択される。
【０１１８】
また、図６の例では、２値データ復号化部１８が２値データ復号化部１８で更新された「確率変数」である「確率変数＿ｎｅｗ」を出力してから、確率変数テーブル０部１６あるいは確率変数テーブル１部１７が有する確率変数テーブルに２値データ復号化部１８で更新された「確率変数」である「確率変数＿ｎｅｗ」の値が反映されるまで３サイクルかかる場合の例を示している。そのため、図６における確率変数レジスタ１９は、３段のパイプラインで構成される。２値データ復号化部１８で更新された「確率変数」である「確率変数＿ｎｅｗ」が出力されてから、４サイクル後以降は、確率変数テーブル０部１６あるいは確率変数テーブル１部１７が有する確率変数テーブルに書き込まれた「確率変数＿ｎｅｗ」の値が、「確率変数」である「確率変数＿ｉ」として確率変数テーブルより読み出される。
【０１１９】
以上のように、本発明の実施の形態１に係る復号化装置は、復号する２値データ（ｂｉｎＶａｌ）に対応する「識別子コード」の「次の識別子コード」を入力として、次識別子コード算出部で「次の次の識別子コード」候補を算出する。次識別子コード算出部では、復号する２値データが、“０”である場合と、“１”である場合それぞれについて、「次の次の識別子コード」候補を算出する。本発明の実施の形態１に係る復号化装置において同時に実行される２値データの復号が完了したとき、復号された値（ｂｉｎＶａｌ）を用いて、次識別子コード算出部で算出された２つの「次の次の識別子コード」候補から１つを選択し、復号化処理を行う。
【０１２０】
言い換えると、本発明の実施の形態１に係る復号化装置は、現在の２値データ（ｂｉｎＶａｌ）を復元中に、「次の次の（２つ先の）識別子コード」候補及び「次の次の識別子コード」候補に対応する「コンテクストインデクス」候補とを同サイクル中に並列に算出する。そして、次のサイクルで「次の（１つ先の）識別子コード」、次の識別子コードに対応するコンテクストインデクス候補及び「コンテクストインデクス」候補に対応する「確率変数」候補を並列に算出し、現在の２値データ（ｂｉｎＶａｌ）の復元結果が判明した時点で、それに応じていずれかの算出結果を選択するという手法にて復号化処理をする。
【０１２１】
それにより、算術復号化の手順において、１つ前の処理が完了しないと実行できなかったｂｉｎＶａｌを復号する処理及び次の識別子コードを算出する処理を３段階のパイプライン化することで、ＣＡＢＡＣによって符号化されたデータを復号化する際の算術復号処理の高速化を可能にすることができる。
【０１２２】
なお、コンテクストインデクス００算出部１２とコンテクストインデクス０１算出部１３とコンテクストインデクス１０算出部１４とコンテクストインデクス１１算出部１５とは、１つのコンテクストインデクス算出部として構成してもよい。その場合には、２値データ復号化部１８が次の処理サイクル及びさらに次の処理サイクルにおいて“００”、“
０１”、“１０”、“１１”を出力する場合の４種類の「コンテクストインデクス」を算
出する。そして、直前の処理サイクルで２値データ復号化部１８から出力された２値データに対応して、４種類のコンテクストインデクスの中から、“００”及び“０１”、ある
いは、“１０”、“１１”に対応するコンテクストインデクスを選択して出力する。
【０１２３】
また、算術復号化装置１００はさらに、符号化データを含む１つのストリームを連続して供給すること、及び、複数のストリームを切り替えながら供給することを選択的に実行するストリーム供給部を備え、２値データ復号化部１８は、ストリーム供給部から供給されるストリームに対して、コンテクスト適応型２値算術符号化方式で算術符号化することによって得られる符号化データの復号化を実行してもよい。本発明における復号化装置は、算術復号化の出力データレートをクロック周波数まで高めることができる。それにより、高ビットレートのストリームを復号化することと、通常のビットレート（１０〜４０Ｍｂｐｓ）のストリームを複数同時に復号化することの両方に対応することが可能になり、さまざまなストリームに対してスケーラブルに対応できる算術復号回路を有する復号化装置を実現できる。
【０１２４】
さらに、本発明におけるＣＡＢＡＣ算術復号化装置において、１ｂｉｎ／１サイクルの出力を行ってもよい。それにより、クロック周波数まで出力データレートをあげることができ、回路の消費電力も削減することが可能となる復号化装置を実現できる。
【０１２５】
（実施の形態２）
次に、実施の形態１における次識別子コード０算出部１０及び次識別子コード１算出部１１に対して、さらに識別子コード＿ｉを入力する場合、かつ、実施の形態１におけるコンテクストインデクス００算出部１２、コンテクストインデクス０１算出部１３、コンテクストインデクス１０算出部１４及びコンテクストインデクス１１算出部１５に対して、さらに識別子コード＿ｉ、識別子コード０＿ｉ＋１及び識別子コード１＿ｉ＋１を入力する場合の例を実施の形態２として説明する。
【０１２６】
図７は、本発明の実施の形態２における復号化装置１０２の構成を示すブロック図である。図１と同様の要素には同一の符号を付しており、詳細な説明は省略する。
【０１２７】
図７に示す復号化装置１０２は、実施の形態１に係る次識別子コード０算出部１０及び次識別子コード１算出部１１に対して次の識別子コード作成部４０の構成が異なる。また復号化装置１０２は、実施の形態１に係るコンテクストインデクス００算出部１２、コンテクストインデクス０１算出部１３、コンテクストインデクス１０算出部１４及びコンテクストインデクス１１算出部１５に対してｃｔｘＩｄｘ演算部４１の構成が異なる。
【０１２８】
次の識別子コード作成部４０は、次の識別子コードＦＦ２８及び２９から「次の識別子コード」である「識別子コード０＿ｉ＋１」と「識別子コード１＿ｉ＋１」とが入力される。
【０１２９】
次の識別子コード作成部４０は、さらに識別子コードＦＦ３２から「識別子コード」である「識別子コード＿ｉ」が入力される。
【０１３０】
次の識別子コード作成部４０は、「次の次の識別子コード」となる「識別子コード００＿ｉ＋２」と「識別子コード１０＿ｉ＋２」と「識別子コード０１＿ｉ＋２」と「識別子コード１１＿ｉ＋２」とを、ｃｔｘＩｄｘ演算部４１とＳＥＬ＿Ｓ０部２０とＳＥＬ＿Ｓ１部２１とに出力する。
【０１３１】
ｃｔｘＩｄｘ演算部４１は、次の識別子コード作成部４０により「次の次の識別子コード」である「識別子コード００＿ｉ＋２」と「識別子コード１０＿ｉ＋２」と「識別子コード０１＿ｉ＋２」と「識別子コード１１＿ｉ＋２」とが入力される。
【０１３２】
ｃｔｘＩｄｘ演算部４１は、さらに、次の識別子コードＦＦ２８及び２９から「次の識別子コード」である「識別子コード０＿ｉ＋１」及び「識別子コード１＿ｉ＋１」とが入力される。
【０１３３】
ｃｔｘＩｄｘ演算部４１は、また、識別子コードＦＦ３２から「識別子コード」である「識別子コード＿ｉ」が入力される。
【０１３４】
ｃｔｘＩｄｘ演算部４１は、「次の次のコンテクストインデクス」となる「ｃｔｘＩｄｘ００＿ｉ＋２」と「ｃｔｘＩｄｘ０１＿ｉ＋２」と「ｃｔｘＩｄｘ１０＿ｉ＋２」と「ｃｔｘＩｄｘ１１＿ｉ＋２」とを、ＳＥＬ＿Ｃ０部２２及びＳＥＬ＿Ｃ１部２３に出力する。
【０１３５】
図８は、次の識別子コード作成部４０の詳細を示す図である。
【０１３６】
図８に示すように、次の識別子コード作成部４０は、次識別子コード０算出部４００と次識別子コード１算出部４０１とを備える。
【０１３７】
次識別子コード０算出部４００は、「次の識別子コード」である「識別子コード０＿ｉ＋１」と「識別子コード」である「識別子コード＿ｉ」とが入力される。
【０１３８】
次識別子コード０算出部４００は、「次の次の識別子コード」となる「識別子コード００＿ｉ＋２」と「識別子コード０１＿ｉ＋２」とを出力する。
【０１３９】
また、次識別子コード１算出部４０１は、「次の識別子コード」である「識別子コード１＿ｉ＋１」と「識別子コード」である「識別子コード＿ｉ」が入力される。
【０１４０】
次識別子コード１算出部４０１は、「次の次の識別子コード」となる「識別子コード１０＿ｉ＋２」と「識別子コード１１＿ｉ＋２」とを出力する。
【０１４１】
次識別子コード０算出部４００は、「識別子コード」である「識別子コード＿ｉ」に対応するｂｉｎＶａｌの値（復号する２値データ）が“０”であった場合の演算を行い、ｉ＋２番目の識別子コードである「識別子コード００＿ｉ＋２」と「識別子コード０１＿ｉ＋２」とを出力する。
【０１４２】
ここで、「識別子コード００＿ｉ＋２」は、ｉ番目のｂｉｎＶａｌの値が“０”かつｉ＋１番目のｂｉｎＶａｌの値が“０”のときの、ｉ＋２番目の識別子コードである。「識別子コード０１＿ｉ＋２」は、ｉ番目のｂｉｎＶａｌの値が“０”かつｉ＋１番目のｂｉｎＶａｌの値が“１”のときの、ｉ＋２番目の識別子コードである。
【０１４３】
同様に、次識別子コード１算出部４０１は、「識別子コード」である「識別子コード＿ｉ」に対応するｂｉｎＶａｌの値が“１”であった場合の演算を行い、ｉ＋２番目の識別子コードである「識別子コード１０＿ｉ＋２」と「識別子コード１１＿ｉ＋２」とを出力する。
【０１４４】
ここで、「識別子コード１０＿ｉ＋２」は、ｉ番目のｂｉｎＶａｌの値が“１”かつｉ＋１番目のｂｉｎＶａｌの値が“０”のときの、ｉ＋２番目の識別子コードである。「識別子コード１１＿ｉ＋２」は、ｉ番目のｂｉｎＶａｌの値が“１”かつｉ＋１番目のｂｉｎＶａｌの値が“１”のときの、ｉ＋２番目の識別子コードである。
【０１４５】
次識別子コード０算出部４００及び次識別子コード１算出部４０１では、隣接及びカレントマクロブロック情報レジスタ３５から、すでに復号化したｂｉｎＶａｌの値とそのｂｉｎＶａｌに対応する識別子コードを参照して演算を行う。しかし、この演算を行う時点で、ｉ番目のｂｉｎＶａｌの値はまだ隣接及びカレントマクロブロック情報レジスタ３５に格納されていないため、次識別子コード０算出部４００及び次識別子コード１算出部４０１は、ｉ＋２番目の識別子コードを演算することができない場合が発生する。
【０１４６】
しかし、本発明の実施の形態２に係る復号化装置１０２によれば、上記のように、識別子コードＦＦ３２から「識別子コード」である「識別子コード＿ｉ」が、次識別子コード０算出部４００と次識別子コード１算出部４０１とに入力される。それにより、隣接及びカレントマクロブロック情報レジスタ３５に格納前の情報が演算に必要となる場合に、ｉ＋２番目の識別子コードを演算することが可能になる。
【０１４７】
図９は、ｃｔｘＩｄｘ演算部４１の詳細を示す図である。
【０１４８】
図９に示すように、ｃｔｘＩｄｘ演算部４１は、コンテクストインデクス００算出部４１２と、コンテクストインデクス０１算出部４１３と、コンテクストインデクス１０算出部４１４と、コンテクストインデクス１１算出部４１５とを備える。
【０１４９】
コンテクストインデクス００算出部４１２は、「次の次の識別子コード」である「識別子コード００＿ｉ＋２」と、「次の識別子コード」である「識別子コード０＿ｉ＋１」と、「識別子コード」である「識別子コード＿ｉ」とが入力される。
【０１５０】
コンテクストインデクス００算出部４１２は、「次の次のコンテクストインデクス」となる「ｃｔｘＩｄｘ００＿ｉ＋２」を出力する。
【０１５１】
コンテクストインデクス０１算出部４１３は、同様に、「次の次の識別子コード」である「識別子コード０１＿ｉ＋２」と、「次の識別子コード」である「識別子コード０＿ｉ＋１」と、「識別子コード」である「識別子コード＿ｉ」とが入力される。コンテクストインデクス０１算出部４１３は、「次の次のコンテクストインデクス」となる「ｃｔｘＩｄｘ０１＿ｉ＋２」を出力する。
【０１５２】
コンテクストインデクス１０算出部４１４は、同様に、「次の次の識別子コード」である「識別子コード１０＿ｉ＋２」と、「次の識別子コード」である「識別子コード１＿ｉ＋１」と、「識別子コード」である「識別子コード＿ｉ」が入力される。コンテクストインデクス１０算出部４１４は、「次の次のコンテクストインデクス」となる「ｃｔｘＩｄｘ１０＿ｉ＋２」を出力する。
【０１５３】
コンテクストインデクス１１算出部４１５は、「次の次の識別子コード」である「識別子コード１１＿ｉ＋２」と、「次の識別子コード」である「識別子コード１＿ｉ＋１」と、「識別子コード」である「識別子コード＿ｉ」が入力される。コンテクストインデクス１１算出部４１５は、「次の次のコンテクストインデクス」となる「ｃｔｘＩｄｘ１１＿ｉ＋２」を出力する。
【０１５４】
コンテクストインデクス００算出部４１２は、ｉ番目のｂｉｎＶａｌの値が“０”でｉ＋１番目のｂｉｎＶａｌの値が“０”のときの演算を行う。同様に、コンテクストインデクス０１算出部４１３、コンテクストインデクス１０算出部４１４、コンテクストインデクス１１算出部４１５は、（ｉ番目のｂｉｎＶａｌの値、ｉ＋１番目のｂｉｎＶａｌの値）が、それぞれ（０、１）、（１、０）、（１、１）のときの演算を行う。
【０１５５】
このとき、コンテクストインデクス００算出部４１２と、コンテクストインデクス０１算出部４１３と、コンテクストインデクス１０算出部４１４と、コンテクストインデクス１１算出部４１５とは、それぞれｉ番目のｂｉｎＶａｌ及びｉ＋１番目のｂｉｎＶａｌの値に対応する識別子コードが入力される。
【０１５６】
ｃｔｘＩｄｘ演算部４１では、隣接及びカレントマクロブロック情報レジスタ３５の値を用いて演算を行う。しかし、ｃｔｘＩｄｘ演算部４１がｉ＋２番目の演算を実施する際に、ｉ＋１番目のｂｉｎＶａｌの値とｂｉｎＶａｌに対応する識別子コードの情報と、ｉ番目のｂｉｎＶａｌの値とｂｉｎＶａｌに対応する識別子コードの情報がまだ隣接及びカレントマクロブロック情報レジスタ３５に格納されていない場合がある。そのため、ｃｔｘＩｄｘ演算部４１は、演算を行うことができない場合が発生する。
【０１５７】
しかし、本発明の実施の形態２に係る復号化装置１０２によれば、上記のように、次の識別子コードＦＦ２８及び２９からｉ＋１番目の識別子コードである「識別子コード０＿ｉ＋１」及び「識別子コード１＿ｉ＋１」と、識別子コードＦＦ３２からｉ番目の識別子コードである「識別子コード＿ｉ」とが入力される。それにより、隣接及びカレントマクロブロック情報レジスタ３５にｉ＋１番目及びｉ番目の情報が格納されていなくても、ｉ＋２番目のｃｔｘＩｄｘの演算を常時実施することが可能になる。
【０１５８】
（実施の形態３）
上述の実施の形態１では、ＣＡＢＡＣによって符号化されたデータを復号化する際の、算術復号処理の高速化が可能となる装置を、実現することができる。実施の形態３では、ＣＡＢＡＣによって符号化されたデータを復号化する際の、算術復号処理のさらなる高速化が可能となる装置について説明する。
【０１５９】
以下、本発明の実施の形態３について、図面を用いて説明する。図１０は、本発明の実施の形態３における復号化装置１０４の構成を示すブロック図である。
【０１６０】
図１０の構成が、図１すなわち、実施の形態１の構成と異なる点は次ＭＶＤ算出部７１とＭＶＤ＿ｘコンテクストインデクス算出部７２とＭＶＤ＿ｙコンテクストインデクス算出部７３と、ＭＶＤシンタクスｘＦＦ７４とＭＶＤシンタクスｙＦＦ７５が追加されている点である。
【０１６１】
識別子コードが動きベクトル（以下、ＭＶＤと記載）を示す場合において、ＭＶＤのコンテクストインデクス算出は、ＭＶＤの種類が多く、検索（対応付け）が複雑なため、処理量が大きい。そのため、図１における「ｉ＋２番への２値データ算出用」で示される範囲のサイクルの処理時間が大きくなる。そこで、識別子コードがＭＶＤを示す場合の処理を独立させることで、ＣＡＢＡＣによって符号化されたデータを復号化する際の算術復号処理の高速化を可能とする。
【０１６２】
ＭＶＤは、ＭＶＤ＿ｘとＭＶＤ＿ｙとが交互に出現する。このことを利用して、図１０の回路を構成する。つまり、図１０において、識別子コードがＭＶＤ＿ｘを示すとき「次のＭＶＤ＿ｘ」を示す識別子コードを算出し、識別子コードがＭＶＤ＿ｙを示すとき「次のＭＶＤ＿ｙ」を示す識別子コードを算出するようにして、ＭＶＤのコンテクストインデクス算出を独立させている。
【０１６３】
次ＭＶＤ算出部７１は、本発明に係るＭＶＤ算出手段に相当し、入力した識別子コードがＭＶＤを示す場合、次のＭＶＤベクトルの識別子コードを算出する。具体的には、ＳＥＬ＿Ｓ部２４より出力された「識別子コード＿ｉ＋１」を入力として、「識別子コード＿ｉ＋１」の値がＭＶＤであるとき、「次のＭＶＤ」の識別子コードを求める。
【０１６４】
ＭＶＤシンタクスｘＦＦ７４は、次ＭＶＤ算出部７１により出力された識別子コードが、ＭＶＤ＿ｘであるとき、その値をＭＶＤシンタクスｘＦＦ７４にセットする。もしくは、ＳＥＬ＿Ｓ部２４より出力された「識別子コード＿ｉ＋１」がＭＶＤ＿ｘのときに、次ＭＶＤ算出部７１により出力される識別子コードをＭＶＤシンタクスｘＦＦ７４にセットするとしてもよい。
【０１６５】
ＭＶＤシンタクスｙＦＦ７５は、次ＭＶＤ算出部７１により出力された識別子コードが、ＭＶＤ＿ｙであるとき、その値をＭＶＤ識別子コードｙＦＦ７５にセットする。もしくは、「識別子コード＿ｉ＋１」がＭＶＤ＿ｙのときに、次ＭＶＤ算出部７１により出力される識別子コードをＭＶＤシンタクスｙＦＦ７５にセットするとしてもよい。
【０１６６】
ここで、ＭＶＤシンタクスｘＦＦ７４とＭＶＤシンタクスｙＦＦ７５とから出力される識別子コードのｂｉｎＩｄｘは常に０である。
【０１６７】
ＭＶＤ＿ｘコンテクストインデクス算出部７２は、本発明に係るＭＶＤコンテクストインデクス算出手段に相当し、前記ＭＶＤベクトルの識別子コードを入力として、コンテクストインデクスを算出する。具体的には、ＭＶＤシンタクスｘＦＦ７４により出力されるＭＶＤ＿ｘの識別子コードに対応する「コンテクストインデクス」を算出し、「ＭＶＤ＿ｘコンテクストインデクス」としてＳＥＬ＿Ｃ０部２２及びＳＥＬ＿Ｃ１部２３に出力する。
【０１６８】
ＭＶＤ＿ｙコンテクストインデクス算出部７３は、本発明に係るＭＶＤコンテクストインデクス算出手段に相当し、前記ＭＶＤベクトルの識別子コードを入力として、コンテクストインデクスを算出する。具体的には、ＭＶＤシンタクスｙＦＦ７５により出力されるＭＶＤ＿ｙの識別子コードに対応する「コンテクストインデクス」を算出し、「ＭＶＤ＿ｙコンテクストインデクス」としてＳＥＬ＿Ｃ０部及びＳＥＬＣ１部に出力する。
【０１６９】
ＳＥＬ＿Ｃ０部２２では、「識別子コード０＿ｉ＋２」の値がＭＶＤ＿ｘかつｂｉｎＩｄｘ＝０のとき、「次の次のコンテクストインデクス」として「ＭＶＤ＿ｘコンテクストインデクス」を選択する。ＳＥＬ＿Ｃ０部２２は、「識別子コード０＿ｉ＋２」の値がＭＶＤ＿ｙかつｂｉｎＩｄｘ＝０のとき、「次の次のコンテクストインデクス」として「ＭＶＤ＿ｙコンテクストインデクス」を選択する。「次の識別子コード」となる「識別子コード０＿ｉ＋２」の値が上記以外のとき、ＳＥＬ＿Ｃ０部２２は、ｂｉｎＶａｌ＝０のとき「次の次のコンテクストインデクス」として「ｃｔｘＩｄｘ００＿ｉ＋２」を選択し、ｂｉｎＶａｌ＝１のとき「次の次のコンテクストインデクス」として「ｃｔｘＩｄｘ１０＿ｉ＋２」を選択する。選択されたコンテクストインデクスは、「ｃｔｘＩｄｘ０＿ｉ＋２」として、ＳＥＬ＿Ｃ０部から出力される。
【０１７０】
ＳＥＬ＿Ｃ１部２３では、「識別子コード１＿ｉ＋２」の値がＭＶＤ＿ｘかつｂｉｎＩｄｘ＝０のとき、「次の次のコンテクストインデクス」として「ＭＶＤ＿ｘコンテクストインデクス」を選択する。ＳＥＬ＿Ｃ１部２３は、「識別子コード１＿ｉ＋２」の値がＭＶＤ＿ｙかつｂｉｎＩｄｘ＝０のとき、「次の次のコンテクストインデクス」として「ＭＶＤ＿ｙコンテクストインデクス」を選択する。「次の識別子コード」となる「識別子コード１＿ｉ＋２」の値が上記以外のとき、ＳＥＬ＿Ｃ１部２３は、ｂｉｎＶａｌ＝０のとき「次の次のコンテクストインデクス」として「ｃｔｘＩｄｘ０１＿ｉ＋２」を選択し、ｂｉｎＶａｌ＝１のとき「次の次のコンテクストインデクス」として「ｃｔｘＩｄｘ１１＿ｉ＋２」を選択する。選択されたコンテクストインデクスは、「ｃｔｘＩｄｘ１＿ｉ＋２」として、ＳＥＬ＿Ｃ１部から出力される。
【０１７１】
図１１は、図１０の復号化装置１０４が動作したときのタイミングチャートの一例を示す図である。タイミングチャートの中で、“ＭＶＤ＿１＿ｙ＿０”とは、マクロブロック
内のブロックインデクス＝１、ＭＶＤ＿ｙ及びｂｉｎＩｄｘ＝０となる識別子コードを示す。ブロックインデクスとは、マクロブロック（１６ｘ１６画素）を４ｘ４画素のブロックに分割したとき、４ｘ４画素ブロックにつけられたインデクスである。ブロックインデクスは０〜１５の値をとる。
【０１７２】
例えば、図８におけるＴ０サイクルにおいて、「識別子コード＿ｉ＋１」の値は、ＭＶＤ＿１＿ｙ＿０である。次ＭＶＤ算出部７１では、この値が入力され「次のＭＶＤ」の識別子コードとなるＭＶＤ＿２＿ｙが出力される。
【０１７３】
ＭＶＤシンタクスｙＦＦ７５は、次ＭＶＤ算出部７１により出力された識別子コードのＭＶＤ＿ｙの値であるＭＶＤ＿２＿ｙをＭＶＤシンタクスｙＦＦ７５にセットする。
【０１７４】
続くＴ１サイクルにおいて、ＭＶＤ＿ｙコンテクストインデクス算出部７３は、ＭＶＤシンタクスｙＦＦ７５にセットされている値であるＭＶＤ＿２＿ｙが入力され、識別子コード＝ＭＶＤ＿２＿ｙに対応する「コンテクストインデクス」を算出し、「ＭＶＤ＿ｙコンテクストインデクス」としてＳＥＬ＿Ｃ０部２２及びＳＥＬ＿Ｃ１部２３に出力する。
【０１７５】
Ｔ１サイクルにおいて、「識別子コード０＿ｉ＋２」の値が、ＭＶＤ＿ｙかつｂｉｎＩｄｘ＝０であるので、ＳＥＬ＿Ｃ０部２２は、「次の次のコンテクストインデクス」として「ＭＶＤ＿ｙコンテクストインデクス」を選択し、「ｃｔｘＩｄｘ０＿ｉ＋２」＝「ＭＶＤ＿ｙコンテクストインデクス」を次のコンテクストインデクスＦＦ３０に出力する。つまり、「ｃｔｘＩｄｘ０＿ｉ＋２」＝「ＭＶＤ＿ｙコンテクストインデクス」＝（ＭＶＤ＿２＿Ｙ＿０のコンテクストインデクス値）となる。
【０１７６】
また、Ｔ１サイクルでは、「識別子コード＿ｉ＋１」の値は、ＭＶＤ＿２＿ｘ＿０である。次ＭＶＤ算出部７１では、この値が入力されて「次のＭＶＤ」としてＭＶＤ＿３＿ｘをＭＶＤシンタクスｘＦＦ７４に出力する。
【０１７７】
また、ＭＶＤシンタクスｘＦＦ７４は、次ＭＶＤ算出部７１により出力された識別子コードのＭＶＤ＿ｘの値であるＭＶＤ＿３＿ｘをＭＶＤシンタクスｘＦＦ７４にセットする。
【０１７８】
Ｔ２サイクルにおいて、ＭＶＤ＿ｘコンテクストインデクス算出部７２は、ＭＶＤシンタクスｘＦＦ７４にセットされている値であるＭＶＤ＿３＿ｘが入力され、識別子コード＝ＭＶＤ＿３＿ｘに対応する「コンテクストインデクス」を算出し、「ＭＶＤ＿ｘコンテクストインデクス」としてＳＥＬ＿Ｃ０部２２及びＳＥＬ＿Ｃ１部２３に出力する。
【０１７９】
Ｔ２サイクルにおいて、「識別子コード０＿ｉ＋２」の値がＭＶＤ＿ｘかつｂｉｎＩｄｘ＝０であるので、ＳＥＬ＿Ｃ０部２２は、「次の次のコンテクストインデクス」として「ＭＶＤ＿ｘコンテクストインデクス」を選択し、「ｃｔｘＩｄｘ０＿ｉ＋２」＝「ＭＶＤ＿ｘコンテクストインデクス」として次のコンテクストインデクスＦＦ３０に出力する。
【０１８０】
また、Ｔ３サイクル、Ｔ４サイクル及びＴ５サイクルにおいて、「識別子コード＿ｉ＋１」の値は、ＭＶＤ＿３＿ｘ＿０、ＭＶＤ＿３＿ｘ＿１、ＭＶＤ＿３＿ｘ＿２となるが、次ＭＶＤ算出部７１により出力される値は、どれもＭＶＤ＿４＿ｘとなる。Ｔ３サイクル、Ｔ４サイクル及びＴ５サイクルにおいて、ＭＶＤシンタクスｘＦＦ７４には、同じＭＶＤ＿４＿ｘの値がセットされる。
【０１８１】
図１２は、図１０の次ＭＶＤ算出部７１の構成の変形例を示したブロック図である。図１２の構成が、図１０の構成と異なる点は次ＭＶＤ算出部７１が次ＭＶＤ０算出部７１０と次ＭＶＤ１算出部７１１とに置き換わり、ＳＥＬ７１２が追加されている点である。
【０１８２】
次ＭＶＤ０算出部７１０は、「識別子コード０＿ｉ＋１」が入力され、「識別子コード０＿ｉ＋１」の値がＭＶＤのとき、「次のＭＶＤ」の識別子コードを算出する。
【０１８３】
次ＭＶＤ１算出部７１１は、「次の識別子コード」である「識別子コード１＿ｉ＋１」が入力され、「識別子コード１＿ｉ＋１」の値がＭＶＤのとき、「次のＭＶＤ」の識別子コードを算出する。
【０１８４】
ＳＥＬ７１２は、次ＭＶＤ０算出部７１０からの出力と次ＭＶＤ１算出部７１１からの出力とを、ｂｉｎＶａｌの値によって選択する。ＳＥＬ７１２は、ｂｉｎＶａｌ＝０のとき次ＭＶＤ０算出部７１０からの出力が選択され、ｂｉｎＶａｌ＝１のとき次ＭＶＤ１算出部７１１からの出力が選択される。ＳＥＬ７１２によって選択された値は、図７の場合と同様に、ＭＶＤシンタクスｘＦＦ７４、もしくはＭＶＤシンタクスｙＦＦ７５に入力される。
【０１８５】
ＭＶＤシンタクスｘＦＦ７４は、ＳＥＬ７１２から出力される識別子コードが、ＭＶＤ＿ｘであるとき、その値をＭＶＤシンタクスｘＦＦ７４にセットする。もしくは、「識別子コード＿ｉ＋１」がＭＶＤ＿ｘのときに、ＳＥＬ７１２から出力される識別子コードをＭＶＤシンタクスｘＦＦ７４にセットするとしてもよい。
【０１８６】
また、ＭＶＤシンタクスｙＦＦ７５は、ＳＥＬ７１２から出力される識別子コードが、ＭＶＤ＿ｙであるとき、その値をＭＶＤシンタクスｙＦＦ７５にセットする。もしくは、「識別子コード＿ｉ＋１」がＭＶＤ＿ｙのときに、ＳＥＬ７１２から出力される識別子コードをＭＶＤシンタクスｙＦＦ７５にセットするとしてもよい。
【０１８７】
以上のように、識別子コードの値が動きベクトル（以下、ＭＶＤと記載）を示す場合には、ＭＶＤのコンテクスト算出は、ＭＶＤの種類が多く、検索（対応付け）が複雑なため、処理量が大きい。そこで、本発明の実施の形態３に係る復号化装置は、ＭＶＤがＭＶＤ＿ｘとＭＶＤ＿ｙと交互に出現することを利用して識別子コードがＭＶＤのときのコンテクストインデクス算出の処理を独立させる。すなわち、識別子コードの順番における次のＭＶＤベクトルの識別子コードを算出する次ＭＶＤ算出部７１と、前記次ＭＶＤ算出部７１で算出されたＭＶＤの値からコンテクストインデクスを算出するＭＶＤ＿ｘコンテクストインデクス算出部７２とＭＶＤ＿ｙコンテクストインデクス算出部７３とを備えることで、識別子コードの値がＭＶＤであるとき、コンテクストインデクス選択回路において、ＭＶＤコンテクスト算出部において独立に算出されたコンテクストを選択することができる。それにより、ＣＡＢＡＣによって符号化されたデータを復号化する際の算術復号処理の高速化が実現できる。
【０１８８】
したがって、本発明におけるＣＡＢＡＣ算術復号化装置によれば、並列に次ＭＶＤ算出部を備えることにより、コンテクストインデクスの算出にかかる回路を高速化することが可能になるので、１０〜２０％以上の回路の高速化を実現し、復号化処理性能も１０〜２０％以上向上することが可能となる。
【０１８９】
（実施の形態４）
図１３は、本発明の実施の形態４における符号化装置８００の構成を示すブロック図である。符号化装置８００は、コンテクスト適応型２値算術符号化方式において、シンタクスの多値情報を２値データに変換したデータの列を入力とし、算術符号化によって符号化された符号化データを出力とする算術符号化装置である。図１３に示されるように、符号化装置８００は、識別子コードシーケンス部８０と、ｃｔｘＩｄｘ算出部８１と、カレントマクロブロック情報レジスタ８２と、隣接マクロブロック情報レジスタ８３と、エンコード部８４と、確率変数テーブル８５とを備える。符号化装置８００は、さらに、ＦＦ７９、８６、８７、８８、８９、９０及び９１を備える。
【０１９０】
識別子コードシーケンス部８０は、ＦＦ８６から識別子コードと、ＦＦ７９からその識別子コードに対応する２値データと、カレントマクロブロック情報レジスタ８２に格納されている情報と、隣接マクロブロック情報レジスタ８３に格納されている情報とを入力とが入力される。
【０１９１】
識別子コードシーケンス部８０は、識別子コードの次の識別子コードを計算し、計算した次の識別子コードをＦＦ８６に出力する。
【０１９２】
ｃｔｘＩｄｘ算出部８１は、ＦＦ８６から識別子コードと、カレントマクロブロック情報レジスタ８２に格納されている情報と、隣接マクロブロック情報レジスタ８３に格納されている情報とが入力される。
【０１９３】
ｃｔｘＩｄｘ算出部８１は、入力された識別子コードに対応したｃｔｘＩｄｘの値を計算し、計算したｃｔｘＩｄｘの値をＦＦ９０に出力する。
【０１９４】
カレントマクロブロック情報レジスタ８２は、ＦＦ８６から識別子コードと、ＦＦ７９からその識別子コードに対応する２値データとが入力される。
【０１９５】
カレントマクロブロック情報レジスタ８２は、現在符号化対象となっているマクロブロックの情報を生成してＦＦ８９に格納する。カレントマクロブロック情報レジスタ８２は、ＦＦ８９に格納しているマクロブロックの情報をｃｔｘＩｄｘ算出部８１や識別子コードシーケンス部８０に対して出力する。
【０１９６】
隣接マクロブロック情報レジスタ８３は、現在符号化対象となっているマクロブロックに隣接するマクロブロックの情報のうち、識別子コードシーケンス部８０及びｃｔｘＩｄｘ算出部８１で参照される情報を格納する。隣接マクロブロック情報レジスタ８３は、格納している情報を、ｃｔｘＩｄｘ算出部８１や識別子コードシーケンス部８０に対して出力する。
【０１９７】
確率変数テーブル８５は、ＦＦ９０からのｃｔｘＩｄｘを入力としてｃｔｘＩｄｘに対応する確率変数を選択する。確率変数テーブル８５は、選択した確率変数をＦＦ９１に出力する。
【０１９８】
エンコード部８４は、ＦＦ９１からの確率変数とＦＦ８８からの２値データを入力として、２値データの算術符号化を行い、符号化データ（ストリーム）として出力する。
【０１９９】
次に、符号化装置８００の動きについて説明する。
【０２００】
まず、符号化装置８００において、復号化装置１００、１０２または１０４から２値データがＦＦ７９に入力される。
【０２０１】
次に、ＦＦ７９は、その２値データを、識別子コードシーケンス部８０とカレントマクロブロック情報レジスタ８２とＦＦ８７とに同時に出力する。
【０２０２】
識別子コードシーケンス部８０は、ＦＦ７９からの２値データと、その２値データに対応する識別子コードとが同時に入力される。
【０２０３】
次に、識別子コードシーケンス部８０は、次の識別子コードを演算し、演算した次の識別子コードをＦＦ８６に出力する。このとき出力された次の識別子コードは、次に入力される２値データに対応する識別子コードとして使用される。
【０２０４】
次に、ＦＦ８６は、２値データに対応する識別子コードを、ｃｔｘＩｄｘ算出部８１と識別子コードシーケンス部８０とカレントマクロブロック情報レジスタ８２とに出力する。
【０２０５】
ｃｔｘＩｄｘ算出部８１は、入力された識別子コードに対応するｃｔｘＩｄｘを算出する。ｃｔｘＩｄｘ算出部８１は算出したｃｔｘＩｄｘをＦＦ９０に出力する。
【０２０６】
次に、ＦＦ９０は、入力されたｃｔｘＩｄｘを、確率変数テーブル８５に出力する。
【０２０７】
確率変数テーブル８５は、入力されたｃｔｘＩｄｘに対応する確率変数が読み出す。確率変数テーブル８５は、読み出した確立変数をＦＦ９１に出力する。
【０２０８】
次に、エンコード部８４は、ＦＦ８８からの符号化装置８００に入力された２値データと、ＦＦ９１からのその２値データに対応する確率変数とが入力される。
【０２０９】
エンコード部８４は、入力された２値データと確率変数とを用いて算術符号化を行う、すなわち、２値データを符号化する。エンコード部８４は、符号化データを出力する。
【０２１０】
なお、ｃｔｘＩｄｘ算出部８１によるｃｔｘＩｄｘの算出処理と、確率変数テーブル８５による確率変数の検索及び出力処理と、エンコード部８４による算術符号化処理とは、パイプラインで構成され、連続する２値データに対して同時に実行される。
【０２１１】
以上のように、符号化装置８００では、入力された２値データが属するシンタクスエレメントとｂｉｎＩｄｘに対応する識別子コードとを設定し、識別子コードシーケンス部８０で次の２値データに対応する識別子コードを算出することで、シンタクスエレメントとｂｉｎＩｄｘとのシーケンス処理を容易にする。それにより、符号化処理の高速化及び符号化回路の削減を実現することが可能となる。
【０２１２】
以上、本発明の復号化装置及び符号化装置について、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。
【産業上の利用可能性】
【０２１３】
本発明は、ＣＡＢＡＣにより符号化されたデータを復号化する復号化装置に利用すること及びＣＡＢＡＣによりデータを符号化する符号化装置に利用することができ、特に、ＡＶＣ／Ｈ．２６４に規格されたデータ圧縮技術により符号化されたハイビジョン映像などを再生するための復号化装置及びＡＶＣ／Ｈ．２６４に規格されたデータ圧縮技術によりハイビジョン映像などを符号化するための符号化装置に利用することができる。
【図面の簡単な説明】
【０２１４】
【図１】本発明の実施の形態１における復号化装置の構成を示すブロック図である。
【図２】本発明の実施の形態１における画像復号化装置が動作したときのタイミングチャートの一例を示す図である。
【図３】本発明の実施の形態１における次識別子コード０算出部あるいは次識別子コード１算出部の変形例である。
【図４】本発明の実施の形態１における次識別子コード０算出部１０あるいは次識別子コード１算出部１１の機能を概念的に示した図である。
【図５】本発明の実施の形態１における確率変数レジスタ１９が確率変数の選択を行う回路を示す図である。
【図６】本発明の実施の形態１における確率変数レジスタ１９の変形例を示す図である。
【図７】本発明の実施の形態２における復号化装置の構成を示すブロック図である。
【図８】本発明の実施の形態２における次の識別子コード作成部の詳細を示すブロック図である。
【図９】本発明の実施の形態２におけるｃｔｘＩｄｘ演算部の詳細を示すブロック図である。
【図１０】本発明の実施の形態３における復号化装置の構成を示すブロック図である。
【図１１】本発明の実施の形態３における画像復号化装置が動作したときのタイミングチャートの一例を示す図である。
【図１２】本発明の実施の形態３における次ＭＶＤ算出部７１の構成の変形例を示したブロック図である。
【図１３】本発明の実施の形態４における符号化装置の構成を示すブロック図である。
【符号の説明】
【０２１５】
１０、４００  次識別子コード０算出部
１１、４０１  次識別子コード１算出部
１２、４１２  コンテクストインデクス００算出部
１３、４１３  コンテクストインデクス０１算出部
１４、４１４  コンテクストインデクス１０算出部
１５、４１５  コンテクストインデクス１１算出部
１６  確率変数テーブル０部
１７  確率変数テーブル１部
１８  ２値データ復号化部
１９  確率変数レジスタ
２０  ＳＥＬ＿Ｓ０部
２１  ＳＥＬ＿Ｓ１部
２２  ＳＥＬ＿Ｃ０部
２３  ＳＥＬ＿Ｃ１部
２４  ＳＥＬ＿Ｓ部
２５  ＳＥＬ＿Ｃ部
２６  ＳＥＬ＿Ｋ部
２７、７１２  ＳＥＬ部
２８、２９  次の識別子コードＦＦ
３０、３１  次のコンテクストインデクスＦＦ
３２  識別子コードＦＦ
３３  コンテクストインデクスＦＦ
３４  確率変数ＦＦ
３５  隣接及びカレントマクロブロック情報レジスタ
４０  次の識別子コード作成部
４１  ｃｔｘＩｄｘ演算部
７１  次ＭＶＤ算出部
７２  ＭＶＤ＿ｘコンテクストインデクス算出部
７３  ＭＶＤ＿ｙコンテクストインデクス算出部
７４  ＭＶＤシンタクスｘＦＦ
７５  ＭＶＤシンタクスｙＦＦ
８０  識別子コードシーケンス部
８１  ｃｔｘＩｄｘ算出部
８２  カレントマクロブロック情報レジスタ
８３  隣接マクロブロック情報レジスタ
８４  エンコード部
８５  確率変数テーブル
７９、８６、８７、８８、８９、９０、９１、１９１、１９２、１９３、１９４、１９６  ＦＦ
１００、１０２、１０４  復号化装置
１１１、１１２、１１３  次識別子コード算出部
７１０  次ＭＶＤ０算出部
７１１  次ＭＶＤ１算出部
８００  符号化装置
【図１】
2008289125.tif 000003
【図２】
2008289125.tif 000004
【図３】
2008289125.tif 000005
【図４】
2008289125.tif 000006
【図５】
2008289125.tif 000007
【図６】
2008289125.tif 000008
【図７】
2008289125.tif 000009
【図８】
2008289125.tif 000010
【図９】
2008289125.tif 000011
【図１０】
2008289125.tif 000012
【図１１】
2008289125.tif 000013
【図１２】
2008289125.tif 000014
【図１３】
2008289125.tif 000015