(57)【特許請求の範囲】
【請求項１】
ビデオコーダが、ビデオデータをコーディングするための方法であって、
前記ビデオコーダが、左下の境界画素において始まり、順番に境界画素を通って右上の境界画素に至る順序に従って前記境界画素のセットを処理するパディング動作を実行することと、ここにおいて、前記パディング動作が前記左下の境界画素以外および前記右上の境界画素以外の利用できない境界画素を処理するとき、前記パディング動作は、次の利用可能な境界画素をサーチすることなく前記パディング動作により以前に処理された境界画素の値に等しい前記利用できない境界画素に値を割り当てる、
前記ビデオコーダが、前記境界画素の少なくともいくつかに基づいて、イントラ予測されたビデオブロックを生成することとを備える、方法。
【請求項２】
前記パディング動作を実行することが、現在の境界画素がインター予測されたコーディングユニット（ＣＵ）と関連付けられ、制約されたイントラ予測が可能にされる場合、前記現在の境界画素は前記イントラ予測されたビデオブロックの生成に使用できないと、前記ビデオコーダが判定することを備える、請求項１に記載の方法。
【請求項３】
前記パディング動作を実行することが、
前記左下の境界画素が前記イントラ予測されたビデオブロックの生成のために使用できるかどうか前記ビデオコーダが判定することと、
前記左下の境界画素が前記イントラ予測されたビデオブロックの生成のために使用できないと判定したことに応答して、デフォルト値を前記左下の境界画素に前記ビデオコーダが割り当てることとを備える、請求項１に記載の方法。
【請求項４】
前記パディング動作を実行することが、
前記左下の境界画素が前記イントラ予測されたビデオブロックの生成のために使用できるかどうか前記ビデオコーダが判定することと、
前記左下の境界画素が前記イントラ予測されたビデオブロックの生成のために使用できないと判定したことに応答して、前記イントラ予測されたビデオブロックの生成のために使用できる次の境界画素の値を前記左下の境界画素に前記ビデオコーダが割り当てることとを備える、請求項１に記載の方法。
【請求項５】
前記パディング動作を実行することが、
ｘ＝−１、ｙ＝ｎＳ×２−２．．．−１に対して、ｐ［ｘ，ｙ］が前記イントラ予測されたビデオブロックの生成のために使用できない境界画素である場合、ｐ［ｘ，ｙ］の値をｐ［ｘ，ｙ＋１］の値で前記ビデオコーダが置き換えることと、
ｘ＝０．．ｎＳ×２−１，ｙ−１に対して、ｐ［ｘ，ｙ］が前記イントラ予測されたビデオブロックの生成のために使用できない境界画素である場合、ｐ［ｘ，ｙ］の値をｐ［ｘ−１，ｙ］の値で前記ビデオコーダが置き換えることと
を備え、ｎＳが、前記イントラ予測されたビデオブロックの幅または高さに等しく、ｐが、サンプルの２次元配列であり、ｐ［０，０］が、前記イントラ予測されたビデオブロックの左上の輝度サンプルである、請求項１に記載の方法。
【請求項６】
符号化処理の間に実行され、前記イントラ予測されたビデオブロックに基づいて前記ビデオコーダが符号化されたビデオデータを生成することをさらに備える、請求項１に記載の方法。
【請求項７】
前記ビデオコーダが前記イントラ予測されたビデオブロックに少なくとも一部基づいて残差データを生成することをさらに備える、請求項６に記載の方法。
【請求項８】
復号処理の間に、前記イントラ予測されたビデオブロックに基づいて前記ビデオコーダが復号されたビデオデータを生成することをさらに備える、請求項１に記載の方法。
【請求項９】
前記ビデオコーダが前記イントラ予測されたビデオブロックと残差ビデオブロックとに少なくとも一部基づいて、復号されたビデオブロックを復元することをさらに備える、請求項８に記載の方法。
【請求項１０】
ビデオデータを記憶するように構成される記憶媒体と、
１つまたは複数のプロセッサとを備えるビデオコーディング装置であって、前記１つまたは複数のプロセッサが、
左下の境界画素において始まり、順番に境界画素を通って右上の境界画素に至る順序に従って前記境界画素のセットを処理するパディング動作を実行することと、ここにおいて、前記パディング動作が前記左下の境界画素以外および前記右上の境界画素以外の利用できない境界画素を処理するとき、前記パディング動作は、次の利用可能な境界画素をサーチすることなく前記パディング動作により以前に処理された境界画素の値に等しい前記利用できない境界画素に値を割り当てる、
前記境界画素の少なくともいくつかに基づいて、イントラ予測されたビデオブロックを生成することとを行うように構成される、ビデオコーディング装置。
【請求項１１】
前記１つまたは複数のプロセッサが、現在の境界画素がインター予測されたコーディングユニット（ＣＵ）と関連付けられ、制約されたイントラ予測が可能にされる場合、前記現在の境界画素は前記イントラ予測されたビデオブロックの生成に使用できないと判定するように構成される、請求項１０に記載のビデオコーディング装置。
【請求項１２】
前記１つまたは複数のプロセッサが
前記左下の境界画素が前記イントラ予測されたビデオブロックの生成のために使用できるかどうか判定し、
前記左下の境界画素が前記イントラ予測されたビデオブロックの生成のために使用できると判定したことに応答してデフォルト値を前記左下の境界画素に割り当てるように前記パディング動作を実行するように、前記１つまたは複数のプロセッサが構成される、請求項１０に記載のビデオコーディング装置。
【請求項１３】
前記１つまたは複数のプロセッサが
前記左下の境界画素が前記イントラ予測されたビデオブロックの生成のために使用できるかどうか判定し、
前記左下の境界画素が前記イントラ予測されたビデオブロックの生成のために使用できないと判定したことに応答して前記イントラ予測されたビデオブロックの生成のために使用できる次の境界画素の値を前記左下の境界画素に割り当てるように前記パディング動作を実行するように、前記１つまたは複数のプロセッサが構成される、請求項１０に記載のビデオコーディング装置。
【請求項１４】
ｘ＝−１、ｙ＝ｎＳ×２−２．．．−１に対して、前記１つまたは複数のプロセッサが、ｐ［ｘ，ｙ］が前記イントラ予測されたビデオブロックの生成のために使用できない境界画素である場合、ｐ［ｘ，ｙ］の値をｐ［ｘ，ｙ＋１］の値で置き換え、
ｘ＝０．．ｎＳ×２−１，ｙ−１に対して、前記１つまたは複数のプロセッサが、ｐ［ｘ，ｙ］が前記イントラ予測されたビデオブロックの生成のために使用できない境界画素である場合、ｐ［ｘ，ｙ］の値をｐ［ｘ−１，ｙ］の値で置き換えるように、前記パディング動作を実行するように前記１つまたは複数のプロセッサが構成され、
ｎＳが、前記イントラ予測されたビデオブロックの幅または高さに等しく、ｐが、サンプルの２次元配列であり、ｐ［０，０］が、前記イントラ予測されたビデオブロックの左上の輝度サンプルである、請求項１０に記載のビデオコーディング装置。
【請求項１５】
ビデオエンコーダを備え、前記１つまたは複数のプロセッサが、前記イントラ予測されたビデオブロックに基づいて符号化されたビデオデータを生成するように構成される、請求項１０に記載のビデオコーディング装置。
【請求項１６】
前記１つまたは複数のプロセッサが、前記イントラ予測されたビデオブロックに少なくとも一部基づいて残差データを生成するように構成される、請求項１５に記載のビデオコーディング装置。
【請求項１７】
ビデオデコーダを備え、前記１つまたは複数のプロセッサが、前記イントラ予測されたビデオブロックに基づいて復号されたビデオデータを生成するように構成される、請求項１０に記載のビデオコーディング装置。
【請求項１８】
前記１つまたは複数のプロセッサが、前記イントラ予測されたビデオブロックおよび残差ビデオブロックに基づいて、復号されたビデオブロックを復元するように構成される、請求項１７に記載のビデオコーディング装置。
【請求項１９】
左下の境界画素において始まり、順番に境界画素を通って右上の境界画素に至る順序に従って前記境界画素のセットを処理するパディング動作を実行するための手段と、ここにおいて、前記パディング動作が前記左下の境界画素以外および前記右上の境界画素以外の利用できない境界画素を処理するとき、前記パディング動作は、次の利用可能な境界画素をサーチすることなく前記パディング動作により以前に処理された境界画素の値に等しい前記利用できない境界画素に値を割り当てる、
前記境界画素に基づいて、イントラ予測されたビデオブロックを生成するための手段とを備える、ビデオコーディング装置。
【請求項２０】
前記パディング動作を実行するための前記手段が、現在の境界画素がインター予測されたコーディングユニット（ＣＵ）と関連付けられ、制約されたイントラ予測が可能にされる場合、前記現在の境界画素は前記イントラ予測されたビデオブロックの生成に使用できないと判定するための手段を備える、請求項１９に記載のビデオコーディング装置。
【請求項２１】
コンピュータ実行可能命令を記憶するコンピュータ読取可能記録媒体であって、前記コンピュータ実行可能命令が、実行されると、１つまたは複数のプロセッサに、
左下の境界画素において始まり、順番に境界画素を通って右上の境界画素に至る順序に従って前記境界画素のセットを処理するパディング動作を実行することと、ここにおいて、前記パディング動作が前記左下の境界画素以外の利用できない境界画素を処理するとき、前記パディング動作は、次の利用可能な境界画素をサーチすることなく前記パディング動作により以前に処理された境界画素の値に等しい前記利用できない境界画素に値を割り当てる、
前記境界画素の少なくともいくつかに基づいて、イントラ予測されたビデオブロックを生成することとを行わせる、コンピュータ読取可能記録媒体。
【請求項２２】
前記コンピュータ実行可能命令が、前記１つまたは複数のプロセッサに、現在の境界画素がインター予測されたコーディングユニット（ＣＵ）と関連付けられ、制約されたイントラ予測が可能にされる場合、前記現在の境界画素は前記イントラ予測されたビデオブロックの生成に使用できないと判定させる、請求項２１に記載のコンピュータ読取可能記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、各々の内容全体が参照により本明細書に組み込まれる、２０１１年６月１３日に出願された米国仮出願第６１／４９６，５０４号、２０１１年１１月８日に出願された米国仮出願第６１／５５７，３６１号、および２０１１年１１月９日に出願された米国仮出願第６１／５５７，８４５号の利益を主張する。
【０００２】
本開示は、ビデオコーディングに関し、より詳細には、ビデオデータのイントラ予測に関する。
【背景技術】
【０００３】
デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末（ＰＤＡ）、ラップトップまたはデスクトップコンピュータ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、携帯電話または衛星無線電話、ビデオ遠隔会議デバイスなどを含む、広範囲にわたるデバイスに組み込まれ得る。デジタルビデオデバイスは、デジタルビデオ情報をより効率的に送信し、受信し、記憶するための、ＭＰＥＧ−２、ＭＰＥＧ−４、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４、Ｐａｒｔ  １０、Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＡＶＣ）によって定義された規格、現在開発中の高効率ビデオコーディング（ＨＥＶＣ：High Efficiency Video Coding）規格、およびそのような規格の拡張に記載されているビデオ圧縮技法のような、ビデオ圧縮技法を実装する。
【０００４】
ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために、空間的（イントラピクチャ）予測および／または時間的（インターピクチャ）予測を実行する。ブロックベースのビデオコーディングの場合、ビデオスライスが、ツリーブロック、コーディングユニット（ＣＵ）および／またはコーディングノードと呼ばれることもあるビデオブロックに区分され得る。ピクチャのイントラコーディングされた（Ｉ）スライス中のビデオブロックは、同じピクチャ中の近隣ブロックにおける参照サンプルに対する空間的予測を使用して符号化される。ピクチャのインターコーディングされた（ＰまたはＢ）スライス中のビデオブロックは、同じピクチャ中の近隣ブロックにおける参照サンプルに対する空間的予測、または他の参照ピクチャ中の参照サンプルに対する時間的予測を使用し得る。ピクチャはフレームと呼ばれることがあり、参照ピクチャは参照フレームと呼ばれることがある。
【発明の概要】
【０００５】
全般に、本開示は、ビデオコーディングにおけるイントラ予測のために境界画素をパディングするための技法を説明する。本開示の技法によれば、ビデオコーダは、利用不可能な境界画素に値を割り当てるパディング動作を実行することができる。パディング動作は、左下の境界画素から始まり、境界画素を順番に通って右上の境界画素に至る順序に従って、境界画素を処理することができる。パディング動作が利用不可能な境界画素を処理するとき、パディング動作は、パディング動作によって以前処理された境界画素の値に基づいて、利用不可能な境界画素に値を割り当てることができる。ビデオコーダは、境界画素に基づいて、イントラ予測されたビデオブロックを生成することができる。
【０００６】
一態様では、本開示は、ビデオデータをコーディングするための方法を説明する。方法は、左下の境界画素から始まり、境界画素を順番に通って右上の境界画素に至る順序に従って、境界画素のセットを処理するパディング動作を実行することを備える。パディング動作が利用不可能な境界画素を処理するとき、パディング動作は、パディング動作によって以前処理された境界画素の値に基づいて、利用不可能な境界画素に値を割り当てる。方法はまた、境界画素に基づいて、イントラ予測されたビデオブロックを生成することを備える。
【０００７】
本開示はまた、左下の境界画素から始まり、境界画素を順番に通って右上の境界画素に至る順序に従って、境界画素のセットを処理するパディング動作を実行するように構成される、１つまたは複数のプロセッサを備える、ビデオコーディング装置を説明する。パディング動作が利用不可能な境界画素を処理するとき、パディング動作は、パディング動作によって以前処理された境界画素の値に基づいて、利用不可能な境界画素に値を割り当てる。１つまたは複数のプロセッサはまた、境界画素に基づいて、イントラ予測されたビデオブロックを生成するように構成される。
【０００８】
加えて、本開示は、左下の境界画素から始まり、境界画素を順番に通って右上の境界画素に至る順序に従って、境界画素のセットを処理するパディング動作を実行するための手段を備える、ビデオコーディング装置を説明する。パディング動作が利用不可能な境界画素を処理するとき、パディング動作は、パディング動作によって以前処理された境界画素の値に基づいて、利用不可能な境界画素に値を割り当てる。ビデオコーディング装置はまた、境界画素に基づいて、イントラ予測されたビデオブロックを生成するための手段を備える。
【０００９】
本開示はまた、コンピュータ実行可能命令を記憶する１つまたは複数のコンピュータ可読記憶媒体を備えるコンピュータプログラム製品を説明し、上記のコンピュータ実行可能命令は、実行されると、左下の境界画素から始まり、境界画素を順番に通って右上の境界画素に至る順序に従って、境界画素のセットを処理するパディング動作を、１つまたは複数のプロセッサに実行させる。パディング動作が利用不可能な境界画素を処理するとき、パディング動作は、パディング動作によって以前処理された画素の値に基づいて、利用不可能な境界画素に値を割り当てる。命令はまた、１つまたは複数のプロセッサに、境界画素に基づいて、イントラ予測されたビデオブロックを生成させる。
【００１０】
１つまたは複数の例の詳細が、添付の図面および以下の説明において記載される。他の特徴、目的、および利点は、その説明および図面、ならびに特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１１】
【図１】本開示の技法を実装し得る、例示的なビデオコーディングシステムを示すブロック図。
【図２】例示的なビデオブロックと、ビデオブロックと関連付けられる境界画素のセットとを示す、概念図。
【図３Ａ】高効率ビデオコーディングにおける例示的なイントラ予測モードを示す、概念図。
【図３Ｂ】異なるイントラ予測モードへの別の例示的な数の割当てを示す、概念図。
【図３Ｃ】Ｈ．２６４／ＡＶＣにおける例示的なイントラ予測モードを示す、概念図。
【図４】本開示の技法を実装し得る、例示的なビデオエンコーダを示すブロック図。
【図５】本開示の技法を実装し得る、例示的なビデオエンコーダを示すブロック図。
【図６】例示的なイントラ予測動作を示すフローチャート。
【図７】例示的なパディング動作を示すフローチャート。
【図８】図７の例示的なパディング動作が境界画素の中を進む順序を示す、概念図。
【図９】別の例示的なパディング動作を示すフローチャート。
【図１０】図９のパディング動作が境界画素の中を進む例示的な順序を示す、概念図。
【図１１】別の例示的なパディング動作を示すフローチャート。
【図１２】図１１のパディング動作が境界画素の中を進む例示的な順序を示す、概念図。
【図１３】境界画素が利用可能かどうかを判定するための例示的な動作を示すフローチャート。
【発明を実施するための形態】
【００１２】
添付の図面は、例を示す。添付の図面における、参照番号で指示される要素は、以下の説明における、同じ参照番号で指示される要素に対応する。本開示において、順序を示す言葉（たとえば、「第１の」、「第２の」、「第３の」など）で始まる名称をもつ要素は、それらの要素が特定の順序を有することを必ずしも示唆しない。そうではなく、そのような順序を示す言葉は、同じまたは同様のタイプの異なる要素を指すのに使われるにすぎない。
【００１３】
ビデオコーダは、ビデオブロックの左上側でビデオブロックと接する画素のセットに基づいて、イントラ予測されたビデオブロックを生成することができる。ビデオブロックの左側の境界画素は、ビデオブロックの画素の底の行より下に広がっていてよく、ビデオブロックの上側の境界は、ビデオブロックの画素の最も右側の列より右に広がっていてよい。
【００１４】
いくつかの例では、境界画素の１つまたは複数は利用不可能であり得る。したがって、ビデオコーダは、利用不可能な境界画素に値を割り当てるパディング動作を実行することができる。パディング動作は、左下の境界画素から始まり、境界画素を順番に通って右上の境界画素に至る順序に従って、境界画素を処理することができる。パディング動作が利用不可能な境界画素を処理するとき、パディング動作は、パディング動作によって以前処理された境界画素の値に基づいて、利用不可能な境界画素に値を割り当てることができる。パディング動作を実行した後、ビデオコーダは、境界画素に基づいて、イントラ予測されたビデオブロックを生成することができる。ビデオコーダがビデオエンコーダである場合、ビデオコーダは、イントラ予測されたビデオブロックに基づいて、符号化されたビデオデータを生成することができる。たとえば、ビデオエンコーダは、イントラ予測されたビデオブロックに少なくとも一部基づいて、残差データを生成することができる。ビデオコーダがビデオデコーダである場合、ビデオコーダは、イントラ予測されたビデオブロックに基づいて、復号されたビデオデータを生成することができる。たとえば、ビデオデコーダは、イントラ予測されたビデオブロックと残差ビデオブロックとに少なくとも一部基づいて、復号されたビデオブロックを復元することができる。
【００１５】
図１は、本開示の技法を利用することができる例示的なビデオコーディングシステム１０を示すブロック図である。本明細書で使用され説明される場合、「ビデオコーダ」は総称的に、ビデオエンコーダとビデオデコーダの両方と、複合エンコーダ−デコーダ（コーデック）とを指す。本開示では、「ビデオコーディング」または「コーディング」という用語は総称的に、ビデオ符号化とビデオ復号とを指し得る。コーダ、エンコーダ、デコーダおよびコーデックという用語はすべて、本開示と一致するビデオデータのコーディング（符号化および／または復号）のために設計された特定の機械を指し得る。ビデオコーディングを実行するデバイスは、ビデオコーディングデバイスまたはビデオコーディング装置と呼ばれ得る。
【００１６】
図１に示されるように、ビデオコーディングシステム１０は、ソースデバイス１２と宛先デバイス１４とを含む。ソースデバイス１２は、符号化されたビデオデータを生成する。宛先デバイス１４は、ソースデバイス１２によって生成された、符号化されたビデオデータを復号することができる。ソースデバイス１２および宛先デバイス１４は、デスクトップコンピュータ、ノートブック（たとえば、ラップトップ）コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォン、いわゆる「スマート」パッドなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、車内コンピュータなどを含む、広範囲にわたるデバイスを備え得る。いくつかの例では、ソースデバイス１２および宛先デバイス１４は、ワイヤレス通信のために装備され得る。
【００１７】
宛先デバイス１４は、チャネル１６を介してソースデバイス１２から符号化されたビデオデータを受信することができる。チャネル１６は、ソースデバイス１２から宛先デバイス１４に符号化されたビデオデータを移動することが可能な、任意のタイプの媒体またはデバイスを備え得る。一例では、チャネル１６は、ソースデバイス１２が符号化されたビデオデータを宛先デバイス１４にリアルタイムで直接送信することを可能にする通信媒体を備え得る。この例では、ソースデバイス１２は、ワイヤレス通信プロトコルのような通信規格に従って、符号化されたビデオデータを変調することができ、変調されたビデオデータを宛先デバイス１４に送信することができる。通信媒体は、高周波（ＲＦ）スペクトルまたは１つまたは複数の物理伝送線路のような、ワイヤレス通信媒体または有線通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークのような、パケットベースネットワークの一部を形成し得る。通信媒体は、ソースデバイス１２から宛先デバイス１４への通信を支援する、ルータ、スイッチ、基地局、または他の機器を含み得る。
【００１８】
別の例では、チャネル１６は、ソースデバイス１２によって生成された符号化されたビデオデータを記憶する、記憶媒体に対応し得る。この例では、宛先デバイス１４は、ディスクアクセスまたはカードアクセスを介して、記憶媒体にアクセスすることができる。記憶媒体は、ブルーレイ（登録商標）ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、フラッシュメモリ、または符号化されたビデオデータを記憶するための他の適切なデジタル記憶媒体など、種々のローカルにアクセスされるデータ記憶媒体を含み得る。さらなる例では、チャネル１６は、ソースデバイス１２によって生成された符号化されたビデオを記憶する、ファイルサーバまたは別の中間記憶デバイスを含み得る。この例では、宛先デバイス１４は、ストリーミングまたはダウンロードを介して、ファイルサーバまたは別の中間記憶デバイスに記憶された、符号化されたビデオデータにアクセスすることができる。ファイルサーバは、符号化されたビデオデータを記憶することと、符号化されたビデオデータを宛先デバイス１４に送信することとが可能な、あるタイプのサーバであり得る。例示的なファイルサーバは、（たとえば、ウェブサイトのための）ウェブサーバ、ＦＴＰサーバ、ネットワークアタッチトストレージ（ＮＡＳ）デバイス、およびローカルディスクドライブを含む。宛先デバイス１４は、インターネット接続のような標準的なデータ接続を通じて、符号化されたビデオデータにアクセスすることができる。データ接続の例示的なタイプは、ファイルサーバに記憶された符号化されたビデオデータにアクセスするのに適切な、ワイヤレスチャネル（たとえば、Ｗｉ−Ｆｉ接続）、有線接続（たとえば、ＤＳＬ、ケーブルモデムなど）、または両方の組合せを含み得る。ファイルサーバからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはその両方の組合せであり得る。
【００１９】
本開示の技法は、ワイヤレスの用途または設定には限定されない。本技法は、無線を通じたテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、または他の用途など、種々のマルチメディア用途のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、ビデオコーディングシステム１０は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および／またはビデオ電話などの用途をサポートするために、単方向または二方向のビデオ送信をサポートするように構成され得る。
【００２０】
図１の例では、ソースデバイス１２は、ビデオソース１８と、ビデオエンコーダ２０と、出力インターフェース２２とを含む。場合によっては、出力インターフェース２２は、変調器／復調器（モデム）および／または送信機を含み得る。ビデオソース１８は、たとえばビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオデータを含むビデオアーカイブ、ビデオコンテンツプロバイダからビデオデータを受信するためのビデオフィードインターフェース、および／または、ビデオデータを生成するためのコンピュータグラフィックスシステムなどのソース、あるいはそのようなソースの組合せを含み得る。
【００２１】
ビデオエンコーダ２０は、ビデオデータを符号化することができる。出力インターフェース２２は、符号化されたビデオデータを宛先デバイス１４に直接送信することができる。あるいは、出力インターフェース２２は、復号および／または再生のために宛先デバイス１４によって後でアクセスするために、記憶媒体またはファイルサーバ上に、符号化されたビデオデータを記憶することができる。
【００２２】
図１の例において、宛先デバイス１４は、入力インターフェース２８と、ビデオデコーダ３０と、ディスプレイデバイス３２とを含む。場合によっては、入力インターフェース２８は、受信機および／またはモデムを含み得る。宛先デバイス１４の入力インターフェース２８は、チャネル１６を介して符号化されたビデオデータを受信する。符号化されたビデオデータは、ビデオデータを表す種々のシンタクス要素を含み得る。
【００２３】
ディスプレイデバイス３２は、宛先デバイス１４と一体であってよく、またはその外部にあってよい。他の例では、宛先デバイス１４はディスプレイデバイスであり得る。一般に、ディスプレイデバイス３２は、復号されたビデオデータをユーザに表示する。ディスプレイデバイス３２は、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプのディスプレイデバイスなど、種々のディスプレイデバイスのいずれかを備え得る。
【００２４】
ビデオエンコーダ２０およびビデオデコーダ３０は、現在開発中の高効率ビデオコーディング（ＨＥＶＣ）規格などのビデオ圧縮規格に従って動作することができ、ＨＥＶＣテストモデル（ＨＭ）に準拠することができる。あるいは、ビデオエンコーダ２０およびビデオデコーダ３０は、代替的にＭＰＥＧ−４、Ｐａｒｔ  １０、Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＡＶＣ）と呼ばれるＩＴＵ−Ｔ  Ｈ．２６４規格、またはそのような規格の拡張版など、他のプロプライエタリ規格または業界規格に従って動作し得る。しかしながら、本開示の技法は、いかなる特定のコーディング規格にも限定されない。他の例示的なビデオ圧縮規格は、ＭＰＥＧ−２およびＩＴＵ−Ｔ  Ｈ．２６３を含む。
【００２５】
図１の例には示されていないが、ビデオエンコーダ２０およびビデオデコーダ３０は各々、オーディオエンコーダおよびオーディオデコーダと統合されてよく、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するための適切なＭＵＸ−ＤＥＭＵＸユニット、または他のハードウェアおよびソフトウェアを含み得る。いくつかの例では、ＭＵＸ−ＤＥＭＵＸユニットは、ＩＴＵ  Ｈ．２２３マルチプレクサプロトコル、またはユーザデータグラムプロトコル（ＵＤＰ）など他のプロトコルに準拠することができる。
【００２６】
この場合も、図１は例にすぎず、本開示の技法は、符号化デバイスと復号デバイスとの間のデータ通信を必ずしも含むとは限らないビデオコーディング設定（たとえば、ビデオ符号化またはビデオ復号）に適用され得る。多くの例では、ビデオ符号化およびビデオ復号は、互いに通信しないが、符号化されたビデオデータをメモリに記憶し、かつ／またはメモリから符号化されたビデオデータデータを取り出し復号するデバイスによって、実行される。
【００２７】
ビデオエンコーダ２０およびビデオデコーダ３０は各々、１つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ハードウェアのような、様々なタイプの回路、またはそれらの任意の組合せを使用して実装され得る。いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、少なくとも部分的にソフトウェアで実装され得る。ビデオエンコーダ２０および／またはビデオデコーダ３０がソフトウェアで部分的に実装される場合、デバイスは、適切な非一時的コンピュータ可読記憶媒体にソフトウェアの命令を記憶し、１つまたは複数のプロセッサを使用してその命令をハードウェアで実行して、本開示の技法を実行することができる。ビデオエンコーダ２０およびビデオデコーダ３０の各々は１つまたは複数のエンコーダまたはデコーダ中に含まれてよく、そのいずれも、それぞれのデバイスにおいて複合エンコーダ／デコーダ（コーデック）の一部として統合されてよい。
【００２８】
上で手短に述べたように、ビデオエンコーダ２０は、ビデオデータを符号化する。ビデオデータは、１つまたは複数のピクチャを備え得る。ピクチャの各々は、ビデオの一部を形成する静止画像である。いくつかの事例では、ピクチャは、ビデオ「フレーム」と呼ばれ得る。ビデオエンコーダ２０がビデオデータを符号化するとき、ビデオエンコーダ２０は、ビットストリームを生成し得る。ビットストリームは、ビデオデータのコーディングされた表現を形成する、ビットのシーケンスを含み得る。
【００２９】
ビットストリームを生成するために、ビデオエンコーダ２０は、ビデオデータ中の各ピクチャに対して符号化動作を実行することができる。ビデオエンコーダ２０がピクチャに対して符号化動作を実行するとき、ビデオエンコーダ２０は、一連のコーディングされたピクチャと関連するデータとを生成することができる。コーディングされたピクチャとは、ピクチャのコーディングされた表現である。関連するデータは、シーケンスパラメータセットと、ピクチャパラメータセットと、適応パラメータセットと、他のシンタクス構造とを含み得る。シーケンスパラメータセット（ＳＰＳ）は、ピクチャの０個以上のシーケンスに適用可能なパラメータを含み得る。ピクチャパラメータセット（ＰＰＳ）は、０個以上のピクチャに適用可能なパラメータを含み得る。適応パラメータセット（ＡＰＳ）は、０個以上のピクチャに適用可能なパラメータを含み得る。ＰＰＳ中のパラメータは、ピクチャのセットに対して一定であってよく、一方、異なる適応パラメータセット中のパラメータは、ピクチャのセット中の異なるピクチャに適用可能であってよい。
【００３０】
コーディングされたピクチャを生成するために、ビデオエンコーダ２０は、ピクチャを等しいサイズの重複しないビデオブロックに区分することができる。ビデオブロックの各々は、ツリーブロックと関連付けられる。いくつかの事例では、ツリーブロックは、最大コーディングユニット（ＬＣＵ）とも呼ばれ得る。ＨＥＶＣのツリーブロックは、Ｈ．２６４／ＡＶＣなど、従来の規格のマクロブロックに広い意味で類似し得る。しかしながら、ツリーブロックは、特定のサイズに必ずしも限定されるものではなく、１つまたは複数のコーディングユニット（ＣＵ）を含み得る。ビデオエンコーダ２０は、４分木区分を使用して、ツリーブロックのビデオブロックを、ＣＵと関連付けられるビデオブロックへと区分することができるので、「ツリーブロック」という名前である。
【００３１】
いくつかの例では、ビデオエンコーダ２０は、ピクチャを複数のスライスに区分することができる。スライスの各々は、整数個のＣＵを含み得る。いくつかの例では、スライスは、整数個のツリーブロックを備える。他の例では、スライスの境界は、ツリーブロック内にあり得る。
【００３２】
ピクチャに対して符号化動作を実行することの一部として、ビデオエンコーダ２０は、ピクチャの各スライスに対して符号化動作を実行することができる。ビデオエンコーダ２０がスライスに対して符号化動作を実行すると、ビデオエンコーダ２０は、スライスと関連付けられた符号化されたデータを生成することができる。スライスと関連付けられた符号化されたデータは、「コーディングされたスライス」と呼ばれ得る。
【００３３】
コーディングされたスライスを生成するために、ビデオエンコーダ２０は、スライス中の各ツリーブロックに対して符号化動作を実行することができる。ビデオエンコーダ２０がツリーブロックに対して符号化動作を実行すると、ビデオエンコーダ２０は、コーディングされたツリーブロックを生成することができる。コーディングされたツリーブロックは、ツリーブロックの符号化されたバージョンを表すデータを備え得る。
【００３４】
コーディングされたツリーブロックを生成するために、ビデオエンコーダ２０は、ツリーブロックのビデオブロック上で４分木区分を再帰的に実行して、ビデオブロックを徐々により小さなビデオブロックへと分けることができる。より小さなビデオブロックの各々は、異なるＣＵと関連付けられ得る。たとえば、ビデオエンコーダ２０は、ツリーブロックのビデオブロックを４つの等しいサイズのサブブロックに区分し、サブブロックの１つまたは複数を、４つの等しいサイズのサブサブブロックに区分することができ、以下同様である。ビットストリーム中の１つまたは複数のシンタクス要素は、ビデオエンコーダ２０がツリーブロックのビデオブロックを区分できる最大の回数を示し得る。ＣＵのビデオブロックは、正方形の形状であり得る。ＣＵのビデオブロックのサイズ（すなわち、ＣＵのサイズ）は、８×８の画素から、最大で６４×６４以上の画素を有するツリーブロックのビデオブロックのサイズ（すなわち、ツリーブロックのサイズ）にまでわたり得る。
【００３５】
ビデオエンコーダ２０は、ツリーブロックの各々の区分されていないＣＵに対して符号化動作を実行することができる。区分されていないＣＵは、ビデオブロックが他のＣＵのためのビデオブロックへと区分されていない、ＣＵである。区分されていないＣＵに対して符号化動作を実行することの一部として、ビデオエンコーダ２０は、ＣＵのために１つまたは複数の予測ユニット（ＰＵ）を生成することができる。ＣＵのＰＵの各々は、ＣＵのビデオブロック内の異なるビデオブロックと関連付けられ得る。ビデオエンコーダ２０は、ＣＵの各ＰＵの、予測されたビデオブロックを生成することができる。ＰＵの予測されたビデオブロックは、サンプルのブロックであってよい。本開示では、「サンプル」という用語は、画素の明るさ（輝度）または色（クロミナンス）を指し得る。ビデオエンコーダ２０は、イントラ予測またはインター予測を使用して、ＰＵの予測されたビデオブロックを生成することができる。
【００３６】
ビデオエンコーダ２０がイントラ予測を使用してＰＵの予測されたビデオブロックを生成する場合、ビデオエンコーダ２０は、ＰＵと関連付けられるピクチャのサンプルに基づいて、ＰＵの予測されたビデオブロックを生成することができる。ビデオエンコーダ２０がイントラ予測を使用してＣＵのＰＵの予測されたビデオブロックを生成する場合、ＣＵはイントラ予測されたＣＵである。
【００３７】
ビデオエンコーダ２０がインター予測を使用してＰＵの予測されたビデオブロックを生成する場合、ビデオエンコーダ２０は、ＰＵと関連付けられるピクチャ以外のピクチャの値に基づいて、ＰＵの予測されたビデオブロックを生成することができる。言い換えると、ビデオエンコーダ２０は、１つまたは複数の参照ピクチャの中のサンプルに基づいて、ＰＵの予測されたビデオブロックを生成することができる。加えて、ビデオエンコーダ２０がインター予測を使用してＰＵの予測されたビデオブロックを生成する場合、ビデオエンコーダ２０は、ＰＵの動き情報を生成することができる。ＰＵの動き情報は、ＰＵのビデオブロックに対応する参照ピクチャの部分を示し得る。言い換えると、ＰＵの動き情報は、ＰＵの「参照サンプル」を示し得る。ビデオエンコーダ２０は、ＰＵの動き情報によって示される参照ピクチャの部分に基づいて、ＰＵの予測されたビデオブロックを生成することができる。ビデオエンコーダ２０がインター予測を使用してＣＵのＰＵの予測されたビデオブロックを生成する場合、ＣＵはインター予測されたＣＵである。
【００３８】
ビデオエンコーダ２０がＣＵの１つまたは複数のＰＵの予測されたビデオブロックを生成した後、ビデオエンコーダ２０は、ＣＵのＰＵの予測されたビデオブロックに基づいて、ＣＵの残差データを生成することができる。ＣＵの残差データは、ＣＵのＰＵの予測されたビデオブロック中のサンプルと、ＣＵの元のビデオブロック中のサンプルとの差を示し得る。
【００３９】
さらに、区分されていないＣＵに対して符号化動作を実行することの一部として、ビデオエンコーダ２０は、ＣＵの残差データに対して再帰的な４分木区分を実行して、ＣＵの残差データを、ＣＵの変換ユニット（ＴＵ）と関連付けられる残差データの１つまたは複数のブロック（すなわち、残差ビデオブロック）へと区分することができる。ＣＵの各ＴＵは、異なる残差ビデオブロックと関連付けられ得る。ビデオコーダ２０は、ＣＵの各ＴＵに対して変換動作を実行することができる。
【００４０】
ビデオエンコーダ２０がＴＵに対して変換動作を実行すると、ビデオエンコーダ２０は、ＴＵと関連付けられる残差ビデオブロックに対して１つまたは複数の変換を適用して、ＴＵと関連付けられる１つまたは複数の変換係数ブロック（すなわち、変換係数のブロック）を生成することができる。概念的には、変換係数ブロックは、変換係数の２次元（２Ｄ）行列であってよい。
【００４１】
変換係数ブロックを生成した後、ビデオエンコーダ２０は、変換係数ブロックに対して量子化動作を実行することができる。量子化は、一般に、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を実現する処理を指す。量子化は、変換係数の一部またはすべてと関連付けられるビット深度を低減することができる。たとえば、量子化中にｎビットの変換係数がｍビットの変換係数に切り捨てられてよく、ただし、ｎはｍよりも大きい。
【００４２】
ビデオエンコーダ２０は、各ＣＵまたはある数のＣＵを、量子化パラメータ（ＱＰ）値と関連付けることができる。ＣＵと関連付けられるＱＰ値は、ビデオエンコーダ２０が、ＣＵまたはその数のＣＵと関連付けられる変換係数ブロックをどのように量子化するかを、決定し得る。ビデオエンコーダ２０は、ＣＵと関連付けられるＱＰ値を調整することによって、ＣＵと関連付けられる変換係数ブロックに適用される量子化の程度を調整することができる。
【００４３】
ビデオエンコーダ２０が変換係数ブロックを量子化した後、ビデオエンコーダ２０は、量子化された変換係数をスキャンして、変換係数レベルの１次元ベクトルを生成することができる。ビデオエンコーダ２０は、１次元ベクトルをエントロピー符号化することができる。ビデオエンコーダ２０はまた、ビデオデータと関連付けられる他のシンタクス要素もエントロピー符号化することができる。
【００４４】
ビデオエンコーダ２０によって生成されるビットストリームは、一連のネットワーク抽象化レイヤ（ＮＡＬ）ユニットを含む。ＮＡＬユニットの各々は、ＮＡＬユニット中のデータのタイプの指示と、データを含むバイトとを含むシンタクス構造であり得る。たとえば、ＮＡＬユニットは、シーケンスパラメータセット、ピクチャパラメータセット、コーディングされたスライス、補助強化情報（ＳＥＩ）、アクセスユニット区切り文字、フィラーデータ、または別のタイプのデータを表すデータを含み得る。ＮＡＬユニット中のデータは、エントロピー符号化された変換係数ブロック、動き情報などのような、エントロピー符号化されたシンタクス構造を含み得る。
【００４５】
ビデオデコーダ３０は、ビデオエンコーダ２０によって生成されるビットストリームを受け取ることができる。ビットストリームは、ビデオエンコーダ２０によって符号化されるビデオデータの符号化された表現を含み得る。ビデオデコーダ３０がビットストリームを受け取ると、ビデオデコーダ３０は、ビットストリームに対して解析動作を実行することができる。ビデオデコーダ３０が解析動作を実行すると、ビデオデコーダ３０は、ビットストリームからシンタクス要素を抽出することができる。ビデオデコーダ３０は、ビットストリームから抽出されたシンタクス要素に基づいて、ビデオデータのピクチャを復元することができる。シンタクス要素に基づいてビデオデータを復元するための処理は、一般に、シンタクス要素を生成するためにビデオエンコーダ２０によって実行される処理の逆であり得る。
【００４６】
ビデオデコーダ３０がＣＵと関連付けられるシンタクス要素を抽出した後、ビデオデコーダ３０は、シンタクス要素に基づいて、ＣＵのＰＵのイントラ予測されたビデオブロックまたはインター予測されたビデオブロックを生成することができる。加えて、ビデオデコーダ３０は、ＣＵのＴＵと関連付けられる変換係数ブロックを逆量子化することができる。ビデオデコーダ３０は、変換係数ブロックに対して逆変換を実行して、ＣＵのＴＵと関連付けられる残差ビデオブロックを復元することができる。予測されたビデオブロックを生成し、残差ビデオブロックを復元した後、ビデオデコーダ３０は、予測されたビデオブロックおよび残差ビデオブロックに基づいて、ＣＵのビデオブロックを復元することができる。このようにして、ビデオデコーダ３０は、ビットストリーム中のシンタクス要素に基づいて、ＣＵのビデオブロックを決定することができる。
【００４７】
上で簡単に説明されたように、ビデオエンコーダ２０またはビデオデコーダ３０のようなビデオコーダは、イントラ予測を使用して、ＰＵの予測されたビデオブロックを生成することができる。説明を簡単にするために、本開示は、イントラ予測を使用して生成された予測されたビデオブロックを、イントラ予測されたビデオブロックと呼ぶことがある。ビデオコーダがＰＵのイントラ予測されたビデオブロックを生成すると、ビデオコーダは、イントラ予測されたビデオブロック中の画素に、様々な境界画素の値を割り当てることができる。
【００４８】
図２は、例示的なビデオブロック５０と、ビデオブロック５０と関連付けられる境界画素のセットとを示す、概念図である。ビデオブロック５０は、ビデオコーダが現在コーディングしているＣＵのＰＵと関連付けられ得る。図２の例では、ビデオブロック５０は、ａ〜ｐと名付けられた１６個の画素からなる。図２の例では、境界画素はＡ〜Ｒと名付けられている。他のビデオブロックは、ビデオブロック５０よりも大きくてよく、または小さくてよい。一般に、ビデオブロックは、ビデオブロックの上の２×ｗ＋１個の境界画素およびビデオブロックの左の２×ｈ＋１個の境界画素と関連付けられてよく、ここでｗはビデオブロックの幅であり、ｈはビデオブロックの高さである。
【００４９】
ビデオブロック（たとえば、ビデオブロック５０）の上の境界画素は、上側の予測因子を形成し得る。言い換えると、上側の予測因子は、ビデオブロックの上にあるサンプルの行に対応する、参照サンプルの列であり得る。ビデオブロックの左上の画素の座標が（ｘ，ｙ）であり、ビデオブロックのサイズがＮ×Ｎである場合、ｉが−１から２Ｎにわたるものとして、座標（ｘ＋ｉ，ｙ−１）のサンプルが、上側の予測因子を形成する。ビデオブロックの左の境界画素は、左側の予測因子を形成する。言い換えると、左側の予測因子は、ビデオブロックの左にあるサンプルの列に対応する、参照サンプルの列であり得る。ビデオブロックの左上の画素の座標が（ｘ，ｙ）であり、ビデオブロックのサイズがＮ×Ｎである場合、ｊが−１から２Ｎにわたるものとして、座標（ｘ−１，ｙ＋ｊ）のサンプルが、左側の予測因子を形成する。
【００５０】
図３Ａは、ＨＥＶＣにおける例示的なイントラ予測モードを示す、概念図である。図３Ａの例では、イントラ予測モード１、２、および４〜３３は、イントラ予測されたビデオブロックを生成するためにビデオコーダが境界画素を延ばし得る様々な方向に対応する。たとえば、ビデオコーダがイントラ予測モード１を使用する場合、ビデオコーダは、境界画素の値を垂直に下方向に延ばすことによって、イントラ予測されたビデオブロックを生成することができる。この例では、ビデオコーダは、イントラ予測モード１を使用して、境界画素Ａの値を画素ａ、ｅ、ｉ、およびｍに割り当て、境界画素Ｂの値を画素ｂ、ｆ、ｊ、およびｎに割り当て、境界画素Ｃの値を画素ｃ、ｇ、ｋ、およびｏに割り当て、境界画素Ｄの値を画素ｄ、ｈ、ｌ、およびｐに割り当てることによって、ビデオブロック５０（図２）を生成することができる。
【００５１】
モード０は、平面モードを指し得る。ビデオコーダは、以下の式を使用して、平面モードを使用してイントラ予測されたビデオブロックを生成することができる。
【数１】
0005774780.tif 000002
【００５２】
ここで、ｘ，ｙ＝０．．ｎＳ−１であり、ｋ＝Ｌｏｇ２（ｎＳ）である。
【００５３】
上の式において、ｐｒｅｄＳａｍｐｌｅｓ［ｘ，ｙ］はイントラ予測されたサンプルの列であり、ｎＳは予測されたビデオブロックのサイズを示し、ｐ［ｘ，ｙ］は近隣のサンプルの列である。
【００５４】
モード３は、ＤＣモードを指し得る。ＤＣモードを使用してイントラ予測されたビデオブロックを生成するために、ビデオコーダは、以下の式を使用して値ＤＣＶａｌをまず計算することができる。
【数２】
0005774780.tif 000003
【００５５】
現在のブロックのクロミナンスインデックス（ｃＩｄｘ）が０に等しい場合、以下が当てはまる。
【数３】
0005774780.tif 000004
【００５６】
それ以外の場合、予測サンプルｐｒｅｄＳａｍｐｌｅｓ［ｘ，ｙ］は以下のように導出される。
【数４】
0005774780.tif 000005
【００５７】
上の式において、ｐｒｅｄＳａｍｐｌｅｓ［ｘ，ｙ］はイントラ予測されたサンプルの列であり、ｎＳは予測されたビデオブロックのサイズを示し、ｐ［ｘ，ｙ］は近隣のサンプルの列である。
【００５８】
別の例では、ビデオコーダがイントラ予測モード１０を使用する場合、ビデオコーダは、境界画素の値を対角線上に左下から右上に延ばすことによって、イントラ予測されたビデオブロックを生成することができる。図２の例では、ビデオコーダは、イントラ予測モード１０を使用して、境界画素Ｊの値を画素ａに割り当て、境界画素Ｋの値を画素ｅおよびｂに割り当て、境界画素Ｌの値を画素ｉ、ｆ、およびｃに割り当て、境界画素Ｍの値を画素ｍ、ｊ、ｇ、およびｄに割り当て、境界画素Ｎの値を画素ｎ、ｋ、およびｈに割り当て、境界画素Ｏの値を画素ｏおよびｌに割り当て、境界画素Ｐの値を画素ｐに割り当てることによって、ビデオブロック５０を生成することができる。
【００５９】
他の例では、ビデオコーダは、イントラ予測モードを示すために異なる数字を使用することができる。たとえば、図３Ｂは、異なるイントラ予測モードへの別の数の割当てを示す、概念図である。
【００６０】
図３Ｃは、Ｈ．２６４／ＡＶＣにおける例示的なイントラ予測モードを示す、概念図である。Ｈ．２６４／ＡＶＣにおける利用可能なイントラ予測モードは、より少ないことがある。
【００６１】
いくつかの例では、イントラ予測されたビデオブロックと関連付けられる境界画素の１つまたは複数は、利用不可能である。イントラ予測されたビデオブロックと関連付けられる境界画素のセットは、イントラ予測されたビデオブロックを生成するためにビデオコーダが使用することができる、境界画素を含み得る。境界画素が利用不可能である場合、ビデオコーダは、境界画素の値にアクセスすることが不可能であり得る。したがって、ビデオコーダは、境界画素の値を使用してイントラ予測されたビデオブロックを生成することが不可能であり得る。
【００６２】
境界画素は、種々の理由で利用不可能であり得る。たとえば、境界画素が現在のピクチャ（すなわち、ビデオコーダが現在コーディングしているピクチャ）の境界の外側にある場合、境界画素は利用不可能であり得る。別の例では、境界画素が現在のスライスまたはタイル（すなわち、ビデオコーダが現在コーディングしているスライスまたはタイル）の境界の外側にあり、スライス／タイルにまたがる予測が許可されていない場合、境界画素は利用不可能であり得る。別の例では、境界画素がインター予測されたＣＵと関連付けられ、制約されたイントラ予測が現在のピクチャに対して可能にされている場合、境界画素は利用不可能であり得る。
【００６３】
１つまたは複数の境界画素が利用不可能であることがあるので、ビデオコーダは、利用不可能な境界画素に値を割り当てるパディング動作を実行することができる。ビデオコーダがパディング動作を実行した後、ビデオコーダは、利用可能な境界画素の利用可能な値と、利用不可能な境界画素の割り当てられた値とを使用して、イントラ予測されたビデオブロックを生成することができる。
【００６４】
異なるビデオコーダが、様々な方法で、値を利用不可能な境界画素に割り当てることができる。たとえば、ビデオコーダは、左下の境界画素（たとえば、図２の境界画素Ｐ）から角の画素（たとえば、図２の境界画素Ｒ）を通り右上の境界画素（たとえば、図２の境界画素Ｈ）へ至るように境界画素をスキャンする、パディング動作を実行することができる。この例では、ビデオコーダが利用不可能な境界画素に到達すると、ビデオコーダは、ビデオコーダが次の利用可能な境界画素に到達するまで、前方にスキャンすることができる。利用可能な境界画素を特定すると、パディング動作は、次の利用可能な画素と前の利用可能な境界画素の値とに基づいて、値を利用不可能な境界画素に割り当てることができる。
【００６５】
上で説明された例示的なパディング動作では、前の利用可能な境界画素がない場合、ビデオコーダは、最初の利用可能な境界画素を見つけるために前方にスキャンし、次いで、最初の利用可能な境界画素の値を、最初の利用可能な境界画素の前の各々の利用不可能な境界画素に割り当てることができる。言い換えると、Ｐpad＝Ｐnextであり、ここでＰpadは、最初の利用可能な境界画素より前の各々の利用不可能な境界画素に割り当てられる値であり、Ｐnextは、次の利用可能な境界画素の値である。次の利用可能な境界画素がない場合、ビデオコーダは、最後の利用可能な境界画素の値から、利用不可能な境界画素の値を外挿することができる。言い換えると、Ｐpad＝Ｐpreであり、ここでＰpadは、最後の利用可能な境界画素の後の各々の利用不可能な境界画素の値であり、Ｐpreは、最後の利用可能な境界画素の値である。ＰpreおよびＰnextという境界画素が利用可能ではない場合、ビデオコーダは、デフォルト値を境界画素に割り当てることができる。
【００６６】
前の段落で説明された方式で値を利用不可能な境界画素に割り当てることには、いくつかの欠点があり得る。たとえば、この方式で値を各々の利用不可能な境界画素に割り当てることは、次の利用可能な境界画素を見つけるように前方にスキャンするためのいくつかのメモリ読取り動作を、ビデオコーダが実行することを必要とし得る。その結果、上で説明されたパディング動作は、ジャンプが多いメモリアクセスを必要とし得る。たとえば、ビデオコーダが次の利用可能な境界画素を見つけると、ビデオコーダは、値Ｐpadを利用不可能な境界画素に割り当てることができる。次いで、ビデオコーダは、現在の境界画素から次の利用可能な境界画素まで、値Ｐpadを各々の境界画素に割り当てることができ、これは、現在の境界画素から再び開始するメモリアクセスを必要とし得る。そのような行ったり来たりする様式のメモリアクセスパターンは、望ましくないことがある。メモリがデータ位置に関してランダムな方式でアクセスされる場合には特に、メモリアクセス動作は時間がかかり消費電力が多いものであり得る。
【００６７】
本開示の技法によれば、ビデオコーダは、左下の境界画素（たとえば、図２の境界画素Ｐ）から始まり境界画素を順番に通って右上の境界画素（たとえば、図２の境界画素Ｈ）に至る順序に従って境界画素のセットを処理する、パディング動作を実行することができる。パディング動作が利用不可能な境界画素を処理するとき、パディング動作は、パディング動作によって以前処理された境界画素の値に基づいて、利用不可能な境界画素に値を割り当てる。このようにして、ビデオコーダは、次の利用可能な境界画素を見つけるために前方にスキャンする必要がない。同時に、パディング動作は、ビデオデータのコーディング効率にほとんど影響がないことがある。ビデオコーダは、より規則的で一貫したメモリアクセスパターンを使用できるので、ビデオコーダの複雑さを下げることができ、他の技法を実装するビデオコーダと比較して、ビデオコーダの性能を上げることができる。
【００６８】
図４は、本開示の技法を実装するように構成された例示的なビデオエンコーダ２０示すブロック図である。図４は、説明を目的に与えられており、本開示において広く例示され説明される技法を限定するものと見なされるべきではない。説明のために、本開示は、ＨＥＶＣコーディングの状況において、ビデオエンコーダ２０を説明する。しかしながら、本開示の技法は、他のコーディング規格または方法にも適用可能であり得る。
【００６９】
図４の例において、ビデオエンコーダ２０は、複数の機能コンポーネントを含む。ビデオエンコーダ２０の機能コンポーネントは、予測モジュール１００と、残差生成モジュール１０２と、変換モジュール１０４と、量子化モジュール１０６と、逆量子化モジュール１０８と、逆変換モジュール１１０と、復元モジュール１１２と、フィルタモジュール１１３と、復号ピクチャバッファ１１４と、エントロピー符号化モジュール１１６とを含む。予測モジュール１００は、動き推定モジュール１２２と、動き補償モジュール１２４と、イントラ予測モジュール１２６とを含む。他の例では、ビデオエンコーダ２０は、より多数の、より少数の、または異なる機能コンポーネントを含んでよい。さらに、動き推定モジュール１２２と動き補償モジュール１２４は、高度に統合され得るが、図４の例では、説明のために別々に表されている。
【００７０】
ビデオエンコーダ２０は、ビデオデータを受信することができる。ビデオエンコーダ２０は、様々なソースからビデオデータを受信することができる。たとえば、ビデオエンコーダ２０は、ビデオソース１８（図１）または別のソースからビデオデータを受信することができる。ビデオデータは、一連のピクチャを表し得る。ビデオデータを符号化するために、ビデオエンコーダ２０は、ピクチャの各々に対して符号化動作を実行することができる。ピクチャに対して符号化動作を実行することの一部として、ビデオエンコーダ２０は、ピクチャの各スライスに対して符号化動作を実行することができる。スライスに対する符号化動作を実行することの一部として、ビデオエンコーダ２０は、スライス中のツリーブロックに対して符号化動作を実行することができる。
【００７１】
ツリーブロックに対して符号化動作を実行することの一部として、予測モジュール１００は、ツリーブロックのビデオブロックに対して４分木区分を実行して、ビデオブロックを徐々により小さなビデオブロックへと分けることができる。より小さなビデオブロックの各々は、異なるＣＵと関連付けられ得る。たとえば、予測モジュール１００は、ツリーブロックのビデオブロックを４つの等しいサイズのサブブロックに区分し、サブブロックの１つまたは複数を、４つの等しいサイズのサブサブブロックに区分することができ、以下同様である。
【００７２】
ＣＵと関連付けられるビデオブロックのサイズは、８×８サンプルから、最大で６４×６４サンプル以上のツリーブロックのサイズにまで、わたり得る。本開示では、「Ｎ×Ｎ（NxN）」および「Ｎ×Ｎ（N by N）」は、垂直方向の寸法および水平方向の寸法に関するビデオブロックのサンプルの寸法、たとえば、１６×１６（16x16）サンプルまたは１６×１６（16 by 16）サンプルを指すために交換可能に使用され得る。一般に、１６×１６のビデオブロックは、垂直方向に１６個のサンプルを有し（ｙ＝１６）、水平方向に１６個のサンプルを有する（ｘ＝１６）。同様に、Ｎ×Ｎのブロックは、一般に、垂直方向にＮ個のサンプルを有し、水平方向にＮ個のサンプルを有し、Ｎは非負整数値を表す。
【００７３】
さらに、ツリーブロックに対して符号化動作を実行することの一部として、予測モジュール１００は、ツリーブロック用の階層的な４分木データ構造を生成することができる。たとえば、ツリーブロックは、４分木データ構造のルートノードに対応し得る。予測モジュール１００が、ツリーブロックのビデオブロックを４つのサブブロックに区分する場合、ルートノードは、４分木データ構造中に４つの子ノードを有する。子ノードの各々は、サブブロックの１つと関連付けられるＣＵに対応する。予測モジュール１００が、サブブロックの１つを４つのサブサブブロックに区分する場合、サブブロックと関連付けられるＣＵに対応するノードは、サブサブブロックの１つと関連付けられるＣＵに各々が対応する、４つの子ノードを有してよく、以下同様である。
【００７４】
４分木データ構造の各ノードは、対応するツリーブロックまたはＣＵのシンタクスデータ（たとえば、シンタクス要素）を含み得る。たとえば、４分木の中のノードは、そのノードに対応するＣＵのビデオブロックが４つのサブブロックに区分される（すなわち、分割される）かどうかを示す分割フラグを含み得る。ＣＵのシンタクス要素は、再帰的に定義されてよく、ＣＵのビデオブロックがサブブロックに分割されるかどうかに依存してよい。ビデオブロックが区分されていないＣＵは、４分木データ構造におけるリーフノードに対応し得る。コーディングされたツリーブロックは、対応するツリーブロック用の４分木データ構造に基づくデータを含み得る。
【００７５】
ビデオエンコーダ２０は、ツリーブロックの各々の区分されていないＣＵに対して符号化動作を実行することができる。ビデオエンコーダ２０が区分されていないＣＵに対して符号化動作を実行すると、ビデオエンコーダ２０は、区分されていないＣＵの符号化された表現を表すデータを生成することができる。
【００７６】
ＣＵに対して符号化動作を実行することの一部として、予測モジュール１００は、ＣＵの１つまたは複数のＰＵの中で、ＣＵのビデオブロックを区分することができる。ビデオエンコーダ２０およびビデオデコーダ３０は、様々なＰＵサイズをサポートすることができる。特定のＣＵのサイズが２Ｎ×２Ｎであると仮定すると、ビデオエンコーダ２０およびビデオデコーダ３０は、２Ｎ×２ＮまたはＮ×Ｎのイントラ予測ＰＵサイズと、２Ｎ×２Ｎ、２Ｎ×Ｎ、Ｎ×２Ｎ、Ｎ×Ｎ、または同様の対称ＰＵサイズでのインター予測とをサポートすることができる。ビデオエンコーダ２０およびビデオデコーダ３０は、２Ｎ×ｎＵ、２Ｎ×ｎＤ、ｎＬ×２Ｎ、およびｎＲ×２ＮというＰＵサイズに対する非対称区分もサポートすることができる。いくつかの例では、予測モジュール１００は、ＣＵのビデオブロックの辺に正しい角度で接触しない境界に沿ったＣＵのＰＵの間で、ＣＵのビデオブロックを区分するように、幾何学的な区分を実行することができる。
【００７７】
動き推定モジュール１２２および動き補償モジュール１２４は、ＣＵの各ＰＵに対してインター予測を実行することができる。インター予測は、時間圧縮を実現し得る。ＰＵに対してインター予測を実行することによって、動き推定モジュール１２２および動き補償モジュール１２４は、ＣＵと関連付けられるピクチャ以外の参照ピクチャの復号されたサンプルに基づいて、ＰＵの予測データを生成することができる。ＰＵの予測データは、予測されたビデオブロックと様々なシンタクス要素とを含み得る。
【００７８】
さらに、動き推定モジュール１２２がＰＵに関して動き推定動作を実行するとき、動き推定モジュール１２２は、ＰＵの１つまたは複数の動きベクトルを生成することができる。たとえば、スライスは、Ｉスライス、Ｐスライス、またはＢスライスであり得る。動き推定モジュール１２２および動き補償モジュール１２４は、ＰＵがＩスライス中にあるか、Ｐスライス中にあるか、Ｂスライス中にあるかに応じて、ＣＵのＰＵに対して様々な動作を実行することができる。Ｉスライス中では、すべてのＰＵがイントラ予測される。したがって、ＰＵがＩスライス中にある場合、動き推定モジュール１２２および動き補償モジュール１２４は、ＰＵに対してインター予測を実行しない。
【００７９】
ＰＵがＰスライス中にある場合、ＰＵを含むピクチャは、「リスト０」と呼ばれる参照ピクチャのリストと関連付けられる。リスト０中の参照ピクチャの各々は、復号の順序での後続ピクチャのインター予測に使用され得るサンプルを含む。動き推定モジュール１２２が、Ｐスライス中のＰＵに関して動き推定動作を実行するとき、動き推定モジュール１２２は、ＰＵの参照サンプルについて、リスト０中の参照ピクチャを検索することができる。ＰＵの参照サンプルは、ＰＵのビデオブロック中のサンプルに最も密接に対応するサンプルのセット、たとえば、サンプルのブロックであり得る。動き推定モジュール１２２は、種々の評価基準を使用して、参照ピクチャ中のサンプルのセットがどの程度密接にＰＵのビデオブロック中のサンプルに対応するかを判定することができる。たとえば、動き推定モジュール１２２は、絶対値差分和（ＳＡＤ）、２乗差分和（ＳＳＤ）、または他の差分による評価基準によって、参照ピクチャ中のサンプルのセットがどの程度密接に、ＰＵのビデオブロック中のサンプルに対応するかを、判定することができる。
【００８０】
Ｐスライス中のＰＵの参照サンプルを識別した後、動き推定モジュール１２２は、参照サンプルを含む、リスト０中の参照ピクチャを示す参照インデックスと、ＰＵと参照サンプルの間の空間変位を示す動きベクトルとを生成することができる。様々な例において、動き推定モジュール１２２は、動きベクトルを可変の精度で生成することができる。たとえば、動き推定モジュール１２２は、１／４サンプル精度、１／８サンプル精度、または他の分数のサンプル精度で、動きベクトルを生成することができる。分数のサンプル精度の場合、参照サンプル値は、参照ピクチャ中の整数位置のサンプル値から補間され得る。動き推定モジュール１２２は、ＰＵの動き情報を、エントロピー符号化モジュール１１６および動き補償モジュール１２４に出力することができる。ＰＵの動き情報は、参照インデックスとＰＵの動きベクトルとを含み得る。動き補償モジュール１２４は、ＰＵの動き情報を使用して、ＰＵの参照サンプルを識別し取り出すことができる。
【００８１】
ＰＵがＢスライス中にある場合、ＰＵを含むピクチャは、「リスト０」および「リスト１」と呼ばれる参照ピクチャの２つのリストと関連付けられ得る。リスト０中の参照ピクチャの各々は、復号の順序での後続ピクチャのインター予測に使用され得るサンプルを含む。リスト１中の参照ピクチャは、復号の順序ではピクチャの前に現れるが、提示の順序ではピクチャの後に現れる。いくつかの例では、Ｂスライスを含むピクチャは、リスト０とリスト１の組合せである、リストの組合せと関連付けられ得る。
【００８２】
さらに、ＰＵがＢスライス中にある場合、動き推定モジュール１２２は、ＰＵについての単方向予測または双方向予測を実行することができる。動き推定モジュール１２２が、ＰＵについての単方向予測を実行するとき、動き推定モジュール１２２は、ＰＵの参照サンプルについて、リスト０またはリスト１の参照ピクチャを検索することができる。動き推定モジュール１２２は次いで、参照サンプルを含む、リスト０またはリスト１中の参照ピクチャを示す参照インデックスと、ＰＵと参照サンプルの間の空間変位を示す動きベクトルとを生成することができる。動き推定モジュール１２２は、ＰＵの動き情報を示すシンタクス要素を、エントロピー符号化モジュール１１６および動き補償モジュール１２４に出力することができる。ＰＵの動き情報は、参照インデックスと、予測方向インジケータと、ＰＵの動きベクトルとを含み得る。予測方向インジケータは、参照インデックスが、リスト０中の参照ピクチャを示すか、リスト１中の参照ピクチャを示すかを示し得る。動き補償モジュール１２４は、ＰＵの動き情報を使用して、ＰＵの参照サンプルを識別し取り出すことができる。
【００８３】
動き推定モジュール１２２が、ＰＵについての双方向予測を実行するとき、動き推定モジュール１２２は、ＰＵの参照サンプルについて、リスト０中の参照ピクチャを検索することができ、また、ＰＵの別の参照サンプルについて、リスト１中の参照ピクチャを検索することができる。動き推定モジュール１２２は次いで、参照サンプルを含む、リスト０およびリスト１中の参照ピクチャを示す参照インデックスと、参照サンプルとＰＵの間の空間変位を示す動きベクトルとを生成することができる。動き推定モジュール１２２は、ＰＵの動き情報を示すシンタクス要素を、エントロピー符号化モジュール１１６および動き補償モジュール１２４に出力することができる。ＰＵの動き情報は、参照インデックスとＰＵの動きベクトルとを含み得る。動き補償モジュール１２４は、動き情報を使用して、ＰＵの参照サンプルを識別し取り出すことができる。
【００８４】
いくつかの例では、動き推定モジュール１２２は、ＰＵの動き情報のフルセットをエントロピー符号化モジュール１１６に出力しない。そうではなく、動き推定モジュール１２２は、別のＰＵの動き情報を参照して、ＰＵの動き情報をシグナリングし得る。たとえば、動き推定モジュール１２２は、ＰＵの動き情報が、隣接するＰＵの動き情報と十分に類似していると判定することができる。この例では、動き推定モジュール１２２は、ＰＵと関連付けられるＣＵの４分木ノードにおいて、ＰＵが隣接ＰＵと同じ動き情報を有することを、ビデオデコーダ３０に対して示す値を示し得る。別の例では、動き推定モジュール１２２は、ＰＵと関連付けられるＣＵと関連付けられた４分木ノードにおいて、隣接するＰＵと動きベクトル差（ＭＶＤ）とを特定し得る。動きベクトル差は、ＰＵの動きベクトルと、示される隣接するＰＵの動きベクトルとの差を示す。ビデオデコーダ３０は、示される隣接するＰＵの動きベクトルと、動きベクトル差とを使用して、ＰＵの動きベクトルを予測することができる。第２のＰＵの動き情報をシグナリングするときに第１のＰＵの動き情報を参照することによって、ビデオエンコーダ２０は、より少数のビットを使用して、第２のＰＵの動き情報をシグナリングすることが可能であり得る。
【００８５】
ＣＵに対して符号化動作を実行することの一部として、イントラ予測モジュール１２６は、ＣＵのＰＵに対してイントラ予測を実行することができる。イントラ予測は、空間圧縮を実現し得る。イントラ予測モジュール１２６がＰＵに対してイントラ予測を実行するとき、イントラ予測モジュール１２６は、同じピクチャ中の他のＰＵの復号されたサンプルに基づいて、ＰＵの予測データを生成することができる。ＰＵの予測データは、予測されたビデオブロックと様々なシンタクス要素とを含み得る。イントラ予測モジュール１２６は、Ｉスライス、Ｐスライス、およびＢスライスの中のＰＵに対して、イントラ予測を実行することができる。
【００８６】
ＰＵに対してイントラ予測を実行するために、イントラ予測モジュール１２６は、複数のイントラ予測モードを使用して、ＰＵの予測データの複数のセットを生成することができる。イントラ予測モジュール１２６が、イントラ予測モードを使用して、ＰＵの予測データのセットを生成するとき、イントラ予測モジュール１２６は、イントラ予測モードと関連付けられる方向に、近隣のＰＵのビデオブロックからＰＵのビデオブロックにわたって、サンプルを延ばすことができる。近隣のＰＵは、ＰＵの上、ＰＵの右上、ＰＵの左上、ＰＵの左、またはＰＵの左下にあり得る。イントラ予測モジュール１２６は、様々な数のイントラ予測モード、たとえば、３５個の方向のイントラ予測モードを使用することができる。イントラ予測モジュール１２６は、様々なイントラ予測動作を実行することができる。たとえば、イントラ予測モジュール１２６は、図６の例示的なイントラ予測動作を実行することができる。
【００８７】
予測モジュール１００は、ＰＵについての、動き補償モジュール１２４によって生成された予測データ、またはＰＵについての、イントラ予測モジュール１２６によって生成された予測データの中から、ＰＵの予測データを選択することができる。いくつかの例では、予測モジュール１００は、予測データのセットのレート／歪みの評価基準に基づいて、ＰＵの予測データを選択する。
【００８８】
予測モジュール１００が、イントラ予測モジュール１２６によって生成された予測データを選択する場合、予測モジュール１００は、ＰＵの予測データを生成するのに使用されたイントラ予測モード、すなわち、選択されたイントラ予測モードをシグナリングすることができる。予測モジュール１００は、選択されたイントラ予測モードを様々な方法でシグナリングすることができる。たとえば、選択されたイントラ予測モードは、隣接するＰＵのイントラ予測モードと同じであることがあり得る。言い換えると、隣接するＰＵのイントラ予測モードは、現在のＰＵに対して最もあり得るモードであり得る。したがって、予測モジュール１００は、選択されたイントラ予測モードが隣接するＰＵのイントラ予測モードと同じであることを示すための、シンタクス要素を生成することができる。
【００８９】
予測モジュール１００がＣＵのＰＵの予測データを選択した後、残差生成モジュール１０２は、ＣＵのビデオブロックからＣＵのＰＵの予測データの予測されたビデオブロックを差し引くことによって、ＣＵの残差データを生成することができる。ＣＵの残差データは、ＣＵのビデオブロック中のサンプルの様々なサンプル成分に対応する、２Ｄ残差ビデオブロックを含み得る。たとえば、残差データは、ＣＵのＰＵの予測されたビデオブロック中のサンプルの輝度成分と、ＣＵの元のビデオブロック中のサンプルの輝度成分との差に対応する、残差ビデオブロックを含み得る。加えて、ＣＵの残差データは、ＣＵのＰＵの予測されたビデオブロック中のサンプルのクロミナンス成分と、ＣＵの元のビデオブロック中のサンプルのクロミナンス成分との差に対応する、残差ビデオブロックを含み得る。
【００９０】
予測モジュール１００は、４分木区分を実行して、ＣＵの残差ビデオブロックをサブブロックへと区分することができる。各々の分割されていない残差ビデオブロックは、ＣＵの異なるＴＵと関連付けられ得る。ＣＵのＴＵと関連付けられる残差ビデオブロックのサイズおよび位置は、ＣＵのＰＵと関連付けられるビデオブロックのサイズおよび位置に基づいてよく、または基づかなくてよい。「残差４分木」（ＲＱＴ）として知られる４分木構造は、残差ビデオブロックの各々と関連付けられるノードを含み得る。ＣＵのＴＵは、ＲＱＴのリーフノードに対応し得る。
【００９１】
変換モジュール１０４は、ＴＵと関連付けられる残差ビデオブロックに１つまたは複数の変換を適用することによって、ＣＵの各ＴＵのための１つまたは複数の変換係数ブロックを生成することができる。変換係数ブロックの各々は、変換係数の２Ｄ行列であり得る。変換モジュール１０４は、ＴＵと関連付けられる残差ビデオブロックに様々な変換を適用することができる。たとえば、変換モジュール１０４は、離散コサイン変換（ＤＣＴ）、方向変換、または概念的に同様の変換を、ＴＵと関連付けられる残差ビデオブロックに適用することができる。
【００９２】
変換モジュール１０４が、ＴＵと関連付けられる変換係数ブロックを生成した後、量子化モジュール１０６は、変換係数ブロック中の変換係数を量子化することができる。量子化モジュール１０６は、ＣＵと関連付けられるＱＰ値に基づいて、ＣＵのＴＵと関連付けられる変換係数ブロックを量子化することができる。
【００９３】
ビデオエンコーダ２０は、様々な方法でＱＰ値をＣＵと関連付けることができる。たとえば、ビデオエンコーダ２０は、ＣＵと関連付けられるツリーブロックに対して、レート歪み分析を実行することができる。レート歪み分析では、ビデオエンコーダ２０は、ツリーブロックに対して符号化動作を複数回実行することによって、ツリーブロックの複数のコーディングされた表現を生成することができる。ビデオエンコーダ２０がツリーブロックの異なる符号化された表現を生成するとき、ビデオエンコーダ２０は、異なるＱＰ値をＣＵと関連付けることができる。所与のＱＰ値が、ビットレートおよび歪みの評価基準が最小であるツリーブロックのコーディングされた表現でＣＵと関連付けられるとき、ビデオエンコーダ２０は、所与のＱＰ値がＣＵと関連付けられることをシグナリングすることができる。
【００９４】
逆量子化モジュール１０８および逆変換モジュール１１０は、それぞれ、変換係数ブロックに逆量子化と逆変換とを適用して、変換係数ブロックから残差ビデオブロックを復元することができる。復元モジュール１１２は、復元された残差ビデオブロックを、予測モジュール１００によって生成される１つまたは複数の予測されたビデオブロックからの対応するサンプルに追加して、ＴＵと関連付けられる復元されたビデオブロックを生成することができる。このようにＣＵの各ＴＵのビデオブロックを復元することによって、ビデオエンコーダ２０は、ＣＵのビデオブロックを復元することができる。
【００９５】
復元モジュール１１２がＣＵのビデオブロックを復元した後、フィルタモジュール１１３は、デブロッキング動作を実行して、ＣＵと関連付けられるビデオブロックにおけるブロッキングアーチファクトを低減することができる。デブロッキング動作を実行した後、フィルタモジュール１１３は、復号ピクチャバッファ１１４にＣＵの復元されたビデオブロックを記憶することができる。動き推定モジュール１２２および動き補償モジュール１２４は、復元されたビデオブロックを含む参照ピクチャを使用して、後続ピクチャのＰＵに対してインター予測を実行することができる。加えて、イントラ予測モジュール１２６は、復号ピクチャバッファ１１４中の復元されたビデオブロックを使用して、ＣＵと同じピクチャの中の他のＰＵに対してイントラ予測を実行することができる。
【００９６】
エントロピー符号化モジュール１１６は、ビデオエンコーダ２０の他の機能コンポーネントからデータを受信し得る。たとえば、エントロピー符号化モジュール１１６は、量子化モジュール１０６から変換係数ブロックを受信することができ、予測モジュール１００からシンタクス要素を受信することができる。エントロピー符号化モジュール１１６がデータを受信するとき、エントロピー符号化モジュール１１６は、１つまたは複数のエントロピー符号化動作を実行して、エントロピー符号化されたデータを生成することができる。たとえば、ビデオエンコーダ２０は、コンテキスト適応可変長コーディング（ＣＡＶＬＣ）動作、コンテキスト適応バイナリ算術コーディング（ＣＡＢＡＣ）動作、可変対可変（Ｖ２Ｖ）長さコーディング動作、シンタクスベースのコンテキスト適応バイナリ算術コーディング（ＳＢＡＣ）動作、Ｐｒｏｂａｂｉｌｉｔｙ  Ｉｎｔｅｒｖａｌ  Ｐａｒｔｉｔｉｏｎｉｎｇ  Ｅｎｔｒｏｐｙ（ＰＩＰＥ）コーディング動作、または別のタイプのエントロピー符号化動作をデータに対して実行することができる。エントロピー符号化モジュール１１６は、エントロピー符号化されたデータを含むビットストリームを出力することができる。
【００９７】
データに対してエントロピー符号化動作を実行することの一部として、エントロピー符号化モジュール１１６は、コンテキストモデルを選択することができる。エントロピー符号化モジュール１１６がＣＡＢＡＣ動作を実行中である場合、コンテキストモデルは、ビンが特定の値を有する確率を示し得る。ＣＡＢＡＣのコンテキストでは、「ビン」という用語は、シンタクス要素の２値化されたバージョンのビットを指すのに使用される。
【００９８】
エントロピー符号化モジュール１１６がＣＡＶＬＣ動作を実行中である場合、コンテキストモデルは、対応するコードワードに係数をマッピングすることができる。ＣＡＶＬＣにおけるコードワードは、比較的短いコードが優勢シンボルに対応し、比較的長いコードが劣勢シンボルに対応するように構築され得る。適切なコンテキストモデルの選択は、エントロピー符号化動作のコーディング効率に影響を及ぼし得る。
【００９９】
いくつかの例では、ビデオエンコーダ２０は、スライスのＣＵを、複数のタイルに分けることができる。ビデオエンコーダ２０は、ピクチャの２つ以上の水平方向の境界と、ピクチャの２つ以上の垂直方向の境界とを定義することによって、ＣＵをタイルに分けることができる。水平方向の境界は、ピクチャの上部の端と下部の端とを含み得る。垂直方向の境界は、ピクチャの左辺と右辺とを含み得る。ビデオエンコーダがタイルを使用しないとき、ビデオエンコーダ２０は、ラスタースキャンの順序で、フレームのツリーブロックのすべてを符号化することができる。しかしながら、ビデオエンコーダ２０がタイルを使用するとき、ビデオエンコーダは、ラスタースキャンの順序でタイルを符号化することができる。ビデオエンコーダ２０がタイルを符号化するとき、ビデオエンコーダ２０は、ラスタースキャンの順序で、タイル内のツリーブロック（すなわち、ＬＣＵ）を符号化することができる。したがって、ビデオエンコーダ２０は、タイルを使用して、ピクチャのツリーブロックの符号化の順序を変えることができる。
【０１００】
さらに、いくつかの例では、ビデオエンコーダ２０が所与のＣＵを符号化しているとき、ビデオエンコーダ２０は、所与のＣＵおよび空間的に近隣のＣＵが同じタイルに属している限り、空間的に近隣のＣＵと関連付けられる情報を使用して、所与のＣＵに対してイントラ予測を実行することができる。空間的に近隣のＣＵは、所与のＣＵと同じピクチャの中にあるＣＵであり得る。（ビデオエンコーダ２０が所与のＣＵに対してインター予測を実行するとき、ビデオエンコーダ２０はまた、時間的に近隣のＣＵのタイルとは無関係に、時間的に近隣のＣＵからの動き情報と画素情報とを使用することができる。）同様に、いくつかの例では、ビデオエンコーダ２０が所与のＣＵを符号化しているとき、ビデオエンコーダ２０は、所与のＣＵおよび空間的に近隣のＣＵが同じタイルの中にある限り、空間的に近隣のＣＵと関連付けられる情報を使用して、所与のＣＵのシンタクス要素をエントロピー符号化するためのコンテキストを選択することができる。これらの制約によって、ビデオエンコーダ２０は、タイルの２つ以上を並行して符号化することが可能であり得る。
【０１０１】
図５は、本開示の技法を実装し得る、例示的なビデオエンコーダ３０を示すブロック図である。図５は、説明を目的に与えられており、本開示において広く例示され説明される技法に対する限定ではない。説明のために、本開示は、ＨＥＶＣコーディングの状況において、ビデオデコーダ３０を説明する。しかしながら、本開示の技法は、他のコーディング規格または方法にも適用可能であり得る。
【０１０２】
図５の例において、ビデオデコーダ３０は、複数の機能コンポーネントを含む。ビデオデコーダ３０の機能コンポーネントは、エントロピー復号モジュール１５０と、予測モジュール１５２と、逆量子化モジュール１５４と、逆変換モジュール１５６と、復元モジュール１５８と、フィルタモジュール１５９と、復号ピクチャバッファ１６０とを含む。予測モジュール１５２は、動き補償モジュール１６２と、イントラ予測モジュール１６４とを含む。いくつかの例では、ビデオデコーダ３０は、図４のビデオエンコーダ２０に関して説明された符号化パスとは全般に逆の復号パスを実行し得る。他の例では、ビデオデコーダ３０は、より多数の、より少数の、または異なる機能コンポーネントを含み得る。
【０１０３】
ビデオデコーダ３０は、符号化されたビデオデータを備えるビットストリームを受信し得る。ビットストリームは、複数のシンタクス要素を含み得る。ビデオデコーダ３０がビットストリームを受信すると、エントロピー復号モジュール１５０は、ビットストリームに対して解析動作を実行することができる。ビットストリームに対して解析動作を実行した結果として、エントロピー復号モジュール１５０は、ビットストリームからシンタクス要素を抽出することができる。解析動作を実行することの一部として、エントロピー復号モジュール１５０は、ビットストリーム中のエントロピー符号化されたシンタクス要素を、エントロピー復号することができる。予測モジュール１５２、逆量子化モジュール１５４、逆変換モジュール１５６、復元モジュール１５８、およびフィルタモジュール１５９は、ビットストリームから抽出されたシンタクス要素に基づいて復号されたビデオデータを生成する、復元動作を実行することができる。
【０１０４】
上で論じられたように、ビットストリームは、一連のＮＡＬユニットを備え得る。ビットストリームのＮＡＬユニットは、シーケンスパラメータセットＮＡＬユニット、ピクチャパラメータセットＮＡＬユニット、ＳＥＩ  ＮＡＬユニットなどを含み得る。ビットストリームに対して解析動作を実行することの一部として、エントロピー復号モジュール１５０は、シーケンスパラメータセットＮＡＬユニットからのシーケンスパラメータセット、ピクチャパラメータセットＮＡＬユニットからのピクチャパラメータセット、ＳＥＩ  ＮＡＬユニットからのＳＥＩデータなどを抽出してエントロピー復号する、解析動作を実行することができる。
【０１０５】
加えて、ビットストリームのＮＡＬユニットは、コーディングされたスライスＮＡＬユニットを含み得る。ビットストリームに対して解析動作を実行することの一部として、エントロピー復号モジュール１５０は、コーディングされたスライスＮＡＬユニットからコーディングされたスライスを抽出しエントロピー復号する、解析動作を実行することができる。コーディングされたスライスの各々は、スライスヘッダとスライスデータとを含み得る。スライスヘッダは、スライスに関するシンタクス要素を含み得る。スライスヘッダ中のシンタクス要素は、スライスを含むピクチャと関連付けられたピクチャパラメータセットを識別するシンタクス要素を含み得る。エントロピー復号モジュール１５０は、コーディングされたスライスヘッダに対して、ＣＡＶＬＣ復号動作などのエントロピー復号動作を実行して、スライスヘッダを回復することができる。
【０１０６】
コーディングされたスライスＮＡＬユニットからスライスデータを抽出した後、エントロピー復号モジュール１５０は、スライスデータからコーディングされたツリーブロックを抽出することができる。エントロピー復号モジュール１５０は次いで、コーディングされたツリーブロックからコーディングされたＣＵを抽出することができる。エントロピー復号モジュール１５０は、コーディングされたＣＵからシンタクス要素を抽出する、解析動作を実行することができる。抽出されたシンタクス要素は、エントロピー符号化された変換係数ブロックを含み得る。エントロピー復号モジュール１５０は次いで、シンタクス要素に対してエントロピー復号動作を実行することができる。たとえば、エントロピー復号モジュール１５０は、変換係数ブロックに対してＣＡＢＡＣ動作を実行することができる。
【０１０７】
エントロピー復号モジュール１５０が区分されていないＣＵに対して解析動作を実行した後、ビデオデコーダ３０は、区分されていないＣＵに対して復元動作を実行することができる。区分されていないＣＵに対して復元動作を実行するために、ビデオデコーダ３０は、ＣＵの各ＴＵに対して復元動作を実行することができる。ＣＵの各ＴＵに対して復元動作を実行することによって、ビデオデコーダ３０は、ＣＵと関連付けられる残差ビデオブロックを復元することができる。
【０１０８】
ＴＵに対して復元動作を実行することの一部として、逆量子化モジュール１５４は、ＴＵと関連付けられた変換係数ブロックを逆量子化、すなわち、量子化解除することができる。逆量子化モジュール１５４は、ＨＥＶＣのために提案される、またはＨ．２６４復号規格によって定義される逆量子化処理と同様の方式で、変換係数ブロックを逆量子化することができる。逆量子化モジュール１５４は、量子化の程度を判定し、同様に、逆量子化モジュール１５４が適用するべき逆量子化の程度を判定するための、変換係数ブロックのＣＵのためにビデオエンコーダ２０によって計算される量子化パラメータＱＰを使用することができる。
【０１０９】
逆量子化モジュール１５４が変換係数ブロックを逆量子化した後、逆変換モジュール１５６は、変換係数ブロックと関連付けられたＴＵの残差ビデオブロックを生成することができる。逆変換モジュール１５６は、ＴＵの残差ビデオブロックを生成するために、逆変換を変換係数ブロックに対して適用することができる。たとえば、逆変換モジュール１５６は、逆ＤＣＴ、逆整数変換、逆カルーネンレーベ変換（ＫＬＴ）、逆回転変換、逆方向変換、または別の逆変換を変換係数ブロックに適用することができる。
【０１１０】
いくつかの例では、逆変換モジュール１５６は、ビデオエンコーダ２０からのシグナリングに基づいて、変換係数ブロックに適用するべき逆変換を判定することができる。そのような例では、逆変換モジュール１５６は、変換係数ブロックと関連付けられたツリーブロックの４分木のルートノードにおいてシグナリングされた変換に基づいて、逆変換を判定することができる。他の例では、逆変換モジュール１５６は、ブロックサイズ、コーディングモードなど、１つまたは複数のコーディング特性から逆変換を推論することができる。いくつかの例では、逆変換モジュール１５６はカスケード逆変換を適用することができる。
【０１１１】
インター予測を使用してＣＵのＰＵが符号化された場合、動き補償モジュール１６２は、動き補償を実行して、ＰＵの予測されるビデオブロックを生成することができる。動き補償モジュール１６２は、ＰＵの動き情報を使用して、ＰＵの参照サンプルを識別することができる。ＰＵの参照サンプルは、ＰＵとは時間的に異なるピクチャ中にあり得る。ＰＵの動き情報は、動きベクトルと、参照ピクチャインデックスと、予測方向とを含み得る。動き補償モジュール１６２は、ＰＵの参照サンプルを使用して、ＰＵの予測されたビデオブロックを生成することができる。いくつかの例では、動き補償モジュール１６２は、ＰＵに隣接するＰＵの動き情報に基づいて、ＰＵの動き情報を予測することができる。本開示では、ビデオエンコーダ２０がインター予測を使用してＰＵの予測されたビデオブロックを生成する場合、ＰＵはインター予測されたＰＵである。
【０１１２】
いくつかの例では、動き補償モジュール１６２は、補間フィルタに基づく補間を実行することによって、ＰＵの予測されたビデオブロックを精緻化することができる。サブサンプル精度を有する動き補償に使用されるべき補間フィルタの識別子は、シンタクス要素中に含まれ得る。動き補償モジュール１６２は、ＰＵの予測されたビデオブロックの生成中にビデオエンコーダ２０によって使用されるのと同じ補間フィルタを使用して、参照ブロックのサブ整数サンプルに対する補間される値を算出することができる。動き補償モジュール１６２は、受信されたシンタクス情報に従って、ビデオエンコーダ２０によって使用された補間フィルタを判定し、その補間フィルタを使用して予測されるビデオブロックを生成することができる。
【０１１３】
イントラ予測を使用してＰＵが符号化される場合、イントラ予測モジュール１６４は、イントラ予測を実行して、ＰＵの予測されるビデオブロックを生成することができる。たとえば、イントラ予測モジュール１６４は、ビットストリーム中のシンタクス要素に基づいて、ＰＵのイントラ予測モードを判定することができる。ビットストリームは、ＰＵのイントラ予測モードを予測するのにイントラ予測モジュール１６４が使用することができる、シンタクス要素を含み得る。たとえば、イントラ予測モジュール１６４は、図６の例示的なイントラ予測動作を実行することができる。
【０１１４】
いくつかの例では、シンタクス要素は、イントラ予測モジュール１６４が別のＰＵのイントラ予測モードを使用して、現在のＰＵのイントラ予測モードを予測するべきであることを示し得る。たとえば、現在のＰＵのイントラ予測モードが、隣接するＰＵのイントラ予測モードと同じであることがあり得る。言い換えると、隣接するＰＵのイントラ予測モードは、現在のＰＵに対して最もあり得るモードであり得る。したがって、この例では、ビットストリームは、ＰＵのイントラ予測モードが、隣接するＰＵのイントラ予測モードと同じであることを示す、小さなシンタクス要素を含み得る。イントラ予測モジュール１６４は次いで、イントラ予測モードを使用して、空間的に隣接するＰＵのビデオブロックに基づいて、ＰＵの予測データ（たとえば、予測されるサンプル）を生成することができる。
【０１１５】
復元モジュール１５８は、適用可能なとき、ＣＵのＴＵと関連付けられる残差ビデオブロックとＣＵのＰＵの予測されるビデオブロックとを使用して、すなわち、イントラ予測データとインター予測データのいずれかを使用して、ＣＵのビデオブロックを復元することができる。したがって、ビデオデコーダ３０は、ビットストリーム中のシンタクス要素に基づいて、予測されたビデオブロックと残差ビデオブロックとを生成することができ、予測されたビデオブロックと残差ビデオブロックとに基づいて、ビデオブロックを生成することができる。復元モジュール１５８がＣＵのビデオブロックを復元した後、フィルタモジュール１５９は、デブロッキング動作を実行して、ＣＵと関連付けられるブロッキングアーチファクトを低減することができる。
【０１１６】
復号ピクチャバッファ１６０は、ビデオデータのピクチャの復号されたサンプルを記憶することができる。したがって、フィルタモジュール１５９がデブロッキング動作を実行した後、ビデオデコーダ３０は、復号ピクチャバッファ１６０にＣＵのビデオブロックを記憶することができる。復号ピクチャバッファ１６０は、後続の動き補償、イントラ予測、および図１のディスプレイデバイス３２などのディスプレイデバイス上での提示のために、参照ピクチャを与えることができる。たとえば、ビデオデコーダ３０は、復号ピクチャバッファ１６０中のビデオブロックに基づいて、他のＣＵのＰＵに対して、イントラ予測動作またはインター予測動作を実行することができる。
【０１１７】
図６は、例示的なイントラ予測動作２００を示すフローチャートである。ビデオエンコーダ２０またはビデオデコーダ３０のようなビデオコーダは、イントラ予測動作２００を実行することができる。他の例では、ビデオコーダは、イントラ予測動作２００以外のイントラ予測動作を使用することができる。たとえば、他の例では、ビデオコーダは、ビデオコーダがイントラ予測動作２００よりも多数の、少数の、または異なるステップを実行する、イントラ予測動作を実行することができる。
【０１１８】
ビデオコーダがイントラ予測動作２００を開始した後、ビデオコーダは、ＰＵのためのパディング動作を実行することができる（２０２）。ビデオコーダがパディング動作を実行するとき、ビデオコーダは、ＰＵと関連付けられる利用不可能な境界画素に値を割り当てることができる。ビデオコーダは、様々なパディング動作を実行することができる。たとえば、ビデオコーダは、図７の例示的なパディング動作、図８の例示的なパディング動作、図１０の例示的なパディング動作、または別のパディング動作を実行することができる。
【０１１９】
ビデオコーダがパディング動作を実行した後、ビデオコーダは、境界画素に基づいて、ＰＵのイントラ予測されたビデオブロックを生成することができる（２０４）。ビデオコーダは、境界画素の一部またはすべてを使用して、イントラ予測されたビデオブロックを生成することができる。
【０１２０】
図７は、例示的なパディング動作２５０を示すフローチャートである。ビデオエンコーダ２０またはビデオデコーダ３０のようなビデオコーダは、パディング動作２５０を実行することができる。他の例では、ビデオコーダは、パディング動作２５０以外のパディング動作を使用することができる。たとえば、他の例では、ビデオコーダは、ビデオコーダがパディング動作２５０よりも多数の、少数の、または異なるステップを実行する、パディング動作を実行することができる。
【０１２１】
ビデオコーダがパディング動作２５０を開始した後、ビデオコーダは、左下の境界画素を示すように画素インジケータを設定することができる（２５２）。たとえば、図２の例では、ビデオコーダは、境界画素Ｐを示すように画素インジケータを設定することができる。説明を簡単にするために、本開示は、現在の境界画素として、画素インジケータによって示される境界画素を指し得る。
【０１２２】
次に、ビデオコーダは、現在の境界画素が利用可能であるかどうかを判定することができる（２５４）。ビデオコーダは、様々な方法で、現在の境界画素が利用可能であるかどうかを判定することができる。たとえば、ビデオコーダは、図１３の例示的な動作を実行して、現在の境界画素が利用可能かどうかを判定することができる。
【０１２３】
現在の境界画素が利用可能ではない（２５４の「いいえ」）と判定したことに応答して、ビデオコーダは、デフォルト値を現在の境界画素に割り当てることができる（２５６）。現在の境界画素は左下の境界画素なので、ビデオコーダは、左下の境界画素が利用可能かどうかを判定し、左下の境界画素が利用可能ではないと判定したことに応答して、デフォルト値を左下の境界画素に割り当てることができる。別の例では、ビデオコーダは、左下の境界画素が利用不可能であると判定したことに応答して、次の利用可能な境界画素の値を左下の境界画素に割り当てることができる。
【０１２４】
値を現在の境界画素に割り当てた後、または、現在の境界画素が利用可能である（２５４の「はい」）と判定したことに応答して、ビデオコーダは、次の境界画素を示すように画素インジケータを更新することができる（２５８）。現在の境界画素が左下の境界画素と角の境界画素（たとえば、図２の境界画素Ｒ）との間にある場合、次の境界画素は、現在の境界画素のすぐ上にある。たとえば、図２の例では、現在の境界画素が境界画素Ｐである場合、次の境界画素は境界画素Ｏである。現在の境界画素が境界画素Ｏである場合、次の境界画素は境界画素Ｎであり、以下同様である。現在の画素が角の境界画素である場合、または、角の境界画素と右上の境界画素（たとえば、図２の境界画素Ｈ）との間にある場合、次の境界画素は、現在の境界画素のすぐ右にある。たとえば、図２の例では、現在の境界画素が境界画素Ｒである場合、次の境界画素は境界画素Ａである。現在の境界画素が境界画素Ａである場合、次の境界画素は境界画素Ｂであり、以下同様である。画素インジケータを更新することによって、次の境界画素が現在の境界画素になる。
【０１２５】
画素インジケータを更新した後、ビデオコーダは、現在の境界画素が利用可能であるかどうかを判定することができる（２６０）。現在の境界画素が利用可能ではない（２６０の「いいえ」）と判定したことに応答して、ビデオコーダは、前の境界画素の値を現在の境界画素に割り当てることができる（２６２）。言い換えると、ビデオコーダは、順序に従って現在の境界画素の直前の境界画素の値を、現在の境界画素に割り当てることができる。たとえば、図２の例では、現在の境界画素が境界画素Ｍであり境界画素Ｍが利用不可能である場合、ビデオコーダは、境界画素Ｎの値を境界画素Ｍに割り当てることができる。現在の境界画素が境界画素Ｌであり境界画素Ｌが利用不可能である場合、ビデオコーダは、境界画素Ｍの値を境界画素Ｌに割り当てることができ、以下同様である。ビデオコーダが第１の境界画素の値を第２の境界画素に割り当てるとき、ビデオコーダは、第２の境界画素の実際の値を変えなくてよいが、イントラ予測されたビデオブロックを生成する目的で、第２の境界画素の値として第１の境界画素の値を使用することができる。
【０１２６】
ステップ２６２を実行した後で、または、現在の境界画素が利用可能である（２６０の「はい」）と判定したことに応答して、ビデオコーダは、現在の境界画素が右上の境界画素であるかどうかを判定することができる（２６４）。たとえば、図２の例では、ビデオコーダは、現在の境界画素が境界画素Ｈかどうかを判定することができる。現在の境界画素が右上の境界画素である（２６４の「はい」）と判定したことに応答して、ビデオコーダは、パディング動作２５０を終了することができる。一方、現在の境界画素が右上の境界画素ではない（２６４の「いいえ」）と判定したことに応答して、ビデオコーダは、画素インジケータを再び更新することができる（２５８）。ビデオコーダは次いで、新たな現在の境界画素に関して、ステップ２６０〜２６４を繰返すことができる。
【０１２７】
このようにして、ビデオコーダは、左下の境界画素から始まり、境界画素を順番に通って右上の境界画素に至る順序に従って、境界画素のセットを処理するパディング動作を実行することができる。パディング動作が利用不可能な境界画素を処理するとき、パディング動作は、パディング動作によって以前処理された画素の値に基づいて、利用不可能な境界画素に値を割り当てる。
【０１２８】
パディング動作２５０と同様の例示的なパディング動作では、（ｘ，ｙ）はビデオブロックの座標を示し、（ｘ−１，ｙ−１）は角の境界画素の座標を示す。（ｘ−１，ｙ−１）が利用不可能である場合、ビデオコーダが利用可能な境界画素に達するまで、ビデオコーダは、左から右へ、上側の予測因子を確認することができる。利用可能な境界画素が座標（ｘ＋ｄ，ｙ−１）を有する場合、ビデオコーダは、（ｘ＋ｄ，ｙ−１）における境界画素の値を、（ｘ−１，ｙ−１）から（ｘ＋ｄ−１，ｙ−１）までのすべての境界画素に割り当てることができる。それ以外の場合、（ｘ−１，ｙ−１）における境界画素が利用可能であれば、ビデオコーダは変数ｄを−１に設定し、次の擬似コードを実行することができる。
【数５】
0005774780.tif 000006
【０１２９】
上の擬似コードでは、Ｎはビデオブロックの幅を示し得る。加えて、ビデオコーダは、（ｘ−１，ｙ）における境界画素が利用可能かどうかを判定することができる。（ｘ−１，ｙ）における境界画素が利用可能ではない場合、ビデオコーダが利用可能な境界画素に達するまで、ビデオコーダは、上から下へ、左側の予測因子を確認することができる。利用可能な境界画素が座標（ｘ−１，ｙ＋ｄ）を有する場合、ビデオコーダは、（ｘ−１，ｙ＋ｄ）における境界画素の値を、（ｘ−１，ｙ）から（ｘ−１，ｙ＋ｄ−１）までのすべての境界画素に割り当てることができる。それ以外の場合、（ｘ−１，ｙ）における境界画素が利用可能であれば、ビデオコーダは変数ｄを０に設定し、次の擬似コードを実行することができる。
【数６】
0005774780.tif 000007
【０１３０】
図７の例では、ｘ＝−１、ｙ＝ｎＳ×２−２．．．−１に対して、ｐ［ｘ，ｙ］が利用不可能な境界画素である場合、ビデオコーダは、ｐ［ｘ，ｙ］の値をｐ［ｘ，ｙ＋１］の値で置き換えることができる。ｘ＝０．．ｎＳ×２−１，ｙ−１に対して、ｐ［ｘ，ｙ］が利用不可能な境界画素である場合、ｐ［ｘ，ｙ］の値をｐ［ｘ−１，ｙ］の値で置き換える。ｎＳは、イントラ予測されたビデオブロックの幅または高さに等しく、ｐは、サンプルの二次元配列であり、ｐ［０，０］は、イントラ予測されたビデオブロックの左上の輝度サンプルである。
【０１３１】
図８は、図７の例示的なパディング動作が境界画素の中を進む順序を示す、概念図である。図８の例に示されるように、パディング動作は、左下の境界画素において開始し、角の境界画素に向かって上に進み、次いで右上の境界画素に向かって右に進む。
【０１３２】
図９は、例示的なパディング動作３００を示すフローチャートである。ビデオエンコーダ２０またはビデオデコーダ３０のようなビデオコーダは、パディング動作３００を実行することができる。他の例では、ビデオコーダは、パディング動作３００以外のパディング動作を使用することができる。たとえば、他の例では、ビデオコーダは、ビデオコーダがパディング動作３００よりも多数の、少数の、または異なるステップを実行する、パディング動作を実行することができる。
【０１３３】
ビデオコーダがパディング動作３００を開始した後、ビデオコーダは、分割点を示すように第１の画素インジケータと第２の画素インジケータとを設定することができる（３０２）。分割点は、境界画素を２つのセグメントに分けることができる。セグメントの一方は、分割点の上および右にある境界画素を含み得る。セグメントの他方は、分割点の下および左にある境界画素を含み得る。
【０１３４】
分割点は、様々な境界画素の１つであり得る。たとえば、ビデオコーダは、第１の画素インジケータと第２の画素インジケータとを、角の境界画素（たとえば、図２の境界画素Ｒ）に設定することができる。別の例では、ビデオコーダは、第１の画素インジケータと第２の画素インジケータとを、別の境界画素（たとえば、図２の境界画素Ｌ）を示すように設定することができる。
【０１３５】
分割点を示すように第１の画素インジケータと第２の画素インジケータとを設定した後、ビデオコーダは、分割点が利用可能かどうかを判定することができる（３０４）。ビデオコーダは、様々な方法で、分割点が利用可能であるかどうかを判定することができる。たとえば、ビデオコーダは、図１３の例示的な動作を実行して、分割点が利用可能かどうかを判定することができる。
【０１３６】
分割点が利用可能ではない（３０４の「いいえ」）と判定したことに応答して、ビデオコーダは、分割点の値を導出することができる（３０６）。ビデオコーダは、様々な方法で分割点の値を導出することができる。たとえば、ビデオコーダは、分割点に隣接する境界画素のいずれかが利用可能かどうかを判定することができる。この例では、分割点に隣接する境界画素の１つが利用可能である場合、ビデオコーダは、隣接する境界画素の値を分割点に割り当てることによって、分割点の値を導出することができる。さらに、この例では、ビデオコーダは、隣接する境界画素のいずれもが利用可能ではない場合、デフォルト値を分割点に割り当てることができる。たとえば、分割点が角の分割点である場合、ビデオコーダは、次の擬似コードを使用して、分割点の値を導出することができる。
【数７】
0005774780.tif 000008
【０１３７】
上の擬似コードでは、ＰL1は、角の境界画素の下の境界画素の値を示すことができ、Ｐpadは、角の境界画素に割り当てられるべき導出された値を示すことができ、ＰA1は、角の境界画素の右の境界画素の値を示すことができる。角の境界画素、および、角の境界画素の下の境界画素と角の境界画素の右の境界画素との両方が、利用不可能である場合、このような場合はまれにしか起こり得ないので、角の境界画素に対してデフォルト値を使用することは、コーディング性能にほとんど影響を及ぼし得ない。
【０１３８】
分割点の値を導出した後、または、分割点が利用可能である（３０４の「はい」）と判定した後、ビデオコーダは、第１の画素インジケータによって示された境界画素の下または左にある境界画素を示すように、第１の画素インジケータを更新することができる（３０８）。説明を簡単にするために、本開示は、第１の画素インジケータによって示される境界画素を、第１の現在の境界画素と呼ぶことがある。たとえば、図２の例では、第１の現在の境界画素が境界画素Ｂである場合、ビデオコーダは、境界画素Ａを示すように第１の画素インジケータを更新することができる。第１の現在の境界画素が境界画素Ｒである場合、ビデオコーダは、境界画素Ｉを示すように第１の画素インジケータを更新することができる。第１の現在の境界画素が境界画素Ｉである場合、ビデオコーダは、境界画素Ｊを示すように第１の画素インジケータを更新することができる。
【０１３９】
第１の画素インジケータを更新した後、ビデオコーダは、第１の現在の境界画素が利用可能であるかどうかを判定することができる（３１０）。ビデオコーダは、様々な方法で、第１の現在の境界画素が利用可能であるかどうかを判定することができる。たとえば、ビデオコーダは、図１３の例示的な動作を実行して、第１の現在の境界画素が利用可能かどうかを判定することができる。
【０１４０】
第１の現在の境界画素が利用不可能である（３１０の「いいえ」）と判定したことに応答して、ビデオコーダは、前の境界画素の値を第１の現在の境界画素に割り当てることができる（３１２）。たとえば、図２の例では、第１の現在の境界画素が境界画素Ｉであり境界画素Ｉが利用不可能である場合、ビデオコーダは、境界画素Ｒの値を境界画素Ｉに割り当てることができる。第１の現在の境界画素が境界画素Ｊであり境界画素Ｊが利用不可能である場合、ビデオコーダは、境界画素Ｉの値を境界画素Ｊに割り当てることができ、以下同様である。
【０１４１】
ビデオコーダがステップ３１０を実行すると、または、第１の現在の境界画素が利用可能である（３１０の「はい」）と判定した後、ビデオコーダは、第１の現在の境界画素が左下の境界画素であるかどうかを判定することができる（３１４）。第１の現在の境界画素が左下の境界画素である（３１４の「はい」）と判定したことに応答して、ビデオコーダは、分割点境界画素の左または下で行われる、境界画素に関するパディング動作３００を終了することができる。しかしながら、第１の現在の境界画素が左下の境界画素ではない（３１４の「いいえ」）と判定したことに応答して、ビデオコーダは、第１の画素インジケータを再び更新し（３０８）、別の境界画素に関してステップ３１０〜３１４を実行することができる。このようにして、パディング動作３００は、分割点境界画素の左または下にある各々の利用不可能な境界画素に、値を割り当てることができる。
【０１４２】
加えて、ステップ３０６で分割点境界画素の値を導出した後、または、分割点が利用可能である（３０４の「はい」）と判定したことに応答して、ビデオコーダは、第２の画素インジケータによって示された境界画素の上または右にある境界画素を示すように、第２の画素インジケータを更新することができる（３１６）。説明を簡単にするために、本開示は、第２の画素インジケータによって示される境界画素を、第２の現在の境界画素と呼ぶことがある。
【０１４３】
第２の画素インジケータを更新した後、ビデオコーダは、第２の現在の境界画素が利用可能であるかどうかを判定することができる（３１８）。ビデオコーダは、様々な方法で、現在の境界画素が利用可能であるかどうかを判定することができる。たとえば、ビデオコーダは、図１３の例示的な動作を実行して、第２の現在の境界画素が利用可能かどうかを判定することができる。
【０１４４】
第２の現在の境界画素が利用不可能である（３１８の「いいえ」）と判定したことに応答して、ビデオコーダは、前の境界画素の値を第２の現在の境界画素に割り当てることができる（３２０）。たとえば、図２の例では、第２の現在の境界画素が境界画素Ｄであり境界画素Ｄが利用不可能である場合、ビデオコーダは、境界画素Ｃの値を境界画素Ｄに割り当てることができる。
【０１４５】
ステップ３２０を実行した後で、または、第２の現在の境界画素が利用可能である（３１８の「はい」）とビデオコーダが判定した後で、ビデオコーダは、第２の現在の境界画素が右上の境界画素であるかどうかを判定することができる（３２２）。第２の現在の境界画素が右上の境界画素であると判定したことに応答して、ビデオコーダは、分割点境界画素の右または上にある境界画素に関するパディング動作３００を終了することができる（３２２の「はい」）。しかしながら、第２の現在の境界画素が右上の境界画素ではない（３２２の「いいえ」）と判定したことに応答して、ビデオコーダは、第２の画素インジケータを更新し（３１６）、別の境界画素に関してステップ３１８〜３２２を実行することができる。このようにして、ビデオコーダは、分割点の上または右にある各境界画素を処理することができる。
【０１４６】
図９の例では、ビデオコーダは、ステップ３０８〜３１４とステップ３１６〜３２２とを並行に実行することができる。他の例では、ビデオコーダは、ステップ３０８〜３１４とステップ３１６〜３２２とを順番に実行することができる。
【０１４７】
図１０は、図９のパディング動作が境界画素の中を進む例示的な順序を示す、概念図である。図１０の例に示されるように、角の境界画素は、分割点境界画素である。ビデオコーダは、角の境界画素の下の境界画素（たとえば、ステップ３０８〜３１４における）と、角の境界画素の右の境界画素（たとえば、ステップ３１６〜３２２）とを同時に処理することができる。図１０の例では、角の境界画素は影が付けられている。角の境界画素が利用不可能である場合、ビデオコーダは、近隣の境界画素３４０のいずれかまたは両方から、角の境界画素の値を導出することができる。
【０１４８】
別の例では、ビデオコーダは、ビデオコーダが利用可能な境界画素を特定するまで、上側の予測因子全体を左から右に確認することができる。ビデオコーダは次いで、角の画素と、角の画素と利用可能な境界画素との間のすべての境界画素とを、利用可能な境界画素の値に設定することができる。この例では、角の画素の下の境界画素が利用不可能である場合、ビデオコーダは、ビデオコーダが利用可能な境界画素を特定するまで、左側の予測因子に沿って上から下に確認することができる。ビデオコーダは次いで、角の画素の下の各境界画素を、利用可能な境界画素の値に設定することができる。
【０１４９】
図１１は、例示的なパディング動作３５０を示すフローチャートである。ビデオエンコーダ２０またはビデオデコーダ３０のようなビデオコーダは、パディング動作３５０を実行することができる。他の例では、ビデオコーダは、パディング動作３５０以外のパディング動作を使用することができる。たとえば、他の例では、ビデオコーダは、ビデオコーダがパディング動作３５０よりも多数の、少数の、または異なるステップを実行する、パディング動作を実行することができる。
【０１５０】
パディング動作３５０では、境界画素は、分割点の複数の候補を含む。分割点の複数の候補は、様々な境界画素の１つを含み得る。たとえば、分割点の複数の候補は、角の境界画素と、角の境界画素と左下の境界画素との間の途中の境界画素と、角の境界画素と右上の境界画素との間の途中の境界画素とを含み得る。別の例では、分割点の複数の候補は、左下の境界画素と右上の境界画素とを含み得る。別の例では、分割点の複数の候補は、角の境界画素のすぐ右の境界画素と、角の境界画素のすぐ下の境界画素とを含み得る。
【０１５１】
別の例では、分割点の複数の候補は、２つの境界画素ＰLXとＰAYとの間のすべての境界画素を含み得る。この例では、ＰLXは、角の境界画素から左下の境界画素までの任意の境界画素であってよく、ＰAYは、角の境界画素から右上の境界画素までの任意の境界画素であってよい。この例では、ビデオコーダは、利用可能な分割点候補に対して、ＰLXからＰAYに向かって、またはＰAYからＰLXに向かって順番に、分割点候補を探索することができる。このようにして利用可能な分割点候補を探索することで、一次元探索に対する探索の複雑さを下げることができる。たとえば、この例では、分割点が左下の境界画素である場合、左下の境界画素において始まり、順番に境界画素を通って右上の境界画素に至る順序に従って境界画素のセットを処理するパディング動作を、ビデオコーダが実行し、パディング動作が利用不可能な境界画素を処理する場合、パディング動作は、パディング動作によって以前処理された境界画素の値に基づいて、利用不可能な境界画素に値を割り当てる。
【０１５２】
別の例では、分割点の複数の候補は、境界画素のすべてを含み得る。この例では、ビデオコーダは、分割点候補全体にわたって、左下の境界画素から右上の境界画素に向かって、またはその逆の向きで、ある利用可能な分割点候補を順番に探索することができる。このようにして利用可能な分割点候補を探索することで、一方向探索に対する探索の複雑さを下げることができる。
【０１５３】
ビデオコーダがパディング動作３５０を開始した後、ビデオコーダは、分割点候補の最初の１つを示すように、分割点インジケータを設定することができる（３５２）。説明を簡単にするために、本開示は、分割点インジケータによって示される分割点候補を、現在の分割点と呼ぶことがある。たとえば、複数の分割点候補が角の境界画素を含む場合、ビデオコーダは、分割点インジケータを角の境界画素に設定することができる。
【０１５４】
分割点候補の１つを示すように分割点インジケータを設定した後、ビデオコーダは、現在の分割点が利用可能かどうかを判定することができる（３５４）。ビデオコーダは、様々な方法で、現在の分割点が利用可能であるかどうかを判定することができる。たとえば、ビデオコーダは、図１３の例示的な動作を実行して、現在の分割点が利用可能かどうかを判定することができる。
【０１５５】
現在の分割点が利用不可能である（３５４の「いいえ」）場合、ビデオコーダは、現在の分割点が確認されるべき分割点候補の最後の１つであるかどうかを判定することができる（３５６）。現在の分割点が分割点候補の最後の１つであると判定したことに応答して、ビデオコーダは、デフォルト値を現在の分割点に割り当てることができる（３５８）。他の例では、ビデオコーダは、デフォルト値を使用する代わりに、近隣の画素の値に基づく値を、現在の分割点に割り当てることができる。
【０１５６】
一方、現在の分割点が分割点候補の最後の１つではないと判定したことに応答して、ビデオコーダは、分割点インジケータが分割点候補の次の１つを示すように、分割点インジケータを更新することができる（３６０）。たとえば、図２の例では、複数の分割点候補は、境界画素Ｌと、境界画素Ｒと、境界画素Ｄとを含み得る。現在の分割点が境界画素Ｌであり境界画素Ｌが利用不可能である場合、ビデオコーダは、分割点インジケータが境界画素Ｒを示すように、分割点インジケータを更新することができる。ビデオコーダは、様々な方法で、利用可能な分割点候補を探索することができる。たとえば、ビデオコーダは、左下の境界画素に最も近い分割点候補から始めて、次いで、右上の境界画素に最も近い分割点候補に向かって、分割点候補全体を探索することができる。
【０１５７】
分割点インジケータを更新した後、ビデオコーダは、現在の分割点が利用可能であるかどうかを再び判定することができる（３５４）。このようにして、ビデオコーダは、分割点候補の１つが利用可能であるとビデオコーダが判定するまで、または、分割点候補のいずれもが利用可能ではないとビデオコーダが判定するまで、またはこれらと逆のことをビデオコーダが判定するまで、分割点候補を処理することができる。
【０１５８】
ステップ３５８を実行した後、または、現在の分割点が利用可能である（３５４の「はい」）と判定した後、ビデオコーダは、現在の分割点を示すように、第１の画素インジケータと第２の画素インジケータとを設定することができる（３６２）。たとえば、現在の分割点が角の境界画素である場合、ビデオコーダは、角の境界画素（たとえば、図２の境界画素Ｒ）を示すように、第１の画素インジケータと第２の画素インジケータとを設定することができる。
【０１５９】
現在の分割点を示すように第１の画素インジケータと第２の画素インジケータとを設定した後、ビデオコーダは、第１の画素インジケータによって示された境界画素の下または左にある境界画素を示すように、第１の画素インジケータを更新することができる（３６４）。説明を簡単にするために、本開示は、第１の画素インジケータによって示される境界画素を、第１の現在の境界画素と呼ぶことがある。たとえば、図２の例では、第１の現在の境界画素が境界画素Ｂである場合、ビデオコーダは、境界画素Ａを示すように第１の画素インジケータを更新することができる。第１の現在の境界画素が境界画素Ｒである場合、ビデオコーダは、境界画素Ｉを示すように第１の画素インジケータを更新することができる。第１の現在の境界画素が境界画素Ｉである場合、ビデオコーダは、境界画素Ｊを示すように第１の画素インジケータを更新することができる。
【０１６０】
第１の画素インジケータを更新した後、ビデオコーダは、第１の現在の境界画素が利用可能であるかどうかを判定することができる（３６６）。ビデオコーダは、様々な方法で、第１の現在の境界画素が利用可能であるかどうかを判定することができる。たとえば、ビデオコーダは、図１３の例示的な動作を実行して、第１の現在の境界画素が利用可能かどうかを判定することができる。
【０１６１】
第１の現在の境界画素が利用不可能である（３６６の「いいえ」）と判定したことに応答して、ビデオコーダは、前の境界画素の値を第１の現在の境界画素に割り当てることができる（３６８）。たとえば、図２の例では、第１の現在の境界画素が境界画素Ｉであり境界画素Ｉが利用不可能である場合、ビデオコーダは、境界画素Ｒの値を境界画素Ｉに割り当てることができる。第１の現在の境界画素が境界画素Ｊであり境界画素Ｊが利用不可能である場合、ビデオコーダは、境界画素Ｉの値を境界画素Ｊに割り当てることができ、以下同様である。
【０１６２】
ビデオコーダが前の境界画素の値を第１の現在の境界画素に割り当てると、または、第１の現在の境界画素が利用可能である（３６６の「はい」）と判定した後、ビデオコーダは、第１の現在の境界画素が左下の境界画素であるかどうかを判定することができる（３７０）。第１の現在の境界画素が左下の境界画素である（３７０の「はい」）と判定したことに応答して、ビデオコーダは、現在の分割点の左または下で行われる、境界画素に関するパディング動作３００を終了することができる。しかしながら、第１の現在の境界画素が左下の境界画素ではない（３７０の「いいえ」）と判定したことに応答して、ビデオコーダは、第１の画素インジケータを再び更新し（３６４）、別の境界画素に関してステップ３６６〜３７０を実行することができる。このようにして、パディング動作３５０は、現在の分割点の左または下にある各々の利用不可能な境界画素に、値を割り当てることができる。
【０１６３】
加えて、ステップ３６２において第１の画素インジケータと第２の画素インジケータとを現在の分割点に設定した後、ビデオコーダは、第２の画素インジケータによって示された境界画素の上または右にある境界画素を示すように、第２の画素インジケータを更新することができる（３７２）。説明を簡単にするために、本開示は、第２の画素インジケータによって示される境界画素を、第２の現在の境界画素と呼ぶことがある。
【０１６４】
第２の画素インジケータを更新した後、ビデオコーダは、第２の現在の境界画素が利用可能であるかどうかを判定することができる（３７４）。ビデオコーダは、様々な方法で、第２の現在の境界画素が利用可能であるかどうかを判定することができる。たとえば、ビデオコーダは、図１３の例示的な動作を実行して、第２の現在の境界画素が利用可能かどうかを判定することができる。
【０１６５】
第２の現在の境界画素が利用不可能である（３７４の「いいえ」）と判定したことに応答して、ビデオコーダは、前の境界画素の値を第２の現在の境界画素に割り当てることができる（３７６）。たとえば、図２の例では、第２の現在の境界画素が境界画素Ｄであり境界画素Ｄが利用不可能である場合、ビデオコーダは、境界画素Ｃの値を境界画素Ｄに割り当てることができる。
【０１６６】
前の境界画素の値を第２の現在の境界画素に割り当てた後、または、第２の現在の境界画素が利用可能である（３７４の「はい」）とビデオコーダが判定した後、ビデオコーダは、第２の現在の境界画素が右上の境界画素であるかどうかを判定することができる（３７８）。第２の現在の境界画素が右上の境界画素であると判定したことに応答して、ビデオコーダは、現在の分割点の右または上にある境界画素に関するパディング動作３００を終了することができる。しかしながら、第２の現在の境界画素が右上の境界画素ではない（３７８の「いいえ」）と判定したことに応答して、ビデオコーダは、第２の画素インジケータを更新し（３７２）、別の境界画素に関してステップ３７４〜３７８を実行することができる。このようにして、ビデオコーダは、分割点境界画素の上または右にある各境界画素を処理することができる。
【０１６７】
図１１の例では、ビデオコーダは、ステップ３６４〜３７０とステップ３７２〜３７８とを並行に実行することができる。他の例では、ビデオコーダは、ステップ３６４〜３７０とステップ３７２〜３７８とを順番に実行することができる。
【０１６８】
図１２は、図１１のパディング動作が境界画素の中を進む例示的な順序を示す、概念図である。図１２の例に示されるように、影が付けられた境界画素は、分割点候補である。図１２の例では、境界画素４００は、選択された分割点であってよく、ビデオコーダは、選択された分割点の下の境界画素（たとえば、図１１のステップ３６４〜３７０における）と、選択された分割点の上および右にある境界画素（たとえば、ステップ３７２〜３７８）とを同時に処理することができる。
【０１６９】
図１３は、境界画素が利用可能かどうかを判定するための例示的な動作４５０を示すフローチャートである。ビデオエンコーダ２０またはビデオデコーダ３０のようなビデオコーダは、動作４５０を実行することができる。他の例では、ビデオコーダは、境界画素が利用可能かどうかを判定するために、動作４５０以外の動作を使用することができる。たとえば、他の例では、ビデオコーダは、ビデオコーダが動作４５０よりも多数の、少数の、または異なるステップを実行する、動作を実行することができる。
【０１７０】
ビデオコーダが動作４５０を開始した後、ビデオコーダは、境界画素が現在のピクチャの境界の外側にあるかどうかを判定することができる（４５２）。現在のピクチャは、ビデオコーダが現在コーディングしているピクチャであり得る。たとえば、ビデオコーダが、ビデオブロックが現在のピクチャの上端または左端に隣接しているＰＵに対して、イントラ予測動作を実行している場合、ビデオブロックの上または左の１つまたは複数の画素は、現在のピクチャの境界の外側にあり得る。境界画素が現在のピクチャの境界の外側にあると判定した（４５２の「はい」）ことに応答して、ビデオコーダは、境界画素が利用不可能であると判定することができる（４５４）。
【０１７１】
境界画素が現在のピクチャの境界の外側にないと判定した（４５２の「いいえ」）ことに応答して、ビデオコーダは、境界画素が現在のスライスまたはタイルの境界の外側にあるかどうか、または、スライスにまたがる／タイルにまたがる予測が許可されていないかどうかを判定することができる（４５６）。現在のスライスまたはタイルは、ビデオコーダが現在コーディングしているスライスまたはタイルであり得る。たとえば、ビデオコーダが、ビデオブロックが現在のスライスまたはタイルの上端または左端に隣接しているＰＵに対して、イントラ予測動作を実行している場合、ビデオブロックの上または左の１つまたは複数の画素は、現在のスライスまたはタイルの境界の外側にあり得る。スライスにまたがる予測が許可される場合、ビデオコーダは、第１のスライス中の画素の値を使用して、第２のスライス中のＣＵのイントラ予測されたビデオブロックを生成することを許可される。境界画素が現在のスライスまたはタイルの境界の外側にあると判定したこと、または、スライス／タイルにまたがる予測が許可されていないと判定したことに応答して（４５６の「はい」）、ビデオコーダは、境界画素が利用不可能であると判定することができる（４５４）。
【０１７２】
しかしながら、境界画素が現在のスライスまたはタイルの外側にないと判定したこと、または、スライスにまたがる／タイルにまたがる予測が許可されていると判定したことに応答して（４５６の「いいえ」）、ビデオコーダは、境界画素がインター予測されたＣＵと関連付けられるかどうかと、制約されたイントラ予測が可能にされるかどうかとを、判定することができる（４５８）。言い換えると、境界画素がインター予測されたＣＵに属し、制約されたイントラ予測が可能にされる場合、境界画素は、利用可能または利用不可能であるとして標識され得る。境界画素がインター予測されたＣＵと関連付けられるビデオブロック中にある場合、境界画素は、インター予測されたＣＵと関連付けられ得る。
【０１７３】
Ｈ．２６４／ＡＶＣでは、インター予測されたスライス中のマクロブロック（ＭＢ）は、インターＭＢとイントラＭＢのいずれかとしてコーディングされ得る。同様に、ＨＥＶＣでは、ＰスライスまたはＢスライス中のＣＵは、インター予測されたＣＵまたはイントラ予測されたＣＵであり得る。イントラＭＢおよびイントラ予測されたＣＵは、近隣のビデオブロックから予測される。加えて、ビデオコーダは、制約されたイントラＭＢをコーディングすることができる。ビデオコーダは、同じスライス中の近隣のイントラＭＢから、制約されたイントラＭＢを生成することができる。本開示の技法によれば、ビデオコーダは、近隣のイントラ予測されたＣＵのビデオブロックから制約されたイントラ予測されたＣＵを生成することができるが、近隣のインター予測されたＣＵのビデオブロックからは生成することができない。インターモードおよび制約されたイントラモードのみでピクチャのグループがコーディングされているかどうかを規定するために、ピクチャパラメータセット（ＰＰＳ）において、ｃｏｎｓｔｒａｉｎｅｄ＿ｉｎｔｒａ＿ｐｒｅｄ＿ｆｌａｇがシグナリングされ得る。
【０１７４】
イントラリフレッシュは、エラー伝搬を減らすために、ビデオエンコーダがイントラＭＢまたはイントラ予測されたＣＵを挿入することを可能にする、エラー回復ツールであり得る。参照ピクチャが失われた場合、ビデオデコーダは、参照ピクチャを使用するインターＭＢまたはインター予測されたＣＵを正確に復号することが不可能であり得る。インターＭＢまたはインター予測されたＣＵがイントラＭＢまたはイントラ予測されたＣＵを予測するために使用される場合、ビデオコーダは、イントラＭＢまたはイントラ予測されたＣＵを復号することが不可能であり得る。したがって、エラーは、イントラＭＢまたはイントラ予測されたＣＵに伝搬し得る。制約されたイントラＭＢおよび制約されたイントラ予測されたＣＵは、インターＭＢまたはインター予測されたＣＵに依存しないので、参照ピクチャの喪失は、ビデオデコーダが制約されたイントラＭＢまたはイントラ予測されたＣＵを復号することを妨げない。したがって、制約されたイントラＭＢまたは制約されたイントラ予測されたＣＵとしてイントラＭＢまたはイントラ予測されたＣＵを復号することで、よりエラー回復力が高くなり得る。
【０１７５】
スケーラブルビデオコーディング（ＳＶＣ：scalable video coding）では、ビデオデコーダは、ビデオデコーダの単一ループの復号設計が原因で、複数の従属レイヤ（同じまたは異なる解像度を有する）を完全には復号できない。この場合、イントラ予測されたベースレイヤ（ＢＬ）モードが使用されるとき、ビデオデコーダは、対応するベースレイヤイントラＭＢが制約されたイントラＭＢとしてコーディングされる場合、エンハンスメントレイヤＭＢのみを正確に復号することができる。それ以外の場合は、ビデオデコーダは、復元された近隣のインターＭＢから、ベースレイヤイントラＭＢを予測する必要があることがあり、この近隣のインターＭＢは、単一ループの復号の場合においてエンハンスメントレイヤを復号するときは、利用可能ではないことがある。
【０１７６】
境界画素がインター予測されたＣＵと関連付けられ、制約されたイントラ予測が可能にされていると判定したことに応答して（４５８の「はい」）、ビデオコーダは、境界画素が利用不可能であると判定することができる（４５４）。一方、境界画素がインター予測されたＣＵと関連付けられず、または制約されたイントラ予測が可能にされていないと判定したことに応答して（４５８の「いいえ」）、ビデオコーダは、境界画素が利用可能であると判定することができる（４６０）。
【０１７７】
上の例では、ビデオコーダは、デフォルト値または前の境界画素の値を、利用不可能な境界画素に割り当てることができる。他の例では、ビデオコーダは、利用不可能な境界画素の値を補間することができる。たとえば、一連の１つまたは複数の利用不可能な境界画素のいずれかの側に、１つまたは複数の利用可能な境界画素がある場合、ビデオコーダは、一連の利用不可能な境界画素のいずれかの側での、利用可能な境界画素の値に基づいて、利用不可能な境界画素の値を補間することができる。利用不可能な境界画素は、Ｕi＝Ａa＋ｉ×（Ａb−Ａa）／（Ｍ＋１）として補間されてよく、ｉは１からＭである。この式では、ＡaおよびＡbは、一連の利用不可能な境界画素のいずれかの側での利用可能な境界画素であり、Ｍは、一連の利用不可能な境界画素の中の利用不可能な境界画素の数であり、Ｕiは、利用不可能な境界画素を示す。上の式では、Ｍは２の累乗ではないことがあるので、分割が必要であり得る。
【０１７８】
Ｍは２の累乗ではないことがあり、分割を避けることが望ましいことがあるので、一連の利用不可能な境界画素を補間するために別の技法が使用され得る。この技法によれば、Ｑ＝Ｆｌｏｏｒ（ｌｏｇ2（Ｍ））、Ｐ＝（１＜＜Ｑ）、かつＲ＝Ｍ−Ｐとする。ビデオコーダは、右側にある利用不可能な境界画素、すなわちＵp+1からＵMの各々を、Ａbの値に設定することができる。Ｕ1からＵPまでの任意の境界画素に対して、
【数８】
0005774780.tif 000009
【０１７９】
である。
【０１８０】
いくつかの例では、一連の１つまたは複数の利用不可能な境界画素のいずれの側にも、利用可能な境界が存在しない。たとえば、連続的な利用不可能な境界画素が、予測因子の終点まで発生することがある。この例では、ビデオエンコーダは、最後の利用可能な境界画素の値を、予測因子の終点まで延ばすことができる。別の例では、連続的な利用不可能な境界画素が、予測因子の始点で発生することがある。この例では、ビデオコーダは、最初の利用可能な境界画素に先行する利用不可能な境界画素の値として、最初の利用可能な境界画素の値を使用することができる。したがって、そのような例では、ビデオコーダは、単純な延長を使用して、利用不可能な参照サンプルの値を生成することができる。
【０１８１】
１つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。機能は、ソフトウェアで実装される場合、１つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶され、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含むデータ記憶媒体または通信媒体などの有形媒体に対応する、コンピュータ可読記憶媒体を含み得る。このようにして、コンピュータ可読媒体は、一般に、（１）非一時的である有形コンピュータ可読記憶媒体、あるいは（２）信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明された技法の実装のための命令、コードおよび／またはデータ構造を取り出すために１つまたは複数のコンピュータあるいは１つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
【０１８２】
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは、命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され、コンピュータによってアクセスされ得る、任意の他の媒体を備え得る。同様に、いかなる接続も適切にコンピュータ可読媒体と称される。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時媒体を含まないが、代わりに非一時的な有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク（disk）およびディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザディスク（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（disk）およびブルーレイディスク（disc）を含み、ディスク（disk）は、通常、データを磁気的に再生し、ディスク（disc）は、データをレーザで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。
【０１８３】
命令は、１つまたは複数のデジタル信号プロセッサ（ＤＳＰ）などの１つまたは複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、あるいは他の等価な集積回路またはディスクリート論理回路によって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造、または本明細書で説明された技法の実装に適した任意の他の構造のいずれかを指し得る。加えて、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用のハードウェアおよび／またはソフトウェアモジュール内で提供されてよく、あるいは複合コーデックに組み込まれてよい。また、本技法は、１つまたは複数の回路または論理要素中で完全に実装され得る。
【０１８４】
本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）、またはＩＣのセット（たとえば、チップセット）を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示される技法を実行するように構成されたデバイスの機能的態様を強調するために、様々なコンポーネント、モジュール、またはユニットが説明されたが、それらのコンポーネント、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要はない。むしろ、上で説明されたように、様々なユニットが、適切なソフトウェアおよび／またはファームウェアとともに、上で説明された１つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられてよく、または相互動作可能なハードウェアユニットの集合によって与えられてよい。
【０１８５】
様々な例が説明されてきた。これらおよび他の例は以下の特許請求の範囲内に入る。
以下に、出願当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］
ビデオデータをコーディングするための方法であって、
左下の境界画素において始まり、順番に境界画素を通って右上の境界画素に至る順序に従って前記境界画素のセットを処理するパディング動作を実行することであって、前記パディング動作が利用不可能な境界画素を処理する場合、前記パディング動作が、前記パディング動作によって以前処理された境界画素の値に基づいて、前記利用不可能な境界画素に値を割り当てる、実行することと、
前記境界画素に基づいて、イントラ予測されたビデオブロックを生成することとを備える、方法。
［Ｃ２］
前記パディング動作を実行することが、
現在の境界画素が利用可能であるかどうか判定することと、
前記順序に従って前記現在の境界画素の直前の境界画素の値を、前記現在の境界画素に割り当てることとを備える、請求項１に記載の方法。
［Ｃ３］
前記現在の境界画素が利用可能かどうか判定することが、前記現在の境界画素がインター予測されたＣＵと関連付けられ、制約されたイントラ予測が可能にされる場合、前記現在の境界画素は利用不可能であると判定することを備える、請求項２に記載の方法。
［Ｃ４］
前記パディング動作を実行することが、
前記左下の境界画素が利用可能であるかどうか判定することと、
前記左下の境界画素が利用不可能であると判定したことに応答して、デフォルト値を前記左下の境界画素に割り当てることとを備える、請求項１に記載の方法。
［Ｃ５］
前記パディング動作を実行することが、
前記左下の境界画素が利用可能であるかどうか判定することと、
前記左下の境界画素が利用不可能であると判定したことに応答して、次の利用可能な境界画素の値を前記左下の境界画素に割り当てることとを備える、請求項１に記載の方法。
［Ｃ６］
前記パディング動作を実行することが、
ｘ＝−１、ｙ＝ｎＳ×２−２．．．−１に対して、ｐ［ｘ，ｙ］が利用不可能な境界画素である場合、ｐ［ｘ，ｙ］の値をｐ［ｘ，ｙ＋１］の値で置き換えることと、
ｘ＝０．．ｎＳ×２−１，ｙ−１に対して、ｐ［ｘ，ｙ］が利用不可能な境界画素である場合、ｐ［ｘ，ｙ］の値をｐ［ｘ−１，ｙ］の値で置き換えることとを備え、
ｎＳが、前記イントラ予測されたビデオブロックの幅または高さに等しく、ｐが、サンプルの２次元配列であり、ｐ［０，０］が、前記イントラ予測されたビデオブロックの左上の輝度サンプルである、請求項１に記載の方法。
［Ｃ７］
符号化処理の間に実行され、前記イントラ予測されたビデオブロックに基づいて符号化されたビデオデータを生成することをさらに備える、請求項１に記載の方法。
［Ｃ８］
前記イントラ予測されたビデオブロックに少なくとも一部基づいて残差データを生成することをさらに備える、請求項７に記載の方法。
［Ｃ９］
復号処理の間に実行され、前記イントラ予測されたビデオブロックに基づいて復号されたビデオデータを生成することをさらに備える、請求項１に記載の方法。
［Ｃ１０］
前記イントラ予測されたビデオブロックと残差ビデオブロックとに少なくとも一部基づいて、復号されたビデオブロックを復元することをさらに備える、請求項９に記載の方法。
［Ｃ１１］
１つまたは複数のプロセッサを備えるビデオコーディング装置であって、前記１つまたは複数のプロセッサが、
左下の境界画素において始まり、順番に境界画素を通って右上の境界画素に至る順序に従って前記境界画素のセットを処理するパディング動作を実行することであって、前記パディング動作が利用不可能な境界画素を処理する場合、前記パディング動作が、前記パディング動作によって以前処理された境界画素の値に基づいて、前記利用不可能な境界画素に値を割り当てることと、
前記境界画素に基づいて、イントラ予測されたビデオブロックを生成することとを行うように構成される、ビデオコーディング装置。
［Ｃ１２］
前記１つまたは複数のプロセッサが
現在の境界画素が利用可能であるかどうか判定し、
前記順序に従って前記現在の境界画素の直前の境界画素の値を前記現在の境界画素に割り当てるように前記パディング動作を実行するように、前記１つまたは複数のプロセッサが構成される、請求項１１に記載のビデオコーディング装置。
［Ｃ１３］
前記１つまたは複数のプロセッサが、前記現在の境界画素がインター予測されたＣＵと関連付けられ、制約されたイントラ予測が可能にされる場合、少なくとも一部、前記現在の境界画素は利用不可能であると判定することによって、前記現在の境界画素が利用可能かどうか判定するように構成される、請求項１２に記載のビデオコーディング装置。
［Ｃ１４］
前記１つまたは複数のプロセッサが
前記左下の境界画素が利用可能であるかどうか判定し、
前記左下の境界画素が利用可能であると判定したことに応答してデフォルト値を前記左下の境界画素に割り当てるように前記パディング動作を実行するように、前記１つまたは複数のプロセッサが構成される、請求項１１に記載のビデオコーディング装置。
［Ｃ１５］
前記１つまたは複数のプロセッサが
前記左下の境界画素が利用可能であるかどうか判定し、
前記左下の境界画素が利用不可能であると判定したことに応答して次の利用可能な境界画素の値を前記左下の境界画素に割り当てるように前記パディング動作を実行するように、前記１つまたは複数のプロセッサが構成される、請求項１１に記載のビデオコーディング装置。
［Ｃ１６］
ｘ＝−１、ｙ＝ｎＳ×２−２．．．−１に対して、ｐ［ｘ，ｙ］が利用不可能な境界画素である場合、ｐ［ｘ，ｙ］の値をｐ［ｘ，ｙ＋１］の値で置き換え、
ｘ＝０．．ｎＳ×２−１，ｙ−１に対して、ｐ［ｘ，ｙ］が利用不可能な境界画素である場合、ｐ［ｘ，ｙ］の値をｐ［ｘ−１，ｙ］の値で置き換えるように、前記パディング動作を実行するように前記１つまたは複数のプロセッサが構成され、
ｎＳが、前記イントラ予測されたビデオブロックの幅または高さに等しく、ｐが、サンプルの２次元配列であり、ｐ［０，０］が、前記イントラ予測されたビデオブロックの左上の輝度サンプルである、請求項１１に記載のビデオコーディング装置。
［Ｃ１７］
ビデオエンコーダを備え、前記１つまたは複数のプロセッサが、前記イントラ予測されたビデオブロックに基づいて符号化されたビデオデータを生成するように構成される、請求項１１に記載のビデオコーディング装置。
［Ｃ１８］
前記１つまたは複数のプロセッサが、前記イントラ予測されたビデオブロックに少なくとも一部基づいて残差データを生成するように構成される、請求項１７に記載のビデオコーディング装置。
［Ｃ１９］
ビデオデコーダを備え、前記１つまたは複数のプロセッサが、前記イントラ予測されたビデオブロックに基づいて復号されたビデオデータを生成するように構成される、請求項１１に記載のビデオコーディング装置。
［Ｃ２０］
前記１つまたは複数のプロセッサが、前記イントラ予測されたビデオブロックおよび残差ビデオブロックに基づいて、復号されたビデオブロックを復元するように構成される、請求項１９に記載のビデオコーディング装置。
［Ｃ２１］
左下の境界画素において始まり、順番に境界画素を通って右上の境界画素に至る順序に従って前記境界画素のセットを処理するパディング動作を実行するための手段であって、前記パディング動作が利用不可能な境界画素を処理する場合、前記パディング動作が、前記パディング動作によって以前処理された境界画素の値に基づいて、前記利用不可能な境界画素に値を割り当てる、手段と、
前記境界画素に基づいて、イントラ予測されたビデオブロックを生成するための手段とを備える、ビデオコーディング装置。
［Ｃ２２］
前記パディング動作を実行するための前記手段が、
現在の境界画素が利用可能かどうかを判定するための手段と、
前記順序に従って前記現在の境界画素の直前の境界画素の値を、前記現在の境界画素に割り当てるための手段とを備える、請求項２１に記載のビデオコーディング装置。
［Ｃ２３］
前記現在の境界画素が利用可能かどうか判定するための前記手段が、前記現在の境界画素がインター予測されたＣＵと関連付けられ、制約されたイントラ予測が可能にされる場合、前記現在の境界画素は利用不可能であると判定するための手段を備える、請求項２２に記載のビデオコーディング装置。
［Ｃ２４］
コンピュータ実行可能命令を記憶する１つまたは複数のコンピュータ可読記憶媒体を備えるコンピュータプログラム製品であって、前記コンピュータ実行可能命令が、実行されると、１つまたは複数のプロセッサに、
左下の境界画素において始まり、順番に境界画素を通って右上の境界画素に至る順序に従って前記境界画素のセットを処理するパディング動作を実行することであって、前記パディング動作が利用不可能な境界画素を処理する場合、前記パディング動作が、前記パディング動作によって以前処理された画素の値に基づいて、前記利用不可能な境界画素に値を割り当てることと、
前記境界画素に基づいて、イントラ予測されたビデオブロックを生成することとを行わせる、コンピュータプログラム製品。
［Ｃ２５］
前記コンピュータ実行可能命令が、前記１つまたは複数のプロセッサに、
現在の境界画素が利用可能であるかどうか判定させ、
前記順序に従って前記現在の境界画素の直前の境界画素の値を、前記現在の境界画素へ割り当てさせる、請求項２４に記載のコンピュータプログラム製品。
［Ｃ２６］
前記コンピュータ実行可能命令が、前記１つまたは複数のプロセッサに、前記現在の境界画素がインター予測されたＣＵと関連付けられ、制約されたイントラ予測が可能にされる場合、前記現在の境界画素は利用不可能であると判定させる、請求項２５に記載のコンピュータプログラム製品。
【図１】
0005774780.tif 000010
【図２】
0005774780.tif 000011
【図３Ａ】
0005774780.tif 000012
【図３Ｂ】
0005774780.tif 000013
【図３Ｃ】
0005774780.tif 000014
【図４】
0005774780.tif 000015
【図５】
0005774780.tif 000016
【図６】
0005774780.tif 000017
【図７】
0005774780.tif 000018
【図８】
0005774780.tif 000019
【図９】
0005774780.tif 000020
【図１０】
0005774780.tif 000021
【図１１】
0005774780.tif 000022
【図１２】
0005774780.tif 000023
【図１３】
0005774780.tif 000024