(57)【特許請求の範囲】
【請求項１】
コンテキスト適応バイナリ算術符号化と復号化のシステムであって、前記システムは、
複数のコンテキストモデルを初期化するための複数の変数を保存する第１メモリと、
前記第１メモリに保存された複数の変数に基づいて前記複数のコンテキストモデルを初期化する初期化モジュールと、
前記初期化モジュールにより初期化された前記複数のコンテキストモデルを保存する第２メモリと、
符号化されるシンタックス要素の値に基づいて、前記符号化されるシンタックス要素をバイナリ文字列に２値化するバイナリ変換器と、
符号化される前記バイナリ文字列の第１のビンと復号化される第２ビンのそれぞれに対応するインデックス値であって、前記第２メモリに保存されている前記複数のコンテキストモデルと関連するインデックス値を計算する計算装置と、
前記第２メモリに保存された前記複数のコンテキストモデルから、前記計算装置により計算された前記第１のビンに対応するインデックス値と関連するコンテキストモデルを選択し、選択したコンテキストモデルを用いて、前記バイナリ変換器により計算された前記第１ビンを符号化する符号器、および前記第２メモリに保存された前記複数のコンテキストモデルから、前記計算装置により計算された前記第２のビンに対するインデックス値と関連するコンテキストモデルを選択し、選択したコンテキストモデルを用いて、前記第２ビンを復号化する復号器を１つとして構成されるバイナリ算術ユニットと、
前記バイナリ算術ユニットにより符号化された第１ビンに基づいて、符号化されたビットストリームデータを発生するビット発生器と、
前記バイナリ算術ユニットにより復号化された第２ビンを逆２値化することにより、復号化されたシンタックス要素の値を出力する逆バイナリ変換器と、
を含むシステム。
【請求項２】
前記バイナリ算術ユニットは、前記第１ビンと前記第２ビンの１つの符号化状態と復号化状態の１つに関連した値を有するセレクタ信号によって制御された少なくとも１つのマルチプレクサを含む請求項１に記載のシステム。
【請求項３】
前記バイナリ算術ユニットは、前記バイナリ算術ユニットによって発生された第１出力のバイナリフォームの先行ゼロの数（Ｎ）を検出する先行ゼロ検出器と、前記第１出力が既定値より小さい場合、前記第１出力の前記バイナリフォームをＮビット、左にシフトする左シフターとを含む請求項１または２に記載のシステム。
【請求項４】
上ブロックからの情報を保存する第１バッファと、左ブロックからの情報を保存する第２バッファとを更に含み、前記計算装置は、前記第１バッファと前記第２バッファからの前記情報に基づいて第１変数を計算する第１計算モジュールを含む請求項１〜３のいずれかに記載のシステム。
【請求項５】
前記計算装置は、前記第１変数に基づいて前記インデックス値を計算する第２計算モジュールを含む請求項４に記載のシステム。
【請求項６】
前記バイナリ算術ユニットは、前記１つのコンテキストモデルを更新し、前記メモリ素子に更新されたコンテキストモデルを保存する請求項１〜５のいずれかに記載のシステム。
【請求項７】
前記１つのコンテキストモデルに対応して第２変数の第１値を発生する第１参照テーブル、
前記更新されたコンテキストモデルに対応して前記第２変数の第２値を発生する第２参照テーブル、及び
前記第１値と前記第２値の１つを選択するマルチプレクサを更に含む請求項６に記載のシステム。
【請求項８】
前記メモリ素子は、シンタックス要素“ｌａｓｔ＿ｓｉｇｎｉｆｉｃａｎｔ＿ｃｏｅｆｆ＿ｆｌａｇ”（ＬＳＣＦ）のコンテキストモデルクラスタを保存する第１レジスタバンクと、他のシンタックス要素のコンテキストモデルクラスタを保存する第２レジスタバンクを含む請求項１〜７のいずれかに記載のシステム。
【請求項９】
前記メモリ素子は、複数のアドレスにコンテキストモデルクラスタを保存し、前記各アドレスに保存されたコンテキストモデルクラスタは、
＃ＣＭｓ（ＳＥｉ）＋＃ＣＭｓ（ＳＥｉ＋１）＋…＋＃ＣＭｓ（ＳＥｉ＋ｎ） ≦ Ｐ
の条件を満たし、
ＳＥｉは、第ｉ個目のシンタックス要素を表し、＃ＣＭｓ（ＳＥｉ）は、処理する順序で配列された、ＳＥｉ、ＳＥｉ＋１、ＳＥｉ＋ｎ  の処理プロセスに用いられたコンテキストモデルの数を表しており、Ｐは、全てのシンタックス要素の中のシンタックス要素のシンタックスモデルのセットの最大数を表している請求項１〜８のいずれかに記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像符号化と復号化に関し、特に、コンテキスト適応バイナリ算術符号化（ＣＡＢＡＣ）と復号化のシステム及び方法に関するものである。
【背景技術】
【０００２】
コンテキスト適応バイナリ算術符号化（ＣＡＢＡＣ）は、Ｈ.２６４／ＡＶＣメインプロファイルとハイプロファイルの規格に準拠したエントロピー符号化方式である。図１は、例えばＨ.２６４規格におけるＨ.２６４／ＡＶＣハイプロファイルのレベル４.１ビットストリームのビットストリーム１０の構造の概略図である。図１を参照下さい。ビットストリーム１０は、複数のデータスライス（番号付けされていない）を含むことができ、各データスライスは、スライスヘッダ層１１とスライスデータ層１２を含むことができる。スライスデータ層１２は、複数のマクロブロック（ＭＢｓ）１３を含むことができ、各ＭＢｓ１３は、１つまたは複数のシンタックス（ｓｙｎｔａｘ）要素（ＳＥ）１４を含むことができる。各ＳＥ１４は、数値を有し、１つまたは複数のビン（ｂｉｎ）１５、言い換えるとバイナリ値、即ち０または１のバイナリ値を更に含むことができる。
【０００３】
コンテキスト適応バイナリ算術符号化（ＣＡＢＡＣ）と復号化のアルゴリズムを下記に簡単に説明する。図２Ａは、ＣＡＢＡＣの符号化のアルゴリズムを解説する流れ図である。図２Ａを参照下さい。スライスデータ層の第１ＳＥを符号化する前に、４５９セットの数のコンテキスト（ｃｏｎｔｅｘｔ）モデル（ＣＭｓ）がステップ２０で初期化される。各ＣＭｓは、６ビットの発生確率テーブルを参照するためのインデックス（ｐＳｔａｔｅＩｄｘ）とバイナリ値を有する１ビットの発生確率の高いシンボル値（ｖａｌＭＰＳ）とを含む。ＳＥを符号化するには、２値化と、コンテキストモデルの選択と、バイナリ算術符号化と、ビット発生とを含む４つの主なステップが必要な可能性がある。ステップ２１では、ＳＥは、その値を１つまたは複数のバイナリビットからなるバイナリ文字列に変換させる。次に４５９セットのＣＭｓの中の１つが、ステップ２２でコンテキストモデルインデックス（ｃｔｘＩｄｘ）に基づいてバイナリ文字列の各ビンに対して選択されることができる。選択されたＣＭに対応して、バイナリ算術符号器（ＢＡＣ）がステップ２３でビンを符号化することができる。ビンを符号化した後、ＢＡＣは、ステップ２４で選択されたＣＭの再規格化と更新を行う。続いて、符号化されたビットデータがステップ２５で発生されることができる。
【０００４】
図２Ｂは、ＣＡＢＡＣの復号化のアルゴリズムを説明する流れ図である。図２Ｂを参照下さい。ＳＥのビンを復号化する前に、４５９セットのＣＭｓがステップ２０で初期化される。ＳＥの各ビンを復号化するために、コンテキストモデルの選択と、バイナリ算術復号化と、逆２値化（ｄｅ−ｂｉｎａｒｉｚａｔｉｏｎ）とを含む３つの主なステップが必要な可能性がある。ステップ２２では、ビンのＣＭは、ｃｔｘＩｄｘに基づいて選択され、常数、または予め復号化されたビン、または隣接のブロックからの情報によって決められた値であることができる。選択されたＣＭに対応して、バイナリ算術復号器（ＢＡＤ）がステップ２６でビンを復号化することができる。また、ＢＡＤは、ステップ２４で選択されたＣＭを更新して上述のビンの値を出力する。ＣＭの更新とビン値の出力のステップは、バイナリ文字列がＳＥに発生されるまで繰り返される。続いて、復号化されたバイナリ文字列が逆２値化されてＳＥの値を発生する。
【０００５】
図２Ａと２Ｂより分るように、例えばＣＭの初期化とＣＭの選択などのいくつかのプロセスが符号化と復号化スキームに共通される可能性がある。よって、ＣＡＢＡＣの符号化と復号化スキームを統合するシステムを有することが望ましい。また、パイプライン構造でＣＡＢＡＣの符号化と復号化を行えるシステムを有することが望ましい。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の実施例は、コンテキスト適応バイナリ算術符号化と復号化のシステム及び方法を提供する。
【課題を解決するための手段】
【０００７】
コンテキスト適応バイナリ算術符号化と復号化のシステムは、符号化される第１ビンと復号化される第２ビンの１つのインデックス値を計算する計算装置、クラスタにコンテキストモデルを保存し、第１ビンと第２ビンの１つのインデックス値がコンテキストモデルの１つに関連したメモリと、１つのコンテキストモデルに基づいて第１ビンを符号化する符号器、または１つのコンテキストモデルに基づいて第２ビンを復号化する復号器の１つとして構成されるバイナリ算術ユニットを含む。
【０００８】
本発明のいくつかの実施例は、パイプラインフローのコンテキスト適応バイナリ算術符号化と復号化の方法も提供する。前記方法は、第１クロックサイクルで、複数のＭビンを有するシンタックス要素に関連したコンテキストモデルを読み出し、少なくとも１つの隣接のブロックから情報を得て、シンタックス要素の少なくとも１つの隣接のブロックからの情報に基づいて変数を計算するステップ、第２クロックサイクルで、変数に基づいてシンタックス要素の第１ビンの第１インデックス値を計算し、第１インデックス値に基づいて第１ビンのコンテキストモデルの１つを読み込むステップ、第３クロックサイクルで、第１ビンに関連した１つのコンテキストモデルに基づいて符号化プロセスと復号化プロセスの１つの第１ビンを処理し、第１ビンを処理した後、前記１つのコンテキストモデルを更新するステップ、第３クロックサイクルで、変数に基づいてシンタックス要素の第２ビンの第２インデックス値を計算し、第２インデックス値に基づいて第２ビンのコンテキストモデルの１つを読み込むステップ、及び第４クロックサイクルで、第２ビンに関連した１つのコンテキストモデルに基づいて符号化プロセスと復号化プロセスの１つの第２ビンを処理し、第２ビンを処理した後、前記１つのコンテキストモデルを更新するステップを含む。
【０００９】
本発明の実施例は、パイプラインフローのコンテキスト適応バイナリ算術符号化と復号化の方法も提供する。前記方法は、第１クロックサイクルで、第１シンタックス要素に関連したコンテキストモデルを読み出し、少なくとも１つの隣接のブロックから情報を得て、少なくとも１つの隣接のブロックからの情報に基づいて変数を計算するステップ、第２クロックサイクルで、変数に基づいて第１シンタックス要素の第１ビンの第１インデックス値を計算し、前記第１インデックス値に基づいて第１シンタックス要素の第１ビンのコンテキストモデルの１つを読み込むステップ、第２クロックサイクルで、第２シンタックス要素に関連したコンテキストモデルを読み取り、第１シンタックス要素と第２シンタックス要素がデータ処理プロセス中に同時に生じるステップ、第３クロックサイクルで、第１シンタックス要素の第１ビンに関連した１つのコンテキストモデルに基づいて第１シンタックス要素の第１ビンを復号化し、第１シンタックス要素の第１ビンの値を得るステップ、第１シンタックス要素の第１ビンの値の１つのレベルに対応した第３クロックサイクルで、変数に基づいて第２シンタックス要素の第１ビンの第１インデックス値を計算し、前記第１インデックス値に基づいて第２シンタックス要素の第１ビンのコンテキストモデルの１つを読み込むステップ、及び第１シンタックス要素の第１ビンの値の他の１つのレベルに対応した第３クロックサイクルで、変数に基づいて第１シンタックス要素の第２ビンの第２インデックス値を計算し、前記第２インデックス値に基づいて第１シンタックス要素の第２ビンのコンテキストモデルの１つを読み込むステップを含む。
【発明の効果】
【００１０】
本発明のコンテキスト適応バイナリ算術符号化（ＣＡＢＡＣ）と復号化のシステム及び方法によれば、ＣＡＢＡＣの符号化と復号化スキームを統合するシステムを有することができ、パイプライン構造でＣＡＢＡＣの符号化と復号化を行えるシステムを有することもできる。
【発明を実施するための最良の形態】
【００１１】
本発明についての目的、特徴、長所が一層明確に理解されるよう、以下に実施形態を例示し、図面を参照にしながら、詳細に説明する。
【００１２】
以下、本発明の実施例を添付の図面と合わせて詳細な説明を行う。なお、同一、または類似の部分には同じ符号が用いられている。
【００１３】
図３Ａは、本発明に基づいたシステムのＣＡＢＡＣの符号化のパイプラインの段階を説明する概略的な流れ図である。図３Ａを参照下さい。ＣＡＢＡＣの符号化のパイプラインの段階は、例えば、２値化と、コンテキストモデル（ＣＭ）の選択と、バイナリ算術符号化と、ビット発生との段階を含むことができる。２値化の段階では、シンタックス要素（ＳＥ）の値は、バイナリ文字列に変換されることができる。ＣＡＢＡＣは、ＳＥの種類に基づいて５種類の２値化方式を採用している。この５種類の方式は、固定長（ＦＬ）と、単項（Ｕ）と、切り捨てられた単項（ｔｒｕｎｃａｔｅｄ  ｕｎａｒｙ, ＴＵ）と、ツリー構造と、Ｃｏｎｃａｔｅｎａｔｅｄ Ｕｎａｒｙ／ｋ−ｔｈ Ｏｒｄｅｒ Ｅｘｐｏｎｅｎｔｉａｌ Ｇｏｌｏｍｂ （ＵＥＧＫ）方式とを更に含む。この５種類の方式とバイナリ文字列の最大の長さが下記の表に示される。
【表１】
0004886755.tif 000002
【００１４】
ＣＭの選択の段階では、４５９セットのコンテキストモデル（ＣＭｓ）の中の１つが、コンテキストモデルインデックス（ｃｔｘＩｄｘ）に基づいてＳＥの各ビンに対して選択され、シンタックス要素の各‘正規’のビンの符号化を促進することができる。ｃｔｘＩｄｘは、下記の方程式（１）によって得られる。
【００１５】
ctxIdx = ctxCatOffset + ctxIdxOffset + ctxIdxInc      (1)
【００１６】
ｃｔｘＩｄｘＯｆｆｓｅｔとｃｔｘＣａｔＯｆｆｓｅｔは、ＳＥの種類と剰余ブロックの種類によってそれぞれ分類されることができ、ｃｔｘＩｄｘＩｎｃは、下記の方程式（２）と（３）によって得られることができる。
【００１７】
condTermFlag = a*condTermFlagA + b*condTermFlagB + c      (2)
【００１８】
【数１】
0004886755.tif 000003
【００１９】
その中の方程式（２）のａ、ｂと、ｃは、常数であり、方程式（３）のｃｏｎｄＴｅｒｍＦｌａｇＡとｃｏｎｄＴｅｒｍＦｌａｇＢは、隣接のブロックからの情報に基づいて算出される。例えば、ｃｏｎｄＴｅｒｍＦｌａｇＡは、左ブロックまたはマクロブロックからの情報によって得られ、ｃｏｎｄＴｅｒｍＦｌａｇＢは、上ブロックまたはマクロブロックからの情報によって得られることができる。
【００２０】
ＣＭの選択の段階は、４つのサブ段階、隣接ブロック情報の取得（ｇｅｔｔｉｎｇ ｎｅｉｇｈｂｏｒ ｂｌｏｃｋ ｉｎｆｏｒｍａｔｉｏｎ, ＧＮＢ）と、ｃｏｎｄＴｅｒｍＦｌａｇの計算（ｃｕｌｃｕｌａｔｉｏｎｇ  ｃｏｎｄＴｅｒｍＦｌａｇ、ＣＴＦ）と、ｃｔｘＩｄｘの計算（ＣＣＩ）と、ＣＭの取得（ＣＭＬ）とに更に分割されることができる。ＧＮＢのサブ段階は、ＣＴＦのサブ段階の前に行われ、ＧＮＢとＣＴＦのサブ段階は、２値化の段階と平行して行われることができる。
【００２１】
バイナリ算術符号化の段階では、‘標準（ｒｅｇｕｌａｒ）’エンジンと、‘バイパス（ｂｙｐａｓｓ）’エンジンと、‘終止（ｔｅｒｍｉｎａｔｅ）エンジン’とを含む３つの符号化エンジンが用いられることができる。変数ｃｏｄＩＬｏｗとｃｏｄＩＲａｎｇｅは、スライスの第１マクロブロックの符号化の始めに初期化されることができる。ｃｏｄＩＬｏｗとｃｏｄＩＲａｎｇｅの値は、符号化のプロセス中に変えられることができる。バイナリ文字列内の各ビンは、３つの符号化エンジンの中の１つによって符号化され、その中の６ビットのｐＳｔａｔｅＩｄｘと１ビットのｖａｌＭＰＳからなる対応のＣＭが標準エンジンに求められてビンを符号化する。また、選択されたＣＭは、標準の符号化のプロセス中に更新されることができる。
【００２２】
ｃｏｄＩＲａｎｇｅの値が２５６より小さい時、再規格化プロセスがバイナリ算術符号化の段階に求められる可能性がある。ｃｏｄＩＲａｎｇｅとｃｏｄＩＬｏｗは、それらの値が２５６より小さくない時、倍にされることができる。同時に符号化されたビットデータは、ビット発生の段階で反復して発生されることができる。
【００２３】
図３Ｂは、本発明に基づいたシステムのＣＡＢＡＣの復号化のパイプラインの段階を説明する概略的な流れ図である。図３Ｂを参照下さい。ＣＡＢＡＣの復号化のパイプラインの段階は、例えば、ＣＭの選択と、バイナリ算術復号化と、逆２値化の段階とを含む。ＣＭの選択の段階では、ＣＭは、算出されたｃｔｘＩｄｘに基づいて選択されることができ、前述のように、ｃｔｘＩｄｘに基づいて選択され、常数、または予め復号化されたビン、または隣接のブロックからの情報によって決定された値であることができる。ＳＥのビンは、選択されたＣＭに基づいて、バイナリ算術の段階に復号化されることができる。また、選択されたＣＭは、更新されることができ、ビンの値が発生されることができる。ＣＭの更新とビン値の出力のステップは、バイナリ文字列がＳＥに発生されるまで繰り返されることができる。続いて、復号化されたバイナリ文字列が逆２値化されてＳＥの値を発生する。また、再規格化のプロセスは、ｃｏｄＩＲａｎｇｅの値が２５６より小さい時、バイナリ算術復号化の段階の標準復号化エンジンに求められる可能性がある。ｃｏｄＩＲａｎｇｅは、ｃｏｄＩＲａｎｇｅが２５６より小さくなくなるまで、倍にされることができ、ｃｏｄＩＯｆｆｓｅｔは、復号化されたビットストリームからの１ビットデータを連結することができる。
【００２４】
図３Ｃは、本発明に基づいたシステムのＣＡＢＡＣの符号化／復号化のパイプラインの段階を説明する概略的な流れ図である。図３Ｃを参照下さい。ＣＡＢＡＣの符号化／復号化のパイプラインの段階は、図３Ａに示されたＣＡＢＡＣの符号化の段階と図３Ｂに示されたＣＡＢＡＣの復号化の段階を統合している。ＣＡＢＡＣの符号化プロセス中に、２値化とビット発生の段階が行われ、逆２値化の段階が行われない。一方、ＣＡＢＡＣの復号化のプロセス中に、２値化とビット発生の段階が行われず、逆２値化の段階が行われる。
【００２５】
図４は、本発明に基づいたＣＡＢＡＣの符号化と復号化のシステム４０の図である。図４を参照下さい。システム４０は、バイナリ変換器（ＢＺ）４１と、計算装置４２と４３と、バイナリ算術ユニット（ＢＡＵ）４４と、逆バイナリ変換器（ＤＢ）４５と、ビット発生器（ＢＧ）４６と、メモリ素子３１と３９とを含むことができる。符号化と復号化のプロセスの前に、ＣＭが初期化されることができる。この４５９セットのＣＭを初期化する変数は、メモリ３１、例えば、１７６２×１６ビットの読み出し専用メモリ（ＲＯＭ）に保存されることができる。初期化モジュール４７は、４５９セットのＣＭを初期化するように構成され、次にスライスヘッダ層で初期化されたＣＭをメモリ３２、例えば、単一ポートランダムアクセスメモリ（ＲＡＭ）のクラスタに保存することができる。制御器（図示せず）の制御のもとで、“コンテキストモデル読み出し（ｒｅａｄ）”（ＣＭＲ）演算を通して、ＣＭクラスタの１つがメモリ３２から取り出され、メモリ３３内に読み込まれる。メモリ３３は、レジスタバンクを含むことも可能であるがこれを限定するものではない。ＣＭＲ演算は、ＧＮＢ／ＣＴＦ／ＢＺの段階で実行されることもできる。この段階は、２値化の段階と一部のＣＭの選択の段階を含むこともできる。
【００２６】
バイナリ変換器４１は、ＧＮＢ／ＣＴＦ／ＢＺの段階でＳＥ（ＳＥ＿ｖａｌｕｅで標示）の値をバイナリ文字列に２値化するように構成されることができる。同じステージ中に、１つまたは複数の隣接のブロックからの情報が得られることができる（ＧＮＢの段階）。例えば、上ブロックまたはマクロブロックからの情報がバッファ３４に保存されることができ、左ブロックまたはマクロブロックからの情報が他のバッファ３５に保存されることができる。第１計算装置４２は、上述の方程式（２）に従って、１つまたは複数の隣接のブロックからの情報に基づいて、バイナリ文字列のビンに対応するｃｏｎｄＴｅｒｍＦｌａｇを算出するように構成されることができる。上述の表１に挙げたシンタックス要素ｍｂ＿ｓｋｉｐ＿ｆｌａｇを例にすれば、左マクロブロックのｍｂ＿ｓｋｉｐ＿ｆｌａｇが１または左マクロブロックが得られない場合、ｃｏｎｄＴｅｒｍＦｌａｇＡは、０に設定される。そうでなければ、ｃｏｎｄＴｅｒｍＦｌａｇＡは、１に設定される。同様に、ｃｏｎｄＴｅｒｍＦｌａｇＢは、上ブロックまたはマクロブロックからの情報によって決定されることができる。バイナリ変換器４１と第１計算装置４２からの出力は、第１レジスタ３６に保存されることができる。
【００２７】
ＣＭの選択の段階の他の部分であるＣＣＩ／ＣＭＬの段階では、第２計算装置４３は、上述の方程式（１）に基づいてＣＭインデックス（ｃｔｘＩｄｘ）を計算するように構成されることができる。第２計算装置４３から算出されたＣＭインデックスに基づくと、ＣＭがメモリ３３から取り出されることができる。メモリ３３からのＣＭに基づくと、第１ｒＬＰＳ（ｒａｎｇｅ ｏｆ ｌｅａｓｔ ｐｒｏｂａｂｌｅ ｓｙｍｂｏｌ、発生確率の低いシンボル値の範囲）は、例えば、８×２５６ビット参照テーブル（ＬＵＴ）の第１参照テーブル（ＬＵＴ）５１から発生されることができる。第１ｒＬＰＳの値は、上述のＣＭの６ビットｐＳｔａｔｅＩｄｘによって、第１ＬＵＴ５１から得られることができ、ＢＡＵ４４の後に続く符号化または復号化のプロセスに用いられることができる。第１ｒＬＰＳは、マルチプレクサ４８への第１入力となることができる。第２ＬＵＴ５２からの第２ｒＬＰＳは、マルチプレクサ４８への第２入力となることができる。第２ｒＬＰＳは、ＢＡＵ４４からの更新されたＣＭに基づいて第２ＬＵＴ５２によって発生されることができる。第１ｒＬＰＳと第２ｒＬＰＳの中の１つは、マルチプレクサ４８によって選択され、第２レジスタ３７に保存されることができる。１つの実施例では、マルチプレクサ４８は、現在のビンに選択されたＣＭインデックスが前のビンに選択されたＣＭインデックスと異なる場合、第１ｒＬＰＳを出力することができ、現在のビンに選択されたＣＭインデックスが前のビンに選択されたＣＭインデックスと同じ場合、第２ｒＬＰＳを出力することができる。現実施例では、第１ＬＵＴ５１と第２ＬＵＴ５２は、異なるＬＵＴｓである。しかし他の実施例では、第１ＬＵＴ５１と第２ＬＵＴ５２は、同じＬＵＴである。
【００２８】
ＢＡＵ４４は、ＳＥの種類とビンインデックス（ｂｉｎＩｄｘ）に基づいて、標準ビンと、バイパスビンと、終止ビンを符号化するように構成されることができる。いくつかのシンタックス要素とそれと対応する符号化エンジンが下記の表２に示される。
【表２】
0004886755.tif 000004
【００２９】
初期化されたＣＭｓは、“コンテキストモデル読み出し”（ＣＭＲ）演算を通して、メモリ３２からメモリ３３に読み込まれることができる。標準ビンが処理された場合、更新されたＣＭは、メモリ３３に書き込まれなければならない可能性がある。続いて、符号化されたビンは、ビット発生器４６に転送されることができ、符号化されたビットストリームを発生するように構成されることができる。ビット発生器４６は、例えば８＊１１ビットレジスタの先入れ先出し（ＦＩＦＯ）装置３８から、例えば、“ＥｎｃｏｄｅＦｌｕｓｈ”、“ｌｏｗ＿ｒｅｎｏｒｍ”と、“ｒａｎｇｅ＿ｌｎｚ＿ｒｅｎｏｒｍ”などのパラメータを取り出して、ビット長（ｂｉｔｓ＿ｌｅｎ）とビットデータ（ｂｉｔｓ＿ｄａｔａ）を含む符号化されたビットストリームのデータを発生することができる。ＣＭの選択とバイナリ算術符号化の段階は、ＳＥの全てのビンが完全に符号化されるまで繰り返されることができる。
【００３０】
ＢＡＵ４４は、ＳＥの種類とビンインデックスに基づいて、標準ビンと、バイパスビンと、終止ビンを復号化するように構成されることもできる。初期化されたＣＭｓは、“コンテキストモデル読み出し”（ＣＭＲ）演算を通して、メモリ３２からメモリ３３に読み込まれることができる。復号化されたビンは、バッファ３９に転送されることができる。ビンが符号化された場合、選択されたＣＭは、更新され、メモリ３３に書き戻されることができる。逆バイナリ変換器４５は、ＳＥの全てのビンが復号化されて、ＳＥの復号化が完了した時、バッファ３９内の復号化されたビンに基づいて、ＳＥ値（ＳＥ＿ｖａｌｕｅ）を出力するかどうかを決める。ＳＥ＿Ｖａｌｕｅ信号は、Ｈ.２６４解析器（ｐａｒｓｅｒ）ユニット（図示せず）または剰余（ｒｅｓｉｄｕａｌ）ユニット（図示せず）に伝送されて、剰余ブロックの解析フローを行うことができる。１つの実施例では、ＳＥ＿Ｖａｌｕｅ信号は、“隣接バッファ更新”（ＮＢＵ）演算によって第１バッファ３４と第２バッファ３５に書き込まれることができる。ＣＭの選択とバイナリ算術符号化／逆２値化の段階は、逆バイナリ変換器４５がＳＥの復号化を完了し、且つ完了信号ＳＥ＿Ｖａｌｉｄを例えば高ロジックレベルに設定したことを検出するまで繰り返されることができる。ＳＥの全てのビンが復号化された場合、メモリ３３の中の更新されたＣＭは、ＣＭＷ演算によってメモリ３２に書き戻されることができる。
【００３１】
図５Ａは、本発明の実施例に基づいたＣＡＢＡＣの符号化のパイプライン構造を説明する概略図である。図５Ａと、図３Ａと、図３Ｃと、図４も参照下さい。サイクル０では、ＳＥ値は、ビン０と、ビン１と、ビン２とを含むバイナリストリームの中に、２値化されることができる（ＢＺ）。隣接のブロックからの情報が得られることができ（ＧＮＢの段階）、ｃｏｎｄＴｅｒｍＦｌａｇが計算されることができる（ＣＴＦの段階）。また、初期化されたＣＭｓが読み取られることができる（ＣＭＲの段階）。ＧＮＢからＣＴＦに向けた点線の矢印は、ＧＮＢがＣＴＦの前に実行されることを表している。
【００３２】
サイクル１では、ＣＭインデックス“ｃｔｘＩｄｘ”が計算されることができ（ＣＣＩ）、ビン０のＣＭが選択されて読み込まれることができる（ＣＭＬ）。
【００３３】
サイクル２では、ビン０が符号化されることができ（ＢＡＵ）、続いて選択されたビン０のＣＭが更新されることができる（ＣＭＵ）。また、ＣＭインデックス“ｃｔｘＩｄｘ”が計算されることができ（ＣＣＩ）、ビン１のＣＭが選択されて読み込まれることができる（ＣＭＬ）。
【００３４】
サイクル３では、ビン０のビットストリームが発生されることができる（ＢＧ）。ビン１は、符号化されることができ（ＢＡＵ）、続いて選択されたビン１のＣＭが更新されることができる（ＣＭＵ）。また、ＣＭインデックス“ｃｔｘＩｄｘ”が計算されることができ（ＣＣＩ）、ビン２のＣＭが選択されて読み込まれることができる（ＣＭＬ）。
【００３５】
サイクル４では、ビン１のバイナリストリームが発生されることができる（ＢＧ）。ビン２は、符号化されることができ（ＢＡＵ）、続いて選択されたビン２のＣＭが更新されることができる（ＣＭＵ）。
【００３６】
サイクル５では、ビン２のバイナリストリームが発生されることができる（ＢＧ）。
【００３７】
パイプライン構造では、データ転送テクニックがＣＭＬとＣＭＵ間のデータ依存性を処理するのに用いられることができる。ビン（ｉ＋１）のｃｔｘＩｄｘがビンｉのｃｔｘＩｄｘと同じ場合、ＢＡＵの段階からのビンｉの更新されたＣＭは、マルチプレクサ４８によって選択されることができる。他のデータ依存性は、ＣＣＩとＢＡＵの段階で生じる可能性があり、その中のビン（ｉ＋１）のＣＣＩ演算は、ビンｉの値を要する可能性がある。データ依存性のパイプライン処理は、１つのマクロブロックに多くて５サイクル要する可能性がある。特に、ビン１は、サイクル０とサイクル１の間の２サイクルで停止状態にあり、ビン２は、サイクル０〜サイクル２の間の３サイクルで停止状態にある。
【００３８】
図５Ｂは、本発明の実施例に基づいたＣＡＢＡＣの複号化のパイプライン構造を説明する概略図である。図５Ｂと、図３Ｂと、図３Ｃと、図４も参照下さい。サイクル０では、隣接のブロックからの情報が得られることができ（ＧＮＢの段階）、ｃｏｎｄＴｅｒｍＦｌａｇが計算されることができる（ＣＴＦの段階）。また、初期化されたＣＭｓが読み取られることができる（ＣＭＲの段階）。
【００３９】
サイクル１では、ＣＭインデックス“ｃｔｘＩｄｘ”が計算されることができ（ＣＣＩ）、ビン０のＣＭが選択されて読み込まれることができる（ＣＭＬ）。
【００４０】
サイクル２では、ビン０が復号化されることができ（ＢＡＵ）、続いて選択されたビン０のＣＭが更新されることができる（ＣＭＵ）。更新されたＣＭは、メモリ３３に伝送されることができる。ビン０の復号化されたビン値は、バッファ３９に保存されることができる。逆バイナリ変換器（ＤＢ）４５は、ＳＥの復号化プロセスが完了してなく、且つ信号ＳＥ＿Ｖａｌｉｄを例えば低ロジックレベルに設定していることを検出することができる。また、ＣＭインデックス“ｃｔｘＩｄｘ”が計算されることができ（ＣＣＩ）、ビン１のＣＭが選択されて読み込まれることができる（ＣＭＬ）。
【００４１】
サイクル３では、ビン１は、復号化されることができ（ＢＡＵ）、続いて選択されたビン１のＣＭが更新されることができる（ＣＭＵ）。更新されたＣＭは、メモリ３３に伝送されることができる。ビン１の復号化されたビン値は、バッファ３９に保存されることができる。逆バイナリ変換器（ＤＢ）４５は、ＳＥの復号化プロセスが完了してなく、且つ信号ＳＥ＿Ｖａｌｉｄを低ロジックレベルに保持していることを検出することができる。また、ＣＭインデックス“ｃｔｘＩｄｘ”が計算されることができ（ＣＣＩ）、ビン２のＣＭが選択されて読み込まれることができる（ＣＭＬ）。
【００４２】
サイクル４では、サイクル３に類似しており、ビン２が復号化されることができ（ＢＡＵ）、続いて選択されたビン２のＣＭが更新されることができる（ＣＭＵ）。更新されたＣＭは、メモリ３３に伝送されることができる。ビン２の復号化されたビン値は、バッファ３９に保存されることができる。逆バイナリ変換器（ＤＢ）４５は、ＳＥの復号化プロセスが完了してなく、且つ信号ＳＥ＿Ｖａｌｉｄを低ロジックレベルに保持していることを検出することができる。また、ＣＭインデックス“ｃｔｘＩｄｘ”が計算されることができ（ＣＣＩ）、ビン３のＣＭが選択されて読み込まれることができる（ＣＭＬ）。
【００４３】
サイクル５では、ビン３が復号化されることができ（ＢＡＵ）、続いて選択されたビン３のＣＭが更新されることができる（ＣＭＵ）。更新されたＣＭは、メモリ３３に伝送されることができる。ビン３の復号化されたビン値は、バッファ３９に保存されることができる。逆バイナリ変換器（ＤＢ）４５は、ＳＥの復号化プロセスが完了し、且つ信号ＳＥ＿Ｖａｌｉｄを高ロジックレベルに設定していることを検出することができる。
【００４４】
続いてサイクル６では、メモリ３３に保存された更新されたＣＭｓは、ＣＭＷ演算によってメモリ３２に書き戻されることができる。また、逆バイナリ変換器４５は、ＳＥ値、即ち、ＳＥ＿Ｖａｌｕｅを発生して、ＮＢＵ演算によって信号ＳＥ＿Ｖａｌｕｅを第１バッファ３４と第２バッファ３５に書き込むことができる。
【００４５】
図５Ａと図５Ｂを再度参照下さい。ＣＭＲの演算は、１つのクロック内で実行されることができる。ＣＭＲが１つのクロックサイクル内で完了されることができるように確保するために、同じＳＥで用いられるコンテキストモデルは、メモリ３３の同じアドレスに配置されることができる。図６Ａは、従来技術のメモリのコンテキストモデル（ＣＭｓ）の配置方式を説明する概略図である。各ＣＭが７ビットの長さを有することから、メモリの最小データバス幅は、１０５ビット（１５＊７ビット）となることができて、ＳＥ“ｓｉｇｎｉｆｉｃａｎｔ＿ｃｏｅｆｆ＿ｆｌａｇ”は、１５セットのＣＭを用いることができ、全てのシンタックス要素の中で最も長いＳＥとなる。しかし、このような配置は、メモリ空間が効果的に用いられないことになる。
【００４６】
図６Ｂは、本発明に基づいたメモリのコンテキストモデル（ＣＭｓ）の配置方式を説明する概略図である。１つの実施例では、４５９セットのＣＭｓは、下記に示されるように３８のクラスタに分割される。
(1) mb_skip_flag and mb_field_decoding_flag for I and P slice;
(2) mb_skip_flag and mb_field_decoding_flag for B slice;
(3) mb_type and sub_mb_type for I and P slice;
(4) mb_type and sub_mb_type for B slice;
(5)prev_intra4x4_pred_mode_flag, prev_intra8x8_pred_mode_flag, rem_intra4x4_pred_mode, rem_intra8x8_pred_mode, intra_chroma_pred_mode and mb_qp_delta;
(6) mvd_l0 and mvd_l1;
(7) ref_idx_l0, ref_idx_l1 and transform_size_8x8_flag;
(8) coded_block_pattern;
(9) coded_block_flag and coeff_abs_level_minus1 for luma DC block;
(10) coded_block_flag and coeff_abs_level_minus1 for luma AC block;
(11) coded_block_flag and coeff_abs_level_minus1 for 4x4 luma  block;
(12) coded_block_flag and coeff_abs_level_minus1 for chroma DC block;
(13) coded_block_flag and coeff_abs_level_minus1 for chroma AC block;
(14) coded_block_flag and coeff_abs_level_minus1 for 8x8 luma block;
(15) significant_coeff_flag for frame-coded luma DC block;
(16) last_significant_coeff_flag for frame-coded luma DC block;
(17) significant_coeff_flag for field-coded luma DC block;
(18) last_significant_coeff_flag for field-coded luma DC block;
(19) significant_coeff_flag for frame-coded luma AC block;
(20) last_significant_coeff_flag for frame-coded luma AC block;
(21) significant_coeff_flag for field-coded luma AC block;
(22) last_significant_coeff_flag for field-coded luma AC block;
(23) significant_coeff_flag for frame-coded 4x4 luma block;
(24) last_significant_coeff_flag for frame-coded 4x4 luma block;
(25) significant_coeff_flag for field-coded 4x4 luma block;
(26) last_significant_coeff_flag for field-coded 4x4 luma block;
(27) significant_coeff_flag for frame-coded chroma DC block;
(28) last_significant_coeff_flag for frame-coded chroma DC block;
(29) significant_coeff_flag for field-coded chroma DC block;
(30) last_significant_coeff_flag for field-coded chroma DC block;
(31) significant_coeff_flag for frame-coded chroma AC block;
(32) last_significant_coeff_flag for frame-coded chroma AC block;
(33) significant_coeff_flag for field-coded chroma AC block;
(34) last_significant_coeff_flag for field-coded chroma AC block;
(35) significant_coeff_flag for frame-coded 8x8 luma block;
(36) last_significant_coeff_flag for frame-coded 8x8 luma block;
(37) significant_coeff_flag for field-coded 8x8 luma block;
(38) last_significant_coeff_flag for field-coded 8x8 luma block
【００４７】
上述の３８のクラスタは、下記の規則に基づいてメモリの中に配置されることができる。
【００４８】
規則１：  #CMs (SEi) + #CMs (SEi+1) + … + #CMs (SEi+n) ≦ 15
【００４９】
ＳＥｉは、第ｉ個目のシンタックス要素を表し、＃ＣＭｓ（ＳＥｉ）は、ＳＥｉはの符号化または復号化に用いられるコンテキストモデルの数を表している。
【００５０】
規則２は、ＳＥｉ、ＳＥｉ＋１、 ．．．、ＳＥｉ＋ｎ  は、符号化または復号化の順序で配列する。
【００５１】
規則１と規則２を用いることで、ＣＭｓの数が１５に等しい、または１５より小さい場合、ＳＥに用いられるＣＭｓは、メモリの同じアドレスでクラスタに配置されることができる。図６Ｂを参照下さい。各クラスタは、１つのメモリ空間を占有し、１つのクロックサイクルで、１５個の７ビットレジスタからなるレジスタバンクに読み込まれることができる。このような配置方式は、メモリ空間の使用量を例えば６６２バイトから４６０バイトに減少することができる。また、このような配置は、メモリのアクセス頻度を低下させることができる。例えば、ＳＥのＣＭｓは、“ｍｂ＿ｓｋｉｐ＿ｆｌａｇ”を処理した後、ＳＥｓの両方が同じクラスタに属し（２）、ＳＥｍｂ＿ｓｋｉｐ＿ｆｌａｇの復号化中に既に読み込まれることができることから、ＳＥ“ｍｂ＿ｆｉｅｌｄ＿ｄｅｃｏｄｉｎｇ＿ｆｌａｇ”のＣＭｓは、別に読み込まれる必要がなくなる。図６Ａに示された配置に比べると、図６Ｂに示された本発明に基づいた配置は、より効率の良いメモリ空間の使用を達成している。
【００５２】
図７Ａは、シンタックス要素ＳＣＦ［ｉ］とＬＳＣＦ［ｉ］との間のコンテキストモデルの切り替えを説明する概略図である。図７Ａを参照下さい。Ｈ.２６４標準に規格されるように、１ビン（１−ｂｉｎ）ＳＥ“ｌａｓｔ＿ｓｉｇｎｉｆｉｃａｎｔ＿ｃｏｅｆｆ＿ｆｌａｇ［ｉ］”（ＬＳＣＦ［ｉ］）は、１ビンＳＥ“ｓｉｇｎｉｆｉｃａｎｔ＿ｃｏｅｆｆ＿ｆｌａｇ［ｉ］”（ＳＣＦ［ｉ］）が処理されるまで処理されない。ＳＣＦ［ｉ］とＬＳＣＦ［ｉ］の処理は、符号化と復号化を含むことができる。本実施例では、ＣＭの切り替えは、ＳＣＦ［ｉ］の復号化プロセスが完了した時のサイクル３とＬＳＣＦ［ｉ］の復号化プロセスが開始した時のサイクル４との間で生じることができる。１ビンＬＳＣＦ［ｉ］は、位置ｉにある係数が非ゼロであるかどうかを決めることができ、１ビンＳＣＦ［ｉ］は、位置ｉの後のＳＣＦｓが全てゼロであるかどうかを指している。ＳＣＦ［ｉ］の値が１の場合、ＬＳＣＦ［ｉ］が存在する。このような状況では、ＬＳＣＦ［ｉ］の値も１の場合、続くＳＣＦｓは、全てゼロであり、処理される必要がなくなる。一方、ＳＣＦ［ｉ］の値が０の場合、ＬＳＣＦ［ｉ］は、処理される必要がなくなり、ＳＣＦ［ｉ＋１］は、下記の表３に示すように符号化されることができる。
【表３】
0004886755.tif 000005
【００５３】
図７Ｂに示されたパイプライン構造に比べると、ＣＭの切り替えは、Ｈ.２６４標準に基づいてパイプラインの動作中で３つの停止したサイクルを要する可能性がある。図７Ｂは、本発明の実施例に基づいたシンタックス要素ＳＣＦ［ｉ］とＬＳＣＦ［ｉ］とを処理するパイプライン構造を説明する概略図である。また、図７Ｃは、本発明の実施例に基づいたシンタックス要素ＬＳＣＦの専用レジスタバンクを含むメモリ７０の概略図である。図７Ｂを参照下さい。サイクル０では、隣接のブロックからの情報が得られることができ（ＧＮＢの段階）、ｃｏｎｄＴｅｒｍＦｌａｇが計算されることができる（ＣＴＦの段階）。また、初期化されたＣＭｓ、またはＳＣＦのＣＭクラスタが図７Ｃに示されたメモリ７０のレジスタバンク７２に読み込まれることができる（ＣＭＲの段階）。
【００５４】
サイクル１では、ＣＭインデックス“ｃｔｘＩｄｘ”が計算されることができ（ＣＣＩ）、ＳＣＦ［ｉ］のＣＭが選択されて読み込まれることができる（ＣＭＬ）。また、初期化されたＣＭｓ、またはＬＳＣＦのＣＭクラスタがメモリ７０のレジスタバンク７１に読み込まれることができる（ＣＭＲの段階）。
【００５５】
サイクル２では、ビンＳＣＦ［ｉ］が符号化されることができ（ＢＡＵ）、続いて選択されたビンＳＣＦ［ｉ］のＣＭが更新されることができる（ＣＭＵ）。ビンＳＣＦ［ｉ］の復号化されたビン値が１の場合、ＬＳＣＦ［ｉ］が存在することを意味し、ＣＭインデックス“ｃｔｘＩｄｘ”が計算されることができ（ＣＣＩ）、ビンＬＳＣＦ［ｉ］のＣＭが選択されて読み込まれることができる（ＣＭＬ）。ビンＳＣＦ［ｉ］の復号化されたビン値が０の場合、ＬＳＣＦ［ｉ］は、処理される必要がなく、ＣＭインデックス“ｃｔｘＩｄｘ”が計算されることができ（ＣＣＩ）、ビンＳＣＦ［ｉ＋１］のＣＭが選択されて読み込まれることができる（ＣＭＬ）。
【００５６】
サイクル３では、ビンＬＳＣＦ［ｉ］またはＳＣＦ［ｉ＋１］が符号化されることができ（ＢＡＵ）、続いて選択されたビンＬＳＣＦ［ｉ］またはＳＣＦ［ｉ＋１］のＣＭが更新されることができる（ＣＭＵ）。下記の表４は、解像度１９２０×１０８０の画像シーケンス（ｖｉｄｅｏ ｓｅｑｕｅｎｃｅ）での８Ｍ、２２Ｍ、４７Ｍと、５１Ｍｂｐｓの異なるビット率で、各スライスのコンテキストモデル切り替えの数を示している。本発明に基づいたパイプライン構造は、５１Ｍｂｐｓのビット率で各スライス毎に約３×３８２２８４クロックサイクル節約することができる。
【表４】
0004886755.tif 000006
【００５７】
図８は、本発明の実施例に基づいたバイナリ変換器８０の回路図である。バイナリ変換器８０は、ＳＥ値と種類に基づいた長さのバイナリ文字列を発生するように構成されることができる。図８を参照下さい。バイナリ変換器８０は、５つのＲＯＭテーブル８１〜８５を含むことができる。ツリー構造テーブル８１は、ＳＥｓ“ｍｂ＿ｔｙｐｅ ａｎｄ ｓｕｂ＿ｍｂ＿ｔｙｐｅ”で用いられ、バイナリ文字列を発生することができる。切り捨て（ｔｒｕｎｃａｔｅｄ）テーブル８２は、ＳＥ“ｉｎｔｒａ＿ｃｈｒｏｍａ＿ｐｒｅｄ＿ｍｏｄｅ”で用いられることができる。単項（ｕｎａｒｙ）テーブル８３は、ＳＥｓ“ｒｅｆ＿ｉｄｘと“ｍｂ＿ｑｐ＿ｄｅｌｔａ” で用いられることができる。ＳＥｓ“ｍｖｄ”と“ｃｏｅｆｆｉｃｉｅｎｔ＿ａｂｓ＿ｌｅｖｅｌ＿ｍｉｎｕｓｌ”の値は、それぞれ接頭部と接尾部から構成されることができる。これらの２つのＳＥｓの接頭部は、切り捨てられた単項コードを含むことができる。ｍｖｄの接尾部は、ＵＥＧ３コードであり、ｃｏｅｆｆｉｃｉｅｎｔ＿ａｂｓ＿ｌｅｖｅｌ＿ｍｉｎｕｓｌの接尾部は、ＵＥＧ０コードである。よって、マルチプレクサ８０１と８０２と連結したＵＥＧ０テーブル８４とＵＥＧ３テーブル８５は、これらの２つのＳＥｓの接尾部をそれぞれ２値化するように用いられることができる。単項テーブル８３とマルチプレクサ８０３は、接頭部を２値化するように用いられることができる。それぞれマルチプレクサ８０３と８０４からのバイナリ文字列の接頭部と接尾部は、連結装置８６で互いに連結される。続いて、ＳＥの種類をセレクタ（ｓｅｌｅｃｔｏｒ）信号として用い、マルチプレクサ８０５からバイナリ文字列が発生されることができる。バイナリ変換器８０の回路動作は、図１２Ａを参照にしながら後に説明する。
【００５８】
図９は、本発明の実施例に基づいたバイナリ算術ユニット（ＢＡＵ）９０の回路図である。ＢＡＵ９０は、ＣＡＢＡＣの符号化と復号化の標準エンジンと、バイパスエンジンと、終止エンジンを含むことができる。変数ｃｏｄＩＲａｎｇｅ（ｒａｎｇｅで図示される）とｃｏｄＩＬｏｗ（Ｌｏｗで図示される）は、バイナリ算術符号化のプロセス中に更新されることができる。一方、変数ｃｏｄＩＲａｎｇｅと他のｃｏｄＩＯｆｆｓｅｔ（Ｏｆｆｓｅｔで図示される）は、バイナリ算術復号化のプロセス中に更新されることができる。Ｈ.２６４標準の規格に基づいて、変数ｃｏｄＩＲａｎｇｅと、ｃｏｄＩＬｏｗと、ｃｏｄＩＯｆｆｓｅｔを更新するアルゴリズムを下記の表５と、表６と、表７にそれぞれ表示する。
【表５】
0004886755.tif 000007
【表６】
0004886755.tif 000008
【表７】
0004886755.tif 000009
【００５９】
表５〜７は、異なるエンジンと条件において、３つの変数の値が再代入されることができるかどうかを示している。図９を参照下さい。可変Ｌｏｗと、Ｏｆｆｓｅｔと、ｒａｎｇｅに加え、変数“ｂｉｎ Ｖａｌ”、“ｖａｌＭＰＳ”と、“ｒＬＰＳ”がＢＡＵ９０に入力されることができる。変数ｂｉｎ Ｖａｌの値は、図８に示されたバイナリ変換器８０のマルチプレクサ８０５から発生されることができ、ｖａｌＭＰＳと、ｒＬＰＳの値は、対応するＣＭが決定された時、決定されることができる。ＢＡＵ９０は、ｒａｎｇｅと、Ｏｆｆｓｅｔと、Ｌｏｗの値を更新して、更新されたｎｅｗ＿ｒａｎｇｅと、ｎｅｗ＿Ｏｆｆｓｅｔと、ｎｅｗ＿Ｌｏｗの値を出力することができる。ＢＡＵ９０の回路動作は、図１２Ｂを参照しながら後に説明する。
【００６０】
ＢＡＵ９０は、再規格化装置を含むことができ、ＢＡＵの符号器と復号器のｃｏｄＩＲａｎｇｅが２５６より小さい時、再規格化のプロセスを行う。図１０は、本発明の実施例に基づいた再規格化装置１００の回路図である。図１０を参照下さい。再規格化装置１００は、ＢＡＵ９０からｎｅｗ＿ｒａｎｇｅと、ｎｅｗ＿Ｏｆｆｓｅｔと、ｎｅｗ＿Ｌｏｗの値を受けることができる。先行ゼロ検出（ＬＺＤ）装置１０１は、ｃｏｄＩＲａｎｇｅと、ｃｏｄＩＬｏｗと、ｃｏｄＩＯｆｆｓｅｔに左シフトされるビット数を決定するのに用いられることができる。ＣＡＢＡＣが符号化モードにあり、ｃｏｄＩＲａｎｇｅが２５６より小さい時、３つのパラメータｒａｎｇｅ＿ｌｚｎ＿ｒｅｎｏｒｍと、ｌｏｗ＿ｒｅｎｏｒｍと、ＥｎｃｏｄｅＦｌｕｓｈは、ＦＩＦＯ１０２に入れられることができる。再規格化装置１００の回路動作は、図１２Ｃを参照しながら後に説明する。
【００６１】
図１１は、本発明の実施例に基づいたビット発生器１１０の回路図である。図１１を参照下さい。ビット発生器１１０は、実行の流れを制御するための有限状態機械（ＦＳＭ）を含むことができる。ＬＺＤ装置１１１は、変数ｌｏｗ＿ｍｕｘの先行ゼロ数を検出するのに用いられることができ、ｌｏｗ＿ｍｕｘは、図１０に示されたＦＩＦＯ１０２からのｌｏｗ＿ｒｅｎｏｒｍから選択される。先行１検出（ｌｅａｄｉｎｇ ｏｎｅ ｄｅｔｅｃｔｉｏｎ、ＬＯＤ）装置１１２は、変数ｌｏｗ＿ｍｕｘの先行１の数を検出するのに用いられることができる。ビット発生器１１０は、３つの出力信号“ｂｉｔ−ｗｒｉｔｅ−ｅｎａｂｌｅ”（ｂｗｅ）と、“ｂｉｔｓ＿ｌｅｎ”と、“ｂｉｔｓ”を発生することができる。信号ｂｉｔｓは、符号化されたビットストリームを示し、“ｂｉｔｓ＿ｌｅｎ”は、符号化されたビットストリームの長さを示し、ｂｗｅは、信号ｂｉｔｓが有効であることを示している。ビット発生器１１０の回路動作は、図１２Ｄを参照しながら後に説明する。
【００６２】
図１に挙げられたＳＥ“ｍｂ＿ｔｙｐｅ”の符号化の回路動作を参照にしながら図１２Ａ〜１２Ｄを説明する。図１２Ａは、図８に示されたバイナリ変換器８０の回路動作である。図１２Ａを参照下さい。ＳＥｍｂ＿ｔｙｐｅは、Ｉ−スライスの種類と例えば２５の値を有する。また、表１に見られるように、ｍｂ＿ｔｙｐｅの２値化の種類は、ツリー構造である。ｍｂ＿ｔｙｐｅのＳＥのスライスの種類とＳＥ値に対応して、ツリー構造テーブル８１は、２ビットの長さのバイナリ値“１１”を示す出力２’ｂ１１を発生することができる。マルチプレクサ８０５は、０に設定されたセレクタ信号ｓｅ＿ｔｙｐｅに基づいて出力値２’ｂ１１を出力として選択する。よって、バイナリ変換器８０は、２５のＳＥ値に基づいて、ＳＥをバイナリ文字列２’ｂ１１に２値化する。
【００６３】
図１２Ｂは、図９に示されたＢＡＵ９０の回路動作である。図１２Ｂを参照下さい。バイナリ文字列２’ｂ１１（即ち、１１）の第１バイナリ値である、変数“ｂｉｎＶａｌ”の初期値は、１である。バイナリ文字列２’ｂ１１の第２で、最後でもあるバイナリ値である、変数“ｂｉｎＶａｌ”の次の値も１である。表示１（１）では、括弧外の第１の“１”は、ｂｉｎＶａｌの初期値を指しており、第２の“１”は、ｂｉｎＶａｌの次の値を指している。また、第１ｂｉｎＶａｌを符号化している時、変数ｖａｌＭＰＳと、Ｌｏｗと、ｒａｎｇｅと、ｒＬＰＳは、それぞれ０、３７４、４５８と、１５０の初期値を有すると仮定することができる。変数“Ｏｆｆｓｅｔ”は、復号化のプロセスに用いられ、符号化のプロセスに用いられないため、数値がない。
【００６４】
ｂｉｎＶａｌとｖａｌＭＰＳの値を比べることで、比較装置９０１が０の値を出力することができる。第１加算器９０５は、“ｒａｎｇｅ”の値から“ｒＬＰＳ”の値を引いて３０８の値を出力する。マルチプレクサ９０２、９０３、９０６、９０７と、９１０のセレクタ信号“ｄｅｃｏｄｅｒ”は、符号化プロセス中、“０”に設定されることができ、マルチプレクサ９０２、９０３、９０６、９０７と、９１０は、“０”入力端子での値を出力として選択することができる。他の実施例では、復号化プロセス中のセレクタ信号“ｄｅｃｏｄｅｒ”は、“１”に設定されることができる。このように、ＢＡＵ９０は、マルチプレクサの選択ピンの値に基づいて、符号化のプロセス中、ＣＡＢＡＣ符号器となることができ、復号化のプロセス中、ＣＡＢＡＣ復号器となることができる。また、マルチプレクサ９０４のセレクタ信号“ｂｙｐａｓｓ”は、標準ビンを符号化する時、“０”に設定されることができる。また、マルチプレクサ９０９のセレクタ信号“ｄｅｃ＿ｍｏｄｅ”は、標準ビンを符号化する時、“００”に設定されることができる。第２加算器９１２は、マルチプレクサ９０４と９０６からの出力値３７４と３０８を加えることで６８２の値を出力する。マルチプレクサ９０７と９０８のセレクタ信号は、マルチプレクサ９０２からの出力によって決定する。続いてマルチプレクサ９０９からの変数ｎｅｗ＿ｒａｎｇｅの値は、１５０であり、マルチプレクサ９１０からの変数ｎｅｗ＿ｏｆｆｓｅｔとｎｅｗ＿ｌｏｗの値は、６８２である。変数ｎｅｗ＿ｒａｎｇｅの値が２５６より小さいことから、再規格化プロセスが求められる可能性がある。
【００６５】
図１２Ｃは、図１０に示された再規格化装置１００の回路動作である。図１２Ｃを参照下さい。ＢＡＵ９０からの出力変数ｎｅｗ＿ｒａｎｇｅとｎｅｗ＿ｏｆｆｓｅｔと、ｎｅｗ＿ｌｏｗは、再規格化装置１００への出力となることができる。ＬＺＤ１０１の入力値が１５０であり、１５０のバイナリフォームが０１００１０１１０であることから、先行０の数は１となるため、ＬＺＤ１０１は、１の値を出力することができる。ＬＺＤの出力に基づいて、第１左シフター１０３は、バイナリフォーム０１００１０１１０を１ビット、左にシフトすることができ、新しいバイナリフォーム１００１０１１００、または３００の値となる。３００の値は、２５６より大きく、変数ｎｅｗ＿ｒａｎｇｅの１５０の入力値の倍である。即ち、図１２Ｂの変数“ｒａｎｇｅ”は、３００の新しい値によって更新され、次のビンの符号化に用いられることができる。また、ＬＺＤの出力に基づいて、第２左シフター１０８は、マルチプレクサ１０４の６８０の出力値のバイナリフォーム１０１０１０１０１０を１ビット、左にシフトすることができ、新しいバイナリフォーム０１０１０１０１００、または３４０の値となる。ＡＮＤ−ゲートモジュール１０７は、新しいバイナリフォーム０１０１０１０１００と１０’ｈｌｆｆのｍａｓｋ＿ｂｉｔｓにロジック演算（ｌｏｇｉｃ ＡＮＤ ｆｕｎｃｔｉｏｎ）を行うことができる。その中の１０’ｈｌｆｆは、１０ビットの１６進値１ｆｆまたは０１１１１１１１１１であり、３４０の値となる。
【００６６】
変数ｎｅｗ＿ｒｅｎｏｒｍとｒａｎｇｅ＿ｌｚｎ＿ｒｅｎｏｒｍの値は、それぞれマルチプレクサ１０５と１０６の出力値によって決定する。変数ＥｎｃｏｄｅＦｌｕｓｈの値は、現在、終止エンジンによって符号化された終止ビンが非ゼロ値を有した場合、０に設定され、終止ビンがゼロ値を有した場合、１にセットされる。変数ｌｏｗ＿ｒｅｎｏｒｍと、ｒａｎｇｅ＿ｌｚｎ＿ｒｅｎｏｒｍと、ＥｎｃｏｄｅＦｌｕｓｈの値は、ＦＩＦＯ１０２に送り込まれる。
【００６７】
図１２Ｄは、図１１に示されたビット発生器１１０の回路動作である。図１２Ｄを参照下さい。変数ｌｏｗ＿ｒｅｎｏｒｍは、バイナリフォームが１０１０１０１０１０の６８２の値を有し、変数ｒａｎｇｅ＿ｌｚｎは、再規格化装置１００で決定された１の値を有する。ビット９からビット４、即ち１０１０１０は、マルチプレクサ１１３によって変数ｌｏｗ＿ｒｅｎｏｒｍのバイナリフォーム１０１０１０１０１０から取り出され、変数ｌｏｗ＿ｍｕｘに割り当てられる。ＬＯＤ１１１は、マルチプレクサ１１４によって選択された、変数ｌｏｗ＿ｍｕｘの先行１の数が１であるのを検出する。マルチプレクサ１１４からの出力に基づいて、左シフター１１５は、バイナリフォーム１０１０１０１０１０を１ビット、左にシフトし、新しいバイナリフォーム０１０１０１０１００となる。変数ｂｉｔＯｕｔＳｔａｎｄｉｎｇの値が２とした場合、増加されない。信号ｂｗｅは、高ロジックであるため、０の値を有する２ビットコードビットストリームが発生されることができる。
【００６８】
図１２Ｂを再度参照下さい。第１ビンが符号化された後、第２と最後のビンも符号化されることができる。変数ｌｏｗとｒａｎｇｅは、第１ビンを符号化している時に、再規格化装置１００でそれぞれ３４０と３００として更新される。ｖａｌＭＰＳとｒＬＰＳの値は、それぞれ０と２と仮定される。マルチプレクサ９０９のセレクタ信号“ｄｅｃ＿ｍｏｄｅ”は、最後のビンが符号化されるため、終止モードであり“１０”に設定される。変数ｎｅｗ＿ｒａｎｇｅは、２９８であり、２５６より大きいため、再規格化装置１００で倍にされない。図１２Ｃを再度参照下さい。変数ｒａｎｇｅ＿ｏｕｔは、２９８に等しい。
【００６９】
以上、本発明の好適な実施例を例示したが、これは本発明を限定するものではなく、本発明の精神及び範囲を逸脱しない限りにおいては、当業者であれば行い得る少々の変更や修飾を付加することが可能である。従って、本発明が請求する保護範囲は、特許請求の範囲を基準とする。
【図面の簡単な説明】
【００７０】
【図１】Ｈ.２６４規格におけるビットストリームの構造の概略図である。
【図２Ａ】コンテキスト適応バイナリ算術符号化（ＣＡＢＡＣ）の符号化のアルゴリズムを説明する流れ図である。
【図２Ｂ】コンテキスト適応バイナリ算術符号化（ＣＡＢＡＣ）の復号化のアルゴリズムを説明する流れ図である。
【図３Ａ】本発明に基づいたシステムのＣＡＢＡＣの符号化のパイプラインの段階を説明する概略的な流れ図である。
【図３Ｂ】本発明に基づいたシステムのＣＡＢＡＣの復号化のパイプラインの段階を説明する概略的な流れ図である。
【図３Ｃ】本発明に基づいたシステムのＣＡＢＡＣの符号化と復号化のパイプラインの段階を説明する概略的な流れ図である。
【図４】本発明に基づいたＣＡＢＡＣの符号化と復号化のシステム図である。
【図５Ａ】本発明の実施例に基づいたＣＡＢＡＣの符号化のパイプライン構造を説明する概略図である。
【図５Ｂ】本発明の実施例に基づいたＣＡＢＡＣの復号化のパイプライン構造を説明する概略図である。
【図６Ａ】従来技術のメモリのコンテキストモデル（ＣＭｓ）の配置方式を説明する概略図である。
【図６Ｂ】本発明に基づいたメモリのコンテキストモデル（ＣＭｓ）の配置方式を説明する概略図である。
【図７Ａ】シンタックス要素ＳＣＦ［ｉ］とＬＳＣＦ［ｉ］との間のコンテキストモデルの切り替えを説明する概略図である。
【図７Ｂ】本発明の実施例に基づいたシンタックス要素ＳＣＦ［ｉ］とＬＳＣＦ［ｉ］とを処理するパイプライン構造を説明する概略図である。
【図７Ｃ】本発明の実施例に基づいたシンタックス要素ＬＳＣＦの専用レジスタバンクを含むメモリの概略図である。
【図８】本発明の実施例に基づいたバイナリ変換器の回路図である。
【図９】本発明の実施例に基づいたバイナリ算術ユニット（ＢＡＵ）の回路図である。
【図１０】本発明の実施例に基づいた再規格化装置の回路図である。
【図１１】本発明の実施例に基づいたビット発生器の回路図である。
【図１２Ａ】図８に示されたバイナリ変換器の回路動作である。
【図１２Ｂ】図９に示されたＢＡＵの回路動作である。
【図１２Ｃ】図１０に示された再規格化装置の回路動作である。
【図１２Ｄ】図１１に示されたビット発生器の回路動作である。
【符号の説明】
【００７１】
１０…ビットストリーム
１１…スライスヘッダ層
１２…スライスデータ層
１３…マクロブロック
１４…シンタックス要素
１５…ビン（バイナリ値）
２０…コンテキストモデルの初期化
２１、４１、８０…バイナリ変換器
２２…コンテキストモデルセレクター
２３…バイナリ算術符号器
２４…コンテキストモデルの更新
２５、４６、１１０…ビット発生器
２６…バイナリ算術復号器
２７、４５…逆バイナリ変換器
３１、３２、３３、３９…メモリ
３４、３５…バッファ
３６…第１レジスタ
３７…第２レジスタ
３８、１０２…先入れ先出し装置
４０…ＣＡＢＡＣの符号化と復号化のシステム
４２、４３…計算装置
４４、９０…バイナリ算術ユニット（ＢＡＵ）
４７…初期化モジュール
４８、８０１、８０２、８０３、８０４、８０５、９０２、９０３、９０４、９０６、９０７、９０８、９０９、９１０、１０４、１０５、１０６、１１３、１１４…マルチプレクサ
５１…第１参照テーブル
５２…第２参照テーブル
８１…ツリー構造テーブル
８２…切り捨て（ｔｒｕｎｃａｔｅｄ）テーブル
８３…単項（ｕｎａｒｙ）テーブル
８４…ＵＥＧ０テーブル
８５…ＵＥＧ３テーブル
８６…連結装置
９０１…比較装置
９０５…第１加算器
９１２…第２加算器
１００…再規格化装置
１０１、１１２…先行ゼロ検出装置
１０３…第１左シフター
１０７…ＡＮＤ−ゲートモジュール
１０８…第２左シフター
１１１…先行１検出装置
１１５…左シフター
ＳＥ＿Ｖａｌｕｅ、ＳＥ＿Ｖａｌｉｄ…信号
ｃｔｘＩｄｘ…コンテキストモデルインデックス
ＥｎｃｏｄｅＦｌｕｓｈ、ｌｏｗ＿ｒｅｎｏｒｍ、ｒａｎｇｅ＿ｌｎｚ＿ｒｅｎｏｒｍ…パラメータ
ｂｉｔｓ＿ｌｅｎ、ｂｉｔｓ＿ｄａｔａ、ｂｗｅ、ｂｉｔｓ…信号
ｍｂ＿ｓｋｉｐ＿ｆｌａｇ、ｍｂ＿ｆｉｅｌｄ＿ｄｅｃｏｄｉｎｇ＿ｆｌａｇ、  ｍｂ＿ｔｙｐｅ、ｓｕｂ＿ｍｂ＿ｔｙｐｅ、ｐｒｅｖ＿ｉｎｔｒａ４ｘ４＿ｐｒｅｄ＿ｍｏｄｅ＿ｆｌａｇ、ｃｏｄｅｄ＿ｂｌｏｃｋ＿ｆｌａｇ、ｓｉｇｎｉｆｉｃａｎｔ＿ｃｏｅｆｆ＿ｆｌａｇ、ｌａｓｔ＿ｓｉｇｎｉｆｉｃａｎｔ＿ｃｏｅｆｆ＿ｆｌａｇ、ｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｍｉｎｕｓｌ、ＳＣＦ［ｉ］、ＬＳＣＦ［ｉ］、ＳＣＦ［ｉ＋１］、ｍｖｄ…シンタックス要素
ｃｔｘＢｌｏｃｋＣａｔ…シンタックスブロック種類
Ｓｌｉｃｅ＿ｔｙｐｅ…シンタックス種類
ｓｅ＿ｖａｌｕｅ…シンタックス要素値
ＵＥＧ＿Ｐｒｅｆｉｘ＿Ｂｉｎｓ…バイナリ文字列の接頭部
ＵＥＧ＿Ｓｕｆｆｉｘ＿Ｂｉｎｓ…バイナリ文字列の接尾部
ＢｉｎＳｔｒｉｎｇ…バイナリ文字列
ｂｉｎ Ｖａｌ、ｖａｌＭＰＳ、Ｌｏｗ、Ｏｆｆｓｅｔ、ｒａｎｇｅ、ｒＬＰＳ、ｒＭＰＳ、ｍａｓｋ＿ｂｉｔｓ、ｎｅｗ＿ｒａｎｇｅ、ｎｅｗ＿ｏｆｆｓｅｔ、ｎｅｗ＿ｌｏｗ、ｒａｎｇｅ＿ｏｕｔ、ｏｆｆｓｅｔ＿ｏｕｔ、ｌｏｗ＿ｏｕｔ、ｂｉｔＯｕｔＳｔａｎｄｉｎｇ、ｌｏｗ＿ｍｕｘ…変数
ｄｅｃｏｒｄｅｒ、ｂｙｐａｓｓ、Ｄｅｃｏｄｅｒ＆Ｔｅｒｍｉｎａｔｅ、ｄｅｃ＿ｍｏｄｅ…セレクタ信号
【図１】
0004886755.tif 000010
【図２Ａ】
0004886755.tif 000011
【図２Ｂ】
0004886755.tif 000012
【図３Ａ】
0004886755.tif 000013
【図３Ｂ】
0004886755.tif 000014
【図３Ｃ】
0004886755.tif 000015
【図４】
0004886755.tif 000016
【図５Ａ】
0004886755.tif 000017
【図５Ｂ】
0004886755.tif 000018
【図６Ａ】
0004886755.tif 000019
【図６Ｂ】
0004886755.tif 000020
【図７Ａ】
0004886755.tif 000021
【図７Ｂ】
0004886755.tif 000022
【図７Ｃ】
0004886755.tif 000023
【図８】
0004886755.tif 000024
【図９】
0004886755.tif 000025
【図１０】
0004886755.tif 000026
【図１１】
0004886755.tif 000027
【図１２Ａ】
0004886755.tif 000028
【図１２Ｂ】
0004886755.tif 000029
【図１２Ｃ】
0004886755.tif 000030
【図１２Ｄ】
0004886755.tif 000031