本出願は、2012年11月8日に提出された豪州特許出願第2012247040号の出願日の米国特許法第119条に基づく利益を主張し、当該特許文献は、参照によりその全体が、本明細書に全体が記載されているものとして、本明細書に組み込まれる。当該特許文献は、2012年9月28日に提出された豪州特許出願第2012232992号の分割出願であり、当該特許文献は、参照によりその全体が、本明細書に全体が記載されているものとして、本明細書に組み込まれる。
添付の図面のうちのいずれか1つまたは複数において、同じ参照符号を有するステップおよび/または特徴が参照されている場合、それらのステップおよび/または特徴は、本明細書の目的のために、逆の意図が見られない限り、同じ機能(複数の場合もあり)または動作(複数の場合もあり)を有する。
図1は、色差チャネルについての変換単位を複数の変換に暗黙的に細分割(inferred subdivision)することを表す構文要素を符号化するための技法を利用することができるビデオ符号化および復号システム100の機能モジュールを示す概略ブロック図である。システム100は、送信元デバイス110および宛先デバイス130を含む。符号化ビデオ情報を送信元デバイス110から宛先デバイス130へ伝達するのに通信チャネル120が使用される。場合によっては、送信元デバイス110および宛先デバイス130は、それぞれの携帯電話ハンドセットを含んでもよく、この場合、通信チャネル120はワイヤレスチャネルである。他の事例において、送信元デバイス110および宛先デバイス130は、ビデオ会議機器を含んでもよく、その場合、通信チャネル120は一般的に、インターネット接続のような有線チャネルである。その上、送信元デバイス110および宛先デバイス130は、無線テレビ放送、ケーブルテレビアプリケーション、インターネットビデオアプリケーションをサポートし、符号化ビデオが何らかの記憶媒体またはファイルサーバ上にキャプチャされるアプリケーションを含むデバイスを含む、広範なデバイスのいずれかを含んでもよい。
図示のように、送信元デバイス110は、ビデオソース112と、ビデオエンコーダ114と、送信機116とを含む。ビデオソース112は一般的に、イメージングセンサのようなキャプチャされたビデオフレームデータのソース、持続性記録媒体に記憶されている以前にキャプチャされたビデオシーケンス、または遠隔イメージングセンサからの配信動画を含む。ビデオソース112のようなイメージングセンサを含んでもよい送信元デバイス110の例は、スマートフォン、ビデオカムコーダ、およびネットワークビデオカメラを含む。ビデオエンコーダ114は、ビデオソース112からのキャプチャされたフレームデータを、符号化ビデオデータに変換し、これは図3を参照してさらに説明する。符号化ビデオデータは一般的に、送信機116によって、符号化ビデオ情報として通信チャネル120を通して送信される。符号化ビデオデータが、後に通信チャネル120を通して送信されるまで、「フラッシュ」メモリまたはハードディスクドライブのような何らかの記憶デバイスに記憶されることも可能である。
宛先デバイス130は、受信機132と、ビデオデコーダ134と、表示デバイス136とを含む。受信機132は、通信チャネル120から符号化ビデオ情報を受信し、受信したビデオデータをビデオデコーダ134に渡す。その後、ビデオデコーダ134は、復号されたフレームデータを表示デバイス136に出力する。表示デバイス136の例は、スマートフォン、タブレットコンピュータ、コンピュータモニタにおける、または、単独のテレビセットにおけるもののような、陰極線管、液晶ディスプレイを含む。送信元デバイス110および宛先デバイス130の各々の機能が、単一のデバイス内に具現化されることも可能である。
上記で言及した例示的なデバイスにかかわらず、送信元デバイス110および宛先デバイス130の各々は、一般的にはハードウェアおよびソフトウェア構成要素を組み合わせることによって、汎用コンピューティングシステム内で構成されてもよい。図2Aはそのようなコンピュータシステム200を示し、コンピュータシステム200は、コンピュータモジュール201と、キーボード202、マウスポインタデバイス203、スキャナ226、ビデオソース112として構成されてもよいカメラ227、およびマイクロホン280のような入力デバイスと、プリンタ215、表示デバイス136として構成されてもよい表示デバイス214、およびスピーカ217を含む出力デバイスとを含む。外部変調復調(モデム)送受信デバイス216が、コンピュータモジュール201によって、接続221を介した通信ネットワーク220への、および、通信ネットワーク220からの通信のために使用されてもよい。通信チャネル120を表してもよい通信ネットワーク220は、インターネット、セルラ通信ネットワーク、またはプライベートWANのような広域ネットワーク(WAN)であってもよい。接続221が電話回線である場合、モデム216は従来の「ダイヤルアップ」モデムであってもよい。或いは、接続221が高容量(たとえば、ケーブル)接続である場合、モデム216はブロードバンドモデムであってもよい。通信ネットワーク220へのワイヤレス接続には、ワイヤレスモデムも使用されてもよい。送受信デバイス216は、送信機116および受信機132の機能を提供することができ、通信チャネル120が接続221内に組み込まれてもよい。
コンピュータモジュール201は一般的に、少なくとも1つの処理装置205と、メモリユニット206とを含む。たとえば、メモリユニット206は、半導体ランダムアクセスメモリ(RAM)および半導体読み出し専用メモリ(ROM)を有してもよい。コンピュータモジュール201はまた、ビデオディスプレイ214、スピーカ217およびマイクロホン280に結合しているオーディオ−ビデオインターフェース207、キーボード202、マウス203、スキャナ226、カメラ227およびオプションとしてジョイスティックまたは他のヒューマンインターフェースデバイス(図示せず)に結合している入出力(I/O)インターフェース213、ならびに、外部モデム216およびプリンタ215のためのインターフェース208を含む、いくつかのI/Oインターフェースをも含む。いくつかの実施態様において、モデム216は、コンピュータモジュール201の中、たとえば、インターフェース208の中に組み込まれてもよい。コンピュータモジュール201は、ローカルネットワークインターフェース211をも有し、ローカルネットワークインターフェース211は、コンピュータシステム200が接続223を介して、ローカルエリアネットワーク(LAN)として知られているローカルエリア通信ネットワーク222に結合することを可能にする。図2Aに示すように、ローカル通信ネットワーク222はまた、接続224を介してワイドネットワーク220にも結合してもよく、これは通常は、いわゆる「ファイアウォール」デバイスまたは同様の機能のデバイスを含む。ローカルネットワークインターフェース211は、Ethernet(登録商標)回路カード、Bluetooth(登録商標)ワイヤレス装置またはIEEE802.11ワイヤレス装置を含んでもよいが、多数の他のタイプのインターフェースを、インターフェース211に対して実施してもよい。ローカルネットワークインターフェース211はまた、送信機116および受信機132の機能をも提供してもよく、通信チャネル120はまた、ローカル通信ネットワーク222において具現化されてもよい。
I/Oインターフェース208および213は、直列および並列接続のうちのいずれかまたは両方を提供することができ、前者は一般的にユニバーサルシリアルバス(USB)規格に従って実装され、対応するUSBコネクタ(図示せず)を有する。記憶デバイス209が提供され、一般的にハードディスクドライブ(HDD)210を含む。フロッピー(登録商標)ディスクドライブおよび磁気テープドライブ(図示せず)のような他の記憶デバイスも使用されてもよい。不揮発性データ源として機能するために光ディスクドライブ212が一般的に設けられる。たとえば、光ディスク(たとえば、CD−ROM、DVD、Blu−rayディスク(登録商標))、USB−RAM、ポータブル、外部ハードドライブ、およびフロッピー(登録商標)ディスクのようなポータブルメモリデバイスが、コンピュータシステム200に対する適切なデータ源として使用されてもよい。一般的に、HDD210、光ドライブ212、ネットワーク220および222のいずれかは、ビデオソース112として、または、ディスプレイ214による再生のために記憶されるべき復号ビデオデータの宛先として動作するようにも構成されてもよい。
コンピュータモジュール201の構成要素205〜213は一般的に、相互接続バス204を介して、結果として当業者に既知のコンピュータシステム200の従来の動作モードをもたらすように通信する。たとえば、プロセッサ205は、接続218を使用してシステムバス204に結合される。同様に、メモリ206および光ディスクドライブ212は、接続219によってシステムバス204に結合される。記載される構成を実行することができるコンピュータの例は、IBM−PCおよび互換性のあるSun SPARCステーション、Apple Mac(商標)または同様のコンピュータシステムを含む。
適切であるかまたは所望される場合、ビデオエンコーダ114およびビデオデコーダ134ならびに後述する方法は、コンピュータシステム200を使用して実装されてもよく、ビデオエンコーダ114、ビデオデコーダ134、および、後述する図10〜図13のプロセスは、コンピュータシステム200内で実行可能な1つまたは複数のソフトウェアアプリケーションプログラム233として実装されてもよい。特に、ビデオエンコーダ114、ビデオデコーダ134および説明する方法のステップは、コンピュータシステム200内で実行されるソフトウェア233内の命令231(図2B参照)によって達成される。ソフトウェア命令231は、各々が1つまたは複数の特定のタスクを実行するためのものである1つまたは複数のコードモジュールとして形成されてもよい。ソフトウェアはまた、2つの別個の部分に分割されてもよく、第1の部分および対応するコードモジュールが説明される方法を実行し、第2の部分および対応するコードモジュールが、第1の部分とユーザとの間のユーザインターフェースを管理する。
ソフトウェアは、たとえば、後述する記憶デバイスを含む、コンピュータ可読媒体に記憶されてもよい。ソフトウェアは、コンピュータ可読媒体からコンピュータシステム200内にロードされ、その後、コンピュータシステム200によって実行される。そのようなソフトウェアを有するコンピュータ可読媒体またはコンピュータ可読媒体に記録されているコンピュータプログラムが、コンピュータプログラム製品である。コンピュータシステム200内でコンピュータプログラム製品を使用することによって、好ましくは、ビデオエンコーダ114、ビデオデコーダ134および説明される方法を実装するための有利な装置がもたらされる。
ソフトウェア233は一般的に、HDD210またはメモリ206に記憶される。ソフトウェアは、コンピュータ可読媒体からコンピュータシステム200内にロードされ、コンピュータシステム200によって実行される。したがって、たとえば、ソフトウェア233は、光ディスクドライブ212によって読み出される光学的に読み取り可能なディスク記憶媒体(たとえば、CD−ROM)225に記憶されてもよい。
いくつかの事例において、アプリケーションプログラム233は、1つまたは複数のCD−ROM225上に符号化されてユーザに供給され、対応するドライブ212を介して読み出されてもよく、或いは、ネットワーク220または222からユーザによって読み出されてもよい。またさらに、ソフトウェアはまた、他のコンピュータ可読媒体からコンピュータシステム200内にロードすることもできる。コンピュータ可読記憶媒体とは、記録されている命令および/またはデータを、実行および/または処理のためにコンピュータシステム200に提供する任意の持続性有形記憶媒体を指す。そのような記憶媒体の例は、フロッピー(登録商標)ディスク、磁気テープ、CD−ROM、DVD、Blu−rayディスク(登録商標)、ハードディスクドライブ、ROMまたは集積回路、USBメモリ、磁気−光ディスク、または、PCMCIAカードのようなコンピュータ可読カードなどを含み、そのようなデバイスがコンピュータモジュール201の内部にあるか、または外部にあるかは問わない。同じくコンピュータモジュール401へのソフトウェア、アプリケーションプログラム、命令および/またはビデオデーダもしくは符号化ビデオデータの提供に関与することができる一時的または非有形コンピュータ可読伝送媒体の例は、無線または赤外線送信チャネルおよび別のコンピュータまたはネットワーク接続デバイスへのネットワーク接続、ならびに、電子メール送信およびウェブサイト上に記録されている情報を含むインターネットまたはイントラネットなどを含む。
上述のアプリケーションプログラム233の第2の部分および対応するコードモジュールは、ディスプレイ214上にレンダリングまたは他の様態で表現されるべき1つまたは複数のグラフィカルユーザインターフェース(GUI)を実装するために実行されてもよい。一般的にキーボード202およびマウス203を操作することを通じて、コンピュータシステム200およびアプリケーションのユーザは、機能的に適合可能な様式でインターフェースを操作することができ、GUIと関連付けられるアプリケーションに対するコマンドおよび/または入力の制御を提供する。スピーカ217を介した発話プロンプトおよびマイクロホン280を介したユーザ音声コマンド入力を利用するオーディオインターフェースのような、他の形態の機能的に適合可能なユーザインターフェースも実装されてもよい。
図2Bは、プロセッサ205および「メモリ」234の詳細な概略ブロック図である。メモリ234は、図2Aのコンピュータモジュール201がアクセスすることができるすべてのメモリモジュール(HDD209および半導体メモリ206を含む)の論理集合体を表す。
コンピュータモジュール201が最初に起動されるとき、電源オンセルフテスト(POST)プログラム250が実行される。POSTプログラム250は、一般的に、図2Aの半導体メモリ206のROM249に記憶されている。ソフトウェアを記憶するROM249のようなハードウェアデバイスは、ファームウェアと呼ばれることもある。POSTプログラム250は、コンピュータモジュール201内のハードウェアを調べて適切に機能しているか確認し、一般的に、プロセッサ205、メモリ234(209、206)、および、また一般的にROM249に記憶されている基本入出力システムソフトウェア(BIOS)モジュール251を、正確に動作しているかチェックする。POSTプログラム250が順調に作動すると、BIOS251は図2Aのハードディスクドライブ210を起動する。ハードディスクドライブ210を起動することによって、ハードディスクドライブ210に常駐するブーツトラップローダプログラム252がプロセッサ205を介して実行される。これによって、オペレーティングシステム253がRAMメモリ206にロードされてオペレーティングシステム253が動作を開始する。オペレーティングシステム253は、プロセッサ管理、メモリ管理、デバイス管理、記憶管理、ソフトウェアアプリケーションインターフェース、および一般的なユーザインターフェースを含む、様々な高レベル機能を実現させる、プロセッサ205によって実行可能なシステムレベルアプリケーションである。
オペレーティングシステム253は、コンピュータモジュール201で作動している各プロセスまたはアプリケーションが、別のプロセスに割り当てられているメモリと衝突することなく実行される十分なメモリを有するように、メモリ234(209、206)を管理する。さらに、図2Aのコンピュータシステム200内で利用可能な種々の種類のメモリは、各プロセスが効果的に作動するように適切に利用されなければならない。したがって、集合メモリ234は、メモリの特定のセグメントが割り当てられている様態を示すようには意図されておらず(特に明記しない限り)、コンピュータシステム200によってアクセス可能なメモリの一般的概念とこのようなメモリの使用様態を提供するものである。
図2Bに示すように、プロセッサ205は、制御ユニット239、数値演算ユニット(ALU)240、およびキャッシュメモリと呼ばれることもあるローカルメモリまたは内部メモリ248を含むいくつかの機能モジュールを含む。キャッシュメモリ248は、一般的に、レジスタセクションにいくつかの記憶レジスタ244〜246を含む。1つまたは複数の内部バス241が、これらの機能モジュールを機能的に相互接続する。また、プロセッサ205は、一般的に、接続218を用いてシステムバス204を介して外部デバイスと通信するための1つまたは複数のインターフェース242を有する。メモリ234は、接続219を使用してバス204に結合されている。
アプリケーションプログラム233は、条件付き分岐命令およびループ命令を含む場合がある一連の命令231を含む。また、プログラム233は、プログラム233の実行に使用されるデータ232も含んでもよい。命令231およびデータ232は、それぞれ、記憶場所228、229、230および235、236、237に記憶される。命令231および記憶場所228〜230の相対サイズに応じて、特定の命令が、記憶場所230に示す命令によって描かれているように、単一の記憶場所に記憶されてもよい。或いは、命令は、記憶場所228および229に示す命令セグメントによって描かれているように、セグメント化されて、その各々が別個の記憶場所に記憶されるいくつかの部分にされてもよい。
一般に、プロセッサ205は、プロセッサ内で実行される命令セットを与えられる。プロセッサ205は、後続の入力を待ち、その入力に対して、プロセッサ205は別の命令セットを実行することによって対応する。各入力は、すべて図2Aに示されている、入力デバイス202、203の1つまたは複数によって生成されるデータ、ネットワーク220、202のうちの一方を通って外部ソースから受信されるデータ、記憶デバイス206、209のうちの一方から読み出されるデータ、または対応する読み取り器212に挿入される記憶媒体225から取り出されるデータを含む、いくつかのソースのうちの1つまたは複数から提供されてもよい。場合によっては、命令セットを実行する結果としてデータが出力されてもよい。また、実行は、メモリ234へのデータまたは変数の記憶を伴ってもよい。
ビデオエンコーダ114、ビデオデコーダ134および説明される方法は、メモリ234内で、対応する記憶場所255、256、257に記憶されている入力変数254を使用してもよい。 ビデオエンコーダ114、ビデオデコーダ134および説明される方法は、出力変数261を生成し、出力変数261は、メモリ234内で、対応する記憶場所262、263、264に記憶される。中間媒介変数258が、記憶場所259、260、266、および267に記憶されてもよい。
図2Bのプロセッサ205を参照すると、レジスタ244、245、246、数値演算ユニット(ALU)240、および制御ユニット239は、協働して、プログラム233を構成する命令セットのすべての命令に対して「フェッチ、復号、および実行」のサイクルを実施する必要のある一連のマイクロ動作を実施する。各フェッチ、復号、および実行のサイクルは、(a)記憶場所228、229、230から命令231をフェッチまたは読み出すフェッチ動作、(b)いずれの命令がフェッチされているかを制御ユニット239が判定する復号動作、および(c)制御ユニット239および/またはALU240が命令を実行する実行動作を含む。
その後、次の命令に対するさらなるフェッチ、復号、および実行のサイクルが実行されてもよい。同様に、制御ユニット239が値を記憶場所232に記憶するか、または書き込む記憶サイクルが実施されてもよい。
後で説明される図10〜図13のプロセスにおける各ステップまたはサブプロセスは、プログラム233の1つまたは複数のセグメントと関連付けられ、一般的に、協働して、プログラム233の注目されるセグメントに対する命令セットのすべての命令に対してフェッチ、復号、および実行のサイクルを実施する、プロセッサ205内のレジスタセクション244、245、247、ALU240、および制御ユニット239によって実施される。
図3は、ビデオエンコーダ114の機能モジュールを示す概略ブロック図である。 図4は、ビデオデコーダ134の機能モジュールを示す概略ブロック図である。ビデオエンコーダ114およびビデオデコーダ134は、図2Aおよび図2Bに示すような汎用コンピュータシステム200を使用して実装されてもよく、様々な機能モジュールが、コンピュータシステム200内の専用ハードウェアによって、ハードディスクドライブ205に常駐し、その実行においてプロセッサ205によって制御されるソフトウェアアプリケーションプログラム233の1つまたは複数のソフトウェアコードモジュールのような、コンピュータシステム200内で実行可能なソフトウェアによって、或いは、コンピュータシステム200内で実行可能な専用ハードウェアおよびソフトウェアの組み合わせによって実装されてもよい。ビデオエンコーダ114、ビデオデコーダ134および説明される方法は、代替して、説明される方法の機能または副次機能を実施する1つまたは複数の集積回路のような、専用ハードウェアにおいて実装されてもよい。そのような専用ハードウェアは、グラフィックプロセッサ、デジタル信号プロセッサ、特定用途無集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)または1つもしくは複数のマイクロプロセッサおよび関連メモリを含んでもよい。特に、ビデオエンコーダ114はモジュール320〜344を備え、ビデオデコーダ134はモジュール420〜434を備え、それらは各々がソフトウェアアプリケーションプログラム233の1つまたは複数のソフトウェアコードモジュールとして実装されてもよい。
図3のビデオエンコーダ114は、高効率ビデオ符号化(HEVC)ビデオ符号化パイプラインの一例であるが、モジュール320〜344によって実施される処理段階は、VC−1またはH.264/MPEG−4 AVCのような他のビデオコーデックに共通のものである。ビデオエンコーダ114は、キャプチャされたフレームデータのようなデータを一連のフレームとして受信し、各フレームは、1つまたは複数の色チャネルを含む。各フレームは、色チャネルあたり1つのサンプル格子を備える。色情報は、推奨ITU−R BT.709(「YUV」)のような「色空間」を使用して表されるが、他の色空間も可能である。YUV色空間が使用されるとき、色チャネルは輝度チャネル(「Y」)および2つの色差チャネル(「U」および「V」)を含む。その上、画像のサンプリングに応じて、または、キャプチャされたフレームデータを再サンプリングするためのフィルタリングアプリケーションを通じて、異なる量の情報が、各色チャネルのサンプル格子内に含まれ得る。「色差フォーマット」として知られているいくつかのサンプリング手法が存在し、それらのうちのいくつかを図5Aおよび図5Bを参照して説明する。
ビデオエンコーダ114は、フレームデータ310のような、キャプチャされたフレームデータの各フレームを、一般的に「符号化ツリーブロック」(CTB)と称される領域に分割する。各符号化ツリーブロック(CTB)は、フレームの一部分を「符号化単位」(CU)の集合にする階層的四分木細分割を含む。符号化ツリーブロック(CTB)は一般的に、64x64輝度サンプルの面積を占有するが、16x16または32x32のような、他のサイズが可能である。場合によっては、128x128のようなさらにより大きいサイズが使用されてもよい。符号化ツリーブロック(CTB)は、4つのサイズが等しい領域に分割することによって細分割されて、新たな階層レベルを作成することができる。分割は再帰的に適用され得、結果として四分木階層がもたらされる。符号化ツリーブロック(CTB)の辺寸法は常に2の累乗であるため、四分木分割の結果は常に幅および高さの半分になり、その領域の辺寸法は常に2の累乗である。領域の分割がさらに実施されないとき、その領域内に「符号化単位(CU)」が存在すると考えられる。符号化ツリーブロックの最上位において分割が実施されないとき、符号化ツリーブロック全体を占有する領域が、一般的に「最大符号化単位」(LCU)と称される、1つの符号化単位(CU)を含む。8x8輝度サンプルによって占有される面積のような、各符号化単位に対する最小サイズも存在するが、他の最小サイズも可能である。このサイズの符号化単位は、一般的に、「最小符号化単位」(SCU)と称される。この四分木階層の結果として、符号化ツリーブロック(CTB)全体が1つまたは複数の符号化単位(CU)によって占有される。
ビデオエンコーダ114は、一般的に、各符号化単位(CU)に対する「予測単位」(PU)と称される、1つまたは複数のサンプルアレイを生成する。各符号化単位(CU)における予測単位(PU)の様々な配列が可能であるが、予測単位(PU)は重なり合わない、および、符号化単位(CU)の全体が1つまたは複数の予測単位(PU)によって占有されるという要件がある。この方式によって予測単位(PU)がフレーム面積全体をカバーすることが保証される。
ビデオエンコーダ114は、マルチプレクサモジュール340から、予測単位(PU)382を出力することによって動作する。差分モジュール344が、予測単位(PU)382と、空間領域における、フレームデータ310の符号化ツリーブロック(CTB)の符号化単位(CU)からのデータサンプルの対応する2Dアレイとの間の差を出力し、この差は、「残差サンプルアレイ」360として知られている。残差サンプルアレイ360は、変換モジュール320において周波数領域に変換されてもよく、または、残差サンプルアレイ360は、空間領域にあるままあってもよく、これら2つの間の選択は、変換スキップ制御モジュール346の制御下で、変換スキップフラグ386を使用してシグナリングされるように動作するマルチプレクサ321によって実施される。変換スキップ制御モジュール346は変換スキップフラグ386を判定し、これは、残差サンプルアレイ360を残差係数アレイ362に変換するために変換モジュール320が使用されるか、または、変換モジュール320の使用がスキップされるかを示す。変換モジュール320をスキップすることは、「変換スキップ」と称される。変換がスキップされないとき、差分モジュール344からの残差サンプルアレイ360は変換モジュール320によって受信され、変換モジュール320は、「順変換」を適用することによって、残差サンプルアレイ360を空間表現から周波数領域表現へと変換(または「符号化」)する。変換モジュール320は、一般的に「変換ツリー」と称される、符号化単位(CU)の1つまたは複数の変換単位(TU)への階層細分割における変換単位(TU)における各変換の残差変換アレイ362として構成される変換係数を作成する。変換スキップが実施されるとき、残差サンプルアレイ360は空間領域の符号化ビットストリーム312として表され、変換モジュール320はバイパスされて、結果として、残差サンプルアレイ360は、変換スキップフラグ386の制御下で動作するマルチプレクサ321を介して、スケーリングおよび量子化モジュール322に直接通される。変換スキップ制御モジュール346は、変換スキップフラグ386の各値(すなわち、変換がスキップされる、または通常の変換動作)について符号化ビットストリーム312に必要とされるビットレートをテストし得る。変換スキップ制御モジュール346は、結果として符号化ビットストリーム312においてより低いビットレートをもたらす、したがってより高い圧縮効率を達成する変換スキップフラグ386の値を選択し得る。変換スキップ制御モジュール346によって実施される各テストによってビデオエンコーダ114の複雑度が増大し、したがって、変換スキップモジュール346がテストを実施する事例の数を、変換スキップを選択することの利益がテストを実施するコストを上回る事例の数まで低減することが望ましい。たとえば、これは、開発中の高効率ビデオ符号化(HEVC)規格におけるイントラ予測ブロック(さらに後述する)について、変換スキップを4x4変換のみのような、特定の変換サイズおよびブロックタイプに制限することによって達成することができる。変換スキップ機能は、多くの「高周波数」情報を含む残差サンプルアレイ360を符号化するのに特に有用である。高周波数情報は一般的に、英数字がフレームデータ310に埋め込まれている場合のように、多くの鮮鋭なエッジを含むフレームデータ310に存在する。コンピュータによって生成されたグラフィックのような、フレームデータ310の他のソースも、多くの高周波数情報を含む場合がある。変換モジュール320のDCTのような変換は、主に、自然画像をキャプチャするイメージングセンサから取得されるもののような低周波数情報を含むフレームデータ310に対して最適化される。したがって、変換スキップ機能の存在は、開発中の高効率ビデオ符号化(HEVC)規格に関連するアプリケーションについて、相当の符号化効率利得をもたらす。ビデオエンコーダ114について、変換スキップ機能をサポートすることの1つの欠点は、変換スキップフラグ386の、2つの可能性のあるモードをテストする必要があることである。後述するように、変換スキップ機能は、4x4サンプルの残差サンプルアレイ360のサイズについて、かつ、イントラフレーム予測モジュール336を参照して説明するように、残差サンプルアレイ360がイントラ予測ブロックに対応するときにサポートされる。しかしながら、変換スキップモジュール386は各色チャネルについて別個にシグナリングされることが望ましく、したがって、各色チャネルに対して別個のテストが、変換スキップ制御モジュール346によって実施され得る。各色チャネルに対して別個にシグナリングすることは、高周波数情報は一方または両方の色差チャネルに集中し得、したがって変換スキップに適しており、一方で、輝度チャネルは最小限の高周波数情報を有し得、したがって変換を使用することから利益を得るため、有利である。たとえば、色付き背景上の色付きテキストが、結果としてこのシナリオをもたらす。
開発中の高効率ビデオ符号化(HEVC)規格について、周波数領域表現への変換は、修正離散コサイン変換(DCT)を使用して実施され、ここでは、従来のDCTが、シフトおよび付加を使用して実施されるように修正されている。サポートされる変換サイズに従って、残差サンプルアレイ360および変換係数362の様々なサイズが可能である。開発中の高効率ビデオ符号化(HEVC)規格において、変換は、32x32、16x16、8x8および4x4のような指定のサイズを有する2Dサンプルアレイに対して実行される。したがって、ビデオエンコーダ114にとって利用可能な所定の変換サイズセットが存在すると考えられ得る。その上、上記で予示したように、変換サイズセットは、輝度チャネルと色差チャネルとの間で異なり得る。2次元変換は一般的に「分離可能」であるように構成され、これによって、一方の方向において(たとえば、行において)2Dサンプルアレイに対して動作する第1の1D変換セット、および、それに続く、他方の方向において(たとえば、列において)第1の1D変換セットから出力される2Dサンプルアレイに対して動作する第2の1D変換セットとしての実施態様が可能になる。同じ幅および高さを有する変換は一般的に「正方形変換」と称される。異なる幅および高さを有するさらなる変換も可能であり、これは一般的に「非正方形変換」と称される。最適化された変換実施態様は、行および列の1次元変換を組み合わせて、4x4変換モジュールまたは8x8変換モジュールのような特定のハードウェアまたはソフトウェアモジュールにすることができる。より大きい寸法を有する変換は、実施するのにより大量の回路を必要とするが、これらはまれにしか使用されないものであり得る。したがって、開発中の高効率ビデオ符号化(HEVC)規格では32x32の最大変換サイズが存在する。また、この変換実施態様の統合的に性質によって、非正方形変換サイズは、一般的に対応する正方形変換から存在する既存の1次元変換論理が再使用されるのではなく、まったく新しいハードウェアが実装される必要があるため、サポートされる非正方形変換サイズの数を低減することが好適であることにもなる。
変換は、輝度および色差チャネルの両方に適用される。変換単位(TU)に関して輝度チャネルと色差チャネルとの取り扱いには差が存在し、これについては図5Aおよび図5Bを参照して後述する。各変換ツリーは1つの符号化単位(CU)を占有し、これは、変換ツリー(四分木)階層の各リーフノードにおける1つの変換単位(TU)を含む階層への符号化単位(CU)の四分木分解として定義され、各変換単位(TU)は、サポートされる変換サイズの変換を利用することが可能である。符号化ツリーブロック(CTB)と同様に、符号化単位(CU)の全体が、1つまたは複数の変換単位(TU)によって占有されることが必要である。変換ツリー四分木階層の各レベルにおいて、「符号化ブロックフラグ値」は、さらなる分割が存在しないときに現在の階層レベルにおいて、各色チャネル内に変換が存在する可能性があることをシグナリングするか、または、より低い階層レベルが、結果もたらされる変換単位(TU)の間の少なくとも1つの変換を含み得ることをシグナリングする。符号化ブロックフラグ値が0であるとき、現在の階層レベルまたはより低い階層レベルにおいて、変換ツリーの任意の変換単位(TU)の対応する色チャネルに対して変換は実行されない。符号化ブロックフラグ値が1であるとき、その領域は、少なくとも1つの非ゼロ残差係数を有するはずである変換を含む。このように、各色チャネルについて、0以上の変換が、符号化単位(CU)の無から全体まで変動する符号化単位(CU)の面積の一部をカバーし得る。各色チャネルに対して別個の符号化ブロックフラグ値が存在する。可能な符号化ブロックフラグ値が1つしかない事例が存在するため、各符号化ブロックフラグ値が符号化される必要はない。
したがって、マルチプレクサ321の出力は、残差サンプルアレイ360または変換係数アレイ362のうちの一方であり、図3においては単純にアレイ363とラベリングされている。アレイ363は、スケーリングおよび量子化モジュール322に入力され、当該モジュールにおいて、その入力のサンプル値が、決定されている量子化パラメータ384に従ってスケーリングおよび量子化されて、残差データアレイ364が生成される。スケーリングおよび量子化プロセスの結果として、決定されている量子化パラメータ384の値に応じて、精度の損失が生じる。決定されている量子化パラメータ384の値がより高くなると、結果としてより多くの情報が残差データから失われることになる。これによって、ビデオデコーダ134からの出力の視覚的品質が低減することと引き換えに、ビデオエンコーダ114によって達成される圧縮が増大する。決定されている量子化パラメータ384は、フレームデータ310の各フレームの符号化中に適合されてもよく、または、フレーム全体のような、フレームデータ310の一部に対して固定されてもよい。別個の値による異なる残差係数の量子化のような、決定されている量子化パラメータ384の他の適合も可能である。残差データアレイ364および決定されている量子化パラメータ384は、入力として逆スケーリングモジュール326に取り込まれ、逆スケーリングモジュール326は、スケーリングおよび量子化モジュール322によって実施されたスケーリングを逆にして、残差データアレイ364が再スケーリングされたものである、再スケーリングされたデータアレイ366を生成する。開発中の高効率ビデオ符号化規格(HEVC)規格はまた、「可逆」符号化モードもサポートする。可逆符号化が使用されているとき、変換モジュール320とスケーリングおよび量子化モジュール322は両方ともバイパスされ、結果として、残差サンプルアレイ360はエントロピー符号化器324に直接入力されることになる。可逆モードにおいては、逆スケーリングモジュール326および逆変換モジュール328もバイパスされる。可逆符号化モード(通常の「不可逆」モードとは反対の)の選択は、エントロピー符号化器324によって符号化ビットストリーム312内に符号化される。可逆モードのためにバイパスを実施するための論理は図3には示されていない。スケーリングおよび量子化モジュール322をバイパスする結果として、残差係数アレイ362または残差サンプルアレイ360の量子化は行われないことになり、フレームデータ310の正確な表現が、エントロピー符号化器324によって符号化ビットストリーム312内に符号化される。可逆符号化モードの結果として、ビデオエンコーダ114の圧縮効率は低くなり、それゆえ、これは一般的に、医療用途のような、可逆符号化が非常に望ましい用途にのみ使用される。
残差データアレイ364、決定されている量子化パラメータ384および変換スキップフラグ386も、入力としてエントロピー符号化器モジュール324に取り込まれ、エントロピー符号化器モジュール324は、残差データアレイ364の値を符号化ビットストリーム312(または「ビデオビットストリーム」)内に符号化する。各変換単位(TU)における残差データアレイ364は、「サブブロック」として一般的に知られているグループ内に符号化される。サブブロックは、好ましくは、変換のサイズにかかわらず同じ寸法を有するべきであり、これは、これによってサブブロック処理に関係する論理を再使用することが可能になるためである。1つのサブブロック内の残差データは一般的に「データグループ」(または「係数グループ」、これは変換スキップが適用され、「係数グループ」が周波数領域表現ではなく空間領域表現を含む場合であっても、そのように称される)と称され、各データグループについて、データグループ内の少なくとも1つの残差データ値が非ゼロであるか否かを示すために、データグループフラグが一般的に符号化される。場合によっては、データグループフラグは暗示されるものであってもよく、したがって符号化されない。残差データ値が非ゼロ(「有意」)であるか、またはゼロ(「非有意」)であるかを示すために、1のデータグループフラグ値を有するデータグループに属する各残差データ値に対してフラグが符号化される。スケーリングおよび量子化モジュール322からもたらされる精度の損失に起因して、再スケーリングされたデータアレイ366は、アレイ363内の元の値と同一ではない。逆スケーリングモジュール326からの再スケーリングされたデータアレイ366はその後、逆変換モジュール328に出力される。逆変換モジュール328は、周波数領域から空間領域への逆変換を実施して、ビデオデコーダ134において生成される空間領域表現と同一の、再スケーリングされた変換係数アレイ366の空間領域表現368を生成する。マルチプレクサ369は、マルチプレクサ321の動作を補完するように構成されている。マルチプレクサ369は、再スケーリングされたデータアレイ366の各々と、(変換された)空間領域表現368とを入力として受信し、変換スキップフラグ386の制御下で、入力366または368のうちの一方を加算モジュール342への入力として選択するように構成されている。
動き推定モジュール338が、フレームデータ310を、一般的にメモリ206内に構成されている、フレームバッファモジュール332内の1つまたは複数のフレームセットからの以前のフレームデータと比較することによって動きベクトル374を生成する。フレームセットは「参照ピクチャリスト」として知られている。その後、動きベクトル374は、動き補償モジュール334に入力され、動き補償モジュール334は、動きベクトル374から導出される空間オフセットを考慮に入れて、フレームバッファモジュール332に記憶されているサンプルをフィルタリングすることによって、インター予測された予測単位(PU)376を生成する。図3には示されていないが、動きベクトル374は、構文要素として、符号化ビットストリーム312内に符号化するためにエントロピー符号化器モジュール324にも渡される。フレーム内予測モジュール336は、マルチプレクサモジュール340からの予測単位(PU)382とマルチプレクサ369の空間領域出力を加算する加算モジュール342から取得されるサンプル370を使用して、イントラ予測された予測単位(PU)378を生成する。フレーム内予測モジュール336もイントラ予測モード380を生成し、これは符号化ビットストリーム312内に符号化するためにエントロピー符号化器324に送信される。
予測単位(PU)は、イントラ予測またはインター予測方法のいずれかを使用して生成され得る。イントラ予測方法は、予測単位(PU)内に基準サンプルを生成するために、先行して復号されている予測単位(PU)に隣接する(一般的に予測単位の左上の)サンプルを利用する。「イントラ予測モード」と称される、イントラ予測の様々な方向が可能である。インター予測方法は、選択された基準フレームからブロックを参照するために動きベクトルを利用する。ブロックは、サブサンプル精度、たとえば、サンプルの8分の1に至るまでの任意のアラインメントを有する場合があるため、予測単位(PU)のための基準サンプルのブロックを作成するためにフィルタリングが必要である。いずれの方法を使用すべきかの判断は、結果もたらされる符号化ビットストリーム312の所望のビットレートと、イントラ予測またはインター予測方法のいずれかによって導入される画像品質歪みの量との間のレート−歪みトレードオフに従って行われる。イントラ予測が使用される場合、同じくレート歪みトレードオフに従って、イントラ予測の可能性のあるモードのセットから、1つのイントラ予測モードが選択される。マルチプレクサモジュール340が、レート歪みアルゴリズムによって行われた判断に応じて、フレーム内予測モジュール336からのイントラ予測基準サンプル378、または、動き補償ブロック334からのインター予測された予測単位(PU)376のいずれかを選択する。加算モジュール342が、デブロッキングフィルタモジュール330に入力される総和370を生成する。デブロッキングフィルタモジュール330は、ブロック境界に沿ってフィルタリングを実施し、メモリ206内に構成されているフレームバッファモジュール332に書き込まれるデブロッキングサンプル372を生成する。フレームバッファモジュール332は、1つまたは複数の通過したフレームからのデータを、参照ピクチャリストの一部として将来参照するために保持するのに十分な容量を有するバッファである。
開発中の高効率ビデオ符号化(HEVC)規格について、エントロピー符号化器324によって生成される符号化ビットストリーム312は、ネットワーク抽象化層(NAL)ユニットに画定される。一般的に、フレームの各スライスは1つのNALユニット内に含まれている。エントロピー符号化器324は、コンテキスト適応型2値算術符号化(CABAC)アルゴリズムを実施することによって、「構文要素」と総称される、残差アレイ364、イントラ予測モード380、動きベクトルおよび他のパラメータを符号化ビットストリーム312内に符号化する。構文要素は「構文構造」にともにグループ化され、これらのグループ分けは、階層構造を説明するための再帰を含んでもよい。イントラ予測モードのような序数値、または動きベクトルのような整数値に加えて、構文要素は、四分木分割を示すなどのためのフラグも含む。動き推定モジュール338および動き補償モジュール334は動きベクトル374に対して動作し、これは輝度サンプルの1/8の精度を有し、フレームデータ310においてフレーム間の動きの精密なモデル化を可能にする。
図4のビデオデコーダ134を、高効率ビデオ符号化(HEVC)ビデオ復号パイプラインを参照して説明するが、モジュール420〜434によって実施される処理段階は、H.264/MPEG−4 AVC、MPEG−2およびVC−1のようなエントロピー符号化を採用する他のビデオコーデックに共通のものである。符号化ビデオ情報はまた、メモリ206、ハードディスクドライブ210、CD−ROM、Blu−ray(登録商標)ディスクまたは他のコンピュータ可読記憶媒体から読み出されてもよい。代替的に、符号化ビデオ情報は、通信ネットワーク220に接続されているサーバまたは無線周波数受信機のような外部ソースから受信されてもよい。
図4から分かるように、符号化ビットストリーム312のような受信ビデオデータが、ビデオデコーダ134に入力される。符号化ビットストリーム312はまた、メモリ206、ハードディスクドライブ210、CD−ROM、Blu−ray(登録商標)ディスクまたは他のコンピュータ可読記憶媒体から読み出されてもよい。代替的に、符号化ビットストリーム312は、通信ネットワーク220に接続されているサーバまたは無線周波数受信機のような外部ソースから受信されてもよい。符号化ビットストリーム312は、復号されるべき、キャプチャされたフレームデータを表す符号化構文要素を含む。
符号化ビットストリーム312はエントロピー復号器モジュール420に入力され、エントロピー復号器モジュール420は符号化ビットストリーム312から構文要素を抽出し、構文要素の値をビデオデコーダ134内の他のブロックに渡す。エントロピー復号器モジュール420は、コンテキスト適応型2値算術符号化(CABAC)アルゴリズムを適用して、符号化ビットストリーム312から構文要素を復号する。復号された構文要素は、ビデオデコーダ134内でパラメータを再構築するのに使用される。パラメータは、0以上の残差データアレイ450、動きベクトル452、予測モード454および変換スキップフラグ468を含む。残差データアレイ450は逆スケーリングモジュール421に通され、動きベクトル452は動き補償モジュール434に通され、予測モード454はフレーム内予測モジュール426およびマルチプレクサ428に通される。逆スケーリングモジュール421は、残差データに逆スケーリングを実施して、再構築データ455を作成する。変換スキップフラグ468が0である場合、逆スケーリングモジュール421は再構築データ455を逆変換モジュール422に出力する。逆変換モジュール422は「逆変換」を適用して、この事例においては変換係数である再構築データを周波数領域表現から空間領域表現に変換(または「復号」)し、マルチプレクサモジュール423を介して残差サンプルアレイ456を出力する。変換スキップフラグ468の値が1であるとき、この事例においては空間領域にある再構築データ455は、マルチプレクサモジュール423を介して残差サンプルアレイ456として出力される。逆変換モジュール422は、逆変換328と同じ動作を実施する。それゆえ、逆変換モジュール422は、開発中の高効率ビデオ符号化(HEVC)規格に準拠する符号化ビットストリーム312を復号するのに必要とされる所定の変換サイズセットをもたらすように構成されなければならない。符号化ビットストリーム312におけるシグナリングが、可逆モードが使用されたことを示すとき、ビデオデコーダ134は、逆スケーリングモジュール421および逆変換モジュール422をバイパスするように構成され(図4には示さない)、結果として残差データアレイ450は、加算モジュール424に直接入力されることになる。
動き補償モジュール434は、エントロピー復号器モジュール420からの動きベクトル452を、メモリ206内に構成されているフレームバッファブロック432からの基準フレームデータ460と組み合わせて使用して、出力復号フレームデータの予測である、予測単位(PU)に対するインター予測された予測単位(PU)462を生成する。現在の予測単位がイントラ予測を使用して符号化されたことを、予測モード454が示すとき、フレーム内予測モジュール426は、予測単位(PU)に空間的に隣接するサンプル、および、同じく予測モード454によって供給される予測方向を使用して予測単位(PU)に対するイントラ予測された予測単位(PU)464を生成する。空間的に隣接するサンプルは、加算モジュール424から出力される総和458から取得される。マルチプレクサモジュール428は、現在の予測モード454に応じて、予測単位(PU)466に対するイントラ予測された予測単位(PU)464またはインター予測された予測単位(PU)462を選択する。マルチプレクサモジュール428から出力される予測単位(PU)466は、加算モジュール424によって、逆スケーリングおよび変換モジュール422からの残差サンプルアレイ456に加えられて、総和458が生成され、総和458はその後、デブロッキングフィルタモジュール430およびフレーム内予測モジュール426の各々に入力される。デブロッキングフィルタモジュール430は、例えば変換単位(TU)境界のようなデータブロック境界に沿ってフィルタリングを実施して、視覚アーティファクトを平滑化する。デブロッキングフィルタモジュール430の出力は、メモリ206内に構成されているフレームバッファモジュール432に書き込まれる。フレームバッファモジュール432は、将来参照するために1つまたは複数の復号フレームを保持するのに十分なストレージを提供する。復号フレーム412はまた、フレームバッファモジュール432から表示デバイス136のような表示デバイスにも出力される。
図5Aは4:2:0色差フォーマットを使用して符号化されているフレーム部分500のサンプル格子を示し、図5Bは4:2:2色差フォーマットを使用して符号化されているフレーム部分510のサンプル格子を示す。色差フォーマットはビデオエンコーダ114に対する構成パラメータとして指定されており、ビデオエンコーダ114は、色差フォーマットを指定する「chroma_format_idc」構文要素を符号化ビットストリーム312内に符号化する。ビデオデコーダ134は、符号化ビットストリーム312から「chroma_format_idc」構文要素を復号して、使用されている色差フォーマットを判定する。たとえば、4:2:0色差フォーマットが使用されているとき、chroma_format_idcの値は1であり、4:2:2色差フォーマットが使用されているとき、chroma_format_idcの値は2であり、4:4:4色差フォーマットが使用されているとき、chroma_format_idcの値は3である。図5Aおよび図5Bにおいて、輝度サンプル位置501のような輝度サンプル位置が「X」記号を使用して示されており、色差サンプル位置502のような色差サンプル位置が「O」記号を使用して示されている。フレーム部分500が示されている点においてサンプリングすることによって、4:2:0色差フォーマットが適用されるときの各色チャネルについてのサンプル格子が取得される。各輝度サンプル位置Xにおいて、輝度チャネル(「Y」)がサンプリングされ、各色差サンプル位置Oにおいて、両方の色差チャネル(「U」および「V」)がサンプリングされる。図5Aに示すように、各色差サンプル位置において、2x2配列の輝度サンプル位置が存在する。フレーム部分510において示されている輝度サンプル位置における輝度サンプルおよび色差サンプル位置における色差サンプルをサンプリングすることによって、4:2:2色差フォーマットが適用されるときの各色チャネルについてのサンプル格子が取得される。フレーム部分500に対してのものと同じ、サンプルの色チャネルに対する割り当てが、フレーム部分510に対して行われる。フレーム部分500とは対照的に、フレーム部分510には2倍の色差サンプル位置が存在する。フレーム部分510において、色差サンプル位置は、1つ置きの輝度サンプル位置と結びつけられている。したがって、図5Bにおいては、各色差サンプル位置に対して、2x1配列の輝度サンプル位置が存在する。
変換単位の様々な許容可能な寸法を、輝度サンプルを単位として上述した。したがって、輝度チャネルに対して適用される変換によってカバーされる領域は、変換単位寸法と同じ寸法を有することになる。変換単位は色差チャネルも符号化するため、各色差チャネルに対して適用されている変換は、使用されている特定の色差フォーマットに従って適合されている寸法を有することになる。たとえば、4:2:0色差フォーマットが使用されているとき、16x16変換単位(TU)は、輝度チャネルに対して16x16変換を使用することになり、各色差チャネルに対して8x8変換を使用することになる。1つの特別な事例は、4x4変換が輝度チャネルに使用されるときに、色差チャネルに使用され得る、利用可能な対応する2x2変換がない(4:2:0色差フォーマットが適用されるとき)か、または、4x2変換が利用可能である(4:2:2色差フォーマットが適用されるとき)ことである。この特別な事例において、各色差チャネルに対する4x4変換は、複数の輝度変換によって占有されている領域をカバーし得る。
図6Aは、フレームの符号化ツリーブロック(CTB)600内の、符号化単位(CU)602(太い境界線で示す)の例示的な変換ツリーの概略図である。単一の四分木細分割によって、符号化ツリーブロック(CTB)600が、符号化単位(CU)602のような、4つの32x32符号化単位(CU)に分割される。例示的な変換ツリーが、符号化単位(CU)602内に存在する。例示的な変換ツリーは、いくつかの四分木細分割を含み、結果として、図6Aにおけるように番号を付されている10個の変換単位(TU)、たとえば、変換単位#9(TU)604がもたらされる。変換単位#1〜#10は、符号化単位(CU)602の全体をカバーする。各四分木細分割によって、領域は空間的に4つの四半部に分割され、結果として4つのより小さい領域がもたらされる。各変換単位(TU)は、変換ツリー内の変換単位(TU)の階層レベルに対応する、変換深度値を有する。階層レベルは、結果として対応する領域を占有する変換単位(TU)のインスタンスをもたらす四分木細分割が終了する前に実施された四分木細分割の数を示す。たとえば、変換単位#9(TU)604は符号化単位(CU)602の面積の4分の1を占有し、それゆえ、1の変換深度を有する。各変換単位(TU)は、関連付けられるサイズ(または「変換サイズ」)を有し、これは一般的に、輝度サンプル格子上の変換単位(TU)を含む領域の寸法として記述される。サイズは、符号化単位(CU)サイズおよび変換深度に応じて決まる。0の変換深度を有する変換単位(TU)は、対応する符号化単位(CU)のサイズに等しいサイズを有する。変換深度が増分する度ごとに、結果として、所与の変換深度における変換ツリー内に存在する変換単位(TU)のサイズは半分になっていく。フレームが輝度チャネルおよび色差チャネルを含む場合、符号化単位(CU)602は、輝度サンプル格子および色差サンプル格子の両方における領域を占有し、したがって、各変換単位(TU)は、輝度サンプル格子上の輝度サンプルおよび色差サンプル格子上の色差サンプルの両方を記述する情報を含む。各変換単位(TU)に関する情報の性質は、ビデオエンコーダ114またはビデオデコーダ134の処理段階に応じて決まる。変換モジュール320に対する入力ならびに逆スケーリングおよび変換モジュール422の出力において、残差サンプルアレイ360および456はそれぞれ、空間領域における各変換単位(TU)に関する情報を含む。残差サンプルアレイ360および456は、輝度チャネルと色差チャネルとの間の処理の差に起因して、「色差残差サンプルアレイ」および「輝度残差サンプルアレイ」にさらに分割され得る。スケーリングおよび量子化モジュール322からの出力ならびに逆スケーリングおよび変換モジュール422の入力において、残差データアレイ364および450はそれぞれ、周波数領域における各変換単位(TU)に関する情報を含む。残差データアレイ364および450は、輝度チャネルと色差チャネルとの間の処理の差に起因して、「色差残差データアレイ」および「輝度残差データアレイ」にさらに分割され得る。
図6Bは、1セットの変換単位(TU)を含み、輝度サンプル格子上の32x32輝度サンプルアレイを占有する符号化単位(CU)602を占有する、32x32符号化単位(CU)の輝度チャネルに対する、図6Aの例示的な変換ツリーに対応する例示的な変換ツリー630を示す。 図7は、例示的な変換ツリー630を表すデータ構造700を示す。図6Bにおいて1〜10の番号を付されているボックスは、領域632内に存在する変換単位(いくつかの変換単位(TU)640によって例示される)を示し、各ボックスは、それ以上細分割されない(破線の境界を有するボックスによって示される)領域内に含まれている。
図6Bにおいて、1および9の番号を付されているボックスは、輝度チャネルに対する16x16変換を含み、2、3および8の番号を付されているボックスは、輝度チャネルに対する8x8変換を含み、4〜7の番号を付されているボックスは、輝度チャネルに対する4x4変換を含む。これらのボックスの各々の対応する領域(破線のボックス)は、変換が存在することを示す1の符号化ブロックフラグ値を有する。
各色チャネルに対する変換の存否は、ビットストリームの符号化および復号の各々において使用される別個の符号化ブロックフラグ値によって指定されるが、符号化ブロックフラグ値は、後述するように、ビットストリーム内で送信される必要はない。
その結果、エントロピー復号器420から出力される残差係数アレイ450の数は、符号化ブロックフラグ値に応じて決まる。いずれの色チャネルにおいても有意な係数が存在しない(すなわち、すべての係数が0である)とき、エントロピー復号器420から出力される残差データ(係数)アレイ450の数は0である。
図7において、円は、分割変換フラグ値を表し、分割変換フラグ値は、対応する円の内部に示されている。図7において、三角形は、符号化ブロックフラグ値を表し、符号化ブロックフラグ値は、対応する三角形の内部に示されている。正方形は変換単位を表し、各変換は、図6B内に存在する変換番号付けに従って番号を付されている。
例示的な変換ツリー630の最上位の階層レベルは、32x32符号化単位(CU)を占有する領域632を含む。分割変換フラグ値702は、領域632が、領域634のような4つの16x16領域に細分割され、したがって、例示的な変換ツリー630の「非リーフ」ノードを定義することを示す。各16x16領域について、分割変換フラグ値704のようなさらなる分割変換フラグ値が、それぞれの16x16領域が4つの8x8領域にさらに細分割されるべきであることを示す。たとえば、領域634は、0の分割変換フラグ値704によって示されるようにそれ以上細分割されず、したがって、例示的な変換ツリー630の「リーフ」ノードを定義する。対照的に、領域638は、1の分割変換フラグ値712によって示されるように、4つの4x4領域(領域636など)にさらに細分割される。変換ツリー630内に存在する再帰的分割構造は、符号化ツリーブロック(CTB)内に存在する四分木分割に類似している。輝度チャネルについて、四分木の「リーフ」ノードにおいて、変換単位(TU)内に変換が存在するかは、符号化ブロックフラグ値によってシグナリングされ、たとえば、1の符号化ブロックフラグ値708は、領域634内に変換710が存在することを示す。
変換は各領域内の残差データを表すために使用され得るため、領域は、輝度チャネルに関する4x4輝度サンプルのような、サポートされる最小変換サイズよりも小さくなることは許容されない。加えて、利用可能な最大変換サイズよりも大きい領域については、1の分割変換フラグ値が暗示される。たとえば、最上位の64x64符号化単位を有する変換ツリーについては、サポートされる最大変換サイズが32x32輝度サンプルであるときは、自動的に4つの32x32領域への細分割が行われる(すなわち、符号化ビットストリーム312においてシグナリングされない)。
右下の16x16領域642は、輝度チャネルに対する変換を有しない変換単位(TU)(10の番号を付されている斜線部分)を含み、それゆえ、0の対応する符号化ブロックフラグ値716を有する。
図6Cおよび図8は、4:2:2色差フォーマット向けに構成されており、輝度チャネルに対する変換ツリー630に対応する色差チャネルに対する変換セットを含み、データ構造800によって表される、色差チャネルに対する、図6Aの例示的な変換ツリーに対応する例示的な変換ツリー630を示す。変換ツリー階層は、図6Aの構造によって輝度チャネルと色差チャネルとの間で共通であるため、分割変換フラグ値はデータ構造700と800との間で共有される。データ構造700とは対照的に、データ構造800は、1の各変換分割フラグ値を有する(すなわち、変換ツリーの非リーフノード上の)符号化ブロックフラグ値を含む。たとえば、1の符号化ブロックフラグ値802は、変換分割フラグ702と関連付けられる。変換ツリーの非リーフノード上の符号化ブロックフラグ値が0である場合、子ノード上の符号化ブロックフラグ値は0と暗示される(そして、符号化ビットストリーム312内に符号化される対応する符号化ブロックフラグはない)。非リーフ領域にある符号化ブロックフラグ値は、子領域のいずれにも有意な残差係数が存在しない場合、たとえ輝度チャネルに有意な残差係数が存在し得るとしても、各色差チャネルに対する変換ツリーのより下位のレベルにおける符号化ブロックフラグの符号化を終了させることを可能にする。これは、一般的なキャプチャされたフレームデータについては、情報の大部分が輝度チャネルに存在するため、一般的な状況である。
ビデオエンコーダ114およびビデオデコーダ134が4:4:4色差フォーマット向けに構成されるとき、所定の変換単位(TU)サイズセットのうちの1つではないサイズの任意の所与の変換単位(TU)の各色差チャネルの色差領域は、所与の変換単位(TU)の輝度領域と同一の寸法を有する(すなわち、暗黙的分割が行われないとき)。 ビデオエンコーダ114およびビデオデコーダ134が4:4:4色差フォーマット向けに構成されるとき、所定の変換単位(TU)サイズセットのうちの1つであるサイズの任意の所与の変換単位(TU)の各色差チャネルの色差領域は、所与の変換単位(TU)の輝度領域よりも小さい寸法を有する(すなわち、暗黙的分割が行われるとき)。
4:2:2色差フォーマットが使用されるとき、この結果として、各色差チャネルに対する色差サンプルの図6Cの16x32領域662を含み、したがって、色差サンプル格子上の16x32領域を占有する符号化単位(CU)602がもたらされる。図6Cは、(図5Bとは対照的に)各色差サンプルが水平方向および垂直方向において等間隔に離間されている、色差サンプルのアレイとして図示されている、色差サンプル格子上の領域を示す。4:2:2色差フォーマットが使用されることに起因して、図6Cの各色差領域は、図6Bの対応する輝度領域と比較して水平方向に圧縮されているように見える。1の分割変換フラグ値702によって、符号化単位(CU)602に対応する16x32領域662が、8x16領域664のような、4つの8x16領域に分割される。8x16領域664は、非正方形形状を有し、また、4x8領域670のような、図6Cに示されている他の非正方形領域よりもサイズが大きい。各8x16領域について、分割変換フラグ値704のような分割変換フラグ値が、輝度サンプルアレイに対する変換ツリー630内に存在する四分木分割と同様に、対応する8x16領域が、4つのより小さい4x8領域にさらに細分割されるべきか否かを示す。右上の8x16領域672は、4つの4x8領域にさらに細分割される。1の符号化ブロックフラグ値804が、4つの4x8領域の各々が有意な残差係数を含み得ることを示す。したがって、対応する領域に変換が存在することを示すために、各4x8領域の符号化ブロックフラグが必要とされる。これら4つの4x8領域のうち左下の4x8領域674(斜線部)は、変換単位(TU)を含むが、変換を含まず、それゆえ、0の符号化ブロックフラグ値814を有する。領域670のような、残りの4x8領域は各々変換を有し、それゆえ、1の対応する符号化ブロックフラグ値を有する。左上の8x16領域は、2つのサイズが等しい8x8領域に細分割される。四分木細分割とは対照的に、符号化ビットストリーム312内に対応する分割変換フラグが存在しない。
符号化ビットストリーム312内にシグナリングが存在しない、変換単位(TU)の、色差チャネルのようなチャネルの領域の、複数の領域(その各々が変換を有し得る)への分割は、「暗黙的分割」と称される。暗黙的分割によって、この事例(8x16)に関する非正方形変換をサポートするハードウェアを導入する必要がなくなる。代わりに、第1の8x8変換666のような変換が使用される。暗黙的分割からもたらされる領域の各々がすべて0の残差情報を含む可能性があるため、暗黙的分割からもたらされる各領域内の変換の存在を指定する必要がある。したがって、暗黙的分割からもたらされる各領域に、別個の符号化ブロックフラグ値が必要とされる。この事例において、符号化ブロックフラグ値806は第1の8x8変換666に対応し、符号化ブロックフラグ値808は、第2の8x8変換668に対応する。暗黙的分割が行われない変換単位(TU)について、各色差チャネルの符号化ブロックフラグ値は、色差チャネルに対する変換単位(TU)によって占有される領域に関する変換の存否を指定する。暗黙的分割が行われるとき、結果もたらされる領域の各々に別個の符号化ブロックフラグ値(図8には示さない)が必要とされるが、実施態様は、変換単位(TU)全体に起因する符号化ブロックフラグ値を保持し得る。別個の符号化ブロックフラグ値はすべての事例において「1」と暗示され得るか、または、別個の符号化ブロックフラグ値は、分割からもたらされる各領域の符号化ブロックフラグ値に論理「OR」演算を実施することによって求められ得る。別個の符号化ブロックフラグ値が、分割からもたらされる各領域の符号化ブロックフラグ値から求められる場合、別個の符号化ブロックフラグ値は、追加の符号化ブロックフラグ(図9には示さない)として、エントロピー符号化器324によって符号化ビットストリーム312内に符号化され、エントロピー復号器420によって符号化ビットストリーム312から復号され得る。そのような事例において、別個の符号化ブロックフラグ値が0である場合、分割からの各領域の符号化ブロックフラグ値は0であると暗示され得、別個の符号化ブロックフラグ値が1である場合、分割からの各領域の符号化ブロックフラグは、エントロピー符号化器324によって符号化ビットストリーム312内に符号化され、エントロピー復号器420によって符号化ビットストリーム312から復号される。
16x32領域662の左下の8x16領域680は暗黙的分割を示し、上側の8x8の暗示された領域682には8x8変換が存在するが、下側の8x8の暗示された領域684内には8x8リ変換は存在しない。右下の8x16アレイ676(斜線部)は変換単位(TU)を含むが、暗黙的分割からもたらされるいずれの正方形8x8領域における変換も含まず、それゆえ、0の符号化ブロックフラグ値810 812を有する。
2つの色差チャネルが存在する結果として、図6Cに示されている構造が重複することになり、別個の符号化ブロックフラグ値が、各色差チャネルに対する変換の存在を指定するために使用される。この実施態様において、サイズ4x8以外の色差の領域サイズについて分割が暗示されており、結果として、4x8変換816(領域670内に含まれる)のような4x8矩形変換が使用され、他の事例における既存の正方形変換(たとえば、8x8、16x16)を再使用することが可能であった。したがって、2つの領域への分割、それゆえ(サイズ8x8および16x16の)2つの変換を使用することができる、所定の領域サイズ(8x16および16x32など)セットが存在すると考えられ得る。暗黙的分割が行われる所定の領域サイズセットの異なる定義も可能であり、既存の正方形変換および矩形変換の異なる組み合わせが使用されることも可能になる。特定の実施態様が常に分割を暗示することも可能であり、その事例において、色差4:2:2色チャネルに対して矩形変換は導入されない。そのような事例において、暗黙的分割が行われる所定の領域サイズセットはすべての可能な色差領域サイズ(たとえば、4:2:2色差フォーマットの4x8、8x16および16x32、または、4:4:4色差フォーマットの4x4、8x8、16x16および32x32)を含む。
図16は、4:2:2色差フォーマットのすべての可能な色差領域サイズ(4x8、8x16、および16x32)に対する「常時(always)」暗黙的分割の一実施態様の「矩形変換なし(no rectangular transform)」の一例を示す概略図である。図16に示すように、暗黙的分割からもたらされる各色差領域に「1」および「2」がラベリングされている。
4:2:0色差フォーマットが使用されているとき、暗黙的分割は変換単位(TU)内のいずれの領域についても行われず、それゆえ、各色差チャネルに対する変換の最大数は常に1である(各色差チャネルに対する符号化ブロックフラグ値が、色差変換が行われるか否かを制御する)。
ビデオエンコーダ114およびビデオデコーダ134について、輝度チャネルと色差チャネルとの間の差とは無関係に説明しているが、色差フォーマットからもたらされるサンプル格子が異なることによって、必然的に、モジュールの差異が必要とされる。実際の実施態様は、輝度チャネルと色差チャネルとに別個の「処理経路」を有し得る。したがって、そのような実施態様は、輝度チャネルと色差サンプルとの処理を分離し得る。符号化ビットストリーム312は輝度チャネルおよび色差チャネルの両方に対する単一のビットストリームであるため、エントロピー符号化器324およびエントロピー復号器420は分離されない。加えて、フレームバッファ332、432のような単一のフレームバッファが、輝度および色差サンプルを保持し、したがって分離されない。しかしながら、モジュール322〜330および334〜340ならびにモジュール422〜430および434は分離されている輝度処理および色差処理を有し得、実施態様が輝度および色差に対して別個の論理を有し、したがって、「輝度処理経路」および「色差処理経路」を作成することを可能にする。
特定の実施態様は、変換単位(TU)の色差チャネルの16x32領域の2つの16x16領域への分割を暗示し得るが、8x16および4x8の事例の分割は暗示しない。そのような実施態様は、32点変換論理を色差処理経路に導入する必要性を回避し、代わりに、当該技術分野において定着している4、8または16点変換論理に依拠することが可能である。
図9Aおよび図9Bは、変換ツリーの階層レベルを符号化または他の様態で表すのに使用することができる構文構造を示す。変換ツリーの非リーフノードにおいて、構文構造900は、変換ツリーに対応する符号化ビットストリーム312の一部分に存在する構文要素を定義するために、データ構造700および800のようなデータ構造に従って再帰的に拡張される。変換ツリーのリーフノード(変換ツリーにおいてこれ以上細分割は行われない)において、構文構造930は符号化ビットストリーム312のその部分に存在する構文要素を定義する。一般的に、輝度について1つのデータ構造が存在し、色差について2つのデータ構造が存在するが、アルファチャネルまたは深度マップを符号化するためのもののような、追加のデータ構造も可能である。代替的に、単一のデータ構造が複数の色差チャネルによって共有され、符号化ブロックフラグ値がそれらの色差チャネルの間で共有されることが可能である事例などにおいて、より少ないデータ構造が利用されてもよい。変換ツリー非リーフノード構文構造902は、変換ツリー630のような、1つの階層レベルの変換ツリーの符号化を定義する。分割変換フラグ910が、分割変換フラグ値702のような、1の分割変換フラグ値を符号化する。この値は、変換ツリー非リーフノード構文構造902が、変換ツリー非リーフノード構文構造902もしくは変換ツリーリーフノード構文構造932のさらなるインスタンスを含むより低い階層レベル、または「子ノード」を含むことを示す。符号化ブロックフラグ912が、「U」色差チャネルに対する1の符号化ブロックフラグ値802を符号化し、符号化ブロックフラグ914が、「V」色差チャネルに対するさらなる符号化ブロックフラグ値を符号化する。変換ツリー非リーフノード構文構造902が変換ツリー階層の最上位を定義している場合、符号化ブロックフラグ912 914が存在する。変換ツリー非リーフノード構文構造902が変換ツリー階層の最上位を定義していない場合、符号化ブロックフラグ912 914は、変換ツリー階層の親レベルにある対応する符号化ブロックフラグが存在し、かつ1の値を有する場合にのみ、存在する。変換ツリー630には(最上位階層レベルに対して)より低い階層レベルが存在するため、四分木細分割が行われる。この細分割の結果として、4つの変換ツリー構文構造916、918、920、922(0〜3の番号を付される変数「blkIdx」(ブロックインデックス)によって識別される)が、変換ツリー非リーフノード構文構造902内に含まれることになる。
構文構造930は、変換ツリーリーフノード932のリーフノード(すなわち、それ以上細分割は行われない)の符号化を定義する。分割変換フラグ940が、分割変換フラグ値704のような、0の分割変換フラグ値を符号化する。
分割変換フラグは、対応する領域が最小サイズよりも大きい場合にのみ符号化される。たとえば、領域636は、4x4輝度サンプル(サポートされる最小輝度変換サイズに対応する)の領域に対する許容可能な最小サイズを有し、そのため、変換分割フラグ値714は0であると暗示され、対応する変換ツリー構文構造に対して分割変換フラグは符号化されない。
領域636について、色差残差サンプルが4x8色差変換を使用して変換され、したがって、暗黙的な変換の分割は存在しない。色差チャネルの各々について変換が存在することをシグナリングするための、符号化ブロックフラグ942および符号化ブロックフラグ946のような符号化ブロックフラグが存在し得る。符号化ブロックフラグ950は、輝度チャネルに対する変換が存在することをシグナリングする。輝度および色差チャネル(存在する場合)の残差係数が、変換単位(TU)構文構造952内に存在する。符号化ブロックフラグ950の値が1である場合、輝度変換の残差係数または変換がスキップされるときの残差サンプルのいずれかを符号化する、輝度変換スキップフラグ964および輝度残差データブロック954が、符号化ビットストリーム312内に存在する。輝度変換スキップフラグ964の値は、ビデオエンコーダ114内の変換モジュール320およびビデオデコーダ134内の逆変換モジュール422が使用される(通常動作)か、またはバイパスされる(変換スキップ動作)を示す。各色差チャネルの符号化ブロックフラグの値が1である場合、対応する色差変換スキップフラグ966および968ならびに色差残差ブロック956および960が符号化ビットストリーム312内に存在する。変換スキップフラグ966は色差残差ブロック956に関する変換スキップモードをシグナリングし、変換スキップフラグ968は色差残差ブロック960に関する変換スキップモードをシグナリングする。暗黙的な変換の分割が行われないとき、符号化ブロックフラグ944および948ならびに色差残差ブロック958および962は符号化ビットストリーム312には存在しない。暗黙的な変換の分割が行われないとき、したがって、各色差チャネルに対する変換スキップフラグは、領域636の全体における対応する色差チャネルの変換スキップモードをシグナリングする。
領域664について、色差残差サンプルが2つの8x8色差変換を使用して変換され、したがって、暗黙的な変換の分割が存在する。存在する場合、符号化ブロックフラグ942および946が、第1の8x8変換666の各色差チャネルに対する8x8変換が存在することをシグナリングする。存在する場合、符号化ブロックフラグ944および符号化ブロックフラグ948が、第2の8x8変換668の各色差チャネルに対する8x8変換が存在することをシグナリングする。符号化ブロックフラグ944の値が1である場合、色差残差ブロック958が符号化ビットストリーム312内に存在する。符号化ブロックフラグ948の値が1である場合、色差残差ブロック962が符号化ビットストリーム312内に存在する。変換スキップフラグ966は色差残差ブロック956および958に関する変換スキップモードをシグナリングし、変換スキップフラグ968は色差残差ブロック960および962に関する変換スキップモードをシグナリングする。暗黙的な変換の分割が存在するとき、したがって、各色差チャネルに対する変換スキップフラグは、暗黙的な変換の分割が存在しないときの挙動に従って、領域664の全体における対応する色差チャネルの変換スキップモードをシグナリングしている。
図9Bに示されているような構文構造930は、暗黙的な変換の分割について隣接して符号化される各色差チャネルの第1の変換および第2の変換を示す。各色差チャネルの構文要素の隣接した符号化、または、他の構文要素が組み入れられている、各色差チャネルの構文要素の符号化のような他の構成が、代替的に使用されてもよい。
図9C、図9Dおよび図9Eは、変換ツリーの階層レベルを符号化または他の様態で表すのに使用することができる代替的な構文構造9100を示す。変換ツリーの非リーフノードにおいて、代替的な構文構造9100は、変換ツリーに対応する符号化ビットストリーム312の一部分に存在する構文要素を定義するために、データ構造700および800のようなデータ構造に従って再帰的に拡張される。各々が変換単位(TU)を含む、リーフノードを含む変換ツリー内の各ノードに対して、代替的な構文構造9100のインスタンスが存在する。各色差チャネルの変換単位(TU)を細分割するために「暗黙的な分割」が行われる場合、構文構造9130が、暗黙的な分割からもたらされる第1の部分領域(たとえば、4:2:2色差フォーマットが使用されているときは色差領域の上半分、または、4:4:4色差フォーマットが使用されているときは色差領域の左上の四半部)のために、符号化ビットストリーム312のその部分に存在する構文要素を定義する。さらに、構文構造9160が、暗黙的な分割からもたらされる後続の部分領域(たとえば、4:2:2色差フォーマットが使用されているときは色差領域の下半分のもう1つの部分領域、または、4:4:4色差フォーマットが使用されているときは色差領域の残りの3つの部分領域)のために、符号化ビットストリーム312のその部分に存在する構文要素を定義する。「第1の」部分領域および「後続の」部分領域(たとえば、第2の部分領域および可能性として、第3の部分領域または第4の部分領域)の概念は、四分木内の領域の部分領域の走査順序において暗示される。走査順序は、部分領域が第1に左から右へトラバースされ、第2に上から下へトラバースされるようなものである。一般的に、輝度について1つのデータ構造が存在し、色差について2つのデータ構造が存在するが、アルファチャネルまたは深度マップを符号化するためのもののような、追加のデータ構造が可能である。代替的に、単一のデータ構造が複数の色差チャネルによって共有され、符号化ブロックフラグ値がそれらの色差チャネルの間で共有されることが可能である事例などにおいて、より少ないデータ構造が利用されてもよい。変換ツリー構文構造9102は、変換ツリー630のような、変換ツリーの1つの階層レベルの符号化を定義する。
変換ツリー630のような、変換ツリーの非リーフノードにある変換ツリー構文構造9102のインスタンスについて、分割変換フラグ9110が、分割変換フラグ値702のような、1の分割変換フラグ値を符号化する。この値は、変換ツリー構文構造9102のインスタンスが、変換ツリー構文構造9102のさらなるインスタンスを含むより低い階層レベル、または「子ノード」を含むことを示す。符号化ブロックフラグ9112が、符号化ブロックフラグ912の記述に従って符号化ブロックフラグ値を符号化する。符号化ブロックフラグ9114が、符号化ブロックフラグ914の記述に従って符号化ブロックフラグ値を符号化する。変換ツリー630には(最上位階層レベルに対して)より低い階層レベルが存在するため、四分木細分割が行われる。この細分割の結果として、4つの変換ツリー構文構造9116、9118、9120、9122(0〜3の番号を付される「blkIdx」変数によって識別される)が、変換ツリーノード構文構造9102内に含まれることになる。変換ツリー構文構造9116、9118、9120、9122の各々は、変換ツリー構文構造9102の別のインスタンスである。変換がスキップされるとき、輝度変換の残差係数または残差サンプルのいずれかを符号化する符号化ブロックフラグ9124および輝度変換単位部分9126は、変換ツリー構文構造9102からなくなる。
実施態様はまた、符号化ブロックフラグ9124および輝度変換単位部分9126(存在する場合)が、符号化ブロックフラグ9114と変換ツリー構文構造9116との間のような、変換ツリー構文構造9102内のより前方に置かれるようにも、変換ツリー構文構造9102を配列し得る。
変換ツリー630のような、変換ツリーのリーフノードにある変換ツリー構文構造9102のインスタンスについて、分割変換フラグ9110が、分割変換フラグ値704のような、0の分割変換フラグ値を符号化する。したがって、変換ツリー構文構造9102のこのインスタンスは、変換ツリー930内の変換単位(TU)に対応する。変換単位(TU)は、符号化単位(CU)602のような、変換単位(TU)を含む符号化単位(CU)、および、変換深度に従って決定されるサイズを有する。符号化ブロックフラグ9112は、「U」色差チャネルに対する暗黙的な分割からもたらされる色差領域のいずれかが1の符号化ブロックフラグ値を有し得ることを示す1の符号化ブロックフラグ値を符号化する。符号化ブロックフラグ9112が0の値を符号化する場合、「U」色差チャネルに対する暗黙的な分割からもたらされる各色差領域の符号化ブロックフラグ値は、0と暗示される符号化ブロックフラグ値を有する。たとえコードブロックフラグ9112が1の値を符号化する場合であっても、実施態様は依然として、暗黙的な分割からもたらされる各色差領域に対して0の値を有する符号化ブロックフラグを符号化し得る。それゆえ、実施態様は、符号化ビットストリーム312から符号化ブロックフラグ9112を省くことができ、代わりに、省かれる符号化ブロックフラグ9112に対しては常に1の符号化ブロックフラグ値を暗示する。符号化ブロックフラグ9114は、符号化ブロックフラグ9112と同様に、「V」色差チャネルに対するさらなる符号化ブロックフラグ値を符号化する。4つの色差領域にする暗黙的な分割が行われる(色差残差係数アレイの最大数が4である)ものに一致する変換単位(TU)サイズについて、4つの変換ツリー構文構造9116 9118 9120 9122(「blkIdx」0〜3によって識別される)が、変換ツリーノード構文構造9102内に含まれる。2つの色差領域にする暗黙的な分割が行われる(色差残差係数アレイの最大数が2である)ものに一致する変換単位(TU)サイズについて、変換ツリー構文構造9116 9118(「blkIdx」0および1によって識別される)のような2つの変換ツリー構文構造が、変換ツリーノード構文構造9102内に含まれる。変換ツリー構文構造9116 9118 9120 9122の各々は、色差構文構造9132の変換ツリーのインスタンスである。符号化ブロックフラグ9124は、変換単位(TU)の輝度チャネルに対する変換の存否を指定する、符号化ブロックフラグ値708のような符号化ブロックフラグ値を符号化する。変換単位の輝度部分9126は、輝度変換スキップフラグを変換スキップフラグ9127として符号化し、輝度残差係数アレイを輝度残差構文要素9128として符号化する。
暗黙的な分割が行われるときに第1の色差領域(または「部分領域」)に対してのみ存在する、色差構文構造9132の変換ツリーは、変換ツリー構文構造930の低減された構文セットを含む。符号化ブロックフラグ9142は、色差領域の「U」色差チャネルに対する符号化ブロックフラグ値を符号化する。符号化ブロックフラグ9144は、色差領域の「V」色差チャネルに対する符号化ブロックフラグ値を符号化する。変換単位(TU)の色差部分9146は、変換単位(TU)構文構造952のサブセットを符号化する。変換単位(TU)の色差部分9146は、単一の色チャネルの色差データを含む色差変換を符号化する。色差変換は、符号化ブロックフラグ9142の値が1である場合は「U」色差チャネルの色差残差構文要素9150としての色差残差係数アレイ、および、符号化ブロックフラグ9144の値が1である場合は「V」色差チャネルの色差残差構文要素9152としての色差残差係数アレイ(まとめて、「色差変換」のための残差係数アレイ)の形態で符号化される。変換スキップフラグ9148は、色差残差構文要素9150と関連付けられ、暗黙的な分割からもたらされる各色差領域について、「U」色差チャネルに対する変換スキップフラグ値を符号化する。変換スキップフラグ9151は、色差残差構文要素9152と関連付けられ、暗黙的な分割からもたらされる各色差領域について、「V」色差チャネルに対する変換スキップフラグ値を符号化する。この関連付けは、変換スキップフラグが、対応する残差構文要素を含む「残差符号化」構文構造内で符号化されることによる。
暗黙的な分割が行われるときに第1の色差領域(または「部分領域」)以外の色差領域に対してのみ存在する、色差構文構造9162の変換ツリーは、変換ツリー構文構造930の低減された構文セットを含む。符号化ブロックフラグ9172は、色差領域の「U」色差チャネルに対する符号化ブロックフラグ値を符号化する。符号化ブロックフラグ9174は、色差領域の「V」色差チャネルに対する符号化ブロックフラグ値を符号化する。変換単位(TU)の色差部分9176は、変換単位(TU)構文構造952のサブセットを符号化する。変換単位(TU)の色差部分9176は、符号化ブロックフラグ9172の値が1である場合は「U」色差チャネルに関する色差残差構文要素9180として色差残差係数アレイを符号化する。変換単位(TU)の色差部分9176は、符号化ブロックフラグ9174の値が1である場合は「V」色差チャネルに関する色差残差構文要素9182として色差残差係数アレイを符号化する。各色差残差構文要素9180に対応する領域の変換スキップモードは、変換スキップフラグ9148から決定される。各色差残差構文要素9182に対応する領域に対応する領域の変換スキップモードは、変換スキップフラグ9151から決定される。実施態様は、第1の色差領域からの変換スキップフラグを、後続の部分領域(複数の場合もあり)に使用するために記憶するために、レジスタ246のようなハードウェアレジスタ、またはメモリ206を利用することができる。
図9Dおよび図9Eに示されているような構文構造9130および9160は、暗黙的な変換の分割ために、各色差チャネルの第1の色差残差係数アレイおよび第2の色差残差係数アレイがその後に続く、隣接して符号化されている第1の符号化ブロックフラグおよび第2の符号化ブロックフラグを示す。各色差チャネルについての符号化ブロックフラグおよび色差残差係数アレイの隣接した符号化のような他の構成が、代替的に使用されてもよい。
暗黙的な変換の分割は、8x16領域664が2つの8x8領域に分割されることによって示されているが、代替的な実施態様は、他の領域の分割を実施してもよい。たとえば、いくつかの実施態様は、16x32領域の2つの16x16領域への分割を暗示してもよい。そのような実施態様は、色差処理経路における32点1D変換の必要性を回避する点で好都合である。4:2:0色差フォーマットが適用されるときは32点1D変換は色差処理経路に必要とされないため、32点1D変換の必要性は、色差処理経路からまったくなくなる。したがって、輝度チャネルと色差チャネルとを分離するのに別個の処理回路を使用する実施態様は、色差処理回路においてより低い実装コストを達成することができる。
各輝度サンプル位置に1つの色差サンプル位置がある4:4:4色差フォーマットが存在する。したがって、このフォーマットでは、色差チャネルおよび輝度チャネルに対する変換は同じサイズを有し得る。輝度処理経路における32x32の最大変換サイズでは、これは、分離実施態様については32x32変換を色差処理経路に導入することを必要とする。特定の実施態様は、色差処理経路において既存の16x16変換を再使用することを可能にする、32x32領域を4つの16x16領域へ分割するための各色差チャネルに対する分割を暗示し得る。32x32変換は、4:4:4色差フォーマットのための色差処理経路においてのみ使用されるため、32x32領域を4つの16x16領域へ分割するための各色差チャネルに対する分割を暗示することによって、32x32変換が色差処理経路からなくなることが可能になり、必要とされる処理回路が低減する。そのような実施態様は、各色差チャネルに対する4つの符号化ブロックフラグ値を必要として、したがって、符号化ビットストリーム312内の各色差チャネルの構文構造930内で符号化されている最大4つの符号化ブロックフラグを必要とする。
4:2:2色差フォーマットをサポートする実施態様はまた、32x16領域を4つの8x16領域へ分割するための各色差チャネルに対する分割をも暗示し得る。そのような実施態様は、各色差チャネルに対する4つの符号化ブロックフラグ値を必要として、したがって、符号化ビットストリーム312内の各色差チャネルの構文構造930内で符号化されている4つの符号化ブロックフラグを必要とし、したがって、「CU3」、「CU4」、「CV3」および「CV4」符号化ブロックフラグ(図9Bには示されていない)が、変換単位(TU)構文構造952に導入され得る。そのような実施態様は、32点変換論理が色差処理経路に導入されることを回避し、8x16領域が細分割されない場合、色差チャネルについてサイズ8x16の変換を変換することを必要とする(輝度チャネルにおける)サイズ16x16の変換単位(TU)に必要とされる8x16変換論理を再使用することができる。
図10は、変換ツリー非リーフノード構文構造902および変換ツリーリーフノード構文構造932を符号化することによって変換単位(TU)を符号化するための方法1000を示す概略流れ図である。方法1000は、変換単位(TU)の或る色差チャネルを参照して説明されるが、方法1000は、変換単位(TU)の任意の色差チャネルに適用されてもよい。変換ツリー非リーフノード構文構造902および変換ツリーリーフノード構文構造932は変換ツリー内の1つのノードを記述しているため、方法1000は、変換ツリーの1つのノードを符号化ビットストリーム312内に符号化する。方法1000は、ハードウェア内に、または、たとえば、プロセッサ205上で実行可能なソフトウェアによって実装されてもよい。方法1000は、最初は変換ツリーの最上位に対して呼び出され、変換ツリーの子ノードを符号化するためにそれ自体を(再帰的に)呼び出すことが可能である。変換単位サイズを求めるステップ1002が、変換ツリーを含む符号化単位(CU)のサイズおよび変換単位(TU)の変換深度値に従って、変換ツリー内の変換単位(TU)のサイズを求める。方法1000が変換ツリーの最上位において呼び出されるとき、変換深度値は0に設定され、それ以外の場合、変換深度値は方法1000の親インスタンスによって提供される。変換深度値が最大許容変換深度未満である場合、分割変換フラグ値702のような分割変換フラグ値が、分割変換フラグ910として符号化ビットストリーム312内に符号化される。
分割変換フラグ値が1であるとき、変換ツリー階層の親ノードが1の対応する符号化ブロックフラグ値を有する場合にのみ、色差符号化ブロックフラグ912および914が各色差チャネルについて符号化される。その後、方法1000は変換ツリーの各子ノード(符号化ビットストリーム312の部分において変換ツリー構文構造916、918、920および922によって表される)に対して、方法1000の新たなインスタンスを呼び出す。子ノードに対して呼び出される方法1000の各インスタンスには、現在の方法1000のインスタンスの変換深度値に1を増分した値に等しい変換深度値が与えられる。
分割変換フラグ値が0であるとき、順変換の最大数を識別するステップ1004が、符号化されている領域の各色差チャネルに対する変換の最大数(n)を求める。暗黙的分割が行われないとき、この数nは1になる。4:2:2色差フォーマットが使用されており、8x16領域664のような色差チャネルの矩形領域に対処することになり、その領域サイズが所定の領域サイズセット(16x32および8x16など)のうちの1つであるとき、暗黙的分割が行われ、変換の最大数は2になる(それ以外の場合、変換の数は1になる)。そうでない(領域サイズが所定の領域サイズセットのうちの1つでない)場合、変換の最大数は1になる。たとえば、4x8が所定の領域サイズセットのうちの1つでない場合、変換の最大数は1になる。4:4:4色差フォーマットが使用されており、対処することになる領域サイズが所定の領域サイズセット(32x32領域など)のうちの1つであるとき、暗黙的分割が行われ、変換の最大数は4になる。そうでない(領域サイズが所定の領域サイズセットのうちの1つでない)場合、最大数は1になる。たとえば、8x8が所定の領域サイズセットのうちの1つでない場合、変換の最大数は1になる。所定の領域サイズセットは8x16を含むが、4:2:2色差フォーマットが使用されているときは16x32のみ、または4:4:4色差フォーマットが使用されているときは32x32のような、他の所定の領域サイズセットが可能である。
各色差チャネルについて、親ノードが1の符号化ブロックフラグ値を有していた場合、nの各々について、符号化ブロックフラグが符号化ビットストリーム312内に符号化される。たとえば、変換の数が2に等しいとき、符号化ブロックフラグ942および944は、分割によって暗示される2つの領域の各々に変換が存在することを示す。順変換を選択するステップ1006は、変換深度に応じて決まり、したがって最大符号化単位内の変換単位の階層レベルに関係する変換単位(TU)サイズに基づいて、最大数の変換の各々について、所定の順変換セットから順変換を選択する。変換深度が0に等しいとき、変換単位(TU)サイズは符号化単位(CU)サイズに等しい。変換深度が増分する度ごとに、変換単位(TU)サイズは半分になる。したがって、32x32の符号化単位(CU)サイズ、0の変換深度および4:2:2色差フォーマットの使用について、変換単位(TU)サイズは32x32になり、したがって、色差に関する変換サイズは16x32になる。たとえば、変換の最大数が2であり、色差の領域サイズ16x32であるとき、16x16順変換が、暗黙的分割からもたらされる色差の16x16領域の各々に対して選択される。
順変換を適用するステップ1008が、1の符号化ブロックフラグ値を有する対応する領域上で最大数の変換の各々について順変換を実施する。色差残差サンプルアレイを符号化するステップ1008が、一般的に変換モジュール320によって実施される。この結果として、各色差残差サンプルアレイ(空間領域表現)が色差残差係数アレイ(周波数領域表現)に変換される。
色差残差係数アレイを符号化するステップ1010が、1の符号化ブロックフラグ値を有する各色差チャネルの最大数の変換領域の各々の色差残差係数アレイを符号化ビットストリーム312内に符号化する。所与の色差チャネルの所与の変換単位の符号化される色差残差係数アレイの数は、各変換の符号化ブロックフラグ値に応じて決まり、したがって0から(最大で)変換の最大数まで変動する。たとえば、変換の数が2であり、このカウント値の各々について両方の色差チャネルが1の符号化ブロックフラグ値を有するとき、色差残差ブロック956、958、960および962が符号化ビットストリーム312内に符号化される。所与の色差チャネルに対する各変換の符号化ブロックフラグ値が0である場合、その色差チャネルについては、色差残差ブロックは符号化ビットストリーム312内に符号化されない。色差残差係数アレイを符号化するステップ1010が、一般的にエントロピー符号化器324によって実施される。
図11は、変換ツリー非リーフノード構文構造902および変換ツリーリーフノード構文構造932を復号することによって変換単位(TU)を復号するための方法1100を示す概略流れ図である。方法1100は、変換単位(TU)の或る色差チャネルを参照して説明されるが、方法1100は、変換単位(TU)の任意の色差チャネルに適用されてもよい。変換ツリー非リーフノード構文構造902および変換ツリーリーフノード構文構造932は変換ツリー内の1つのノードを記述しているため、方法1100は、変換ツリーの1つのノードを符号化ビットストリーム312から復号する。方法1100は、適切なハードウェア内で、または、代替的に、たとえば、プロセッサ205によって実行可能なソフトウェア内で実施されてもよい。方法1100は、最初は変換ツリーの最上位に対して呼び出され、変換ツリーの子ノードを復号するためにそれ自体を(再帰的に)呼び出すことが可能である。変換単位(TU)サイズを求めるステップ1102が、変換単位サイズを求めるステップ1002と同様に変換単位(TU)サイズを求める。変換単位サイズを求めるステップ1102は、変換ツリーを含む符号化単位(CU)のサイズおよび変換単位(TU)の変換深度値に従って、変換ツリー内の変換単位(TU)のサイズを求める。方法1100が変換ツリーの最上位において呼び出されるとき、変換深度値は0に設定され、それ以外の場合、変換深度値は方法1100の親インスタンスによって提供される。変換深度値が最大許容変換深度未満である場合、分割変換フラグ値702のような分割変換フラグ値が、分割変換フラグ910として符号化ビットストリーム312から復号される。
分割変換フラグ値が1であるとき、変換ツリー階層の親ノードが1の対応する符号化ブロックフラグ値を有する場合にのみ、色差符号化ブロックフラグ912および914が各色差チャネルについて復号される。その後、方法1100は変換ツリーの各子ノード(符号化ビットストリーム312の部分において変換ツリー構文構造916、918、920および922によって表される)に対して、方法1100の新たなインスタンスを呼び出す。子ノードに対して呼び出される方法1100の各インスタンスには、現在の方法1100のインスタンスの変換深度値に1を増分した値に等しい変換深度値が与えられる。
分割変換フラグ値が0であるとき、逆変換の最大数を識別するステップ1104が、順変換の最大数(n)を識別するステップ1004と同様に、復号されている領域の各色差チャネル内に存在する少なくとも1つの色差残差係数アレイの各々に対する変換の(最大)数(n)を求める。暗黙的分割が行われないとき、この数nは1になる。4:2:2色差フォーマットが使用されており、8x16領域664のような色差チャネルの矩形領域に対処することになり、その領域サイズが所定の領域サイズセット(16x32および8x16など)のうちの1つであるとき、暗黙的分割が行われ、変換の最大数は2になる(それ以外の場合、変換の数は1になる)。そうでない(領域サイズが所定の領域サイズセットのうちの1つでない)場合、変換の最大数は1になる。たとえば、4x8が所定の領域サイズセットのうちの1つでない場合、変換の最大数は1になる。4:4:4色差フォーマットが使用されており、対処することになる領域サイズが所定の領域サイズセット(32x32領域など)のうちの1つであるとき、暗黙駅分割が行われ、変換の最大数は4になる。そうでない(領域サイズが所定の領域サイズセットのうちの1つでない)場合、最大数は1になる。たとえば、8x8が所定の領域サイズセットのうちの1つでない場合、変換の最大数は1になる。所定の領域サイズセットは8x16を含むが、4:2:2色差フォーマットが使用されているときは16x32のみ、または4:4:4色差フォーマットが使用されているときは32x32のような、他の所定の領域サイズセットが可能である。各色差チャネルについて、親ノードが1の符号化ブロックフラグ値を有していた場合、n個の変換の各々について、符号化ブロックフラグが符号化ビットストリーム312内で復号される。たとえば、変換の最大数が2に等しいとき、符号化ブロックフラグ942および944は、分割によって暗黙的される2つの領域の各々に変換が存在することを示す。
その後、色差残差係数アレイを復号するステップ1106が、符号化ビットストリーム312から1の符号化ブロックフラグ値を有する各色差チャネルの最大数の変換領域の各々の残差係数アレイを復号する。所与の色差チャネルの所与の変換単位の復号される残差係数アレイの数は、各変換の符号化ブロックフラグ値に応じて決まり、したがって0から(最大で)「変換の数(n)」まで変動する。たとえば、変換の数が2であり、このカウント値の各々について両方の色差チャネルが1の符号化ブロックフラグを有するとき、色差残差ブロック956、958、960および962が符号化ビットストリーム312から復号される。色差残差係数アレイを復号するステップ1106は、一般的に、エントロピー復号器420によって、1の符号化ブロックフラグ値を有する各色差残差係数アレイに対して実施される。
その後、逆変換を選択するステップ1108が、各色チャネルの1の符号化ブロックフラグ値を有する最大数の変換の各々について、所定の逆変換セットから逆変換を選択する。たとえば、変換の最大数が2であり、領域サイズが16x32であり、2つの変換の各々の符号化ブロックフラグ値が1であるとき、16x16逆変換が、暗黙的分割からもたらされる16x16領域の各々に対して選択される。
その後、逆変換を適用するステップ1110が、1の符号化ブロックフラグ値を有する対応する領域上で最大数の変換領域の各々について逆変換を実施する。この結果として、各色差残差係数アレイ(周波数領域表現)が、復号ビデオフレームを表す色差残差サンプルアレイ(空間領域表現)に変換される。逆変換を適用するステップ1110は、一般的に、逆スケーリングおよび変換モジュール422によって実施される。
図12Aは対角走査パターン1201を示し、図12Bは水平走査パターン1202を示し、図12Cは垂直走査パターン1203を示し、これらは各々4x8変換単位1200に対するものである。図示されている走査パターンを使用して4x8変換単位1200を走査するこれらの実施態様は、残差係数が、「サブブロック」として知られている4x4ブロックにグループ化されるという特性を有する。それゆえ、符号化ビットストリーム312内に存在する「係数グループ」フラグが、各サブブロックについて、少なくとも1つの有意な(非ゼロ)残差係数が存在することを示すのに使用され得る。4x8変換に4x4サブブロックサイズを適用することによって、係数が常にサブブロックにグループ化される他の変換サイズに存在する走査パターンとの一貫性が達成される。
特定の実施態様は、各サブブロック内に少なくとも1つの非ゼロ残差係数が存在することをシグナリングするために係数グループフラグを適用し得る。これらの走査パターンが、すべての変換サイズについてサブブロック処理を再使用することによって、残差係数を処理する制御ソフトウェアまたはデジタル回路を再使用することを可能にする点が有利である。使用される特定の走査パターンは、結びつけられている予測単位(PU)のイントラ予測方向のような基準に従って選択されてもよい。変換が4:2:2色差フォーマットサンプル格子上で色差サンプルを符号化する場合、各色差サンプルは輝度サンプルの非正方形(2x1)アレイにマッピングし、イントラ予測モードの「方向」または角度に影響を与えるため、イントラ予測方向と走査パターンとの間の関係は変更される。走査は、図12A〜図12Cにおいて、変換単位(TU)の左上隅に位置するDC係数において終端する「後ろ向き」方向において示されている。さらに、走査は、変換単位(TU)の右下隅において開始する必要はない。変換単位(TU)の左上領域において非ゼロ残差係数が優勢であることに起因して、走査は、「最も有意でない係数位置」から開始し、左上の係数に達するまで後ろ向き方向に進行し得る。
他の実施態様は、所与の領域に単一の走査を適用して残差係数を符号化し、その後、これらの残差係数に2回以上変換を適用してもよい。この事例において、その領域に、それゆえ、その走査パターンによってカバーされるすべての変換に、1つのみの符号化ブロックフラグが使用される。走査のいずれかに少なくとも1つの有意な残差係数が存在する場合、符号化ブロックフラグは1に設定される。たとえば、図12A〜図12Cの4x8走査パターンは、2つの4x4変換の残差係数を復号するのに適用され得る。残差係数の2つの4x4アレイは連結されて、その走査パターンに適した4x8アレイを形成し得る。アレイにわたって単一の走査が実施されるために、その走査パターンについて単一の「最も有意でない係数」位置がビットストリーム内に符号化され、そのアレイには単一の符号化ブロックフラグ値で十分である。修正離散コサイン変換(DCT)のエネルギー圧縮特性が、走査パターンの経路に沿った各正方形変換の係数をインターリーブして矩形係数アレイにすることのような、他の方式に利点を与える。これによって、各4x4残差係数アレイ内の残差係数値の密度が、結合4x8アレイ内で均等化され、エントロピー復号器420によって後に復号するために、エントロピー符号化器324によってより高い圧縮効率がもたらされることが可能になるという利点が与えられる。
色差色チャネルを符号化する特定の実施態様は、4:2:0色差サンプル格子に対応する色差サンプル位置にある残差サンプルを符号化するために第1の変換を使用し、4:2:0色差サンプル格子に対して4:2:2色差サンプル格子において導入されるさらなる色差サンプル位置にある残差サンプルを符号化するために第2の変換を使用してもよい。そのような実施態様は、有利な様に、第2の変換の出力が第1の変換の残差サンプルに付加されて(または他の様態で組み合わされて)第2の変換の残差サンプルが生成される、アダマール変換のような、単純な変換を第2の変換に使用してもよい。有利な様に、ハール変換のような変換を実施する前処理段階が、4:2:2色差フォーマットの色差サンプル格子を、4:2:0色差フォーマットの色差サンプル格子にサンプリングするのに使用されてもよい。そのような構成は、前処理段階からの追加の残差係数を副次的情報として送信しなければならず、そのような残差は、前処理変換が最大符号化単位(LCU)レベルにおいて適用される事例において、各最大符号化単位(LCU)に適用される。
所与の領域に対して複数の変換を有する実施態様は、領域全体をカバーする単一の組み合わせ走査、または、各変換の別個の走査のいずれかを使用してもよい。複数の変換のための走査が単一の走査に組み合わされる場合、走査されている各領域には1つの符号化ブロックフラグしか必要とされない。単一の組み合わせ走査を使用するそれらの実施態様は、同様のスペクトル特性を有する各変換からの残差係数を結びつけるために、係数ごとのインターリーブのように、各変換の残差係数をインターリーブすることによって、残差係数のより高い圧縮を達成することができる。
図13は、変換単位を符号化する方法1300を示す概略ブロック図である。ビデオエンコーダ114によって実施される方法1300は、変換単位の輝度チャネルおよび色差チャネルを符号化する。輝度変換スキップフラグ値を求めるステップ1302において、変換スキップ制御モジュール346が、一般的に、空間領域(変換スキップが実施される)および周波数領域(変換スキップが実施されない)の両方において残差サンプルアレイ360を符号化するコストを分析することによって、変換スキップフラグ964または9127のような、輝度チャネルに対する変換スキップフラグの値を求める。色差変換スキップフラグ値を求めるステップ1304において、変換スキップ制御モジュール346は、暗黙的分割からもたらされ、同じ色差チャネルに属するすべての部分領域に適用されるべき、変換スキップフラグ966または9148のような、色差チャネルのうちの1つに対する変換スキップフラグの値を求めるか、または他の様態で設定する。変換スキップ制御モジュール346は、輝度チャネルと同様の論理を適用してもよいが、ビットレートコスト判定は、色差チャネル(または「色チャネル」)内のすべての色差残差サンプルアレイに対して変換スキップを実施すること、または、色差チャネル内のいずれの色差残差サンプルアレイにも変換スキップを実施しないことのいずれかのコストを判定するときに、暗黙的分割からもたらされる色差残差サンプルアレイの各々を計上しなければならない。色差変換スキップフラグ値を求めるステップ1304は各色差チャネルについて反復され、変換スキップフラグ968または9151のような、他の色差チャネルに対する変換スキップフラグ値が求められる。輝度変換および色差変換を符号化するステップ1306が、エントロピー符号化器324を使用して輝度残差サンプルアレイを符号化ビットストリーム312内に符号化して、エントロピー符号化器324を使用して色差チャネルの色差残差サンプルアレイを符号化ビットストリーム312内に符号化する。輝度残差サンプルアレイは、輝度変換スキップフラグに従って、変換モジュール320において残差サンプルアレイを残差係数アレイに変換すること、または、ビデオエンコーダ114によって変換スキップが実施されるときは変換モジュール320をバイパスすることによって求められる。その後、残差アレイ363がスケーリングおよび量子化モジュール322に通されて、残差データアレイ364が生成される。残差データアレイ364内の値のうちの少なくとも1つが非ゼロであるとき、残差データアレイ364の値がエントロピー符号化器324によって符号化ビットストリーム312内に(残差データブロック954、956、958、960または962のような残差データのブロック内に)符号化され、対応する符号化ブロックフラグが1に設定される。色差残差サンプルアレイは輝度残差サンプルアレイと同様に求められるが、第1の色差残差サンプルアレイ以外の色差残差サンプルアレイが、第1の色差残差サンプルアレイと変換スキップフラグを共有する点が異なっている。ステップ1306における色差残差サンプルアレイの符号化は各色差チャネルについて反復される。
図14は、変換単位を復号する方法1400を示す概略流れ図である。ビデオデコーダ134によって実施される方法1400は、変換単位の輝度チャネルおよび色差チャネルを復号する。輝度変換スキップフラグ値を求めるステップ1402が、エントロピー復号器420を使用して、符号化ビットストリーム312から変換スキップフラグ964または9127のような変換スキップフラグを復号することによって、輝度チャネルの変換スキップフラグの値を求める。色差変換スキップフラグ値を求めるステップ1404が、色差チャネル内および同じ変換単位(TU)内のすべての色差残差サンプルアレイに適用されるべき、色差チャネル内の色差残差サンプルアレイの1つの変換スキップフラグの値を求める。ステップ1404は、エントロピー復号器420を使用して、符号化ビットストリーム312から変換スキップフラグ966または9148のような変換スキップフラグを復号する。変換スキップフラグを第1の色差残差サンプルアレイと関連付ける実施態様は、後の残差係数アレイから変換スキップフラグ(その後、先行する残差サンプルアレイの処理を継続するのに使用されるため、さらなる内部バッファリングがもたらされる)を求める前に、先行する残差サンプルアレイをバッファリングする必要性を回避する。ステップ1404はまた、エントロピー復号器420を使用して、符号化ビットストリーム312から変換スキップフラグ968または9151を復号することなどによって、さらなる色差チャネルの変換スキップフラグをも求めてもよい。輝度変換および色差変換を復号するステップ1406が、エントロピー復号器420に、符号化ブロックフラグ950のような対応する符号化ブロックフラグが1であるときに輝度残差データブロック954のような輝度残差係数アレイを復号させ、符号化ブロックフラグ942および944のような各対応する符号化ブロックフラグが1であるときに色差残差係数アレイ956および958のような、特定の色差チャネルと関連付けられる色差残差係数アレイを復号させる。輝度変換を復号するとき、輝度残差係数アレイは、変換スキップが実施されない場合にのみ逆変換モジュール422に通され、そうでない場合、輝度残差係数アレイは逆変換モジュール422をバイパスする。色差変換を復号するとき、変換単位内の各色差残差サンプルアレイについて、符号化ビットストリーム312内に存在し、第1の色差残差サンプルアレイと関連付けられる変換スキップフラグが適用される。
方法1300および1400の説明は、暗黙的分割が行われるとき、所与の色差チャネルに複数の色差残差サンプルアレイを含み得る「変換単位」を参照する。これは、構文構造930と一致する。図9C、図9Dおよび図9Eにおいて、構文構造9100、9130および9160が使用されているとき、暗黙的分割からもたらされる各色差領域は、色差変換単位(CTU)としてマーキングされている、別個の変換単位(TU)として示されている。方法1300および1400の目的のためには、色差変換単位(CTU)は、変換ツリー構文構造9100を使用して色差領域を分割する上ではアーティファクトに過ぎない。図9Cにおいて、輝度変換単位(LTU)9126によって占有される空間領域は、変換単位952と同じ空間領域を占有するため、「変換単位」と考えられ得る。色差変換単位(CTU)9116 9118および9120〜9122(存在する場合)は、暗黙的分割からもたらされる色差部分領域として考えられ得る。
方法1300および1400の両方の結果として、(4:2:2および4:4:4色差フォーマットが使用されているときに適用され得る)暗黙的分割動作の存否にかかわらず、各色チャネルについて1つの変換スキップフラグが符号化されることが有利である。この特性の結果として、4:2:0色差フォーマットによる挙動が一貫し、ここで、各残差係数アレイについて1つの変換スキップフラグが存在し、1つのみの残差係数アレイが、所与の変換単位の各色チャネルについて存在する。たとえば、4:2:0における8x8変換単位は、輝度チャネルに対しては8x8変換を有し、各色差チャネルに対しては4x4色差変換を有することになる。この事例において、各色差チャネルについて1つの変換スキップフラグが存在することになる。4:2:2の事例においては、暗黙的分割によって、各色差チャネルについて2つの4x4色差変換が存在することになる。第1の4x4色差変換によって符号化されるが両方の4x4色差変換に適用される変換スキップフラグが、4:2:0の事例と同じ空間領域の変換スキップステータスを制御することになる。この一貫した挙動の結果として、4:2:0の事例と下位互換性のある4:2:2の変換スキップの取り扱いがもたらされる(すなわち、4:2:2における変換スキップのサポートに起因して、4:2:0において構文要素の再構成は行われない)。すべての色差に共通の変換スキップを有する結果として、変換スキップを指定する目的で変換単位を上半分と下半分とに人為的に分割することを回避する暗黙的分割がもたらされる。
図15は、ビデオエンコーダ114およびビデオデコーダ134のための、4x4および8x8変換単位における4x4変換の可能な構成を示す概略図である。図15において色チャネルY、UおよびVが縦列に示されており、3つの事例が横行に沿って示されている。すべての示されている事例において、ビデオエンコーダ114およびビデオデコーダ134は、4:2:2色差フォーマットを使用するように構成されている。また、すべての事例において、ビデオエンコーダ114およびビデオデコーダ134は、4x8色差領域の2つの4x4色差領域への暗黙的分割をサポートしており、したがって、2つの4x4色差変換が各色チャネルについて示されている。示されている3つの事例は、事例1:8x8変換単位(TU)(上行)、事例2:第1の変換順序(順序1)による4つの4x4変換単位(TU)(中行)、および事例3:第2の変換順序(順序2)による4つの4x4変換単位(TU)(下行)である。
各事例について、変換単位は、それらが符号化ビットストリーム312に現れる順序において番号を付されている。事例1は、8x8輝度変換と、各色差チャネルに対する2つの4x4変換とを有する変換単位(TU)を示す。輝度変換は8x8であるため、輝度変換は変換スキップフラグを有しない。事例2および3は、4つの4x4変換単位が、結果として複数の変換単位(TU)にわたる各色差変換の色差領域をもたらしている事例をさらに示す。事例2および3において、4つの変換単位(TU)は、0〜3の番号を付されて、開発中の高効率ビデオ符号化(HEVC)規格に使用されているような「blkIdx」変数を用いてインデックス付けされている。図15に示されている各変換について、変換スキップがサポートされる場合、変換の左上隅にボックスが含まれる。変換スキップフラグが常に明示的に符号化されている変換について、ボックスは網掛けされている(網掛けボックス1502など)。網掛けされていないボックス(網掛けなしボックス1504など)は、現在の変換の変換スキップフラグが先行する変換(上の変換など)から導出される事例を示す。この導出をサポートしない実施態様は、網掛けなしボックスによる変換のために、変換スキップフラグを符号化ビットストリーム312内に明示的に符号化することになる。事例2および事例3において、各4x4変換単位に対して1回で、変換単位構文構造952のような変換単位構文構造が4回(0から3へと増分する「blkIdx」の値を有する)呼び出される。したがって、変換単位構文構造の4つのインスタンスが符号化ビットストリーム312内に存在する。各呼び出しに対して、符号化ブロックフラグ950のような、対応する符号化ブロックフラグが1の値を有する場合、輝度残差データブロック954のような輝度残差ブロックが符号化ビットストリーム312内に存在する。事例2において、4回目の呼び出しに対して(「blkIdx」が3に等しい)、色差残差ブロック956、958、960、962のような、色差チャネルの色差残差ブロックが符号化ビットストリーム312内に符号化されている(符号化ブロックフラグ942、944、946、948のような対応する符号化ブロックフラグが1の値を有する)。図9Bからの輝度および色差残差ブロックの順序付けは、事例2において提示されている変換の順序付けに対応する。事例3において、順序付けは以下に起因して変化する、すなわち、上半分の色差残差ブロック(色差残差ブロック956、960など)が変換単位構文構造の2回目の呼び出し(すなわち、「blkIdx」が1に等しいとき)に対して処理され、下半分の色差残差ブロック(色差残差ブロック958、962など)が変換単位構文構造の4回目の呼び出し(すなわち、「blkIdx」が3に等しいとき)に対して処理される。
図15に示されていないもう1つの事例は、4:2:0色差フォーマットが使用されているときの4x4変換単位の事例であり、ここで、色差に対する1つの4x4変換が、同じ四分木階層レベルにある輝度に対する4つの4x4変換単位(まとめて輝度サンプル格子上の8x8領域を占有する)に対応する色差サンプル格子上の領域に適用される。色差において4x8変換が利用可能であるとき、図18を参照して下記に説明されるように、4:2:2事例の変換スキップが(4x4変換に加えて)4x8変換に適用される。色差において4x8変換が利用可能でなく、4:2:2色差フォーマットが使用されているとき、実施態様は各色差チャネルに対して2つの4x4変換を使用しなければならず、上側の4x4変換のような一方の4x4変換について変換スキップフラグを符号化し得るが、所与の色差チャネルの両方の4x4変換に符号化変換スキップフラグを適用する。
図17は、図14の方法1400の諸態様を詳述する、変換単位(TU)の残差データを復号するための方法1700を示す概略流れ図である。方法1700は、所与の領域に対する変換スキップフラグを判定し、その領域の残差データを復号する。方法1700が変換単位(TU)の輝度チャネルに対して呼び出されるとき、1つのみの領域が存在する。変換単位(TU)の単一の色差チャネルについて、暗黙的分割が行われるとき、2つの領域が存在し、方法1700は、1の符号化ブロックフラグ値を有する各領域に対して呼び出される。方法1700は、変換スキップフラグサポートテストステップ1702によって開始する。ステップ1702は、変換スキップ有効化フラグおよび符号化単位変換量子化バイパスフラグならびに現在の領域の変換サイズをテストする。符号化ビットストリーム312内に符号化されている変換スキップ有効化フラグは、変換スキップ機能が符号化ビットストリーム312内で利用可能であるか否かを示す。符号化ビットストリーム312内に符号化されている符号化単位変換量子化バイパスフラグは、「可逆」符号化モードがビデオエンコーダ114によって選択されたか否かを示し、それによって、変換モジュール320および量子化モジュール322の両方がバイパスされ、したがって、ビデオエンコーダ114は可逆モードにおいて動作し、ビデオデコーダ134が、ビデオソース112からのキャプチャされたフレームデータを正確に再生することが可能になる。開発中の高効率ビデオ符号化(HEVC)規格において「log2TrafoSize」変数によって示される現在の領域の変換サイズは、正方形変換の辺寸法のlog2として定義される。変換スキップフラグが真であり(すなわち、有効化され)、符号化単位変換量子化バイパスフラグが偽であり(すなわち、有効化されず)、かつ変換サイズが4x4(すなわち、log2TrafoSizeが2に等しい)とき、制御は色チャネル内の最初の真の符号化ブロックフラグ(CBF)領域のテストステップ1704に移動し、そうでない場合、制御は残差データを復号するステップ1712に移動する。テストステップ1704は、現在の領域が色チャネル内の最初の領域である(かつ、変換単位(TU)内で1の符号化ブロックフラグ(CBF)値を有する)か否かを判定する。方法1700は、現在の領域の符号化ブロックフラグの値が1であるときのみ呼び出されるため、2つの事例が考えられる。方法1700が暗黙的分割の最初の色差領域(4:2:2色差フォーマットが使用されているときは上側領域、たとえば、図6Cにおける領域682または666)に対して呼び出される場合、テストステップ1704は真として評価し、制御は変換スキップフラグを復号するステップ1706に移動する。方法1700が暗黙的分割の後続の色差領域(複数の場合もあり)(4:2:2色差フォーマットが使用されているときは下側領域、たとえば、図6Cにおける領域684または668)に対して呼び出される場合、テストステップ1704は、方法1700が(現在の変換単位の)最初の色差領域に対して以前に呼び出されていたときは偽として評価し、方法1700が(現在の変換単位の)最初の色差領域に対して以前に呼び出されていなかったときは真として評価する。テストステップ1704が真として評価するとき、制御は変換スキップフラグを復号するステップ1706に移動する。ステップ1706において、エントロピー復号器420が、変換スキップフラグ値を求めるために符号化ビットストリーム312から変換スキップフラグを復号する。変換スキップフラグ値を記憶するステップ1708が、方法1700の後続の呼び出しにおいて後で使用するために、変換スキップフラグ値をハードウェアレジスタまたはレジスタ246のようなメモリに記憶する。テストステップ1704が偽として評価する場合、制御は変換スキップフラグ値を取り出すステップ1710に移動し、方法1700の以前の呼び出しにおいて求められ記憶された変換スキップフラグ値が、ハードウェアレジスタまたはレジスタ246のようなメモリから取り出される。残差データを復号するステップ1712において、残差データブロック954、956、958、960または962のような残差データのブロックが、エントロピー復号器420によって符号化ビットストリーム312から復号される。求められた変換スキップフラグ値は、マルチプレクサ423を参照して上述したように、変換スキップフラグ値468として変換スキップ動作を制御するために渡される。ステップ1702〜1710は、方法1700が輝度チャネルに対して呼び出されるときは図14のステップ1402に対応し、ステップ1702〜1710は、方法1700が色差チャネルに対して呼び出されるときは図14のステップ1404に対応する。残差データを復号するステップ1712は、図14のステップ1406の輝度残差復号、および、図14のステップ1406の色差残差復号に対応する。方法1700は、開発中の高効率ビデオ符号化(HEVC)規格において定義されるところの「残差符号化」構文構造にも対応する。
図18は、各色チャネルに対して(4x8非正方形変換を有する)4x8色差領域に適用される変換スキップ動作を示す概略図1800である。輝度チャネル(「Y」)および各色差チャネル(「U」および「V」)が図18に示されている。下記の2つの事例が図18に示されている。
事例1:「8x8TU」(図18の上行)は、輝度チャネルに対する8x8変換1802および各色差チャネルに対する4x8(非正方形または矩形)変換1804を有する、8x8変換単位(TU)を示す。変換スキップフラグは、変換スキップフラグ動作がサポートされている変換の右上隅にある網掛けボックスによって示されている。この事例において、図18に示されているように、変換スキップ動作は(4x4変換事例に加えて)4x8変換事例においてもサポートされており、したがって、4x8変換は各々、変換スキップフラグ1806を含む。
事例2:「4つの4x4TU」(図18の下行)は、輝度チャネルに対する4つの4x4変換1808および各色差チャネルに対する4x8(非正方形または矩形)変換1810を有する、4つの4x4変換単位(TU)を示す。各色差チャネルに対する4x8変換は(輝度サンプル格子上の)輝度変換と(色差サンプル格子上で)結びつけられており、4つの4x4変換単位(TU)の間で共有される。この実施態様において、図18に示されているように、変換スキップ動作は(4x4変換事例に加えて)4x8変換事例においてもサポートされており、したがって、4x8変換は、変換スキップフラグ1812を含む。
図18の事例1および2をサポートする実施態様について、方法1700の修正テストステップ1702ならびにステップ1706および1712が、ビデオデコーダ134によって実施される。修正テストステップ1702は、図17のテストステップ1702として動作するが、4x8の変換サイズが、変換スキップ動作がサポートされている可能な変換サイズとして(変換サイズ4x4に加えて)含まれている点が異なっており、したがって、修正テストステップ1702が、4x4および4x8変換事例の両方において真として評価することが可能である。
付録Aは、構文構造900および構文構造930に関連する、開発中の高効率ビデオ符号化(HEVC)規格の可能な「テキスト」を示す。付録A内のtransform_tree()関数の各インスタンスは、図9Aおよび図9Cにおいて「TT」とラベリングされている構文構造の一部として示されており、付録A内のtransform_unit()関数の各インスタンスは、図9Aおよび図9Bにおいて「TU」とラベリングされている構文構造の一部として示されている。付録Aにおいて与えられているテキストは、構文構造900および930と一致するテキストの一例であり、他の例が可能である。構文構造900および930と一致するテキストは、ビデオエンコーダ114がビットストリームを符号化する方法1000を実施し、ビデオデコーダ134がビットストリームを復号する方法1100を実施することを暗示している。
付録Bは、構文構造9100および構文構造9130に関連する、開発中の高効率ビデオ符号化(HEVC)規格の可能なテキストを示す。付録B内のtransform_tree()関数の各インスタンスは、図9C、図9Dおよび図9Eにおいて「TT」とラベリングされている構文構造の一部として示されており、付録A内のtransform_unit()関数の各インスタンスは、図9C、図9Dおよび図9Eにおいて「TU」とラベリングされている構文構造の一部として示されている。付録Bにおいて与えられているテキストは、構文構造9100および9130と一致するテキストの一例であり、他の例が可能である。構文構造9100および9130と一致するテキストもまた、ビデオエンコーダ114がビットストリームを符号化する方法1000を実施し、ビデオデコーダ134がビットストリームを復号する方法1100を実施することを暗示している。
付録Aおよび付録B内のテキストは、結果として一実施態様をもたらし、当該実施態様によって、4:4:4色差フォーマット向けに構成されているサイズ32x32の変換単位(TU)において対処することになる32x32色差領域の結果として、(最大数の)4つの16x16色差変換が適用されることになり、4:2:2色差フォーマット向けに構成されているサイズ32x32の変換単位(TU)において対処することになる16x32色差領域の結果として、(最大数の)2つの16x16色差変換が適用されることになる。付録Aおよび付録B内のテキストからもたらされる実施態様は、より小さいサイズの変換単位(TU)に適用され、4:2:2色差フォーマット向けに構成されるとき、(最大数の)1つの色差変換が適用される。たとえば、8x16変換が8x16色差領域に適用され、4x8変換が4x8色差領域に適用される。