コンテキスト適応バイナリ算術符号化と復号化のシステム及び方法
【課題】コンテキスト適応バイナリ算術符号化と復号化のシステム及び方法を提供する。
【解決手段】コンテキスト適応バイナリ算術符号化と復号化のシステムであって、前記システムは、符号化される第1ビンと復号化される第2ビンの1つのインデックス値を計算する計算装置、クラスタにコンテキストモデルを保存し、前記第1ビンと前記第2ビンの1つのインデックス値が前記コンテキストモデルの1つに関連したメモリ、及び前記1つのコンテキストモデルに基づいて前記第1ビンを符号化する符号器と、前記1つのコンテキストモデルに基づいて前記第2ビンを復号化する復号器の1つとして構成されるバイナリ算術ユニットを含むシステム。
【解決手段】コンテキスト適応バイナリ算術符号化と復号化のシステムであって、前記システムは、符号化される第1ビンと復号化される第2ビンの1つのインデックス値を計算する計算装置、クラスタにコンテキストモデルを保存し、前記第1ビンと前記第2ビンの1つのインデックス値が前記コンテキストモデルの1つに関連したメモリ、及び前記1つのコンテキストモデルに基づいて前記第1ビンを符号化する符号器と、前記1つのコンテキストモデルに基づいて前記第2ビンを復号化する復号器の1つとして構成されるバイナリ算術ユニットを含むシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像符号化と復号化に関し、特に、コンテキスト適応バイナリ算術符号化(CABAC)と復号化のシステム及び方法に関するものである。
【背景技術】
【0002】
コンテキスト適応バイナリ算術符号化(CABAC)は、H.264/AVCメインプロファイルとハイプロファイルの規格に準拠したエントロピー符号化方式である。図1は、例えばH.264規格におけるH.264/AVCハイプロファイルのレベル4.1ビットストリームのビットストリーム10の構造の概略図である。図1を参照下さい。ビットストリーム10は、複数のデータスライス(番号付けされていない)を含むことができ、各データスライスは、スライスヘッダ層11とスライスデータ層12を含むことができる。スライスデータ層12は、複数のマクロブロック(MBs)13を含むことができ、各MBs13は、1つまたは複数のシンタックス(syntax)要素(SE)14を含むことができる。各SE14は、数値を有し、1つまたは複数のビン(bin)15、言い換えるとバイナリ値、即ち0または1のバイナリ値を更に含むことができる。
【0003】
コンテキスト適応バイナリ算術符号化(CABAC)と復号化のアルゴリズムを下記に簡単に説明する。図2Aは、CABACの符号化のアルゴリズムを解説する流れ図である。図2Aを参照下さい。スライスデータ層の第1SEを符号化する前に、459セットの数のコンテキスト(context)モデル(CMs)がステップ20で初期化される。各CMsは、6ビットの発生確率テーブルを参照するためのインデックス(pStateIdx)とバイナリ値を有する1ビットの発生確率の高いシンボル値(valMPS)とを含む。SEを符号化するには、2値化と、コンテキストモデルの選択と、バイナリ算術符号化と、ビット発生とを含む4つの主なステップが必要な可能性がある。ステップ21では、SEは、その値を1つまたは複数のバイナリビットからなるバイナリ文字列に変換させる。次に459セットのCMsの中の1つが、ステップ22でコンテキストモデルインデックス(ctxIdx)に基づいてバイナリ文字列の各ビンに対して選択されることができる。選択されたCMに対応して、バイナリ算術符号器(BAC)がステップ23でビンを符号化することができる。ビンを符号化した後、BACは、ステップ24で選択されたCMの再規格化と更新を行う。続いて、符号化されたビットデータがステップ25で発生されることができる。
【0004】
図2Bは、CABACの復号化のアルゴリズムを説明する流れ図である。図2Bを参照下さい。SEのビンを復号化する前に、459セットのCMsがステップ20で初期化される。SEの各ビンを復号化するために、コンテキストモデルの選択と、バイナリ算術復号化と、逆2値化(de−binarization)とを含む3つの主なステップが必要な可能性がある。ステップ22では、ビンのCMは、ctxIdxに基づいて選択され、常数、または予め復号化されたビン、または隣接のブロックからの情報によって決められた値であることができる。選択されたCMに対応して、バイナリ算術復号器(BAD)がステップ26でビンを復号化することができる。また、BADは、ステップ24で選択されたCMを更新して上述のビンの値を出力する。CMの更新とビン値の出力のステップは、バイナリ文字列がSEに発生されるまで繰り返される。続いて、復号化されたバイナリ文字列が逆2値化されてSEの値を発生する。
【0005】
図2Aと2Bより分るように、例えばCMの初期化とCMの選択などのいくつかのプロセスが符号化と復号化スキームに共通される可能性がある。よって、CABACの符号化と復号化スキームを統合するシステムを有することが望ましい。また、パイプライン構造でCABACの符号化と復号化を行えるシステムを有することが望ましい。
【発明の開示】
【発明が解決しようとする課題】
【0006】
本発明の実施例は、コンテキスト適応バイナリ算術符号化と復号化のシステム及び方法を提供する。
【課題を解決するための手段】
【0007】
コンテキスト適応バイナリ算術符号化と復号化のシステムは、符号化される第1ビンと復号化される第2ビンの1つのインデックス値を計算する計算装置、クラスタにコンテキストモデルを保存し、第1ビンと第2ビンの1つのインデックス値がコンテキストモデルの1つに関連したメモリと、1つのコンテキストモデルに基づいて第1ビンを符号化する符号器、または1つのコンテキストモデルに基づいて第2ビンを復号化する復号器の1つとして構成されるバイナリ算術ユニットを含む。
【0008】
本発明のいくつかの実施例は、パイプラインフローのコンテキスト適応バイナリ算術符号化と復号化の方法も提供する。前記方法は、第1クロックサイクルで、複数のMビンを有するシンタックス要素に関連したコンテキストモデルを読み出し、少なくとも1つの隣接のブロックから情報を得て、シンタックス要素の少なくとも1つの隣接のブロックからの情報に基づいて変数を計算するステップ、第2クロックサイクルで、変数に基づいてシンタックス要素の第1ビンの第1インデックス値を計算し、第1インデックス値に基づいて第1ビンのコンテキストモデルの1つを読み込むステップ、第3クロックサイクルで、第1ビンに関連した1つのコンテキストモデルに基づいて符号化プロセスと復号化プロセスの1つの第1ビンを処理し、第1ビンを処理した後、前記1つのコンテキストモデルを更新するステップ、第3クロックサイクルで、変数に基づいてシンタックス要素の第2ビンの第2インデックス値を計算し、第2インデックス値に基づいて第2ビンのコンテキストモデルの1つを読み込むステップ、及び第4クロックサイクルで、第2ビンに関連した1つのコンテキストモデルに基づいて符号化プロセスと復号化プロセスの1つの第2ビンを処理し、第2ビンを処理した後、前記1つのコンテキストモデルを更新するステップを含む。
【0009】
本発明の実施例は、パイプラインフローのコンテキスト適応バイナリ算術符号化と復号化の方法も提供する。前記方法は、第1クロックサイクルで、第1シンタックス要素に関連したコンテキストモデルを読み出し、少なくとも1つの隣接のブロックから情報を得て、少なくとも1つの隣接のブロックからの情報に基づいて変数を計算するステップ、第2クロックサイクルで、変数に基づいて第1シンタックス要素の第1ビンの第1インデックス値を計算し、前記第1インデックス値に基づいて第1シンタックス要素の第1ビンのコンテキストモデルの1つを読み込むステップ、第2クロックサイクルで、第2シンタックス要素に関連したコンテキストモデルを読み取り、第1シンタックス要素と第2シンタックス要素がデータ処理プロセス中に同時に生じるステップ、第3クロックサイクルで、第1シンタックス要素の第1ビンに関連した1つのコンテキストモデルに基づいて第1シンタックス要素の第1ビンを復号化し、第1シンタックス要素の第1ビンの値を得るステップ、第1シンタックス要素の第1ビンの値の1つのレベルに対応した第3クロックサイクルで、変数に基づいて第2シンタックス要素の第1ビンの第1インデックス値を計算し、前記第1インデックス値に基づいて第2シンタックス要素の第1ビンのコンテキストモデルの1つを読み込むステップ、及び第1シンタックス要素の第1ビンの値の他の1つのレベルに対応した第3クロックサイクルで、変数に基づいて第1シンタックス要素の第2ビンの第2インデックス値を計算し、前記第2インデックス値に基づいて第1シンタックス要素の第2ビンのコンテキストモデルの1つを読み込むステップを含む。
【発明の効果】
【0010】
本発明のコンテキスト適応バイナリ算術符号化(CABAC)と復号化のシステム及び方法によれば、CABACの符号化と復号化スキームを統合するシステムを有することができ、パイプライン構造でCABACの符号化と復号化を行えるシステムを有することもできる。
【発明を実施するための最良の形態】
【0011】
本発明についての目的、特徴、長所が一層明確に理解されるよう、以下に実施形態を例示し、図面を参照にしながら、詳細に説明する。
【0012】
以下、本発明の実施例を添付の図面と合わせて詳細な説明を行う。なお、同一、または類似の部分には同じ符号が用いられている。
【0013】
図3Aは、本発明に基づいたシステムのCABACの符号化のパイプラインの段階を説明する概略的な流れ図である。図3Aを参照下さい。CABACの符号化のパイプラインの段階は、例えば、2値化と、コンテキストモデル(CM)の選択と、バイナリ算術符号化と、ビット発生との段階を含むことができる。2値化の段階では、シンタックス要素(SE)の値は、バイナリ文字列に変換されることができる。CABACは、SEの種類に基づいて5種類の2値化方式を採用している。この5種類の方式は、固定長(FL)と、単項(U)と、切り捨てられた単項(truncated unary, TU)と、ツリー構造と、Concatenated Unary/k−th Order Exponential Golomb (UEGK)方式とを更に含む。この5種類の方式とバイナリ文字列の最大の長さが下記の表に示される。
【表1】
【0014】
CMの選択の段階では、459セットのコンテキストモデル(CMs)の中の1つが、コンテキストモデルインデックス(ctxIdx)に基づいてSEの各ビンに対して選択され、シンタックス要素の各‘正規’のビンの符号化を促進することができる。ctxIdxは、下記の方程式(1)によって得られる。
【0015】
ctxIdx = ctxCatOffset + ctxIdxOffset + ctxIdxInc (1)
【0016】
ctxIdxOffsetとctxCatOffsetは、SEの種類と剰余ブロックの種類によってそれぞれ分類されることができ、ctxIdxIncは、下記の方程式(2)と(3)によって得られることができる。
【0017】
condTermFlag = a*condTermFlagA + b*condTermFlagB + c (2)
【0018】
【数1】
【0019】
その中の方程式(2)のa、bと、cは、常数であり、方程式(3)のcondTermFlagAとcondTermFlagBは、隣接のブロックからの情報に基づいて算出される。例えば、condTermFlagAは、左ブロックまたはマクロブロックからの情報によって得られ、condTermFlagBは、上ブロックまたはマクロブロックからの情報によって得られることができる。
【0020】
CMの選択の段階は、4つのサブ段階、隣接ブロック情報の取得(getting neighbor block information, GNB)と、condTermFlagの計算(culculationg condTermFlag、CTF)と、ctxIdxの計算(CCI)と、CMの取得(CML)とに更に分割されることができる。GNBのサブ段階は、CTFのサブ段階の前に行われ、GNBとCTFのサブ段階は、2値化の段階と平行して行われることができる。
【0021】
バイナリ算術符号化の段階では、‘標準(regular)’エンジンと、‘バイパス(bypass)’エンジンと、‘終止(terminate)エンジン’とを含む3つの符号化エンジンが用いられることができる。変数codILowとcodIRangeは、スライスの第1マクロブロックの符号化の始めに初期化されることができる。codILowとcodIRangeの値は、符号化のプロセス中に変えられることができる。バイナリ文字列内の各ビンは、3つの符号化エンジンの中の1つによって符号化され、その中の6ビットのpStateIdxと1ビットのvalMPSからなる対応のCMが標準エンジンに求められてビンを符号化する。また、選択されたCMは、標準の符号化のプロセス中に更新されることができる。
【0022】
codIRangeの値が256より小さい時、再規格化プロセスがバイナリ算術符号化の段階に求められる可能性がある。codIRangeとcodILowは、それらの値が256より小さくない時、倍にされることができる。同時に符号化されたビットデータは、ビット発生の段階で反復して発生されることができる。
【0023】
図3Bは、本発明に基づいたシステムのCABACの復号化のパイプラインの段階を説明する概略的な流れ図である。図3Bを参照下さい。CABACの復号化のパイプラインの段階は、例えば、CMの選択と、バイナリ算術復号化と、逆2値化の段階とを含む。CMの選択の段階では、CMは、算出されたctxIdxに基づいて選択されることができ、前述のように、ctxIdxに基づいて選択され、常数、または予め復号化されたビン、または隣接のブロックからの情報によって決定された値であることができる。SEのビンは、選択されたCMに基づいて、バイナリ算術の段階に復号化されることができる。また、選択されたCMは、更新されることができ、ビンの値が発生されることができる。CMの更新とビン値の出力のステップは、バイナリ文字列がSEに発生されるまで繰り返されることができる。続いて、復号化されたバイナリ文字列が逆2値化されてSEの値を発生する。また、再規格化のプロセスは、codIRangeの値が256より小さい時、バイナリ算術復号化の段階の標準復号化エンジンに求められる可能性がある。codIRangeは、codIRangeが256より小さくなくなるまで、倍にされることができ、codIOffsetは、復号化されたビットストリームからの1ビットデータを連結することができる。
【0024】
図3Cは、本発明に基づいたシステムのCABACの符号化/復号化のパイプラインの段階を説明する概略的な流れ図である。図3Cを参照下さい。CABACの符号化/復号化のパイプラインの段階は、図3Aに示されたCABACの符号化の段階と図3Bに示されたCABACの復号化の段階を統合している。CABACの符号化プロセス中に、2値化とビット発生の段階が行われ、逆2値化の段階が行われない。一方、CABACの復号化のプロセス中に、2値化とビット発生の段階が行われず、逆2値化の段階が行われる。
【0025】
図4は、本発明に基づいたCABACの符号化と復号化のシステム40の図である。図4を参照下さい。システム40は、バイナリ変換器(BZ)41と、計算装置42と43と、バイナリ算術ユニット(BAU)44と、逆バイナリ変換器(DB)45と、ビット発生器(BG)46と、メモリ素子31と39とを含むことができる。符号化と復号化のプロセスの前に、CMが初期化されることができる。この459セットのCMを初期化する変数は、メモリ31、例えば、1762×16ビットの読み出し専用メモリ(ROM)に保存されることができる。初期化モジュール47は、459セットのCMを初期化するように構成され、次にスライスヘッダ層で初期化されたCMをメモリ32、例えば、単一ポートランダムアクセスメモリ(RAM)のクラスタに保存することができる。制御器(図示せず)の制御のもとで、“コンテキストモデル読み出し(read)”(CMR)演算を通して、CMクラスタの1つがメモリ32から取り出され、メモリ33内に読み込まれる。メモリ33は、レジスタバンクを含むことも可能であるがこれを限定するものではない。CMR演算は、GNB/CTF/BZの段階で実行されることもできる。この段階は、2値化の段階と一部のCMの選択の段階を含むこともできる。
【0026】
バイナリ変換器41は、GNB/CTF/BZの段階でSE(SE_valueで標示)の値をバイナリ文字列に2値化するように構成されることができる。同じステージ中に、1つまたは複数の隣接のブロックからの情報が得られることができる(GNBの段階)。例えば、上ブロックまたはマクロブロックからの情報がバッファ34に保存されることができ、左ブロックまたはマクロブロックからの情報が他のバッファ35に保存されることができる。第1計算装置42は、上述の方程式(2)に従って、1つまたは複数の隣接のブロックからの情報に基づいて、バイナリ文字列のビンに対応するcondTermFlagを算出するように構成されることができる。上述の表1に挙げたシンタックス要素mb_skip_flagを例にすれば、左マクロブロックのmb_skip_flagが1または左マクロブロックが得られない場合、condTermFlagAは、0に設定される。そうでなければ、condTermFlagAは、1に設定される。同様に、condTermFlagBは、上ブロックまたはマクロブロックからの情報によって決定されることができる。バイナリ変換器41と第1計算装置42からの出力は、第1レジスタ36に保存されることができる。
【0027】
CMの選択の段階の他の部分であるCCI/CMLの段階では、第2計算装置43は、上述の方程式(1)に基づいてCMインデックス(ctxIdx)を計算するように構成されることができる。第2計算装置43から算出されたCMインデックスに基づくと、CMがメモリ33から取り出されることができる。メモリ33からのCMに基づくと、第1rLPS(range of least probable symbol、発生確率の低いシンボル値の範囲)は、例えば、8×256ビット参照テーブル(LUT)の第1参照テーブル(LUT)51から発生されることができる。第1rLPSの値は、上述のCMの6ビットpStateIdxによって、第1LUT51から得られることができ、BAU44の後に続く符号化または復号化のプロセスに用いられることができる。第1rLPSは、マルチプレクサ48への第1入力となることができる。第2LUT52からの第2rLPSは、マルチプレクサ48への第2入力となることができる。第2rLPSは、BAU44からの更新されたCMに基づいて第2LUT52によって発生されることができる。第1rLPSと第2rLPSの中の1つは、マルチプレクサ48によって選択され、第2レジスタ37に保存されることができる。1つの実施例では、マルチプレクサ48は、現在のビンに選択されたCMインデックスが前のビンに選択されたCMインデックスと異なる場合、第1rLPSを出力することができ、現在のビンに選択されたCMインデックスが前のビンに選択されたCMインデックスと同じ場合、第2rLPSを出力することができる。現実施例では、第1LUT51と第2LUT52は、異なるLUTsである。しかし他の実施例では、第1LUT51と第2LUT52は、同じLUTである。
【0028】
BAU44は、SEの種類とビンインデックス(binIdx)に基づいて、標準ビンと、バイパスビンと、終止ビンを符号化するように構成されることができる。いくつかのシンタックス要素とそれと対応する符号化エンジンが下記の表2に示される。
【表2】
【0029】
初期化されたCMsは、“コンテキストモデル読み出し”(CMR)演算を通して、メモリ32からメモリ33に読み込まれることができる。標準ビンが処理された場合、更新されたCMは、メモリ33に書き込まれなければならない可能性がある。続いて、符号化されたビンは、ビット発生器46に転送されることができ、符号化されたビットストリームを発生するように構成されることができる。ビット発生器46は、例えば8*11ビットレジスタの先入れ先出し(FIFO)装置38から、例えば、“EncodeFlush”、“low_renorm”と、“range_lnz_renorm”などのパラメータを取り出して、ビット長(bits_len)とビットデータ(bits_data)を含む符号化されたビットストリームのデータを発生することができる。CMの選択とバイナリ算術符号化の段階は、SEの全てのビンが完全に符号化されるまで繰り返されることができる。
【0030】
BAU44は、SEの種類とビンインデックスに基づいて、標準ビンと、バイパスビンと、終止ビンを復号化するように構成されることもできる。初期化されたCMsは、“コンテキストモデル読み出し”(CMR)演算を通して、メモリ32からメモリ33に読み込まれることができる。復号化されたビンは、バッファ39に転送されることができる。ビンが符号化された場合、選択されたCMは、更新され、メモリ33に書き戻されることができる。逆バイナリ変換器45は、SEの全てのビンが復号化されて、SEの復号化が完了した時、バッファ39内の復号化されたビンに基づいて、SE値(SE_value)を出力するかどうかを決める。SE_Value信号は、H.264解析器(parser)ユニット(図示せず)または剰余(residual)ユニット(図示せず)に伝送されて、剰余ブロックの解析フローを行うことができる。1つの実施例では、SE_Value信号は、“隣接バッファ更新”(NBU)演算によって第1バッファ34と第2バッファ35に書き込まれることができる。CMの選択とバイナリ算術符号化/逆2値化の段階は、逆バイナリ変換器45がSEの復号化を完了し、且つ完了信号SE_Validを例えば高ロジックレベルに設定したことを検出するまで繰り返されることができる。SEの全てのビンが復号化された場合、メモリ33の中の更新されたCMは、CMW演算によってメモリ32に書き戻されることができる。
【0031】
図5Aは、本発明の実施例に基づいたCABACの符号化のパイプライン構造を説明する概略図である。図5Aと、図3Aと、図3Cと、図4も参照下さい。サイクル0では、SE値は、ビン0と、ビン1と、ビン2とを含むバイナリストリームの中に、2値化されることができる(BZ)。隣接のブロックからの情報が得られることができ(GNBの段階)、condTermFlagが計算されることができる(CTFの段階)。また、初期化されたCMsが読み取られることができる(CMRの段階)。GNBからCTFに向けた点線の矢印は、GNBがCTFの前に実行されることを表している。
【0032】
サイクル1では、CMインデックス“ctxIdx”が計算されることができ(CCI)、ビン0のCMが選択されて読み込まれることができる(CML)。
【0033】
サイクル2では、ビン0が符号化されることができ(BAU)、続いて選択されたビン0のCMが更新されることができる(CMU)。また、CMインデックス“ctxIdx”が計算されることができ(CCI)、ビン1のCMが選択されて読み込まれることができる(CML)。
【0034】
サイクル3では、ビン0のビットストリームが発生されることができる(BG)。ビン1は、符号化されることができ(BAU)、続いて選択されたビン1のCMが更新されることができる(CMU)。また、CMインデックス“ctxIdx”が計算されることができ(CCI)、ビン2のCMが選択されて読み込まれることができる(CML)。
【0035】
サイクル4では、ビン1のバイナリストリームが発生されることができる(BG)。ビン2は、符号化されることができ(BAU)、続いて選択されたビン2のCMが更新されることができる(CMU)。
【0036】
サイクル5では、ビン2のバイナリストリームが発生されることができる(BG)。
【0037】
パイプライン構造では、データ転送テクニックがCMLとCMU間のデータ依存性を処理するのに用いられることができる。ビン(i+1)のctxIdxがビンiのctxIdxと同じ場合、BAUの段階からのビンiの更新されたCMは、マルチプレクサ48によって選択されることができる。他のデータ依存性は、CCIとBAUの段階で生じる可能性があり、その中のビン(i+1)のCCI演算は、ビンiの値を要する可能性がある。データ依存性のパイプライン処理は、1つのマクロブロックに多くて5サイクル要する可能性がある。特に、ビン1は、サイクル0とサイクル1の間の2サイクルで停止状態にあり、ビン2は、サイクル0〜サイクル2の間の3サイクルで停止状態にある。
【0038】
図5Bは、本発明の実施例に基づいたCABACの複号化のパイプライン構造を説明する概略図である。図5Bと、図3Bと、図3Cと、図4も参照下さい。サイクル0では、隣接のブロックからの情報が得られることができ(GNBの段階)、condTermFlagが計算されることができる(CTFの段階)。また、初期化されたCMsが読み取られることができる(CMRの段階)。
【0039】
サイクル1では、CMインデックス“ctxIdx”が計算されることができ(CCI)、ビン0のCMが選択されて読み込まれることができる(CML)。
【0040】
サイクル2では、ビン0が復号化されることができ(BAU)、続いて選択されたビン0のCMが更新されることができる(CMU)。更新されたCMは、メモリ33に伝送されることができる。ビン0の復号化されたビン値は、バッファ39に保存されることができる。逆バイナリ変換器(DB)45は、SEの復号化プロセスが完了してなく、且つ信号SE_Validを例えば低ロジックレベルに設定していることを検出することができる。また、CMインデックス“ctxIdx”が計算されることができ(CCI)、ビン1のCMが選択されて読み込まれることができる(CML)。
【0041】
サイクル3では、ビン1は、復号化されることができ(BAU)、続いて選択されたビン1のCMが更新されることができる(CMU)。更新されたCMは、メモリ33に伝送されることができる。ビン1の復号化されたビン値は、バッファ39に保存されることができる。逆バイナリ変換器(DB)45は、SEの復号化プロセスが完了してなく、且つ信号SE_Validを低ロジックレベルに保持していることを検出することができる。また、CMインデックス“ctxIdx”が計算されることができ(CCI)、ビン2のCMが選択されて読み込まれることができる(CML)。
【0042】
サイクル4では、サイクル3に類似しており、ビン2が復号化されることができ(BAU)、続いて選択されたビン2のCMが更新されることができる(CMU)。更新されたCMは、メモリ33に伝送されることができる。ビン2の復号化されたビン値は、バッファ39に保存されることができる。逆バイナリ変換器(DB)45は、SEの復号化プロセスが完了してなく、且つ信号SE_Validを低ロジックレベルに保持していることを検出することができる。また、CMインデックス“ctxIdx”が計算されることができ(CCI)、ビン3のCMが選択されて読み込まれることができる(CML)。
【0043】
サイクル5では、ビン3が復号化されることができ(BAU)、続いて選択されたビン3のCMが更新されることができる(CMU)。更新されたCMは、メモリ33に伝送されることができる。ビン3の復号化されたビン値は、バッファ39に保存されることができる。逆バイナリ変換器(DB)45は、SEの復号化プロセスが完了し、且つ信号SE_Validを高ロジックレベルに設定していることを検出することができる。
【0044】
続いてサイクル6では、メモリ33に保存された更新されたCMsは、CMW演算によってメモリ32に書き戻されることができる。また、逆バイナリ変換器45は、SE値、即ち、SE_Valueを発生して、NBU演算によって信号SE_Valueを第1バッファ34と第2バッファ35に書き込むことができる。
【0045】
図5Aと図5Bを再度参照下さい。CMRの演算は、1つのクロック内で実行されることができる。CMRが1つのクロックサイクル内で完了されることができるように確保するために、同じSEで用いられるコンテキストモデルは、メモリ33の同じアドレスに配置されることができる。図6Aは、従来技術のメモリのコンテキストモデル(CMs)の配置方式を説明する概略図である。各CMが7ビットの長さを有することから、メモリの最小データバス幅は、105ビット(15*7ビット)となることができて、SE“significant_coeff_flag”は、15セットのCMを用いることができ、全てのシンタックス要素の中で最も長いSEとなる。しかし、このような配置は、メモリ空間が効果的に用いられないことになる。
【0046】
図6Bは、本発明に基づいたメモリのコンテキストモデル(CMs)の配置方式を説明する概略図である。1つの実施例では、459セットのCMsは、下記に示されるように38のクラスタに分割される。
(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
【0047】
上述の38のクラスタは、下記の規則に基づいてメモリの中に配置されることができる。
【0048】
規則1: #CMs (SEi) + #CMs (SEi+1) + … + #CMs (SEi+n) ≦ 15
【0049】
SEiは、第i個目のシンタックス要素を表し、#CMs(SEi)は、SEiはの符号化または復号化に用いられるコンテキストモデルの数を表している。
【0050】
規則2は、SEi、SEi+1、 ...、SEi+n は、符号化または復号化の順序で配列する。
【0051】
規則1と規則2を用いることで、CMsの数が15に等しい、または15より小さい場合、SEに用いられるCMsは、メモリの同じアドレスでクラスタに配置されることができる。図6Bを参照下さい。各クラスタは、1つのメモリ空間を占有し、1つのクロックサイクルで、15個の7ビットレジスタからなるレジスタバンクに読み込まれることができる。このような配置方式は、メモリ空間の使用量を例えば662バイトから460バイトに減少することができる。また、このような配置は、メモリのアクセス頻度を低下させることができる。例えば、SEのCMsは、“mb_skip_flag”を処理した後、SEsの両方が同じクラスタに属し(2)、SEmb_skip_flagの復号化中に既に読み込まれることができることから、SE“mb_field_decoding_flag”のCMsは、別に読み込まれる必要がなくなる。図6Aに示された配置に比べると、図6Bに示された本発明に基づいた配置は、より効率の良いメモリ空間の使用を達成している。
【0052】
図7Aは、シンタックス要素SCF[i]とLSCF[i]との間のコンテキストモデルの切り替えを説明する概略図である。図7Aを参照下さい。H.264標準に規格されるように、1ビン(1−bin)SE“last_significant_coeff_flag[i]”(LSCF[i])は、1ビンSE“significant_coeff_flag[i]”(SCF[i])が処理されるまで処理されない。SCF[i]とLSCF[i]の処理は、符号化と復号化を含むことができる。本実施例では、CMの切り替えは、SCF[i]の復号化プロセスが完了した時のサイクル3とLSCF[i]の復号化プロセスが開始した時のサイクル4との間で生じることができる。1ビンLSCF[i]は、位置iにある係数が非ゼロであるかどうかを決めることができ、1ビンSCF[i]は、位置iの後のSCFsが全てゼロであるかどうかを指している。SCF[i]の値が1の場合、LSCF[i]が存在する。このような状況では、LSCF[i]の値も1の場合、続くSCFsは、全てゼロであり、処理される必要がなくなる。一方、SCF[i]の値が0の場合、LSCF[i]は、処理される必要がなくなり、SCF[i+1]は、下記の表3に示すように符号化されることができる。
【表3】
【0053】
図7Bに示されたパイプライン構造に比べると、CMの切り替えは、H.264標準に基づいてパイプラインの動作中で3つの停止したサイクルを要する可能性がある。図7Bは、本発明の実施例に基づいたシンタックス要素SCF[i]とLSCF[i]とを処理するパイプライン構造を説明する概略図である。また、図7Cは、本発明の実施例に基づいたシンタックス要素LSCFの専用レジスタバンクを含むメモリ70の概略図である。図7Bを参照下さい。サイクル0では、隣接のブロックからの情報が得られることができ(GNBの段階)、condTermFlagが計算されることができる(CTFの段階)。また、初期化されたCMs、またはSCFのCMクラスタが図7Cに示されたメモリ70のレジスタバンク72に読み込まれることができる(CMRの段階)。
【0054】
サイクル1では、CMインデックス“ctxIdx”が計算されることができ(CCI)、SCF[i]のCMが選択されて読み込まれることができる(CML)。また、初期化されたCMs、またはLSCFのCMクラスタがメモリ70のレジスタバンク71に読み込まれることができる(CMRの段階)。
【0055】
サイクル2では、ビンSCF[i]が符号化されることができ(BAU)、続いて選択されたビンSCF[i]のCMが更新されることができる(CMU)。ビンSCF[i]の復号化されたビン値が1の場合、LSCF[i]が存在することを意味し、CMインデックス“ctxIdx”が計算されることができ(CCI)、ビンLSCF[i]のCMが選択されて読み込まれることができる(CML)。ビンSCF[i]の復号化されたビン値が0の場合、LSCF[i]は、処理される必要がなく、CMインデックス“ctxIdx”が計算されることができ(CCI)、ビンSCF[i+1]のCMが選択されて読み込まれることができる(CML)。
【0056】
サイクル3では、ビンLSCF[i]またはSCF[i+1]が符号化されることができ(BAU)、続いて選択されたビンLSCF[i]またはSCF[i+1]のCMが更新されることができる(CMU)。下記の表4は、解像度1920×1080の画像シーケンス(video sequence)での8M、22M、47Mと、51Mbpsの異なるビット率で、各スライスのコンテキストモデル切り替えの数を示している。本発明に基づいたパイプライン構造は、51Mbpsのビット率で各スライス毎に約3×382284クロックサイクル節約することができる。
【表4】
【0057】
図8は、本発明の実施例に基づいたバイナリ変換器80の回路図である。バイナリ変換器80は、SE値と種類に基づいた長さのバイナリ文字列を発生するように構成されることができる。図8を参照下さい。バイナリ変換器80は、5つのROMテーブル81〜85を含むことができる。ツリー構造テーブル81は、SEs“mb_type and sub_mb_type”で用いられ、バイナリ文字列を発生することができる。切り捨て(truncated)テーブル82は、SE“intra_chroma_pred_mode”で用いられることができる。単項(unary)テーブル83は、SEs“ref_idxと“mb_qp_delta” で用いられることができる。SEs“mvd”と“coefficient_abs_level_minusl”の値は、それぞれ接頭部と接尾部から構成されることができる。これらの2つのSEsの接頭部は、切り捨てられた単項コードを含むことができる。mvdの接尾部は、UEG3コードであり、coefficient_abs_level_minuslの接尾部は、UEG0コードである。よって、マルチプレクサ801と802と連結したUEG0テーブル84とUEG3テーブル85は、これらの2つのSEsの接尾部をそれぞれ2値化するように用いられることができる。単項テーブル83とマルチプレクサ803は、接頭部を2値化するように用いられることができる。それぞれマルチプレクサ803と804からのバイナリ文字列の接頭部と接尾部は、連結装置86で互いに連結される。続いて、SEの種類をセレクタ(selector)信号として用い、マルチプレクサ805からバイナリ文字列が発生されることができる。バイナリ変換器80の回路動作は、図12Aを参照にしながら後に説明する。
【0058】
図9は、本発明の実施例に基づいたバイナリ算術ユニット(BAU)90の回路図である。BAU90は、CABACの符号化と復号化の標準エンジンと、バイパスエンジンと、終止エンジンを含むことができる。変数codIRange(rangeで図示される)とcodILow(Lowで図示される)は、バイナリ算術符号化のプロセス中に更新されることができる。一方、変数codIRangeと他のcodIOffset(Offsetで図示される)は、バイナリ算術復号化のプロセス中に更新されることができる。H.264標準の規格に基づいて、変数codIRangeと、codILowと、codIOffsetを更新するアルゴリズムを下記の表5と、表6と、表7にそれぞれ表示する。
【表5】
【表6】
【表7】
【0059】
表5〜7は、異なるエンジンと条件において、3つの変数の値が再代入されることができるかどうかを示している。図9を参照下さい。可変Lowと、Offsetと、rangeに加え、変数“bin Val”、“valMPS”と、“rLPS”がBAU90に入力されることができる。変数bin Valの値は、図8に示されたバイナリ変換器80のマルチプレクサ805から発生されることができ、valMPSと、rLPSの値は、対応するCMが決定された時、決定されることができる。BAU90は、rangeと、Offsetと、Lowの値を更新して、更新されたnew_rangeと、new_Offsetと、new_Lowの値を出力することができる。BAU90の回路動作は、図12Bを参照しながら後に説明する。
【0060】
BAU90は、再規格化装置を含むことができ、BAUの符号器と復号器のcodIRangeが256より小さい時、再規格化のプロセスを行う。図10は、本発明の実施例に基づいた再規格化装置100の回路図である。図10を参照下さい。再規格化装置100は、BAU90からnew_rangeと、new_Offsetと、new_Lowの値を受けることができる。先行ゼロ検出(LZD)装置101は、codIRangeと、codILowと、codIOffsetに左シフトされるビット数を決定するのに用いられることができる。CABACが符号化モードにあり、codIRangeが256より小さい時、3つのパラメータrange_lzn_renormと、low_renormと、EncodeFlushは、FIFO102に入れられることができる。再規格化装置100の回路動作は、図12Cを参照しながら後に説明する。
【0061】
図11は、本発明の実施例に基づいたビット発生器110の回路図である。図11を参照下さい。ビット発生器110は、実行の流れを制御するための有限状態機械(FSM)を含むことができる。LZD装置111は、変数low_muxの先行ゼロ数を検出するのに用いられることができ、low_muxは、図10に示されたFIFO102からのlow_renormから選択される。先行1検出(leading one detection、LOD)装置112は、変数low_muxの先行1の数を検出するのに用いられることができる。ビット発生器110は、3つの出力信号“bit−write−enable”(bwe)と、“bits_len”と、“bits”を発生することができる。信号bitsは、符号化されたビットストリームを示し、“bits_len”は、符号化されたビットストリームの長さを示し、bweは、信号bitsが有効であることを示している。ビット発生器110の回路動作は、図12Dを参照しながら後に説明する。
【0062】
図1に挙げられたSE“mb_type”の符号化の回路動作を参照にしながら図12A〜12Dを説明する。図12Aは、図8に示されたバイナリ変換器80の回路動作である。図12Aを参照下さい。SEmb_typeは、I−スライスの種類と例えば25の値を有する。また、表1に見られるように、mb_typeの2値化の種類は、ツリー構造である。mb_typeのSEのスライスの種類とSE値に対応して、ツリー構造テーブル81は、2ビットの長さのバイナリ値“11”を示す出力2’b11を発生することができる。マルチプレクサ805は、0に設定されたセレクタ信号se_typeに基づいて出力値2’b11を出力として選択する。よって、バイナリ変換器80は、25のSE値に基づいて、SEをバイナリ文字列2’b11に2値化する。
【0063】
図12Bは、図9に示されたBAU90の回路動作である。図12Bを参照下さい。バイナリ文字列2’b11(即ち、11)の第1バイナリ値である、変数“binVal”の初期値は、1である。バイナリ文字列2’b11の第2で、最後でもあるバイナリ値である、変数“binVal”の次の値も1である。表示1(1)では、括弧外の第1の“1”は、binValの初期値を指しており、第2の“1”は、binValの次の値を指している。また、第1binValを符号化している時、変数valMPSと、Lowと、rangeと、rLPSは、それぞれ0、374、458と、150の初期値を有すると仮定することができる。変数“Offset”は、復号化のプロセスに用いられ、符号化のプロセスに用いられないため、数値がない。
【0064】
binValとvalMPSの値を比べることで、比較装置901が0の値を出力することができる。第1加算器905は、“range”の値から“rLPS”の値を引いて308の値を出力する。マルチプレクサ902、903、906、907と、910のセレクタ信号“decoder”は、符号化プロセス中、“0”に設定されることができ、マルチプレクサ902、903、906、907と、910は、“0”入力端子での値を出力として選択することができる。他の実施例では、復号化プロセス中のセレクタ信号“decoder”は、“1”に設定されることができる。このように、BAU90は、マルチプレクサの選択ピンの値に基づいて、符号化のプロセス中、CABAC符号器となることができ、復号化のプロセス中、CABAC復号器となることができる。また、マルチプレクサ904のセレクタ信号“bypass”は、標準ビンを符号化する時、“0”に設定されることができる。また、マルチプレクサ909のセレクタ信号“dec_mode”は、標準ビンを符号化する時、“00”に設定されることができる。第2加算器912は、マルチプレクサ904と906からの出力値374と308を加えることで682の値を出力する。マルチプレクサ907と908のセレクタ信号は、マルチプレクサ902からの出力によって決定する。続いてマルチプレクサ909からの変数new_rangeの値は、150であり、マルチプレクサ910からの変数new_offsetとnew_lowの値は、682である。変数new_rangeの値が256より小さいことから、再規格化プロセスが求められる可能性がある。
【0065】
図12Cは、図10に示された再規格化装置100の回路動作である。図12Cを参照下さい。BAU90からの出力変数new_rangeとnew_offsetと、new_lowは、再規格化装置100への出力となることができる。LZD101の入力値が150であり、150のバイナリフォームが010010110であることから、先行0の数は1となるため、LZD101は、1の値を出力することができる。LZDの出力に基づいて、第1左シフター103は、バイナリフォーム010010110を1ビット、左にシフトすることができ、新しいバイナリフォーム100101100、または300の値となる。300の値は、256より大きく、変数new_rangeの150の入力値の倍である。即ち、図12Bの変数“range”は、300の新しい値によって更新され、次のビンの符号化に用いられることができる。また、LZDの出力に基づいて、第2左シフター108は、マルチプレクサ104の680の出力値のバイナリフォーム1010101010を1ビット、左にシフトすることができ、新しいバイナリフォーム0101010100、または340の値となる。AND−ゲートモジュール107は、新しいバイナリフォーム0101010100と10’hlffのmask_bitsにロジック演算(logic AND function)を行うことができる。その中の10’hlffは、10ビットの16進値1ffまたは0111111111であり、340の値となる。
【0066】
変数new_renormとrange_lzn_renormの値は、それぞれマルチプレクサ105と106の出力値によって決定する。変数EncodeFlushの値は、現在、終止エンジンによって符号化された終止ビンが非ゼロ値を有した場合、0に設定され、終止ビンがゼロ値を有した場合、1にセットされる。変数low_renormと、range_lzn_renormと、EncodeFlushの値は、FIFO102に送り込まれる。
【0067】
図12Dは、図11に示されたビット発生器110の回路動作である。図12Dを参照下さい。変数low_renormは、バイナリフォームが1010101010の682の値を有し、変数range_lznは、再規格化装置100で決定された1の値を有する。ビット9からビット4、即ち101010は、マルチプレクサ113によって変数low_renormのバイナリフォーム1010101010から取り出され、変数low_muxに割り当てられる。LOD111は、マルチプレクサ114によって選択された、変数low_muxの先行1の数が1であるのを検出する。マルチプレクサ114からの出力に基づいて、左シフター115は、バイナリフォーム1010101010を1ビット、左にシフトし、新しいバイナリフォーム0101010100となる。変数bitOutStandingの値が2とした場合、増加されない。信号bweは、高ロジックであるため、0の値を有する2ビットコードビットストリームが発生されることができる。
【0068】
図12Bを再度参照下さい。第1ビンが符号化された後、第2と最後のビンも符号化されることができる。変数lowとrangeは、第1ビンを符号化している時に、再規格化装置100でそれぞれ340と300として更新される。valMPSとrLPSの値は、それぞれ0と2と仮定される。マルチプレクサ909のセレクタ信号“dec_mode”は、最後のビンが符号化されるため、終止モードであり“10”に設定される。変数new_rangeは、298であり、256より大きいため、再規格化装置100で倍にされない。図12Cを再度参照下さい。変数range_outは、298に等しい。
【0069】
以上、本発明の好適な実施例を例示したが、これは本発明を限定するものではなく、本発明の精神及び範囲を逸脱しない限りにおいては、当業者であれば行い得る少々の変更や修飾を付加することが可能である。従って、本発明が請求する保護範囲は、特許請求の範囲を基準とする。
【図面の簡単な説明】
【0070】
【図1】H.264規格におけるビットストリームの構造の概略図である。
【図2A】コンテキスト適応バイナリ算術符号化(CABAC)の符号化のアルゴリズムを説明する流れ図である。
【図2B】コンテキスト適応バイナリ算術符号化(CABAC)の復号化のアルゴリズムを説明する流れ図である。
【図3A】本発明に基づいたシステムのCABACの符号化のパイプラインの段階を説明する概略的な流れ図である。
【図3B】本発明に基づいたシステムのCABACの復号化のパイプラインの段階を説明する概略的な流れ図である。
【図3C】本発明に基づいたシステムのCABACの符号化と復号化のパイプラインの段階を説明する概略的な流れ図である。
【図4】本発明に基づいたCABACの符号化と復号化のシステム図である。
【図5A】本発明の実施例に基づいたCABACの符号化のパイプライン構造を説明する概略図である。
【図5B】本発明の実施例に基づいたCABACの復号化のパイプライン構造を説明する概略図である。
【図6A】従来技術のメモリのコンテキストモデル(CMs)の配置方式を説明する概略図である。
【図6B】本発明に基づいたメモリのコンテキストモデル(CMs)の配置方式を説明する概略図である。
【図7A】シンタックス要素SCF[i]とLSCF[i]との間のコンテキストモデルの切り替えを説明する概略図である。
【図7B】本発明の実施例に基づいたシンタックス要素SCF[i]とLSCF[i]とを処理するパイプライン構造を説明する概略図である。
【図7C】本発明の実施例に基づいたシンタックス要素LSCFの専用レジスタバンクを含むメモリの概略図である。
【図8】本発明の実施例に基づいたバイナリ変換器の回路図である。
【図9】本発明の実施例に基づいたバイナリ算術ユニット(BAU)の回路図である。
【図10】本発明の実施例に基づいた再規格化装置の回路図である。
【図11】本発明の実施例に基づいたビット発生器の回路図である。
【図12A】図8に示されたバイナリ変換器の回路動作である。
【図12B】図9に示されたBAUの回路動作である。
【図12C】図10に示された再規格化装置の回路動作である。
【図12D】図11に示されたビット発生器の回路動作である。
【符号の説明】
【0071】
10…ビットストリーム
11…スライスヘッダ層
12…スライスデータ層
13…マクロブロック
14…シンタックス要素
15…ビン(バイナリ値)
20…コンテキストモデルの初期化
21、41、80…バイナリ変換器
22…コンテキストモデルセレクター
23…バイナリ算術符号器
24…コンテキストモデルの更新
25、46、110…ビット発生器
26…バイナリ算術復号器
27、45…逆バイナリ変換器
31、32、33、39…メモリ
34、35…バッファ
36…第1レジスタ
37…第2レジスタ
38、102…先入れ先出し装置
40…CABACの符号化と復号化のシステム
42、43…計算装置
44、90…バイナリ算術ユニット(BAU)
47…初期化モジュール
48、801、802、803、804、805、902、903、904、906、907、908、909、910、104、105、106、113、114…マルチプレクサ
51…第1参照テーブル
52…第2参照テーブル
81…ツリー構造テーブル
82…切り捨て(truncated)テーブル
83…単項(unary)テーブル
84…UEG0テーブル
85…UEG3テーブル
86…連結装置
901…比較装置
905…第1加算器
912…第2加算器
100…再規格化装置
101、112…先行ゼロ検出装置
103…第1左シフター
107…AND−ゲートモジュール
108…第2左シフター
111…先行1検出装置
115…左シフター
SE_Value、SE_Valid…信号
ctxIdx…コンテキストモデルインデックス
EncodeFlush、low_renorm、range_lnz_renorm…パラメータ
bits_len、bits_data、bwe、bits…信号
mb_skip_flag、mb_field_decoding_flag、 mb_type、sub_mb_type、prev_intra4x4_pred_mode_flag、coded_block_flag、significant_coeff_flag、last_significant_coeff_flag、coeff_abs_level_minusl、SCF[i]、LSCF[i]、SCF[i+1]、mvd…シンタックス要素
ctxBlockCat…シンタックスブロック種類
Slice_type…シンタックス種類
se_value…シンタックス要素値
UEG_Prefix_Bins…バイナリ文字列の接頭部
UEG_Suffix_Bins…バイナリ文字列の接尾部
BinString…バイナリ文字列
bin Val、valMPS、Low、Offset、range、rLPS、rMPS、mask_bits、new_range、new_offset、new_low、range_out、offset_out、low_out、bitOutStanding、low_mux…変数
decorder、bypass、Decoder&Terminate、dec_mode…セレクタ信号
【技術分野】
【0001】
本発明は、画像符号化と復号化に関し、特に、コンテキスト適応バイナリ算術符号化(CABAC)と復号化のシステム及び方法に関するものである。
【背景技術】
【0002】
コンテキスト適応バイナリ算術符号化(CABAC)は、H.264/AVCメインプロファイルとハイプロファイルの規格に準拠したエントロピー符号化方式である。図1は、例えばH.264規格におけるH.264/AVCハイプロファイルのレベル4.1ビットストリームのビットストリーム10の構造の概略図である。図1を参照下さい。ビットストリーム10は、複数のデータスライス(番号付けされていない)を含むことができ、各データスライスは、スライスヘッダ層11とスライスデータ層12を含むことができる。スライスデータ層12は、複数のマクロブロック(MBs)13を含むことができ、各MBs13は、1つまたは複数のシンタックス(syntax)要素(SE)14を含むことができる。各SE14は、数値を有し、1つまたは複数のビン(bin)15、言い換えるとバイナリ値、即ち0または1のバイナリ値を更に含むことができる。
【0003】
コンテキスト適応バイナリ算術符号化(CABAC)と復号化のアルゴリズムを下記に簡単に説明する。図2Aは、CABACの符号化のアルゴリズムを解説する流れ図である。図2Aを参照下さい。スライスデータ層の第1SEを符号化する前に、459セットの数のコンテキスト(context)モデル(CMs)がステップ20で初期化される。各CMsは、6ビットの発生確率テーブルを参照するためのインデックス(pStateIdx)とバイナリ値を有する1ビットの発生確率の高いシンボル値(valMPS)とを含む。SEを符号化するには、2値化と、コンテキストモデルの選択と、バイナリ算術符号化と、ビット発生とを含む4つの主なステップが必要な可能性がある。ステップ21では、SEは、その値を1つまたは複数のバイナリビットからなるバイナリ文字列に変換させる。次に459セットのCMsの中の1つが、ステップ22でコンテキストモデルインデックス(ctxIdx)に基づいてバイナリ文字列の各ビンに対して選択されることができる。選択されたCMに対応して、バイナリ算術符号器(BAC)がステップ23でビンを符号化することができる。ビンを符号化した後、BACは、ステップ24で選択されたCMの再規格化と更新を行う。続いて、符号化されたビットデータがステップ25で発生されることができる。
【0004】
図2Bは、CABACの復号化のアルゴリズムを説明する流れ図である。図2Bを参照下さい。SEのビンを復号化する前に、459セットのCMsがステップ20で初期化される。SEの各ビンを復号化するために、コンテキストモデルの選択と、バイナリ算術復号化と、逆2値化(de−binarization)とを含む3つの主なステップが必要な可能性がある。ステップ22では、ビンのCMは、ctxIdxに基づいて選択され、常数、または予め復号化されたビン、または隣接のブロックからの情報によって決められた値であることができる。選択されたCMに対応して、バイナリ算術復号器(BAD)がステップ26でビンを復号化することができる。また、BADは、ステップ24で選択されたCMを更新して上述のビンの値を出力する。CMの更新とビン値の出力のステップは、バイナリ文字列がSEに発生されるまで繰り返される。続いて、復号化されたバイナリ文字列が逆2値化されてSEの値を発生する。
【0005】
図2Aと2Bより分るように、例えばCMの初期化とCMの選択などのいくつかのプロセスが符号化と復号化スキームに共通される可能性がある。よって、CABACの符号化と復号化スキームを統合するシステムを有することが望ましい。また、パイプライン構造でCABACの符号化と復号化を行えるシステムを有することが望ましい。
【発明の開示】
【発明が解決しようとする課題】
【0006】
本発明の実施例は、コンテキスト適応バイナリ算術符号化と復号化のシステム及び方法を提供する。
【課題を解決するための手段】
【0007】
コンテキスト適応バイナリ算術符号化と復号化のシステムは、符号化される第1ビンと復号化される第2ビンの1つのインデックス値を計算する計算装置、クラスタにコンテキストモデルを保存し、第1ビンと第2ビンの1つのインデックス値がコンテキストモデルの1つに関連したメモリと、1つのコンテキストモデルに基づいて第1ビンを符号化する符号器、または1つのコンテキストモデルに基づいて第2ビンを復号化する復号器の1つとして構成されるバイナリ算術ユニットを含む。
【0008】
本発明のいくつかの実施例は、パイプラインフローのコンテキスト適応バイナリ算術符号化と復号化の方法も提供する。前記方法は、第1クロックサイクルで、複数のMビンを有するシンタックス要素に関連したコンテキストモデルを読み出し、少なくとも1つの隣接のブロックから情報を得て、シンタックス要素の少なくとも1つの隣接のブロックからの情報に基づいて変数を計算するステップ、第2クロックサイクルで、変数に基づいてシンタックス要素の第1ビンの第1インデックス値を計算し、第1インデックス値に基づいて第1ビンのコンテキストモデルの1つを読み込むステップ、第3クロックサイクルで、第1ビンに関連した1つのコンテキストモデルに基づいて符号化プロセスと復号化プロセスの1つの第1ビンを処理し、第1ビンを処理した後、前記1つのコンテキストモデルを更新するステップ、第3クロックサイクルで、変数に基づいてシンタックス要素の第2ビンの第2インデックス値を計算し、第2インデックス値に基づいて第2ビンのコンテキストモデルの1つを読み込むステップ、及び第4クロックサイクルで、第2ビンに関連した1つのコンテキストモデルに基づいて符号化プロセスと復号化プロセスの1つの第2ビンを処理し、第2ビンを処理した後、前記1つのコンテキストモデルを更新するステップを含む。
【0009】
本発明の実施例は、パイプラインフローのコンテキスト適応バイナリ算術符号化と復号化の方法も提供する。前記方法は、第1クロックサイクルで、第1シンタックス要素に関連したコンテキストモデルを読み出し、少なくとも1つの隣接のブロックから情報を得て、少なくとも1つの隣接のブロックからの情報に基づいて変数を計算するステップ、第2クロックサイクルで、変数に基づいて第1シンタックス要素の第1ビンの第1インデックス値を計算し、前記第1インデックス値に基づいて第1シンタックス要素の第1ビンのコンテキストモデルの1つを読み込むステップ、第2クロックサイクルで、第2シンタックス要素に関連したコンテキストモデルを読み取り、第1シンタックス要素と第2シンタックス要素がデータ処理プロセス中に同時に生じるステップ、第3クロックサイクルで、第1シンタックス要素の第1ビンに関連した1つのコンテキストモデルに基づいて第1シンタックス要素の第1ビンを復号化し、第1シンタックス要素の第1ビンの値を得るステップ、第1シンタックス要素の第1ビンの値の1つのレベルに対応した第3クロックサイクルで、変数に基づいて第2シンタックス要素の第1ビンの第1インデックス値を計算し、前記第1インデックス値に基づいて第2シンタックス要素の第1ビンのコンテキストモデルの1つを読み込むステップ、及び第1シンタックス要素の第1ビンの値の他の1つのレベルに対応した第3クロックサイクルで、変数に基づいて第1シンタックス要素の第2ビンの第2インデックス値を計算し、前記第2インデックス値に基づいて第1シンタックス要素の第2ビンのコンテキストモデルの1つを読み込むステップを含む。
【発明の効果】
【0010】
本発明のコンテキスト適応バイナリ算術符号化(CABAC)と復号化のシステム及び方法によれば、CABACの符号化と復号化スキームを統合するシステムを有することができ、パイプライン構造でCABACの符号化と復号化を行えるシステムを有することもできる。
【発明を実施するための最良の形態】
【0011】
本発明についての目的、特徴、長所が一層明確に理解されるよう、以下に実施形態を例示し、図面を参照にしながら、詳細に説明する。
【0012】
以下、本発明の実施例を添付の図面と合わせて詳細な説明を行う。なお、同一、または類似の部分には同じ符号が用いられている。
【0013】
図3Aは、本発明に基づいたシステムのCABACの符号化のパイプラインの段階を説明する概略的な流れ図である。図3Aを参照下さい。CABACの符号化のパイプラインの段階は、例えば、2値化と、コンテキストモデル(CM)の選択と、バイナリ算術符号化と、ビット発生との段階を含むことができる。2値化の段階では、シンタックス要素(SE)の値は、バイナリ文字列に変換されることができる。CABACは、SEの種類に基づいて5種類の2値化方式を採用している。この5種類の方式は、固定長(FL)と、単項(U)と、切り捨てられた単項(truncated unary, TU)と、ツリー構造と、Concatenated Unary/k−th Order Exponential Golomb (UEGK)方式とを更に含む。この5種類の方式とバイナリ文字列の最大の長さが下記の表に示される。
【表1】
【0014】
CMの選択の段階では、459セットのコンテキストモデル(CMs)の中の1つが、コンテキストモデルインデックス(ctxIdx)に基づいてSEの各ビンに対して選択され、シンタックス要素の各‘正規’のビンの符号化を促進することができる。ctxIdxは、下記の方程式(1)によって得られる。
【0015】
ctxIdx = ctxCatOffset + ctxIdxOffset + ctxIdxInc (1)
【0016】
ctxIdxOffsetとctxCatOffsetは、SEの種類と剰余ブロックの種類によってそれぞれ分類されることができ、ctxIdxIncは、下記の方程式(2)と(3)によって得られることができる。
【0017】
condTermFlag = a*condTermFlagA + b*condTermFlagB + c (2)
【0018】
【数1】
【0019】
その中の方程式(2)のa、bと、cは、常数であり、方程式(3)のcondTermFlagAとcondTermFlagBは、隣接のブロックからの情報に基づいて算出される。例えば、condTermFlagAは、左ブロックまたはマクロブロックからの情報によって得られ、condTermFlagBは、上ブロックまたはマクロブロックからの情報によって得られることができる。
【0020】
CMの選択の段階は、4つのサブ段階、隣接ブロック情報の取得(getting neighbor block information, GNB)と、condTermFlagの計算(culculationg condTermFlag、CTF)と、ctxIdxの計算(CCI)と、CMの取得(CML)とに更に分割されることができる。GNBのサブ段階は、CTFのサブ段階の前に行われ、GNBとCTFのサブ段階は、2値化の段階と平行して行われることができる。
【0021】
バイナリ算術符号化の段階では、‘標準(regular)’エンジンと、‘バイパス(bypass)’エンジンと、‘終止(terminate)エンジン’とを含む3つの符号化エンジンが用いられることができる。変数codILowとcodIRangeは、スライスの第1マクロブロックの符号化の始めに初期化されることができる。codILowとcodIRangeの値は、符号化のプロセス中に変えられることができる。バイナリ文字列内の各ビンは、3つの符号化エンジンの中の1つによって符号化され、その中の6ビットのpStateIdxと1ビットのvalMPSからなる対応のCMが標準エンジンに求められてビンを符号化する。また、選択されたCMは、標準の符号化のプロセス中に更新されることができる。
【0022】
codIRangeの値が256より小さい時、再規格化プロセスがバイナリ算術符号化の段階に求められる可能性がある。codIRangeとcodILowは、それらの値が256より小さくない時、倍にされることができる。同時に符号化されたビットデータは、ビット発生の段階で反復して発生されることができる。
【0023】
図3Bは、本発明に基づいたシステムのCABACの復号化のパイプラインの段階を説明する概略的な流れ図である。図3Bを参照下さい。CABACの復号化のパイプラインの段階は、例えば、CMの選択と、バイナリ算術復号化と、逆2値化の段階とを含む。CMの選択の段階では、CMは、算出されたctxIdxに基づいて選択されることができ、前述のように、ctxIdxに基づいて選択され、常数、または予め復号化されたビン、または隣接のブロックからの情報によって決定された値であることができる。SEのビンは、選択されたCMに基づいて、バイナリ算術の段階に復号化されることができる。また、選択されたCMは、更新されることができ、ビンの値が発生されることができる。CMの更新とビン値の出力のステップは、バイナリ文字列がSEに発生されるまで繰り返されることができる。続いて、復号化されたバイナリ文字列が逆2値化されてSEの値を発生する。また、再規格化のプロセスは、codIRangeの値が256より小さい時、バイナリ算術復号化の段階の標準復号化エンジンに求められる可能性がある。codIRangeは、codIRangeが256より小さくなくなるまで、倍にされることができ、codIOffsetは、復号化されたビットストリームからの1ビットデータを連結することができる。
【0024】
図3Cは、本発明に基づいたシステムのCABACの符号化/復号化のパイプラインの段階を説明する概略的な流れ図である。図3Cを参照下さい。CABACの符号化/復号化のパイプラインの段階は、図3Aに示されたCABACの符号化の段階と図3Bに示されたCABACの復号化の段階を統合している。CABACの符号化プロセス中に、2値化とビット発生の段階が行われ、逆2値化の段階が行われない。一方、CABACの復号化のプロセス中に、2値化とビット発生の段階が行われず、逆2値化の段階が行われる。
【0025】
図4は、本発明に基づいたCABACの符号化と復号化のシステム40の図である。図4を参照下さい。システム40は、バイナリ変換器(BZ)41と、計算装置42と43と、バイナリ算術ユニット(BAU)44と、逆バイナリ変換器(DB)45と、ビット発生器(BG)46と、メモリ素子31と39とを含むことができる。符号化と復号化のプロセスの前に、CMが初期化されることができる。この459セットのCMを初期化する変数は、メモリ31、例えば、1762×16ビットの読み出し専用メモリ(ROM)に保存されることができる。初期化モジュール47は、459セットのCMを初期化するように構成され、次にスライスヘッダ層で初期化されたCMをメモリ32、例えば、単一ポートランダムアクセスメモリ(RAM)のクラスタに保存することができる。制御器(図示せず)の制御のもとで、“コンテキストモデル読み出し(read)”(CMR)演算を通して、CMクラスタの1つがメモリ32から取り出され、メモリ33内に読み込まれる。メモリ33は、レジスタバンクを含むことも可能であるがこれを限定するものではない。CMR演算は、GNB/CTF/BZの段階で実行されることもできる。この段階は、2値化の段階と一部のCMの選択の段階を含むこともできる。
【0026】
バイナリ変換器41は、GNB/CTF/BZの段階でSE(SE_valueで標示)の値をバイナリ文字列に2値化するように構成されることができる。同じステージ中に、1つまたは複数の隣接のブロックからの情報が得られることができる(GNBの段階)。例えば、上ブロックまたはマクロブロックからの情報がバッファ34に保存されることができ、左ブロックまたはマクロブロックからの情報が他のバッファ35に保存されることができる。第1計算装置42は、上述の方程式(2)に従って、1つまたは複数の隣接のブロックからの情報に基づいて、バイナリ文字列のビンに対応するcondTermFlagを算出するように構成されることができる。上述の表1に挙げたシンタックス要素mb_skip_flagを例にすれば、左マクロブロックのmb_skip_flagが1または左マクロブロックが得られない場合、condTermFlagAは、0に設定される。そうでなければ、condTermFlagAは、1に設定される。同様に、condTermFlagBは、上ブロックまたはマクロブロックからの情報によって決定されることができる。バイナリ変換器41と第1計算装置42からの出力は、第1レジスタ36に保存されることができる。
【0027】
CMの選択の段階の他の部分であるCCI/CMLの段階では、第2計算装置43は、上述の方程式(1)に基づいてCMインデックス(ctxIdx)を計算するように構成されることができる。第2計算装置43から算出されたCMインデックスに基づくと、CMがメモリ33から取り出されることができる。メモリ33からのCMに基づくと、第1rLPS(range of least probable symbol、発生確率の低いシンボル値の範囲)は、例えば、8×256ビット参照テーブル(LUT)の第1参照テーブル(LUT)51から発生されることができる。第1rLPSの値は、上述のCMの6ビットpStateIdxによって、第1LUT51から得られることができ、BAU44の後に続く符号化または復号化のプロセスに用いられることができる。第1rLPSは、マルチプレクサ48への第1入力となることができる。第2LUT52からの第2rLPSは、マルチプレクサ48への第2入力となることができる。第2rLPSは、BAU44からの更新されたCMに基づいて第2LUT52によって発生されることができる。第1rLPSと第2rLPSの中の1つは、マルチプレクサ48によって選択され、第2レジスタ37に保存されることができる。1つの実施例では、マルチプレクサ48は、現在のビンに選択されたCMインデックスが前のビンに選択されたCMインデックスと異なる場合、第1rLPSを出力することができ、現在のビンに選択されたCMインデックスが前のビンに選択されたCMインデックスと同じ場合、第2rLPSを出力することができる。現実施例では、第1LUT51と第2LUT52は、異なるLUTsである。しかし他の実施例では、第1LUT51と第2LUT52は、同じLUTである。
【0028】
BAU44は、SEの種類とビンインデックス(binIdx)に基づいて、標準ビンと、バイパスビンと、終止ビンを符号化するように構成されることができる。いくつかのシンタックス要素とそれと対応する符号化エンジンが下記の表2に示される。
【表2】
【0029】
初期化されたCMsは、“コンテキストモデル読み出し”(CMR)演算を通して、メモリ32からメモリ33に読み込まれることができる。標準ビンが処理された場合、更新されたCMは、メモリ33に書き込まれなければならない可能性がある。続いて、符号化されたビンは、ビット発生器46に転送されることができ、符号化されたビットストリームを発生するように構成されることができる。ビット発生器46は、例えば8*11ビットレジスタの先入れ先出し(FIFO)装置38から、例えば、“EncodeFlush”、“low_renorm”と、“range_lnz_renorm”などのパラメータを取り出して、ビット長(bits_len)とビットデータ(bits_data)を含む符号化されたビットストリームのデータを発生することができる。CMの選択とバイナリ算術符号化の段階は、SEの全てのビンが完全に符号化されるまで繰り返されることができる。
【0030】
BAU44は、SEの種類とビンインデックスに基づいて、標準ビンと、バイパスビンと、終止ビンを復号化するように構成されることもできる。初期化されたCMsは、“コンテキストモデル読み出し”(CMR)演算を通して、メモリ32からメモリ33に読み込まれることができる。復号化されたビンは、バッファ39に転送されることができる。ビンが符号化された場合、選択されたCMは、更新され、メモリ33に書き戻されることができる。逆バイナリ変換器45は、SEの全てのビンが復号化されて、SEの復号化が完了した時、バッファ39内の復号化されたビンに基づいて、SE値(SE_value)を出力するかどうかを決める。SE_Value信号は、H.264解析器(parser)ユニット(図示せず)または剰余(residual)ユニット(図示せず)に伝送されて、剰余ブロックの解析フローを行うことができる。1つの実施例では、SE_Value信号は、“隣接バッファ更新”(NBU)演算によって第1バッファ34と第2バッファ35に書き込まれることができる。CMの選択とバイナリ算術符号化/逆2値化の段階は、逆バイナリ変換器45がSEの復号化を完了し、且つ完了信号SE_Validを例えば高ロジックレベルに設定したことを検出するまで繰り返されることができる。SEの全てのビンが復号化された場合、メモリ33の中の更新されたCMは、CMW演算によってメモリ32に書き戻されることができる。
【0031】
図5Aは、本発明の実施例に基づいたCABACの符号化のパイプライン構造を説明する概略図である。図5Aと、図3Aと、図3Cと、図4も参照下さい。サイクル0では、SE値は、ビン0と、ビン1と、ビン2とを含むバイナリストリームの中に、2値化されることができる(BZ)。隣接のブロックからの情報が得られることができ(GNBの段階)、condTermFlagが計算されることができる(CTFの段階)。また、初期化されたCMsが読み取られることができる(CMRの段階)。GNBからCTFに向けた点線の矢印は、GNBがCTFの前に実行されることを表している。
【0032】
サイクル1では、CMインデックス“ctxIdx”が計算されることができ(CCI)、ビン0のCMが選択されて読み込まれることができる(CML)。
【0033】
サイクル2では、ビン0が符号化されることができ(BAU)、続いて選択されたビン0のCMが更新されることができる(CMU)。また、CMインデックス“ctxIdx”が計算されることができ(CCI)、ビン1のCMが選択されて読み込まれることができる(CML)。
【0034】
サイクル3では、ビン0のビットストリームが発生されることができる(BG)。ビン1は、符号化されることができ(BAU)、続いて選択されたビン1のCMが更新されることができる(CMU)。また、CMインデックス“ctxIdx”が計算されることができ(CCI)、ビン2のCMが選択されて読み込まれることができる(CML)。
【0035】
サイクル4では、ビン1のバイナリストリームが発生されることができる(BG)。ビン2は、符号化されることができ(BAU)、続いて選択されたビン2のCMが更新されることができる(CMU)。
【0036】
サイクル5では、ビン2のバイナリストリームが発生されることができる(BG)。
【0037】
パイプライン構造では、データ転送テクニックがCMLとCMU間のデータ依存性を処理するのに用いられることができる。ビン(i+1)のctxIdxがビンiのctxIdxと同じ場合、BAUの段階からのビンiの更新されたCMは、マルチプレクサ48によって選択されることができる。他のデータ依存性は、CCIとBAUの段階で生じる可能性があり、その中のビン(i+1)のCCI演算は、ビンiの値を要する可能性がある。データ依存性のパイプライン処理は、1つのマクロブロックに多くて5サイクル要する可能性がある。特に、ビン1は、サイクル0とサイクル1の間の2サイクルで停止状態にあり、ビン2は、サイクル0〜サイクル2の間の3サイクルで停止状態にある。
【0038】
図5Bは、本発明の実施例に基づいたCABACの複号化のパイプライン構造を説明する概略図である。図5Bと、図3Bと、図3Cと、図4も参照下さい。サイクル0では、隣接のブロックからの情報が得られることができ(GNBの段階)、condTermFlagが計算されることができる(CTFの段階)。また、初期化されたCMsが読み取られることができる(CMRの段階)。
【0039】
サイクル1では、CMインデックス“ctxIdx”が計算されることができ(CCI)、ビン0のCMが選択されて読み込まれることができる(CML)。
【0040】
サイクル2では、ビン0が復号化されることができ(BAU)、続いて選択されたビン0のCMが更新されることができる(CMU)。更新されたCMは、メモリ33に伝送されることができる。ビン0の復号化されたビン値は、バッファ39に保存されることができる。逆バイナリ変換器(DB)45は、SEの復号化プロセスが完了してなく、且つ信号SE_Validを例えば低ロジックレベルに設定していることを検出することができる。また、CMインデックス“ctxIdx”が計算されることができ(CCI)、ビン1のCMが選択されて読み込まれることができる(CML)。
【0041】
サイクル3では、ビン1は、復号化されることができ(BAU)、続いて選択されたビン1のCMが更新されることができる(CMU)。更新されたCMは、メモリ33に伝送されることができる。ビン1の復号化されたビン値は、バッファ39に保存されることができる。逆バイナリ変換器(DB)45は、SEの復号化プロセスが完了してなく、且つ信号SE_Validを低ロジックレベルに保持していることを検出することができる。また、CMインデックス“ctxIdx”が計算されることができ(CCI)、ビン2のCMが選択されて読み込まれることができる(CML)。
【0042】
サイクル4では、サイクル3に類似しており、ビン2が復号化されることができ(BAU)、続いて選択されたビン2のCMが更新されることができる(CMU)。更新されたCMは、メモリ33に伝送されることができる。ビン2の復号化されたビン値は、バッファ39に保存されることができる。逆バイナリ変換器(DB)45は、SEの復号化プロセスが完了してなく、且つ信号SE_Validを低ロジックレベルに保持していることを検出することができる。また、CMインデックス“ctxIdx”が計算されることができ(CCI)、ビン3のCMが選択されて読み込まれることができる(CML)。
【0043】
サイクル5では、ビン3が復号化されることができ(BAU)、続いて選択されたビン3のCMが更新されることができる(CMU)。更新されたCMは、メモリ33に伝送されることができる。ビン3の復号化されたビン値は、バッファ39に保存されることができる。逆バイナリ変換器(DB)45は、SEの復号化プロセスが完了し、且つ信号SE_Validを高ロジックレベルに設定していることを検出することができる。
【0044】
続いてサイクル6では、メモリ33に保存された更新されたCMsは、CMW演算によってメモリ32に書き戻されることができる。また、逆バイナリ変換器45は、SE値、即ち、SE_Valueを発生して、NBU演算によって信号SE_Valueを第1バッファ34と第2バッファ35に書き込むことができる。
【0045】
図5Aと図5Bを再度参照下さい。CMRの演算は、1つのクロック内で実行されることができる。CMRが1つのクロックサイクル内で完了されることができるように確保するために、同じSEで用いられるコンテキストモデルは、メモリ33の同じアドレスに配置されることができる。図6Aは、従来技術のメモリのコンテキストモデル(CMs)の配置方式を説明する概略図である。各CMが7ビットの長さを有することから、メモリの最小データバス幅は、105ビット(15*7ビット)となることができて、SE“significant_coeff_flag”は、15セットのCMを用いることができ、全てのシンタックス要素の中で最も長いSEとなる。しかし、このような配置は、メモリ空間が効果的に用いられないことになる。
【0046】
図6Bは、本発明に基づいたメモリのコンテキストモデル(CMs)の配置方式を説明する概略図である。1つの実施例では、459セットのCMsは、下記に示されるように38のクラスタに分割される。
(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
【0047】
上述の38のクラスタは、下記の規則に基づいてメモリの中に配置されることができる。
【0048】
規則1: #CMs (SEi) + #CMs (SEi+1) + … + #CMs (SEi+n) ≦ 15
【0049】
SEiは、第i個目のシンタックス要素を表し、#CMs(SEi)は、SEiはの符号化または復号化に用いられるコンテキストモデルの数を表している。
【0050】
規則2は、SEi、SEi+1、 ...、SEi+n は、符号化または復号化の順序で配列する。
【0051】
規則1と規則2を用いることで、CMsの数が15に等しい、または15より小さい場合、SEに用いられるCMsは、メモリの同じアドレスでクラスタに配置されることができる。図6Bを参照下さい。各クラスタは、1つのメモリ空間を占有し、1つのクロックサイクルで、15個の7ビットレジスタからなるレジスタバンクに読み込まれることができる。このような配置方式は、メモリ空間の使用量を例えば662バイトから460バイトに減少することができる。また、このような配置は、メモリのアクセス頻度を低下させることができる。例えば、SEのCMsは、“mb_skip_flag”を処理した後、SEsの両方が同じクラスタに属し(2)、SEmb_skip_flagの復号化中に既に読み込まれることができることから、SE“mb_field_decoding_flag”のCMsは、別に読み込まれる必要がなくなる。図6Aに示された配置に比べると、図6Bに示された本発明に基づいた配置は、より効率の良いメモリ空間の使用を達成している。
【0052】
図7Aは、シンタックス要素SCF[i]とLSCF[i]との間のコンテキストモデルの切り替えを説明する概略図である。図7Aを参照下さい。H.264標準に規格されるように、1ビン(1−bin)SE“last_significant_coeff_flag[i]”(LSCF[i])は、1ビンSE“significant_coeff_flag[i]”(SCF[i])が処理されるまで処理されない。SCF[i]とLSCF[i]の処理は、符号化と復号化を含むことができる。本実施例では、CMの切り替えは、SCF[i]の復号化プロセスが完了した時のサイクル3とLSCF[i]の復号化プロセスが開始した時のサイクル4との間で生じることができる。1ビンLSCF[i]は、位置iにある係数が非ゼロであるかどうかを決めることができ、1ビンSCF[i]は、位置iの後のSCFsが全てゼロであるかどうかを指している。SCF[i]の値が1の場合、LSCF[i]が存在する。このような状況では、LSCF[i]の値も1の場合、続くSCFsは、全てゼロであり、処理される必要がなくなる。一方、SCF[i]の値が0の場合、LSCF[i]は、処理される必要がなくなり、SCF[i+1]は、下記の表3に示すように符号化されることができる。
【表3】
【0053】
図7Bに示されたパイプライン構造に比べると、CMの切り替えは、H.264標準に基づいてパイプラインの動作中で3つの停止したサイクルを要する可能性がある。図7Bは、本発明の実施例に基づいたシンタックス要素SCF[i]とLSCF[i]とを処理するパイプライン構造を説明する概略図である。また、図7Cは、本発明の実施例に基づいたシンタックス要素LSCFの専用レジスタバンクを含むメモリ70の概略図である。図7Bを参照下さい。サイクル0では、隣接のブロックからの情報が得られることができ(GNBの段階)、condTermFlagが計算されることができる(CTFの段階)。また、初期化されたCMs、またはSCFのCMクラスタが図7Cに示されたメモリ70のレジスタバンク72に読み込まれることができる(CMRの段階)。
【0054】
サイクル1では、CMインデックス“ctxIdx”が計算されることができ(CCI)、SCF[i]のCMが選択されて読み込まれることができる(CML)。また、初期化されたCMs、またはLSCFのCMクラスタがメモリ70のレジスタバンク71に読み込まれることができる(CMRの段階)。
【0055】
サイクル2では、ビンSCF[i]が符号化されることができ(BAU)、続いて選択されたビンSCF[i]のCMが更新されることができる(CMU)。ビンSCF[i]の復号化されたビン値が1の場合、LSCF[i]が存在することを意味し、CMインデックス“ctxIdx”が計算されることができ(CCI)、ビンLSCF[i]のCMが選択されて読み込まれることができる(CML)。ビンSCF[i]の復号化されたビン値が0の場合、LSCF[i]は、処理される必要がなく、CMインデックス“ctxIdx”が計算されることができ(CCI)、ビンSCF[i+1]のCMが選択されて読み込まれることができる(CML)。
【0056】
サイクル3では、ビンLSCF[i]またはSCF[i+1]が符号化されることができ(BAU)、続いて選択されたビンLSCF[i]またはSCF[i+1]のCMが更新されることができる(CMU)。下記の表4は、解像度1920×1080の画像シーケンス(video sequence)での8M、22M、47Mと、51Mbpsの異なるビット率で、各スライスのコンテキストモデル切り替えの数を示している。本発明に基づいたパイプライン構造は、51Mbpsのビット率で各スライス毎に約3×382284クロックサイクル節約することができる。
【表4】
【0057】
図8は、本発明の実施例に基づいたバイナリ変換器80の回路図である。バイナリ変換器80は、SE値と種類に基づいた長さのバイナリ文字列を発生するように構成されることができる。図8を参照下さい。バイナリ変換器80は、5つのROMテーブル81〜85を含むことができる。ツリー構造テーブル81は、SEs“mb_type and sub_mb_type”で用いられ、バイナリ文字列を発生することができる。切り捨て(truncated)テーブル82は、SE“intra_chroma_pred_mode”で用いられることができる。単項(unary)テーブル83は、SEs“ref_idxと“mb_qp_delta” で用いられることができる。SEs“mvd”と“coefficient_abs_level_minusl”の値は、それぞれ接頭部と接尾部から構成されることができる。これらの2つのSEsの接頭部は、切り捨てられた単項コードを含むことができる。mvdの接尾部は、UEG3コードであり、coefficient_abs_level_minuslの接尾部は、UEG0コードである。よって、マルチプレクサ801と802と連結したUEG0テーブル84とUEG3テーブル85は、これらの2つのSEsの接尾部をそれぞれ2値化するように用いられることができる。単項テーブル83とマルチプレクサ803は、接頭部を2値化するように用いられることができる。それぞれマルチプレクサ803と804からのバイナリ文字列の接頭部と接尾部は、連結装置86で互いに連結される。続いて、SEの種類をセレクタ(selector)信号として用い、マルチプレクサ805からバイナリ文字列が発生されることができる。バイナリ変換器80の回路動作は、図12Aを参照にしながら後に説明する。
【0058】
図9は、本発明の実施例に基づいたバイナリ算術ユニット(BAU)90の回路図である。BAU90は、CABACの符号化と復号化の標準エンジンと、バイパスエンジンと、終止エンジンを含むことができる。変数codIRange(rangeで図示される)とcodILow(Lowで図示される)は、バイナリ算術符号化のプロセス中に更新されることができる。一方、変数codIRangeと他のcodIOffset(Offsetで図示される)は、バイナリ算術復号化のプロセス中に更新されることができる。H.264標準の規格に基づいて、変数codIRangeと、codILowと、codIOffsetを更新するアルゴリズムを下記の表5と、表6と、表7にそれぞれ表示する。
【表5】
【表6】
【表7】
【0059】
表5〜7は、異なるエンジンと条件において、3つの変数の値が再代入されることができるかどうかを示している。図9を参照下さい。可変Lowと、Offsetと、rangeに加え、変数“bin Val”、“valMPS”と、“rLPS”がBAU90に入力されることができる。変数bin Valの値は、図8に示されたバイナリ変換器80のマルチプレクサ805から発生されることができ、valMPSと、rLPSの値は、対応するCMが決定された時、決定されることができる。BAU90は、rangeと、Offsetと、Lowの値を更新して、更新されたnew_rangeと、new_Offsetと、new_Lowの値を出力することができる。BAU90の回路動作は、図12Bを参照しながら後に説明する。
【0060】
BAU90は、再規格化装置を含むことができ、BAUの符号器と復号器のcodIRangeが256より小さい時、再規格化のプロセスを行う。図10は、本発明の実施例に基づいた再規格化装置100の回路図である。図10を参照下さい。再規格化装置100は、BAU90からnew_rangeと、new_Offsetと、new_Lowの値を受けることができる。先行ゼロ検出(LZD)装置101は、codIRangeと、codILowと、codIOffsetに左シフトされるビット数を決定するのに用いられることができる。CABACが符号化モードにあり、codIRangeが256より小さい時、3つのパラメータrange_lzn_renormと、low_renormと、EncodeFlushは、FIFO102に入れられることができる。再規格化装置100の回路動作は、図12Cを参照しながら後に説明する。
【0061】
図11は、本発明の実施例に基づいたビット発生器110の回路図である。図11を参照下さい。ビット発生器110は、実行の流れを制御するための有限状態機械(FSM)を含むことができる。LZD装置111は、変数low_muxの先行ゼロ数を検出するのに用いられることができ、low_muxは、図10に示されたFIFO102からのlow_renormから選択される。先行1検出(leading one detection、LOD)装置112は、変数low_muxの先行1の数を検出するのに用いられることができる。ビット発生器110は、3つの出力信号“bit−write−enable”(bwe)と、“bits_len”と、“bits”を発生することができる。信号bitsは、符号化されたビットストリームを示し、“bits_len”は、符号化されたビットストリームの長さを示し、bweは、信号bitsが有効であることを示している。ビット発生器110の回路動作は、図12Dを参照しながら後に説明する。
【0062】
図1に挙げられたSE“mb_type”の符号化の回路動作を参照にしながら図12A〜12Dを説明する。図12Aは、図8に示されたバイナリ変換器80の回路動作である。図12Aを参照下さい。SEmb_typeは、I−スライスの種類と例えば25の値を有する。また、表1に見られるように、mb_typeの2値化の種類は、ツリー構造である。mb_typeのSEのスライスの種類とSE値に対応して、ツリー構造テーブル81は、2ビットの長さのバイナリ値“11”を示す出力2’b11を発生することができる。マルチプレクサ805は、0に設定されたセレクタ信号se_typeに基づいて出力値2’b11を出力として選択する。よって、バイナリ変換器80は、25のSE値に基づいて、SEをバイナリ文字列2’b11に2値化する。
【0063】
図12Bは、図9に示されたBAU90の回路動作である。図12Bを参照下さい。バイナリ文字列2’b11(即ち、11)の第1バイナリ値である、変数“binVal”の初期値は、1である。バイナリ文字列2’b11の第2で、最後でもあるバイナリ値である、変数“binVal”の次の値も1である。表示1(1)では、括弧外の第1の“1”は、binValの初期値を指しており、第2の“1”は、binValの次の値を指している。また、第1binValを符号化している時、変数valMPSと、Lowと、rangeと、rLPSは、それぞれ0、374、458と、150の初期値を有すると仮定することができる。変数“Offset”は、復号化のプロセスに用いられ、符号化のプロセスに用いられないため、数値がない。
【0064】
binValとvalMPSの値を比べることで、比較装置901が0の値を出力することができる。第1加算器905は、“range”の値から“rLPS”の値を引いて308の値を出力する。マルチプレクサ902、903、906、907と、910のセレクタ信号“decoder”は、符号化プロセス中、“0”に設定されることができ、マルチプレクサ902、903、906、907と、910は、“0”入力端子での値を出力として選択することができる。他の実施例では、復号化プロセス中のセレクタ信号“decoder”は、“1”に設定されることができる。このように、BAU90は、マルチプレクサの選択ピンの値に基づいて、符号化のプロセス中、CABAC符号器となることができ、復号化のプロセス中、CABAC復号器となることができる。また、マルチプレクサ904のセレクタ信号“bypass”は、標準ビンを符号化する時、“0”に設定されることができる。また、マルチプレクサ909のセレクタ信号“dec_mode”は、標準ビンを符号化する時、“00”に設定されることができる。第2加算器912は、マルチプレクサ904と906からの出力値374と308を加えることで682の値を出力する。マルチプレクサ907と908のセレクタ信号は、マルチプレクサ902からの出力によって決定する。続いてマルチプレクサ909からの変数new_rangeの値は、150であり、マルチプレクサ910からの変数new_offsetとnew_lowの値は、682である。変数new_rangeの値が256より小さいことから、再規格化プロセスが求められる可能性がある。
【0065】
図12Cは、図10に示された再規格化装置100の回路動作である。図12Cを参照下さい。BAU90からの出力変数new_rangeとnew_offsetと、new_lowは、再規格化装置100への出力となることができる。LZD101の入力値が150であり、150のバイナリフォームが010010110であることから、先行0の数は1となるため、LZD101は、1の値を出力することができる。LZDの出力に基づいて、第1左シフター103は、バイナリフォーム010010110を1ビット、左にシフトすることができ、新しいバイナリフォーム100101100、または300の値となる。300の値は、256より大きく、変数new_rangeの150の入力値の倍である。即ち、図12Bの変数“range”は、300の新しい値によって更新され、次のビンの符号化に用いられることができる。また、LZDの出力に基づいて、第2左シフター108は、マルチプレクサ104の680の出力値のバイナリフォーム1010101010を1ビット、左にシフトすることができ、新しいバイナリフォーム0101010100、または340の値となる。AND−ゲートモジュール107は、新しいバイナリフォーム0101010100と10’hlffのmask_bitsにロジック演算(logic AND function)を行うことができる。その中の10’hlffは、10ビットの16進値1ffまたは0111111111であり、340の値となる。
【0066】
変数new_renormとrange_lzn_renormの値は、それぞれマルチプレクサ105と106の出力値によって決定する。変数EncodeFlushの値は、現在、終止エンジンによって符号化された終止ビンが非ゼロ値を有した場合、0に設定され、終止ビンがゼロ値を有した場合、1にセットされる。変数low_renormと、range_lzn_renormと、EncodeFlushの値は、FIFO102に送り込まれる。
【0067】
図12Dは、図11に示されたビット発生器110の回路動作である。図12Dを参照下さい。変数low_renormは、バイナリフォームが1010101010の682の値を有し、変数range_lznは、再規格化装置100で決定された1の値を有する。ビット9からビット4、即ち101010は、マルチプレクサ113によって変数low_renormのバイナリフォーム1010101010から取り出され、変数low_muxに割り当てられる。LOD111は、マルチプレクサ114によって選択された、変数low_muxの先行1の数が1であるのを検出する。マルチプレクサ114からの出力に基づいて、左シフター115は、バイナリフォーム1010101010を1ビット、左にシフトし、新しいバイナリフォーム0101010100となる。変数bitOutStandingの値が2とした場合、増加されない。信号bweは、高ロジックであるため、0の値を有する2ビットコードビットストリームが発生されることができる。
【0068】
図12Bを再度参照下さい。第1ビンが符号化された後、第2と最後のビンも符号化されることができる。変数lowとrangeは、第1ビンを符号化している時に、再規格化装置100でそれぞれ340と300として更新される。valMPSとrLPSの値は、それぞれ0と2と仮定される。マルチプレクサ909のセレクタ信号“dec_mode”は、最後のビンが符号化されるため、終止モードであり“10”に設定される。変数new_rangeは、298であり、256より大きいため、再規格化装置100で倍にされない。図12Cを再度参照下さい。変数range_outは、298に等しい。
【0069】
以上、本発明の好適な実施例を例示したが、これは本発明を限定するものではなく、本発明の精神及び範囲を逸脱しない限りにおいては、当業者であれば行い得る少々の変更や修飾を付加することが可能である。従って、本発明が請求する保護範囲は、特許請求の範囲を基準とする。
【図面の簡単な説明】
【0070】
【図1】H.264規格におけるビットストリームの構造の概略図である。
【図2A】コンテキスト適応バイナリ算術符号化(CABAC)の符号化のアルゴリズムを説明する流れ図である。
【図2B】コンテキスト適応バイナリ算術符号化(CABAC)の復号化のアルゴリズムを説明する流れ図である。
【図3A】本発明に基づいたシステムのCABACの符号化のパイプラインの段階を説明する概略的な流れ図である。
【図3B】本発明に基づいたシステムのCABACの復号化のパイプラインの段階を説明する概略的な流れ図である。
【図3C】本発明に基づいたシステムのCABACの符号化と復号化のパイプラインの段階を説明する概略的な流れ図である。
【図4】本発明に基づいたCABACの符号化と復号化のシステム図である。
【図5A】本発明の実施例に基づいたCABACの符号化のパイプライン構造を説明する概略図である。
【図5B】本発明の実施例に基づいたCABACの復号化のパイプライン構造を説明する概略図である。
【図6A】従来技術のメモリのコンテキストモデル(CMs)の配置方式を説明する概略図である。
【図6B】本発明に基づいたメモリのコンテキストモデル(CMs)の配置方式を説明する概略図である。
【図7A】シンタックス要素SCF[i]とLSCF[i]との間のコンテキストモデルの切り替えを説明する概略図である。
【図7B】本発明の実施例に基づいたシンタックス要素SCF[i]とLSCF[i]とを処理するパイプライン構造を説明する概略図である。
【図7C】本発明の実施例に基づいたシンタックス要素LSCFの専用レジスタバンクを含むメモリの概略図である。
【図8】本発明の実施例に基づいたバイナリ変換器の回路図である。
【図9】本発明の実施例に基づいたバイナリ算術ユニット(BAU)の回路図である。
【図10】本発明の実施例に基づいた再規格化装置の回路図である。
【図11】本発明の実施例に基づいたビット発生器の回路図である。
【図12A】図8に示されたバイナリ変換器の回路動作である。
【図12B】図9に示されたBAUの回路動作である。
【図12C】図10に示された再規格化装置の回路動作である。
【図12D】図11に示されたビット発生器の回路動作である。
【符号の説明】
【0071】
10…ビットストリーム
11…スライスヘッダ層
12…スライスデータ層
13…マクロブロック
14…シンタックス要素
15…ビン(バイナリ値)
20…コンテキストモデルの初期化
21、41、80…バイナリ変換器
22…コンテキストモデルセレクター
23…バイナリ算術符号器
24…コンテキストモデルの更新
25、46、110…ビット発生器
26…バイナリ算術復号器
27、45…逆バイナリ変換器
31、32、33、39…メモリ
34、35…バッファ
36…第1レジスタ
37…第2レジスタ
38、102…先入れ先出し装置
40…CABACの符号化と復号化のシステム
42、43…計算装置
44、90…バイナリ算術ユニット(BAU)
47…初期化モジュール
48、801、802、803、804、805、902、903、904、906、907、908、909、910、104、105、106、113、114…マルチプレクサ
51…第1参照テーブル
52…第2参照テーブル
81…ツリー構造テーブル
82…切り捨て(truncated)テーブル
83…単項(unary)テーブル
84…UEG0テーブル
85…UEG3テーブル
86…連結装置
901…比較装置
905…第1加算器
912…第2加算器
100…再規格化装置
101、112…先行ゼロ検出装置
103…第1左シフター
107…AND−ゲートモジュール
108…第2左シフター
111…先行1検出装置
115…左シフター
SE_Value、SE_Valid…信号
ctxIdx…コンテキストモデルインデックス
EncodeFlush、low_renorm、range_lnz_renorm…パラメータ
bits_len、bits_data、bwe、bits…信号
mb_skip_flag、mb_field_decoding_flag、 mb_type、sub_mb_type、prev_intra4x4_pred_mode_flag、coded_block_flag、significant_coeff_flag、last_significant_coeff_flag、coeff_abs_level_minusl、SCF[i]、LSCF[i]、SCF[i+1]、mvd…シンタックス要素
ctxBlockCat…シンタックスブロック種類
Slice_type…シンタックス種類
se_value…シンタックス要素値
UEG_Prefix_Bins…バイナリ文字列の接頭部
UEG_Suffix_Bins…バイナリ文字列の接尾部
BinString…バイナリ文字列
bin Val、valMPS、Low、Offset、range、rLPS、rMPS、mask_bits、new_range、new_offset、new_low、range_out、offset_out、low_out、bitOutStanding、low_mux…変数
decorder、bypass、Decoder&Terminate、dec_mode…セレクタ信号
【特許請求の範囲】
【請求項1】
コンテキスト適応バイナリ算術符号化と復号化のシステムであって、前記システムは、
符号化される第1ビンと復号化される第2ビンの1つのインデックス値を計算する計算装置、
クラスタにコンテキストモデルを保存し、前記第1ビンと前記第2ビンの1つのインデックス値が前記コンテキストモデルの1つに関連したメモリ、及び
前記1つのコンテキストモデルに基づいて前記第1ビンを符号化する符号器と、前記1つのコンテキストモデルに基づいて前記第2ビンを復号化する復号器の1つとして構成されるバイナリ算術ユニットを含むシステム。
【請求項2】
シンタックス要素の値に基づいて、前記シンタックス要素をバイナリ文字列に2値化するバイナリ変換器を更に含む請求項1に記載のシステム。
【請求項3】
前記バイナリ算術ユニットは、前記第1ビンと前記第2ビンの1つの符号化状態と復号化状態の1つに関連した値を有するセレクタ信号によって制御された少なくとも1つのマルチプレクサを含む請求項1または2に記載のシステム。
【請求項4】
前記バイナリ算術ユニットは、前記バイナリ算術ユニットによって発生された第1出力のバイナリフォームの先行ゼロの数(N)を検出する先行ゼロ検出器と、前記第1出力が既定値より小さい場合、前記第1出力の前記バイナリフォームをNビット、左にシフトする左シフターとを含む請求項1〜3のいずれかに記載のシステム。
【請求項5】
前記バイナリ文字列の各ビンのビット文字列を発生するビット発生器を更に含む請求項2〜4のいずれかに記載のシステム。
【請求項6】
シンタックス要素の各ビンのビン値を保存するバッファ、及び
前記シンタックス要素の復号化プロセスが完了されたかどうかを検出し、前記シンタックス要素の復号化プロセスが完了された時、前記各ビンの前記ビン値に基づいて前記シンタックス要素の値を出力する逆バイナリ変換器を更に含む請求項1〜5のいずれかに記載のシステム。
【請求項7】
上ブロックからの情報を保存する第1バッファと、左ブロックからの情報を保存する第2バッファとを更に含み、前記計算装置は、前記第1バッファと前記第2バッファからの前記情報に基づいて第1変数を計算する第1計算モジュールを含む請求項1〜6のいずれかに記載のシステム。
【請求項8】
前記計算装置は、前記第1変数に基づいて前記インデックス値を計算する第2計算モジュールを含む請求項7に記載のシステム。
【請求項9】
前記バイナリ算術ユニットは、前記1つのコンテキストモデルを更新し、前記メモリ素子に更新されたコンテキストモデルを保存する請求項1〜8のいずれかに記載のシステム。
【請求項10】
前記1つのコンテキストモデルに対応して第2変数の第1値を発生する第1参照テーブル、
前記更新されたコンテキストモデルに対応して前記第2変数の第2値を発生する第2参照テーブル、及び
前記第1値と前記第2値の1つを選択するマルチプレクサを更に含む請求項9に記載のシステム。
【請求項11】
前記メモリ素子は、シンタックス要素“last_significant_coeff_flag”(LSCF)のコンテキストモデルクラスタを保存する第1レジスタバンクと、他のシンタックス要素のコンテキストモデルクラスタを保存する第2レジスタバンクを含む請求項1〜10のいずれかに記載のシステム。
【請求項12】
前記メモリ素子は、複数のアドレスにコンテキストモデルクラスタを保存し、前記各アドレスに保存されたコンテキストモデルクラスタは、
#CMs(SEi)+#CMs(SEi+1)+…+#CMs(SEi+n) ≦ P
の条件を満たし、
SEiは、第i個目のシンタックス要素を表し、#CMs(SEi)は、処理する順序で配列された、SEi、SEi+1、SEi+n の処理プロセスに用いられたコンテキストモデルの数を表しており、Pは、全てのシンタックス要素の中のシンタックス要素のシンタックスモデルのセットの最大数を表している請求項1〜11のいずれかに記載のシステム。
【請求項13】
パイプラインフローのコンテキスト適応バイナリ算術符号化と復号化の方法であって、前記方法は、
第1クロックサイクルで、複数のMビンを有するシンタックス要素に関連したコンテキストモデルを読み出し、少なくとも1つの隣接のブロックから情報を得て、前記シンタックス要素の少なくとも1つの隣接のブロックからの情報に基づいて変数を計算するステップ、
第2クロックサイクルで、前記変数に基づいて前記シンタックス要素の第1ビンの第1インデックス値を計算し、前記第1インデックス値に基づいて前記第1ビンの前記コンテキストモデルの1つを読み込むステップ、
第3クロックサイクルで、前記第1ビンに関連した1つの前記コンテキストモデルに基づいて符号化プロセスと復号化プロセスの1つの前記第1ビンを処理し、前記第1ビンを処理した後、前記1つのコンテキストモデルを更新するステップ、
前記第3クロックサイクルで、前記変数に基づいて前記シンタックス要素の第2ビンの第2インデックス値を計算し、前記第2インデックス値に基づいて前記第2ビンの前記コンテキストモデルの1つを読み込むステップ、及び
第4クロックサイクルで、前記第2ビンに関連した前記1つのコンテキストモデルに基づいて、前記符号化プロセスと前記復号化プロセスの1つの前記第2ビンを処理し、前記第2ビンを処理した後、前記1つのコンテキストモデルを更新するステップを含む方法。
【請求項14】
第(i+1)クロックサイクルで、前記変数に基づいて前記シンタックス要素の第i個目のビンの第i個目のインデックス値を計算し、前記第i個目のインデックス値に基づいて前記第i個目のビンの前記コンテキストモデルの1つを読み込むステップ、及び
i≦ Mの第(i+2)クロックサイクルで、前記第i個目のビンに関連した前記1つのコンテキストモデルに基づいて、前記符号化プロセスと前記復号化プロセスの1つの前記第i個目のビンを処理し、前記第i個目のビンを処理した後、前記コンテキストモデルを更新するステップを更に含む請求項13に記載の方法。
【請求項15】
第(i+1)クロックサイクルで、前記変数に基づいて前記シンタックス要素の第i個目のビンの第i個目のインデックス値を計算し、前記第i個目のインデックス値に基づいて前記第i個目のビンの前記コンテキストモデルの1つを読み込むステップ、及び
第(i+2)クロックサイクルで、前記第i個目のビンを符号化し、前記第i個目のビンに関連した前記1つのコンテキストモデルを更新するステップ、及び
第(i+3)クロックサイクルで、前記第i個目のビンの符号化されたビット文字列を発生するステップを更に含む請求項13または14に記載の方法。
【請求項16】
前記第(i+1)クロックサイクルで、前記変数に基づいて前記シンタックス要素の第(i+1)個目のビンの第(i+1)個目のインデックス値を計算し、前記第(i+1)個目のインデックス値に基づいて前記第(i+1)個目のビンの前記コンテキストモデルの1つを読み込むステップ、
第(i+3)クロックサイクルで、前記第(i+1)個目のビンを符号化し、前記第(i+1)個目のビンに関連した前記1つのコンテキストモデルを更新するステップ、及び
第(i+4)クロックサイクルで、前記第(i+1)個目のビンの符号化されたビット文字列を発生するステップを更に含む請求項15に記載の方法。
【請求項17】
前記第(i+2)クロックサイクルで、前記変数に基づいて前記シンタックス要素の第(i+2)個目のビンの第(i+2)個目のインデックス値を計算し、前記第(i+2)個目のインデックス値に基づいて前記第(i+2)個目のビンの前記コンテキストモデルの1つを読み込むステップ、
第(i+4)クロックサイクルで、前記第(i+2)個目のビンを符号化し、前記第(i+2)個目のビンに関連した前記1つのコンテキストモデルを更新するステップ、及び
第(i+5)クロックサイクルで、前記第(i+2)個目のビンの符号化されたビット文字列を発生するステップを更に含む請求項16に記載の方法。
【請求項18】
第(i+1)クロックサイクルで、前記変数に基づいて前記シンタックス要素の第i個目のビンの第i個目のインデックス値を計算し、前記第i個目のインデックス値に基づいて前記第i個目のビンの前記コンテキストモデルの1つを読み込むステップ、
第(i+2)クロックサイクルで、前記第i個目のビンを復号化し、前記第i個目のビンに関連した前記1つのコンテキストモデルを更新するステップ、及び
前記第(i+2)クロックサイクルで、前記第i個目のビンの復号化されたビン値を保存し、前記シンタックス要素の前記復号化プロセスが完了されたかどうかを検出するステップを更に含む請求項13〜17のいずれかに記載の方法。
【請求項19】
第(i+2)クロックサイクルで、前記変数に基づいて前記シンタックス要素の第(i+1)個目のビンの第(i+1)個目のインデックス値を計算し、前記第(i+1)個目のインデックス値に基づいて前記第(i+1)個目のビンの前記コンテキストモデルの1つを読み込むステップ、
第(i+3)クロックサイクルで、前記第(i+1)個目のビンを復号化し、前記第(i+1)個目のビンに関連した前記1つのコンテキストモデルを更新するステップ、及び
前記第(i+3)クロックサイクルで、前記第(i+1)個目のビンの復号化されたビン値を保存し、前記シンタックス要素の前記復号化プロセスが完了されたかどうかを検出するステップを更に含む請求項18に記載の方法。
【請求項20】
第(i+3)クロックサイクルで、前記変数に基づいて前記シンタックス要素の第(i+2)個目のビンの第(i+2)個目のインデックス値を計算し、前記第(i+2)個目のインデックス値に基づいて前記第(i+2)個目のビンの前記コンテキストモデルの1つを読み込むステップ、
第(i+4)クロックサイクルで、前記第(i+2)個目のビンを復号化し、前記第(i+2)個目のビンに関連した前記1つのコンテキストモデルを更新するステップ、及び
前記第(i+4)クロックサイクルで、前記第(i+2)個目のビンの復号化されたビン値を保存し、前記シンタックス要素の前記復号化プロセスが完了されたかどうかを検出するステップを更に含む請求項19に記載の方法。
【請求項21】
第(M+1)クロックサイクルで、前記変数に基づいて前記シンタックス要素の第M個目のビンの第M個目のインデックス値を計算し、前記第M個目のインデックス値に基づいて前記第M個目のビンの前記コンテキストモデルの1つを読み込むステップ、
第(M+2)クロックサイクルで、前記第M個目のビンを復号化し、前記第M個目のビンに関連した前記1つのコンテキストモデルを更新するステップ、及び
前記第(M+2)クロックサイクルで、前記第M個目のビンの復号化されたビン値を保存し、前記シンタックス要素の前記復号化プロセスが完了されたかどうかを検出するステップを更に含む請求項20に記載の方法。
【請求項22】
前記第(M+2)クロックサイクルで、前記シンタックス要素を逆2値化し、前記シンタックス要素の値を得るステップ、及び
第(M+3)クロックサイクルで、前記各第i個目(i=1〜M)のビンに関連したコンテキストモデルを書き戻すステップを更に含む請求項21に記載の方法。
【請求項23】
前記第(M+3)クロックサイクルで、前記シンタックス要素の値を上ブロックからの情報を保存する第1バッファと左ブロックからの情報を保存する第2バッファに書き込むステップを更に含む請求項22に記載の方法。
【請求項24】
前記第1クロックサイクルで、前記シンタックス要素の値に基づいて前記シンタックス要素をバイナリ文字列内に2値化する請求項13〜23のいずれかに記載の方法。
【請求項25】
コンテキストモデルクラスタを前記メモリ素子の複数のアドレスのクラスタに保存し、前記各アドレスに保存されたコンテキストモデルクラスタは、
#CMs(SEi)+#CMs(SEi+1)+…+#CMs(SEi+n) ≦ P
の条件を満たすステップを更に含み、
SEiは、第i個目のシンタックス要素を表し、#CMs(SEi)は、処理する順序で配列された、SEi、SEi+1、SEi+n の処理プロセスに用いられたコンテキストモデルの数を表しており、Pは、全てのシンタックス要素の中のシンタックス要素のシンタックスモデルのセットの最大数を表している請求項13〜24のいずれかに記載の方法。
【請求項26】
パイプラインフローのコンテキスト適応バイナリ算術符号化と復号化の方法であって、前記方法は、
第1クロックサイクルで、第1シンタックス要素に関連したコンテキストモデルを読み出し、少なくとも1つの隣接のブロックから情報を得て、少なくとも1つの隣接のブロックからの情報に基づいて変数を計算するステップ、
第2クロックサイクルで、前記変数に基づいて前記第1シンタックス要素の第1ビンの第1インデックス値を計算し、前記第1インデックス値に基づいて前記第1シンタックス要素の前記第1ビンの前記コンテキストモデルの1つを読み込むステップ、
前記第2クロックサイクルで、第2シンタックス要素に関連したコンテキストモデルを読み取り、前記第1シンタックス要素と前記第2シンタックス要素がデータ処理プロセス中に同時に生じるステップ、
第3クロックサイクルで、前記第1シンタックス要素の前記第1ビンに関連した前記1つのコンテキストモデルに基づいて前記第1シンタックス要素の前記第1ビンを復号化し、前記第1シンタックス要素の前記第1ビンの値を得るステップ、
前記第1シンタックス要素の前記第1個目のビンの値の1つのレベルに対応した第3クロックサイクルで、前記変数に基づいて前記第2シンタックス要素の第1ビンの第1インデックス値を計算し、前記第1インデックス値に基づいて前記第2シンタックス要素の前記第1ビンの前記コンテキストモデルの1つを読み込むステップ、及び
前記第1シンタックス要素の前記第1個目のビンの値の他の1つのレベルに対応した第3クロックサイクルで、前記変数に基づいて前記第1シンタックス要素の第2ビンの第2インデックス値を計算し、前記第2インデックス値に基づいて前記第1シンタックス要素の前記第2ビンの前記コンテキストモデルの1つを読み込むステップを含む方法。
【請求項27】
前記第1シンタックス要素は、“significant_coeff_flag”を含み、前記第1シンタックス要素は、“last_significant_coeff_flag”を含む請求項26に記載の方法。
【請求項28】
第(i+1)クロックサイクルで、前記変数に基づいて前記第1シンタックス要素の第i個目のビンの第i個目のインデックス値を計算し、前記第i個目のインデックス値に基づいて前記第1シンタックス要素の前記第i個目のビンの前記コンテキストモデルの1つを読み込むステップ、
第(i+2)クロックサイクルで、前記第1シンタックス要素の前記第i個目のビンに関連した前記1つのコンテキストモデルに基づいて前記第1シンタックス要素の前記第i個目のビンを復号化し、前記第1シンタックス要素の前記第i個目のビンの値を得るステップ、
前記第1シンタックス要素の前記第i個目のビンの値の1つのレベルに対応した前記第(i+2)クロックサイクルで、前記変数に基づいて前記第2シンタックス要素の第i個目のビンの第i個目のインデックス値を計算し、前記第i個目のインデックス値に基づいて前記第2シンタックス要素の前記第i個目のビンの前記コンテキストモデルの1つを読み込むステップ、及び
前記第1シンタックス要素の前記第i個目のビンの値の他の1つのレベルに対応した前記第(i+2)クロックサイクルで、前記変数に基づいて前記第1シンタックス要素の第(i+1)個目のビンの第(i+1)個目の(i+1)インデックス値を計算し、
前記第(i+1)個目のインデックス値に基づいて前記第1シンタックス要素の前記第(i+1)個目のビンの前記コンテキストモデルの1つを読み込むステッを更に含む請求項26または27に記載の方法。
【請求項29】
コンテキストモデルクラスタを前記メモリ素子の複数のアドレスのクラスタに保存し、前記各アドレスに保存されたコンテキストモデルクラスタは、
#CMs(SEi)+#CMs(SEi+1)+…+#CMs(SEi+n) ≦ P
の条件を満たすステップを更に含み、
SEiは、第i個目のシンタックス要素を表し、#CMs(SEi)は、処理する順序で配列された、SEi、SEi+1、SEi+n の処理プロセスに用いられたコンテキストモデルの数を表しており、Pは、全てのシンタックス要素の中のシンタックス要素のシンタックスモデルのセットの最大数を表している請求項26〜28のいずれかに記載の方法。
【請求項30】
前記第2シンタックス要素“last_significant_coeff_flag”(LSCF)のコンテキストモデルクラスタを保存する第1レジスタバンクを指定するステップ、及び
前記第1シンタックス要素を含む他のシンタックス要素のコンテキストモデルクラスタを保存する第2レジスタバンクを指定するステップを更に含む請求項26〜29のいずれかに記載の方法。
【請求項1】
コンテキスト適応バイナリ算術符号化と復号化のシステムであって、前記システムは、
符号化される第1ビンと復号化される第2ビンの1つのインデックス値を計算する計算装置、
クラスタにコンテキストモデルを保存し、前記第1ビンと前記第2ビンの1つのインデックス値が前記コンテキストモデルの1つに関連したメモリ、及び
前記1つのコンテキストモデルに基づいて前記第1ビンを符号化する符号器と、前記1つのコンテキストモデルに基づいて前記第2ビンを復号化する復号器の1つとして構成されるバイナリ算術ユニットを含むシステム。
【請求項2】
シンタックス要素の値に基づいて、前記シンタックス要素をバイナリ文字列に2値化するバイナリ変換器を更に含む請求項1に記載のシステム。
【請求項3】
前記バイナリ算術ユニットは、前記第1ビンと前記第2ビンの1つの符号化状態と復号化状態の1つに関連した値を有するセレクタ信号によって制御された少なくとも1つのマルチプレクサを含む請求項1または2に記載のシステム。
【請求項4】
前記バイナリ算術ユニットは、前記バイナリ算術ユニットによって発生された第1出力のバイナリフォームの先行ゼロの数(N)を検出する先行ゼロ検出器と、前記第1出力が既定値より小さい場合、前記第1出力の前記バイナリフォームをNビット、左にシフトする左シフターとを含む請求項1〜3のいずれかに記載のシステム。
【請求項5】
前記バイナリ文字列の各ビンのビット文字列を発生するビット発生器を更に含む請求項2〜4のいずれかに記載のシステム。
【請求項6】
シンタックス要素の各ビンのビン値を保存するバッファ、及び
前記シンタックス要素の復号化プロセスが完了されたかどうかを検出し、前記シンタックス要素の復号化プロセスが完了された時、前記各ビンの前記ビン値に基づいて前記シンタックス要素の値を出力する逆バイナリ変換器を更に含む請求項1〜5のいずれかに記載のシステム。
【請求項7】
上ブロックからの情報を保存する第1バッファと、左ブロックからの情報を保存する第2バッファとを更に含み、前記計算装置は、前記第1バッファと前記第2バッファからの前記情報に基づいて第1変数を計算する第1計算モジュールを含む請求項1〜6のいずれかに記載のシステム。
【請求項8】
前記計算装置は、前記第1変数に基づいて前記インデックス値を計算する第2計算モジュールを含む請求項7に記載のシステム。
【請求項9】
前記バイナリ算術ユニットは、前記1つのコンテキストモデルを更新し、前記メモリ素子に更新されたコンテキストモデルを保存する請求項1〜8のいずれかに記載のシステム。
【請求項10】
前記1つのコンテキストモデルに対応して第2変数の第1値を発生する第1参照テーブル、
前記更新されたコンテキストモデルに対応して前記第2変数の第2値を発生する第2参照テーブル、及び
前記第1値と前記第2値の1つを選択するマルチプレクサを更に含む請求項9に記載のシステム。
【請求項11】
前記メモリ素子は、シンタックス要素“last_significant_coeff_flag”(LSCF)のコンテキストモデルクラスタを保存する第1レジスタバンクと、他のシンタックス要素のコンテキストモデルクラスタを保存する第2レジスタバンクを含む請求項1〜10のいずれかに記載のシステム。
【請求項12】
前記メモリ素子は、複数のアドレスにコンテキストモデルクラスタを保存し、前記各アドレスに保存されたコンテキストモデルクラスタは、
#CMs(SEi)+#CMs(SEi+1)+…+#CMs(SEi+n) ≦ P
の条件を満たし、
SEiは、第i個目のシンタックス要素を表し、#CMs(SEi)は、処理する順序で配列された、SEi、SEi+1、SEi+n の処理プロセスに用いられたコンテキストモデルの数を表しており、Pは、全てのシンタックス要素の中のシンタックス要素のシンタックスモデルのセットの最大数を表している請求項1〜11のいずれかに記載のシステム。
【請求項13】
パイプラインフローのコンテキスト適応バイナリ算術符号化と復号化の方法であって、前記方法は、
第1クロックサイクルで、複数のMビンを有するシンタックス要素に関連したコンテキストモデルを読み出し、少なくとも1つの隣接のブロックから情報を得て、前記シンタックス要素の少なくとも1つの隣接のブロックからの情報に基づいて変数を計算するステップ、
第2クロックサイクルで、前記変数に基づいて前記シンタックス要素の第1ビンの第1インデックス値を計算し、前記第1インデックス値に基づいて前記第1ビンの前記コンテキストモデルの1つを読み込むステップ、
第3クロックサイクルで、前記第1ビンに関連した1つの前記コンテキストモデルに基づいて符号化プロセスと復号化プロセスの1つの前記第1ビンを処理し、前記第1ビンを処理した後、前記1つのコンテキストモデルを更新するステップ、
前記第3クロックサイクルで、前記変数に基づいて前記シンタックス要素の第2ビンの第2インデックス値を計算し、前記第2インデックス値に基づいて前記第2ビンの前記コンテキストモデルの1つを読み込むステップ、及び
第4クロックサイクルで、前記第2ビンに関連した前記1つのコンテキストモデルに基づいて、前記符号化プロセスと前記復号化プロセスの1つの前記第2ビンを処理し、前記第2ビンを処理した後、前記1つのコンテキストモデルを更新するステップを含む方法。
【請求項14】
第(i+1)クロックサイクルで、前記変数に基づいて前記シンタックス要素の第i個目のビンの第i個目のインデックス値を計算し、前記第i個目のインデックス値に基づいて前記第i個目のビンの前記コンテキストモデルの1つを読み込むステップ、及び
i≦ Mの第(i+2)クロックサイクルで、前記第i個目のビンに関連した前記1つのコンテキストモデルに基づいて、前記符号化プロセスと前記復号化プロセスの1つの前記第i個目のビンを処理し、前記第i個目のビンを処理した後、前記コンテキストモデルを更新するステップを更に含む請求項13に記載の方法。
【請求項15】
第(i+1)クロックサイクルで、前記変数に基づいて前記シンタックス要素の第i個目のビンの第i個目のインデックス値を計算し、前記第i個目のインデックス値に基づいて前記第i個目のビンの前記コンテキストモデルの1つを読み込むステップ、及び
第(i+2)クロックサイクルで、前記第i個目のビンを符号化し、前記第i個目のビンに関連した前記1つのコンテキストモデルを更新するステップ、及び
第(i+3)クロックサイクルで、前記第i個目のビンの符号化されたビット文字列を発生するステップを更に含む請求項13または14に記載の方法。
【請求項16】
前記第(i+1)クロックサイクルで、前記変数に基づいて前記シンタックス要素の第(i+1)個目のビンの第(i+1)個目のインデックス値を計算し、前記第(i+1)個目のインデックス値に基づいて前記第(i+1)個目のビンの前記コンテキストモデルの1つを読み込むステップ、
第(i+3)クロックサイクルで、前記第(i+1)個目のビンを符号化し、前記第(i+1)個目のビンに関連した前記1つのコンテキストモデルを更新するステップ、及び
第(i+4)クロックサイクルで、前記第(i+1)個目のビンの符号化されたビット文字列を発生するステップを更に含む請求項15に記載の方法。
【請求項17】
前記第(i+2)クロックサイクルで、前記変数に基づいて前記シンタックス要素の第(i+2)個目のビンの第(i+2)個目のインデックス値を計算し、前記第(i+2)個目のインデックス値に基づいて前記第(i+2)個目のビンの前記コンテキストモデルの1つを読み込むステップ、
第(i+4)クロックサイクルで、前記第(i+2)個目のビンを符号化し、前記第(i+2)個目のビンに関連した前記1つのコンテキストモデルを更新するステップ、及び
第(i+5)クロックサイクルで、前記第(i+2)個目のビンの符号化されたビット文字列を発生するステップを更に含む請求項16に記載の方法。
【請求項18】
第(i+1)クロックサイクルで、前記変数に基づいて前記シンタックス要素の第i個目のビンの第i個目のインデックス値を計算し、前記第i個目のインデックス値に基づいて前記第i個目のビンの前記コンテキストモデルの1つを読み込むステップ、
第(i+2)クロックサイクルで、前記第i個目のビンを復号化し、前記第i個目のビンに関連した前記1つのコンテキストモデルを更新するステップ、及び
前記第(i+2)クロックサイクルで、前記第i個目のビンの復号化されたビン値を保存し、前記シンタックス要素の前記復号化プロセスが完了されたかどうかを検出するステップを更に含む請求項13〜17のいずれかに記載の方法。
【請求項19】
第(i+2)クロックサイクルで、前記変数に基づいて前記シンタックス要素の第(i+1)個目のビンの第(i+1)個目のインデックス値を計算し、前記第(i+1)個目のインデックス値に基づいて前記第(i+1)個目のビンの前記コンテキストモデルの1つを読み込むステップ、
第(i+3)クロックサイクルで、前記第(i+1)個目のビンを復号化し、前記第(i+1)個目のビンに関連した前記1つのコンテキストモデルを更新するステップ、及び
前記第(i+3)クロックサイクルで、前記第(i+1)個目のビンの復号化されたビン値を保存し、前記シンタックス要素の前記復号化プロセスが完了されたかどうかを検出するステップを更に含む請求項18に記載の方法。
【請求項20】
第(i+3)クロックサイクルで、前記変数に基づいて前記シンタックス要素の第(i+2)個目のビンの第(i+2)個目のインデックス値を計算し、前記第(i+2)個目のインデックス値に基づいて前記第(i+2)個目のビンの前記コンテキストモデルの1つを読み込むステップ、
第(i+4)クロックサイクルで、前記第(i+2)個目のビンを復号化し、前記第(i+2)個目のビンに関連した前記1つのコンテキストモデルを更新するステップ、及び
前記第(i+4)クロックサイクルで、前記第(i+2)個目のビンの復号化されたビン値を保存し、前記シンタックス要素の前記復号化プロセスが完了されたかどうかを検出するステップを更に含む請求項19に記載の方法。
【請求項21】
第(M+1)クロックサイクルで、前記変数に基づいて前記シンタックス要素の第M個目のビンの第M個目のインデックス値を計算し、前記第M個目のインデックス値に基づいて前記第M個目のビンの前記コンテキストモデルの1つを読み込むステップ、
第(M+2)クロックサイクルで、前記第M個目のビンを復号化し、前記第M個目のビンに関連した前記1つのコンテキストモデルを更新するステップ、及び
前記第(M+2)クロックサイクルで、前記第M個目のビンの復号化されたビン値を保存し、前記シンタックス要素の前記復号化プロセスが完了されたかどうかを検出するステップを更に含む請求項20に記載の方法。
【請求項22】
前記第(M+2)クロックサイクルで、前記シンタックス要素を逆2値化し、前記シンタックス要素の値を得るステップ、及び
第(M+3)クロックサイクルで、前記各第i個目(i=1〜M)のビンに関連したコンテキストモデルを書き戻すステップを更に含む請求項21に記載の方法。
【請求項23】
前記第(M+3)クロックサイクルで、前記シンタックス要素の値を上ブロックからの情報を保存する第1バッファと左ブロックからの情報を保存する第2バッファに書き込むステップを更に含む請求項22に記載の方法。
【請求項24】
前記第1クロックサイクルで、前記シンタックス要素の値に基づいて前記シンタックス要素をバイナリ文字列内に2値化する請求項13〜23のいずれかに記載の方法。
【請求項25】
コンテキストモデルクラスタを前記メモリ素子の複数のアドレスのクラスタに保存し、前記各アドレスに保存されたコンテキストモデルクラスタは、
#CMs(SEi)+#CMs(SEi+1)+…+#CMs(SEi+n) ≦ P
の条件を満たすステップを更に含み、
SEiは、第i個目のシンタックス要素を表し、#CMs(SEi)は、処理する順序で配列された、SEi、SEi+1、SEi+n の処理プロセスに用いられたコンテキストモデルの数を表しており、Pは、全てのシンタックス要素の中のシンタックス要素のシンタックスモデルのセットの最大数を表している請求項13〜24のいずれかに記載の方法。
【請求項26】
パイプラインフローのコンテキスト適応バイナリ算術符号化と復号化の方法であって、前記方法は、
第1クロックサイクルで、第1シンタックス要素に関連したコンテキストモデルを読み出し、少なくとも1つの隣接のブロックから情報を得て、少なくとも1つの隣接のブロックからの情報に基づいて変数を計算するステップ、
第2クロックサイクルで、前記変数に基づいて前記第1シンタックス要素の第1ビンの第1インデックス値を計算し、前記第1インデックス値に基づいて前記第1シンタックス要素の前記第1ビンの前記コンテキストモデルの1つを読み込むステップ、
前記第2クロックサイクルで、第2シンタックス要素に関連したコンテキストモデルを読み取り、前記第1シンタックス要素と前記第2シンタックス要素がデータ処理プロセス中に同時に生じるステップ、
第3クロックサイクルで、前記第1シンタックス要素の前記第1ビンに関連した前記1つのコンテキストモデルに基づいて前記第1シンタックス要素の前記第1ビンを復号化し、前記第1シンタックス要素の前記第1ビンの値を得るステップ、
前記第1シンタックス要素の前記第1個目のビンの値の1つのレベルに対応した第3クロックサイクルで、前記変数に基づいて前記第2シンタックス要素の第1ビンの第1インデックス値を計算し、前記第1インデックス値に基づいて前記第2シンタックス要素の前記第1ビンの前記コンテキストモデルの1つを読み込むステップ、及び
前記第1シンタックス要素の前記第1個目のビンの値の他の1つのレベルに対応した第3クロックサイクルで、前記変数に基づいて前記第1シンタックス要素の第2ビンの第2インデックス値を計算し、前記第2インデックス値に基づいて前記第1シンタックス要素の前記第2ビンの前記コンテキストモデルの1つを読み込むステップを含む方法。
【請求項27】
前記第1シンタックス要素は、“significant_coeff_flag”を含み、前記第1シンタックス要素は、“last_significant_coeff_flag”を含む請求項26に記載の方法。
【請求項28】
第(i+1)クロックサイクルで、前記変数に基づいて前記第1シンタックス要素の第i個目のビンの第i個目のインデックス値を計算し、前記第i個目のインデックス値に基づいて前記第1シンタックス要素の前記第i個目のビンの前記コンテキストモデルの1つを読み込むステップ、
第(i+2)クロックサイクルで、前記第1シンタックス要素の前記第i個目のビンに関連した前記1つのコンテキストモデルに基づいて前記第1シンタックス要素の前記第i個目のビンを復号化し、前記第1シンタックス要素の前記第i個目のビンの値を得るステップ、
前記第1シンタックス要素の前記第i個目のビンの値の1つのレベルに対応した前記第(i+2)クロックサイクルで、前記変数に基づいて前記第2シンタックス要素の第i個目のビンの第i個目のインデックス値を計算し、前記第i個目のインデックス値に基づいて前記第2シンタックス要素の前記第i個目のビンの前記コンテキストモデルの1つを読み込むステップ、及び
前記第1シンタックス要素の前記第i個目のビンの値の他の1つのレベルに対応した前記第(i+2)クロックサイクルで、前記変数に基づいて前記第1シンタックス要素の第(i+1)個目のビンの第(i+1)個目の(i+1)インデックス値を計算し、
前記第(i+1)個目のインデックス値に基づいて前記第1シンタックス要素の前記第(i+1)個目のビンの前記コンテキストモデルの1つを読み込むステッを更に含む請求項26または27に記載の方法。
【請求項29】
コンテキストモデルクラスタを前記メモリ素子の複数のアドレスのクラスタに保存し、前記各アドレスに保存されたコンテキストモデルクラスタは、
#CMs(SEi)+#CMs(SEi+1)+…+#CMs(SEi+n) ≦ P
の条件を満たすステップを更に含み、
SEiは、第i個目のシンタックス要素を表し、#CMs(SEi)は、処理する順序で配列された、SEi、SEi+1、SEi+n の処理プロセスに用いられたコンテキストモデルの数を表しており、Pは、全てのシンタックス要素の中のシンタックス要素のシンタックスモデルのセットの最大数を表している請求項26〜28のいずれかに記載の方法。
【請求項30】
前記第2シンタックス要素“last_significant_coeff_flag”(LSCF)のコンテキストモデルクラスタを保存する第1レジスタバンクを指定するステップ、及び
前記第1シンタックス要素を含む他のシンタックス要素のコンテキストモデルクラスタを保存する第2レジスタバンクを指定するステップを更に含む請求項26〜29のいずれかに記載の方法。
【図1】
【図2A】
【図2B】
【図3A】
【図3B】
【図3C】
【図4】
【図5A】
【図5B】
【図6A】
【図6B】
【図7A】
【図7B】
【図7C】
【図8】
【図9】
【図10】
【図11】
【図12A】
【図12B】
【図12C】
【図12D】
【図2A】
【図2B】
【図3A】
【図3B】
【図3C】
【図4】
【図5A】
【図5B】
【図6A】
【図6B】
【図7A】
【図7B】
【図7C】
【図8】
【図9】
【図10】
【図11】
【図12A】
【図12B】
【図12C】
【図12D】
【公開番号】特開2009−100474(P2009−100474A)
【公開日】平成21年5月7日(2009.5.7)
【国際特許分類】
【出願番号】特願2008−265241(P2008−265241)
【出願日】平成20年10月14日(2008.10.14)
【出願人】(390023582)財団法人工業技術研究院 (524)
【氏名又は名称原語表記】INDUSTRIAL TECHNOLOGY RESEARCH INSTITUTE
【住所又は居所原語表記】195 Chung Hsing Rd.,Sec.4,Chutung,Hsin−Chu,Taiwan R.O.C
【Fターム(参考)】
【公開日】平成21年5月7日(2009.5.7)
【国際特許分類】
【出願日】平成20年10月14日(2008.10.14)
【出願人】(390023582)財団法人工業技術研究院 (524)
【氏名又は名称原語表記】INDUSTRIAL TECHNOLOGY RESEARCH INSTITUTE
【住所又は居所原語表記】195 Chung Hsing Rd.,Sec.4,Chutung,Hsin−Chu,Taiwan R.O.C
【Fターム(参考)】
[ Back to top ]