(57)【要約】  ビットストリームから画像フレーム内の符号化ツリーユニットの符号化ブロックを復号化するシステムおよび方法。方法は、画像フレームを受信することであって、画像フレームはクロマフォーマットを有し、画像フレームの複数のクロマチャネルは画像フレームの１つのルマチャネルに対してサブサンプリングされている、受信することと、符号化ツリーユニットの領域の寸法に応じて、符号化ツリーユニットの１つのルマチャネルに対する複数のルマ分割オプションを決定することと、を含む。方法は、また、領域の寸法に応じて、符号化ツリーユニットの複数のクロマチャネルに対する複数のクロマ分割オプションを決定することであって、複数のクロマ分割オプションは複数のルマ分割オプションとは異なり、許容される複数のクロマ分割オプションは最小サイズが１６サンプルの複数のクロマイントラ予測ブロックをもたらす、決定することと、ビットストリームから複数のフラグを決定し、決定された複数のルマ分割オプションの１つと決定された複数のクロマ分割オプションの１つを選択し、符号化ツリーユニットの符号化ブロックを復号化することと、を含む。【選択図】図１１
2022500926.tif 000002
【特許請求の範囲】
【請求項１】
ビットストリームから画像フレーム内の符号化ツリーユニットの符号化ブロックを復号化する方法であって、
前記画像フレームを受信することであって、前記画像フレームはクロマフォーマットを有し、前記画像フレームの複数のクロマチャネルは前記画像フレームの１つのルマチャネルに対してサブサンプリングされている、前記受信することと、
前記符号化ツリーユニットの領域の寸法に応じて、前記符号化ツリーユニットの前記１つのルマチャネルに対する複数のルマ分割オプションを決定することと、
前記領域の前記寸法に応じて、前記符号化ツリーユニットの前記複数のクロマチャネルに対する複数のクロマ分割オプションを決定することであって、前記複数のクロマ分割オプションは前記複数のルマ分割オプションとは異なり、許容される複数のクロマ分割オプションは最小サイズが１６サンプルの複数のクロマイントラ予測ブロックをもたらす、前記決定することと、
前記ビットストリームから複数のフラグを決定し、前記決定された複数のルマ分割オプションの１つと前記決定された複数のクロマ分割オプションの１つを選択し、前記符号化ツリーユニットの前記符号化ブロックを復号化することと、
を含む、方法。
【請求項２】
クロマブロックサイズは、前記画像フレームの複数のクロマチャネルに対して１６サンプルの倍数である
請求項１に記載の方法。
【請求項３】
前記決定された複数のルマ分割オプションは、前記画像フレームの１つのルマチャネルに対して１６サンプルの倍数である１つのルマブロックサイズをもたらす
請求項１に記載の方法。
【請求項４】
前記決定された複数のルマ分割オプションは、前記画像フレームの１つのルマチャネルに対して１６サンプルの倍数である１つのルマブロックサイズをもたらし、２サンプルの幅を有する複数のクロマブロックはブロックの複数のサブブロックへの分割を用いて符号化され、各サブブロックのサイズは２×８サンプルである
請求項１に記載の方法。
【請求項５】
前記決定された複数のルマ分割オプションは、前記画像フレームの１つのルマチャネルに対して１６サンプルの倍数である１つのルマブロックサイズをもたらし、２サンプルの高さを有する複数のクロマブロックはブロックの複数のサブブロックへの分割を用いて符号化され、各サブブロックのサイズは８×２サンプルである
請求項１に記載の方法。
【請求項６】
ビットストリームから画像フレーム内の符号化ツリーユニットの符号化ブロックを復号化する方法を実施するためのコンピュータプログラムを格納する非一時的コンピュータ可読媒体であって、前記コンピュータプログラムは、
前記画像フレームを受信するためのコードであって、前記画像フレームはクロマフォーマットを有し、前記画像フレームの複数のクロマチャネルは前記画像フレームの１つのルマチャネルに対してサブサンプリングされている、前記受信するためのコードと、
前記符号化ツリーユニットの領域の寸法に応じて、前記符号化ツリーユニットの前記１つのルマチャネルに対する複数のルマ分割オプションを決定するためのコードと、
前記領域の前記寸法に応じて、前記符号化ツリーユニットの前記複数のクロマチャネルに対する複数のクロマ分割オプションを決定するためのコードであって、前記複数のクロマ分割オプションは前記複数のルマ分割オプションとは異なり、許容される複数のクロマ分割オプションは最小サイズが１６サンプルの複数のクロマイントラ予測ブロックをもたらす、前記決定するためのコードと、
前記ビットストリームから複数のフラグを決定し、前記決定された複数のルマ分割オプションの１つと前記決定された複数のクロマ分割オプションの１つを選択し、前記符号化ツリーユニットの前記符号化ブロックを復号化するためのコードと、
を含む、非一時的コンピュータ可読媒体。
【請求項７】
ビデオ復号化器であって、
ビットストリームから画像フレームの符号化ツリーユニットを受信し、前記画像フレームはクロマフォーマットを有し、前記画像フレームの複数のクロマチャネルは前記画像フレームの１つのルマチャネルに対してサブサンプリングされており、
前記符号化ツリーユニットの領域の寸法に応じて、前記符号化ツリーユニットの前記１つのルマチャネルに対する複数のルマ分割オプションを決定し、
前記領域の前記寸法に応じて、前記符号化ツリーユニットの前記複数のクロマチャネルに対する複数のクロマ分割オプションを決定し、前記複数のクロマ分割オプションは前記複数のルマ分割オプションとは異なり、許容される複数のクロマ分割オプションは最小サイズが１６サンプルの複数のクロマイントラ予測ブロックをもたらし、
前記ビットストリームから複数のフラグを決定し、前記決定された複数のルマ分割オプションの１つと前記決定された複数のクロマ分割オプションの１つを選択し、前記符号化ツリーユニットの前記符号化ブロックを復号化する、
ように構成された、ビデオ復号化器。
【請求項８】
システムであって、
メモリと、
ビットストリームから画像フレーム内の符号化ツリーユニットの符号化ブロックを復号化する方法を実施するために、前記メモリに格納されたコードを実行するように構成された、プロセッサと、
を備え、前記方法は、
前記画像フレームを受信することであって、前記画像フレームはクロマフォーマットを有し、前記画像フレームの複数のクロマチャネルは前記画像フレームの１つのルマチャネルに対してサブサンプリングされている、前記受信することと、
前記符号化ツリーユニットの領域の寸法に応じて、前記符号化ツリーユニットの前記１つのルマチャネルに対する複数のルマ分割オプションを決定することと、
前記領域の前記寸法に応じて、前記符号化ツリーユニットの前記複数のクロマチャネルに対する複数のクロマ分割オプションを決定することであって、前記複数のクロマ分割オプションは前記複数のルマ分割オプションとは異なり、許容される複数のクロマ分割オプションは最小サイズが１６サンプルの複数のクロマイントラ予測ブロックをもたらす、前記決定することと、
前記ビットストリームから複数のフラグを決定し、前記決定された複数のルマ分割オプションの１つと前記決定された複数のクロマ分割オプションの１つを選択し、前記符号化ツリーユニットの前記符号化ブロックを復号化することと、
を含む、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の参照
本出願は、２０１８年９月２１日に出願されたオーストラリア国特許出願第２０１８２３３０４２号の米国特許法セクション１１９に基づく出願日の利益を主張するものであり、本明細書に完全に記載されているかのように、その全体が参照により組み込まれる。
【０００２】
本発明は、一般に、デジタルビデオ信号処理に関し、特に、ビデオサンプルのブロックのツリーを符号化および復号化するための方法、装置およびシステムに関するものである。また、本発明は、ビデオサンプルのブロックのツリーを符号化および復号化するためのコンピュータプログラムを記録したコンピュータ可読媒体を含むコンピュータプログラム製品にも関する。
【背景技術】
【０００３】
ビデオデータの送信および保存のためのアプリケーションを含む、ビデオ符号化のための多くのアプリケーションが現在存在する。また、多くのビデオ符号化標準が開発されており、他のものも現在開発中である。ビデオ符号化の標準化の最近の進展により、「ジョイントビデオエキスパートチーム」（ＪＶＥＴ）と呼ばれるグループが形成されている。ジョイントビデオエキスパートチーム（ＪＶＥＴ）は、「ビデオ符号化エキスパートグループ」（ＶＣＥＧ）とも呼ばれる国際電気通信連合（ＩＴＵ）の電気通信標準化部門（ＩＴＵ−Ｔ）のスタディグループ１６，研究課題６（ＳＧ１６／Ｑ６）のメンバーと「動画エキスパートグループ」（ＭＰＥＧ）とも呼ばれる国際標準化機構／国際電気標準会議のジョイント技術委員会１／サブ委員会２９／作業グループ１１（ＩＳＯ／ＩＥＣ  ＪＴＣ１／ＳＣ２９／ＷＧ１１）のメンバーとを含んでいる。
【０００４】
ジョイントビデオエキスパートチーム（ＪＶＥＴ）は、提案募集（ＣｆＰ）を発行し、米国のサンディエゴで開催された第１０回会議で回答を分析した。提出された提案は、現在の最新ビデオ圧縮規格である「高効率ビデオ符号化」（ＨＥＶＣ）を大幅に上回るビデオ圧縮能力を示していた。この結果を受けて、新たなビデオ圧縮規格である「多用途ビデオ符号化（ＶＶＣ）」の開発プロジェクトを開始することが決定された。ＶＶＣは、ビデオフォーマットの高機能化（高解像度化、高フレームレート化）や、帯域コストが相対的に高いＷＡＮ上でのサービス提供に対する市場の要求の高まりを受けて、これまで以上に高い圧縮性能が求められている。同時に、ＶＶＣは現代のシリコンプロセスで実装可能でなければならず、達成された性能と実装コストの間に許容できるトレードオフを提供しなければならない（例えば、シリコン面積、ＣＰＵプロセッサの負荷、メモリ利用率、帯域幅の観点から）。
【０００５】
ビデオデータは、それぞれが１つ以上のカラーチャネルを含む画像データの複数のフレームのシーケンスを含む。一般的には、１つのプライマリカラーチャネルと２つのセカンダリカラーチャネルが必要である。プライマリカラーチャネルは一般に「ルマ」チャネルと呼ばれ、セカンダリカラーチャネル（複数可）は一般に「クロマ」チャネルと呼ばれる。ビデオデータは通常、ＲＧＢ（赤−緑−青）色空間で表示されるが、この色空間は３つの成分の間に高度な相関関係がある。符号化器や復号化器が見るビデオデータの表現は、多くの場合、ＹＣｂＣｒなどの色空間を用いている。ＹＣｂＣｒは、伝達関数によって「ルマ」にマッピングされた輝度をＹ（プライマリ）チャネルに、クロマをＣｂとＣｒ（セカンダリ）チャネルに集約している。さらに、ＣｂおよびＣｒチャネルは、例えば水平方向に半分、垂直方向に半分というように、ルマチャネルに比べて低いレートで空間的にサンプリングされることがあり、これは「４：２：０クロマフォーマット」として知られている。４：２：０クロマフォーマットは、インターネットビデオストリーミング、テレビ放送、ブルーレイディスクへの保存など、一般消費者向けのアプリケーションで使用されている。ＣｂチャネルとＣｒチャネルを水平方向にハーフレートでサブサンプリングし、垂直方向にはサブサンプリングしない方式は「４：２：２クロマフォーマット」として知られている。４：２：２クロマフォーマットは、映画製作用のビデオを撮影するなど、プロ向けの用途で使用されることが多い。４：２：２クロマフォーマットは、サンプリングレートが高いため、カラーグレーディングなどの編集作業に強いビデオが得られる。４：２：２クロマフォーマットの素材は、消費者に配信される前に、４：２：０クロマフォーマットに変換された後、符号化されることが多い。クロマフォーマットに加えて、ビデオは解像度とフレームレートによっても特徴づけられる。解像度は３８４０ｘ２１６０の超高精細（ＵＨＤ）や７６８０ｘ４３２０の「８Ｋ」などがあり、フレームレートは６０Ｈｚや１２０Ｈｚなどがある。ルマのサンプルレートは、約５００メガサンプル／秒から数ギガサンプル／秒の範囲になる。４：２：０クロマフォーマットの場合、各クロマチャネルのサンプルレートは、ルマサンプルレートの１／４であり、４：２：２クロマフォーマットの場合、各クロマチャネルのサンプルレートは、ルマサンプルレートの１／２である。
【０００６】
ＶＶＣ規格は「ブロックベース」のコーデックであり、フレームはまず「符号化ツリーユニット」（ＣＴＵ）として知られる正方形の領域配列に分割される。ＣＴＵは一般的に、１２８×１２８のルマサンプルのような比較的大きな領域を占める。ただし、フレームの右端や下端にあるＣＴＵは面積が小さい場合がある。各ＣＴＵには、ルマチャネル用の「符号化ツリー」と、クロマチャネル用の追加の符号化ツリーが関連付けられている。符号化ツリーは、ＣＴＵの領域を「符号化ブロック」（ＣＢ）と呼ばれるブロックの集合に分解して定義する。この場合、ブロックは「符号化ユニット」（ＣＵ）と呼ばれ、各ＣＵは各カラーチャネルの符号化ブロックを持つ。ＣＢは特定の順序で符号化または復号化のために処理される。４：２：０クロマフォーマットを採用しているため、１２８×１２８のルマサンプルエリアに対応するルマ符号化ツリーを持つＣＴＵは、１２８×１２８のルマサンプルエリアに隣接する６４×６４のクロマサンプルエリアに対応するクロマ符号化ツリーを持っている。ルマチャネルとクロマチャネルに単一の符号化ツリーが使用されている場合、所定のエリアに配置されたブロックの集合体は、一般に「ユニット」と呼ばれ、例えば、上記のＣＵのほか、「予測ユニット」（ＰＵ）や「変換ユニット」（ＴＵ）などがある。所与のエリアに対して別々の符号化ツリーが使用される場合、上述のＣＢのほか、「予測ブロック」（ＰＢ）および「変換ブロック」（ＴＢ）が使用される。
【０００７】
上記の「ユニット」と「ブロック」の区別にかかわらず、「ブロック」という用語は、すべてのカラーチャネルに演算が適用されるフレームのエリアまたは領域の一般的な用語として使用することができる。
【０００８】
各ＣＵについて、フレームデータの対応するエリアのコンテンツ（サンプル値）の予測（ＰＵ）が生成される（「予測ユニット」）。さらに、予測値と、符号化器への入力時に見られる領域のコンテンツとの間の差（または空間領域における「残差」）の表現が形成される。各カラーチャネルの差は、残差係数のシーケンスとして変換符号化され、所定のＣＵに対する１つまたは複数のＴＵを形成することができる。適用される変換は、残差値の各ブロックに適用される離散コサイン変換（ＤＣＴ）または他の変換であってもよい。このプライマリ変換は分離して適用され、すなわち、二次元変換は２つのパスで実行される。まず、ブロック内のサンプルの各行に１次元変換を適用してブロックを変換しり。次に、部分結果の各列に一次元変換を適用して部分結果を変換し、残留サンプルを実質的に相関させる変換係数の最終ブロックを生成する。ＶＶＣ規格では、様々なサイズの変換がサポートされており、各辺が２の累乗になっている長方形のブロックの変換も含まれる。変換係数は、ビットストリームへのエントロピー符号化のために量子化される。
【０００９】
空間予測（「イントラ予測」）がＰＢを生成するために使用される場合、参照サンプルのセットが、現在のＰＢに対する予測サンプルを生成するために使用される。基準サンプルは、既に「再構成」（イントラ予測サンプルへの残留サンプルの追加）されたＰＢに隣接するサンプルを含む。これらの隣接するサンプルは、ＰＢの上に行を、ＰＢの左に列を形成する。この行と列は、ＰＢの境界を越えて、さらに近隣のサンプルを含んでいる。Ｚオーダスキャンでブロックをスキャンするため、参照サンプルの一部は直前のブロックで再構成されたものになる。直前のブロックのサンプルを使用すると、フィードバック依存性が発生し、ビデオ符号化器や復号化器でのブロックのスループットが制限される場合がある。
【発明の概要】
【００１０】
本発明の目的は、既存の装置の１つまたは複数の欠点を実質的に克服し、または少なくとも改善することである。
【００１１】
本開示の一態様は、ビットストリームから画像フレーム内の符号化ツリーユニットの符号化ブロックを復号化する方法を提供し、該方法は、前記画像フレームを受信することであって、前記画像フレームはクロマフォーマットを有し、前記画像フレームの複数のクロマチャネルは前記画像フレームの１つのルマチャネルに対してサブサンプリングされている、前記受信することと、前記符号化ツリーユニットの領域の寸法に応じて、前記符号化ツリーユニットの前記１つのルマチャネルに対する複数のルマ分割オプションを決定することと、前記領域の前記寸法に応じて、前記符号化ツリーユニットの前記複数のクロマチャネルに対する複数のクロマ分割オプションを決定することであって、前記複数のクロマ分割オプションは前記複数のルマ分割オプションとは異なり、許容される複数のクロマ分割オプションは最小サイズが１６サンプルの複数のクロマイントラ予測ブロックをもたらす、前記決定することと、前記ビットストリームから複数のフラグを決定し、前記決定された複数のルマ分割オプションの１つと前記決定された複数のクロマ分割オプションの１つを選択し、前記符号化ツリーユニットの前記符号化ブロックを復号化することと、を含む。
【００１２】
別の態様によれば、クロマブロックサイズは、前記画像フレームの複数のクロマチャネルに対して１６サンプルの倍数である。
【００１３】
別の態様によれば、前記決定された複数のルマ分割オプションは、前記画像フレームの１つのルマチャネルに対して１６サンプルの倍数である１つのルマブロックサイズをもたらす。
【００１４】
別の態様によれば、２サンプルの幅を有する複数のクロマブロックはブロックの複数のサブブロックへの分割を用いて符号化され、各サブブロックのサイズは２×８サンプルである。
【００１５】
別の態様によれば、２サンプルの高さを有する複数のクロマブロックはブロックの複数のサブブロックへの分割を用いて符号化され、各サブブロックのサイズは８×２サンプルである。
【００１６】
本開示の別の態様は、ビットストリームから画像フレーム内の符号化ツリーユニットの符号化ブロックを復号化する方法を実施するためのコンピュータプログラムを格納する非一時的コンピュータ可読媒体を提供し、前記コンピュータプログラムは、前記画像フレームを受信するためのコードであって、前記画像フレームはクロマフォーマットを有し、前記画像フレームの複数のクロマチャネルは前記画像フレームの１つのルマチャネルに対してサブサンプリングされている、前記受信するためのコードと、前記符号化ツリーユニットの領域の寸法に応じて、前記符号化ツリーユニットの前記１つのルマチャネルに対する複数のルマ分割オプションを決定するためのコードと、前記領域の前記寸法に応じて、前記符号化ツリーユニットの前記複数のクロマチャネルに対する複数のクロマ分割オプションを決定するためのコードであって、前記複数のクロマ分割オプションは前記複数のルマ分割オプションとは異なり、許容される複数のクロマ分割オプションは最小サイズが１６サンプルの複数のクロマイントラ予測ブロックをもたらす、前記決定するためのコードと、前記ビットストリームから複数のフラグを決定し、前記決定された複数のルマ分割オプションの１つと前記決定された複数のクロマ分割オプションの１つを選択し、前記符号化ツリーユニットの前記符号化ブロックを復号化するためのコードと、を含む。
【００１７】
本開示の別の態様は、ビデオ復号化器を提供し、該ビデオ復号化器は、ビットストリームから画像フレームの符号化ツリーユニットを受信し、前記画像フレームはクロマフォーマットを有し、前記画像フレームの複数のクロマチャネルは前記画像フレームの１つのルマチャネルに対してサブサンプリングされており、前記符号化ツリーユニットの領域の寸法に応じて、前記符号化ツリーユニットの前記１つのルマチャネルに対する複数のルマ分割オプションを決定し、前記領域の前記寸法に応じて、前記符号化ツリーユニットの前記複数のクロマチャネルに対する複数のクロマ分割オプションを決定し、前記複数のクロマ分割オプションは前記複数のルマ分割オプションとは異なり、許容される複数のクロマ分割オプションは最小サイズが１６サンプルの複数のクロマイントラ予測ブロックをもたらし、前記ビットストリームから複数のフラグを決定し、前記決定された複数のルマ分割オプションの１つと前記決定された複数のクロマ分割オプションの１つを選択し、前記符号化ツリーユニットの前記符号化ブロックを復号化する、ように構成される。
【００１８】
本開示の別の態様は、システムを提供し、該システムは、メモリと、ビットストリームから画像フレーム内の符号化ツリーユニットの符号化ブロックを復号化する方法を実施するために、前記メモリに格納されたコードを実行するように構成された、プロセッサと、を備え、前記方法は、前記画像フレームを受信することであって、前記画像フレームはクロマフォーマットを有し、前記画像フレームの複数のクロマチャネルは前記画像フレームの１つのルマチャネルに対してサブサンプリングされている、前記受信することと、前記符号化ツリーユニットの領域の寸法に応じて、前記符号化ツリーユニットの前記１つのルマチャネルに対する複数のルマ分割オプションを決定することと、前記領域の前記寸法に応じて、前記符号化ツリーユニットの前記複数のクロマチャネルに対する複数のクロマ分割オプションを決定することであって、前記複数のクロマ分割オプションは前記複数のルマ分割オプションとは異なり、許容される複数のクロマ分割オプションは最小サイズが１６サンプルの複数のクロマイントラ予測ブロックをもたらす、前記決定することと、前記ビットストリームから複数のフラグを決定し、前記決定された複数のルマ分割オプションの１つと前記決定された複数のクロマ分割オプションの１つを選択し、前記符号化ツリーユニットの前記符号化ブロックを復号化することと、を含む。
【００１９】
他の態様も開示されている。
【図面の簡単な説明】
【００２０】
以下、本発明の少なくとも一実施形態を、以下の図面および付録を参照して説明する。
【００２１】
【図１】図１は、ビデオ符号化および復号化システムを示す概略ブロック図である。
【００２２】
【図２Ａ】図２Ａは、図１のビデオ符号化および復号化システムの一方または両方が実施され得る汎用コンピュータシステムの概略ブロック図である。
【図２Ｂ】図２Ｂは、図１のビデオ符号化および復号化システムの一方または両方が実施され得る汎用コンピュータシステムの概略ブロック図である。
【００２３】
【図３】図３は、ビデオ符号化器の機能モジュールを示す概略ブロック図である。
【００２４】
【図４】図４は、ビデオ復号化器の機能モジュールを示す概略ブロック図である。
【００２５】
【図５】図５は、多用途ビデオ符号化のツリー構造において、１つのブロックの１つ以上のブロックへの利用可能な分割を示す概略ブロック図である。
【００２６】
【図６】図６は、多用途ビデオ符号化のツリー構造において、１つのブロックの１つ以上のブロックへの許可された分割を実現するためのデータフローを示す概略図である。
【００２７】
【図７Ａ】図７Ａは、符号化ツリーユニット（ＣＴＵ）を多数の符号化ユニットに分割する例を示す図である。
【図７Ｂ】図７Ｂは、符号化ツリーユニット（ＣＴＵ）を多数の符号化ユニットに分割する例を示す図である。
【００２８】
【図８】図８は、変換ブロックサイズと関連するスキャンパターンの集合を示す図である。
【００２９】
【図９】図９は、ルマ符号化ツリーおよびクロマ符号化ツリーにおいて許容される分割のリストを生成するための規則を示す図である。
【００３０】
【図１０】図１０は、画像フレームの符号化ツリーをビデオビットストリームに符号化するための方法のフロー図である。
【００３１】
【図１１】図１１は、ビデオビットストリームから画像フレームの符号化ツリーを復号化するための方法のフロー図である。
【００３２】
【図１２】図１２は、画像フレームのルマおよびクロマ符号化ツリーをビデオビットストリームに符号化するための方法のフロー図である。
【００３３】
【図１３】図１３は、ビデオビットストリームから画像フレームのルマおよびクロマ符号化ツリーを復号化するための方法のフロー図である。
【発明を実施するための形態】
【００３４】
添付図面のいずれか１つ以上において、同じ参照数字を有するステップおよび／または特徴が参照される場合、それらのステップおよび／または特徴は、反対の意図が現れない限り、本明細書の目的のために、同じ機能（複数可）または動作（複数可）を有する。
【００３５】
上述したように、直前のブロックからのサンプルの使用は、ビデオ符号化器または復号化器を介したブロックのスループットを制限する可能性のあるフィードバック依存性をもたらす。結果として生じるフィードバック依存性ループの深刻さを緩和する方法が、典型的なリアルタイム符号化および復号化アプリケーションに必要とされるように、ブロック処理が高いレートで維持されることを保証するために望まれる。フィードバック依存ループは、ＡＳＩＣ（特定用途向け集積回路）のクロック周波数が一般的に数百ＭＨｚであるのに対し、現代のビデオフォーマットの高いサンプルレート（例えば５００〜４０００サンプル／秒）の場合に特に問題となる。
【００３６】
図１は、ビデオ符号化および復号化システム１００の機能モジュールを示す概略ブロック図である。システム１００は、遭遇する最悪のケースのブロック処理速度を低減するために、ルマおよびクロマの符号化ツリーにおける領域の許容される細分化のために異なる規則を利用してもよい。例えば、システム１００は、ブロックのアスペクト比に関わらず、ブロックが常に１６サンプルの倍数のサイズであるように動作してもよい。また、残差係数符号化は、２サンプルの幅または高さを有するブロックの場合を含めて、１６の倍数のブロックサイズを利用してもよい。
【００３７】
システム１００は、ソースデバイス１１０と、デスティネーションデバイス１３０とを含む。通信チャネル１２０は、ソースデバイス１１０からデスティネーションデバイス１３０に符号化されたビデオ情報を通信するために使用される。いくつかの取り決めでは、ソースデバイス１１０およびデスティネーションデバイス１３０のいずれかまたは両方が、それぞれの携帯電話ハンドセットまたは「スマートフォン」を構成してもよく、その場合、通信チャネル１２０は、無線チャネルである。他の構成では、ソースデバイス１１０およびデスティネーションデバイス１３０は、ビデオ会議装置で構成されてもよく、その場合、通信チャネル１２０は、典型的には、インターネット接続などの有線チャネルである。さらに、ソースデバイス１１０およびデスティネーションデバイス１３０は、オーバーザエアのテレビジョン放送、ケーブルテレビアプリケーション、インターネットビデオアプリケーション（ストリーミングを含む）、およびエンコードされたビデオデータがファイルサーバ内のハードディスクドライブのような何らかのコンピュータ読み取り可能な記憶媒体に取り込まれるアプリケーションをサポートするデバイスを含む、広範囲のデバイスのいずれかを構成してもよい。
【００３８】
図１に示すように、ソースデバイス１１０は、ビデオソース１１２、ビデオ符号化器１１４および送信機１１６を含む。ビデオソース１１２は、典型的には、画像キャプチャセンサ、非一時的記憶媒体に格納された以前にキャプチャされたビデオシーケンス、またはリモート画像キャプチャセンサからのビデオフィードなど、キャプチャされたビデオフレームデータのソース（１１３として示される）を構成する。また、ビデオソース１１２は、コンピュータグラフィックスカードの出力であってもよく、例えば、タブレットコンピュータなどのコンピューティングデバイス上で実行されるオペレーティングシステムや様々なアプリケーションのビデオ出力を表示するものである。ビデオソース１１２としてイメージキャプチャセンサを含むことができるソースデバイス１１０の例には、スマートフォン、ビデオカムコーダ、プロ用ビデオカメラ、およびネットワークビデオカメラが含まれる。
【００３９】
ビデオ符号化器１１４は、図３を参照してさらに説明したように、ビデオソース１１２からのキャプチャされたフレームデータ（矢印１１３で示す）を、ビットストリーム（矢印１１５で示す）に変換（または「符号化」）する。ビットストリーム１１５は、送信機１１６によって、符号化されたビデオデータ（または「符号化されたビデオ情報」）として、通信チャネル１２０を介して送信される。また、ビットストリーム１１５が、後で通信チャネル１２０を介して送信されるまで、または通信チャネル１２０を介した送信に代えて、「フラッシュ」メモリやハードディスクドライブなどの非一時的記憶装置１２２に記憶されることも可能である。
【００４０】
デスティネーションデバイス１３０は、受信機１３２、ビデオ復号化器１３４、および表示装置１３６を含む。受信機１３２は、通信路１２０から符号化されたビデオデータを受信し、受信したビデオデータをビットストリーム（矢印１３３で示す）としてビデオ復号化器１３４に渡す。そして、ビデオ復号化器１３４は、復号化されたフレームデータ（矢印１３５で示す）を表示装置１３６に出力する。復号化されたフレームデータ１３５は、フレームデータ１１３と同じクロマフォーマットを有する。表示装置１３６の例としては、陰極線管、スマートフォンやタブレットコンピュータ、コンピュータモニタ、あるいは単体のテレビに搭載されているような液晶ディスプレイなどが挙げられる。また、ソースデバイス１１０およびデスティネーションデバイス１３０のそれぞれの機能が単一のデバイスで具現化されることも可能であり、その例としては、携帯電話端末やタブレットコンピュータなどが挙げられる。
【００４１】
上述した例示的な装置にかかわらず、ソースデバイス１１０およびデスティネーションデバイス１３０のそれぞれは、典型的にはハードウェアおよびソフトウェアコンポーネントの組み合わせによって、汎用のコンピューティングシステム内に構成されてもよい。図２Ａは、そのようなコンピュータシステム２００を示しており、このコンピュータシステム２００は、コンピュータモジュール２０１と、キーボード２０２、マウスポインタデバイス２０３、スキャナ２２６、ビデオソース１１２として構成されてもよいカメラ２２７、およびマイクロフォン２８０などの入力デバイスと、プリンタ２１５、表示装置１３６として構成されてもよい表示デバイス２１４、およびラウドスピーカ２１７などの出力デバイスと、を含む。外部の変調器−復調器（モデム）送受信機デバイス２１６は、接続２２１を介して通信ネットワーク２２０との間で通信するために、コンピュータモジュール２０１によって使用されてもよい。通信チャネル１２０を表し得る通信ネットワーク２２０は、インターネット、セルラー通信ネットワーク、またはプライベートＷＡＮなどの広域ネットワーク（ＷＡＮ）であってもよい。接続２２１が電話回線である場合、モデム２１６は、従来の「ダイアルアップ」モデムであってもよい。あるいは、接続２２１が大容量（例えば、ケーブルまたは光）接続である場合、モデム２１６は、ブロードバンドモデムであってもよい。また、通信ネットワーク２２０への無線接続には、無線モデムを用いてもよい。送受信機デバイス２１６は、送信機１１６および受信機１３２の機能を提供してもよく、また、通信チャネル１２０は、接続２２１に具現化されてもよい。
【００４２】
コンピュータモジュール２０１は、典型的には、少なくとも１つのプロセッサユニット２０５と、メモリユニット２０６とを含む。例えば、メモリユニット２０６は、半導体ランダムアクセスメモリ（ＲＡＭ）および半導体リードオンリーメモリ（ＲＯＭ）を有していてもよい。また、コンピュータモジュール２０１は、ビデオディスプレイ２１４、ラウドスピーカ２１７およびマイクロフォン２８０に結合するオーディオ−ビデオインタフェース２０７、キーボード２０２、マウス２０３、スキャナ２２６、カメラ２２７および任意にジョイスティックまたは他のヒューマンインタフェースデバイス（図示せず）に結合するＩ／Ｏインタフェース２１３、および外部モデム２１６およびプリンタ２１５用のインタフェース２０８を含む多数の入出力（Ｉ／Ｏ）インタフェースを含む。オーディオビデオインタフェース２０７からコンピュータモニタ２１４への信号は、一般に、コンピュータグラフィックスカードの出力である。いくつかの実装では、モデム２１６は、例えばインタフェース２０８内で、コンピュータモジュール２０１内に組み込まれてもよい。コンピュータモジュール２０１はまた、ローカルネットワークインタフェース２１１を有し、これは、ローカルエリアネットワーク（ＬＡＮ）として知られるローカルエリア通信ネットワーク２２２への接続２２３を介したコンピュータシステム２００の結合を可能にする。図２Ａに示されているように、ローカル通信ネットワーク２２２は、接続２２４を介して広域ネットワーク２２０に結合することもでき、これは、いわゆる「ファイアウォール」装置または同様の機能を有する装置を典型的に含むであろう。ローカルネットワークインタフェース２１１は、イーサネット（商標）回路カード、ブルートゥース（商標）無線装置、またはＩＥＥＥ８０２．１１無線装置で構成されてもよいが、インタフェース２１１については、他の多数のタイプのインタフェースが実施されてもよい。また、ローカルネットワークインタフェース２１１は、送信機１１６と受信機１３２の機能を提供してもよく、通信チャネル１２０もローカル通信ネットワーク２２２で具現化してもよい。
【００４３】
Ｉ／Ｏインタフェース２０８および２１３は、シリアルおよびパラレル接続のいずれかまたは両方を与えてもよく、前者は、典型的には、ユニバーサルシリアルバス（ＵＳＢ）規格に従って実装され、対応するＵＳＢコネクタ（図示せず）を有する。ストレージデバイス２０９は、典型的にはハードディスクドライブ（ＨＤＤ）２１０を含む。また、フロッピーディスクドライブや磁気テープドライブ（図示せず）などの他のストレージデバイスも使用することができる。光ディスクドライブ２１２は、典型的には、データの不揮発性ソースとして機能するために提供される。コンピュータシステム２００への適切なデータソースとして、例えば、光ディスク（例えば、ＣＤ−ＲＯＭ、ＤＶＤ、ブルーレイディスク（商標））、ＵＳＢ−ＲＡＭ、ポータブル、外付けハードドライブ、およびフロッピーディスクなどのポータブルメモリデバイスが使用されてもよい。典型的には、ＨＤＤ２１０、光学ドライブ２１２、ネットワーク２２０および２２２のいずれもが、ビデオソース１１２として、またはディスプレイ２１４を介した再生のために保存される復号化されたビデオデータの宛先として動作するようにも構成され得る。システム１００のソースデバイス１１０およびデスティネーションデバイス１３０は、コンピュータシステム２００に具現化されてもよい。
【００４４】
コンピュータモジュール２０１のコンポーネント２０５〜２１３は、典型的には、相互接続されたバス２０４を介して、関連技術者に知られているコンピュータシステム２００の従来の動作モードをもたらす方法で通信する。例えば、プロセッサ２０５は、接続２１８を用いてシステムバス２０４に結合される。同様に、メモリ２０６および光ディスクドライブ２１２は、接続２１９によってシステムバス２０４に結合されている。記載された装置を実施することができるコンピュータの例には、ＩＢＭ−ＰＣおよび互換機、サンＳＰＡＲＣステーション、アップルＭａｃ（商標）または同様のコンピュータシステムが含まれる。
【００４５】
適切または所望の場合、ビデオ符号化器１１４およびビデオ復号化器１３４、ならびに以下に説明する方法は、コンピュータシステム２００を使用して実施することができる。特に、ビデオ符号化器１１４、ビデオ復号化器１３４、および説明する方法は、コンピュータシステム２００内で実行可能な１つまたは複数のソフトウェアアプリケーションプログラム２３３として実装されてもよい。特に、ビデオ符号化器１１４、ビデオ復号化器１３４、および説明する方法のステップは、コンピュータシステム２００内で実行されるソフトウェア２３３内の命令２３１（図２Ｂ参照）によって効力を発揮する。ソフトウェアの命令２３１は、それぞれが１つまたは複数の特定のタスクを実行するための１つまたは複数のコードモジュールとして形成されてもよい。また、ソフトウェアは、２つの別々の部分に分割されてもよく、その場合、第１の部分および対応するコードモジュールは、説明した方法を実行し、第２の部分および対応するコードモジュールは、第１の部分とユーザとの間のユーザインタフェースを管理する。
【００４６】
ソフトウェアは、例えば、以下に説明する記憶装置を含むコンピュータ可読媒体に格納されてもよい。ソフトウェアは、コンピュータ可読媒体からコンピュータシステム２００にロードされ、その後、コンピュータシステム２００によって実行される。このようなソフトウェアまたはコンピュータプログラムが記録されたコンピュータ可読媒体は、コンピュータプログラム製品である。コンピュータシステム２００におけるコンピュータプログラム製品の使用は、好ましくは、ビデオ符号化器１１４、ビデオ復号化器１３４および説明した方法を実施するための有利な装置をもたらす。
【００４７】
ソフトウェア２３３は、典型的には、ＨＤＤ２１０またはメモリ２０６に格納される。ソフトウェアは、コンピュータ可読媒体からコンピュータシステム２００にロードされ、コンピュータシステム２００によって実行される。したがって、例えば、ソフトウェア２３３は、光ディスクドライブ２１２によって読み取られる光読取可能なディスク記憶媒体（例えば、ＣＤ−ＲＯＭ）２２５に格納されていてもよい。
【００４８】
いくつかの例では、アプリケーションプログラム２３３は、１つまたは複数のＣＤ−ＲＯＭ２２５に符号化されてユーザに供給され、対応するドライブ２１２を介して読み取られてもよく、または代替的に、ネットワーク２２０または２２２からユーザによって読み取られてもよい。さらに、ソフトウェアは、他のコンピュータ可読媒体からコンピュータシステム２００にロードすることもできる。コンピュータ可読記憶媒体とは、実行および／または処理のために、記録された命令および／またはデータをコンピュータシステム２００に提供する任意の非一時的の有形記憶媒体を指す。このような記憶媒体の例には、フロッピーディスク、磁気テープ、ＣＤ−ＲＯＭ、ＤＶＤ、ブルーレイディスク（商標）、ハードディスクドライブ、ＲＯＭまたは集積回路、ＵＳＢメモリ、光磁気ディスク、またはＰＣＭＣＩＡカード等のコンピュータ可読カードが含まれ、このようなデバイスがコンピュータモジュール２０１の内部にあるか外部にあるかは問わない。コンピュータモジュール４０１へのソフトウェア、アプリケーションプログラム、命令および／またはビデオデータもしくは符号化されたビデオデータの提供にも参加し得る一時的または非有形のコンピュータ可読伝送媒体の例としては、無線または赤外線の伝送路のほか、他のコンピュータまたはネットワークデバイスとのネットワーク接続、および電子メールの送信やＷｅｂサイトなどに記録された情報を含むインターネットまたはイントラネットなどが挙げられる。
【００４９】
上述したアプリケーションプログラム２３３の第２の部分および対応するコードモジュールは、ディスプレイ２１４上にレンダリングされるかまたは他の方法で表現される１つまたは複数のグラフィカルユーザインタフェース（ＧＵＩ）を実装するために実行されてもよい。典型的にはキーボード２０２およびマウス２０３の操作を通じて、コンピュータシステム２００およびアプリケーションのユーザは、ＧＵＩ（複数可）に関連するアプリケーションに制御コマンドおよび／または入力を提供するために、機能的に適応可能な方法でインタフェースを操作することができる。また、ラウドスピーカ２１７を介して出力される音声プロンプトや、マイクロフォン２８０を介して入力されるユーザの音声コマンドを利用したオーディオインタフェースなど、機能的に適応可能なユーザインタフェースの他の形態も実装することができる。
【００５０】
図２Ｂは、プロセッサ２０５と「メモリ」２３４の詳細な概略ブロック図である。メモリ２３４は、図２Ａのコンピュータモジュール２０１によってアクセス可能なすべてのメモリモジュール（ＨＤＤ２０９および半導体メモリ２０６を含む）の論理的集約を表す。
【００５１】
コンピュータモジュール２０１の初期電源投入時には、電源オン自己テスト（ＰＯＳＴ）プログラム２５０が実行される。ＰＯＳＴプログラム２５０は、典型的には、図２Ａの半導体メモリ２０６のＲＯＭ２４９に格納されている。なお、ＲＯＭ２４９のようにソフトウェアを格納するハードウェアデバイスをファームウェアと呼ぶことがある。ＰＯＳＴプログラム２５０は、コンピュータモジュール２０１内のハードウェアを検査して正しい機能を確保し、典型的には、プロセッサ２０５、メモリ２３４（２０９、２０６）、および同じく典型的にＲＯＭ２４９に格納されている基本入出力システムソフトウェア（ＢＩＯＳ）モジュール２５１をチェックする。ＰＯＳＴプログラム２５０が正常に実行されると、ＢＩＯＳ２５１は、図２Ａのハードディスクドライブ２１０を起動する。ハードディスクドライブ２１０の起動により、ハードディスクドライブ２１０に常駐しているブートストラップローダプログラム２５２がプロセッサ２０５を介して実行される。これにより、ＲＡＭメモリ２０６にオペレーティングシステム２５３がロードされ、これによりオペレーティングシステム２５３の動作が開始される。オペレーティングシステム２５３は、プロセッサ２０５によって実行可能なシステムレベルのアプリケーションであり、プロセッサ管理、メモリ管理、デバイス管理、ストレージ管理、ソフトウェアアプリケーションインタフェース、および汎用ユーザインタフェースを含む様々な高レベルの機能を果たすものである。
【００５２】
オペレーティングシステム２５３は、コンピュータモジュール２０１上で実行されている各プロセスまたはアプリケーションが、別のプロセスに割り当てられたメモリと衝突することなく実行するのに十分なメモリを有するように、メモリ２３４（２０９、２０６）を管理する。さらに、各プロセスが効果的に実行できるように、図２Ａのコンピュータシステム２００で利用可能な異なる種類のメモリを適切に使用しなければならない。したがって、集約されたメモリ２３４は、メモリの特定のセグメントがどのように割り当てられるかを説明することを意図したものではなく（特に断らない限り）、むしろ、コンピュータシステム２００によってアクセス可能なメモリの一般的な見解と、そのようなものがどのように使用されるかを提供することを意図したものである。
【００５３】
図２Ｂに示すように、プロセッサ２０５は、制御部２３９、算術論理ユニット（ＡＬＵ）２４０、およびキャッシュメモリと呼ばれることもあるローカルまたは内部メモリ２４８を含む多数の機能モジュールを含む。キャッシュメモリ２４８は、典型的には、レジスタ部に多数の記憶レジスタ２４４〜２４６を含む。１つまたは複数の内部バス２４１は、これらの機能モジュールを機能的に相互接続する。また、プロセッサ２０５は、典型的には、接続２１８を用いて、システムバス２０４を介して外部装置と通信するための１つ以上のインタフェース２４２を有する。メモリ２３４は、接続２１９を用いてバス２０４に結合されている。
【００５４】
アプリケーションプログラム２３３は、条件付きの分岐命令およびループ命令を含むことができる一連の命令２３１を含む。また、プログラム２３３は、プログラム２３３の実行で使用されるデータ２３２を含んでもよい。命令２３１およびデータ２３２は、それぞれメモリ位置２２８、２２９、２３０および２３５、２３６、２３７に格納される。命令２３１およびメモリ位置２２８〜２３０の相対的なサイズに応じて、メモリ位置２３０に示された命令によって描かれるように、特定の命令が単一のメモリ位置に格納されてもよい。代わりに、命令は、メモリ位置２２８および２２９に示される命令セグメントによって描かれるように、それぞれが別のメモリ位置に格納されるいくつかの部分にセグメント化されてもよい。
【００５５】
一般に、プロセッサ２０５は、その中で実行される命令のセットを与えられる。プロセッサ２０５は、後続の入力を待ち、これに対してプロセッサ２０５は、別の命令セットを実行することによって反応する。各入力は、入力装置２０２、２０３のうちの１つ以上によって生成されたデータ、ネットワーク２２０、２０２のうちの１つを介して外部ソースから受信されたデータ、ストレージデバイス２０６、２０９のうちの１つから取得されたデータ、または対応するリーダ２１２に挿入された記憶媒体２２５から取得されたデータを含む、多数のソースのうちの１つ以上から提供されてもよく、これらはすべて図２Ａに描かれている。一連の命令の実行は、場合によっては、データの出力を伴うことがある。また、実行は、データまたは変数をメモリ２３４に格納することを含んでもよい。
【００５６】
ビデオ符号化器１１４、ビデオ復号化器１３４、および説明した方法は、対応するメモリ位置２５５、２５６、２５７においてメモリ２３４に格納される入力変数２５４を使用してもよい。ビデオ符号化器１１４、ビデオ復号化器１３４、および説明した方法は、出力変数２６１を生成し、これらは、対応するメモリ位置２６２、２６３、２６４でメモリ２３４に格納される。中間変数２５８は、メモリ位置２５９、２６０、２６６、２６７に格納されてもよい。
【００５７】
図２Ｂのプロセッサ２０５を参照すると、レジスタ２４４、２４５、２４６、算術論理ユニット（ＡＬＵ）２４０、および制御部２３９は、プログラム２３３を構成する命令セット内のすべての命令について「フェッチ、デコード、および実行」サイクルを実行するために必要なマイクロオペレーションのシーケンスを実行するために協働する。各フェッチ、デコード、実行サイクルは以下を含む：
メモリ位置２２８、２２９、２３０から命令２３１をフェッチまたはリードするフェッチ動作、
制御部２３９が、どの命令がフェッチされたかを判断するデコード動作、および
制御部２３９および／またはＡＬＵ２４０が命令を実行する実行動作。
【００５８】
その後、次の命令のさらなるフェッチ、デコード、および実行サイクルが実行されてもよい。同様に、制御部２３９がメモリ位置２３２に値を格納または書き込むストアサイクルが実行されてもよい。
【００５９】
これから説明する図１０〜図１３の方法における各ステップまたはサブプロセスは、プログラム２３３の１つまたは複数のセグメントに関連付けられており、典型的には、プロセッサ２０５内のレジスタ部２４４、２４５、２４７、ＡＬＵ２４０、および制御部２３９が協働して、プログラム２３３の指摘されたセグメントに対する命令セット内のすべての命令に対するフェッチサイクル、デコードサイクル、および実行サイクルを実行することによって実行される。
【００６０】
図３は、ビデオ符号化器１１４の機能モジュールを示す概略ブロック図である。図４は、ビデオ復号化器１３４の機能モジュールを示す概略ブロック図である。一般に、データは、ビデオ符号化器１１４内の機能モジュールとビデオ復号化器１３４内の機能モジュールとの間を、ブロックを固定サイズのサブブロックに分割したようなサンプルまたは係数のグループで、あるいはアレイとして通過する。ビデオ符号化器１１４およびビデオ復号化器１３４は、図２Ａおよび図２Ｂに示すように、汎用コンピュータシステム２００を用いて実装されてもよく、ここで、様々な機能モジュールは、コンピュータシステム２００内の専用ハードウェアによって、ハードディスクドライブ２０５上に常駐するソフトウェアアプリケーションプログラム２３３の１つまたは複数のソフトウェアコードモジュールのようなコンピュータシステム２００内で実行可能なソフトウェアによって実装され、プロセッサ２０５によってその実行が制御されてもよい。あるいは、ビデオ符号化器１１４およびビデオ復号化器１３４は、専用のハードウェアと、コンピュータシステム２００内で実行可能なソフトウェアとの組み合わせによって実装されてもよい。ビデオ符号化器１１４、ビデオ復号化器１３４、および説明した方法は、代替的に、説明した方法の機能またはサブ機能を実行する１つまたは複数の集積回路などの専用ハードウェアで実装されてもよい。そのような専用ハードウェアは、グラフィックプロセッシングユニット（ＧＰＵ）、デジタルシグナルプロセッサ（ＤＳＰ）、特定用途向け標準製品（ＡＳＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、または１つまたは複数のマイクロプロセッサおよび関連するメモリを含んでもよい。特に、ビデオ符号化器１１４はモジュール３１０〜３８６を含み、ビデオ復号化器１３４はモジュール４２０〜４９６を含み、それぞれがソフトウェアアプリケーションプログラム２３３の１つ以上のソフトウェアコードモジュールとして実装されてもよい。
【００６１】
図３のビデオ符号化器１１４は、多用途ビデオ符号化（ＶＶＣ）のビデオ符号化パイプラインの一例であるが、本明細書で説明する処理ステージを実行するために、他のビデオコーデックを使用することもできる。ビデオ符号化器１１４は、一連のフレームのようなキャプチャされたフレームデータ１１３を受信し、各フレームは１つ以上のカラーチャネルを含む。フレームデータ１１３は、４：２：０クロマフォーマットであってもよいし、４：２：２クロマフォーマットであってもよい。ブロックパーティショナ３１０は、まず、フレームデータ１１３を、一般的に正方形の形状であり、ＣＴＵのための特定のサイズが使用されるように構成されたＣＴＵに分割する。ＣＴＵのサイズは、例えば、６４×６４、１２８×１２８、または２５６×２５６のルマサンプルであってもよい。ブロックパーティショナ３１０は、さらに、各ＣＴＵを、ルマ符号化ツリーおよびクロマ符号化ツリーに従って、１つまたは複数のＣＢに分割する。ＣＢは、様々なサイズを有し、正方形と非正方形の両方のアスペクト比を含んでもよい。ブロックパーティショナ３１０の動作については、図１０を参照してさらに説明する。しかし、ＶＶＣ規格では、ＣＢ、ＣＵ、ＰＵ、およびＴＵは、常に２の累乗である辺の長さを有する。したがって、３１２として表される現在のＣＢは、ＣＴＵのルマ符号化ツリーおよびクロマ符号化ツリーに従って、ＣＴＵの１つまたは複数のブロックに対する反復に従って進行し、ブロックパーティショナ３１０から出力される。ＣＴＵをＣＢにパーティショニングするためのオプションは、図５および図６を参照して以下にさらに説明される。
【００６２】
フレームデータ１１３の第１の分割から得られるＣＴＵは、ラスタースキャン順にスキャンされてもよく、１つまたは複数の「スライス」にグループ化されてもよい。スライスは、「イントラ」（または「Ｉ」）スライスであってもよい。イントラスライス（Ｉスライス）は、スライス内のすべてのＣＵがイントラ予測されることを示す。あるいは、スライスは、一方向予測または双方向予測（それぞれ、「Ｐ」または「Ｂ」スライス）であってもよく、それぞれ、スライスにおける一方向予測および双方向予測の追加的な利用可能性を示す。
【００６３】
各ＣＴＵについて、ビデオ符号化器１１４は、２つのステージで動作する。第１ステージ（「検索」ステージと呼ばれる）では、ブロックパーティショナ３１０は、符号化ツリーの様々な潜在的な構成をテストする。符号化ツリーの各潜在的な構成は、関連する「候補」ＣＢを有する。第１ステージでは、低歪みで高い圧縮効率を提供するＣＢを選択するために、様々な候補ＣＢをテストする。このテストには一般的にラグランジュ最適化が含まれており、それによって候補ＣＢはレート（符号化コスト）と歪み（入力フレームデータ１１３に対する誤差）の重み付けされた組み合わせに基づいて評価される。「最良」の候補ＣＢ（評価されたレート／歪みが最も小さいＣＢ）は、その後のビットストリーム１１５への符号化のために選択される。候補ＣＢの評価に含まれるのは、与えられた領域に対してＣＢを使用するか、または様々な分割オプションに従って領域をさらに分割し、小さくなった結果の領域のそれぞれをさらにＣＢで符号化するか、または領域をさらに分割するかというオプションである。結果として、ＣＢと符号化ツリー自体の両方が検索ステージで選択される。
【００６４】
ビデオ符号化器１１４は、各ＣＢ、例えばＣＢ３１２に対して、矢印３２０で示される予測ブロック（ＰＢ）を生成する。ＰＢ３２０は、関連するＣＢ３１２の内容を予測したものである。減算器モジュール３２２は、ＰＢ３２０とＣＢ３１２との間に、３２４（または、差が空間領域にあることを指して「残差」）として示される差を生成する。差分３２４は、ＰＢ３２０とＣＢ３１２の対応するサンプル間のブロックサイズの差分である。差分３２４は、変換され、量子化され、矢印３３６で示される変換ブロック（ＴＢ）として表される。ＰＢ３２０および関連するＴＢ３３６は、典型的には、例えば、評価されたコストまたは歪みに基づいて、多くの可能な候補ＣＢの１つから選択される。
【００６５】
候補符号化ブロック（ＣＢ）は、関連するＰＢおよび結果としての残差に対してビデオ符号化器１１４が利用可能な予測モードの１つから生じるＣＢである。各候補ＣＢは、図８を参照して以下に説明するように、１つまたは複数の対応するＴＢをもたらす。ＴＢ３３６は、差分３２４の量子化および変換された表現である。ビデオ復号化器１１４において予測されたＰＢと組み合わせると、ＴＢ３３６は、ビットストリームにおける追加のシグナリングを犠牲にして、復号されたＣＢと元のＣＢ３１２との間の差を低減する。
【００６６】
各候補符号化ブロック（ＣＢ）、すなわち、変換ブロック（ＴＢ）と組み合わせた予測ブロック（ＰＢ）は、したがって、関連する符号化コスト（または「レート」）および関連する差分（または「歪み」）を有する。レートは通常、ビット単位で測定される。ＣＢの歪みは、サンプル値の差、例えば、絶対差の和（ＳＡＤ）や二乗差の和（ＳＳＤ）として推定される。各候補ＰＢから得られる推定値は、モードセレクタ３８６が差分３２４を用いてイントラ予測モードを決定する（矢印３８８で表す）。各候補予測モードおよび対応する残差符号化に関連する符号化コストの推定は、残差のエントロピー符号化よりも著しく低いコストで実行することができる。したがって、多数の候補モードを評価して、レート−歪みの意味で最適なモードを決定することができる。
【００６７】
レート歪みの意味での最適なモードの決定は、典型的にはラグランジュ最適化のバリエーションを用いて達成される。イントラ予測モード３８８の選択は、典型的には、特定のイントラ予測モードを適用した結果の残留データに対する符号化コストを決定することを含む。符号化コストは、ハダマード変換などの比較的単純な変換を用いて推定変換残差コストを求める「絶対変換差の和」（ＳＡＴＤ）を用いて近似することができる。比較的単純な変換を使用するいくつかの実装では、簡略化された推定方法から得られるコストは、そうでなければ完全な評価から決定されるであろう実際のコストと単調に関連している。単調に関連する推定コストを有する実装では、簡略化された推定方法は、ビデオ符号化器１１４における複雑さを軽減して同じ決定（すなわちイントラ予測モード）を行うために使用され得る。推定コストと実際のコストとの間の関係において考えられる非単調性を許容するために、簡略化された推定方法は、最良の候補のリストを生成するために使用されてもよい。非単調性は、例えば、残留データの符号化に利用可能な更なるモード決定に起因する可能性がある。最良の候補のリストは、任意の数であってもよい。最良の候補を用いてより完全な探索を行い、候補のそれぞれについて残余データの符号化のための最適なモード選択を確立し、他のモード決定とともにイントラ予測モードの最終的な選択を可能にしてもよい。
【００６８】
他のモード決定には、「変換スキップ」として知られる前方変換をスキップする機能が含まれる。変換をスキップすることは、変換基底関数としての表現を介して符号化コストを低減するための十分な相関性を欠く残留データに適している。比較的単純なコンピュータで生成されたグラフィックスなどのある種のコンテンツも、同様の動作を示す。「スキップされた変換」では、変換自体が実行されていないにもかかわらず、残留係数は依然として符号化される。
【００６９】
ラグランジュまたは類似の最適化処理は、（ブロックパーティショナ３１０による）ＣＴＵのＣＢへの最適なパーティショニングの選択と、複数の可能性からの最良の予測モードの選択との両方に採用することができる。モードセレクタモジュール３８６における候補モードのラグランジュ最適化プロセスの適用により、最小のコスト測定を行うイントラ予測モードが「最良」モードとして選択される。「最良」モードは、選択されたイントラ予測モード３８８であり、また、エントロピー符号化器３３８によってビットストリーム１１５内に符号化される。モードセレクタモジュール３８６の動作によるイントラ予測モード３８８の選択は、ブロックパーティショナ３１０の動作にも及ぶ。例えば、イントラ予測モード３８８の選択の候補には、所定のブロックに適用されるモードと、集合的に所定のブロックとコロケーションされる複数のより小さなブロックに適用される追加的なモードとが含まれ得る。所与のブロックおよびより小さなコロケーションされたブロックに適用されるモードを含む場合、候補の選択プロセスは、暗黙的に、ＣＢへのＣＴＵの最適な階層的分解を決定するプロセスでもある。
【００７０】
ビデオ符号化器１１４の動作の第２ステージ（「符号化」ステージと呼ばれる）では、選択されたルマ符号化ツリーおよび選択されたクロマ符号化ツリー、したがって選択された各ＣＢに対する反復が、ビデオ符号化器１１４において実行される。反復では、本明細書でさらに説明するように、ＣＢがビットストリーム１１５に符号化される。
【００７１】
エントロピー符号化器３３８は、シンタックス要素の可変長符号化と、シンタックス要素の算術符号化の両方をサポートする。算術符号化は、コンテキスト適応型のバイナリ算術符号化プロセスを使用してサポートされる。算術符号化されたシンタックス要素は、１つまたは複数の「ビン」のシーケンスで構成される。ビンは、ビットと同様に、「０」または「１」の値を持つ。しかし、ビンは、ビットストリーム１１５内で個別のビットとしてエンコードされない。ビンは、「コンテキスト」と呼ばれる、関連する予測値（または「可能性が高い」または「最も可能性が高い」）および関連する確率を有する。符号化される実際のビンが予測値と一致した場合、「最も可能性の高いシンボル」（ＭＰＳ）が符号化される。最も可能性の高いシンボルの符号化は、消費されるビット数が少なくて済む。符号化されるべき実際のビンが可能性の高い値と不一致である場合、「最小確率シンボル」（ＬＰＳ）が符号化される。最小確率シンボルの符号化は、消費するビット数の点で比較的高いコストがかかる。ビン符号化技術は、「０」と「１」の確率が偏っているビンを効率的にコード化することができる。２つの可能な値を持つシンタックス要素（つまり「フラグ」）の場合、１つのビンで十分である。多くの可能な値を持つシンタックス要素の場合、一連のビンが必要である。
【００７２】
シーケンス内の後のビンの存在は、シーケンス内の以前のビンの値に基づいて決定されてもよい。さらに、各ビンは２つ以上のコンテキストと関連していてもよい。特定のコンテキストの選択は、シンタックス要素の以前のビン、隣接するシンタックス要素（すなわち、隣接するブロックからのもの）のビンの値などに依存することができる。コンテキスト符号化されたビンが符号化されるたびに、そのビンに対して選択されたコンテキスト（もしあれば）は、新しいビンの値を反映した方法で更新される。このように、二値算術符号化スキームは、適応的であると言われる。
【００７３】
また、ビデオ符号化器１１４によってサポートされるのは、コンテキストを持たないビン（「バイパスビン」）である。バイパスビンは、「０」と「１」との間の等身大の分布を仮定して符号化される。したがって、各ビンは、ビットストリーム１１５の１ビットを占める。コンテキストがないことで、メモリを節約し、複雑さを軽減することができ、したがって、バイパスビンは、特定のビンの値の分布が歪んでいないところで使用される。コンテキストおよび適応を採用するエントロピー符号化器の一例は、ＣＡＢＡＣ（Context Adaptive Binary Arithmetic Coder）として当技術分野で知られており、この符号化器の多くの変形がビデオ符号化に採用されている。
【００７４】
エントロピー符号化器３３８は、コンテキスト符号化されたビンとバイパス符号化されたビンの組み合わせを使用して、イントラ予測モード３８８を符号化する。典型的には、ビデオ符号化器１１４において、「最も確率の高いモード」のリストが生成される。最も確率の高いモードのリストは、典型的には、３つまたは６つのモードのような固定長であり、以前のブロックで遭遇したモードを含むことができる。コンテキスト符号化されたビンは、イントラ予測モードが最も確率の高いモードの１つであるかどうかを示すフラグを符号化する。イントラ予測モード３８８が最も確率の高いモードの１つである場合、バイパス符号化されたビンを使用して、さらなるシグナリングが符号化される。符号化された更なるシグナリングは、例えば、切り捨てられた１項ビン文字列を用いて、どの最も確率の高いモードがイントラ予測モード３８８に対応するかを示している。そうでなければ、イントラ予測モード３８８は、「残りのモード」として符号化される。残りのモードとしての符号化は、固定長コードのような代替シンタックスを使用し、同じくバイパスコード化されたビンを使用して符号化され、最確モードリストに存在するモード以外のイントラ予測モードを表現する。
【００７５】
マルチプレクサモジュール３８４は、決定された最良のイントラ予測モード３８８に従って、各候補ＣＢのテストされた予測モードから選択してＰＢ３２０を出力する。候補予測モードは、ビデオ符号化器１１４によってサポートされるすべての考えられる予測モードを含む必要はない。
【００７６】
予測モードは、大まかに２つのカテゴリに分類される。第１のカテゴリは、「フレーム内予測」（「イントラ予測」とも呼ばれる）である。フレーム内予測では、ブロックに対する予測が生成され、生成方法は、現在のフレームから得られた他のサンプルを使用してもよい。イントラ予測されたＰＢについては、ルマとクロマに対して異なるイントラ予測モードを使用することが可能であり、したがって、イントラ予測は主にＰＢに対する動作の観点から説明される。
【００７７】
予測モードの第２のカテゴリは、「フレーム間予測」（「インター予測」とも呼ばれる）である。フレーム間予測では、ビットストリーム内の符号化フレームの順序で、現在のフレームに先行する１つまたは２つのフレームからのサンプルを使用して、ブロックの予測が生成される。さらに、フレーム間予測では、通常、単一の符号化ツリーがルマチャネルとクロマチャネルの両方に使用される。ビットストリーム内の符号化フレームの順序は、撮影時や表示時のフレームの順序とは異なる場合がある。予測に１つのフレームが使用される場合、そのブロックは「一方向予測」と呼ばれ、１つの動きベクトルが関連付けられる。予測に２つのフレームが使用された場合、ブロックは「双方向予測」と呼ばれ、２つの関連する動きベクトルを持つ。Ｐスライスの場合、各ＣＵは、イントラ予測または一方向予測される。Ｂスライスの場合、各ＣＵは、イントラ予測、一方向予測、または双方向予測のいずれかである。フレームは、通常、「ピクチャグループ」構造を用いて符号化され、フレームの時間的な階層化を可能にする。フレームの時間的な階層化により、フレームは、フレームを表示する順序で、先行する画像と後続する画像を参照することができる。画像は、各フレームを復号化するための依存関係を確実に満たすために必要な順序で符号化される。
【００７８】
インター予測のサブカテゴリは、「スキップモード」と呼ばれる。インター予測モードとスキップモードは、２つの異なるモードとして説明されている。しかし、インター予測モードおよびスキップモードの両方は、先行するフレームからのサンプルのブロックを参照する動きベクトルを含む。インター予測では、動きベクトル予測器に対する動きベクトルを指定する、符号化された動きベクトルデルタが必要である。動きベクトル予測器は、「マージインデックス」で選択された１つまたは複数の候補動きベクトルのリストから取得される。符号化された動きベクトルデルタは、選択された動きベクトル予測に対する空間オフセットを提供する。また、インター予測は、ビットストリーム１３３の符号化された残差を使用する。スキップモードは、インデックス（「マージインデックス」とも呼ばれる）のみを使用して、複数の動きベクトル候補のうちの１つを選択する。選択された候補は、さらなるシグナリングなしに使用される。また、スキップモードは、いかなる残留係数の符号化もサポートしない。スキップモードが使用されるときに符号化された残余係数がないということは、スキップモードのための変換を実行する必要がないことを意味する。したがって、スキップモードは通常、パイプライン処理の問題を引き起こすことはない。パイプライン処理の問題は、イントラ予測されたＣＵとインター予測されたＣＵの場合に生じる可能性がある。スキップモードのシグナリングが制限されているため、スキップモードは、比較的高品質の参照フレームが利用可能な場合に、非常に高い圧縮性能を実現するのに有効である。ランダムアクセスピクチャグループ構造のより高い時間的層における双方向予測ＣＵは、典型的には、高品質の参照ピクチャおよび基礎的な動きを正確に反映する動きベクトル候補を有する。
【００７９】
サンプルは、動きベクトルおよび参照ピクチャインデックスに応じて選択される。動きベクトルおよび参照ピクチャインデックスは、すべてのカラーチャネルに適用され、したがって、インター予測は、主にＰＢではなくＰＵに対する動作の観点から説明される。各カテゴリ（つまり、フレーム内予測とフレーム間予測）において、ＰＵを生成するために異なる技術を適用することができる。例えば、イントラ予測は、以前に再構成されたサンプルの隣接する行および列からの値を、所定のフィルタリングおよび生成プロセスに従ってＰＵを生成するための指示と組み合わせて使用してもよい。あるいは、ＰＵは、少数のパラメータを用いて記述されてもよい。インター予測は、動きパラメータの数およびその精度が異なる場合がある。動きパラメータは、典型的には、参照フレームのリストからどの参照フレームを使用するかを示す参照フレームインデックスと、参照フレームのそれぞれに対する空間変換とからなるが、より多くのフレーム、特殊なフレーム、またはスケーリングやローテーションなどの複雑なアフィンパラメータを含んでいてもよい。さらに、参照されたサンプルブロックに基づいて密な動き推定値を生成するために、所定の動きリファインメント処理を適用してもよい。
【００８０】
「最良の」ＰＢ３２０を決定して選択し、減算器３２２で元のサンプルブロックからＰＢ３２０を減算したところで、３２４と表される符号化コストが最も低い残差が得られ、非可逆圧縮にかけられる。非可逆圧縮処理は、変換、量子化、エントロピー符号化の各ステップからなる。変換モジュール３２６は、差分３２４に前方変換を適用し、差分３２４を周波数領域に変換し、矢印３３２で表される変換係数を生成する。順方向変換は、典型的には分離可能であり、各ブロックの行のセットを変換し、次に列のセットを変換する。行および列の各セットの変換は、まずブロックの各行に一次元変換を適用して部分的な結果を生成し、次に部分的な結果の各列に適用して最終的な結果を生成することによって行われる。
【００８１】
変換係数３３２は、量子化モジュール３３４に渡される。モジュール３３４では、矢印３３６で表される残差係数を生成するために、「量子化パラメータ」に従った量子化が実行される。量子化パラメータは、所与のＴＢに対して一定であり、したがって、ＴＢに対する残差係数の生成のための一様なスケーリングをもたらす。非一様なスケーリングは、「量子化マトリクス」の適用によっても可能であり、それによって、各残差係数に適用されるスケーリング係数は、量子化パラメータと、典型的にはＴＢのサイズと等しいサイズを有するスケーリングマトリクスの対応するエントリとの組み合わせから得られる。残留係数３３６は、ビットストリーム１１５内で符号化するために、エントロピー符号化器３３８に供給される。典型的には、ＴＵの少なくとも１つの有意な残差係数を有する各ＴＢの残差係数は、スキャンパターンに従って、値の順序付けられたリストを生成するためにスキャンされる。スキャンパターンは、一般的に、４×４の「サブブロック」のシーケンスとしてＴＢをスキャンし、残差係数の４×４セットの粒度で規則的なスキャン動作を提供し、サブブロックの配置はＴＢのサイズに依存している。さらに、予測モード３８８および対応するブロック分割も、ビットストリーム１１５に符号化される。
【００８２】
上述したように、ビデオ符号化器１１４は、ビデオ復号化器１３４で見られるフレーム表現に対応するフレーム表現へのアクセスを必要とする。したがって、残差係数３３６はまた、逆量子化モジュール３４０によって逆量子化され、矢印３４２で表される逆変換係数を生成する。逆変換係数３４２は、逆変換モジュール３４８に通されて、矢印３５０で表されるＴＵの残留サンプルを生成する。和算モジュール３５２は、残差サンプル３５０とＰＵ３２０とを加算して、ＣＵの再構成サンプル（矢印３５４で示される）を生成する。
【００８３】
再構成されたサンプル３５４は、基準サンプルキャッシュ３５６およびインループフィルタモジュール３６８に渡される。参照サンプルキャッシュ３５６は、典型的にはＡＳＩＣ上のスタティックＲＡＭを使用して実装され（したがって、コストのかかるオフチップメモリアクセスを回避する）、フレーム内の後続のＣＵに対するフレーム内ＰＢを生成するための依存関係を満たすために必要な最小限のサンプルストレージを提供する。最小限の依存性には、次の行のＣＴＵで使用するための、ＣＴＵの行の底部に沿ったサンプルの「ラインバッファ」や、ＣＴＵの高さによって設定されるカラムバッファが含まれる。参照サンプルキャッシュ３５６は、参照サンプル（矢印３５８で表される）を参照サンプルフィルタ３６０に供給する。サンプルフィルタ３６０は、平滑化操作を適用して、フィルタリングされた参照サンプル（矢印３６２で示される）を生成する。フィルタリングされた参照サンプル３６２は、フレーム内予測モジュール３６４によって使用され、矢印３６６で表されるサンプルのイントラ予測ブロックを生成する。各候補のイントラ予測モードについて、フレーム内予測モジュール３６４は、３６６であるサンプルのブロックを生成する。
【００８４】
インループフィルタモジュール３６８は、再構成されたサンプル３５４にいくつかのフィルタリングステージを適用する。フィルタリングステージは、不連続性から生じるアーティファクトを低減するためにＣＵ境界に整列した平滑化を適用する「デブロッキングフィルタ」（ＤＢＦ）を含む。インループフィルタモジュール３６８に存在する別のフィルタリングステージは、「適応ループフィルタ」（ＡＬＦ）であり、これは、ウィーナーベースの適応フィルタを適用して歪みをさらに低減する。インループフィルタモジュール３６８に存在する別のフィルタリングステージは、「サンプル適応オフセット」（ＳＡＯ）フィルタである。ＳＡＯフィルタは、まず、再構成されたサンプルを１つまたは複数のカテゴリに分類し、割り当てられたカテゴリに応じて、サンプルレベルでオフセットを適用することによって動作する。
【００８５】
矢印３７０で表されるフィルタリングされたサンプルは、インループフィルタモジュール３６８から出力される。フィルタリングされたサンプル３７０は、フレームバッファ３７２に格納される。フレームバッファ３７２は、典型的には、複数（例えば１６枚まで）のピクチャを格納する容量を有し、したがって、メモリ２０６に格納される。フレームバッファ３７２は、必要なメモリ消費量が大きいため、典型的にはオンチップメモリを使用して格納されない。そのため、フレームバッファ３７２へのアクセスは、メモリの帯域幅の点でコストがかかる。フレームバッファ３７２は、基準フレーム（矢印３７４で表される）を動き推定モジュール３７６および動き補償モジュール３８０に提供する。
【００８６】
動き推定モジュール３７６は、フレームバッファ３７２内の参照フレームの１つのブロックを参照して、それぞれが本ＣＢの位置からのデカルト空間オフセットである多数の「動きベクトル」（３７８として示される）を推定する。参照サンプルのフィルタリングされたブロック（３８２として示される）は、各動きベクトルに対して生成される。フィルタリングされた参照サンプル３８２は、モードセレクタ３８６による潜在的な選択に利用可能な更なる候補モードを形成する。さらに、所定のＣＵについて、ＰＵ３２０は、１つの参照ブロックを用いて形成されてもよいし（「一方向予測」）、２つの参照ブロックを用いて形成されてもよい（「双方向予測」）。選択された動きベクトルに対して、動き補償モジュール３８０は、動きベクトルのサブピクセル精度を支持するフィルタリング処理に従って、ＰＢ３２０を生成する。このように、動き推定モジュール３７６（多くの候補の動きベクトルで動作する）は、動き補償モジュール３８０（選択された候補のみで動作する）のフィルタリング処理と比較して、簡略化されたフィルタリング処理を実行して、計算複雑性の低減を達成することができる。
【００８７】
図３のビデオ符号化器１１４は、多用途ビデオ符号化（ＶＶＣ）を参照して説明されているが、他のビデオ符号化規格または実装も、モジュール３１０〜３８６の処理ステージを採用してもよい。また、フレームデータ１１３（およびビットストリーム１１５）は、メモリ２０６、ハードディスクドライブ２１０、ＣＤ−ＲＯＭ、Ｂｌｕ−ｒａｙディスク（商標）、またはその他のコンピュータ可読記憶媒体から読み出されて（または書き込まれて）もよい。さらに、フレームデータ１１３（およびビットストリーム１１５）は、通信ネットワーク２２０に接続されたサーバや無線周波数受信機などの外部から受信されて（または送信されて）もよい。
【００８８】
ビデオ復号化器１３４を図４に示す。図４のビデオ復号化器１３４は、多用途ビデオ符号化（ＶＶＣ）ビデオ復号化パイプラインの一例であるが、本明細書で説明する処理ステージを実行するために、他のビデオコーデックを使用することもできる。図４に示すように、ビデオ復号化器１３４には、ビットストリーム１３３が入力される。ビットストリーム１３３は、メモリ２０６、ハードディスクドライブ２１０、ＣＤ−ＲＯＭ、Ｂｌｕ−ｒａｙディスク（商標）、またはその他の非一時的なコンピュータ可読記憶媒体から読み取られてもよい。あるいは、ビットストリーム１３３は、通信ネットワーク２２０に接続されたサーバや無線周波数受信機などの外部ソースから受信されてもよい。ビットストリーム１３３は、復号化されるべきキャプチャされたフレームデータを表す符号化されたシンタックス要素を含む。
【００８９】
ビットストリーム１３３は、エントロピー復号化器モジュール４２０に入力される。エントロピー復号化器モジュール４２０は、ビットストリーム１３３からシンタックス要素を抽出し、シンタックス要素の値をビデオ復号化器１３４の他のモジュールに渡す。エントロピー復号化器モジュール４２０は、ＣＡＢＡＣアルゴリズムを適用して、ビットストリーム１３３からシンタックス要素を復号する。復号化されたシンタックス要素は、ビデオ復号化器１３４内のパラメータを再構築するために使用される。パラメータには、残差係数（矢印４２４で表される）およびイントラ予測モードなどのモード選択情報（矢印４５８で表される）が含まれる。また、モード選択情報には、動きベクトルなどの情報や、各ＣＴＵを１つ以上のＣＢに分割することも含まれる。パラメータは、典型的には、以前に復号化されたＣＢからのサンプルデータと組み合わせて、ＰＢを生成するために使用される。
【００９０】
残差係数４２４は、逆量子化モジュール４２８に入力される。逆量子化モジュール４２８は、残差係数４２４に対して逆量子化（または「スケーリング」）を実行して、量子化パラメータに従って、矢印４４０で表される再構成された変換係数を作成する。不均一な逆量子化マトリクスの使用がビットストリーム１３３で示される場合、ビデオ復号化器１３４は、スケーリング係数のシーケンスとしてビットストリーム１３３から量子化マトリクスを読み取り、スケーリング係数をマトリクスに配列する。逆スケーリングは、量子化マトリクスを量子化パラメータと組み合わせて使用し、再構成された変換係数４４０を作成する。
【００９１】
再構成された変換係数４４０は、逆変換モジュール４４４に渡される。モジュール４４４は、係数を周波数領域から空間領域に戻して変換する。ＴＢは、有意な残差係数および有意でない残差係数値に基づいて効果的に行われる。モジュール４４４の動作の結果は、矢印４４８で表される残差サンプルのブロックである。残差サンプル４４８は、対応するＣＵと等しいサイズである。残差サンプル４４８は、和算モジュール４５０に供給される。和算モジュール４５０において、残留サンプル４４８は、復号化されたＰＢ（４５２として表される）に追加され、矢印４５６で表される再構成されたサンプルのブロックを生成する。再構成されたサンプル４５６は、再構成されたサンプルキャッシュ４６０およびインループフィルタリングモジュール４８８に供給される。インループフィルタリングモジュール４８８は、４９２で表されるフレームサンプルの再構成されたブロックを生成する。フレームサンプル４９２は、フレームバッファ４９６に書き込まれる。
【００９２】
再構成されたサンプルキャッシュ４６０は、ビデオ符号化器１１４の再構成されたサンプルキャッシュ３５６と同様に動作する。再構成サンプルキャッシュ４６０は、メモリ２０６を使用せずに（例えば、典型的なオンチップメモリであるデータ２３２を代わりに使用することによって）、後続のＣＢをイントラ予測するために必要な再構成サンプルのストレージを提供する。矢印４６４で表される参照サンプルは、再構成サンプルキャッシュ４６０から得られ、参照サンプルフィルタ４６８に供給されて、矢印４７２で示されるフィルタリングされた参照サンプルを生成する。フィルタリングされた参照サンプル４７２は、フレーム内予測モジュール４７６に供給される。モジュール４７６は、ビットストリーム１３３にシグナリングされたイントラ予測モードパラメータ４５８に従って、矢印４８０で示されるイントラ予測サンプルのブロックを生成し、エントロピー復号化器４２０によって復号化される。
【００９３】
イントラ予測が現在のＣＢについてビットストリーム１３３に示されている場合、イントラ予測されたサンプル４８０は、マルチプレクサモジュール４８４を介して、復号されたＰＢ４５２を形成する。
【００９４】
インター予測が現在のＣＢのためのビットストリーム１３３において指示される場合、動き補償モジュール４３４は、フレームバッファ４９６からのサンプルのブロックを選択してフィルタリングするために、動きベクトルおよび参照フレームインデックスを使用して、４３８として表されるインター予測されたサンプルのブロックを生成する。サンプルのブロック４９８は、フレームバッファ４９６に格納された前に復号化されたフレームから得られる。双方向予測のために、サンプルの２つのブロックが生成され、一緒にブレンドされて、復号化されたＰＢ４５２のためのサンプルを生成する。フレームバッファ４９６には、インループフィルタリングモジュール４８８からのフィルタリングされたブロックデータ４９２が入力される。ビデオ符号化器１１４のインループフィルタリングモジュール３６８と同様に、インループフィルタリングモジュール４８８は、ＤＢＦ、ＡＬＦおよびＳＡＯのフィルタリング動作のいずれか、少なくとも、またはすべてを適用する。インループフィルタリングモジュール３６８は、再構成されたサンプル４５６から、フィルタリングされたブロックデータ４９２を生成する。
【００９５】
図５は、多用途ビデオ符号化のツリー構造において、１つの領域を１つ以上のサブ領域に分割する利用可能な分割または分割のコレクション５００を示す概略ブロック図である。コレクション５００に示される分割は、図３を参照して説明したように、ラグランジュ最適化によって決定されるように、符号化ツリーに従って各ＣＴＵを１つまたは複数のＣＵまたはＣＢに分割するために、符号化器１１４のブロックパーティショナ３１０が利用可能である。
【００９６】
コレクション５００は、正方形の領域が他の、おそらく非正方形のサブ領域に分割されることのみを示しているが、図５００は、潜在的な分割を示しているが、含有領域が正方形であることを要求していないことを理解すべきである。含まれる領域が非正方形である場合、分割の結果得られるブロックの寸法は、含まれるブロックのアスペクト比に応じてスケーリングされる。ある領域がさらに分割されない場合、つまり符号化ツリーのリーフノードでは、ＣＵがその領域を占有する。ブロックパーティショナ３１０によるＣＴＵの１つまたは複数のＣＵへの特定の細分化は、ＣＴＵの「符号化ツリー」と呼ばれる。領域をサブ領域に細分化するプロセスは、結果として生じるサブ領域が最小のＣＵサイズに達したときに終了しなければならない。ＣＵは、例えば４×４より小さいサイズを禁止するだけでなく、幅または高さの最小値が４であるように制約されている。これ以外にも、幅と高さの両方、または幅と高さの両方の最小値を設定することも可能である。細分化のプロセスは、最も深いレベルの分解の前に終了することもあり、その結果、最小のＣＵサイズよりも大きいＣＵができる。分割が行われず、１つのＣＵがＣＴＵの全体を占めることも可能である。ＣＴＵの全体を占める単一のＣＵは、利用可能な最大の符号化ユニットサイズとなる。さらに、分割が行われないＣＵは、処理領域のサイズよりも大きくなる。符号化ツリーの最上位レベルで２値または３値の分割が行われた結果、６４ｘ１２８、１２８ｘ６４、３２ｘ１２８、１２８ｘ３２などのＣＵサイズが可能となり、それぞれが処理領域サイズよりも大きくなる。処理領域サイズよりも大きいＣＵＳの例については、図１０を参照してさらに説明する。
【００９７】
符号化ツリーのリーフノードには、それ以上細分化されていないＣＵが存在する。例えば、リーフノード５１０は、１つのＣＵを含む。符号化ツリーの非リーフノードには、２つ以上のさらなるノードへの分割のいずれかが存在し、その各々は、こうして１つのＣＵを含むリーフノードを含むか、またはより小さい領域へのさらなる分割を含むことができる。
【００９８】
クワッドツリー分割５１２は、図５に示すように、包含領域を４つの等しいサイズの領域に分割する。ＨＥＶＣと比較して、多用途ビデオ符号化（ＶＶＣ）は、水平２分割５１４および垂直２分割５１６の追加により、さらなる柔軟性を達成する。分割５１４と５１６のそれぞれは、含まれる領域を２つの同じサイズの領域に分割する。分割は、包含ブロック内の水平境界（５１４）または垂直境界（５１６）に沿って行われる。
【００９９】
多用途ビデオ符号化では、３分割の水平分割５１８と３分割の垂直分割５２０を追加することで、さらなる柔軟性が得られる。３分割５１８および５２０は、ブロックを、含有領域の幅または高さの１／４および３／４に沿って水平（５１８）または垂直（５２０）のいずれかに境界づけられた３つの領域に分割する。四分木、二分木、三分木の組み合わせは、「ＱＴＢＴＴＴ」と呼ばれる。ツリーのルートには、ゼロまたはそれ以上のクワッドツリーの分割（ツリーの「ＱＴ」セクション）が含まれる。ＱＴセクションが終了すると、ゼロまたはそれ以上の２分割または３分割が発生し（ツリーの「マルチツリー」または「ＭＴ」セクション）、最終的にツリーのリーフノードでＣＢまたはＣＵで終了する。ツリーがすべてのカラーチャネルを記述している場合、ツリーのリーフノードはＣＵとなります。ツリーがルマチャネルまたはクロマチャネルを記述する場合、ツリーのリーフノードはＣＢである。
【０１００】
四分木のみをサポートし、したがって四角いブロックのみをサポートするＨＥＶＣと比較して、ＱＴＢＴＴＴは、特に二分木および／または三分木の分割を再帰的に適用する可能性を考慮すると、より多くの可能なＣＵサイズをもたらす。ブロックの幅または高さが４サンプル未満または４サンプルの倍数にならない分割を排除するように分割オプションを制限することで、通常とは異なる（正方形ではない）ブロックサイズの可能性を減らすことができる。一般的に、この制約はルマサンプルを考慮して適用される。しかし、ここで説明する方法では、クロマチャネルのブロックに個別に制約を適用することができる。例えば、フレームデータが４：２：０クロマフォーマットまたは４：２：２クロマフォーマットの場合、クロマチャネルの分割オプションに制約を適用すると、ルマとクロマの最小ブロックサイズが異なることになる。各分割では、包含する領域に対して横方向の寸法が変わらないか、半分になるか、４分の１になるかのサブ領域が生成される。そして、ＣＴＵのサイズは２の累乗であるため、すべてのＣＵの側面寸法も２の累乗となる。
【０１０１】
図６は、多用途ビデオ符号化で使用されるＱＴＢＴＴＴ（または「符号化ツリー」）構造のデータフロー６００を示す概略フロー図である。ＱＴＢＴＴＴ構造は、ＣＴＵの１つまたは複数のＥＣＵへの分割を定義するために、各ＣＴＵに対して使用される。各ＣＴＵのＱＴＢＴＴＴ構造は、ビデオ符号化器１１４内のブロックパーティショナ３１０によって決定され、ビデオ復号化器１３４内のエントロピー復号化器４２０によって、ビットストリーム１１５に符号化されるか、またはビットストリーム１３３から復号化される。データフロー６００はさらに、図５に示す分割に従って、ＣＴＵを１つまたは複数のＣＵに分割するためにブロックパーティショナ３１０が利用できる許容可能な組み合わせを特徴とする。
【０１０２】
階層の最上位レベル、すなわちＣＴＵから出発して、まずゼロまたは複数のクアッドツリー分割が実行される。具体的には、クアッドツリー（ＱＴ）分割の決定６１０が、ブロックパーティショナ３１０によって行われる。「１」シンボルを返す６１０での決定は、クアッドツリー分割５１２に従って、現在のノードを４つのサブノードに分割する決定を示す。その結果、６２０でのように、４つの新しいノードが生成され、各新しいノードについて、ＱＴ分割決定６１０に再帰する。各新しいノードは、ラスタ（またはＺスキャン）の順序で考慮される。あるいは、ＱＴ分割決定６１０が、さらなる分割を行わないことを示す（「０」シンボルを返す）場合、クアッドツリー分割は停止し、続いてマルチツリー（ＭＴ）分割が検討される。
【０１０３】
まず、ブロックパーティショナ３１０によって、ＭＴ分割決定６１２が行われる。６１２では、ＭＴ分割を行うかどうかの決定が示される。決定６１２で「０」シンボルを返すことは、ノードのサブノードへのさらなる分割を実行しないことを示す。ノードのさらなる分割が実行されない場合、そのノードは、符号化ツリーのリーフノードであり、ＣＵに対応する。リーフノードは６２２で出力される。あるいは、ＭＴ分割６１２がＭＴ分割を実行する決定を示す（「１」シンボルを返す）場合、ブロックパーティショナ３１０は、方向決定６１４に進む。
【０１０４】
方向決定６１４は、ＭＴ分割の方向を、水平（「Ｈ」または「０」）または垂直（「Ｖ」または「１」）のいずれかとして示す。ブロックパーティショナ３１０は、決定６１４が水平方向を示す「０」を返した場合、決定６１６に進む。ブロックパーティショナ３１０は、決定６１４が垂直方向を示す「１」を返した場合、決定６１８に進む。
【０１０５】
決定６１６、６１８のそれぞれにおいて、ＭＴ分割の分割数は、ＢＴ／ＴＴ分割では、２つ（２分割または「ＢＴ」ノード）または３つ（３分割または「ＴＴ」）のいずれかが示される。すなわち、６１４からの指示方向が水平の場合には、ブロックパーティショナ３１０によってＢＴ／ＴＴ分割決定６１６が行われ、６１４からの指示方向が垂直の場合には、ブロックパーティショナ３１０によってＢＴ／ＴＴ分割決定６１８が行われる。
【０１０６】
ＢＴ／ＴＴ分割決定６１６は、水平分割が、「０」を返すことで示される２分割５１４であるか、「１」を返すことで示される３分割５１８であるかを示す。ＢＴ／ＴＴ分割決定６１６が２分割を示す場合、ＨＢＴ  ＣＴＵノード生成ステップ６２５において、水平２分割５１４に応じて、ブロックパーティショナ３１０により２つのノードが生成される。ＢＴ／ＴＴ分割６１６が３分割を示すとき、生成ＨＴＴ＿ＣＴＵノードステップ６２６において、水平３分割５１８に従って、３つのノードがブロックパーティショナ３１０によって生成される。
【０１０７】
ＢＴ／ＴＴ分割決定６１８は、垂直分割が、「０」を返すことで示される２分割５１６であるか、「１」を返すことで示される３分割５２０であるかを示す。ＢＴ／ＴＴ分割６１８が２分割を示す場合、ＶＢＴ＿ＣＴＵノード生成ステップ６２７において、ブロックパーティショナ３１０により、垂直２分割５１６に応じて２つのノードが生成される。ＢＴ／ＴＴ分割６１８が３分割を示す場合、生成ＶＴＴ＿ＣＴＵノードステップ６２８において、垂直３分割５２０に従って、ブロックパーティショナ３１０によって３つのノードが生成される。ステップ６２５〜６２８から得られる各ノードに対して、方向６１４に応じて、左から右または上から下の順序で、ＭＴ分割決定６１２に戻るデータフロー６００の再帰が適用される。結果として、二分木および三分木の分割は、様々なサイズを有するＣＵを生成するために適用され得る。
【０１０８】
符号化木の各ノードで許可される分割と許可されない分割のセットについて、図９を参照してさらに説明する。
【０１０９】
図７Ａおよび７Ｂは、ＣＴＵ７１０を多数のＣＵまたはＣＢに分割する例示的な分割７００を提供する。例示的なＣＵ７１２が、図７Ａに示されている。図７Ａは、ＣＴＵ７１０におけるＣＵの空間的配置を示す。また、例示的な分割７００は、図７Ｂに符号化ツリー７２０として示されている。
【０１１０】
図７ＡのＣＴＵ７１０の各非リーフノード、例えばノード７１４、７１６および７１８において、含まれるノード（さらに分割されてもよいし、ＣＵであってもよい）が「Ｚオーダ」にスキャンまたはトラバースされて、符号化ツリー７２０の列として表されるノードのリストが作成される。四分木の分割の場合、Ｚオーダスキャンは、左上から右へ、続いて左下から右への順に行われる。水平分割および垂直分割の場合、Ｚオーダスキャン（トラバーサル）は、それぞれ上から下へのスキャンおよび左から右へのスキャンに単純化される。図７Ｂの符号化ツリー７２０は、適用されたスキャン順序に従って、すべてのノードおよびＣＵをリストアップする。各分割は、リーフノード（ＣＵ）に到達するまで、ツリーの次のレベルで２つ、３つ、または４つの新しいノードのリストを生成する。
【０１１１】
ブロックパーティショナ３１０によって画像をＣＴＵに分解し、さらにＣＵに分解し、図３を参照して説明したようにＣＵを使用して各残留ブロック（３２４）を生成した後、残留ブロックはビデオ符号化器１１４によって前方変換および量子化の対象となる。結果として得られるＴＢ３３６は、その後、エントロピー符号化モジュール３３８の動作の一部として、残差係数のシーケンシャルリストを形成するためにスキャンされる。ビットストリーム１３３からＴＢを得るために、ビデオ復号化器１３４において同等の処理が行われる。
【０１１２】
図７Ａおよび図７Ｂの例では、ルマチャネルおよびクロマチャネルの両方に適用される符号化ツリーを説明している。しかし、図７Ａおよび図７Ｂの例は、ルマチャネルだけに適用される符号化ツリーまたはクロマチャネルだけに適用される符号化ツリーのトラバーサルの観点からの動作も示している。多くの入れ子になった分割を持つ符号化ツリーの場合、より深いレベルで利用可能な分割オプションは、対応する小領域の利用可能なブロックサイズの制限によって制約を受ける。小領域で利用可能なブロックサイズの制限は、ブロックの処理速度が高すぎて実装に負担がかかるという最悪のケースを防ぐために設けられている。具体的には、ブロックサイズをクロマの１６の倍数にすることで、１６サンプルの粒度で処理することが可能になる。ブロックサイズを１６サンプルの倍数に制約することは、「イントラ再構成」フィードバックループ、すなわち、モジュール４５０、４６０、４６８、４７６、４８４を含む図４のビデオ復号化器１３４内のパス、およびビデオ符号化器１１４内の同等のパスに特に関連する。特に、ブロックサイズを１６サンプルの倍数に制約することは、イントラ予測モードでのスループットを維持することを支援する。例えば、「ＳＩＭＤ（Simultaneous Data Multiple Instruction）」マイクロプロセッサアーキテクチャは、一般的に、１６サンプルを含む可能性のあるワイドワードで動作する。また、ハードウェアアーキテクチャでは、イントラ再構成フィードバックループに沿ってサンプルを転送するために、１６サンプルの幅を持つバスなど、広いバスを使用することができる。例えば４サンプルのような小さなブロックサイズを使用した場合、バスは十分に活用されず、例えばバス幅の１／４にしかサンプルデータが含まれないことになる。活用されていないバスは、より小さなブロック（つまり、１６サンプル以下）を扱うことができるが、多くのブロックまたはすべてのブロックが比較的小さなサイズであるなどの最悪のケースでは、活用されていないために、符号化器（１１４）または復号化器（１３４）のリアルタイム動作が妨げられる可能性がある。インター予測では、各ブロックは、フレームバッファ（バッファ３７２または４９６など）から得られる参照サンプルに依存する。フレームバッファには、先行するフレームを処理する際に参照サンプルが入力されるため、インター予測のブロックを生成するためのブロック単位の動作に影響を与えるフィードバック依存ループは存在しない。フレーム内再構成に関連するフィードバック依存ループに加えて、イントラ予測モード４５８の決定に関連する追加の同時のフィードバックループが存在する。イントラ予測モード４５８は、最も確率の高いモードリストからモードを選択すること、または、残存するモードリストからモードを選択することによって決定される。最確モードリストと残りのモードリストの決定には、隣接するブロックのイントラ予測モードが必要である。比較的小さいブロックサイズが使用される場合、最確モードリストおよび残りのモードリストは、より頻繁に、すなわち、サンプル単位のブロックサイズおよびチャネルのサンプリングレートによって支配される頻度で決定される必要がある。
【０１１３】
図８は、４：２：０クロマフォーマットの使用に起因する、クロマチャネルの変換ブロックサイズおよび関連するスキャンパターンのコレクション８００を示す図である。コレクション８００は、４：２：２のクロマフォーマットにも使用することができる。記載された配置は、特に４：２：０および４：２：２フォーマットのために、画像フレームのクロマチャネルが画像フレームのルマチャネルに対してサブサンプリングされるクロマフォーマットを有する画像フレームで使用するのに適している。コレクション８００は、すべての可能なクロマ変換ブロックサイズを含まない。１６以下の幅または８以下の高さを有するクロマ変換ブロックのみが図８に示されている。より大きな幅と高さを持つクロマ変換ブロックが存在する可能性があるが、参照を容易にするために図８には示されていない。追加のクロマ変換サイズは、ルマチャネルとクロマチャネルで符号化ツリーを共有する場合、２×１６、４×１６、８×１６、１６×１６、３２×３２である。また、クロマチャネルの符号化ツリーがルマチャネルの符号化ツリーとは別個のものである場合（「デュアル符号化ツリー」）には、以下の追加のクロマ変換サイズも利用可能である：２×３２、４×３２、８×３２、１６×３２、３２×２、３２×４、３２×８、３２×１６。しかしながら、コレクション８００は、より大きなＴＢをスキャンするために同様に適用することができるＴＢをスキャンするためのアプローチを示している。
【０１１４】
禁止された変換サイズのセット８１０は、変換ブロックサイズ２×２、２×４、および４×２を含み、これらはすべて、１６サンプル未満の領域を有する。言い換えれば、１６クロマサンプルの最小変換サイズは、特にイントラ予測ＣＢについて、記載された装置の動作から生じる。禁止された変換サイズ８１０の事例は、図９を参照して説明したように分割オプションを決定することによって回避される。変換中の残留係数は、変換が「サブブロック」（または「係数グループ」）に分割される２層アプローチでスキャンされる。スキャンは、最後の有意な（ゼロでない）係数からＤＣ（左上）の係数に戻るスキャンパスに沿って行われる。スキャンパスは、各サブブロック内の進行（「下層」）と、あるサブブロックから次のサブブロックへの進行（「上層」）として定義される。コレクション８００において、８×２のＴＢ８２０は、８×２サブブロック、すなわち１６個の残差係数を含むサブブロックを使用する。２×８のＴＢ８２２は、２×８サブブロック、すなわち、同じく１６個の残差係数を含むサブブロックを使用する。
【０１１５】
幅または高さが２であり、他の次元が８の倍数であるＴＢは、複数の２×８または８×２サブブロックを使用する。したがって、２サンプルの幅を有するいくつかの例のクロマブロックは、サイズ２ｘ８サンプルのそれぞれのサブブロックへのブロックの分割を用いて符号化され、２サンプルの高さを有するクロマブロックは、サイズ８ｘ２サンプルのそれぞれのサブブロックへのブロックの分割を用いて符号化される例がある。例えば、１６×２のＴＢ８１６は、２つの８×２のサブブロックを有し、各サブブロックは、ＴＢ８２０に対して示されるようにスキャンされる。１つのサブブロックから次のサブブロックへのスキャンの進行はサブブロック進行８１７に示される。
【０１１６】
２×３２のＴＢ（図８には示されていない）は、１×４のアレイとして配置された４つの２×８のサブブロックを使用する。各サブブロック内の残留係数は、２×８のＴＢ８２２に示すようにスキャンされ、サブブロックは１×４のアレイの最下位のサブブロックから最上位のサブブロックに向かって進行する。
【０１１７】
より大きなＴＢは、同様のスキャン進行に従う。幅と高さがそれぞれ４以上であるすべてのＴＢについて、４×４のサブブロックスキャンが使用される。例えば、４×８のＴＢ８２３は、４×４のサブブロックスキャン８２４を使用し、下のサブブロックから上のサブブロックへと進行する。４×４のＴＢ８２５も同様の方法でスキャンすることができる。８×８ＴＢ８２９は、４つの４×４のサブブロックの進行８３０を使用する。すべての場合において、サブブロック内のスキャンおよびサブブロックからサブブロックへの進行は、後方の対角線スキャンに従っている。すなわち、スキャンは、「最後の」有意な残留係数からＴＢの左上の残留係数に向かって戻るように進行する。また、図８は、例えば、８ｘ４のＴＢ８３２、１６ｘ４のＴＢ８３４、１６ｘ８のＴＢ８３６にわたるスキャン順序を示している。さらに、スキャン経路に沿った最後の有意な係数の位置に応じて、最後の有意な係数の位置からサブブロックの左上の残差係数に戻るまでの、最後の有意な残差係数を含むサブブロックの部分のみをスキャンする必要がある。スキャン経路に沿って順方向にさらに進んだサブブロック（すなわち、ブロックの右下に近い部分）は、スキャンする必要がない。コレクション８００および特に禁止された変換サイズ８１０は、図９を参照して説明したように、符号化ツリーの領域（またはノード）をサブ領域（またはサブノード）に分割する能力に制限を課すものである。
【０１１８】
２×２、２×４および４×２のＴＢ（ＴＢのセット８１０）を使用するＶＶＣシステムでは、２×２のサブブロックが、２サンプルの幅および／または高さのＴＢに採用されてもよい。上述したように、ＴＢ８１０の使用は、イントラ再構成フィードバック依存ループにおけるスループット制約を増加させる。さらに、４つの係数のみを有するサブブロックの使用は、より高いスループットで残留係数を解析することの困難性を増加させる。特に、各サブブロックに対して、「有意性マップ」が、そこに含まれる各残差係数の有意性を示す。１値の有意性フラグの符号化は、残差係数の大きさが少なくとも１であることを確定し、０値のフラグの符号化は、残差係数の大きさが０であることを確定する。残留係数の大きさ（１以降）および符号は、「有意な」残留係数に対してのみ符号化される。ＤＣ係数については、有意性ビットは符号化されず、（０からの）大きさが常に符号化される。高スループットの符号化器および復号化器では、リアルタイム動作を維持するために、クロックサイクルごとに複数の有意性マップビンを符号化または復号化する必要がある。１サイクルあたりのマルチビンの符号化および復号化の難易度は、サブブロックサイズが小さい場合など、ビン間の依存関係がより多い場合に高くなる。本システム１００では、サブブロックサイズは、ブロックサイズに関わらず、１６（最後の有意な係数を含むサブブロックの例外は除く）である。
【０１１９】
図９は、イントラ予測が使用されているときに、ルマ符号化ツリーおよびクロマ符号化ツリーにおいて許容される分割のリストを生成するための規則９００のセットを示す図である。一連のフレームの最初のフレームを含む特定のフレームについては、すべてのブロックがイントラ予測を使用する。その他のフレームでは、インター予測ブロックとイントラ予測ブロックの混在が可能である。図６を参照して符号化ツリーの利用可能な分割の全セットを説明したが、利用可能な変換サイズの制限により、所定の領域サイズに対する特定の分割オプションに制約がある。以下に説明するように、ルマおよびクロマチャネルのそれぞれに対する分割オプションは、対応する符号化ツリーユニットの領域の寸法に応じて決定される。
【０１２０】
ＶＶＣでは、ルマサンプルとクロマサンプルに対して異なる符号化ツリーの使用が可能であるため、クロマサンプルに対して許容される分割オプションは、ルマサンプルに対する分割オプションとは異なる。それに応じて、規則９００のセットは、クロマ領域のための規則９２０のセットと、ルマ領域のための規則９１０のセットに分割される。ルマ符号化ツリーとクロマ符号化ツリーに別々の規則が示されており、ルマチャネルとクロマチャネルに異なる変換ブロックのコレクションを使用することができる。特に、ルマチャネルとクロマチャネルで使用可能なブロックのコレクションがクロマフォーマットで関連しているという要件はない。符号化ツリーのノードをトラバースする際に、領域サイズで分割オプションのセットの利用可能性をチェックすることにより、許可された分割のリストが得られる。ＣＢを使用して符号化される可能性のある領域をもたらす分割オプションは、許可される分割のリストに追加される。領域がＣＢを使用して符号化されるためには、領域サイズは、コレクション８００からの特定のサイズの整数個の変換による符号化を可能にしなければならない。特定のサイズは、（幅と高さの両方を考慮して）領域サイズを超えない最大のサイズとして選択される。このように、小さい領域では単一の変換が使用され、領域のサイズが利用可能な最大の変換のサイズを超える場合には、利用可能な最大の変換が領域の全体を占めるようにタイル状に配置される。
【０１２１】
セット９２０を用いてクロマ領域を処理するとき、分割オプションの初期分割リストが生成される。各分割オプションは、領域サイズに対してテストされ、その分割オプションが、コレクション８００の変換サイズよりも小さい、禁止されたサイズのサブ領域をもたらすかどうかを決定する。許可されたサイズのサブ領域をもたらす分割オプション、すなわち、コレクション８００の最小変換サイズの整数に一致する分割オプションは、許可されたクロマ分割リスト９７０に追加される。
【０１２２】
例えば、ＱＴモードの場合（図６の決定６１０に対応）、領域が４：２：０フォーマットの８ｘ８または４：２：２フォーマットの８ｘ１６のサイズである場合、分割するとクロマチャネルの変換サイズがそれぞれ２ｘ２または２ｘ４になるため、クアッドツリー分割は許可されない。許容される領域サイズは、矢印９２１で示されている。同様に、クロマ規則セット９２０に対する他の許容可能な分割は、矢印９２２、９２３、９２４、９２５および９２６によって示され、以下の図１０および図１１に関連して説明される。
【０１２３】
クロマチャネルのための領域サイズは、ルマサンプルグリッドの観点から説明される。例えば、８ｘ４の領域は、４：２：０のクロマフォーマットが使用されている場合、クロマチャネルの４ｘ２の変換に対応する。４：２：２クロマフォーマットが使用されている場合、８ｘ４の領域はクロマの４ｘ４変換に対応する。４：４：４クロマフォーマットが使用されている場合、クロマはルマに対してサブサンプリングされないので、クロマの変換サイズは領域サイズに対応する。
【０１２４】
許容されるルマ変換分割は、異なる最小サイズ制約に関連しており、４ｘ４は認められない。４ｘ４のルマＰＢは、１６サンプルの倍数であるという要件を満たしているが、ルマのサンプルレートは、４：２：０クロマフォーマットのビデオの各クロマチャネルのサンプルレートの４倍である。４ｘ４のルマ予測ブロックがバスの利用不足にならないとしても（例えば、ＳＩＭＤアーキテクチャや１６サンプル幅のバスアーキテクチャの場合）、イントラ再構成フィードバックループやイントラ予測モード決定フィードバックループが比較的高いサンプルレートでの動作に対応するのは困難である。ルマチャネルにおける４ｘ４ブロックの禁止は、フィードバックループの深刻さを、高いサンプルレートでの実装が可能なレベルまで低減する。規則セット９２０と同様に、セット９１０における許容分割は、矢印９０１〜９０６で示され、許容分割のリスト９７２を生成するために使用される。許容される分割オプションは、以下の図１０および１１に関連してさらに説明される。
【０１２５】
図１０は、画像フレームの符号化ツリーをビデオビットストリームに符号化する方法１０００を示す。方法１０００は、図１２を参照して説明したように、ルマ符号化ツリーおよびクロマ符号化ツリーのそれぞれについて実行され、その結果、ＣＴＵについて各符号化ツリーを決定し、その結果得られた符号化ツリーをビットストリーム１１５に符号化することになる。方法１０００は、構成されたＦＰＧＡ、ＡＳＩＣ、またはＡＳＳＰのような装置によって具現化されてもよい。さらに、方法１０００は、プロセッサ２０５の実行下でビデオ符号化器１１４によって実行されてもよい。このように、方法１０００は、コンピュータ可読記憶媒体および／またはメモリ２０６に格納されてもよい。各ＣＴＵのルマ符号化ツリーおよびクロマ符号化ツリーに対して起動される方法１０００は、生成初期分割オプションステップ１０１０で開始され、「現在のノード」（または現在の領域）は、ルマまたは符号化ツリーのルート、すなわちＣＴＵ全体を占める領域である。方法１０００は、フレームデータ１１３がブロックパーティショナ３１０によって受信されたときに、ルマおよびクロマの符号化ツリーのそれぞれについて符号化器１１４によって実施される。
【０１２６】
初期分割オプション生成ステップ１０１０において、プロセッサ２０５は、符号化ツリーの現在のノードに対する分割オプションを生成する。分割オプションは、方法１０００の反復に応じて、ルマチャネルまたはクロマチャネルに対して生成される。当初、符号化ツリーは、唯一許可される分割がクワッドツリーの分割（図５の分割５１２）、または分割の停止（図５の５１０参照）であるクワッドツリー（ＱＴ）ステージである。さらに、イントラ予測ブロックのみを使用するように符号化されたフレームまたはスライスでは、ルマおよびクロマの符号化ツリーは、そのルートノードにクワッドツリー分割を含む。その結果、１２８ｘ１２８のＣＴＵの場合、４：２：０のクロマフォーマットが使用される場合、最大のルマのイントラ予測ＣＢは６４ｘ６４であり、最大のクロマのイントラ予測ＣＢは３２ｘ３２である。イントラ予測ブロックとインター予測ブロックのいずれかまたは両方を使用するように符号化されたスライスのフレームでは、ルマとクロマの符号化ツリーは、そのルートノードにクワッドツリーの分割を含む必要はない。ただし、イントラ予測されたＣＢは、６４ｘ６４のルマサンプルグリッドの境界をまたぐことはできない。クワッドツリーの分割が終了すると、符号化ツリーはマルチツリー（ＭＴ）ステージにあると言われ、図６の決定３１２に対応する。マルチツリーステージでは、分割オプションは、（ｉ）分割を中止する（すなわち５１０）、この場合、現在のノードに対応する領域がＣＢを使用して符号化される、または（ｉｉ）分割を継続する、である。初期の分割オプションとして、水平方向および垂直方向の両方における２分割および３分割（図５の５１４〜５２０参照）を使用することができる。ステップ１０１０の結果として、符号化ツリーステージ（すなわち、ＱＴまたはＭＴ）に対して可能なすべての分割のリストが作成される。プロセッサ２０５における制御は、ステップ１０１０から、クロマフォーマットを決定するステップ１０２０へと進行する。
【０１２７】
クロマフォーマットを決定するステップ１０２０において、プロセッサ２０５は、フレームデータ１１３のクロマフォーマットを、４：２：０クロマフォーマットまたは４：２：２クロマフォーマットのいずれかとして決定する。クロマフォーマットは、フレームデータの特性であり、動作中には変化しない。したがって、クロマフォーマットは、設定ファイルやレジスタなどの手段でビデオ符号化器１１３に与えられる。決定されたクロマフォーマットは、例えば「ｃｈｒｏｍａ＿ｆｏｒｍａｔ＿ｉｄｃ」シンタックス要素を用いて、ビデオに対して一度だけ符号化されて、ビットストリーム１１３に符号化される。プロセッサ２０５における制御は、ステップ１０２０から、許可された分割を生成するステップ１０３０へと進行する。
【０１２８】
許可された分割を生成するステップ１０３０では、プロセッサ２０５は、許可された分割タイプを制約する規則をステップ１０１０の各分割オプションに適用して、許可された分割リストを生成する。ルマ符号化ツリーを処理するとき、ステップ１０３０の実行により、許容ルマ分割リスト９７２が生成される。クロマ符号化ツリーを処理するとき、ステップ１０３０の実行により、許容クロマ分割リスト９７０が作成される。許可された分割タイプを制約する規則は、ルマチャネルおよびクロマチャネルのそれぞれにおける利用可能な変換サイズを考慮する。
【０１２９】
一般に、ルマチャネルにおけるＮ×Ｍの変換に対して、４：２：０クロマフォーマットが使用される場合には、クロマチャネルに対して利用可能なＮ／２×Ｍ／２の変換があり、４：２：２クロマフォーマットが使用される場合には、クロマチャネルに対して利用可能なＮ／２×Ｍの変換がある。このように、分割規則は、一般的には、ルマチャネルとクロマチャネルで同等である。ただし、ブロックサイズが小さい場合は例外がある。特に、４×８および８×４のルマ変換は、クロマにおいて対応する２×４および４×２の変換を持たない。また、４×４のルマ変換や２×２のクロマ変換になる分割も認められない。２×２クロマ変換の領域サイズは、４：２：０クロマフォーマットの場合、４×４のルマサンプルであるため、規則はルマチャネルとクロマチャネルで同等である。
【０１３０】
ルマの変換セットがクロマの変換セットと異なる程度に、ルマとクロマの間で許容される分割オプションに違いがある。符号化ツリー内のルマノードを処理する際、各分割オプション（図９に示す５１０〜５２０）について、ルマノードの領域サイズが評価される。分割なしの場合（５１０）は、常に許可され、従って、矢印９１２で示すように、許可されたルマ分割リスト９７２に常に追加される。クワッドツリー分割（５１２）は、領域サイズが８×８の場合には不許可となり、不許可となった４×４のルマ変換サイズの使用を回避する。より大きな領域サイズの場合、クワッドツリー分割は許可され、矢印９１１で示されるように、許可されたルマ分割リスト９７２に追加される。ルマ符号化ツリーのＭＴステージでは、ルマでの４×４変換の使用を防ぐために、以下の分割が不許可となる：
−４×８の領域の水平方向の２分割（４×４ブロックのペアを避ける）。矢印９１３で示されるように、残りの分割は許可される。
−８×４の領域の垂直方向の２分割（４×４ブロックのペアを避ける）。矢印９１４で示されるように、残りの分割は許される。
−４×１６以下の領域の水平３分割（分割の１ブロック目と３ブロック目が４×４ブロックになることを避ける）。矢印９１５で示されるように、残りの分割は許可される。
−１６×４以下の領域の垂直３分割（分割の１ブロック目と３ブロック目が４×４ブロックになることを避ける）。矢印９１６で示されるように、残りの分割は許可される。
【０１３１】
さらに、４未満の高さの幅を有するブロックになるようなルマの分割は禁止される。幅または高さが４未満であることの回避およびブロックサイズが４×４であることによる分割の制限が遭遇しないことを条件に、分割は許可されたルマの分割リスト９７２に追加される。
【０１３２】
クロマ符号化ツリーのクロマノードを処理するとき、各分割オプションについて、ノードの領域サイズに関する対応する規則を参照して、分割オプションを許可されたクロマ分割リスト９７０に追加するかどうかを決定する。ルマ符号化ツリーと同様に、クロマ符号化ツリーは、クワッドツリー分割５１２または分割なし５１０のいずれかが許容される「ＱＴ」ステージ（図６の決定６１０に対応）で始まる。分割なし５１０が発生すると、符号化ツリーは「ＭＴ」ステージに入る（図６の決定６１２に対応）。ＭＴステージでは、（ｉ）分割なしは、ノードに関連する領域を占有するＣＢの存在を示すか、または（ｉｉ）分割５１４〜５２０のうちの１つが発生する。分岐５１４〜５２０のいずれかが発生すると、領域がサブ領域に分割される。結果として生じるサブ領域の各々は、許容される分割オプションを決定するためにも評価される。
【０１３３】
符号化ツリーのＱＴステージにおいて、４：２：０クロマフォーマットを使用して、ノードが、領域サイズが８×８（すなわち、４×４クロマ変換）に達している場合、それ以上のクアッドツリー分割は可能ではない。また、他の分割オプションも利用できない。ノードで許可されているクロマの分割に「分割なし」を追加するオプションがある。結果として、単一の４×４のＣＢがそのノードに存在する。
【０１３４】
符号化ツリーのＱＴステージで、４：２：２クロマフォーマットを使用して、ノードが８×１６の領域サイズ（すなわち、４×８のクロマ変換）を有する場合、それ以上のクアッドツリー分割は可能ではなく、ステップ１０３０は、符号化ツリーのＭＴステージに入る。ＭＴステージにおける８×１６の領域は、単一の４×８のクロマ変換を有していてもよいし、２つの８×８の領域、したがって一対の４×４のクロマ変換をもたらす水平方向の分割を有していてもよいし、２つの４×１６の領域、したがって一対の２×８のクロマ変換をもたらす垂直方向の分割を有していてもよい。ＭＴステージのクロマ符号化ツリーでは、サイズが４×４、４×８、８×４の領域となり、その結果、サイズが２×２、２×４、４×２の変換が導入されるような分割は禁止されており、以下のようにリストされる：
−８×８の領域の水平２分割（４×２のクロマ変換のペアを避ける）または４×１６の領域の水平２分割（２×４のクロマ変換のペアを避ける）。矢印９２３で示されるように、残りの分割は許可される。
−８×８の領域の垂直２分割（２×４のクロマ変換のペアを避ける）または１６×４の領域の垂直２分割（４×２のクロマ変換のペアを避ける）。矢印９２４で示されるように、残りの分割は許可される。
−４×１６の領域の水平３分割（２×２のクロマ変換を用いた第１および第３のサブ領域を避け、クロマ変換を用いた中央の２×４のサブ領域を避ける）または８×１６領域の水平３分割（第１および第３のサブ領域の２×４のクロマ変換を避ける）。矢印９２５で示されるように、残りの分割は許可される。
【０１３５】
１６×４の領域の垂直３分割（２×２クロマ変換を用いた第１および第３のサブ領域を避け、クロマ変換を用いた中央の４×２のサブ領域を避ける）または１６×８領域の垂直３分割（第１および第３のサブ領域の４×２のクロマ変換を避ける）。矢印９２６で示されるように、残りの分割は許可される。
【０１３６】
上記の制約に加えて、２未満の幅または高さを有するサブ領域になるような分割は禁止される。ステップ１０１０の各分割オプションを考慮して、上記の規則が参照され、禁止されていない分割オプションが、ステップ１０３０の実行において、クロマ分割オプションリスト９７０に追加される。初期の分割オプションが許可された分割のリスト（クロマ用リスト９７０およびルマ用リスト９７２）に改良されると、ブロックパーティショナ３１０は、ラグランジュ最適化に従って予測モードおよび符号化コストを評価することにより、許可された分割の１つを選択する。プロセッサ２０５における制御は、ステップ１０３０からゼロ許容分割テスト１０４０へと進行する。
【０１３７】
ゼロ許容分割テスト１０４０では、プロセッサ２０５は、分割オプションリスト（９７０または９７２）が「分割なし」エントリのみを含むかどうかをテストする（分割５１０）。そうであれば（ステップ１０４０で「ＹＥＳ」）、それ以上の分割は可能ではない。現在のノードにＣＢが存在し、プロセッサ２０５内の制御は、符号化ブロック符号化ステップ１０７０に進む。分割が可能であれば（ステップ１０４０で「ＮＯ」）、プロセッサ２０５内の制御は、符号化ツリーステージテストステップ１０５０に進む。
【０１３８】
符号化ツリーステージテストステップ１０５０において、プロセッサ２０５は、符号化ツリーにおける現在のノードのステージをチェックし、すなわち、ステージがＱＴであるかＭＴであるかをチェックする。ノードがＱＴステージにある場合、ブロックパーティショナ３１０の決定は、ＱＴステージに留まることであり、プロセッサ２０５における制御は、符号化ＱＴ分割ステップ１０５５に進行する。ノードがＭＴステージにある場合、またはブロックパーティショナ３１０の決定が、符号化ツリーの現在のノードについてＱＴステージからＭＴステージに移行することである場合、プロセッサ２０５における制御は、ＭＴ分割符号化ステップ１０６０に進行する。
【０１３９】
ＱＴ分割符号化ステップ１０５５において、エントロピー符号化器３３８は、プロセッサ２０５の実行下で、「１」の値を有するＱＴ分割フラグ（図６の決定６１０に関連して説明した）をビットストリーム１１５に符号化する。値が「１」のＱＴ分割フラグは、現在のノードを４つのサブモードに分割すること、すなわち、クアッドツリー分割５１２を示す。プロセッサ２０５における制御は、ステップ１０５５からサブ領域再帰ステップ１０１００へと進行する。
【０１４０】
ＭＴ分割符号化ステップ１０６０において、プロセッサ２０５の実行下にあるエントロピー符号化器３３８は、ＭＴ分割のタイプを示すために、ビットストリーム１１５にさらなるフラグを符号化する。現在のノードが符号化ツリーのＱＴステージからＭＴステージへの移行時である場合、「０」の値を有するＱＴ分割フラグ（図６の決定６１０に関連して説明した）がビットストリーム１１５に符号化される。ステップ１０３０で決定されたように、「分割なし」の場合以外の少なくとも１つの分割が許容される場合、ＭＴ分割フラグは、分割なし５１０の選択を示す（ＭＴ分割フラグに対して「０」を符号化する、図６の決定６１２に関連して説明する）。ステップ１０６０では「ＮＯ」が返され、プロセッサ２０５内の制御は、符号化ブロック符号化ステップ１０７０に進む。
【０１４１】
そうでなければ、ブロックパーティショナ３１０による分割５１４〜５２０のうちの１つの選択は、ＭＴ分割フラグ、すなわち６１２に対して「１」を符号化することによって示される。ステップ１０６０は「ＹＥＳ」を返し、プロセッサ２０５における制御は、Ｂ／Ｔ＿Ｈ／Ｖ分割符号化ステップ１０９０に進行する。
【０１４２】
符号化ブロック符号化ステップ１０７０では、プロセッサ２０５の実行下にあるエントロピー符号化器３３８が、符号化ブロックの予測モードおよび残差係数をビットストリーム１１５に符号化する。イントラ予測されたＣＢについては、イントラ予測モードが符号化され、インター予測されたＣＢについては、動きベクトルが符号化される。残留係数は、スキャンパス内の最後の有意な残留係数からブロックのＤＣ係数に向かって戻るスキャンに従って符号化される。
【０１４３】
さらに、係数は「サブブロック」にグループ化され、そのサブブロックに少なくとも１つの有意な残留係数が存在することを示す符号化されたサブブロックフラグが必要に応じて符号化される。サブブロックに有意な残差係数が存在しない場合は、サブブロックの各残差係数に対して個々の有意フラグを符号化する必要はない。最後の有意な残差係数を含むサブブロックは、符号化されたサブブロックフラグを必要としない。ＤＣ（ブロックの左上）残留係数を含むサブブロックには、符号化されたサブブロックフラグはコード化されない。サブブロックサイズは、図８に示すように、ルマでは常に４×４であり、クロマでは所定のブロックに対して２×８または４×４または８×２のいずれかである。したがって、サブブロックサイズは常に１６であり、これはコレクション８００の場合のように、常に１６の倍数であるブロックサイズと一致する。プロセッサ２０５における制御は、ステップ１０７０から最後の符号化ブロックテストステップ１０８０へと進行する。
【０１４４】
最後の符号化ブロックテスト１０８０では、プロセッサ２０５は、現在の符号化ブロックが符号化ツリーの最後のＣＢであるかどうかを判断する。階層的なＺオーダスキャンにより、最後のＣＢは、ＣＴＵの右下隅を占めるＣＢである。現在のＣＢが符号化ツリーの最後のものである場合（ステップ１０８０で「ＹＥＳ」）、方法１０００は終了する。方法１０００がルマ符号化ツリーを処理すると、方法１０００はクロマ符号化ツリーを処理するために起動される。プロセッサ２０５は、ルマ符号化ツリーおよびクロマ符号化ツリーを処理するために、方法１０００の２つのインスタンスを並行して実行してもよい。方法１０００の２つのインスタンスが並行して実行される場合、エントロピー符号化器３３８は、決定論的なビットストリームを生成するために、直列化された方法でルマおよびクロマに対する動作を実行する。すなわち、並列符号化器によって生成されたビットストリームは、シリアル復号化器によって復号化可能でなければならない。そうでない場合は、ステップ１０８０が”ＮＯ”であれば、図７Ａおよび図７Ｂに例示されているように、現在のノードは、階層的なＺオーダスキャンに従って次のノードに進行する。プロセッサ２０５における制御は、初期分割オプション生成ステップ１０１０に進む。
【０１４５】
Ｂ／Ｔ＿Ｈ／Ｖ分割符号化ステップ１０９０において、プロセッサ２０５の実行下にあるエントロピー符号化器３３８は、許容分割リストのどの分割がブロックパーティショナ３１０によって選択されたかを示す追加フラグをビットストリーム１１５に符号化する。許可された分割リストが、「分割なし」の場合以外の１つの分割のみを含む場合、その１つの分割は、ブロックパーティショナ３１０によって選択されたものでなければならず、分割を識別するための追加フラグを符号化する必要はない。許可された分割のリストが、水平方向と垂直方向の両方の分割を含む場合、エントロピー符号化器３３８は、ブロックパーティショナ３１０によって選択された分割の方向を示すフラグを符号化する。許可された分割のリストが２分割と３分割の両方を含む場合、エントロピー符号化器３３８は、ブロックパーティショナ３１０によって選択された分割のタイプ（すなわち、２分割または３分割）を示すフラグを符号化する。プロセッサ２０５における制御は、ステップ１０９０からサブ領域再帰ステップ１０１００へと進行する。
【０１４６】
サブ領域再帰ステップ１０１００において、プロセッサ２０５は、ステップ１０３０の決定された分割に従って、サブ領域を生成する。方法１０００は、生成されたサブ領域またはノードの各々に対して再帰的に呼び出され、その結果、符号化ツリー全体で再帰が行われる。方法１０００の再帰的な呼び出しは、図７Ａおよび図７Ｂに示すように、符号化ツリーの階層的なＺオーダスキャンに従って、１つのサブ領域またはノードから次のサブ領域またはノードへと進行する。分割によって生じた子ノードが、サブ領域を生成するために方法１０００によって処理された場合、再帰は符号化ツリーの次の兄弟ノードに進行する。それ以上の兄弟ノードがない場合、再帰は親ノードに進行し、その時点で、次のノード（例えば、親の兄弟）が、サブ領域を生成する次のノードとして選択される。親ノードが符号化ツリーのＱＴステージにある場合、親ノードに戻ることは、符号化ツリーのＱＴステージに戻ることになる。
【０１４７】
したがって、ステップ１０５５、１０６０、１０９０、および１０７０のそれぞれは、決定された許容可能な分割オプションのフラグをビットストリームに符号化するように動作する。各分割オプションは、クロマチャネルまたはルマチャネルの一方について決定される。分割オプションは、符号化ツリーの領域の寸法に基づいて決定することができる。
【０１４８】
図１１は、ビデオビットストリームから画像フレーム内の符号化ツリーを復号するための方法１１００を示す。方法１１００は、図１３を参照して説明したように、ルマ符号化ツリーおよびクロマ符号化ツリーのそれぞれについて実行され、その結果、ＣＴＵについて、ビットストリーム１３３から各符号化ツリーを復号する。方法１１００は、構成されたＦＰＧＡ、ＡＳＩＣ、またはＡＳＳＰのような装置によって具現化されてもよい。さらに、方法１１００は、プロセッサ２０５の実行下でビデオ復号化器１３４によって実行されてもよい。このように、方法１１００は、コンピュータ可読記憶媒体および／またはメモリ２０６に格納されてもよい。各ＣＴＵのルマ符号化ツリーおよびクロマ符号化ツリーに対して呼び出される方法１１００は、初期分割オプション生成ステップ１１１０で開始し、「現在のノード」（または現在の領域）は、ルマまたは符号化ツリーのルート、すなわちＣＴＵ全体を占める領域である。
【０１４９】
初期分割オプション生成ステップ１１１０では、プロセッサ２０５は、符号化ツリーの現在のノードに対する分割オプションを生成する。初期状態では、符号化ツリーはクアッドツリー（ＱＴ）ステージであり、唯一許可される分割は、クアッドツリー分割（分割５１２）、または分割の停止（分割５１０）である。さらに、イントラ予測ブロックのみを使用するように符号化されたフレームまたはスライスについては、ルマおよびクロマ符号化ツリーは、そのルートノードにクワッドツリー分割を含む。クワッドツリーの分割が停止したとき、符号化ツリーはマルチツリー（ＭＴ）ステージにあると言われる。マルチツリーステージでは、分割オプションは、現在のノードに対応する領域がＣＢを使用して符号化される場合に、分割を中止する（５１０を使用）か、または分割を継続するかである。初期の分割オプションとしては、水平方向と垂直方向の２分割と３分割（分割５１４〜５２０）が利用可能である。ステップ１１１０の結果として、符号化ツリーステージ（すなわちＱＴまたはＭＴ）のためのすべての可能な分割のリストが作成される。プロセッサ２０５における制御は、クロマフォーマット決定ステップ１１２０に進む。
【０１５０】
クロマフォーマット決定ステップ１１２０において、プロセッサ２０５は、フレームデータ１３５のクロマフォーマットを、４：２：０クロマフォーマットまたは４：２：２クロマフォーマットのいずれかとして決定する。例えば、プロセッサ２０５の実行下にあるエントロピー復号化器４２０によって、ビットストリーム１１３から「ｃｈｒｏｍａ＿ｆｏｒｍａｔ＿ｉｄｃ」シンタックス要素が読み込まれ、クロマフォーマットを決定してもよい。プロセッサ２０５における制御は、ステップ１１２０から、許可された分割を生成するステップ１１３０へと進行する。
【０１５１】
許可された分割を生成するステップ１１３０では、プロセッサ２０５は、許可された分割タイプを制約する規則をステップ１１１０の各分割オプションに適用して、許可された分割リストを生成する。ルマ符号化ツリーを処理する際に、許可されたルマ分割リスト９７２が作成される。ステップ１１３０は、方法１００のステップ１０３０と同じ方法に従って動作し、したがって、ビデオ復号化器１３４におけるルマおよびクロマ符号化ツリーのノードの許容分割リストは、ビデオ符号化器１１４におけるルマおよびクロマ符号化ツリーのノードの許容分割リストと同じである。ステップ１０３０は、ルマ符号化ツリーとクロマ符号化ツリーのどちらが処理されているかに依存して、許容分割リスト９７０および９７２のうちの１つを生成するように動作する。ステップ１０３０および図９に関連して説明したように、クロマ分割オプションは、ルマ分割オプションとは異なり、クロマ分割オプションは、１６サンプルの最小サイズを有するブロックをもたらす。プロセッサ２０５における制御は、ＱＴ／ＭＴテストステップ１１４０に進行する。
【０１５２】
ＱＴ／ＭＴテストステップ１１４０において、プロセッサ２０５は、現在のノード（領域）が符号化ツリーのＱＴステージにあるか、または符号化ツリーのＭＴステージにあるかをテストする。現在のノードが符号化ツリーのＱＴステージにあり、許容される分割のリストに「４分割」オプション（分割５１２）が含まれている場合、プロセッサの制御はデコードＱＴ分割ステップ１１５５に進む。現在のノードが符号化ツリーのＱＴステージにあり、許可された分割のリストに「４分割」オプションが含まれていない場合、すなわち「分割なし」オプションのみが許可されている場合、符号化ツリーのステージは「ＭＴ」ステージに移行し、プロセッサ２０５内の制御はゼロ許可分割テスト１１５０に進行する。符号化ツリーが既にＭＴステージにある場合、プロセッサ２０５内の制御は、ゼロ許容分割テスト１１５０に進行する。
【０１５３】
ゼロ許容分割テスト１１５０において、プロセッサ２０５は、分割オプションリスト、すなわち、クロマおよびルマ符号化ツリーのそれぞれに対する９７０または９７２が、「分割なし」エントリのみを含むかどうかをテストする（５１０）。分割オプションリストに分割なしのエントリしか含まれていない場合、それ以上の分割はできず、現在のノードにＣＢが存在することになる。ステップ１１５０は「ＹＥＳ」を返し、プロセッサ内の制御は、符号化ブロック復号化ステップ１１７０に進む。さらなる分割が可能な場合（ステップ１１５０で「ＮＯ」）、プロセッサ内の制御はＭＴ分割復号化ステップ１１６０に進む。
【０１５４】
ＱＴ分割復号化ステップ１０５５において、プロセッサ２０５の実行下にあるエントロピー復号化器４２０は、現在のノードの４つのサブモードへの分割、すなわちクワッドツリー分割５１２が発生するかどうかを示すＱＴ分割フラグ（すなわち６１０）をビットストリーム１３３から復号化する。クワッドツリー分割が発生しない場合（ステップ１１５５で「ＮＯ」）、プロセッサ２０５内の制御は、ゼロ許可分割テスト１１５０に進行する。クワッドツリー分割が発生する場合（ステップ１１５５で「ＹＥＳ」）、プロセッサ２０５内の制御は、サブ領域再検索ステップ１１１００に進行する。
【０１５５】
ＭＴ分割復号化ステップ１０６０では、プロセッサ２０５の実行下にあるエントロピー復号化器４２０が、ＭＴ分割のタイプを示すフラグをビットストリーム１３３からさらに復号化する。ステップ１１３０で決定されたように、「分割なし」の場合以外の少なくとも１つの分割が許可されている場合、ＭＴ分割フラグは、分割なし５１０の選択を示す（ＭＴ分割フラグに対して「０」を復号化する、すなわち６１２を復号化する）。ステップ１０６０では「ＮＯ」が返され、プロセッサ２０５における制御は、符号化ブロック復号化ステップ１１７０に進む。そうでなければ、許可された分割（９７０または９７２）のうちの分割５１４〜５２０のうちの１つを選択する必要性は、ＭＴ分割フラグ、すなわち６１２に対して「１」を復号化することによって示される。ステップ１０６０は「ＹＥＳ」を返し、プロセッサ２０５における制御は、Ｂ／Ｔ＿Ｈ／Ｖ分割復号化ステップ１１９０に進行する。
【０１５６】
符号化ブロック復号化ステップ１１７０では、プロセッサ２０５の実行下にあるエントロピー復号化器４２０が、ビットストリーム１３３から符号化ブロックの予測モードおよび残差係数を復号化する。イントラ予測されたＣＢについては、イントラ予測モードが復号化され、インター予測されたＣＢについては、動きベクトルが復号化される。残留係数は、スキャンパス内の最後の有意な残留係数からブロックのＤＣ係数に向かって戻るスキャンに従って復号化される。さらに、係数は「サブブロック」にグループ化され、サブブロック内に少なくとも１つの有意な残差係数が存在することを示す符号化されたサブブロックフラグが復号化される。サブブロックに有意な残差係数が存在しない場合、サブブロックの各残差係数に対する個々の有意性フラグを復号化する必要はない。最後の有意な残差係数を含むサブブロックは、サブブロックフラグの復号化を必要とせず、ＤＣ（ブロックの左上）の残差係数を含むサブブロックに対しては、符号化されたサブブロックフラグは復号化されない。サブブロックサイズは、図８に示すように、ルマでは常に４×４であり、クロマでは所定のブロックに対して２×８または４×４または８×２のいずれかである。したがって、サブブロックサイズは常に１６であり、これはコレクション８００の場合のように、常に１６の倍数であるブロックサイズと一致する。プロセッサ２０５における制御は、最終符号化ブロックテストステップ１１８０に進行する。
【０１５７】
最終符号化ブロックテスト１１８０では、プロセッサ２０５は、現在の符号化ブロックが符号化ツリーの最後のＣＢであるかどうかを決定する。階層的なＺオーダスキャンにより、最後のＣＢは、ＣＴＵの右下隅を占めるものである。現在のＣＢが符号化ツリーの最後のものである場合、ステップ１１８０は「ＹＥＳ」を返し、方法１１００は終了する。方法１１００がルマ符号化ツリーを復号化すると、クロマ符号化ツリーを復号化するために方法１１００が起動される。そうでなければ、図７Ａおよび図７Ｂに例示されているように、階層的なＺオーダスキャンに従って、現在のノードが次のノードに進行する。ステップ１１８０は「ＮＯ」を返し、プロセッサ２０５内の制御は、初期分割オプション生成ステップ１１１０に進む。ビットストリーム１３３を正しく解析するために、ビデオ復号化器１３４は、通常、フラグおよび他のシンタックス要素を、ビデオ符号化器１１３によって書き込まれたのと同じ順序で読み取る。しかし、他の操作は、それらの依存関係が満たされることを条件に、異なる順序でおよび／または同時に実行されるかもしれない。例えば、ルマおよびクロマのイントラ再構成のためのものなどの操作のセットは、並行して実行されるかもしれない。
【０１５８】
Ｂ／Ｔ＿Ｈ／Ｖ分割復号化ステップ１１９０において、プロセッサ２０５の実行下にあるエントロピー復号化器４２０は、許可された分割リストのどの分割をビデオ復号化器１３４が実行するかを示す追加フラグをビットストリーム１３３から復号化する。許可された分割リストが、「分割なし」の場合以外の１つの分割のみを含む場合には、他の選択肢がないため、１つの分割を実行する必要がある。したがって、分割を識別するために追加のフラグを復号化する必要はない。その後、プロセッサ２０５における制御は、サブ領域再帰ステップ１１１００に進む。許可された分割のリストが、水平方向および垂直方向の両方の分割を含む場合、ビットストリーム１３３から分割の方向を示すフラグを復号化する。また、許可された分割のリストに２分割と３分割の両方が含まれている場合には、ビットストリーム１３３から分割の種類（２分割か３分割か）を示すフラグを決定する。プロセッサ２０５における制御は、サブ領域再帰ステップ１１１００に進行する。
【０１５９】
サブ領域再帰ステップ１１１００では、ステップ１１９０または１１５５の決定された分割に従ったプロセッサ２０５のサブ領域が生成され、これらのサブ領域またはノードのそれぞれに対して方法１１００が呼び出され、符号化ツリー全体の再帰が行われる。方法１１００の再帰的な呼び出しは、図７Ａおよび図７Ｂに示すように、符号化ツリーの階層的なＺオーダスキャンに従って、１つのサブ領域またはノードから次のサブ領域またはノードへと進行する。分割によって生じた子ノードがブロックまたはサブ領域を生成するために処理された場合、再帰は符号化ツリーの次の兄弟ノードに進行する。それ以上の兄弟ノードが存在しない場合、再帰は親ノードまたは領域に進む。次のノード（例えば、親の兄弟）が、処理する次のノードとして選択される。親ノードが符号化ツリーのＱＴステージにある場合、親ノードに戻ることは、符号化ツリーのＱＴステージに戻ることになる。
【０１６０】
したがって、ステップ１１５５、１１６０、１１９０および１１７０は、ステップ１１３０で決定されたルマ分割オプションおよびクロマ分割オプションのうちの１つを選択するために、ビットストリーム１３３からフラグを決定して、符号化ツリーユニットの符号化ユニットを復号化するように動作する。
【０１６１】
方法１０００および１１００、特にステップ１０３０および１１３０の結果として、イントラ再構成ループにおいて高レートで処理することが困難な、クロマチャネルの比較的小さなイントラ予測ブロックが回避される。小さなブロックの回避は、品質の許容できない劣化なしに「ピクセルレート」（処理する必要のある１秒あたりのピクセル）が高い、高解像度および／またはフレームレートでの実装を容易にする。
【０１６２】
図１２は、画像フレームのルマおよびクロマ符号化ツリーをビデオビットストリームに符号化するための方法１２００を示す。この方法１２００は、構成されたＦＰＧＡ、ＡＳＩＣ、またはＡＳＳＰなどの装置によって具現化されてもよい。さらに、方法１２００は、プロセッサ２０５の実行下でビデオ復号化器１１４によって実行されてもよい。このように、方法１２００は、コンピュータ可読記憶媒体および／またはメモリ２０６に格納されてもよい。方法１２００は、ＣＴＵへのフレーム分割ステップ１２１０で開始する。
【０１６３】
ＣＴＵへのフレーム分割ステップ１２１０において、プロセッサ２０５の実行下にあるブロックパーティショナ３１０は、フレームデータ１１３の現在のフレームをＣＴＵのアレイに分割する。分割された結果のＣＴＵに対する符号化の進行が開始される。プロセッサにおける制御は、ステップ１２１０からルマ符号化ツリー符号化ステップ１２２０へと進行する。
【０１６４】
ルマ符号化ツリー符号化ステップ１２２０において、ビデオ符号化器１１４は、プロセッサ２０５の実行下で、方法１０００を実行して、現在のＣＴＵのルマ符号化ツリーを決定し、ビットストリーム１１５に符号化する。現在のＣＴＵは、ステップ１２１０の実行の結果得られたＣＴＵのうちの選択された１つである。プロセッサ２０５における制御は、ステップ１２２０からクロマ符号化ツリー符号化ステップ１２３０へと進行する。
【０１６５】
クロマ符号化ツリー符号化ステップ１２３０において、プロセッサ２０５の実行下にあるビデオ符号化器１１４は、方法１０００を実行して、現在のＣＴＵの彩度符号化ツリーを決定し、ビットストリーム１１５に符号化する。プロセッサ２０５における制御は、ステップ１２３０から最終ＣＴＵテストステップ１２４０まで進行する。
【０１６６】
最終ＣＴＵテストステップ１２４０において、プロセッサ２０５は、現在のＣＴＵがスライスまたはフレーム内の最後のものであるかどうかをテストする。そうでない場合（ステップ１２４０で「ＮＯ」）、ビデオ符号化器１１４は、フレーム内の次のＣＴＵに進み、プロセッサ２０５内の制御は、ステップ１２４０からステップ１２２０に戻って、フレーム内の残りのＣＴＵの処理を継続するように進行する。ＣＴＵがフレームまたはスライスの最後のものである場合、ステップ１２４０は「ＹＥＳ」を返し、方法１２００は終了する。
【０１６７】
図１３は、ビデオビットストリームから画像フレームのルマおよびクロマ符号化ツリーを復号するための方法１３００のフロー図である。方法１３００は、構成されたＦＰＧＡ、ＡＳＩＣ、またはＡＳＳＰのような装置によって具現化されてもよい。さらに、方法１３００は、プロセッサ２０５の実行下でビデオ復号化器１３４によって実行されてもよい。このように、方法１３００は、コンピュータ可読記憶媒体および／またはメモリ２０６に格納されてもよい。方法１３００は、ＣＴＵへのフレーム分割ステップ１３１０で開始する。
【０１６８】
ＣＴＵへのフレーム分割ステップ１３１０において、ビデオ復号化器１３４は、プロセッサ２０５の実行下で、復号化されるべきフレームデータ１３３の現在のフレームの分割をＣＴＵのアレイに決定する。決定された分割に起因するＣＴＵに対する復号化の進行が開始される。プロセッサにおける制御は、ステップ１３１０からルマ符号化ツリー復号化ステップ１３２０へと進行する。
【０１６９】
ルマ符号化ツリー復号化ステップ１３２０において、プロセッサ２０５の実行下にあるビデオ復号化器１３４は、方法１１００を現在のＣＴＵに対して初めて実行し、ビットストリーム１３３から現在のＣＴＵのルマ符号化ツリーを復号化する。現在のＣＴＵは、ステップ１３１０の実行の結果得られたＣＴＵのうちの選択された１つである。プロセッサ２０５における制御は、ステップ１３２０からクロマ符号化ツリー復号化ステップ１３３０へと進行する。
【０１７０】
クロマ符号化ツリー復号化ステップ１３３０において、プロセッサ２０５の実行下にあるビデオ復号化器１３４は、方法１１００を現在のＣＴＵに対して２回目に実行して、ビットストリーム１３３から現在のＣＴＵのクロマ符号化ツリーを復号化する。プロセッサ２０５における制御は、ステップ１３３０から最終ＣＴＵテストステップ１３４０まで進行する。
【０１７１】
最終ＣＴＵテストステップ１３４０において、プロセッサ２０５は、現在のＣＴＵがスライスまたはフレームにおける最後のものであるかどうかをテストする。そうでない場合（ステップ１３４０で「ＮＯ」）、ビデオ復号化器１３４は、フレーム内の次のＣＴＵに進み、プロセッサ２０５内の制御は、ステップ１３４０からステップ１３２０に戻って進行し、ビットストリームからのＣＴＵの復号化を継続する。ＣＴＵがフレームまたはスライスの最後のものである場合、ステップ１３４０は「ＹＥＳ」を返し、方法１３００は終了する。
【０１７２】
残留係数をサイズ１６のサブブロックにグループ化することは、例えば、図８のＴＢ８１６および８２３に関連して説明したように使用して、エントロピー符号化器３３８およびエントロピー復号化器４２０の実装を容易にする。特に、残差係数をサイズ１６のサブブロックにグループ化することは、各サブブロック内のコンテキストの固定パターンの使用を可能にするために、有意マップのためなどのコンテキスト符号化されたビンの算術符号化の実装を容易にする。
【産業上の利用可能性】
【０１７３】
記載された装置は、コンピュータおよびデータ処理産業に適用され、特に、ビデオおよび画像信号などの信号の符号化および復号化のためのデジタル信号処理に適用され、高い圧縮効率を達成する。
【０１７４】
ＨＥＶＣと比較して、ＶＶＣシステムでは、柔軟性を高めるために、ルマチャネルとクロマチャネルに別々の符号化ツリーを使用することができる。しかし、上述したように、より小さいクロマブロックの使用がスループットに影響を与えるという結果的な問題が発生する可能性がある。ここでは、各符号化ツリーユニットが処理される際に適切な規則を決定し、スループットの問題を回避することができる。さらに、上述したように、説明された装置は、スループットの問題を回避するための規則が与えられた場合、各符号化ツリーを記述するために使用されるコンテキスト符号化されたビンの算術符号化の改善された効率および精度を提供するのを支援することができる。
【０１７５】
上述は、本発明のいくつかの実施形態のみを説明しており、本発明の範囲および精神から逸脱することなく、それらに修正および／または変更を加えることができ、実施形態は例示的なものであり、制限的なものではない。
【０１７６】
（オーストラリアのみ）本明細書の文脈において、「ｃｏｍｐｒｉｓｉｎｇ」という語は、「主に含むが、必ずしも単独ではない」または「有する」もしくは「含む」を意味し、「のみにより構成される」ではない。また、「ｃｏｍｐｒｉｓｅ」や「ｃｏｍｐｒｉｓｅｓ」などの「ｃｏｍｐｒｉｓｉｎｇ」という単語の変化は、それに応じて様々な意味を持つ。
【図１】
2022500926.tif 000003
【図２Ａ】
2022500926.tif 000004
【図２Ｂ】
2022500926.tif 000005
【図３】
2022500926.tif 000006
【図４】
2022500926.tif 000007
【図５】
2022500926.tif 000008
【図６】
2022500926.tif 000009
【図７Ａ】
2022500926.tif 000010
【図７Ｂ】
2022500926.tif 000011
【図８】
2022500926.tif 000012
【図９】
2022500926.tif 000013
【図１０】
2022500926.tif 000014
【図１１】
2022500926.tif 000015
【図１２】
2022500926.tif 000016
【図１３】
2022500926.tif 000017
【国際調査報告】
2022500926.tif 000018
2022500926.tif 000019
2022500926.tif 000020
2022500926.tif 000021
2022500926.tif 000022