(57)【特許請求の範囲】
【請求項１】
複数のプリシンクトのデータを含むビデオビットストリームを復号する方法であって、
前記ビデオビットストリームにおける画像のプリシンクトの幅を決定する決定工程と、
前記プリシンクトを復号する復号工程と、
を含み、
前記プリシンクトは量子化の単位であり、
前記画像が列によって分割されない場合、プリシンクトの幅は、前記画像の幅に対応し、
前記画像が列によって分割される場合、前記画像の水平方向において、複数のプリシンクトが前記画像に含まれ、
前記決定工程において、前記画像が列によって分割される場合における１又は複数のプリシンクトの幅を、２のｎ乗の倍数となるよう決定し、前記ｎは、ウェーブレット変換における、前記画像の水平方向における分解レベルの数である、
方法。
【請求項２】
前記ビデオビットストリームは、フィルタ演算を含む逆変換を用いて復号される、請求項１に記載の方法。
【請求項３】
前記フィルタ演算はウェーブレット合成変換に関する、請求項２に記載の方法。
【請求項４】
高周波の係数のセットと、低周波の係数のセットとを含む前記プリシンクトの係数を決定する係数決定工程を更に含む、請求項１に記載の方法。
【請求項５】
前記プリシンクトのデータは、１つのプリシンクトに対応するサブパケットを含む、請求項１に記載の方法。
【請求項６】
複数のプリシンクトのデータを含むビデオビットストリームを復号する装置であって、
前記ビデオビットストリームにおける画像のプリシンクトの幅を決定する決定手段と、
前記プリシンクトを復号する復号手段と、
を含み、
前記プリシンクトは量子化の単位であり、
前記画像が列によって分割されない場合、プリシンクトの幅は、前記画像の幅に対応し、
前記画像が列によって分割される場合、前記画像の水平方向において、複数のプリシンクトが前記画像に含まれ、
前記決定手段において、前記画像が列によって分割される場合における１又は複数のプリシンクトの幅を、２のｎ乗の倍数となるよう決定し、前記ｎは、ウェーブレット変換における、前記画像の水平方向における分解レベルの数である、
装置。
【請求項７】
前記ビデオビットストリームは、フィルタ演算を含む逆変換を用いて復号される、請求項６に記載の装置。
【請求項８】
前記フィルタ演算はウェーブレット合成変換に関する、請求項７に記載の装置。
【請求項９】
高周波の係数のセットと、低周波の係数のセットとを含む前記プリシンクトの係数を決定する係数決定手段を更に含む、請求項６に記載の装置。
【請求項１０】
前記プリシンクトのデータは、１つのプリシンクトに対応するサブパケットを含む、請求項６に記載の装置。
【請求項１１】
コンピュータに請求項１から５のいずれか１項に記載の方法を実行させるプログラム。
【請求項１２】
画像を符号化して、複数のプリシンクトのデータを含むビデオビットストリームを生成する方法であって、
前記画像におけるプリシンクトの幅を決定する決定工程と、
前記プリシンクトを符号化する符号化工程と
を含み、
前記プリシンクトは量子化の単位であり、
前記画像が列によって分割されない場合、プリシンクトの幅は、前記画像の幅に対応し、
前記画像が列によって分割される場合、前記画像の水平方向において、複数のプリシンクトが前記画像に含まれ、
前記決定工程において、前記画像が列によって分割される場合における１又は複数のプリシンクトの幅を、２のｎ乗の倍数となるよう決定し、前記ｎは、ウェーブレット変換における、前記画像の水平方向における分解レベルの数である、方法。
【請求項１３】
前記ビデオビットストリームは、フィルタ演算を含む変換を用いて符号化される、請求項１２に記載の方法。
【請求項１４】
前記フィルタ演算はウェーブレット変換に関する、請求項１３に記載の方法。
【請求項１５】
前記プリシンクトの係数は、高周波の係数のセットと、低周波の係数のセットとを含む、請求項１２に記載の方法。
【請求項１６】
前記ビデオビットストリームにおいて、前記プリシンクトのデータは、１つのプリシンクトに対応するサブパケットを含む、請求項１２に記載の方法。
【請求項１７】
画像を符号化して、複数のプリシンクトのデータを含むビデオビットストリームを生成する装置であって、
前記画像におけるプリシンクトの幅を決定する決定手段と、
前記プリシンクトを符号化する符号化手段と
を含み、
前記プリシンクトは量子化の単位であり、
前記画像が列によって分割されない場合、プリシンクトの幅は、前記画像の幅に対応し、
前記画像が列によって分割される場合、前記画像の水平方向において、複数のプリシンクトが前記画像に含まれ、
前記決定手段において、前記画像が列によって分割される場合における１又は複数のプリシンクトの幅を、２のｎ乗の倍数となるよう決定し、前記ｎは、ウェーブレット変換における、前記画像の水平方向における分解レベルの数である、
装置。
【請求項１８】
前記ビデオビットストリームは、フィルタ演算を含む変換を用いて符号化される、請求項１７に記載の装置。
【請求項１９】
前記フィルタ演算はウェーブレット変換に関する、請求項１８に記載の装置。
【請求項２０】
前記プリシンクトの係数は、高周波の係数のセットと、低周波の係数のセットとを含む、請求項１７に記載の装置。
【請求項２１】
前記ビデオビットストリームにおいて、前記プリシンクトのデータは、１つのプリシンクトに対応するサブパケットを含む、請求項１７に記載の装置。
【請求項２２】
コンピュータに請求項１２から１６のいずれか１項に記載の方法を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に、デジタルビデオ信号処理に関し、特に、ビデオデータを符号化及び復号するための方法、装置及びシステムに関する。本発明はまた、ビデオデータを符号化及び復号するためのコンピュータプログラムが記録されたコンピュータ可読媒体を含むコンピュータプログラム製品に関する。
【背景技術】
【０００２】
ビデオデータの伝送及び記憶のためのアプリケーションを含む、ビデオ符号化のための多くのアプリケーションが現在存在する。多くのビデオ符号化規格も開発されており、他の規格も現在開発中である。ビデオ圧縮研究では、「配信コーデック」（すなわち、圧縮ビデオデータを地理的に分散した視聴者に配信することを意図したコーデック）に非常に重点が置かれている。しかし、新たな研究領域は「メザニンコーデック」に向けられている。メザニンコーデックは、高度に局所化された配信、すなわち放送スタジオ内で使用される。メザニンコーデックは、従来のビデオコーデックと比較して、符号化器及び復号器の両方について、典型的には１フレームよりも十分に短い超低レイテンシ、及び大幅に低減された複雑さの要件を特徴とする。国際標準化機構／国際電気技術委員会合同技術委員会１／小委員会２９／作業部会１（ＩＳＯ／ＩＥＣ  ＪＴＣ１／ＳＣ２９／ＷＧ  １）（ＪＰＥＧ(Joint Photographic Experts Group)としても知られている）内のそのような符号化における最近の開発は、「ＪＰＥＧ  ＸＳ」と名付けられた標準化ワークアイテムをもたらした。ＪＰＥＧ  ＸＳワークアイテムの目的は、ビデオデータの３２ラインを超えないエンドツーエンドレイテンシと、比較的控えめな実装技術、例えば、Ｘｉｌｉｎｘ（登録商標）などのベンダからのミッドレンジＦＰＧＡ内における実装のための能力とを、有するコーデックを生み出すことである。そのようなレイテンシ要件は、符号化データが圧縮ビデオデータを搬送するチャネルの容量に対して過度に変化しないことを保証するための、厳格なレート制御技術の使用を要求する。
【０００３】
Ｈ．２６４／ＡＶＣなどの従来のビデオコーデックは、１つの符号化器によって生成されたビデオビットストリームが（例えば、放送テレビの場合のように）何度も復号される可能性が高いように、使用される傾向がある。このような応用例では、復号器と比較して比較的複雑な符号化器が許容される。この複雑さの非対称性は、最適な予測モードを選択する前に多くの異なる予測モードをテストする可能性を与える。対照的に、メザニンコーデックの応用例は、典型的には、１つの復号器によって消費されるビットストリームを生成する１つの符号化器を含む。したがって、符号化器と復号器との間での許容可能な複雑さの非対称性が大幅に低減される。
【０００４】
放送スタジオでは、リアルタイム編集、グラフィック及びオーバレイの挿入、並びに様々なコンテンツソースの混合を含むいくつかの変換を受ける前に、ビデオはカメラによってキャプチャされてもよく、その結果、出力ビデオストリームが生成される。ビデオが適切に処理されると、（例えば、地上波放送を介して）末端消費者に配信するために、出力ビデオストリームを符号化するために配信符号化器が使用される。スタジオ内では、伝統的に、ビデオデータは一般的に非圧縮フォーマットで転送されてきており、これは非常に高速なリンクの使用を必要とする。ＳＤＩ(Serial Digital Interface)プロトコルの亜種は、異なるビデオフォーマットを転送することができる。例えば、３Ｇ−ＳＤＩ(３Ｇｂｐｓの電気リンクで動作する）は、１０８０ｐ  ＨＤＴＶ（１９２０×１０８０解像度）を３０ｆｐｓで、サンプルあたり８ビットで転送できる。固定ビットレートを有するインタフェースは、固定ビットレート（ＣＢＲ）を有するデータを転送するのに適している。圧縮されていないビデオデータは一般にＣＢＲであり、超低レイテンシ符号化の文脈では、圧縮ビデオデータも一般にＣＢＲであることが期待される。信号伝搬のために使用可能な最大ケーブル長はより高いビットレートは短くなり、これはスタジオを通るケーブルのルーティングについての問題となる可能性がある。例えば、ＵＨＤＴＶ（３８４０×２１６０）は１０８０ｐ  ＨＤＴＶと比較して４倍の帯域幅の増加を必要とし、これは１２Ｇｂｐｓインタフェースを意味する。単一の電気チャネルのデータレートを増加させることは、ケーブル配線の達成可能な長さを短くする。３Ｇｂｐｓでは、ケーブルランは一般に１５０ｍを超えることができないが、これは、多くのスタジオでの応用例において使用可能な最小の長さである。より高いレートのリンクを達成する１つの方法は、フレームタイリング又は他の何らかの多重化方式とともに、例えば４つの３Ｇ−ＳＤＩリンクを使用することによって、ケーブル配線を複製することによる。しかしながら、ケーブル配線を複製する方法はケーブル配線の複雑さを増大させ、より多くの物理空間を必要とし、単一のケーブルを使用する場合と比較して信頼性を低下させる可能性がある。したがって、「視覚的に損失のない」（すなわち、元のビデオデータと比較して知覚可能なアーチファクトを有さない）レベルの性能を維持しながら、比較的低い圧縮比（例えば、４：１）で圧縮を実行することができるメザニンコーデックが、産業界によって必要とされている。圧縮比はまた、圧縮ストリームに与えられる「画素当たりのビット」（ｂｐｐ）の数として表されてもよいが、圧縮比への逆変換は、圧縮されていない信号のビット深度、及びクロマフォーマットの知識を必要とすることに留意されたい。例えば、８ｂの４：４：４ビデオデータは圧縮されていないときに２４ｂｐｐを占有するので、４ｂｐｐでの転送は６：１の圧縮比を意味する。
【０００５】
ビデオデータは、１つ以上の色チャネルを含む。一般に、１つの原色チャネルと２つの二次色チャネルがある。原色チャネルは一般に「ルマ」チャネルと呼ばれ、二次色チャネルは一般に「クロマ」チャネルと呼ばれる。ビデオデータは、「ＹＣｂＣｒ」又は「ＲＧＢ」などの色空間を使用して表される。いくつかの応用例では、コンピュータグラフィックスカードの出力を視覚的に無損失で圧縮すること、又はタブレット内のＳＯＣからタブレット内のＬＣＤパネルに送信することが必要である。そのようなコンテンツはレンダリングウィジェット、テキスト、アイコンなどの使用のために、カメラからキャプチャされたコンテンツとは異なる統計的特性を有することが多い。このような応用例は、「スクリーンコンテンツ応用例」と呼ぶことができる。スクリーンコンテンツ応用例では、例えばＬＣＤパネルを駆動するとき、一般にビデオがＲＧＢとしてキャプチャされて表示されるので、「ＲＧＢ」色空間が一般に使用される。最大の信号強度が「Ｇ」（緑）チャネルに存在するので、一般に、Ｇチャネルは原色チャネルを使用して符号化され、残りのチャネル（すなわち、「Ｂ」及び「Ｒ」）は、二次色チャネルを使用して符号化されることに留意されたい。この構成は、「ＧＢＲ」と呼ばれることがある。「ＹＣｂＣｒ」色空間が使用されているとき、「Ｙ」チャネルは原色チャネルを使用して符号化され、「Ｃｂ」及び「Ｃｒ」チャネルは二次色チャネルを使用して符号化される。
【０００６】
ビデオデータはまた、特定のクロマフォーマットを使用して表される。原色チャネル及び二次色チャネルは４：４：４クロマフォーマットが使用されているとき、同じ空間密度で空間的にサンプリングされる。スクリーンコンテンツの場合、一般に使用されるクロマフォーマットは４：４：４であり、これは、一般にＬＣＤパネルが各画素に対して赤、緑、及び青の独立した制御を提供し、すなわち４：４：４クロマフォーマットであるからである。ビット深度はそれぞれの色チャネルにおけるサンプルのビット幅を定義し、これは、利用可能なサンプル値の範囲を意味する。一般に、全ての色チャネルは同じビット深度を有するが、代わりに、異なるビット深度を有する可能性がある。他のクロマフォーマットも可能である。例えば、クロマチャネルが（ルマチャネルと比較して）水平方向に半分のレートでサンプリングされる場合、４：２：２のクロマフォーマットが使用中であると言われる。また、クロマチャネルが（ルマチャネルと比較して）水平方向及び垂直方向に半分のレートでサンプリングされる場合、４：２：０クロマフォーマットが使用中であると言われる。これらのクロマフォーマットは、強度に対する感度が色に対する感度よりも高いという人間の視覚系の特性を利用する。したがって、過度の視覚的影響を引き起こすことなく、色チャネルのサンプリングを低減することが可能である。しかし、この特性は、複数世代の符号化及び復号が一般的であるスタジオ環境にはあまり適用できない。また、スクリーンコンテンツの場合、４：４：４以外のクロマフォーマットの使用は、サブピクセルレンダリングされた（又は「アンチエイリアシングされた」）テキスト及びシャープなオブジェクトエッジに歪みが導入されるので、問題となり得る。
【０００７】
フレームデータは、スクリーンコンテンツとカメラキャプチャコンテンツとの混合を含むこともできる。例えば、コンピュータ画面は様々なウィンドウ、アイコン及び制御ボタン、テキストを含むことができ、また、再生されているビデオ、又は見られている画像も含むことができる。そのようなコンテンツは、コンピュータ画面全体に関して、「混合コンテンツ」と呼ぶことができる。さらに、細部（又は「テクスチャ」）のレベルは、フレーム内で変化する。一般に、詳細なテクスチャの領域（例えば、葉、テキスト）、又は（例えばカメラセンサからの）ノイズを含む領域は、圧縮するのが困難である。詳細なテクスチャは、細部を失わないように、低い圧縮比でしか符号化することができない。逆に、細部がほとんどない領域（例えば、平坦な領域、空、コンピュータアプリケーションからの背景）は、細部の損失がほとんどなく、高い圧縮比で符号化することができる。
【０００８】
複雑さを低くする目的での１つの方法は、画像全体に階層的に適用される「ウェーブレット」変換を適用することである。ウェーブレット変換は、ＪＰＥＧ２０００画像符号化規格に関連して研究されてきた。画像にわたる転送の適用は、各々が各フレームの小さなセクションに適用される多数の離散コサイン変換（ＤＣＴ）を適用する、Ｈ．２６４／ＡＶＣのようなブロックベースのコーデックとは異なる。Ｈ．２６４／ＡＶＣ内の各ブロックは、様々な方法のうちの１つを使用して予測され、これはモード決定を行う必要のために符号化器の複雑さが増すという犠牲を払いながら、高度の局所適応性を達成する。さらに、符号化器は、モード選択を支援するために歪み計算を使用する。対照的に、ウェーブレット変換は広い空間領域にわたって適用され、したがって、ブロックベースのコーデックに利用可能な予測モードは一般に適用可能ではなく、その結果、符号化器及び復号器の複雑さの不均衡が大幅に低減される。予測モード決定がないことはまた、そのような決定を支援するための歪み測定の必要性を回避し、符号化器の複雑さを低減する。しかしながら、量子化に関する決定は残っている。メザニン符号化用途のためのウェーブレットベースの圧縮技術の文脈では、符号化器の複雑さのさらなる低減が望まれる。
【発明の概要】
【０００９】
本発明の目的は、既存の構成の１つ又は複数の欠点を実質的に克服するか、又は少なくとも改善することである。
【００１０】
本開示の一態様は、ビットストリームから画像フレームを復号する方法であって、
前記ビットストリームから前記画像フレームのプリシンクトの複数の部分を受信することであって、前記プリシンクトは、前記プリシンクトにわたるウェーブレット変換を用いて符号化されており、前記プリシンクトの空間列に対応する複数の列となるように前記ビットストリームに配置されている、受信することと、
受信した前記複数の部分から係数を復号することであって、前記複数の部分のそれぞれは前記複数の部分の他の部分の逆量子化とは独立している前記係数の逆量子化を有しており、前記逆量子化は前記ウェーブレット変換の全てのサブバンドに適用可能なシナリオ及びリファインメントとしてシグナリングされ、追加のビットプレーンのシナリオ及びリファインメントは前記列のビットバジェットに従って前記ウェーブレット変換の少なくとも１つのサブバンドにシグナリングされ、前記シナリオ及びリファインメントは切り捨てレベルを示す、復号することと、
復号された前記係数を用いて前記画像フレームを形成することと、
を含む方法を提供する。
【００１１】
いくつかの態様では、前記列についての前記ビットバジェットは、前記現在のプリシンクト内で前記列のそれぞれが占める相対的な割合に従って前記現在のプリシンクト内の前記列の間で分割された前記現在のプリシンクトについてのバジェット化された符号化コストから判定される。
【００１２】
いくつかの態様では、前記プリシンクト幅は１２８の倍数であり、５つの水平分解という最も深いレベル５を有し、前記最も深いレベルにおいて４つのセットへの係数のグループ化を有する。
【００１３】
本開示の別の態様は、ビットストリームから画像フレームを復号する装置であって、
前記ビットストリームから前記画像フレームのプリシンクトの複数の部分を受信する手段であって、前記プリシンクトは、前記プリシンクトにわたるウェーブレット変換を用いて符号化されており、前記プリシンクトの空間列に対応する複数の列となるように前記ビットストリームに配置されている、受信する手段と、
受信した前記複数の部分から係数を復号する手段であって、前記複数の部分のそれぞれは前記複数の部分の他の部分の逆量子化とは独立している前記係数の逆量子化を有しており、前記逆量子化は前記ウェーブレット変換の全てのサブバンドに適用可能なシナリオ及びリファインメントとしてシグナリングされ、追加のビットプレーンのシナリオ及びリファインメントは前記列のビットバジェットに従って前記ウェーブレット変換の少なくとも１つのサブバンドにシグナリングされ、前記シナリオ及びリファインメントは切り捨てレベルを示す、復号する手段と、
復号された前記係数を用いて前記画像フレームを形成する手段と、
を備える装置を提供する。
【００１４】
本開示の別の態様は、ビットストリームから画像フレームを復号するシステムであって、
データ及びコンピュータプログラムを格納するメモリと、
前記メモリに結合された、前記コンピュータプログラムを実行するためのプロセッサと、を備え、前記コンピュータプログラムは、
前記ビットストリームから前記画像フレームのプリシンクトの複数の部分を受信することであって、前記プリシンクトは、前記プリシンクトにわたるウェーブレット変換を用いて符号化されており、前記プリシンクトの空間列に対応する複数の列となるように前記ビットストリームに配置されている、受信することと、
受信した前記複数の部分から係数を復号することであって、前記複数の部分のそれぞれは前記複数の部分の他の部分の逆量子化とは独立している前記係数の逆量子化を有しており、前記逆量子化は前記ウェーブレット変換の全てのサブバンドに適用可能なシナリオ及びリファインメントとしてシグナリングされ、追加のビットプレーンのシナリオ及びリファインメントは前記列のビットバジェットに従って前記ウェーブレット変換の少なくとも１つのサブバンドにシグナリングされ、前記シナリオ及びリファインメントは切り捨てレベルを示す、復号することと、
復号された前記係数を用いて前記画像フレームを形成することと、
のための命令を含む、システムを提供する。
【００１５】
本開示の別の態様は、非一時的なコンピュータ可読媒体であって、前記媒体は、ビットストリームから画像フレームを復号するための、前記媒体に格納されているコンピュータプログラムを有し、前記プログラムは、
前記ビットストリームから前記画像フレームのプリシンクトの複数の部分を受信するコードであって、前記プリシンクトは、前記プリシンクトにわたるウェーブレット変換を用いて符号化されており、前記プリシンクトの空間列に対応する複数の列となるように前記ビットストリームに配置されている、受信するコードと、
受信した前記複数の部分から係数を復号するコードであって、前記複数の部分のそれぞれは前記複数の部分の他の部分の逆量子化とは独立している前記係数の逆量子化を有しており、前記逆量子化は前記ウェーブレット変換の全てのサブバンドに適用可能なシナリオ及びリファインメントとしてシグナリングされ、追加のビットプレーンのシナリオ及びリファインメントは前記列のビットバジェットに従って前記ウェーブレット変換の少なくとも１つのサブバンドにシグナリングされ、前記シナリオ及びリファインメントは切り捨てレベルを示す、復号するコードと、
復号された前記係数を用いて前記画像フレームを形成するコードと、
を含む、非一時的なコンピュータ可読媒体を提供する。
【００１６】
本開示の別の態様は、ビットストリームへと画像フレームを符号化する方法であって、
前記画像フレームのプリシンクトの複数の部分を判定することであって、前記プリシンクトは、前記プリシンクトにわたるウェーブレット変換を用いて符号化されており、前記プリシンクトの空間列に対応する複数の列となるように構成されている、判定することと、
前記複数の部分から係数を判定することであって、前記複数の部分のそれぞれは前記複数の部分の他の部分の量子化とは独立している前記係数の量子化を有しており、前記量子化は前記ウェーブレット変換の全てのサブバンドに適用可能なシナリオ及びリファインメントとしてシグナリングされ、追加のビットプレーンのシナリオ及びリファインメントは前記列のビットバジェットに従って前記ウェーブレット変換の少なくとも１つのサブバンドついて判定され、前記シナリオ及びリファインメントは切り捨てレベルを示す、判定することと、
判定された前記係数を用いて前記画像フレームの前記ビットストリームを形成することと、
を含む方法を提供する。
【００１７】
本開示の別の態様は、ビットストリームへと画像フレームを符号化する装置であって、
前記画像フレームのプリシンクトの複数の部分を判定する手段であって、前記プリシンクトは、前記プリシンクトにわたるウェーブレット変換を用いて符号化されており、前記プリシンクトの空間列に対応する複数の列となるように構成されている、判定する手段と、
前記複数の部分から係数を判定する手段であって、前記複数の部分のそれぞれは前記複数の部分の他の部分の量子化とは独立している前記係数の量子化を有しており、前記量子化は前記ウェーブレット変換の全てのサブバンドに適用可能なシナリオ及びリファインメントとしてシグナリングされ、追加のビットプレーンのシナリオ及びリファインメントは前記列のビットバジェットに従って前記ウェーブレット変換の少なくとも１つのサブバンドついて判定され、前記シナリオ及びリファインメントは切り捨てレベルを示す、判定する手段と、
判定された前記係数を用いて前記画像フレームの前記ビットストリームを形成する手段と、
を備える装置を提供する。
【００１８】
本開示の別の態様は、
ビットストリームへと画像フレームを符号化するシステムであって、
データ及びコンピュータプログラムを格納するメモリと、
前記メモリに結合された、前記コンピュータプログラムを実行するためのプロセッサと、を備え、前記コンピュータプログラムは、
前記画像フレームのプリシンクトの複数の部分を判定することであって、前記プリシンクトは、前記プリシンクトにわたるウェーブレット変換を用いて符号化されており、前記プリシンクトの空間列に対応する複数の列となるように構成されている、判定することと、
前記複数の部分から係数を判定することであって、前記複数の部分のそれぞれは前記複数の部分の他の部分の量子化とは独立している前記係数の量子化を有しており、前記量子化は前記ウェーブレット変換の全てのサブバンドに適用可能なシナリオ及びリファインメントとしてシグナリングされ、追加のビットプレーンのシナリオ及びリファインメントは前記列のビットバジェットに従って前記ウェーブレット変換の少なくとも１つのサブバンドついて判定され、前記シナリオ及びリファインメントは切り捨てレベルを示す、判定することと、
判定された前記係数を用いて前記画像フレームの前記ビットストリームを形成することと、
のための命令を含む、システムを提供する。
【００１９】
本開示の別の態様は、非一時的なコンピュータ可読媒体であって、前記媒体は、ビットストリームへと画像フレームを符号化するための、前記媒体に格納されているコンピュータプログラムを有し、前記プログラムは、
前記画像フレームのプリシンクトの複数の部分を判定するコードであって、前記プリシンクトは、前記プリシンクトにわたるウェーブレット変換を用いて符号化されており、前記プリシンクトの空間列に対応する複数の列となるように構成されている、判定するコードと、
前記複数の部分から係数を判定するコードであって、前記複数の部分のそれぞれは前記複数の部分の他の部分の量子化とは独立している前記係数の量子化を有しており、前記量子化は前記ウェーブレット変換の全てのサブバンドに適用可能なシナリオ及びリファインメントとしてシグナリングされ、追加のビットプレーンのシナリオ及びリファインメントは前記列のビットバジェットに従って前記ウェーブレット変換の少なくとも１つのサブバンドついて判定され、前記シナリオ及びリファインメントは切り捨てレベルを示す、判定するコードと、
判定された前記係数を用いて前記画像フレームの前記ビットストリームを形成するコードと、
を含む、非一時的なコンピュータ可読媒体を提供する。
【００２０】
本開示の別の態様は、複数のプリシンクトを有するビデオビットストリームへとビデオデータを符号化する方法であって、前記複数のプリシンクトのうちの現在のプリシンクトについての符号化コスト推定値を、前記現在のプリシンクトについての対応する候補係数切り捨てレベルをテストすることによって生成することであって、前記符号化コスト推定値のそれぞれは、前記候補切り捨てレベルにおける前記現在のプリシンクトを符号化することについての符号化データサイズの過大推定値であって、最上位ビットプレーンインデックスを使用して判定され、前記符号化コスト推定値のそれぞれは前記現在のプリシンクト内の係数ビット値から独立している、生成することと、前記現在のプリシンクトについての対応する前記符号化コスト推定値及びバジェット化された符号化コストに従って、前記候補切り捨てレベルのうちの１つを選択することであって、前記バジェット化された符号化コストは前記プリシンクトの符号化の許容可能なサイズを表す、選択することと、前記ビデオビットストリームを生成するために、選択された前記切り捨てレベルを使用してビデオデータの前記現在のプリシンクトを前記ビデオビットストリームへと符号化することと、を含む方法を提供する。
【００２１】
いくつかの態様では、前記符号化コスト推定値は、前記選択された切り捨てレベルにおいて０の値に量子化された符号化されている係数を含む、前記現在のプリシンクトの符号化された係数のそれぞれについての符号符号化コストを含む。
【００２２】
いくつかの態様では、前記現在のプリシンクトの符号化の前記許容可能なサイズは、前記現在のプリシンクトについてのバジェットと、リーキーバケットモデルに従う前のプリシンクトの符号化サイズと、に基づいて判定される。
【００２３】
いくつかの態様では、前記現在のプリシンクトの符号化の前記許容可能なサイズは、前記選択された切り捨てレベルに量子化された係数値を考慮した、前記符号化コスト推定値の再評価に基づいて判定される。
【００２４】
いくつかの態様では、前記方法は、前記候補切り捨てレベルを生成することをさらに含む。
【００２５】
いくつかの態様では、前記現在のプリシンクトについての前記バジェット化された符号化コストは、前記現在のプリシンクト内の画素数が乗算された画素当たりのビットである。
【００２６】
いくつかの態様では、前記現在のプリシンクトについてのバジェット化された符号化コストは、前記現在のプリシンクト内で前記列のそれぞれが占める相対的な割合に従って前記現在のプリシンクト内の前記列の間で分割される。
【００２７】
いくつかの態様では、前記ビデオビットストリームはフィルタデータでパディングされる。
【００２８】
本発明の別の態様は、複数のプリシンクトを有するビデオビットストリームへとビデオデータを符号化する装置であって、前記複数のプリシンクトのうちの現在のプリシンクトについての符号化コスト推定値を、前記現在のプリシンクトについての対応する候補係数切り捨てレベルをテストすることによって生成する手段であって、前記符号化コスト推定値のそれぞれは、前記候補切り捨てレベルにおける前記現在のプリシンクトを符号化することについての符号化データサイズの過大推定値であって、最上位ビットプレーンインデックスを使用して判定され、前記符号化コスト推定値のそれぞれは前記現在のプリシンクト内の係数ビット値から独立している、生成する手段と、前記現在のプリシンクトについての対応する前記符号化コスト推定値及びバジェット化された符号化コストに従って、前記候補切り捨てレベルのうちの１つを選択する手段であって、前記バジェット化された符号化コストは前記プリシンクトの符号化の許容可能なサイズを表す、選択する手段と、前記ビデオビットストリームを生成するために、選択された前記切り捨てレベルを使用してビデオデータの前記現在のプリシンクトを前記ビデオビットストリームへと符号化する手段と、を含む装置を提供する。
【００２９】
本開示の別の態様は、複数のプリシンクトを有するビデオビットストリームへとビデオデータを符号化するシステムであって、データ及びコンピュータプログラムを格納するメモリと、前記メモリに結合された、前記コンピュータプログラムを実行するためのプロセッサと、を備え、前記コンピュータプログラムは、前記複数のプリシンクトのうちの現在のプリシンクトについての符号化コスト推定値を、前記現在のプリシンクトについての対応する候補係数切り捨てレベルをテストすることによって生成することであって、前記符号化コスト推定値のそれぞれは、前記候補切り捨てレベルにおける前記現在のプリシンクトを符号化することについての符号化データサイズの過大推定値であって、最上位ビットプレーンインデックスを使用して判定され、前記符号化コスト推定値のそれぞれは前記現在のプリシンクト内の係数ビット値から独立している、生成することと、前記現在のプリシンクトについての対応する前記符号化コスト推定値及びバジェット化された符号化コストに従って、前記候補切り捨てレベルのうちの１つを選択することであって、前記バジェット化された符号化コストは前記プリシンクトの符号化の許容可能なサイズを表す、選択することと、前記ビデオビットストリームを生成するために、選択された前記切り捨てレベルを使用してビデオデータの前記現在のプリシンクトを前記ビデオビットストリームへと符号化することと、のための命令を含む、システムを提供する。
【００３０】
本開示の別の態様は、非一時的なコンピュータ可読媒体であって、前記媒体は、複数のプリシンクトを有するビデオビットストリームへとビデオデータを符号化するための、前記媒体に格納されているコンピュータプログラムを有し、前記プログラムは、前記複数のプリシンクトのうちの現在のプリシンクトについての符号化コスト推定値を、前記現在のプリシンクトについての対応する候補係数切り捨てレベルをテストすることによって生成するコードであって、前記符号化コスト推定値のそれぞれは、前記候補切り捨てレベルにおける前記現在のプリシンクトを符号化することについての符号化データサイズの過大推定値であって、最上位ビットプレーンインデックスを使用して判定され、前記符号化コスト推定値のそれぞれは前記現在のプリシンクト内の係数ビット値から独立している、生成するコードと、前記現在のプリシンクトについての対応する前記符号化コスト推定値及びバジェット化された符号化コストに従って、前記候補切り捨てレベルのうちの１つを選択するコードであって、前記バジェット化された符号化コストは前記プリシンクトの符号化の許容可能なサイズを表す、選択するコードと、前記ビデオビットストリームを生成するために、選択された前記切り捨てレベルを使用してビデオデータの前記現在のプリシンクトを前記ビデオビットストリームへと符号化するコードと、を備える、非一時的なコンピュータ可読媒体を提供する。
【００３１】
本開示の別の態様は、列に配置された複数のプリシンクトを有するビデオビットストリームのビデオデータを復号する方法であって、それぞれのプリシンクトについての列の数を判定するための前記ビデオビットストリームのヘッダを復号することと、前記現在のプリシンクトのそれぞれの列内のデータサブパケットのそれぞれの位置を判定するために、現在のプリシンクトを復号することと、前記現在のプリシンクトの前記サブパケットのそれぞれを、対応する判定された前記位置に基づいて復号することと、復号された前記サブパケットから係数ビットを判定することと、判定された前記係数ビットに対して実行されるフィルタ演算に基づいて、判定された前記係数ビットから復号されたビデオデータを判定することと、を含む方法を提供する。
【００３２】
他の態様も開示される。
【図面の簡単な説明】
【００３３】
次に、本発明の少なくとも１つの実施形態を、以下の図面及び付録を参照して説明する。
【００３４】
【図１】サブフレームレイテンシビデオ符号化及び復号システムを示す概略ブロック図である。
【図２Ａ】、
【図２Ｂ】図１のビデオ符号化及び復号システムの一方又は両方を実施することができる汎用コンピュータシステムの概略ブロック図である。
【図３Ａ】プリシンクトのためのウェーブレットサブバンド分解を示す概略ブロック図である。
【図３Ｂ】図３Ａのウェーブレットサブバンド分解のためのウェーブレット分析フィルタバンクを示す概略ブロック図である。
【図４】ビットストリームにおける表現のためのサブバンド係数グルーピングを示す概略ブロック図であり、いくつかの切り捨て閾値が示されている。
【図５】フレームを複数の列に分割することを示す概略ブロック図である。
【図６】複数の列を有するプリシンクトについてのビットストリーム分解を示す概略ブロック図である。
【図７】ビデオ符号化器の機能モジュールを示す概略ブロック図である。
【図８】図７のビデオ符号化器のレート制御モジュールを示す概略ブロック図である。
【図９】図７のビデオ符号化器におけるコスト推定に基づくレート転送を示す概略図である。
【図１０】ビデオ復号器の機能モジュールを示す概略ブロック図である。
【図１１】切り捨てオフセットを設定するために使用される最も良くない場合のプリシンクトコスト推定値を用いてビットストリームを符号化する方法を示す概略フロー図である。
【図１２】ビットストリームを復号する方法を示す概略フロー図である。
【発明を実施するための形態】
【００３５】
添付の図面のうちの任意の１つ又は複数における、同じ参照番号を有するステップ及び／又は特徴を参照する場合、本説明の目的のために、これらのステップ及び／又は特徴は反対の意図が現れていない限り同じ機能又は動作を有する。
【００３６】
図１は、サブフレームレイテンシビデオ符号化及び復号システム１００の機能モジュールを示す概略ブロック図である。ビデオ符号化及び復号システム１００におけるレート制御及びバッファ管理機構は、ビデオ復号器１３４からの復号ビデオフレームが、ビデオフレームが配信されるインタフェースのタイミングに従って配信されるように、（例えば、符号化器が可能なモードの探索に要する複雑さ及び時間の変化に起因する）バッファアンダーラン、及びその結果生じる入力ビデオデータのビデオ符号化器１１４への配信の失敗がないことを保証する。レート制御機構は、量子化パラメータを決定する際に推定された（最も良くない場合の）コスト推定を利用して、符号化器の複雑さを低減することができる。さらに、システム１００は、独立した量子化制御を伴うが、各列についての圧縮データが単一のビットストリームへとパックされる、各フレームの列への分割を介した同時固定ビットレート符号化を提供し得る。
【００３７】
ビデオフレームが配信されるインタフェースは例えば、ＳＤＩであってもよい。ＳＤＩのようなインタフェースは、クロック源に同期された、水平及び垂直ブランキング期間を伴うサンプルタイミングを有する。したがって、復号ビデオのサンプルは、ＳＤＩリンクのフレームタイミングに従って配信される必要がある。ＳＤＩを介した送信のためにフォーマットされたビデオデータは（例えば、ＳＭＰＴＥ  ＳＴ．２０２２−６で規定された方法を使用して）イーサネット（登録商標）を介して搬送されてもよい。必要なタイミングに従ってサンプルが送達されなかった場合、（例えば、無効なデータが下流の装置によってサンプル値として解釈されることから）目立った視覚的アーチファクトが生じるだろう。したがって、レート制御機構は、無効なビットストリームの生成をもたらすバッファオーバーランが発生しないことを保証する。同様の制約がビデオ符号化器１１４へのインバウンドＳＤＩリンクについて存在し、ここでは、到着タイミングに従ってサンプルを符号化する必要があり、ビデオ符号化器１１４への入力ビデオデータを（例えば、フレームの異なる領域を符号化するための処理要求の変化のために）ストールしてはならない。
【００３８】
前述のように、ビデオ符号化及び復号システム１００は、ビデオデータの１フレーム未満のレイテンシを有する。特に、ビデオ符号化器１１４の入力からビデオ復号器１３４の出力までにビデオデータの３２ラインをレイテンシが超えないことを必要とする応用例もある。レイテンシは、ビデオデータの入力／出力中、及び通信チャネル上を通る前後における部分的に符号化ビデオデータの記憶にかかる時間を含むことができる。一般に、ビデオデータはラスタ走査順序で（例えば、ＳＤＩリンクを介して）送受信される。各フレームは「プリシンクト」に分割され、各プリシンクトは一般に、高さがルマサンプルの２つのラインであり、フレームの幅に等しい幅を有する。交替に、複数のプリシンクトが横に並んで共存し、合わせてフレームの幅を占め、各プリシンクトが別個の「列」に属していてもよい。次に、所与の列内の１つ又は複数のプリシンクトのレート平滑化ウィンドウが、列内の現在のプリシンクトの目標レートを設定するために適用される。１つの圧縮プリシンクトについてのデータが送信前にバッファ内にアセンブルされるように、ビットストリームはバッファに書き込まれる。複数の列が使用されている場合、プリシンクトの行内の各圧縮プリシンクトのデータは、単一のビットストリームとして送信される前にバッファ内でアセンブルされる。
【００３９】
システム１００は、ソース装置１１０と宛先装置１３０とを含む。通信チャネル１２０は、符号化ビデオ情報をソース装置１１０から宛先装置１３０に通信するために使用される。いくつかの構成では、ソース装置１１０及び宛先装置１３０がオーバレイ挿入及びリアルタイム編集モジュールなどの各放送スタジオ機器を備えることができ、この場合、通信チャネル１２０はＳＤＩリンクであってもよい。一般に、通信チャネル１２０は「ＣＢＲ」チャネルである。したがって、通信チャネル１２０は、利用可能な帯域幅に固定された制限を与える。メザニン圧縮が使用されない応用例では、圧縮されていないビデオが通信チャネル１２０を介して直接送信される。そのような応用例の場合、通信チャネル１２０の帯域幅は、非圧縮ビデオデータの帯域幅に等しい（又はそれよりも大きくてもよい）ことが要求される。メザニン圧縮は、通信チャネル１２０が圧縮されていないビデオデータのための十分な帯域幅を有していない場合に対処する。圧縮ビデオデータについては、必要な帯域幅は一般に時間的に変化し、各プリシンクトの圧縮サイズは何らかの判定された制限内で変化することが許される。ビデオ符号化器は、送信前にいくつかの圧縮プリシンクトをバッファリングしてもよい。固定ビットレートで送信が行われるので、このバッファリングは現在圧縮されているプリシンクトの目標圧縮サイズを設定する際に、より大きな度合いの柔軟性を与える。多くのプリシンクトにわたって平均化されると、通信チャネル１２０の帯域幅に一致する固定圧縮サイズが維持される。バッファリングは係数領域（ビデオ符号化器における、ウェーブレット変換の後であるがエントロピー符号化の前）及び圧縮領域（エントロピー符号化の後であるが送信の前）の両方において可能である。バッファリングは複雑さ及びレイテンシを増加させるが、「ルックアヘッド」動作を生じさせることを可能にする。係数領域におけるバッファリングはルックアヘッドモードを可能にし、それによって、１つ以上の後に来るプリシンクトに対する現在のプリシンクトの相対的な予想圧縮サイズを考慮するように、現在のプリシンクトに対する目標バジェットが減じられる。プリシンクトの予想圧縮サイズは、累計された絶対的な係数の大きさ、又は全てのサブバンドにわたって累計されたＭＳＢ位置などの尺度を使用して、判定することができる。次に、最初のプリシンクト目標バジェットが、次の１つ以上のプリシンクトの相対符号化難易度を考慮して設定される。これは、ある程度、最初のプリシンクトに対してレート転送が利用可能でないという問題を軽減する。レート制御ルックアヘッドウィンドウを有さない、より低い複雑さの実装では、ビデオデータの各圧縮プリシンクトに固定サイズを使用する。ビデオデータの圧縮プリシンクトは、通信チャネル１２０を介して搬送される。通信チャネル１２０は、たとえシステム１００において圧縮データが搬送されるのであっても、ＳＤＩ又はＨＤＭＩ（登録商標）などの非圧縮データを搬送するように意図されたインタフェースを利用することができる。
【００４０】
他の構成では、ソース装置１１０及び宛先装置１３０が、（例えば、スマートフォン、タブレット、又はラップトップコンピュータに見られるように）システムオンチップ（ＳＯＣ）及びＬＣＤパネルの一部としてグラフィックスドライバを備えることができ、その場合通信チャネル１２０は、典型的には、ＰＣＢトラックワーク及び関連するコネクタなどの有線チャネルである。さらに、ソース装置１１０及び宛先装置１３０は、無線テレビ放送、ケーブルテレビ応用例、インターネットビデオ応用例、及び符号化ビデオデータが何らかの記憶媒体又はファイルサーバ上に取り込まれる応用例をサポートする装置を含む、広範囲の装置のうちのいずれかを備えることができる。ソース装置１１０は、ビデオデータをキャプチャし、システム１００の性能が真に無損失のフォーマット（例えば無圧縮フォーマット）と同等であると見なされうるような視覚的に無損失の圧縮を提供する圧縮フォーマットでビデオデータを出力する、デジタルカメラであってもよい。
【００４１】
図１に示すように、ソース装置１１０は、ビデオソース１１２と、ビデオ符号化器１１４と、送信機１１６とを含む。ビデオソース１１２は、典型的にはイメージングセンサ、非一時的な記録媒体に記憶されている以前にキャプチャされたビデオシーケンス、又は遠隔イメージングセンサからのビデオフィードなどの、非圧縮ビデオデータ１１３のソースを含む。非圧縮ビデオデータ１１３は、ビデオデータの配信の固定されたタイミングで、ＣＢＲチャネルを介してビデオソース１１２からビデオ符号化器１１４に搬送される。一般に、ビデオデータは、線（「水平同期」）とフレーム（「垂直同期」）との間を線引きするシグナリングを用いて、ラスタ走査フォーマットで配信される。ビデオソース１１２は、（例えば、オペレーティングシステムのビデオ出力及びコンピューティング装置上で実行される様々なアプリケーションを表示する）コンピュータグラフィックスカード、例えばタブレットコンピュータ、の出力とすることもできる。このようなコンテンツは、「画面コンテンツ」の一例である。ビデオソース１１２としてイメージングセンサを含むことができるソース装置１１０の例には、スマートフォン、ビデオカムコーダ、及びネットワークビデオカメラが含まれる。スクリーンコンテンツはそれ自体、様々な領域における、スムーズにレンダリングされたグラフィックス及び自然コンテンツの再生を含むことができるので、これは一般に「混合コンテンツ」の形態でもある。
【００４２】
ビデオ符号化器１１４はビデオソース１１２からの非圧縮ビデオデータ１１３を符号化ビデオデータに変換するが、これについては図３を参照してさらに説明する。ビデオ符号化器１１４は、入ってくる非圧縮ビデオデータ１１３を符号化する。ビデオ符号化器１１４は入力サンプルデータをリアルタイムで処理する必要がある（すなわち、ビデオ符号化器１１４は、例えば入ってくるデータの処理レートが入力データレートを下回った場合でも、入ってくる非圧縮ビデオデータ１１３をストールすることができない）。ビデオ符号化器１１４は、圧縮ビデオデータ１１５（「ビットストリーム」）を固定ビットレートで出力する。ビデオストリーミング応用例では、ビットストリーム全体はどの１つの位置にも格納されない。代わりに、圧縮ビデオデータのプリシンクトがビデオ符号化器１１４によって連続的に生成され、例えば（ＣＢＲ）通信チャネル１２０において中間記憶されながら、ビデオ復号器１３４によって消費される。ＣＢＲストリーム圧縮ビデオデータは通信チャネル１２０（例えば、ＳＤＩリンク）を介して送信機１１６によって送信される。圧縮ビデオデータは、後に通信チャネル１２０を介して送信されるまで、又は通信チャネル１２０を介した送信の代わりに、「フラッシュ」メモリ又はハードディスクドライブなどの非一時的な記憶装置１２２に記憶されることも可能である。
【００４３】
宛先装置１３０は、受信機１３２と、ビデオ復号器１３４と、ディスプレイ装置１３６とを含む。受信機１３２は通信チャネル１２０から符号化ビデオデータを受信し、受信したビデオデータ１３３をビデオ復号器１３４に渡す。そして、ビデオ復号器１３４は、復号したフレームデータ１３５をディスプレイ装置１３６に出力する。ディスプレイ装置１３６の例には、ブラウン管、液晶ディスプレイ（スマートフォンなど）、タブレットコンピュータ、コンピュータモニタ、又はスタンドアロンテレビセットが含まれる。ソース装置１１０及び宛先装置１３０のそれぞれの機能が単一の装置で実現されることも可能であり、装置の例には、携帯電話ハンドセット及びタブレットコンピュータ、又はオーバレイ挿入ユニットを含む放送スタジオ内の機器が含まれる。
【００４４】
上述の例示的な装置にもかかわらず、ソース装置１１０及び宛先装置１３０のそれぞれは、典型的にはハードウェア及びソフトウェアコンポーネントの組み合わせによって、汎用コンピューティングシステム内に構成されてもよい。図２Ａは、コンピュータモジュール２０１と、ビデオソース１１２として構成することができるキーボード２０２、マウスポインタ装置２０３、スキャナ２２６、及びカメラ２２７、並びにマイクロフォン２８０などの入力装置と、プリンタ２１５、ディスプレイ装置１３６として構成することができるディスプレイ装置２１４、及びスピーカ２１７を含む出力装置とを含む、そのようなコンピュータシステム２００を示す。外部変復調器（モデム）送受信装置２１６は、接続２２１を介して通信ネットワーク２２０との間で通信するためにコンピュータモジュール２０１によって使用され得る。通信チャネル１２０を表すことができる通信ネットワーク２２０は、インターネット、セルラー通信ネットワーク、又はプライベートＷＡＮなどの広域ネットワーク（ＷＡＮ）とすることができる。接続２２１が電話回線である場合、モデム２１６は、従来の「ダイヤルアップ」モデムとすることができる。あるいは接続２２１が大容量（例えば、ケーブル）接続である場合、モデム２１６はブロードバンドモデムであってもよい。無線モデムはまた、通信ネットワーク２２０への無線接続のために使用されてもよい。送受信装置２１６は送信機１１６及び受信機１３２の機能を提供することができ、通信チャネル１２０は、接続２２１内に具現化することができる。
【００４５】
コンピュータモジュール２０１は、典型的には少なくとも１つのプロセッサユニット２０５と、メモリユニット２０６とを含む。例えば、メモリユニット２０６は、半導体ＲＡＭ(random access memory)及び半導体ＲＯＭ(read only memory)を有することができる。コンピュータモジュール２０１は、ビデオディスプレイ２１４、スピーカ２１７、及びマイクロフォン２８０に結合するオーディオビデオインタフェース２０７、キーボード２０２、マウス２０３、スキャナ２２６、カメラ２２７、及びオプションとしてジョイスティック又は他のヒューマンインタフェース装置（不図示）に結合するＩ／Ｏインタフェース２１３、並びに外部モデム２１６及びプリンタ２１５のためのインタフェース２０８を含む、いくつかの入出力（Ｉ／Ｏ）インタフェースも含む。オーディオビデオインタフェース２０７からコンピュータモニタ２１４への信号は一般に、コンピュータグラフィックスカードの出力であり、「スクリーンコンテンツ」の一例を提供する。いくつかの実装例では、モデム２１６がコンピュータモジュール２０１内に、例えばインタフェース２０８内に組み込まれてもよい。コンピュータモジュール２０１は、ローカルエリアネットワーク（ＬＡＮ）として知られるローカルエリア通信ネットワーク２２２への接続２２３を介したコンピュータシステム２００の結合を可能にするローカルネットワークインタフェース２１１も有する。図２Ａに示すように、ローカル通信ネットワーク２２２は、典型的にはいわゆる「ファイアウォール」装置又は同様の機能の装置を含む接続２２４を介して、ワイドネットワーク２２０に結合してもよい。ローカルネットワークインタフェース２１１は、イーサネット（登録商標）回路カード、ブルートゥース（登録商標）ワイヤレス構成、又はＩＥＥＥ８０２．１１ワイヤレス構成を備えることができるが、インタフェース２１１として多数の他のタイプのインタフェースを実施することができる。ローカルネットワークインタフェース２１１はまた、送信機１１６の機能性を提供してもよく、受信機１３２及び通信チャネル１２０はまた、ローカル通信ネットワーク２２２において具現化されてもよい。
【００４６】
Ｉ／Ｏインタフェース２０８及び２１３はシリアル接続及びパラレル接続のいずれか又は両方を提供してもよく、前者は、典型的にはユニバーサルシリアルバス（ＵＳＢ）規格に従って実装され、対応するＵＳＢコネクタ（不図示）を有する。記憶装置２０９が提供され、典型的にはハードディスクドライブ（ＨＤＤ）２１０を含む。フロッピーディスクドライブ及び磁気テープドライブ（不図示）のような他の記憶装置を使用することもできる。光学ディスクドライブ２１２は、典型的にはデータの不揮発性ソースとして機能するように設けられる。例えば、光学ディスク（例えば、ＣＤ−ＲＯＭ、ＤＶＤ、ブルーレイディスク（登録商標））、ＵＳＢ−ＲＡＭ、携帯型、外部ハードドライブドライブ、及びフロッピーディスクは、コンピュータシステム２００への適切なデータソースとして使用されてもよい。典型的には、ＨＤＤ２１０、光学ドライブ２１２、ネットワーク２２０及び２２２のうちの任意のものは、ビデオソース１１２として、又はディスプレイ２１４を介して再生するために復号ビデオデータが記憶される宛先として動作するように構成されてもよい。システム１００のソース装置１１０及び宛先装置１３０、又はシステム１００のソース装置１１０及び宛先装置１３０は、コンピュータシステム２００内で実現されてもよい。
【００４７】
コンピュータモジュール２０１のコンポーネント２０５〜２１３は、典型的には相互接続されたバス２０４を介して、当業者に知られているコンピュータシステム２００の従来の動作モードをもたらす方法で通信する。例えば、プロセッサ２０５は、接続２１８を使用してシステムバス２０４に結合される。同様に、メモリ２０６及び光学ディスクドライブ２１２は、接続２１９によってシステムバス２０４に結合される。説明された構成が実行され得るコンピュータの例には、ＩＢＭ−ＰＣ及び互換機、Ｓｕｎ  ＳＰＡＲＣｓｔａｔｉｏｎｓ、Ａｐｐｌｅ  Ｍａｃ（登録商標）又は類似のコンピュータシステムが含まれる。
【００４８】
適切であるか又は望まれる場合には、ビデオ符号化器１１４及びビデオ復号器１３４、並びに以下で説明する方法はコンピュータシステム２００を使用して実装することができ、ビデオ符号化器１１４、ビデオ復号器１３４、及び以下で説明する方法は、コンピュータシステム２００内で実行可能な１つ又は複数のソフトウェアアプリケーションプログラム２３３として実装してもよい。特に、ビデオ符号化器１１４、ビデオ復号器１３４、及び説明された方法のステップは、コンピュータシステム２００内で実行されるソフトウェア２３３内の命令２３１（図２Ｂ参照）によって成し遂げられる。ソフトウェア命令２３１は、それぞれが１つ又は複数の特定のタスクを実行するための１つ又は複数のコードモジュールとして形成されてもよい。
【００４９】
ソフトウェアはまた、２つの別個の部分に分割されてもよく、ここで第１の部分及び対応するコードモジュールは説明された方法を実行し、第２の部分及び対応するコードモジュールは第１の部分とユーザとの間のユーザインタフェースを管理する。ソフトウェアは例えば、以下に記載される記憶装置を含むコンピュータ可読媒体に記憶されてもよい。ソフトウェアは、コンピュータ可読媒体からコンピュータシステム２００にロードされ、次いで、コンピュータシステム２００によって実行される。コンピュータ可読媒体に記録されたそのようなソフトウェア又はコンピュータプログラムを有するコンピュータ可読媒体は、コンピュータプログラム製品である。コンピュータシステム２００におけるコンピュータプログラム製品の使用は、ビデオ符号化器１１４、ビデオ復号器１３４、及び説明した方法を実装するための有利な装置をもたらすことが好ましい。
【００５０】
ソフトウェア２３３は、典型的にはＨＤＤ２１０又はメモリ２０６に格納される。ソフトウェアは、コンピュータ可読媒体からコンピュータシステム２００にロードされ、コンピュータシステム２００によって実行される。したがって、例えば、ソフトウェア２３３は光学ディスクドライブ２１２によって読み取られる光学的に読み取り可能なディスク記憶媒体（例えば、ＣＤ−ＲＯＭ）２２５に記憶されてもよい。
【００５１】
いくつかの例において、アプリケーションプログラム２３３は１つ以上のＣＤ−ＲＯＭ２２５に符号化されてユーザに供給され、対応するドライブ２１２を介して読み取られてもよいし、代わりに、ユーザによってネットワーク２２０又は２２２から読み取られてもよい。さらに、ソフトウェアは、他のコンピュータ可読媒体からコンピュータシステム２００にロードすることもできる。コンピュータ可読記憶媒体は実行及び／又は処理のために、記録された命令及び／又はデータをコンピュータシステム２００に提供する任意の非一時的な有形記憶媒体を指す。そのような記憶媒体の例には、装置がコンピュータモジュール２０１の内部にあるか外部にあるかにはかかわらず、フロッピーディスク、磁気テープ、ＣＤ−ＲＯＭ、ＤＶＤ、ブルーレイディスク（登録商標）、ハードディスクドライブ、ＲＯＭ又は集積回路、ＵＳＢメモリ、光磁気ディスク、又はＰＣＭＣＩＡカードなどのコンピュータ可読カードを含む。コンピュータモジュール２０１へのソフトウェア、アプリケーションプログラム、命令及び／又はビデオデータ又は符号化ビデオデータの提供にも関与し得る一時的又は非有形のコンピュータ可読伝送媒体の例には、無線又は赤外線伝送チャネル、並びに別のコンピュータ又はネットワーク化された装置へのネットワーク接続、並びに電子メール伝送及びウェブサイトなどに記録された情報を含むインターネット又はイントラネットが含まれる。
【００５２】
アプリケーションプログラム２３３の第２の部分及び上述の対応するコードモジュールは、ディスプレイ２１４上にレンダリング又は表現される１つ又は複数のグラフィカルユーザインタフェース（ＧＵＩ）を実装するために実行することができる。典型的にはキーボード２０２及びマウス２０３の操作を通じて、コンピュータシステム２００のユーザ及びアプリケーションは、機能的に適応可能な方法でインタフェースを操作して、ＧＵＩに関連付けられたアプリケーションに制御コマンド及び／又は入力を提供することができる。スピーカ２１７を介して出力されるスピーチプロンプト及びマイクロフォン２８０を介して入力されるユーザ音声コマンドを利用するオーディオインタフェースなど、他の形態の機能的に適応可能なユーザインタフェースを実装することもできる。
【００５３】
図２Ｂは、プロセッサ２０５及び「メモリ」２３４の詳細な概略ブロック図である。メモリ２３４は、図２Ａのコンピュータモジュール２０１がアクセス可能な全てのメモリモジュール（ＨＤＤ２０９及び半導体メモリ２０６を含む）の論理集約体を表す。
【００５４】
コンピュータモジュール２０１が最初に電源を入れられると、パワーオン自己テスト（ＰＯＳＴ）プログラム２５０を実行する。ＰＯＳＴプログラム２５０は、典型的には図２Ａの半導体メモリ２０６のＲＯＭ２４９に記憶される。ソフトウェアを格納するＲＯＭ２４９などのハードウェア装置は、時にはファームウェアと呼ばれることがある。ＰＯＳＴプログラム２５０はコンピュータモジュール２０１内のハードウェアを検査して、適切な機能を保証し、典型的には、正しい動作のために、プロセッサ２０５、メモリ２３４（２０９、２０６）、及び、典型的にはＲＯＭ２４９に記憶されている基本入出力システムソフトウェア（ＢＩＯＳ）モジュール２５１を検査する。ＰＯＳＴプログラム２５０が正常に実行されると、ＢＩＯＳ２５１は、図２Ａのハードディスクドライブ２１０を起動する。ハードディスクドライブ２１０の起動により、ハードディスクドライブ２１０に常駐するブートストラップローダプログラム２５２がプロセッサ２０５を介して実行される。これにより、オペレーティングシステム２５３がＲＡＭメモリ２０６にロードされ、ＲＡＭメモリ２０６上でオペレーティングシステム２５３が動作を開始する。オペレーティングシステム２５３はプロセッサ管理、メモリ管理、装置管理、記憶管理、ソフトウェアアプリケーションインタフェース、及び汎用ユーザインタフェースを含む様々な高レベル機能を実行するために、プロセッサ２０５によって実行可能なシステムレベルアプリケーションである。
【００５５】
オペレーティングシステム２５３は、メモリ２３４（２０９、２０６）を管理して、コンピュータモジュール２０１上で実行される各プロセス又はアプリケーションが別のプロセスに割り当てられたメモリと衝突することなく実行するのに十分なメモリを有することを保証する。さらに、図２Ａのコンピュータシステム２００で利用可能な異なるタイプのメモリは各プロセスが効果的に実行できるように、適切に使用される必要がある。したがって、集約メモリ２３４は、（別に述べられない限り）メモリの特定のセグメントがどのように割り当てられるかを示すことを意図するものではなく、むしろ、コンピュータシステム２００によってアクセス可能なメモリ及びこれがどのように使用されるかの一般的なビューを提供することを意図するものである。
【００５６】
図２Ｂに示すように、プロセッサ２０５は、制御ユニット２３９と、算術論理ユニット（ＡＬＵ）２４０と、キャッシュメモリと呼ばれることもあるローカル又は内部メモリ２４８とを含むいくつかの機能モジュールを含む。キャッシュメモリ２４８は、典型的にはレジスタセクション内に多数の記憶レジスタ２４４〜２４６を含む。１つ以上の内部バス２４１は、これらの機能モジュールを機能的に相互接続する。プロセッサ２０５は、通常、接続２１８を使用してシステムバス２０４を介して外部装置と通信するための１つ又は複数のインタフェース２４２も有する。メモリ２３４は、接続２１９を使用してバス２０４に結合される。
【００５７】
アプリケーションプログラム２３３は、条件付き分岐及びループ命令を含むことができる一連の命令２３１を含む。プログラム２３３は、プログラム２３３の実行に使用されるデータ２３２を含むこともできる。命令２３１及びデータ２３２は、それぞれメモリ位置２２８、２２９、２３０及び２３５、２３６、２３７に記憶される。指示２３１とメモリ位置２２８〜２３０の相対的なサイズに応じて、メモリ位置２３０に示される命令によって示されるように、特定の命令が単一のメモリ位置に記憶されてもよい。あるいは、メモリ位置２２８及び２２９に示される命令セグメントによって示されるように、各々が別個のメモリ位置に記憶されるいくつかの部分へと命令がセグメント化されてもよい。
【００５８】
一般に、プロセッサ２０５には、その中で実行される命令のセットが与えられる。プロセッサ２０５は次の入力を待ち、プロセッサ２０５は、別の命令セットを実行することによって、この入力に応答する。各入力は入力装置２０２、２０３のうちの１つ又は複数によって生成されたデータ、ネットワーク２２０、２０２のうちの１つを介して外部ソースから受信されたデータ、記憶装置２０６、２０９のうちの１つから取り出されたデータ、又は対応するリーダ２１２に挿入された記憶媒体２２５から取り出されたデータを含む、いくつかのソースのうちの１つ又は複数から与えられてもよく、全て図２Ａに示されている。命令のセットの実行は、いくつかの場合にはデータの出力をもたらすかもしれない。実行は、データ又は変数をメモリ２３４に記憶することも含んでもよい。
【００５９】
ビデオ符号化器１１４、ビデオ復号器１３４、及び説明した方法は、メモリ２３４内の対応するメモリ位置２５５、２５６、２５７に記憶された入力変数２５４を使用することができる。ビデオ符号化器１１４、ビデオ復号器１３４及び上記の方法は出力変数２６１を生成し、これらはメモリ２３４内の対応するメモリ位置２６２、２６３、２６４に記憶される。中間変数２５８は、メモリ位置２５９、２６０、２６６、２６７に記憶されてもよい。
【００６０】
図２Ｂのプロセッサ２０５を参照すると、レジスタ２４４、２４５、２４６、算術論理ユニット（ＡＬＵ）２４０、及び制御ユニット２３９は、プログラム２３３を構成する命令セット内の全ての命令についての「フェッチ、復号、及び実行」サイクルを実行するのに必要なマイクロオペレーションのシーケンスを実行するために協働する。各フェッチ、復号、及び実行サイクルは以下を含む：
（ａ）メモリ位置２２８、２２９、２３０から命令２３１をフェッチ又は読み出すフェッチ動作、
（ｂ）制御ユニット２３９が、どの命令がフェッチされたかを判定する復号動作、及び、
（ｃ）制御ユニット２３９及び／又はＡＬＵ２４０が命令を実行する実行動作。
【００６１】
その後、次の命令のためのさらなるフェッチ、復号、及び実行サイクルが実行されてもよい。同様に、制御ユニット２３９がメモリ位置２３２に値を保存し又は書き込む保存サイクルを実行してもよい。
【００６２】
説明される図１１及び図１２の方法における各ステップ又はサブプロセスは、プログラム２３３の１つ以上のセグメントに関連付けられ、典型的には、プロセッサ２０５のレジスタ部２４４、２４５、２４７、ＡＬＵ２４０及び制御ユニット２３９が、プログラム２３３の言及されたセグメントについての命令セット内の各命令につき、フェッチ、復号、及び実行サイクルを実行するように協働することによって実行される。
【００６３】
図３Ａは、ビデオデータ１１３のプリシンクト３００に対するウェーブレットサブバンド分解を示す概略ブロック図である。ビデオデータ１１３の各フレームは複数のプリシンクトに分割され、各プリシンクトは一般に、高さが２画素ラインであり、フレームのある部分の幅（フレーム幅全体まで）である。プリシンクトは２つの「ライン」に分割され、サブバンドが各ラインに割り当てられる。ウェーブレット係数は係数領域にあり、したがって、２つのライン（群）は、プリシンクトを２つの画素ラインに空間分割するのではなく、サブバンドの２つの群を定義する。サブバンドをラインにグループ化することは、図６を参照して説明されるように、ビットストリーム構造にも影響を及ぼす。フレームは、フレーム内の水平方向に隣接するプリシンクトの全てにわたって適用されるウェーブレット変換を実行することによって符号化される。低レイテンシ動作の場合、ウェーブレット変換は、フレームの上部から下部に向かって順次適用される。ウェーブレット変換は図３Ｂを参照してさらに説明されるように、各範囲において特定の分解深さで、水平及び垂直の両方に適用される。例えば、プリシンクトは最初に、１つのレベルを垂直に使用して分解され、高周波係数セット及び低周波係数セットをもたらすことができる。結果として得られる高周波係数は次に、さらに水平方向に１回分解され、図３Ａにおいて「ＬＨ０」及び「ＨＨ０」として識別される２つのサブバンドをもたらし、「ライン１」を形成する。結果として生じる低周波係数はさらに水平方向に５回分解されてもよく、図３Ａにおいて「ＬＬ４」、「ＨＬ４」、「ＨＬ３」、「ＨＬ２」、「ＨＬ１」、及び「ＨＬＯ」として識別される６つのサブバンドをもたらし、「ライン０」を形成する。ビットストリームを復号するとき、ライン０サブバンドだけを処理し、ライン１サブバンドを廃棄することによって、フル画像のより低解像度の「代理」を得ることが可能である。ウェーブレット変換が適用される場合、結果として生じる係数の数は、水平方向又は垂直方向の分解の構成にかかわらず、変換されたサンプルの数に等しい。しかしながら、これらの係数の割り当ては、分解の構成に依存する。さらに、異なるサブバンドにおける係数の統計は著しく異なる。特に、分解階層において次第に深くなるサブバンドの低周波係数は、元のプリシンクトのローパスフィルタリングされたバージョンを形成し、フィルタリングの程度及びプリシンクト範囲に対応する「解像度」（サブバンド範囲）は、２の分解深さ乗にスケーリングされる。高周波サブバンドは、高周波サブバンド画像に加算することによって低解像度サブバンドがアップサンプリングされて品質を改善することができるという意味で、「残差」の形態を形成する。これは、ウェーブレット「合成」フィルタバンクの動作を伝える。
【００６４】
高い圧縮効率は主に、５つのレベルの水平分解と、ウェーブレット変換の高周波係数に存在する比較的低い残留エネルギーとに起因する。この複数の分解は、ビデオデータ１１３の各色チャネルに対して繰り返される。垂直分解のうちの比較的少ないレベル（例えば、１つ）に対する制約が、メザニンコーデックのための応用での低レイテンシ制約によって必要とされる。一般に、５／３ウェーブレットが使用される。１つのウェーブレット係数に寄与する空間サポート（サンプルの領域）は、ウェーブレットタイプ（例えば、５／３）及び選択された分解アーキテクチャに依存する。垂直方向において、５の空間サポートは、５行のサンプルがビデオ符号化器１１４にバッファされることを必要とする（すなわち、変換されるプリシンクトの上下のプリシンクトからのサンプルも必要とされる）。境界の近くで、空間サポートはフレームエッジを越えて拡がる。ウェーブレット変換のためのサポート要求を満たす値を提供するために、エッジサンプルが複製されるか、又はフレームが「反射」されて、フレームの範囲外の候補値を提供する。したがって、このような境界は、有限サイズのフレームという制約内でウェーブレット変換フィルタサポートを満たすこのような人工的方法によって生じる可能性がある、視覚的アーチファクトの潜在的なリスクを表す。視覚的アーチファクトの１つの結果は、出現してくるビデオフォーマットに見られるように、非常に大きなフレームサイズをサポートするときに生じる。より大きなビデオフォーマット（例えば、ＵＨＤ  ８Ｋ）をサポートするための一般的な方法は、各々がより小さなビデオフォーマット（例えば、ＵＨＤ  ４Ｋ）に従うタイルを使用することである。タイリングは、既存のコーデック及び伝送機構の再使用を可能にすることができる。また、タイリングはコーデックアーキテクチャをより大きなフォーマットにスケーリングすることができない場合に、より大きなフォーマットの符号化を可能にすることができる。例えば、ＵＨＤ  ８Ｋのようなフォーマットのサポートが必要とされる場合、ウェーブレット係数符号化のような本質的に順次的な動作の実装は容易ではない。タイル境界での目に見えるアーチファクトの可能性は非常に望ましくなく、特に、視覚的に無損失の圧縮を提供すると称するメザニンコードについて、このような応用のためにはタイリングを一般的に望ましくない解決策にしてしまう。
【００６５】
図３Ｂは、図３Ａのウェーブレット分解と一致するウェーブレット分析フィルタバンク３５０を示す概略ブロック図である。ビデオデータ１１３からのサンプル３５２は、垂直方向のフィルタリングを行うレベル０垂直フィルタバンク３５４への入力である。レベル０垂直フィルタバンク３５４は、１セットの高周波係数（「Ｈ」）及び１セットの低周波係数（「Ｈ」）を出力する。高周波係数セット（「Ｈ」）及び低周波係数セット（「Ｌ」）は、レベル０水平フィルタバンク３５６、レベル０水平フィルタバンク３５８、レベル１水平フィルタバンク３６０、レベル２水平フィルタバンク３６２、レベル３水平フィルタバンク３６４、及びレベル４水平フィルタバンク３６６によってさらにフィルタリングされる。結果として生じるサブバンド３７０は、図３Ａに示されるものと一致する。
【００６６】
図４は、量子化されていないウェーブレット係数４０２が、４つの群（例えば、係数群４０４、４０６及び４０８）に配置されている、サブバンド４００の一部を示す概略ブロック図である。複数の候補切り捨てレベル（例えば、４１４）も図４に示されている。係数の切り捨ては、ビデオデータ１１３と比較して、復号ビデオデータ１３５の忠実度を低下させる。係数の切り捨ては、制御可能なビットレートでの圧縮を可能にする。量子化されていないウェーブレット係数４０２の各々のバイナリ表現は、ビットプレーン４０３として示されている。量子化後の各係数に関連する符号ビットは、符号ビット４０１として示されている。特定の切り捨てレベルでの量子化の後、特定の切り捨てレベルについての係数値は、（たとえ対応するウェーブレット係数が非ゼロ値を有していたとしても）ゼロになり得る。例えば、群４０６内の量子化されていない係数値「１」は、切り捨てレベル４１４に量子化されたとき、ゼロの量子化値を有する。その結果、関連する符号ビットは存在しない（例えば、切り捨て演算が適用されなかった場合に符号ビットを含むことができるであろう、図示されたプレースホルダ４４０を参照されたい）。係数値がゼロになる切り捨てレベルについては、この係数に関連する符号ビットはない。係数に関連する符号ビットがない場合、そのようなビットは、ビットストリームに符号化される必要も、ビットストリームから復号される必要もない。したがって、符号ビットの符号化コストは、量子化されていない係数値及び適用される切り捨てレベルに依存する。ウェーブレットサブバンド内の全ての係数は、ビデオ符号化器１１４において、特定のビットプレーン、又は「切り捨てレベル」（例えば、ビットプレーン４１４）に量子化される。量子化処理は、２つのステップを有する。第１に、量子化されていない係数の大きさ（すなわち、量子化されていない係数４０２のうち１つの大きさ）からの量子化オフセットが加算される。量子化丸めオフセットは、１＜＜（ｎ−１）に等しく、ここで、ｎはサブバンドについての最低の符号化ビットプレーン（すなわち、切り捨てレベル）を示す。量子化オフセットはビデオ復号器１３４において係数を再構成するときに、再構成された値がビデオ符号化器１１４において見られた値により近くなり、切り捨ての適用から生じる精度の不可避的な損失を割り引くことを保証する。
【００６７】
所与の係数群（４つの係数を含む）を考えると、その中に含まれる係数は、バイナリで表される場合、「ビットプレーン」のリストを形成する。そして、ビットプレーンｎは４ビットを含み、各ビットは、４つの係数のうちの１つのビット位置ｎに対応する。最後に、特定の閾値を超えるビットプレーンはゼロ値のみを含む。この特定のビットプレーンのインデックスは、最上位ビット（ＭＳＢ）位置インデックスと呼ばれる。この最上位ビット（ＭＳＢ）プレーンインデックスでは、係数群に関連する４つのビットのうちの少なくとも１つはゼロではない。所与の係数群についてのＭＳＢ位置インデックスを超えるビットプレーンは、暗黙的にゼロであり、ビットストリームにおいて符号化される必要はない。サブバンド内の係数の全ての群を考慮すると、ＭＳＢ位置インデックスは、ここを超える全てのビット（例えば４１０）がゼロであることが知られており、したがって符号化される必要がない輪郭を形成する。次に、候補切り捨てレベル（例えば、４１４）を考慮すると、符号化される必要がある係数データビット４１２の領域が存在する。係数ビットは量子化オフセットの加算後に符号化され、量子化オフセットは候補切り捨てレベルに依存する。ビットプレーン４０３について図４に示されるビット値は、量子化の前のものである。このように、切り捨てが行われるより下のビットプレーン（すなわち、４１６）内に存在し得ることが分かる。候補切り捨てレベル（すなわち、４１６）より下のビットプレーンは、符号化ビットストリーム１１３において符号化されず、したがって廃棄される。
【００６８】
図４Ａには、全ての関連する量子化されていない係数が、この係数群についてどのビットプレーンも符号化する必要がないほどに十分に低い大きさを有しているような係数群は示されていない。このような係数群の場合、ゼロ値のビット４１０は、サブバンドの切り捨てレベルにまで延びる。このような係数群は、「符号化されていない係数群」と呼ばれることがある。符号化されていない係数は、係数群のＭＳＢ位置を切り捨てレベルと比較することによって検出される。さらに、符号化されていない係数群は、関連する符号ビットを有さないことが知られている。このような符号ビットが存在しないことは、上述した比較動作によって容易に検出される。対照的に、４４０のような符号ビットの不在を検出することは、各切り捨てレベルでの量子化を必要とし、これはより計算コストのかかる動作である。
【００６９】
ＭＳＢ位置インデックスは一般に、各サブバンドに拡がる水平予測などの予測方式を使用して符号化される。したがって、デルタ値（例えば、４２０及び４２２によって示されるＭＳＢ位置の変化をシグナリングする）が符号化される。また、上のプリシンクトからの対応する係数群のＭＳＢ位置インデックスを用いてＭＳＢ位置インデックスを予測する垂直予測方式も利用可能である。サブバンド内の各ＭＳＢ位置が４ビット固定長符号ワードを使用して符号化される「ＲＡＷモード」も利用可能である。他の全ての利用可能なモードがより高い符号化コストをもたらす場合、符号化器はＲＡＷモードを選択する必要があるので、ＲＡＷモードは、ＭＳＢ位置を符号化するコストついての最も良くない場合の限界を加える。１つ又は複数の係数群のＭＳＢ位置がサブバンドの切り捨てレベルより下である場合、これらの係数群についてはどのビットプレーンも符号化されない。また、このような係数群についてのＭＳＢ位置を符号化する代わりに、切り捨てレベルを超えるＭＳＢ位置を有する次の係数群へとスキップする符号化モードが使用される。このことは、符号化コストを低減する。
【００７０】
ビデオ符号化器１１４が各候補切り捨てレベルをテストするとき、正しい符号化コストを生成するために、符号ビットが存在しないことを知る必要がある。符号ビットが存在しないことを判定するには、量子化された係数が非ゼロである（符号ビットが存在する）か、ゼロである（符号ビットが存在しない）かを知る必要がある。量子化された係数値を判定するために、量子化のための各切り捨てレベルについて、異なる量子化丸めオフセットが適用される。異なる量子化丸めオフセットを適用すると、加算及び他の中間計算のために複雑さが増加する。テストの結果として、各係数の有意性が判定されることができ、従って、関連する符号ビットの存在が判定されることができる。図７及び図８を参照してさらに説明されるように、符号ビットの扱いに関して、システム１００における複雑さの低減が達成される。
【００７１】
プリシンクト内の各サブバンドに対して独立した切り捨てレベルを有する代わりに、サブバンドに対する切り捨てレベルはグローバル閾値に相対的に判定され、これは「シナリオ」又は「プリシンクト量子化」と呼ぶことができる。プリシンクト量子化は、プリシンクトヘッダにおいてシグナリングされる。次に、各サブバンドの切り捨てレベルは、サブバンド固有のオフセットをシナリオに適用することによって判定される。サブバンド固有のオフセットは「ゲイン」のリストとして「重みテーブル」においてシグナリングされ、「ゲインテーブル」を形成し、サブバンドごとに１つのゲイン又はオフセットがシグナリングされる。ビデオ符号化器１１４には、所定の重みテーブルを供給することができる。重みテーブルは、ビットストリーム内で符号化された各ピクチャについて、ピクチャの第１のスライスの前にビットストリーム内に現れる必要がある。ゲインテーブルオフセットは、ビットの比例した割り当て、したがって異なるサブバンド間における係数の相対的な精度が変更されることを可能とする。特に、ゲインは、考慮されるサブバンド分解階層の深さから生じる各サブバンドに固有のゲインの補償を可能にする。このような補償は、全てのサブバンドにわたる係数の一様な精度をもたらす。一様な精度は、復号ビデオのＰＳＮＲを最大化することにつながる。あるいは、特定のサブバンドにはより高い精度を与えることができる。主観的な品質により大きく寄与すると考えられるサブバンドには、より高い精度を与えることができる。どのサブバンドがより高い精度を与えられるべきかの判定は、視覚知覚モデル及び主観的実験のいずれか又は両方を使用してなされ得る。結果として生じるオフセットのセットは、「視覚的重み付け」と呼ばれる。したがって、シナリオは量子化のための、したがって、例えば、プリシンクト全体のビットレートのための粗いレベルの制御を提供し、シナリオにおける各低減は、プリシンクト全体にわたって係数当たり１ビットを導入する。
【００７２】
「プリシンクトリファインメント」として知られる追加の制御は、プリシンクト内のサブバンドのサブセットの追加のビットプレーンを符号化することを可能にする。サブバンドはＰＳＮＲへのそれらの寄与に関して（寄与が減少する順序で）ランク付けされ、このリファインメントは、サブバンドのランク付けされたリストの最初のｎ個のサブバンドについて１つの追加のビットプレーンを符号化することを可能にする。ランキングは、優先順位のリストを介して重みテーブルにおいてシグナリングされる。したがって、プリシンクト内の符号化された係数の量子化のための、より精細な制御が提供される。このように、各プリシンクトにおける係数の量子化は、シナリオ及びリファインメントという２つのパラメータを介して制御される。さらに、図５を参照して説明されるように、プリシンクトが複数の列に分割される場合、各列はその列に関連する係数（すなわち、それぞれの列に存在する各サブバンド内の係数群のサブセット）の量子化に対する独立した制御を有する。
【００７３】
係数を４つのセットにグループ化し、様々なフレーム幅の可能性がある場合、いくつかの係数群（例えば、任意のサブバンドにおける最も右側のもの）が、４つ未満の係数を含む可能性がある。そのような係数群は、いくらかのビットレートを犠牲にして、必要な群サイズに達するために追加の値でパディングされてもよい。あるいは、このような場合には群サイズを変えてもよい。群サイズを変更することは、処理の最小単位がもはや常に４ビットではなくなるので、追加の複雑さを必要とする。例えば、バレルシフタ論理が必要とされるかもしれない。したがって、プリシンクトサイズを、可能な場合には４つの係数群のみを使用するように制約することは有益である。複雑さの低減を達成するためには、そのような制約は全てのサブバンドに置かれる必要があり、したがって、ウェーブレット分解の最も深いレベルは最も厳しい制約を設定する。制約は、プリシンクトサイズを特定の値に制限する形式である。例えば、４つの群と、水平方向への５レベルの分解を用いる場合、プリシンクト幅は４×２５＝１２８サンプルの倍数でなければならないという制約がある。この制約は、図５を参照してさらに説明される。
【００７４】
図５はフレーム５００を複数の列に分割することを示す概略ブロック図であり、「柱状配置」と呼ぶことができる。１つの列が使用される場合、プリシンクトはフレームの幅全体に及ぶ。複数の列が存在する場合には、複数のプリシンクトが（通常のプリシンクトの垂直配列を越えて）水平方向に一列に配置される。「列０」〜「列３」とラベル付けされた４つの列が図５に示されている。フレーム５００は、「８Ｋ」解像度（７６８０×４３２０画素）を有する。所与のフレームレートにおいて、フレーム５００の「８Ｋ」解像度は、４Ｋ解像度（３８４０×２１６０画素）と比較して４倍の画素レートに等しい。４つの「４Ｋ」タイルを使用する、符号化のためのタイルベースのアプローチが可能である。しかしながら、タイルベースのアプローチはフレーム高さの少なくとも半分というかなりのバッファリングを必要とし、メザニンコーデックの低レイテンシ動作要件に違反する。低レイテンシ動作を維持するために、「柱状」モードで動作することが好ましい。例えば、１９２０×４３２０画素のサイズの４つのタイルサイズの配置が可能である。また、フレーム５００は、多数のスライスに分割される（図５には「スライス０」から「スライス４」までの５つのスライスが示されている）。スライス間の境界は破線（例えば、５１４）で示されている。スライス境界はフレームの幅にわたり、特に、スライス境界は全ての列にわたり、所与のスライス境界は、全ての列にわたって同じ垂直位置で生じる。
【００７５】
図５を参照して上述した柱状配置は、低レイテンシ動作を可能にする。柱状配置、及びその結果としてのプリシンクトの行の存在は、メザニンコーデックの４つのインスタンスを使用して実現することができる。１つの考慮事項は、４つのインスタンスの同期が提供される必要があることである。さらに、結果として生じる４つのビットストリームは、ビデオ符号化器１１４の各インスタンスからビデオ復号器１３４の各インスタンスに同期して転送される必要がある。４つのビットストリームは単一の通信チャネル１２０上に時分割多重化（ＴＤＭ）されてもよく、通信チャネル１２０への配信及び通信チャネル１２０からの抽出のために各ビットストリームのバッファリング部分に適応するために、いくらかのレイテンシが追加される。４つの列を同期させるための付加的なオーバヘッドなしに、外部チャネル同期（すなわち、ＳＤＩリンク上の垂直同期）に関するタイミングは、符号化器１１４及び復号器１３４の両方によってアプリオリに知られる必要がある。ＴＤＭアプローチは、より高いビデオフォーマットをサポートするために、各々がより低いビデオフォーマットをサポートする既存の符号化器及び復号器モジュールの再使用を修正なしに可能にする。ＴＤＭアプローチは、時分割多重化及び逆多重化をサポートするために、レイテンシが増加する（例えば、符号化器及び復号器において１ラインが追加される）という犠牲を払って、非圧縮及び圧縮ドメインにおける時分割多重化を実行するために必要なラッピング論理を必要とするだけであり、さらに、ＴＤＭアプローチは、隣接する列間のインタフェースに境界を導入する結果となるかもしれない。各符号化器及び復号器インスタンス内では、現在の列の外側に位置するサンプルについてのウェーブレットフィルタサポートを提供するために、サンプルの位置が隣接する列内にある場合であっても、サンプル拡張処理が適用される。サンプル拡張処理は、列境界における視覚的アーチファクトの導入のリスクがある。
【００７６】
列境界における視覚的アーチファクトのリスクを回避するための１つの軽減方法は、フレームの幅全体にわたってウェーブレット変換を実行するが、エントロピー符号化などの他のステージについては列ベースのアプローチを使用することである。ウェーブレット変換内の依存性は分解階層に従って畳み込まれたフィルタサポートに空間的に限定されるため、フレームの幅全体にわたってウェーブレット変換を実行するが、他の処理ステージ（すなわち、量子化及びエントロピー符号化）では列ベースのアプローチを使用することが可能である。フレームに及ぶ順序依存性がないので、ウェーブレット変換をセグメントにおいて同時に実装することが可能である。次に、可変長セグメントをもたらす、圧縮領域における符号化された送信を考慮してもよい。上述したように、アプリオリのタイミングによる圧縮ビットストリームの時分割多重化は、同時固定ビットレートチャネルを介して搬送される可変長の圧縮列に適応するための余分なレイテンシをもたらす。１つの構成では、プリシンクトが列として符号化されることを可能にするビットストリームシンタックスが構築されてもよい。順次エントロピー符号化経路を、フレーム幅全体から、集合的にこのフレームに及ぶより小さい列領域に分割することにより、ビデオ符号化器及び復号器のこれらの重要な部分の並列処理が可能になる。各列は、それぞれが限定的な最も良くない場合の解析スループット能力を有するエントロピー符号化モジュールによって処理され、それぞれは固定ビットレートで動作する。列の固定ビットレートは、全体的な圧縮ビットレートがフレーム幅に対する列幅の比率に比例してスケーリングされたものに設定される。各列のビットレートの独立した制御を達成するために、プリシンクトヘッダ内の各列に対して別々のシナリオ及びリファインメント値がシグナリングされる。次に、各エントロピー符号化器及び復号器の最も良くない場合の符号化及び解析能力は、使用されるエントロピー符号化器及びエントロピー復号器が１つしかない場合のようにフレーム全体のビットレートに限定される代わりに、列のビットレートに限定される。
【００７７】
水平分解の最も深いレベル（すなわち、第５のレベル）では、各係数が（ウェーブレットフィルタのローパス部分の最大の大きさの係数を考慮して）水平方向の３２画素と一致する。次に、係数を４つのセットにグループ化すると、１２８画素幅の領域が、５番目の最高分解レベルで１つの係数群と一致する。フレーム右境界上で（任意の分解レベルで）発生する可能性がある部分的に占有された係数群の事例を低減するために、列境界は、左フレーム境界に対して１２８画素の倍数に制限される。
【００７８】
図６は、解析スループットを向上させるための符号化データの複数の列を有する圧縮ビデオデータのフレームを表すためのコードストリームシンタックス６００を示す概略ブロック図である。各圧縮フレームは「コードストリーム」と呼ばれ、連結されたコードストリームのシーケンスはビットストリームを形成する。各コードストリームには画像ヘッダ６１１０が含まれており、これは画像サイズ、ビット深さ、符号化ツール構成（水平及び垂直のウェーブレット変換深さ、ウェーブレットカーネル）を含む画像レベルパラメータを定義する。具体的には、ピクチャヘッダ６１１０がフレームに使用される列の数、及び列境界を定義する。列の数を指定すると、最も左の列以外の列の列水平位置のリストがピクチャヘッダ６１１０内に符号化される（これは暗黙的にフレームの左に位置合わせされる）。このリスト内の各列の左位置は、ルマサンプルの単位で指定されてもよく、フレーム内の列位置決めにおいて最大の柔軟性を提供する。１つの構成では、各列の左位置が、ＭＳＢ位置群サイズ（すなわち、４）に、２の水平ウェーブレット分解深度乗（すなわち、一般に５）を乗じた単位で指定される。したがって、ピクチャヘッダ６００に指定されたデフォルト構成は、１２８ルマサンプルの単位となる。このような構成は、最も右側の列以外の全ての列について、これらの列の係数群内の各係数がウェーブレット変換ステージから得られる係数に対応することを保証する。水平分解の最深レベルまで、係数群サイズと揃っていないフレームサイズに起因して、最も右側の列についてのみ、パディング又は切り捨てが必要になることがある。さらに別の構成では、列の左位置がリスト内で明示的に符号化されず、代わりに推論される。列幅が推定される場合、フレームの幅が列の数で割られ、おおよその幅が得られる。この近似列幅から、近似列境界が導出される。次に、各近似列境界を列幅粒度（一般に１２８ルマサンプル）に丸めて、最終的な列境界を得る。
【００７９】
いくつかの例を以下に示す:
１９２０は３列に分割され、１９２０／３＝６４０列幅となる。６４０／１２８＝５であるので、列幅は３つの列全てについて正確に６４０画素であり、水平オフセットは０、６４０、及び１２８０である。
２０４８は３列に分割され、２０４８／３＝６８２．６７列幅となる。６８２．６７／１２８＝５．３３であり、列幅は次のとおりである。
列０：オフセット０、幅＝６４０画素(５．３３が５へと四捨五入され、１２８が乗算される）
列１：オフセット６４０、幅＝１４０８−６４０＝７６８画素（２×５．３３は１０．６６を与え、次に１１へと丸められ、１２８が乗算されることで、絶対列境界エッジが見つけられる。次に、列０の右端エッジからのオフセットが引かれ、列１の幅が見つられる）
列１：オフセット＝１４０８、幅＝６４０画素（フレーム幅の残りを消費するように設定）
【００８０】
ＨＤ  ２Ｋ、ＵＨＤ  ４Ｋ、及びＵＨＤ  ８Ｋ（それぞれ、１９２０、３８４０、７６８０幅）については、列の数が少ない（例えば、２から５）場合、列は１２８画素幅の倍数であることに留意されたい。
【００８１】
これらの推論された（又は「暗黙である」）境界はいくつかの有利な特性を有する。第１に、列境界開始位置を制約することは、最も右側の列以外の列においてあらゆる部分的に使用された係数群を除く。各係数群は、所与の係数群について、４つの利用可能な係数のうちの１、２、又は３個が有効係数である場合を扱う必要がないので、このように除くことは、これらの列に関連する論理を単純化することができる。しかしながら、フレーム幅、従って最も右側の列幅は、他の方法で制約されていないので、このような論理は最も右側の列に必要とされる。１０８０ｐ  ＨＤ（１９２０×１０８０解像度）及び２１６０ｐ  ＵＨＤ（３８４０×２１６０解像度）などの一般的なフォーマットでは、１２８ルマサンプルという列幅のデフォルトの粒度は、部分的にポピュレートされた係数群を導入しない。したがって、このようなフォーマットを使用するように制約された実装では、ピクチャヘッダが上述の一般的に使用されるフォーマットで指定されたものから逸脱しているフレーム幅のシグナリングを可能にする場合であっても、最も右側の列におけるこのような論理もまた必要ではない。
【００８２】
第２に、明示的な列位置は、ピクチャヘッダにおいてシグナリングされない。列の数が変化し得るので、各列に対するオフセットがシグナリングされる場合、これは、オフセットの可変長リストをシグナリングすることになる。実装を容易にするために、ピクチャヘッダは固定長を有することが好ましい。特に、ピクチャヘッダの長さは、複雑さを低減するために、ピクチャヘッダの内容を解析する必要なしに知ることができることが好ましい。固定長ではなく、可変サイズのリストがピクチャヘッダに含まれる場合、そのような解析ステップが必要になる。固定長ピクチャヘッダを維持することは、例えば、ピクチャヘッダの長さを発見するためにピクチャヘッダの内容を解析する必要なく、ピクチャヘッダを認識し、コードストリームの次のセクションに移動することを可能にすることによって、コードストリームを解析するためのいくつかの利点を提供する。さらに、暗黙の境界は、フレームにわたって列幅を実質的に等しくするように定義される。このように等しくすることは、各列のエントロピー符号化及び復号ステージの最も良くない場合のスループット要件を低減する。
【００８３】
システム１００の１つの構成では、ＵＨＤ  ８Ｋフォーマットが使用されているとき、４つの列という最少列制約が課される。その結果、各列の圧縮データのスループットは、（クロマフォーマット及びフレームレートなどの他の要因が変更されずに維持されているとき）ＵＨＤ  ４Ｋフォーマットが使用されているときの圧縮データのスループットを超えない。さらに、ＵＨＤ  ４Ｋのための設計の一部、すなわちエントロピー符号化器及び復号器を実装するハードウェア設計は、ＵＨＤ  ８Ｋサポートのために再使用され得る。ＵＨＤ  ４Ｋの場合のためのこのようなハードウェア設計は一般に、タイミング要求に関して、例えばＸｉｌｉｎｘ  Ａｒｔｉｘ  ＦＰＧＡのようなターゲット技術の能力を既に完全に利用しており、したがって、実質的により能力のあるターゲット技術（存在しないか、又は非経済的であり得る）を使用することなく、より高いフォーマットにスケーリングすることができない。
【００８４】
重みテーブル６１１４は、各サブバンドのゲイン及び優先度を指定する。ゲインは、適用可能なサブバンド内の全ての係数に適用されるゲインを指定する。ゲインは、フレームの全てのプリシンクト及び全ての列において、適用可能なサブバンドに適用される。優先度は図４を参照して説明したように、リファインメントビットプレーンの挿入のためのサブバンドの順序を設定するために使用される。ゲインと同様に、優先順位のリストは、フレーム毎に多くても１回シグナリングされ、フレーム内の全ての列内の全てのプリシンクトに適用される。
【００８５】
フレームの残りは、スライス６１１４、６１１８のようなスライスのシーケンスとして圧縮された形式で記憶される。スライスは、図５を参照して示されるようにグループ化されたプリシンクトの集合を保持する。スライスは並列性のための１つのツールを形成し、フレーム内の異なるスライスの符号化及び復号のための程度の独立性を提供する。隣接するプリシンクトのシーケンス（各々がフレーム幅にわたる）は、スライスにグループ化される。従って、スライスはフレームを水平方向に分割する。並列処理の場合、独立した処理要素は、異なるスライスを同時に処理することができる。この同時処理はスライスにわたる程度のバッファリングを意味し、したがって、要求される３２ラインのエンドツーエンドレイテンシを超えるレイテンシをもたらす。また、フレームの柱状配置は、追加のレイテンシを導入することなく、ソフトウェア実装を含む並列性を達成することができる。特に、各列について動作する独立した処理要素は、プリシンクトの行内の異なるプリシンクトを並列に符号化又は復号する動作をすることができる。独立した処理要素はプリシンクトの行内の各プリシンクトの処理の完了が同時であり、独立した処理要素が同期した方法でプリシンクトの次の行に進むことを可能にするように、適切な時間合わせをされる必要がある。この同期化された処理の結果は、フレーム幅にわたる単一のプリシンクトの使用と比較して、コラム配列が使用されるときに追加のレイテンシを被らないことである。
【００８６】
スライス、例えば６１１８は、スライスヘッダ６１４０と、１つ以上のプリシンクト（例えば６１４２、６０２、６１４６、６１４８）と、スライスフッタ６１５０とを含む。
【００８７】
圧縮プリシンクト６０２は、プリシンクトヘッダ６０４などの１つ又は複数のプリシンクトヘッダ、ライン０サブパケット群６０６、ライン１サブパケット群６０８、及び（オプションとして）パディングデータ６１０を含む。ライン０サブパケット群６０６及びライン１サブパケット群６０８はサブパケットのグルーピングを定義し、したがって、符号化ビットストリーム１１４内のサブパケットに順序付け制約を課す。しかしながら、サブパケット群６０６及び６０８はいかなる追加のオーバヘッド（例えば、ヘッダシンタックス）も含まない。
【００８８】
フレーム５００の列毎に１つのプリシンクトヘッダが必要である。プリシンクトヘッダ６０４は４つのプリシンクトヘッダのシーケンスの最初であり、シナリオ及びリファインメントシンタックス要素によって、適用可能な列についてシグナリングされる切り捨てレベルとともに、それがどの列（すなわち、最も左の列）に属するかに関するシグナリングを含む。１つの列が使用されているとき、プリシンクトヘッダのシーケンスは、フレーム内のプリシンクトの下向き走査の進行を示す。複数の列が使用されている場合、この進行順序は、フレーム内の所与の垂直位置に位置する列について、プリシンクトの各行内における左から右へ水平方向に拡張される。したがって、フレーム内の所与の垂直位置において、プリシンクトヘッダは、左から右への列の順序付けにさらに制約され、各列に対して１つのプリシンクトヘッダが存在する。列当たり１つのインスタンスを有する固定サイズプリシンクトヘッダの使用は、ビットストリームをトラバースするときに各プリシンクトヘッダの内容を解析する必要性を回避する。これは、各プリシンクトヘッダと各列との間の関連付けを識別するために、プリシンクトヘッダに明示的なシグナリングを導入する必要性を回避する。図６は、プリシンクトに関連するさらなるデータに隣接してその前にある、４つのプリシンクトヘッダ（例えば、６０４）を示す。各列のプリシンクト内のサブバンドは「ライン」にグループ化され、一般に、プリシンクト高さ２から生じる「ライン０」及び「ライン１」と名付けられた２つのラインを伴う。このグループ化は、「ライン０」に格納されたデータのみを復号することによって、低解像度の変種の抽出を可能にする。このグループ化はフレーム幅全体にわたり、各行内の列に関連するプリシンクトヘッダは、行データの解析を容易にするために行データの前に記憶される。
【００８９】
ラインデータはライン０サブパケット群６０６を含み、ライン０サブパケット群６０６は「ＬＬ４」、「ＨＬ４」、「ＨＬ３」、「ＨＬ２」、「ＨＬ１」、及び「ＨＬ０」サブバンドの係数データを含み、ライン１サブパケット群６０８は図３に関して説明したように、「ＬＨ０」及び「ＨＨ０」サブバンドの係数データを含む。
【００９０】
サブパケット群６０６及び６０８の各々は、フレームの柱状配列に従って、さらに１つ以上のサブパケットに分割される。例えば、４つの列が使用されている場合、サブパケット群６０６は最も左の列から最も右の列（すなわち、５０２から５０８）に対応するサブパケット６２０、６２２、６２４、及び６２６に分割される。高スループットの実装のために、サブパケットは、ビデオ処理システム１００において並列に処理される。したがって、サブパケットの内容を順次解析する必要なしに、符号化ビットストリーム１１３内の各サブパケットの開始点を突き止めることを可能にするために、シグナリングが必要とされる。符号化ビットストリーム１１３内の各サブパケットの開始点は、プリシンクトヘッダの位置に対するプリシンクト内の各サブパケットの開始オフセットを符号化する、プリシンクトヘッダ内のサブパケット開始オフセットテーブルを使用して位置特定されてもよい。あるいは、各サブパケット群は、サブパケット群の位置に対するサブパケット群内の各サブパケットの開始オフセットを符号化するサブパケット開始オフセットテーブルを含むことができる。最後に、各サブパケットはそのサブパケットの長さを符号化するサブパケットヘッダ（例えば、６４０）を含むことができ、サブパケットにわたってトラバースすることを可能にする。
【００９１】
各サブパケット（例えば、６２０）は、ＭＳＢ位置ブロック６４２と、データブロック６４４と、符号ブロック６４６とを含む。ＭＳＢ位置ブロック６４２は、ＭＳＢ位置ブロック長６６０と、初期ＭＳＢ位置値６６２と、ランニングＭＳＢ位置値６６４とを含む。ＭＳＢ位置ブロック長６６０は、ＭＳＢ位置ブロック６４２の長さを４ビット単位で符号化する。初期ＭＳＢ位置値６６２は、予測子を有さない係数群のＭＳＢ位置値を符号化する。例えば、水平ＭＳＢ位置予測を使用する場合、列の最も左側の係数群の左側には係数群が存在しない。したがって、最も左の係数群は、予測子を有さず、関連するＭＳＢ位置値はデルタ（符号ビット及び単進）符号化を使用する代わりに、４ビットを使用して、初期ＭＳＢ位置値６６２に符号化される。次に、サブパケット内の残りの係数群のＭＳＢ位置値が、デルタ値を使用して符号化される。サブバンドを複数の列に分割し、各列がサブパケット群内に含まれる関連するサブパケットを有するようにすることは、潜在的に複数の初期値（水平予測の場合、サブバンドごと、列ごとに１つ）の存在を暗示する。サブバンドを複数の列に分割し、各列がサブパケット群内に含まれる関連するサブパケットを有するようにすることは、各サブパケット群内のサブパケットの並列解析を容易にする。次に、データブロック６４４は係数群（例えば、４１２）のビットプレーンを符号化する。最後に、符号ブロック６４６において、各有効係数に対して１つの符号ビットが符号化される。符号ブロック６４６は、４ビット整列で終了する。データブロック６４４及び符号ブロック６４６はまた、それぞれのブロックの先頭に位置する固定サイズヘッダ内の長さフィールドを含む。これらの長さは、ＭＳＢ位置ブロック長６６０に加えて、含まれるエントロピー符号化データの復号を実行することなく、サブパケット群（例えば、６０６）内のサブパケットの位置を突き止めるために使用されてもよい。具体的には、サブパケットの構成部分（例えば、データブロック、符号ブロック、及びＭＳＢ位置ブロック）はそれぞれ、長さフィールドを含むヘッダを含む。これらの長さフィールドの存在は、ポインタ間接参照及び／又はオフセット動作を使用して、各ライン内のサブパケットの集合をトラバースすることを可能にする。圧縮プリシンクトはビデオ復号器１３４による復号の前、及びビデオ符号化器１１４による送信の前にバッファされるので、このようなトラバースはまだ利用可能でない（又はもはや利用可能でない）データを参照するリスクなしに可能である。この特性は、サブパケット群内のサブパケットを「トラバース」する能力として知られている。サブパケットをトラバースする能力は、各サブパケットが柱状動作のためにビデオ復号器１３４内のエントロピー復号器の別々のインスタンスに供給されるコンテンツとして識別されることを可能にする。ビデオ符号化器１１４では、異なるエントロピー符号化器を使用して別々のストリームが作成され、単一のビットストリームにアセンブルし、通信チャネル１２０に搬送することができる。
【００９２】
ＭＳＢ位置垂直予測の場合、予測子はスライス境界を横切らず、（より長いレイテンシではあるが）並列処理を容易にすることができる。
【００９３】
図７は、ビデオ符号化器１１４の機能モジュールを示す概略ブロック図である。ビデオ符号化器１１４は図２Ａ及び図２Ｂに示すように、汎用コンピュータシステム２００を使用して実装することができ、ここで、ビデオ符号化器１１４の様々な機能モジュールは、コンピュータシステム２００内の専用ハードウェアによって実装されてもよい。あるいは、符号化器１１４の様々な機能モジュールが、ハードディスクドライブ２０５上に存在し、プロセッサ２０５によってその実行が制御されるソフトウェアアプリケーションプログラム２３３の１つ又は複数のソフトウェアコードモジュールなど、コンピュータシステム２００内で実行可能なソフトウェアによって実装されてもよい。別の代替例では、符号化器１１４の様々な機能モジュールがコンピュータシステム２００内で実行可能な専用ハードウェア及びソフトウェアの組み合わせによって実装されてもよい。ビデオ符号化器１１４及び説明された方法は代替的に、説明された方法の機能又はサブ機能を実行する１つ又は複数の集積回路などの専用ハードウェアで実装され得る。そのような専用ハードウェアは、グラフィックプロセッサ、デジタル信号プロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、又は１つ又は複数のマイクロプロセッサ及び関連するメモリを含むことができる。具体的には、ビデオ符号化器１１４がモジュール７１０〜７３０を備え、モジュール７１０〜７３０はそれぞれ、ソフトウェアアプリケーションプログラム２３３の１つ又は複数のソフトウェアコードモジュール、又はビデオ符号化器１１４を実現するためにＦＰＧＡ内の内部論理ブロックを構成するＦＰＧＡ「ビットストリームファイル」として実装され得る。ビデオ符号化器１１４は評価中に各候補に対して最も良くない場合の推定値が使用されるように、候補切り捨てレベルの評価のためのコストを近似することによって、レート割り当て機能の複雑さを低減する。次に、符号化のために、符号化に適用される選択された切り捨てレベルにおいてのみ、実際の符号化コストが１回導出される。
【００９４】
図７のビデオ符号化器１１４は低レイテンシビデオ符号化器の一例であるが、本明細書で説明する処理ステージを実行するために他のビデオコーデックを使用することもできる。ビデオ符号化器１１４はビデオソース１１２から一連のフレームのようなビデオデータ１１３を受信し、各フレームは１つ又は複数の色チャネルを含む。
【００９５】
変換モジュール７１０はビデオソース１１２から非圧縮ビデオデータ１１３を受け取り、１セットの分析フィルタバンクを使用して階層ウェーブレットフォワード（又は「分析」）変換を実行する。一般に、５／３Ｌｅ  Ｇａｌｌウェーブレットが使用されるが、Ｈａａｒウェーブレット又はＣｏｈｅｎ−Ｄａｕｂｅｃｈｉｅｓ−Ｆｅａｕｖｅａｕ９／７ウェーブレットのような他のウェーブレットも可能である。変換モジュール７１０は、ウェーブレット係数７１２を生成する。ウェーブレット係数７１２は図３Ａ及び図３Ｂを参照して説明したように、ウェーブレット分解構造に従ってサブバンドにグループ化される。超低レイテンシの要件のために、分解のレベルの数は垂直方向に、一般に２レベル以下に強く制約される。分解のレベルの数は水平方向には比較的制約されず、例えば５つのレベルが使用される。１つのレベルの垂直分解の場合を考えると、各サブバンド内には、高さが１つで幅がｎ個の係数のアレイとして配置された係数セットがある。高さが１つで幅がｎ個の係数のアレイとしての係数の配置はリストと考えることができ、各サブバンドの係数が一般に正方形のアレイであるＪＰＥＧ２０００などのコーデックにおける典型的な使用法とは対照的である。次に、各サブバンド内の係数のリストを走査することができる。しかしながら、最初に、グループ化動作が適用され、各サブバンドはエントロピー符号化の目的のために、等しいサイズの係数群のセットに分割される。様々な群サイズを使用することができ、群サイズは全てのサブバンドにわたって固定されている必要はないが、全てのサブバンドについて４という固定された群サイズは様々なテストデータの下での符号化器１１４の良好な性能を提供する。したがって、変換モジュール７１０は、グループ化された係数７１２を生成する。
【００９６】
第２に、各サブバンド内のグループ化された係数は、列にさらに分割される。列境界は５という最も深いウェーブレット分解深さにおける係数群が列内に完全に含まれるように整列される（すなわち、２５×４＝１２８画素粒度）。したがって、各係数群は、１つの列内に完全に含まれる。
【００９７】
グループ化された係数７１２は、最大符号化ラインインデックス（ＭＳＢ位置）抽出モジュール７１４に渡される。グループ化された係数７１２は一連のビットプレーン（又は「ライン」）として符号化され、群内の各係数のビット「ｎ」は４ビットの単位で符号化される。まず、係数群内のいずれかの係数の非ゼロビットを含む高ビットプレーンのビットプレーンインデックスが判定される。このビットプレーンインデックスは、ＭＳＢ位置と呼ばれる。集合的に（すなわち、全ての係数群及びサブバンドにわたって）、このインデックスはＭＳＢ位置７１６を形成する。ＭＳＢ位置７１６は、レート制御モジュール７２０に渡される。図７にはまた、グループ化された係数７１２が示されており、これは図８を参照してさらに説明するように、オプションとしてレート制御モジュール７２０に渡すことができる。レート制御モジュール７２０はとりわけ、ＭＳＢ位置予測モード７１９及びレート制御パラメータ７２２を判定し、それぞれは列ごとに判定される。ＭＳＢ位置７１６及びＭＳＢ位置予測モード７１９は、ＭＳＢ位置予測モジュール７１５に渡され、ＭＳＢ位置予測モード７１９はプリシンクト内の全てのサブバンドにわたるＭＳＢ位置に、列ごとに別個の予測モードで適用される。利用可能な予測モードには、水平、垂直、及び生（予測なし）が含まれる。ＭＳＢ位置予測の結果として、ＭＳＢ位置デルタ値７１７が生成され、前の係数群のＭＳＢ位置から、後の係数群のＭＳＢ位置が予測されることを可能にする。予測子を有さない係数群（例えば、水平予測についての列内の最も左の係数群）は「生」として（すなわち、４ビット符号ワードを使用して）符号化される。ＭＳＢ位置予測モード７１９はプリシンクトヘッダ６０４内の符号化ビットストリーム１１５内で符号化され、ＭＳＢ位置デルタ値７１７はそれぞれの列についてＭＳＢ位置ブロック６４２内の符号化ビットストリーム１１５に符号化するためにエントロピー符号化器モジュール７１８に渡される。ＭＳＢ位置予測モジュール７１５はまた、ＭＳＢ位置デルタ値７１７を符号化するビットコストを示すＭＳＢ位置符号化コスト７２７を生成する。ビットプレーンのセットとしてのサブバンド内の係数群の説明された表現は、図４を参照して以下にさらに説明される。
【００９８】
プリシンクトのビットバジェットは、プリシンクトの列の間で分割されてもよく、各列はレートパラメータ７２２内の別個のレートパラメータ（例えば、シナリオ及びリファインメント）を介して独立した量子化制御を有する。プリシンクト内の各列について、レート制御モジュール７２０は、考慮される列のビットバジェットを使用して、シナリオ及びリファインメントを判定する。
【００９９】
量子化器モジュール７２４はレート制御パラメータ７２２（すなわち、サブバンドのシナリオ及びリファインメント）を使用して、各サブバンドの各係数群からのウェーブレット係数を量子化する。サブバンド内の係数の切り捨てレベルは、シナリオ及びリファインメントによって設定され、「最大切り捨てラインインデックス」（ＧＴＬＩ）とも呼ばれ得る。最終ＧＴＬＩに従って係数を切り捨てる前に、丸めオフセットを適用して、ビデオ復号器１３４における再構成を容易にする。一般に、一様な丸めは、低い複雑さで良好な性能を提供する。このように、丸めオフセットは、丸めが下向き方向にバイアスされる（大きさが減少する）ように定義され、係数群のＭＳＢ位置を増加させる可能性を防止する。記載されたＭＳＢ位置は、量子化の前に判定され、したがって、選択された切り捨てレベルで行われるいかなる丸めに従っても変更することができない。最後に、切り捨てられた後の係数群７２６は、ビットプレーングルーパモジュール７３０に出力される。
【０１００】
ビットプレーングルーパモジュール７３０は係数群内の４つの係数の各々の位置ｎにおける１ビットが一緒にグループ化されるように、４ビットワードをアセンブルする。各係数群について、値ｎは係数群のＭＳＢ位置の値から適用可能なＧＴＬＩまで進み、４ビットワードのシーケンスをもたらす。結果として生じる４ビットワードは、符号化ビットストリーム１１５に書き込む（又は「パッキングする」）ためにパッカモジュール７２８に渡される。
【０１０１】
エントロピー符号化器モジュール７１８は、ＭＳＢ位置デルタ７１７及びＭＳＢ位置予測モード７１９を符号化する。結果として得られる可変長コード７２９は、符号化ビットストリーム１１５にパッキングするためにパッカモジュール７２８に渡される。複数列動作の場合、エントロピー符号化器モジュール７１８は、列当たり１つまでのインスタンスが存在するまで、複製されてもよい。したがって、エントロピー符号化器モジュール７１８の個々のインスタンスにおける順次解析要件は、列ビットレートへと制約される。さらに、エントロピー符号化器モジュール７１８の各インスタンスは可変長コード７２９の独立したシーケンスを生成し、これは、プリシンクトの全ての列について単一のビットストリームを生成するパッカモジュール１１５への順次配信の前にバッファリングされる。可変長コード７２９の各ランは、４ビットアラインメント動作で終了する。ＭＳＢ位置値を予測するためのいくつかのモードが利用可能であり、選択されたモードは、プリシンクト内の全てのサブバンドにわたる全ての係数群に適用される。ＭＳＢ位置予測モードの例は予測子がサブバンド内の左側隣接係数群である水平予測と、予測子が上側隣接係数群（すなわち、上側プリシンクトからの対応するサブバンド内の係数群）である垂直予測とを含む。
【０１０２】
「生」モードも利用可能であり、この場合各係数のＭＳＢ位置値が符号化され、予測子は使用されない。水平予測が使用されるときの列内の最も左の係数群のような予測子を有しない係数群については、予測子を有しない係数群も生符号化される。係数群の数は選択されたウェーブレット分解及びプリシンクト範囲から分かるので、ＭＳＢ位置７１６はＭＳＢ位置デルタの一連の単進符号化された大きさを使用して符号化され、ＭＳＢ位置デルタの符号のための追加ビットを含む。結果として得られる符号化されたＭＳＢ位置デルタ７１７のセットは、各値についての単進符号及び符号ビットを使用して、符号化ビットストリーム１１５に書き込まれる。
【０１０３】
パッカモジュール７２８は、各係数群から符号化されたビットプレーンを含むデータを符号化ビットストリーム１１５にパックする。各係数群について、指示されたＭＳＢ位置から修正されたＧＴＬＩまでのビットプレーンは、符号化ビットストリーム１１５にパックされる。レート制御パラメータ７２２からのシナリオによって示されるように、修正されたＧＴＬＩがＧＴＬＩを超えて増加された場合、係数ビットプレーンデータのための低減された符号化コストが得られる。レート制御モジュール７２０は低減された符号化コストを既に考慮に入れており、ビットレート節約の結果として、リファインメントのために追加のサブバンドを選択するか、又はより高いシナリオを選択することができる。また、パッカモジュール７２８は、有効係数当たり１ビットが符号ブロック６４６にパックされ、各プリシンクトのサブパケット当たりそのようなブロックが１つとなるように、符号ビットをパックする。符号ビットは係数データがパックされるのと同じ順序で（すなわち、サブパケット群に含まれるサブバンドについて）パックされる。最後に、符号ビットを書き込んだ後、４ビット境界への位置合わせが実行され、パッカモジュール７２８の動作の粒度を一致させる。各サブパケットが書き込まれると、パッカモジュール７２８は各コンポーネントデータブロックの長さのカウントを維持し、その結果、符号化コスト７３４が生成される。符号化コスト７３４は、レート制御モジュール７２０に渡される。符号化コスト７３４はまた、パッキング動作の前に判定されてもよい。例えば、エントロピー符号化器７１８は、最終符号化コスト７３４に対するＭＳＢ位置符号化コストの寄与を判定することができる。
【０１０４】
ビットプレーングルーパ７３０は、最終的な符号化コスト７３４に対する係数データビットコストの寄与を判定することができる。量子化器７２４は、各係数の有意性、したがって最終的な符号化コスト７３４への符号ブロックコストの寄与を判定することができる。そのようなより早い導出は符号化コスト７３４の判定に対するタイミング制約を低減し、そうでなければ、レート制御モジュール７２０が次のプリシンクトに進むために必要とされる入力の遅延につながるかもしれない。最後に、各列は、別個の符号化コスト７３４値を有する。
【０１０５】
結果として得られる符号化ビットストリーム１１５は、送信機１１６、通信チャネル１２０、及び受信機１３２を介して、受信ビットストリーム１３３としてビデオ復号器１３４に渡される。結果として得られる符号化ビットストリーム１１５は通信チャネル１２０に加えて、又はその代わりに、又はその一部として存在することができる非一時的な記憶装置１２２に記憶することもできる。
【０１０６】
図８は、図７のビデオ符号化器１１４のレート制御モジュール７２０を示す概略ブロック図である。レート制御モジュール７２０は、各列についてのレート制御パラメータの選択、すなわちシナリオ及びリファインメントのための符号化コストの近似を使用することによって、複雑さを低減して実現される。プリシンクトバジェッタ８０３は現在のプリシンクトの許容バジェットを判定するために、以前のプリシンクトの符号化コスト７３４を受信する。構成された固定ビットレートに基づいて、プリシンクト毎のバジェットが確立される。しかしながら、各プリシンクトがプリシンクト当たりのバジェットよりも多くを消費しないように制約することは、過度な制約であり、視覚的品質の低下につながる。他方、低レイテンシ動作要件は、プリシンクト当たりのバジェットの許容可能な過少使用又は過剰使用の程度に制約を課す。各フレームについて、現在のプリシンクトまでのプリシンクトについての累積目標ビット消費と共に、フレームを符号化する際にこれまでに消費されたビットの累積カウントが維持される。これから、現在のプリシンクトに対するバジェットが導出される。消費されたビットの累積カウントは、例えばいくつかの利用可能なＧＴＬＩ評価モジュール８０４のうちの１つによってレート制御モジュール７２０内から導出されるコストとは対照的に、符号化コスト７３４を使用して更新される。したがって、ＧＴＬＩ評価モジュール８０４は選択されたレートパラメータがプリシンクトを符号化するために適用されるときに判定された、結果として生じる符号化コスト７３４の近似値を生成することが可能である。
【０１０７】
ＧＴＬＩ評価モジュール８０４は複数のレート制御パラメータを評価し、評価されたパラメータの各セットに対する候補コスト推定値を生成する。例えば、各シナリオを評価することができる。各ＧＴＬＩ評価モジュールは推定候補コスト（例えば、８０９）を生成する。結果として得られる複数の推定候補コストのうち、プリシンクトバジェットを超えるコストに関連する全てのシナリオは、さらなる考慮から除外される。次に、最も高い残りの推定候補コストに関連するシナリオが選択される。次に、選択されたシナリオの推定候補コストに加えて追加コストを用いて、複数のリファインメントがテストされる。再び、プリシンクトバジェットを超える総推定コストをもたらすリファインメント値は、さらなる考慮から除外される。残りのリファインメント値のうち、最も高い推定コストに関連付けられたリファインメント値（すなわち、最大数のサブバンドが切り捨てレベルを１低下させたが、追加の符号化リファインメントビットに対応している）が選択される。したがって、プリシンクトのレート制御パラメータ７２２（すなわち、シナリオ及びリファインメント）が判定される。有効なビットストリームを生成するために、選択されたシナリオ及びリファインメントの適用から生じる符号化コスト７３４は、プリシンクトバジェットを超えない。したがって、推定候補コストは「最も良くない場合」推定値である（すなわち、符号化コスト７３４は推定コスト以下である）。
【０１０８】
レート制御パラメータ７２２を判定する際に推定候補コスト（例えば、８０９）を使用することにより、関係する実際のコストを判定する場合と比較して、レート制御モジュール７２０を低減された複雑さで実現することが可能になる。具体的には、ＧＴＬＩ評価モジュール８０４が複数のシナリオ及びリファインメントにおける係数符号化コストを判定する。係数符号化コストには、ＭＳＢ位置符号化コスト、係数データコスト、及び符号コストが含まれる。ＭＳＢ位置符号化コストは、ＭＳＢ位置をサブバンドについての切り捨てレベルで切り捨てた後のコストであってもよい。特に、切り捨てられていないＭＳＢ位置は、切り捨てレベルより下の値を含むかもしれない。そのような係数群についてはデータが符号化されないので、どの程度ＭＳＢ位置が切り捨てレベルよりも下にあるかをシグナリングする必要はない。こうすると、ＭＳＢ位置自体を切り捨てレベルに切り捨てることができ、その結果、一般に、係数データビットが符号化されない係数群のランが得られる。ＭＳＢ位置７１６は、レート制御モジュール７２０に入力され、各候補ＧＴＬＩについて、切り捨てられたＭＳＢ位置８２３を生成するために切り捨て動作が適用される。切り捨てレベルが上げられるにつれて、より大きな割合の係数群が符号化されるべき係数ビットプレーンを有さなくなり、したがって、より高い切り捨てレベルでは符号化されていない係数のランがより優勢になる。
【０１０９】
次に、ＭＳＢ位置予測モジュール８２６は、ＭＳＢ位置符号化コストが最小化されるようなＭＳＢ位置予測モードである、切り捨てられたＭＳＢ位置８２３についてのＭＳＢ位置予測モード８２７を選択する。ＭＳＢ位置符号化コストは、累計モジュール８２９に渡される。したがって、ＭＳＢ位置の符号化コストは、シナリオ及びリファインメントから得られる切り捨てレベルでの切り捨て後に判定される。切り捨てられたＭＳＢ位置８２３を使用して、データコストモジュール８２８は係数ビットプレーンのためのデータコストを生成し、これも累計モジュール８２９に渡される。次に、符号コストモジュール８３０は、（候補切り捨てレベルで量子化をテストすることなく）符号化された係数当たり１つの符号ビットとして符号コストを導入し、ここでは各係数が有意であるという暗黙の仮定を行う。これは、符号ブロック６４６についての最も良くない場合を表す。したがって、結果として得られる推定候補コスト８０９は、符号化コスト７３４の最も良くない場合の推定である。
【０１１０】
候補切り捨てレベルの各々について符号化コスト（例えば、７３４）を判定するために、候補切り捨てレベルの各々について、量子化器モジュール８２４が必要とされるだろう。各量子化器モジュール８２４は、量子化器７２４と同じ動作を実行する。しかしながら、各候補切り捨てレベルをテストするためのモジュール８２４及び量子化器７２４の機能性の複製は、ビデオ符号化器１１４に大きな複雑さの増加を強いる。ＧＴＬＩ評価モジュール８０４からの量子化器８２４の省略の結果として、符号化コスト以下である結果的に生じるコストの近似に基づいて、シナリオ及びリファインメントが決定されるという結果の下で、複雑さが低減される。ＧＴＬＩ評価モジュール８０４からの量子化器８２４の省略は、望ましくないビットの過少消費、及び結果としての品質劣化につながるかもしれない。しかしながら、プリシンクトバジェッタ８０３は選択されたシナリオ及びリファインメントに関連するＧＴＬＩ評価モジュール８０４からのコストを使用する代わりに、パッカ７２８から符号化コスト７３４を受信する。次に、現在のプリシンクトについての未使用ビットレートは、符号化コスト７３４を、ＧＴＩ評価モジュール８０４からの関連する候補コスト８０９の代わりに、消費したビットカウントに加算することによって、次のプリシンクトに転送される。その結果、次のプリシンクトは、こうしない場合よりも低い切り捨てレベルを選択することができる。推定候補コスト８０９の各々から、符号化シンタックス要素のいくらかの部分のコストを省略することは、レート制御モジュール７２０によって行われる決定に何らかの変更をもたらすはずである。
【０１１１】
上述したように、プリシンクトバジェッタ８０３のレート転送動作は、使用されないビットに関して各フレーム全体にわたる影響をほとんど生じない。実験は、記載された方式が、３〜１４ＢＰＰの範囲のビットレートでテストされた様々な画像について、ＰＳＮＲに対して０．０１ｄＢ以内の非常に限定された影響したもたらさないことを示した。ＰＳＮＲに対する影響が限定的なのは、レートフォワーディングが、符号化ウェーブレット係数に割り当てられた利用可能なビットの全体的な減少をほとんどもたらさないことよるものである。符号ビットは、近くの切り捨てレベルを考慮したとき、消費されるビットに対して相対的に変化しない寄与を与える。低い切り捨てレベルでは多くの有意な係数が存在し、したがって、符号化コスト７３４は推定候補コストに近い（各係数は有意であると仮定される）。より高い切り捨てレベルでは有意な係数はほとんど存在せず、したがって、そのようなレベルでの推定候補コストは符号化コストよりも低く、係数当たり１ビットにまで至る。隣接する切り捨てレベル間では、有意な係数の数の変化は一般に大きくない。レート転送動作と組み合わせて、レート制御モジュール７２０は、正しいコストがＧＴＬＩ評価モジュール８０４の各々において評価されていた場合と同様の決定を行うことができる。
【０１１２】
図９は、図７のビデオ符号化器１１４におけるコスト推定に基づくレート転送を示す概略図９００である。図９は、図８を参照して説明した動作をさらに示す。図９は、フレーム内の２つの空間的に隣接するプリシンクトである、プリシンクトｎ及びプリシンクトｎ＋１を示す。プリシンクトｎにはバジェット９１０が割り当てられる。レート制御モジュール７２０は図９のＣｏｓｔＥｓｔｉｍａｔｅ（）によって示されるように、レートの消費をもたらすシナリオ及びリファインメントを選択する。切り捨てレベルをさらに低下させ、その結果、何らかの追加のビットプレーンを符号化すると、バジェット９１０を超えることになる。ビデオ符号化器１１４が選択されたシナリオ及びリファインメントに従ってプリシンクトを符号化するとき、Ｃｏｓｔ（）ビットが、符号化ビットストリーム１１５に書き込まれる。その後、プリシンクトバジェッタ８０３では、フレームについての１つのプリシンクト当たりのレート目標にプリシンクトｎからの未使用レートを加算することによって、プリシンクトｎ＋１についてのバジェット９１２が判定される。次に、プリシンクトｎ＋１を符号化するとき、レート制御モジュール７２０は、このようにしない場合よりも低い切り捨てレベルを選択することができる。フレームの最初のプリシンクトはより前のプリシンクトから転送されたレートを受信することによる利益を得ないために、フレームの最初のプリシンクトは、フレーム内の後続のプリシンクトと比較してわずかに低減された品質で符号化されることが期待されるかもしれない。フレーム内の最初のプリシンクトの品質低減を緩和する１つの方法は、フレーム内の最初のプリシンクトにフレーム内の後続のプリシンクトよりも高いバジェットが割り当てられるようにプリシンクトごとのバジェットを調整することである。
【０１１３】
図９の例はプリシンクトレベルでの動作を説明するが、図９の例は、より大きいエントロピー符号化スループットのために柱状配置を使用するプリシンクトの独立した列のそれぞれにも適用可能である。
【０１１４】
図１０は、ビデオ復号器１３４の機能モジュールを示す概略ブロック図である。ビデオ復号器１３４は図２Ａ及び図２Ｂに示すように、汎用コンピュータシステム２００を使用して実装することができ、ここで、様々な機能モジュールは、コンピュータシステム２００内の専用ハードウェアによって実装されてもよい。あるいは、復号器１３４の様々な機能モジュールが、ハードディスクドライブ２０５上に存在してその実行がプロセッサ２０５によって制御されるソフトウェアアプリケーションプログラム２３３の１つ又は複数のソフトウェアコードモジュールのような、コンピュータシステム２００内で実行可能なソフトウェアによって実装されてもよい。別の代替例では、復号器１３４の様々な機能モジュールがコンピュータシステム２００内で実行可能な専用ハードウェア及びソフトウェアの組み合わせによって実装されてもよい。ビデオ復号器１３４及び説明された方法は、代替として、説明された方法の機能又はサブ機能を実行する１つ又は複数の集積回路などの専用ハードウェアで実装され得る。そのような専用ハードウェアは、グラフィックプロセッサ、デジタル信号プロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、又は１つ又は複数のマイクロプロセッサ及び関連するメモリを含むことができる。
【０１１５】
アンパッカ１０２２は、受信ビットストリーム１３３を受信する。最初に、フレーム範囲及び符号化プリシンクトサイズを含む項目をシグナリングする、フレームヘッダが復号される。次に、フレーム範囲及び符号化プリシンクトサイズから、プリシンクトが復号される。各プリシンクトについて、レート制御モジュール７２０によって判定されるシナリオ及びリファインメントが、受信ビットストリーム１３３から復号される。判定されたシナリオ及びリファインメントから、プリシンクトの残りの符号化構造を判定することができる。
【０１１６】
エントロピー復号器モジュール１０１０は、ＭＳＢ位置ブロック（例えば、６４２）からのデルタＭＳＢ位置値１０１２、及びＭＳＢ位置予測モード１０１３を復号し、これらはＭＳＢ位置再構成器モジュール１０１４に渡される。ＭＳＢ位置再構成器モジュール１０１４は、これもまた受信ビットストリーム１３３から得られたプリシンクトについてのＭＳＢ位置予測モード１０１３に従って、ＭＳＢ位置値１０１６を再構成する。ビットプレーングループ化解除器１０１８は、ＭＳＢ位置値１０１６を用いて、アンパッカ１０２２からの連続する４ビットワードを消費して量子化された係数１０２４を再アセンブルすることによって、プリシンクト内のサブバンドの係数群についてのビットプレーンを量子化された係数１０２４として抽出するように動作する。
【０１１７】
量子化解除器モジュール１０２６は量子化された係数１０２４に対して逆量子化を実行し、ウェーブレット係数１０２８を生成する。逆量子化動作は適切な再構成オフセットを適用することを含み、再構成オフセットは、サブバンドのＧＴＬＩに従って判定され、オフセットテーブル１０２０からの対応するオフセットに従ってサブバンド内の各係数群について修正される。次に、逆変換モジュール１０３０は、ウェーブレット係数１０２８に合成ウェーブレットフィルタバンクを適用して、復号ビデオ１３５を生成する。
【０１１８】
図１１は、レート制御パラメータ７２２を導出するために使用される符号化プリシンクトコストについてのコスト推定を伴う、ビットストリームを符号化する方法１１００を示す概略フロー図である。方法１１００は、レート制御モジュール７２０において予想されるコストと比較して、プリシンクトについての符号化データのコストが低減された符号化ビットストリーム１１５につながる。
【０１１９】
以下で説明するように、方法１１００は、ビデオ符号化器１１４の機能モジュールのうちの１つ又は複数によって実行される。上述のように、１つの構成では、ビデオ符号化器１１４は、ハードディスクドライブ２０５に存在し、プロセッサ２０５によってその実行が制御される、ソフトウェアアプリケーションプログラム２３３の１つ又は複数のソフトウェアコードモジュールなどとして実装されてもよい。方法１１００を実行することによって推定された符号化コストを使用するビデオ符号化器１１４は、評価中の各切り捨てレベルについて正しい符号化コストを計算するのと比較して、複雑さが低減している。
【０１２０】
方法１１００は、現在のプリシンクトバジェット判定ステップ１１０２で始まる。現在のプリシンクトバジェット判定ステップ１１０２において、プリシンクトバジェッタ８０３は、プロセッサ２０５の制御下で、現在のプリシンクトの各列についてのバジェットを判定する。バジェットは、前のプリシンクトの対応する列から未使用レートを得て、プリシンクト毎の列毎の一定のバジェットを加算することによって判定される。フレームの最初のプリシンクトについては、レートを継承することができる前のプリシンクトはない。そこで、ビデオ符号化器１１４の設定された画素あたりのビットに従って割り当てられるレートの量に加えて、固定量のレートを、最初のプリシンクトに割り当てることができる（レート制御ルックアヘッド動作によって減少させることができる）。レート制御ルックアヘッド動作のほかには、この固定レートを設定するための以前の情報は利用できないので、所定の固定量が使用されるべきである。
【０１２１】
例えば、様々なテスト画像に関する実験結果は、平均して、ウェーブレット係数群の１５％が、比較的ノイズのないビデオデータに典型的なレベルに切り捨てられた後に、有意なままである係数を含むことを示している。次に、８５％の係数群（図４を参照して説明した「符号化されていない係数群」）について、推定コストは、符号化されない符号ビットを含む。４ＫのＵＨＤフレームにおけるプリシンクトの場合、６ｂｐｐにおいて、レート制御ルックアヘッドウィンドウの影響を無視すると、目標圧縮サイズは、３８４０（幅）×２（プリシンクト高さ）×６ｂｐｐ＝４６０８０ビットである。次に、係数群の１５％のみが符号化されることが予想されるときにあらゆる符号化された係数が有意であると仮定するバジェッティングステップについて、これらの中で係数の２５％は量子化の後に有意ではなくなる。次に、バジェットは、最初のプリシンクトに対して、３８４０×２×３（プリシンクト内の係数の数であり、３つの色チャネルを有する）×１５％×２５％＝８６４ビットだけ増加されてもよい。この増加は、いくつかはパッカモジュール７２８によって符号化されない（例えば、４４０）場合において、存在しない符号ビットはないと仮定するレート制御モジュール７２０に基づいている。すると、バジェットは、４６０８０＋８６４＝４６９４４ビットに設定され得る。このレベルは、プリシンクトの最終的に消費されるビット量が、選択された切り捨てレベルで符号化されたときにゼロに量子化され、したがって関連する符号ビットを有さない多数の符号化係数のために、４６０８０ビットに近くなることを期待して設定される。この例に見られるように、符号ビットコストは、バジェッティング処理にある程度の影響を及ぼす。特定の統計値は非常に画像依存性があり、したがって、実際には、ＢＰＰ値及びプリシンクトサイズから得られるバジェットに対して約１．８７５％の増加になる追加レートについての上記の計算は、ビデオ符号化器１１４によって遭遇されると予想されるビデオデータを反映する係数の統計値の仮定を使用して、判定されてもよい。
【０１２２】
最初のプリシンクトに対するレート割り当てにおいて正確な符号化コストを計算することは可能であるが、次のプリシンクトに送るように利用可能なレートは存在しないだろうから、送られたレートがないという問題は単に次のプリシンクトへとプッシュされる。したがって、最初のプリシンクトついて何らかの追加レートを与えることが好ましい。さらに、最初のプリシンクトについて（決定処理についての全ての切り捨てレベルにおける）完全な符号化コストを計算することは、非対称的な方法で、すなわち最初のプリシンクトのみについて、コストを増加させる。このような増加は、最初のプリシンクトのみのための追加のハードウェア、又は最初のプリシンクトのより遅い処理（後にフレームにレイテンシを導入する）で対応することができる。両方の解決策は望ましくなく、そうでなければ達成されるであろう、全てのプリシンクトにわたる一貫した複雑さの低減という利点を打ち消す。このような一貫した低減は、ハードウェアが常に準備されなければならない「最も良くない場合」も低減するので、ハードウェア設計にとって好ましい。代わりに、レート制御ルックアヘッドウィンドウが使用されているとき、最初のプリシンクトに対するバジェットは、次のｎ個のプリシンクトと比較した最初のプリシンクトの推定コストに比例して設定され、ここでｎはプリシンクトにおけるルックアヘッドウィンドウのサイズである。プリシンクト当たりのバジェットは、１つのプリシンクト内の画素数を画素当たりのビットに乗算したものである。プリシンクト当たりのバジェットは、各列がプリシンクト内で占める相対的な割合に従って、プリシンクト内の列の間でさらに分割される。ステップ１１０２で判定されたバジェットは、メモリ２０６に記憶されてもよい。次に、プロセッサ２０５における制御は、切り捨てレベル生成ステップ１１０４に移る。
【０１２３】
切り捨てレベル生成ステップ１１０４において、レート制御モジュール７２０内の候補ＧＴＬＩモジュール８４０は、プロセッサ２０５の制御下で、メモリ２０６に記憶されてもよい複数の切り捨てレベル候補８４２を生成する。候補切り捨てレベルは、シナリオとして指定されてもよい。あるいはシナリオが与えられると、候補切り捨てレベルは（シナリオに対する）リファインメントとして指定されてもよい。あらゆる可能な切り捨てレベルが生成されて評価されてもよく、これは入力ビデオデータにかかわらず最適な切り捨てレベルの選択を可能にする。可能な切り捨てレベルの数はシステム１００のウェーブレット係数に与えられたビット数に等しく、これは一般的に１６ビットであり、１６の可能な切り捨てレベルが得られる。次に、プロセッサ２０５における制御は、コスト推定値生成ステップ１１０６に移る。
【０１２４】
コスト推定値生成ステップ１１０６において、ＧＴＬＩ評価モジュール８０４はプロセッサ２０５の制御下で、候補切り捨てレベル８４２の各々について１つのコスト推定値を生成し、１セットのコスト推定値（例えば、８０９）をもたらす。コスト推定値のセットは、メモリ２０６に記憶されてもよい。コスト推定値は、ＭＳＢ位置及び切り捨てレベル候補から導出される。このように、符号化されない係数群に対して符号ビットは符号化されないと仮定される。しかしながら、符号化された係数群については、全ての係数が切り捨てレベルにかかわらず有意であると仮定される。その結果、符号化されないであろう任意の符号ビット（例えば、４４０）が、生成されたコスト推定値に含まれる。次に、プロセッサ２０５における制御は、過大コスト推定値除去ステップ１１０８に移る。
【０１２５】
過大コスト推定値除去ステップ１１０８では、各候補推定コストがプロセッサ２０５の実行下で比較され、ステップ１１０２からのバジェットを超えるコストが廃棄される。ステップ１１０８は、プリシンクト内の各列に対して独立して実行される。プロセッサ２０５における制御は、次に残りコスト推定値選択ステップ１１１０に渡される。
【０１２６】
残りコスト推定値選択ステップ１１１０では、プロセッサ２０５の実行下で、ステップ１１０８の後に残っているコスト推定値のうち最も高いコスト推定値が選択される。前のステップ１１０８により、ステップ１１１０で選択されたコスト推定値はバジェット内にあり、したがって、バッファ制約に従う符号化に使用可能である。最高のコスト（最も低い切り捨て点）であるので、ビデオ復号器１１４で見られる品質は各列について最大化される。次に、選択されたコスト推定値に関連付けられたシナリオ及びリファインメントが、プリシンクトを符号化する際に使用するために選択される。次に、プロセッサ２０５における制御は、プリシンクトヘッダ符号化ステップ１１１２に移る。
【０１２７】
複数の列が使用されている場合、列ごとにステップ１１０２〜１１１０が独立して実行される。ステップ１１０２で現在のプリシンクトバジェットを判定する際に、各列についてのバジェットは、フレーム幅に対する列幅の比率に比例して全体のバジェットをプリシンクトに割り当てることによって得られることに留意されたい。したがって、プリシンクトの前の行からバジェットを送ることが、現在のプリシンクトの行の全ての列に対して利用可能である。
【０１２８】
プリシンクトヘッダ符号化ステップ１１１２において、プリシンクトヘッダ（例えば、６０４）は、プロセッサ２０５の実行下で符号化ビットストリーム１１５に格納される。ビデオ符号化器１１４が複数の列を使用するように構成される場合、別個のプリシンクトヘッダが各列について格納される。各プリシンクトヘッダは、それぞれの列についての量子化パラメータを含む。次に、プロセッサ２０５における制御は、プリシンクトデータ符号化ステップ１１１３に移る。
【０１２９】
プリシンクトデータ符号化ステップ１１１３では、図７を参照して説明したように、プリシンクトの各列の係数データが量子化器７２４、ビットプレーングルーパ７３０、エントロピー符号化器７１８、及びパッカ７２８を使用して符号化される。並列実装では、モジュール７２４、７３０、７１８、及び７２８の別個のインスタンスを使用することができる。その結果、符号化コスト７３４がプリシンクト内の各列に対して生成される。符号化コスト７３４は、選択された切り捨てレベルで符号化される符号ビットのコストのみを含む。その結果、符号ビット４４０は符号化コスト７３４から省略される。あるいは、符号化コスト７３４は、各プリシンクト内の全ての列の符号化した累計を示すものと見てもよい。符号化コスト７３４は、プロセッサ２０５の実行下で、レート制御モジュール７２０に戻される。プロセッサ２０５の制御はその後、ビットストリームパディングステップ１１１４に渡される。
【０１３０】
ビットストリームパディングステップ１１１４では、通信チャンネル１２０へデータを供給するために使用されるリーキーバケットモデルのアンダーフローを避けるために、符号化ビットストリーム１１３が追加フィルタデータでパディングされる。リーキーバケットモデルは、各プリシンクトの各列が符号化されるための可変レートのデータ生成から、固定ビットレートで、通信チャネル１２０へデータを供給することを容易にする。非常に低い切り捨てレベル（及びその結果としての大量の係数データ）の場合であっても、依然としてパッカ７２８によって不十分なデータが生成される場合があり、するとバッファアンダーフローの可能性が存在する。潜在的なバッファアンダーフローは、パディングデータの挿入によって回避される。１つのパディング挿入動作は、プリシンクトごとに行われ、０個以上の４ビットワードのパディングデータが挿入される。したがって、全ての列にわたるパディングは、プリシンクト当たり１つのパディングブロック（存在する場合）に合体される。方法１１００は、ビデオ符号化器１３４のいくつかのインスタンスがビデオデータのより大きなフレームに対してタイル方式で動作するマルチコアアプローチとは異なる。そのようなマルチコアアプローチでは、各インスタンスがパディングを分離し、これは利用可能なビットレートのより効率的ではない使用を潜在的にもたらす。パディングは、プリシンクトの符号化長を超える長さ値を有し、プリシンクトの存在を示す、プリシンクト長フィールドによってシグナリングされる。次に、方法１１００は、ステップ１１１４に続いて終了する。
【０１３１】
方法１１００の１つの構成では、ビデオ符号化器１１４の複雑さはステップ１１０４で候補ＧＴＬＩモジュール８４０によって生成される候補切り捨てレベルの数を低減することによってさらに低減される。あらゆる可能な切り捨てレベルを生成する代わりに、可能な切り捨てレベルのサブセットが生成される。白色ノイズのような良くない入力データであっても動作を保証するために、いくつかの非常に高い切り捨てレベルが必要とされる。そのような高い切り捨てレベルは不十分な視覚品質をもたらし、保証された固定ビットレート動作を保証するためにのみ存在する。他の切り捨てレベルは、前のプリシンクトからの切り捨てレベルに基づいていてもよい。例えば、前のプリシンクトの選択された切り捨てレベルの上下の範囲にわたる限定された切り捨てレベルのセットがテストされてもよい。大部分の場合、切り捨てレベルの全セットが評価されるときにも、選択される切り捨てレベルはこの切り捨てレベルの範囲内にあるだろうから、より少ない切り捨てレベルのセットを探索することによっても、符号化効率への影響はほとんど見られない。可能な切り捨てレベルのサブセットが生成される構成は、ＧＴＬＩ評価モジュール８０４の必要な量を低減することによって、ビデオ符号化器１１４の複雑さを低減する。
【０１３２】
図１２は、複数の列に配置されたプリシンクトを有する受信ビットストリーム１３３を復号する方法１２００を示す概略フロー図である。以下で説明するように、方法１２００は、ビデオ復号器１３４の機能モジュールのうちの１つ又は複数によって実行される。上述のように、１つの構成では、ビデオ復号器１３４が、ハードディスクドライブ２０５上に存在し、プロセッサ２０５によってその実行が制御されるソフトウェアアプリケーションプログラム２３３の１つ以上のソフトウェアコードモジュールとして実装されてもよい。
【０１３３】
方法１２００は、フレームヘッダ復号ステップ１２０２で始まる。フレームヘッダ復号ステップ１２０２において、アンパッカ１０２２は、プロセッサ２０５の制御下で、フレームヘッダシンタックス要素をアンパックすることによって、受信ビットストリーム１３３からフレームヘッダシンタックス要素を復号する。フレームヘッダシンタックス要素は、プリシンクト当たりの列の数を示すシグナリングを含む。シグナリングは、明示的であっても暗黙的であってもよい。
【０１３４】
明示的なシグナリングには、列の数と列境界をシグナリングするシンタックス要素が含まれ、列境界の粒度（例えば、５つの水平ウェーブレット分解レベルを使用した場合、１２８画素）の精度でシグナリングされる。
【０１３５】
暗黙のシグナリングは、各エントロピー復号器１０１０の処理能力に対するアプリオリな制約に依存する。例えば、１列アプローチは、毎秒６０フレームでのＵＨＤ  ４Ｋでの動作に対して可能である。フレーム解像度が同じフレームレートで８Ｋであると示される場合、画素レートは４Ｋの場合の４倍である。その場合、列の数は４であることが暗示され、各列は４Ｋの場合に見られるビットレートを超えないように制約される。
【０１３６】
次に、プロセッサ２０５における制御は、ステップ１２０２からプリシンクトヘッダ復号ステップ１２０４に移る。
【０１３７】
プリシンクトヘッダ復号ステップ１２０４において、アンパッカ１０２２はプロセッサ２０５の制御下で、プリシンクトヘッダをアンパックすることによってプリシンクトヘッダ（例えば、６０４）を復号する。プリシンクトヘッダは、プリシンクト内の各サブパケット群内の各サブパケットの開始位置をシグナリングするオフセットテーブルを含む。オフセットテーブルは、各サブパケットの並列解析を開始することを可能にする。複数の列が使用されている場合、プリシンクトヘッダ復号ステップ１２０４は、プリシンクトの行内の各列について別個のプリシンクトヘッダを復号する。次に、プロセッサ２０５における制御は、列サブパケット復号ステップ１２０６に移る。
【０１３８】
列サブパケット復号ステップ１２０６において、１つ以上のエントロピー復号器１０１０はプロセッサ２０５の制御下で、各列に関連するＭＳＢ位置ブロック（例えば、６４２）をそれぞれ復号する。各列に対して、対応するＭＳＢ位置ブロックが復号される。ステップ１２０６で実行される復号動作は、高い要求スループットのために、一般にハードウェア資源を使用して並列に行われる。解読動作は、各列に関連したサブパケットから各ＭＳＢ位置ブロックを同時に抽出するために、解読装置１０２２を必要とする。ＭＳＢ位置ブロックの並列解析に加えて、関連するデータブロック及び符号ブロックもまた並列に解析されてもよく、量子化された係数は復号されたウェーブレット係数（すなわち、１０２８）を生成するために並列に逆量子化される。次に、プロセッサ２０５における制御は、ウェーブレット合成フィルタステップ１２０８に進む。
【０１３９】
ウェーブレット合成フィルタステップ１２０８において、逆変換１０３０は、プロセッサ２０５の制御下で、復号されたウェーブレット係数に対してウェーブレット合成フィルタ演算を実行して、復号ビデオデータ１３５を生成する。次に、方法１２００は、ステップ１２０８に続いて終了する。
【０１４０】
システム１００の構成では、３つの色成分にはそれぞれ別個のサブパケット（例えば、６２０、６２２、６２４）が割り当てられ、各サブパケットはフレーム全体に拡がる。このように、各色成分のビットレートが独立して制御可能であり、各色成分について固定ビットレート動作を達成する必要性によって要求されるように、各色チャネルに対して別個のレート制御パラメータが存在してもよい。３つの色成分がそれぞれ別々のサブパケットに割り当てられる構成は一般に、ビデオ符号化器１１４内の３つのエントロピー符号化器及び３つのレート制御モジュールと、ビデオ復号器１３４内の３つのエントロピー復号器とを使用する。ビデオ符号化器１１４内の３つのエントロピー符号化器及び３つのレート制御モジュールのそれぞれ、並びにビデオ復号器１３４内の３つのエントロピー復号器は、少なくとも関連する色成分の固定ビットレートに一致する能力を有する。
【０１４１】
方法１１００の別の構成では、レート制御モジュール７２０が、推定コストを使用してレート制御パラメータ７２２（すなわち、切り捨てレベル及びリファインメント）を選択した後に、最終的に選択されたレート制御パラメータについてのみコスト計算が再び実行されるように動作する。例えば、量子化器８２４は、各サブバンドについて選択された切り捨てレベルで量子化を実行することによって、符号コスト８３０を補助するために使用される。このようにして、プリシンクトを符号化するための正確な最終コストが得られる。その結果、ステップ１１３において符号化コスト７３４をレート制御モジュール７２０に戻すように供給する際の、パッカモジュール７２８からのフィードバックループは存在しない。この構成は、考慮される各切り捨てレベルに対するコストの最も良くない場合の推定値に基づいてレート制御パラメータ７２０を選択する特性を保持する。フィードバックループの除去は、パッカモジュール７２８からレート制御モジュール７２０へのフィードバックループが設計に遅延を導入するかもしれないようないくつかの実装例において適切である。しかしながら、フィードバックループを除去することのコストは、量子化された係数を符号化する前に符号化コスト７３４を判定する目的で、１つの切り捨てレベルに対して量子化ステップを実行する（すなわち、量子化器８２４の１つのインスタンスを使用する）必要があることである。
【産業上の利用可能性】
【０１４２】
記載された構成はコンピュータ及びデータ処理産業に適用可能であり、特に、低レイテンシ（サブフレーム）ビデオ符号化システムのための、ビデオ信号のような信号の符号化、復号のためのデジタル信号処理に適用可能である。
【０１４３】
上記は本発明のいくつかの実施形態のみを記載しており、本発明の範囲及び精神から逸脱することなく、本発明に修正及び／又は変更を加えることができ、実施形態は例示的であって限定的ではない。
【０１４４】
本明細書の文脈において、単語「備える・含む(comprising)」は、「主に含むが、必ずしも単独ではない」又は「有する」又は「含む」を意味し、「のみからなる」を意味しない。「備える・含む(comprise)」及び「備える・含む(comprises)」のような単語「備える・含む(comprising)」の変化は、変化した対応する意味を有する。
【図１】
0006942820.tif 000002
【図２Ａ】
0006942820.tif 000003
【図２Ｂ】
0006942820.tif 000004
【図３Ａ】
0006942820.tif 000005
【図３Ｂ】
0006942820.tif 000006
【図４】
0006942820.tif 000007
【図５】
0006942820.tif 000008
【図６】
0006942820.tif 000009
【図７】
0006942820.tif 000010
【図８】
0006942820.tif 000011
【図９】
0006942820.tif 000012
【図１０】
0006942820.tif 000013
【図１１】
0006942820.tif 000014
【図１２】
0006942820.tif 000015