(57)【要約】【課題】  復号化回路を複数有することなく、単位時間当たりの出力データ量を増加させるためのＣＡＢＡＣ復号化装置を提供する。【解決手段】  コンテキスト適応型２値算術符号化方式（ＣＡＢＡＣ）により符号化されたデータを復号化する装置であって、符号化されたデータである符号化データを複数取得する入力セレクタ１１６と、複数の符号化データのそれぞれに対応付けられたコンテキスト変数テーブル１０５ａ、コンテキスト変数テーブル１０５ｂ、およびコンテキスト変数テーブル１０５ｃと、複数の符号化データを、それぞれに対応付けられたコンテキスト変数テーブルを用いて復号化する復号化部１０３とを備える。【選択図】  図１
2007074648.tif 000002
【特許請求の範囲】
【請求項１】
コンテキスト適応型２値算術符号化方式（ＣＡＢＡＣ）により符号化されたデータを復号化する装置であって、
符号化されたデータである符号化データを複数取得する取得手段と、
複数の前記符号化データのそれぞれに対応付けられた複数のコンテキスト変数テーブルと、
複数の前記符号化データを、それぞれに対応付けられた前記コンテキスト変数テーブルを用いて復号化する復号化手段と
を備えるＣＡＢＡＣ復号化装置。
【請求項２】
複数の前記符号化データのそれぞれは、互いに異なる一連のデータ列のそれぞれに含まれており、
前記複数のコンテキスト変数テーブルは、複数の前記一連のデータ列のそれぞれと対応付けられることで、複数の前記符号化データのそれぞれに対応付けられており、
前記取得手段は、複数の前記一連のデータ列の中から所定の順序で１つの前記一連のデータ列を選択することにより、選択された前記一連のデータ列に含まれる符号化データを取得する
請求項１記載のＣＡＢＡＣ復号化装置。
【請求項３】
前記復号化手段は、前記符号化データを復号化して得られる２値データを１ビットずつ出力し、
前記ＣＡＢＡＣ復号化装置は、更に、
前記復号化手段から出力された１ビットに基づき、前記符号化データから得られる次の１ビットである次ビットの種類についての情報であるコンテキストインデックス（ｃｔｘＩｄｘ）を算出するｃｔｘＩｄｘ算出手段と、
前記符号化データに対応する前記コンテキスト変数テーブルを参照し、前記ｃｔｘＩｄｘ算出手段により算出されたｃｔｘＩｄｘに対応する前記次ビットが０であるか１であるかの確率についての情報である確率情報を読み出して前記復号化手段に渡す読み出し手段とを備え、
前記復号化手段、前記ｃｔｘＩｄｘ算出手段、および前記読出し手段の少なくとも２つは、互いに異なる符号化データについての処理を並行して行なう
請求項１記載のＣＡＢＡＣ復号化装置。
【請求項４】
前記復号化手段、および複数の前記コンテキスト変数テーブルは、複数の前記符号化データそれぞれをパイプライン処理するために用いられ、
前記コンテキスト変数テーブルの数は、前記パイプライン処理におけるパイプラインステージ数と同じである
請求項１記載のＣＡＢＡＣ復号化装置。
【請求項５】
複数の前記符号化データそれぞれは、互いに異なる一連のデータ列のそれぞれに含まれており、
複数の前記一連のデータ列の数は前記パイプラインステージ数と同じ数であり、
前記複数のコンテキスト変数テーブルは、複数の前記一連のデータ列のそれぞれと対応付けられることで、複数の前記符号化データのそれぞれに対応付けられており、
前記取得手段は、複数の前記一連のデータ列の中から１サイクルごとに所定の順序で１つの前記一連のデータ列を選択することにより、選択された前記一連のデータ列に含まれる符号化データを取得する
請求項４記載のＣＡＢＡＣ復号化装置。
【請求項６】
前記復号化手段は、前記符号化データを復号化して得られる２値データを１サイクルごとに１ビットずつ出力し、
前記ＣＡＢＡＣ復号化装置は、更に、
前記復号化手段が出力する２値データの１ビットを、復号化される前の符号化データごとに蓄積する出力バッファを備える
請求項４記載のＣＡＢＡＣ復号化装置。
【請求項７】
コンテキスト適応型２値算術符号化方式（ＣＡＢＡＣ）により符号化されたデータを復号化する方法であって、
符号化されたデータである符号化データを複数取得する取得ステップと、
複数の前記符号化データを、複数の前記符号化データのそれぞれに対応付けられた複数のコンテキスト変数テーブルを用いて復号化する復号化ステップと
を含む復号化方法。
【請求項８】
コンテキスト適応型２値算術符号化方式（ＣＡＢＡＣ）により符号化されたデータを復号化する集積回路であって、
符号化されたデータである符号化データを複数取得する取得手段と、
複数の前記符号化データのそれぞれに対応付けられた複数のコンテキスト変数テーブルと、
複数の前記符号化データを、それぞれに対応付けられた前記コンテキスト変数テーブルを用いて復号化する復号化手段と
を備える集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＡＢＡＣにより算術符号化されたデータを復号化するＣＡＢＡＣ復号化装置に関する。
【背景技術】
【０００２】
デジタル技術の発展と共に、映像を符号化する技術も進化、発展してきている。しかし、映像情報、特に動画像の情報は、そのデータ量が非常に大きく、デジタル映像を符号化したものを放送やＤＶＤ等のメディアで転送する場合、転送量が非常に大きくなってしまう。得に、最近実用化されているハイビジョン放送では、従来のＳＤ（Ｓｔａｎｄａｒｄ  Ｄｅｆｉｎｉｔｉｏｎ）映像と比べて、６倍のデータ量となっている。
【０００３】
デジタル映像技術の発展と共に、増大するデータ量を処理するために、データを圧縮する技術がデジタル映像データに使用され、発展してきている。その発展は、映像データの特性を生かした映像データに特化した圧縮技術となって現れている。また、コンピュータやその他機器の情報処理能力の向上に伴い、圧縮技術における複雑な演算も可能となり、映像データの圧縮率は大幅に高められてきている。例えば、衛星、地上波デジタルハイビジョン放送で採用されている圧縮技術はＭＰＥＧ２と呼ばれる方式であるが、ＭＰＥＧ２の次の映像圧縮技術としてＡＶＣ／Ｈ．２６４が国際電気通信連合（ＩＴＵ）の電気通信標準化部門であるＩＴＵ−Ｔにより規格化されている。
【０００４】
ＡＶＣ／Ｈ．２６４は、ＭＰＥＧ２の２倍前後の圧縮率を実現する規格である。ＡＶＣ／Ｈ．２６４では、多くの圧縮化技術を実装し、それらを組み合わせることで高い圧縮率を実現している。そのため、演算量も大幅に増加している。
【０００５】
ＡＶＣ／Ｈ．２６４で実装されている圧縮化技術の一つにエントロピー符号化（可変長符号化）がある。エントロピー符号化の方式として、ＣＡＶＬＣとＣＡＢＡＣという２つの方式が用意されている。ＣＡＶＬＣは、Ｃｏｎｔｅｘｔ−Ａｄａｐｔｉｖｅ  Ｖａｒｉａｂｌｅ  Ｌｅｎｇｔｈ  Ｃｏｄｉｎｇ（コンテキスト適応型可変長符号化方式）の略であり、ＤＣＴ係数を符号化する際、連続する０の長さであるランとレベルを可変長符号化テーブルを用いてスキャンの方向と反対の方向から符号化を行なう方式である。
【０００６】
ＣＡＢＡＣは、Ｃｏｎｔｅｘｔ−ｂａｓｅｄ  Ａｄａｐｔｉｖｅ  Ｂｉｎａｒｙ  Ａｒｉｔｈｍｅｔｉｃ  Ｃｏｄｉｎｇ（コンテキスト適応型２値算術符号化方式）の略であり、時間とともに変化する符号化対象の出現頻度を変化させる方式である。また、一般に算術符号化と呼ばれる方式である。ＣＡＢＡＣでは、通常の算術符号化のほかに、圧縮すべき符号ごとにコンテキストインデックス（ｃｔｘＩｄｘ）を付け、そのｃｔｘＩｄｘごとに出現頻度の変更を行なっている。
【０００７】
ＣＡＢＡＣでの符号化は主に２つの処理に分けられる。１つ目は、シンタクス（Ｓｙｎｔａｘ）と呼ばれる符号化すべき多値情報を２値データに変換する２値化（ｂｉｎａｒｉｚａｔｉｏｎ）と呼ばれる処理である。２つ目は、２値化によって得られた２値データに対してコンテキストを算出し算術符号化を行なう処理である。
【０００８】
ＣＡＢＡＣにより符号化されたデータ（以下、「符号化データ」という。）を復号化する処理も、符号化の場合と同様に２つの処理に分けられる。符号化データに対して算術復号化を行なって２値データを出力する処理と、２値データをＳｙｎｔａｘに変換する多値化を行なう処理である。
【０００９】
図８は従来のＣＡＢＡＣ復号化装置の機能的な構成の一例を示す図である。図８に示すＣＡＢＡＣ復号化装置２００は、ビットストリームを入力とし、２値データを出力する装置である。なお、入力されるビットストリームは、１つのピクチャ内の１つ以上のマクロブロックの集合であるスライス単位で処理される。マクロブロックとは１６×１６画素からなる画像のデータである。また、出力される２値データの各ビットをｂｉｎＶａｌという。
【００１０】
ＣＡＢＡＣ復号化装置２００は、フリップフロップ回路（ＦＦ）２０１と、ＦＦ２０２と、復号化部２０３と、ｃｔｘＩｄｘ計算部２０４と、コンテキスト変数テーブル２０５とを備える。
【００１１】
以下に、ＣＡＢＡＣ復号化装置２００における算術復号化の処理の概要を説明する。
【００１２】
算術復号化の処理は、まず、ｃｔｘｔＩｄｘを求めることから始められる。ｃｔｘｔＩｄｘは、復号しようとしている１ビットの２値データのＳｙｎｔａｘと、Ｓｙｎｔａｘ内の２値データの位置を示すｂｉｎＩｄｘとから演算して求められる。また、これらＳｙｎｔａｘとｂｉｎＩｄｘとはすでに復号化されたマクロブロックの２値データの値であるｂｉｎＶａｌより演算して求められる。
【００１３】
これら演算は、ｃｔｘＩｄｘ計算部２０４で行なわれる。また、初回の演算では、初期値として与えられたＳｙｎｔａｘと、ｂｉｎｉｄｘ＝“０”とが用いられる。
【００１４】
次に、求められたｃｔｘｔＩｄｘを用いて、コンテキスト変数テーブル２０５からそのｃｔｘｔＩｄｘに現在割り当てられている発生確率ｐＳｔａｔｅＩｄｘと、発生確率の高いシンボルを表す情報ｖａｌＭＰＳとを取り出す。
【００１５】
コンテキスト変数テーブルとは、ｃｔｘｔＩｄｘとｐＳｔａｔｅＩｄｘとｖａｌＭＰＳとが対応付けられ記憶されているテーブルである。
【００１６】
読み出されたｐＳｔａｔｅＩｄｘとｖａｌＭＰＳとは、ＦＦ２０１を介し復号化部２０３に取得される。復号化部２０３は、更に、ＦＦ２０２から算術符号化で用いられる区間情報であるｃｏｄＩＲａｎｇｅとｃｏｄＩＯｆｆｓｅｔとを読み出し、ｐＳｔａｔｅＩｄｘとｖａｌＭＰＳとを入力としてｃｏｄＩＲａｎｇｅとｃｏｄＩＯｆｆｓｅｔと共に演算を行う。この演算により２値データを１ビット出力する。この出力された１ビットがｂｉｎＶａｌである。
【００１７】
このとき、ｃｏｄＩＲａｎｇｅとｃｏｄＩＯｆｆｓｅｔが更新され、次のｂｉｎＶａｌの演算に用いられる。また、出力されたｂｉｎＶａｌの値に応じて、発生確率ｐＳｔａｔｅＩｄｘと、発生確率の高いシンボルを表す情報ｖａｌＭＰＳとを更新し、コンテキスト変数テーブル２０５に書き戻す作業を行なう。
【００１８】
以上のように、入力されたビットストリームから、２値データの１ビットであるｂｉｎＶａｌが算術復号化により出力される。また、出力されたｂｉｎＶａｌの値によって、次のＳｙｎｔａｘ、ｂｉｎＩｄｘの値が決定し、次のｂｉｎＶａｌの出力のための復号化処理が開始される。
【００１９】
図９は、従来のＣＡＢＡＣ復号化装置における復号化処理のタイムチャートの一例である。図９の“Ａｎ”（ｎ＝０、１、２、・・・）のそれぞれは、ｎ＋１個目のｂｉｎＶａｌの出力に関わる各種の値の存在を示す記号である。また、横軸は時間であり、“Ｔ１、Ｔ２、・・・”のそれぞれは、１クロックごとのサイクルを示す記号である。
【００２０】
例えば、サイクルＴ１では、２つ目のｂｉｎＶａｌの出力のためのデータ入力［Ａ１］があり、ｐＳｔａｔｅＩｄｘおよびｖａｌＭＰＳは1つ目のｂｉｎＶａｌを演算するための値［Ａ０］である。また、それらｐＳｔａｔｅＩｄｘとｖａｌＭＰＳとから1つ目のｂｉｎＶａｌ［Ａ０］が算出される。なお、タイムチャート上には表現されていないが、コンテキスト変数テーブルが、算出されたｂｉｎＶａｌに応じて更新される。
【００２１】
また、算出されたｂｉｎＶａｌから次のｂｉｎＶａｌを出力するためのＳｙｎｔａｘおよびｂｉｎＩｄｘが決定され、ｃｔｘＩｄｘ［Ａ１］が算出される。算出されたｃｔｘＩｄｘ［Ａ１］を用いて、２個目のｂｉｎＶａｌを出力するためのｐＳｔａｔｅＩｄｘ［Ａ１］とｖａｌＭＰＳ［Ａ１］とがコンテキスト変数テーブルから読み出される。読み出されたそれらの値は次のサイクルＴ２に用いられる。
【００２２】
処理対象のデータを変更しながら上記動作が１クロックごとに繰り返され、入力されたビットストリームから１クロックごとに２値データの1ビットであるｂｉｎＶａｌが１つ出力される。
【００２３】
このような、ＣＡＢＡＣの符号化および復号化についての技術も開示されている（例えば、特許文献１）。
【特許文献１】特開２００４−１３５２５１号公報
【発明の開示】
【発明が解決しようとする課題】
【００２４】
上述のようにＣＡＢＡＣの復号化において、２値データ１ビットを出力するために最初に行なわれるＳｙｎｔａｘとｂｉｎＩｄｘの特定は、１つ前に出力された２値データの１ビットの値によって決められる。つまり、その時点で行なっている復号化処理で出力される２値データの値が０であるか１であるかが決定しないと、次の２値データを求める処理を行なうことはできない。
【００２５】
また、ｃｔｘＩｄｘより求められるｐＳｔａｔｅＩｄｘとｖａｌＭＰＳの値は、出力された２値データの値によって変更され、コンテキスト変数テーブルに書き戻されるため、これらの処理が終わるまで、次の２値データ１ビットの復号化に必要な動作であるコンテキスト変数テーブルの参照を行なうことができない。
【００２６】
つまり、ＣＡＢＡＣ復号化装置における復号化のための回路は、出力される２値データ１ビット毎の大きなループ回路になっており、このループにかかる時間がＣＡＢＡＣ復号化装置から1ビットの出力データを得るために必要な時間となる。
【００２７】
通常、回路のスループットを上げるときは、回路内にフリップフロップ回路（ＦＦ）を挿入することで処理をパイプライン化し、周波数を上げることが行なわれる。しかしながら、上記従来のＣＡＢＡＣ復号化装置においては、１回のループで２値データ１ビットが出力されるので、そのループをＦＦで区切ってパイプライン化し周波数を上げても、１クロック毎の処理量が減るだけであり、スループットを上げることはできない。これにより例えば、復号化処理が画像の再生に追い付かず、再生映像が途切れる可能性すら存在する。
【００２８】
このように、従来のＣＡＢＡＣ復号化装置は出力データのスループット、つまり単位時間当たりのｂｉｎＶａｌの出力数を上げることが困難である。もちろん復号化回路を並列に複数用意すれば、スループットを向上させることは可能であるが、この場合、例えば製造コストの上昇を招くこととなる。
【００２９】
本発明は、上記問題に鑑みてなされたものであり、復号化回路を複数有することなく、単位時間当たりの出力データ量を増加させるためのＣＡＢＡＣ復号化装置を提供することを目的とする。
【課題を解決するための手段】
【００３０】
上記課題を解決し上記目的を達成するために、本発明のＣＡＢＡＣ復号化装置は、コンテキスト適応型２値算術符号化方式（ＣＡＢＡＣ）により符号化されたデータを復号化する装置であって、符号化されたデータである符号化データを複数取得する取得手段と、複数の前記符号化データのそれぞれに対応付けられた複数のコンテキスト変数テーブルと、複数の前記符号化データを、それぞれに対応付けられた前記コンテキスト変数テーブルを用いて復号化する復号化手段とを備える。
【００３１】
このように、本発明のＣＡＢＡＣ復号化装置は、複数の符号化データを取得し、それら複数の符号化データに対応する、複数のコンテキスト変数テーブルを備える。この構成により、複数の符号化データをそれぞれ独立に並行して復号化することを可能とし、結果として、復号化されたデータの単位時間当たりの出力量を向上させることができる。
【００３２】
また、本発明のＣＡＢＡＣ復号化装置は、前記復号化手段、および複数の前記コンテキスト変数テーブルは、複数の前記符号化データそれぞれをパイプライン処理するために用いられ、前記コンテキスト変数テーブルの数は、前記パイプライン処理におけるパイプラインステージ数と同じであるとしてもよく、更に、複数の前記符号化データそれぞれは、互いに異なる一連のデータ列のそれぞれに含まれており、複数の前記一連のデータ列の数は前記パイプラインステージ数と同じ数であり、前記複数のコンテキスト変数テーブルは、複数の前記一連のデータ列のそれぞれと対応付けられることで、複数の前記符号化データのそれぞれに対応付けられており、前記取得手段は、複数の前記一連のデータ列の中から１サイクルごとに所定の順序で１つの前記一連のデータ列を選択することにより、選択された前記一連のデータ列に含まれる符号化データを取得するとしてもよい。
【００３３】
このように、本発明のＣＡＢＡＣ復号化装置は、復号化処理をパイプライン化することで、動作周波数を向上させることができ、ひいては単位時間当たりの出力データ量を増加させることができる。
【００３４】
また、入力されるデータ列の数をパイプラインのステージ数と同じ数とすることにより、効率よくパイプライン処理の隙間を埋めることができ、処理効率が向上する。また、復号化処理の対象となる符号化データは、複数の符号化データのそれぞれが含まれる複数の一連のデータ列が所定の順序で選択されることによりＣＡＢＡＣ復号化装置に入力される。
【００３５】
例えば、ＣＡＢＡＣ復号化装置のパイプラインステージが、３段で構成されているとき、データ列の入力は、Ａ，Ｂ，Ｃの３つ用意する。各データ列に対応するコンテキスト変数テーブルもａ，ｂ，ｃと３つ用意する。サイクルＴ０で、ＣＡＢＡＣ復号化装置への入力として、データ列Ａが選択された場合、次のサイクルＴ１では、データ列Ｂが選択され、次のサイクルＴ２では、データ列Ｃが選択される。さらに次のサイクルＴ３では、データ列Ａが再び選択され、以後Ｂ→Ｃ→Ａ→Ｂ→‥‥と１サイクル毎にデータ列の入力を変更して装置を動作させることができる。
【００３６】
コンテキスト変数テーブルａ，ｂ，ｃは、３つのデータ列Ａ，Ｂ，Ｃにそれぞれ対応付けられる。従って、データ列Ａが入力として選択されたときは、コンテキスト変数テーブルａが参照、更新され、データ列Ｂのときは、コンテキスト変数テーブルｂ、データ列Ｃのときは、コンテキスト変数テーブルｃがそれぞれ参照、更新される。結果として、コンテキスト変数テーブルは、データ入力に対応し、１サイクルごとにａ、ｂ、ｃの順番に参照され、必要な情報が読み出される。また、参照された順番で更新される。
【００３７】
このように、本発明のＣＡＢＡＣ復号化装置は、効率よく復号化処理を進行させることができ、単位時間当たりの出力データ量を増加させることができる。
【００３８】
更に、本発明は、本発明のＣＡＢＡＣ復号化装置の特徴的な構成部をステップとする方法として実現したり、それらのステップを含むプログラムとして実現したり、そのプログラムが格納された、ＣＤ−ＲＯＭ等の記憶媒体として実現したり、集積回路として実現することもできる。プログラムは、通信ネットワーク等の伝送媒体を介して流通させることもできる。
【発明の効果】
【００３９】
本発明は、復号化回路を複数有することなく、単位時間当たりの出力データ量を増加させるためのＣＡＢＡＣ復号化装置を提供することができる。
【００４０】
具体的には、本発明のＣＡＢＡＣ復号化装置は符号化データを複数取得することができ、それぞれを独立して処理することができる構成をとる。これより、複数の符号化データを並行して処理することが可能となる。また、１クロックあたりの処理負荷が軽減されることにより、回路の動作周波数を上げることができる。
【００４１】
例えば、動作周波数を向上させるために回路をパイプライン化した場合、通常であれば、パイプラインのステージ数分のクロックごとにしか出力１ビットが得られないが、本発明を実施することにより、１クロック毎に出力１ビットを得ることが可能となる。
【００４２】
結果として、本発明により、復号化回路を複数有することなく単位時間当たりの出力データ量を増加させることのできるＣＡＢＡＣ復号化装置を提供することが可能となる。
【発明を実施するための最良の形態】
【００４３】
以下に、本発明を実施するための最良の形態について、図面を参照して説明する。
【００４４】
まず、図１および図２を用いて、本発明の実施の形態であるＣＡＢＡＣ復号化装置の構成を説明する。
【００４５】
図１は、本発明の実施の形態であるＣＡＢＡＣ復号化装置の機能的な構成を示す機能ブロック図である。
【００４６】
ＣＡＢＡＣ復号化装置１００は、入力される３つのスライスに対し並行して復号化処理を行い、それぞれのスライスに対応した２値データを出力する装置である。また、パイプライン処理は３つのパイプラインステージに分かれている。
【００４７】
ＣＡＢＡＣ復号化装置１００は、ＦＦ１０１と、ＦＦ１０２と、復号化部１０３と、ｃｔｘＩｄｘ計算部１０４と、３つのコンテキスト変数テーブル（コンテキスト変数テーブル１０５ａ、コンテキスト変数テーブル１０５ｂ、コンテキスト変数テーブル１０５ｃ）と、入力するスライスを選択する入力セレクタ１１６と、ｐＳｔａｔｅＩｄｘおよびｖａｌＭＰＳを、その時点での処理対象データに対応するコンテキスト変数テーブルから読み出すテーブルセレクタ１１７と、各パイプラインステージを接続するためのＦＦ（ＦＦ１１１〜ＦＦ１１５）と、復号化部１０３により得られたｂｉｎＶａｌを一時的に格納する出力バッファ１１８とを備える。
【００４８】
なお、復号化部１０３は、本発明のＣＡＢＡＣ復号化装置における復号手段の一例であり、入力セレクタ１１６は取得手段の一例である。また、ｃｔｘＩｄｘ計算部１０４は、本発明のＣＡＢＡＣ復号化装置におけるｃｔｘＩｄｘ算出手段の一例であり、テーブルセレクタは読出し手段の一例である。
【００４９】
本実施の形態のＣＡＢＡＣ復号化装置１００における、１つのスライスに対する復号化処理の方法は従来のＣＡＢＡＣ復号化装置１００と同じである。しかしながら、従来のＣＡＢＡＣ復号化装置とは異なり、３つのスライスを並行にパイプライン処理する装置である。そのため、それぞれのスライスの処理に対応するためのコンテキスト変数テーブルを備えている。
【００５０】
本実施の形態では、入力される３つのスライスそれぞれを、ｓｌｉｃｅＡ、ｓｌｉｃｅＢ、ｓｌｉｃｅＣとし、入力セレクタ１１６に選択されることにより、選択されたスライスのスライスデータがＣＡＢＡＣ復号化装置１００に入力される。
【００５１】
また、コンテキスト変数テーブル１０５ａ、コンテキスト変数テーブル１０５ｂ、コンテキスト変数テーブル１０５ｃはそれぞれのスライスの復号化処理に対応するコンテキスト変数テーブルである。なお、これらコンテキスト変数テーブルは具体的には１つ以上のＳＲＡＭ（Static Random Access Memory）に保持されている。
【００５２】
ｃｔｘＩｄｘ計算部１０４は、先に復号化されたｂｉｎＶａｌを用い、ＳｙｎｔａｘとｂｉｎＩｄｘとを求め、その２つの情報からｃｔｘＩｄｘを算出する処理部である。
【００５３】
復号化部１０３は、入力されたスライスデータから1ビットの２値データであるｂｉｎＶａｌを算出する処理部である。復号化部１０３内には、ｂｉｎＶａｌを算出するのに用いられるデータテーブル１０３２がある。また、算出されたｂｉｎＶａｌに応じてどのようにコンテキスト変数テーブルを更新するかを決定するためのデータテーブル１０３１を有している。
【００５４】
具体的には、データテーブル１０３１はＡＶＣ／Ｈ．２６４に規定されたＳｔａｔｅ  ｔｒａｎｓｉｔｉｏｎ  ｔａｂｌｅであり、データテーブル１０３２は、同じくＡＶＣ／Ｈ．２６４に規定されたＳｐｅｃｉｆｉｃａｔｉｏｎ  ｏｆ  ｒａｎｇｅＴａｂＬＰＳ  ｄｅｐｅｎｄｉｎｇ  ｏｎ  ｐＳｔａｔｅＩｄｘ  ａｎｄ  ｑＣｏｄＩＲａｎｇｅＩｄｘである。
【００５５】
出力バッファ１１８は、復号化部１０３により求められたｂｉｎＶａｌをスライスデータごとに蓄積するバッファである。
【００５６】
図２は、コンテキスト変数テーブルのデータ構成の一例を示す図である。
【００５７】
図２に示すように、コンテキスト変数テーブルは、ｃｔｘＩｄｘによりｐＳｔａｔｅＩｄｘとｖａｌＭＰＳとを特定するためのテーブルである。例えば、ｃｔｘＩｄｘ計算部１０４によりｃｔｘＩｄｘ＝“０”が出力された場合、ｐＳｔａｔｅＩｄｘ＝“５０”およびｖａｌＭＰＳ＝“０”が特定される。これらｐＳｔａｔｅＩｄｘおよびｖａｌＭＰＳの値はテーブルセレクタ１１７によって読み出される。更に、ＦＦ１０１を介し、復号化部１０３により取得され、ｂｉｎＶａｌを算出するために用いられる。
【００５８】
コンテキスト変数テーブル１０５ａ〜コンテキスト変数テーブル１０５ｃのそれぞれは、図２に示すようなデータ構成を有している。
【００５９】
次に、ＣＡＢＡＣ復号化装置１００の動作を図３〜図５を用いて説明する。
【００６０】
図３は、ＣＡＢＡＣ復号化装置１００における復号化処理の流れを示すフローチャートである。図３を用いて、あるスライスデータの入力から、そのスライスデータについての最初のｂｉｎＶａｌが算出され、次のｂｉｎＶａｌを算出するための処理を行うまでのＣＡＢＡＣ復号化装置１００における処理の流れを説明する。
【００６１】
まず、ｂｉｎＶａｌを求めるための各種初期値が設定される（Ｓ１０）。具体的には、ｃｏｄＩＲａｎｇｅおよびｃｏｄＩＯｆｆｓｅｔの初期値は、それぞれ予め所定の値がＦＦ１０２に保持されている。Ｓｙｎｔａｘの初期値は、スライスヘッダや、ＰＰＳ（ピクチャパラメータセット）などで設定されるスライスの符号化条件により求められ、その初期値がｃｔｘＩｄｘに与えられる。また、初回の復号化処理であり、Ｓｙｎｔａｘ内の２値データの位置を示すｂｉｎＩｄｘは“０”とされる。
【００６２】
図４は、スライスデータのデータ構成の一例を示す図である。図４に示すように、スライスデータは、ヘッダ部分と実体データ部分とを有しヘッダ部分にはスライス設定データが存在する。Ｓｙｎｔａｘの初期値はスライス設定データによって定められる。実体データ部分には、復号化部１０３の復号化処理の対象である符号化データが１つ以上存在する。
【００６３】
なお、スライスデータは本発明のＣＡＢＡＣ復号化装置における一連のデータ列の一例である。
【００６４】
初期値設定の後、ｃｔｘＩｄｘ計算部１０４は、ＳｙｎｔａｘとｂｉｎＩｄｘとからｃｔｘＩｄｘを算出する（Ｓ１１）。初回の算出には上述のＳｙｎｔａｘの初期値とｂｉｎＩｄｘ＝“０”とが用いられる。
【００６５】
ｃｔｘＩｄｘが算出されると、コンテキスト変数テーブルからそのｃｔｘＩｄｘに対応付けられたｐＳｔａｔｅＩｄｘとｖａｌＭＰＳとが求められる（Ｓ１２）。例えば、ｓｌｉｃｅＡのスライスデータを処理する際に得られるｃｔｘＩｄｘは、コンテキスト変数テーブル１０５ａと照合され、そのｃｔｘＩｄｘに対応するｐＳｔａｔｅＩｄｘとｖａｌＭＰＳとが求められる。
【００６６】
復号化部１０３は、求められたｐＳｔａｔｅＩｄｘとｖａｌＭＰＳと、ＦＦ１０２から読み出したｃｏｄＩＲａｎｇｅおよびｃｏｄＩＯｆｆｓｅｔとを用いて、ｂｉｎＶａｌを算出する（Ｓ１３）。
【００６７】
また、同じスライスについての次のｂｉｎＶａｌを算出するためのｃｏｄＩＲａｎｇｅ（ｎｅｗ＿ｃｏｄＩＲａｎｇｅ）およびｃｏｄＩＯｆｆｓｅｔ（ｎｅｗ＿ｃｏｄＩＯｆｆｓｅｔ）を算出する（Ｓ１４）。
【００６８】
また、算出されたｂｉｎＶａｌとデータテーブル１０３１とから新たなｐＳｔａｔｅＩｄｘ（ｎｅｗ＿ｐＳｔａｔｅＩｄｘ）と新たなｖａｌＭＰＳ（ｎｅｗ＿ｖａｌＭＰＳ）とが算出される。算出されたそれら値により、対応するコンテキスト変数テーブルが更新される（Ｓ１５）。
【００６９】
ｃｔｘＩｄｘ計算部１０４は、復号化部１０３により算出されたｂｉｎＶａｌに基づき同じスライスについての次のｃｔｘＩｄｘの算出に必要なＳｙｎｔａｘとｂｉｎＩｄｘとを求める（Ｓ１６）。ＳｙｎｔａｘとｂｉｎＩｄｘとが求められると、ｃｔｘＩｄｘの算出（Ｓ１１）に戻り、上記動作が繰り返される。
【００７０】
図５は、ＣＡＢＡＣ復号化装置１００における復号化処理のタイムチャートの一例である。図４の中で“Ａｎ”（ｎ＝０、１、２・・・）とは、ｓｌｉｃｅＡのスライスデータを復号化して得られる２値データ１ビットのｎ＋１個目、つまり、ｎ＋１個目のｂｉｎＶａｌの出力に関わる各種の値の存在を示す記号である。また、横軸は時間であり、“Ｔ１、Ｔ２、・・・”のそれぞれは、１クロックごとのサイクルを示す記号である。
【００７１】
例えば、サイクルＴ４においてｐＳｔａｔｅＩｄｘとｖａｌＭＰＳとが“Ａ１”であるとは、サイクルＴ４において、ｓｌｉｃｅＡのスライスデータからの２個目のｂｉｎＶａｌを得るためのｐＳｔａｔｅＩｄｘとｖａｌＭＰＳとを用いた処理が行なわれることを示す。“Ｂｎ”、“Ｃｎ”についても同様である。
【００７２】
図５のタイムチャートにおいて、ｓｌｉｃｅＡの入力データから２番目のｂｉｎＶａｌ［Ａ１］が得られる処理の流れをサイクルごとに説明する。
【００７３】
サイクルＴ２において、すでに求められているｂｉｎＶａｌ［Ａ０］を用いて次のｃｔｘＩｄｘ［Ａ１］が求められる。
【００７４】
サイクルＴ３において、サイクルＴ２で求められたｃｔｘＩｄｘ［Ａ１］を用いてｐＳｔａｔｅＩｄｘ［Ａ１］およびｖａｌＭＰＳ［Ａ１］の値が求められる。これと同時に、入力データとして、ｓｌｉｃｅＡのデータ［Ａ１］が選択される。また、ｂｉｎＶａｌ［Ａ０］を求めるのに使用したｃｏｄＩＲａｎｇｅ［Ａ０］や入力データ［Ａ１］等の値から、ｂｉｎＶａｌ［Ａ１］を求めるためのｃｏｄＩＲａｎｇｅ［Ａ１］およびｃｏｄＩＯｆｆｓｅｔ［Ａ１］が求められる。
【００７５】
サイクルＴ４において、ｐＳｔａｔｅＩｄｘ［Ａ１］、ｖａｌＭＰＳ［Ａ１］、ｃｏｄＩＲａｎｇｅ［Ａ１］およびｃｏｄＩＯｆｆｓｅｔ［Ａ１］を用いて、ｂｉｎＶａｌ［Ａ１］が求められる。
【００７６】
また、タイムチャートには表現されていないが、ｂｉｎＶａｌ［Ａ１］の値に応じ、ｐＳｔａｔｅＩｄｘ［Ａ１］およびｖａｌＭＰＳ［Ａ１］の値を変更することで、それぞれの新たな値であるｎｅｗ＿ｐＳｔａｔｅＩｄｘおよびｎｅｗ＿ｖａｌＭＰＳが求められる。
【００７７】
サイクルＴ５において、ｂｉｎＶａｌ［Ａ１］が出力バッファ１１８に出力される。このときｎｅｗ＿ｐＳｔａｔｅＩｄｘおよびｎｅｗ＿ｖａｌＭＰＳによりコンテキスト変数テーブル１０５ａが更新され、次のサイクルＴ６からｂｉｎＶａｌ［Ａ２］を出力するための処理が開始される。
【００７８】
このように、サイクルＴ３においてｂｉｎＶａｌ［Ａ１］を得るためのデータ［Ａ１］が入力され、サイクルＴ５でｂｉｎＶａｌ［Ａ１］が出力されることとなる。つまり、ｓｌｉｃｅＡについてのみ着目すると、３クロックに１回のタイミングでｂｉｎＶａｌが出力されることとなる。
【００７９】
しかし、ＣＡＢＡＣ復号化装置１００は、上述のように、３つのスライスデータについて３つのパイプラインステージで並列に復号化処理を行なう。本実施の形態ではｓｌｉｃｅＡ、ｓｌｉｃｅＢ、ｓｌｉｃｅＣ、の順に入力データが選択され、並列に処理される。処理の結果、１クロック毎に入力と同じ順番で各スライスのｂｉｎＶａｌ１ビットが出力される。
【００８０】
例えば、図５に示すタイムチャートのサイクルＴ６において各パイプラインステージで並行して行われる処理の内容は以下のようになる。
【００８１】
＜パイプラインステージ０＞
ＦＦ１０２にセットされていたｃｏｄＩＲａｎｇｅ［Ｃ１］およびｃｏｄＩＯｆｆｓｅｔ［Ｃ１］と、パイプラインステージ２においてコンテキスト変数テーブル１０５ｃから求められたｐＳｔａｔｅＩｄｘ［Ｃ１］、ｖａｌＭＰＳ［Ｃ１］とを用い、復号化部１０３がｂｉｎＶａｌ［Ｃ１］およびｎｅｗ＿ｃｏｄＩＲａｎｇｅ［Ｃ２］とｎｅｗ＿ｃｏｄＩＯｆｆｓｅｔ［Ｃ２］とを求める。
【００８２】
ｂｉｎＶａｌ［Ｃ１］はＦＦ１１１にセットされ、ｎｅｗ＿ｃｏｄＩＲａｎｇｅ［Ｃ２］とｎｅｗ＿ｃｏｄＩＯｆｆｓｅｔ［Ｃ２］とはＦＦ１１３にセットされる。
【００８３】
また、ｐＳｔａｔｅＩｄｘ［Ｃ１］およびｖａｌＭＰＳ［Ｃ１］を、求められたｂｉｎＶａｌ［Ｃ１］とデータテーブル１０３１を用いて得られる値によって変更する。変更されたそれぞれの値は、コンテキスト変数テーブル１０５ｃを更新するｎｅｗ＿ｐＳｔａｔｅＩｄｘおよびｎｅｗ＿ｖａｌＭＰＳとしてＦＦ１１２にセットされる。
【００８４】
＜パイプラインステージ１＞
パイプラインステージ０において復号化部１０３により求められＦＦ１１１にセットされていたｂｉｎＶａｌ［Ｂ１］が出力バッファ１１８に出力される。またｂｉｎＶａｌ［Ｂ１］を用いて、ｃｔｘＩｄｘ計算部１０４にて次のｃｔｘＩｄｘ［Ｂ２］が算出され、ＦＦ１１５にセットされる。
【００８５】
また、パイプラインステージ０において復号化部１０３により求められ、ＦＦ１１２にセットされていたｎｅｗ＿ｐＳｔａｔｅＩｄｘ，ｎｅｗ＿ｖａｌＭＰＳが、ｓｌｉｃｅＢに対応するコンテキスト変数テーブル１０５ｂに書き込まれる。つまりコンテキスト変数テーブル１０５ｂが更新される。
【００８６】
＜パイプラインステージ２＞
パイプラインステージ１においてｃｔｘＩｄｘ計算部１０４によって求められＦＦ１１５にセットされていたｃｔｘＩｄｘ［Ａ２］を用い、コンテキスト変数テーブル１０５ａを参照して、ｃｔｘＩｄｘ［Ａ２］に対応するｐＳｔａｔｅＩｄｘ［Ａ２］およびｖａｌＭＰＳ［Ａ２］が求められる。
【００８７】
求められたｐＳｔａｔｅＩｄｘ［Ａ２］およびｖａｌＭＰＳ［Ａ２］はテーブルセレクタ１１７に読み出され、ＦＦ１０１にセットされる。また、ＦＦ１１４から出力されるｎｅｗ＿ｃｏｄＩＲａｎｇｅ［Ａ２］およびｎｅｗ＿ｃｏｄＩＯｆｆｓｅｔ［Ａ２］と入力［Ａ２］により、ｃｏｄＩＲａｎｇｅ［Ａ２］とｃｏｄＩＯｆｆｓｅｔ［Ａ２］が作成され、ＦＦ１０２にセットされる。
【００８８】
このように、本発明の実施の形態のＣＡＢＡＣ復号化装置１００は、復号化回路をパイプライン化することにより動作周波数を向上させている。
【００８９】
ここで、ＣＡＢＡＣの復号化処理において、１つのｂｉｎＶａｌ、つまり２値データの１ビットを得るためにはその前の１ビットが算出されている必要がある。そのため、回路にＦＦを挿入し、単に動作周波数を向上させても、単位時間当たりの処理結果の出力量を増加させることはできない。
【００９０】
例えば図６に示すように、従来の復号化回路に複数のＦＦを挿入し、動作周波数を向上させた場合を想定する。
【００９１】
図６は、従来のＣＡＢＡＣ復号化装置に複数のＦＦを挿入し、動作周波数を向上させることを可能とする構成とした一例を示す図である。
【００９２】
図６に示すＣＡＢＡＣ復号化装置１５０は、本発明の実施の形態のＣＡＢＡＣ復号化装置１００と同様に複数のＦＦを備え、３つのパイプラインステージからなるパイプライン処理が可能である。これにより１クロックごとの処理負荷を減らし、動作周波数を向上させることができる。
【００９３】
図７は、ＣＡＢＡＣ復号化装置１５０における復号化処理のタイムチャートの一例である。
【００９４】
図７に示すように、動作周波数が向上することにより処理サイクルの速度も向上するが、この場合においても、復号化処理のループが１回りするごとに１ビットの出力結果が得られることに変わりない。
【００９５】
例えば、１００ＭＨｚで動作していた従来の回路を、３つのステージに分け、３倍の３００ＭＨｚで動作させたとしても、１ビットの出力が得られるのは３サイクルに１回だけである。つまり、従来の回路と同じ出力レートしか得ることはできない。
【００９６】
しかしながら、本発明の実施の形態のＣＡＢＡＣ復号化装置１００は、単にＦＦを挿入し、処理を複数のステージに分けて、動作周波数を向上させるだけでなく、３つのスライスデータを一定の順序で入力データとして取り込むことにより、３つのパイプラインステージを最も効率よく稼動させることができる。
【００９７】
具体的には、３つのスライスデータのそれぞれは、独立して処理することができるため、あるスライスデータの処理とは関係なく、他のスライスデータの処理を進行することができる。つまり、本実施の形態のように、ｓｌｉｃｅＡ、ｓｌｉｃｅＢ、ｓｌｉｃｅＣのそれぞれのデータをＡ、Ｂ、Ｃの順番に取り込むことにより、３つあるパイプラインステージを効率的に隙間なく稼動させることができる。
【００９８】
また、３つのスライスデータを並行して処理するために、それぞれのスライスデータの復号化処理に対応する３つのコンテキスト変換テーブルを有している。これら３つのコンテキスト変換テーブルは互いに独立して存在し、各スライスデータの処理結果に応じて更新され、参照される。
【００９９】
このように、本発明の実施の形態のＣＡＢＡＣ復号化装置１００は、パイプライン処理により動作周波数を向上させ、かつ、効率的にパイプライン処理を行なうために３つのスライスデータを一定の順序で取り込む。取り込まれた３つのスライスデータのそれぞれは３つのパイプラインステージにより並行に処理されるため、結果として、単位時間当たりの出力データ量を増加させることができる。
【０１００】
なお、本実施の形態では、ＣＡＢＡＣ復号化装置１００のパイプライン処理におけるステージ数は３であり、入力されるスライスデータは３つであるとした。しかしながら、パイプラインステージ数と、入力されるスライスデータ数とは３でなくてもよい。
【０１０１】
例えば、それらの数がともに４でもよく、また、パイプラインステージ数が３で、入力されるスライスデータの数が５でもよい。つまり、パイプラインステージ数よりも入力されるスライスデータ数が多ければ、パイプライン処理の隙間が生じることがなく効率よく処理が行なわれることとなる。
【０１０２】
また、例えば、本実施の形態のＣＡＢＡＣ復号化装置において、更にｓｌｉｃｅＤを復号化処理の対象とした場合、入力データを入力セレクタ１１６が選択する順序は、ｓｌｉｃｅＡ〜ｓｌｉｃｅＤが繰り返される順序でなくてもよい。例えば、ｓｌｉｃｅＡ、ｓｌｉｃｅＢ、ｓｌｉｃｅＣ、ｓｌｉｃｅＤと選択した後に、ｓｌｉｃｅＢ、ｓｌｉｃｅＡと選択してもよい。
【０１０３】
つまり、パイプラインステージ数が３である場合、１つのｂｉｎＶａｌが出力されるのは３サイクルごとである。よって、あるスライスが選択される間隔が３サイクル以上あいていれば算出済みのｂｉｎＶａｌに基づき新たなｂｉｎＶａｌを算出し出力することができるからである。従って、あるスライスが選択される間隔は、パイプラインステージ数以上のサイクル数であればｂｉｎＶａｌの算出を効率よく行うことができる。
【０１０４】
また、例えば、パイプラインステージ数が３であり、入力されるスライスデータ数が２である場合、パイプライン処理に隙間が生じることとなる。しかしながら、単位時間当たりの出力データ量は、少なくとも従来のＣＡＢＡＣ復号化装置よりも多くなる。
【０１０５】
１つの出力データを得るために複数の処理工程が行われる場合、時系列において少しでも並行して処理が行なわれている部分があれば、複数の処理工程が完全に直列して行なわれている場合よりも、処理に必要な時間が減少するからである。
【０１０６】
つまり、複数のパイプラインステージ数に対し、入力されるスライスデータの数も複数であれば、少なくとも従来のＣＡＢＡＣ復号化装置よりも単位時間当たりの出力データ量を増加させることができる。
【０１０７】
また、ＣＡＢＡＣ復号化装置１００は、図１に示すように、復号化処理により得られたｂｉｎＶａｌを蓄積する出力バッファ１１８を備えるが、出力バッファを複数備えていてもよい。例えば、本実施の形態のように、３つのスライスデータを並列処理の対象とした場合、各スライスデータに対応するように、３つの出力バッファを備えていてもよい。
【産業上の利用可能性】
【０１０８】
本発明は、ＣＡＢＡＣにより符号化されたデータを復号化する復号化装置に利用することができる。具体的には、ＡＶＣ／Ｈ．２６４に規定されたデータ圧縮技術により符号化されたハイビジョン映像などを再生するための復号化装置として最適である。
【図面の簡単な説明】
【０１０９】
【図１】本発明の実施の形態のＣＡＢＡＣ復号化装置の機能的な構成を示す機能ブロック図である。
【図２】コンテキスト変数テーブルのデータ構成の一例を示す図である。
【図３】本発明の実施の形態のＣＡＢＡＣ復号化装置の復号化処理の流れを示すフローチャートである。
【図４】スライスデータのデータ構成の一例を示す図である。
【図５】本発明の実施の形態のＣＡＢＡＣ復号化装置における復号化処理のタイムチャートの一例である。
【図６】従来のＣＡＢＡＣ復号化装置に複数のＦＦを挿入し、動作周波数を向上させることを可能とする構成とした一例を示す図である。
【図７】図６に示すＣＡＢＡＣ復号化装置における復号化処理のタイムチャートの一例である。
【図８】従来のＣＡＢＡＣ復号化装置の機能的な構成の一例を示す図である。
【図９】従来のＣＡＢＡＣ復号化装置における復号化処理のタイムチャートの一例である。
【符号の説明】
【０１１０】
１００  ＣＡＢＡＣ復号化装置
１０３  復号化部
１０４  ｃｔｘＩｄｘ計算部
１０５ａ、１０５ｂ、１０５ｃ  コンテキスト変数テーブル
１０１、１０２、１１１、１１２、１１３、１１４、１１５  フリップフロップ回路
１１６  入力セレクタ
１１７  テーブルセレクタ
１１８  出力バッファ
１０３１、１０３２  データテーブル
【図１】
2007074648.tif 000003
【図２】
2007074648.tif 000004
【図３】
2007074648.tif 000005
【図４】
2007074648.tif 000006
【図５】
2007074648.tif 000007
【図６】
2007074648.tif 000008
【図７】
2007074648.tif 000009
【図８】
2007074648.tif 000010
【図９】
2007074648.tif 000011