[0001] 本出願は、2013年7月19日に出願された米国仮特許出願第61/856,637号と、2013年7月22日に出願された米国仮特許出願第61/857,131号と、2013年9月10日に出願された米国仮特許出願第61/876,205号と、2013年9月19日に出願された米国仮特許出願第61/880,087号と、2013年10月8日に出願された米国仮特許出願第61/888,319号と、2013年10月14日に出願された米国仮特許出願第61/890,822号と、2013年10月14日に出願された米国仮特許出願第61/890,844号との利益を主張するもので、その各々の全内容が参照により本明細書に組み込まれる。
[0046] High Efficiency Video Coding(HEVC)のような多くのビデオコーディング規格は、イントラ予測を実施する。一般に、イントラ予測は、現在コーディングされているピクチャ中の参照サンプルに基づいて、現在コーディングされているブロックのための予測ブロックを生成することを伴う。本開示は、現在コーディングされているピクチャを現在のピクチャをと呼ぶことがある。さらに、本開示は、現在コーディングされているブロックを現在のブロックと呼ぶことがある。ビデオコーダは、予測ブロックを生成するために、様々なイントラ予測モードを使用できる。イントラ予測モードは、角度イントラ予測モードと、平面イントラ予測モードと、DCイントラ予測モードとを含み得る。
[0047] ビデオコーダは、予測ブロックを生成するためにイントラ予測を使用するとき、様々なフィルタを使用できる。例えば、ビデオコーダは、現在のブロックの左端および上端に沿って位置する参照サンプルの値に基づいて、予測ブロックのサンプルの値を決定できる。この例では、ビデオコーダが対角イントラ予測モードまたは平面イントラ予測モードを使用するとき、ビデオコーダは、参照サンプル間の差分を減らすために、平滑化フィルタを参照サンプルに適用できる。いくつかの例では、ビデオコーダが、他の状況でも平滑化フィルタを適用することがあり、または無効にすることがある。この平滑化フィルタの強さは、現在のブロックのサイズに依存し得る。さらに、現在のブロックのサイズがより大きいとき、ビデオコーダは、より大きな範囲の対角イントラ予測モードを使用するときに平滑化フィルタを参照サンプルに適用できる。
[0048] さらに、ビデオコーダが予測ブロックを生成するために角度イントラ予測モードを使用するとき、ビデオコーダは、予測ブロックの各々のそれぞれのサンプルに対して、それぞれのサンプルを通る線が参照サンプルの上の行または参照サンプルの左の列と交差する交差点を決定できる。角度イントラ予測モードは、線の角度と方向とを定める。ビデオコーダは、交差点のいずれかの側の参照サンプルに基づいて、補間された参照サンプルの値を決定するために、双線形補間フィルタを使用できる。それぞれの予測されたサンプルの値は、この補間された参照サンプルの値と等しい。このようにして、ビデオコーダは、予測ブロックを生成するために双線形補間を使用できる。
[0049] いくつかの例では、ビデオコーダが予測ブロックを生成するために角度イントラ予測モードを使用するとき、ビデオコーダは、予測ブロックの各々のそれぞれのサンプルに対して、それぞれのサンプルのための分数位置係数(例えば、iFact)を決定できる。さらに、そのような例では、それぞれのサンプルのための分数位置係数がある特定の値(例えば、0)を有しないとき、ビデオコーダは、上で説明されたように、交差点のいずれかの側の参照サンプルにわたって、双線形補間フィルタを使用してそれぞれのサンプルの値を決定できる。それ以外の場合、そのような例では、それぞれのサンプルのための分数位置係数がその特定の値(例えば、0)を有するとき、ビデオコーダは、それぞれのサンプルの値が参照サンプルの1つと等しいと決定できる。
[0050] さらに、ビデオコーダが水平方向の角度イントラ予測モードを使用し、予測ブロックのサイズが32×32より小さく、現在のブロックが変換および量子化迂回モードを使用してコーディングされないとき、ビデオコーダは、予測ブロックのサンプルの上の行に対してエッジフィルタリングを適用できる。いくつかの例では、ビデオコーダが、予測ブロックのサンプルの上の行のルーマサンプルのみに対してエッジフィルタリングを適用できる。同様に、ビデオコーダが垂直方向の角度イントラ予測モードを使用し、予測ブロックのサイズが32×32より小さく、現在のブロックが変換および量子化迂回モードを使用してコーディングされないとき、ビデオコーダは、予測ブロックのサンプルの左の列に対してエッジフィルタリングを適用できる。いくつかの例では、ビデオコーダが、予測ブロックのサンプルの左の列のルーマサンプルのみに対してエッジフィルタリングを適用できる。
[0051] ビデオコーダがDCイントラ予測モードを使用し、予測ブロックのサイズが32×32より小さく、ブロックの成分インデックスが0である(ルーマ)とき、ビデオコーダは、予測ブロックの第1の列に2タップの有限インパルス応答(FIR)フィルタを適用できる。いくつかの例では、ビデオコーダがまた、予測ブロックの最初の(すなわち、一番上の)行に2タップのFIRフィルタを適用できる。ビデオコーダはまた、予測ブロックの角のサンプルに3タップのフィルタを適用できる。
[0052] いくつかの例では、上で言及されたフィルタの1つまたは複数を無効にするのが望ましいことがある。例えば、現在のブロックのサイズおよびイントラ予測モードとは無関係に、平滑化フィルタの適用を無効にするのが望ましいことがある。さらに、分数位置係数の値とは無関係に、双線形補間フィルタを無効にするのが望ましいことがある。加えて、角度イントラ予測モード、予測ブロックのサイズ、並びに変換および量子化迂回モードとは無関係に、エッジフィルタを無効にするのが望ましいことがある。同様に、ビデオコーダがDCイントラ予測モードを使用するときに適用されるフィルタを無効にするのが望ましいことがある。
[0053] 例えば、合成のビデオコンテンツ(例えば、コンピュータで生成されたグラフィックス)は鋭いエッジを含む傾向がある。そのような状況では、予測ブロックを生成するためにイントラ予測を使用するときにフィルタを使用することで、コーディング効率が下がり、より大きなビットストリームをもたらすことがある。言い換えると、フィルタリング動作は、鋭いエッジの両側のサンプルの間の差をぼかし、不正確な予測サンプルをもたらすことがある。従って、コーディング効率を上げるために、これらのフィルタの1つまたは複数を無効にするのが望ましいことがある。
[0054] 本開示の技法は、イントラ予測を使用して予測ブロックを生成するときに、フィルタの適用を無効にするための技法を含む。例えば、本開示の技法のいくつかによれば、ビデオデコーダは、シンタックス要素に基づいて、イントラ予測のために使用される1つまたは複数のフィルタを適応的に無効にできる。さらに、ビデオデコーダは、現在のビデオスライスの現在のブロックのための予測データを生成するために、イントラ予測をパフォーミングできる。このようにして、ビデオデコーダは、予測ブロックを生成するためにイントラ予測を使用するときにフィルタを適用するかどうかを適応的に決定することが可能であり得る。これは、コーディング効率を高め得る
[0055] 別の例では、ビデオエンコーダが、ビットストリームにおいて、予測ブロックを生成するためにイントラ予測を使用するときに1つまたは複数のフィルタを適用するかどうかを決定するためにビデオデコーダが使用し得る1つまたは複数のシンタックス要素をシグナリングできる。1つのそのような例によれば、ビデオデコーダは、第1のシンタックス要素(例えば、filter_disable_flag)の値と第2のシンタックス要素(例えば、transform_skip_flag)の値とを復号できる。この例では、第1のシンタックス要素が、ビデオデータのブロックのイントラ予測のためのフィルタを有効に(enable)するかどうかを表す。第2のシンタックス要素は、予測後の残差信号が変換を伴わずに量子化されるかどうかを指定する。ビデオデコーダは、ブロックをイントラ予測復号できる。ブロックをイントラ予測復号することの一部として、ビデオデコーダは、第1のシンタックス要素の値および第2のシンタックス要素の値に少なくとも一部基づいて、フィルタを有効にするか無効にするかを決定できる。フィルタが有効にされるとき、ビデオデコーダは、ブロックのためのイントラ予測データにフィルタを適用できる。言い換えると、ビデオデコーダは、予測ブロックのサンプルの値を決定するための処理においてフィルタを使用できる。このようにして、ビデオデコーダは、予測ブロックを生成するためにイントラ予測を使用するときにフィルタを適用するかどうかを決定することが可能であり得る。
[0056] 図1は、本開示の技法を利用できる例示的なビデオコーディングシステム10を示すブロック図である。本明細書で使用される「ビデオコーダ」という用語は、ビデオエンコーダとビデオデコーダの両方を総称的に指す。本開示では、「ビデオコーディング」または「コーディング」という用語が、ビデオ符号化またはビデオ復号を総称的に指し得る。図1は、本開示で説明される技法を利用し得る例示的なビデオ符号化および復号システム10を示すブロック図である。本開示で説明される技法は、イントラ予測における適応的なフィルタの使用をシグナリングするための技法を含む。
[0057] 図1に示されているように、ビデオコーディングシステム10は、ソースデバイス12と宛先デバイス14とを含む。ソースデバイス12は符号化されたビデオデータを生成する。従って、ソースデバイス12は、ビデオ符号化デバイスまたはビデオ符号化装置と呼ばれ得る。宛先デバイス14は、ソースデバイス12によって生成された符号化されたビデオデータを復号できる。従って、ビデオコーディングシステム10は、宛先デバイス14によって後の時間に復号されるべき符号化されたビデオデータを生成するソースデバイス12を含む。従って、宛先デバイス14は、ビデオ復号デバイスまたはビデオ復号装置と呼ばれ得る。ソースデバイス12および宛先デバイス14は、ビデオコーディングデバイスまたはビデオコーディング装置の例であり得る。
[0058] ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、モバイルコンピューティングデバイス、ノートブック(例えば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンのような電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス、車内コンピュータなどを含む、広範囲のデバイスを備え得る。場合によっては、ソースデバイス12および宛先デバイス14はワイヤレス通信に対応し得る。
[0059] 宛先デバイス14は、チャネル16を介してソースデバイス12から符号化されたビデオデータを受信できる。言い換えると、ソースデバイス12は、チャネル16を介して宛先デバイス14にビデオデータを提供できる。チャネル16は「リンク」とも呼ばれ得る。いくつかの例では、チャネル16がコンピュータ可読媒体を備え得る。チャネル16は、ソースデバイス12から宛先デバイス14に符号化されたビデオデータを移動することが可能な1つまたは複数の媒体またはデバイスを備え得る。一例で、チャネル16は、ソースデバイス12が符号化されたビデオデータを宛先デバイス14にリアルタイムで直接送信することを可能にする1つまたは複数の通信媒体を備え得る。この例で、ソースデバイス12は、ワイヤレス通信プロトコルのような通信規格に従って符号化されたビデオデータを変調でき、変調されたビデオデータを宛先デバイス14に送信できる。1つまたは複数の通信媒体は、高周波(RF)スペクトルまたは1つもしくは複数の物理伝送線路のような、ワイヤレスおよび/または有線の通信媒体を含み得る。1つまたは複数の通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク(例えば、インターネット)のような、パケットベースネットワークの一部を形成し得る。1つまたは複数の通信媒体は、ソースデバイス12から宛先デバイス14への通信を容易にする、ルータ、スイッチ、基地局、または他の機器を含み得る。
[0060] 別の例では、チャネル16が、ソースデバイス12によって生成された符号化されたビデオデータを記憶する記憶媒体を含み得る。この例で、宛先デバイス14は、例えば、ディスクアクセスまたはカードアクセスを介して、記憶媒体にアクセスし得る。従って、いくつかの例では、符号化されたデータが、出力インターフェース22から記憶デバイスへ出力され得る。同様に、符号化されたデータは、入力インターフェースによって記憶デバイスからアクセスされ得る。記憶媒体(例えば、記憶デバイス)は、Blu−ray(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、または符号化されたビデオデータを記憶するための他の適切なデジタル記憶媒体のような、様々なローカルにアクセスされるデータ記憶媒体を含み得る。従って、チャネル16は、ワイヤレスブロードキャスト送信もしくは有線ネットワーク送信のような一時的媒体、またはハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、Blu−rayディスク、もしくは他のコンピュータ可読媒体のような記憶媒体(すなわち、非一時的記憶媒体)を含み得る。いくつかの例では、ネットワークサーバ(図示されず)が、ソースデバイス12から符号化されたビデオデータを受信でき、例えばネットワーク送信を介して、その符号化されたビデオデータを宛先デバイス14に与えることができる。同様に、ディスクスタンピング施設のような、媒体製造施設のコンピューティングデバイスは、ソースデバイス12から符号化されたビデオデータを受信し、その符号化されたビデオデータを含むディスクを生成できる。従って、様々な例において、チャネル16は、様々な形態の1つまたは複数のコンピュータ可読媒体を含むと理解され得る。
[0061] さらなる例では、チャネル16が、ソースデバイス12によって生成された符号化されたビデオデータを記憶する、ファイルサーバまたは別の中間記憶デバイスを含み得る。この例で、宛先デバイス14は、(例えば、ストリーミングまたはダウンロードを介して)ファイルサーバまたは他の中間記憶デバイスに記憶された符号化されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶することと、符号化されたビデオデータを宛先デバイス14に送信することとが可能なタイプのサーバであり得る。例示的なファイルサーバは、(例えば、ウェブサイト用の)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、ネットワーク接続ストレージ(NAS)デバイス、およびローカルディスクドライブを含む。
[0062] 宛先デバイス14は、インターネット接続のような標準的なデータ接続を通じて、符号化されたビデオデータにアクセスし得る。データ接続の例示的なタイプは、ファイルサーバに記憶された符号化されたビデオデータにアクセスするのに好適な、ワイヤレスチャネル(例えば、Wi−Fi(登録商標)接続)、有線接続(例えば、デジタル加入者線(DSL)、ケーブルモデムなど)、または両方の組合せを含み得る。ファイルサーバからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
[0063] 本開示の技法は、ワイヤレスの適用例または設定に限定されない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、例えば、インターネット(HTTP(DASH)を通じたダイナミック適応ストリーミングのような)を介したストリーミングビデオ送信、データ記憶媒体に記憶するためのビデオデータの符号化、データ記憶媒体に記憶されたビデオデータの復号、または他の用途のような、種々のマルチメディア用途をサポートするビデオコーディングに適用され得る。いくつかの例では、ビデオコーディングシステム10が、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオ電話のような用途をサポートするために、単方向または双方向のビデオ送信をサポートするように構成され得る。
[0064] 図1は例にすぎず、本開示の技法は、符号化デバイスと復号デバイスとの間の任意のデータ通信を必ずしも含むとは限らないビデオコーディング設定(例えば、ビデオ符号化またはビデオ復号)に適用され得る。他の例では、データが、ローカルメモリから取り出されること、ネットワークを通じてストリーミングされることなどが行われる。ビデオ符号化デバイスはデータを符号化し、メモリに記憶でき、および/または、ビデオ復号デバイスはメモリからデータを取り出し、復号できる。多くの例では、符号化および復号が、互いに通信しないが、メモリにデータを符号化し、および/またはメモリからデータを取り出して復号するだけであるデバイスによって行われる。
[0065] 図1の例では、ソースデバイス12が、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。いくつかの例では、出力インターフェース22が、変調器/復調器(モデム)および/または送信機を含み得る。ビデオソース18は、ビデオキャプチャデバイス、例えばビデオカメラ、以前にキャプチャされたビデオデータを含むビデオアーカイブ、ビデオコンテンツプロバイダからビデオデータを受信するビデオフィードインターフェース、および/もしくは、ビデオデータを生成するためのコンピュータグラフィックスシステム、またはそのようなビデオデータのソースの組合せを含み得る。さらなる代替形態として、ビデオソース18は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、または、ライブビデオ、アーカイブされたビデオ、およびコンピュータで生成されたビデオの組合せを生成し得る。
[0066] ビデオエンコーダ20は、ビデオソース18からのビデオデータ(例えば、キャプチャされた、事前にキャプチャされた、またはコンピュータで生成されたビデオ)を符号化できる。いくつかの例では、ソースデバイス12が、出力インターフェース22を介して宛先デバイス14に符号化されたビデオデータを直接送信する。他の例では、符号化されたビデオデータがまた、復号および/または再生のための宛先デバイス14による後のアクセスのために、記憶媒体またはファイルサーバに記憶され得る。本開示の技法の1つまたは複数によれば、ソースデバイス12のビデオエンコーダ20は、イントラ予測のために適応的なフィルタの使用をシグナリングするための技法を適用できる。
[0067] 図1の例では、宛先デバイス14が、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。他の例では、ソースデバイス12および宛先デバイス14が、他のコンポーネントまたは構成を含み得る。例えば、ソースデバイス12は、外部カメラのような外部ビデオソースからビデオデータを受信できる。同様に、宛先デバイス14は、一体型のディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースで接続することがある。
[0068] 入力インターフェース28は、チャネル16を通じて符号化されたビデオデータを受信できる。いくつかの例では、入力インターフェース28が受信機および/またはモデムを含む。ビデオデコーダ30は、符号化されたビデオデータを復号できる。チャネル16を通じて通信される、またはストレージデバイスに提供される符号化されたビデオデータは、ビデオデータを復号する際に、ビデオデコーダ30のようなビデオデコーダが使用するための、ビデオエンコーダ20によって生成される種々のシンタックス要素を含み得る。そのようなシンタックス要素は、通信媒体上で送信され、記憶媒体上に記憶される符号化されたビデオデータとともに含まれてよく、またはファイルサーバを記憶した。従って、いくつかの例では、宛先デバイス14の入力インターフェース28が、情報をチャネル16(例えば、コンピュータ可読媒体)から受信する。チャネル16の情報は、ビデオエンコーダ20によって定義されビデオデコーダ30によっても使用される、ブロックおよび他のコーディングされたユニット、例えば、ピクチャグループ(GOP)の特性および/または処理を記述するシンタックス要素を含む、シンタックス情報を含み得る。
[0069] ディスプレイデバイス32は、復号されたビデオデータを(例えば、ユーザに)表示できる。ディスプレイデバイス32は、宛先デバイス14と一体化され得るか、またはその外部にあり得る。いくつかの例では、宛先デバイス14が、一体化されたディスプレイデバイスを含んでよく、外部ディスプレイデバイスとインターフェースで接続するように構成されてよい。他の例では、宛先デバイス14がディスプレイデバイスであってよい。ディスプレイデバイス32は、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、陰極線管(CRT)ディスプレイ、または別のタイプのディスプレイデバイスのような、種々のディスプレイデバイスを備え得る。
[0070] 図1には示されないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30が各々、オーディオエンコーダおよびデコーダと統合されてよく、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するための、適切なMUX−DEMUXユニット、または他のハードウェアとソフトウェアとを含み得る。MUX−DEMUXユニットは、適切なマルチプレクサプロトコルに準拠し得る。例えば、可能な場合、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)のような他のプロトコルに準拠し得る。
[0071] ビデオエンコーダ20およびビデオデコーダ30は各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理回路、ハードウェア、またはそれらの任意の組合せのような、種々の適切な回路(例えば、可能な場合、エンコーダ回路またはデコーダ回路)のいずれかとして実装され得る。本技法がソフトウェアに部分的に実装される例では、デバイスが、適切な非一時的コンピュータ可読記憶媒体にソフトウェアのための命令を記憶でき、本開示の技法を行うために1つまたは複数のプロセッサを使用してハードウェア内でそれらの命令を実行できる。(ハードウェア、ソフトウェア、ハードウェアおよびソフトウェアの組合せなどを含む)上記のいずれもが、1つまたは複数のプロセッサであると見なされ得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれることがあり、それらのいずれかが、それぞれのデバイス中の複合エンコーダ/デコーダ(CODEC)の一部として組み込まれることがある。ビデオエンコーダ20および/またはビデオデコーダ30を含むデバイスは、集積回路、マイクロプロセッサ、および/または携帯電話のようなワイヤレス通信デバイスを備え得る。
[0072] 本開示は全般に、ビデオエンコーダ20が、ある情報をビデオデコーダ30のような別のデバイスに「シグナリング」することに言及することがある。「シグナリング」という用語は、全般に、圧縮されたビデオデータを復号するために使用されるシンタックス要素および/または他のデータの通信を指し得る。そのような通信は、リアルタイムまたはほぼリアルタイムで発生し得る。代替的に、そのような通信は、符号化の時に符号化されたビットストリームの中でシンタックス要素をコンピュータ可読記憶媒体に記憶するときに発生し得るなど、ある時間の長さにわたって発生することがあり、これらの要素は次いで、この媒体に記憶された後の任意の時間に復号デバイスによって取り出され得る。
[0073] 図1の例示されたシステム10は、一例にすぎない。イントラ予測における適応的なフィルタの使用をシグナリングするための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって行われ得る。一般に、本開示の技法はビデオ符号化デバイスによって行われるが、本技法は、一般に「コーデック」と呼ばれるビデオエンコーダ/デコーダによっても行われ得る。その上、ビデオプロセッサが、本開示の技法の1つまたは複数を行い得る。ソースデバイス12および宛先デバイス14は、ソースデバイス12がコーディングされたビデオデータを宛先デバイス14への送信のために生成するような、コーディングデバイスの例にすぎない。いくつかの例では、デバイス12、14が実質的に対称的な方式で動作し、デバイス12、14の各々がビデオ符号化コンポーネントとビデオ復号コンポーネントとを含むようにできる。
[0074] いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30が、そのスケーラブルビデオコーディング(SVC)拡張と、マルチビュービデオコーディング(MVC)拡張と、MVCベースの3DV拡張とを含む、ISO/IEC MPEG−4 Visualおよび(ISO/IEC MPEG−4 AVCとしても知られる)ITU−T H.264のようなビデオ圧縮規格に従って動作する。ITU−T H.264/MPEG−4(AVC)規格は、Joint Video Team(JVT)として知られる共同パートナーシップの成果としてISO/IEC Moving Picture Experts Group(MPEG)とともにITU−T Video Coding Experts Group(VCEG)によって策定された。いくつかの事例では、H.264/AVCのMVCベース3DV拡張に準拠するどのビットストリームも、H.264/AVCのMVC拡張に準拠するサブビットストリームを常に含む。さらに、H.264/AVCへの3次元ビデオ(3DV)コーディング拡張、すなわちAVCベースの3DVを生成するための取り組みが進行中である。いくつかの態様では、本開示で説明される技法が、H.264規格に概ね準拠するデバイスに適用され得る。H.264規格は、ITU−T Study Groupによる2005年3月付のITU−T勧告H.264、Advanced Video Coding for generic audiovisual servicesに記載されており、本明細書でH.264規格もしくはH.264仕様、またはH.264/AVC規格もしくは仕様と呼ばれることがある。Joint Video Team(JVT)はH.264/MPEG−4 AVCへの拡張に取り組み続けている。他の例では、ビデオエンコーダ20およびビデオデコーダ30が、ITU−T H.261、ISO/IEC MPEG−1 Visual、ITU−T H.262またはISO/IEC MPEG−2 Visual、およびITU−T H.264、ISO/IEC Visualに従って動作し得る。代替的に、ビデオエンコーダ20およびビデオデコーダ30は、他のプロプライエタリ規格もしくは業界規格、またはそのような規格の拡張に従って動作し得る。
[0075] 他の例では、ビデオエンコーダ20およびビデオデコーダ30が、ITU−T Video Coding Experts Group(VCEG)and ISO/IEC Motion Picture Experts Group(MPEG)のJoint Collaboration Team on Video Coding(JCT−VC)によって開発されたHigh Efficiency Video Coding(HEVC)規格に従って動作し得る。いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30が、HEVC Test Model(HM)に準拠し得る。HMは、例えばITU−T H.264/AVCに従う既存のデバイスに対して、ビデオコーディングデバイスのいくつかの追加の機能を仮定する。例えば、H.264は、9つのイントラ予測符号化モードを提供するが、HMは、33個または35個ものイントラ予測符号化モードを提供し得る。本開示の技法は、説明を目的としてHEVCを参照して説明されているが、必ずしも任意の特定のコーディング規格に限定されるとは限らない。
[0076] 「HEVC Working Draft 10」または「WD10」と呼ばれるHEVC規格の最近のドラフトは、文書JCTVC−L1003v34、Bross他、「High efficiency video coding(HEVC)text specification draft 10(for FDIS&Last Call)」、Joint Collaborative Team on Video Coding(JCT−VC)of ITU−T SG16 WP3 and ISO/IEC JTC1/SC29/WG11、第12回会合:ジュネーブ、スイス、2013年1月14〜23日に記載されており、この文書は、http://phenix.int−evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC−L1003−v34.zipからダウンロード可能である。
[0077] HEVC WD10または簡潔に「WD10改訂版」と呼ばれ、Bross他、「Editors’ proposed corrections to HEVC version 1」、Joint Collaborative Team on Video Coding(JCT−VC)of ITU−T SG16 WP3 and ISO/IEC JTC1/SC29/WG11、第13回会合、仁川、韓国、2013年4月に記載されている、別の最近のHEVCのテキスト仕様のドラフトは、http://phenix.int−evry.fr/jct/doc_end_user/documents/13_Incheon/wg11/JCTVC−M0432−v3.zipから入手可能である。HEVC規格の最終的なバージョンは入手可能であり、「HEVC version 1」と呼ばれ得る。さらに、HEVCのためのスケーラブルビデオコーディング拡張と、マルチビューコーディング拡張と、3DV拡張とを作成する作業が進行中である。HEVCのスケーラブルビデオコーディング拡張はSHEVCと呼ばれることがある。HEVCの3DV拡張は、HEVCベースの3DVまたはHEVC−3DVと呼ばれることがある。
[0078] JCT−VCは、HEVC規格を開発し、HEVC規格の範囲の拡張に向かって作業を続けている。HEVC規格の範囲の拡張は、「HEVC Range Extensions」または「JCTVC−M1005−v2」と本明細書で呼ばれる、Flynn、Sole Rojals、およびSuzuki、「High Efficiency Video Coding(HEVC)Range Extensions text specification:Draft 3」、JCTVC−M1005−v2、Joint Collaborative Team on Video Coding(JCT−VC)of ITU−T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11、第13回会合、仁川、韓国、2013年4月18〜26日に記載されている。少なくとも2013年10月14日時点で、JCTVC−M1005は、http://phenix.int−evry.fr/jct/doc_end_user/documents/13_Incheon/wg11/JCTVC−M1005_v2.zipから入手可能である。
[0079] HEVCおよび他のビデオコーディング仕様では、ビデオシーケンスが一般に一連のピクチャを含む。ピクチャは「フレーム」と呼ばれることもある。ピクチャグループ(GOP)は一般に、一連の1つまたは複数のビデオピクチャを備える。GOPは、GOPに含まれるいくつかのピクチャを記述するシンタックスデータを、GOPのヘッダ中、ピクチャの1つまたは複数のヘッダ中、または他の場所に含み得る。
[0080] ピクチャは、SL、SCb、およびSCrと示される3つのサンプルアレイを含み得る。SLは、ルーマサンプルの2次元アレイ(すなわち、ブロック)である。SCbは、Cbクロミナンスサンプルの2次元アレイである。SCrは、Crクロミナンスサンプルの2次元アレイである。クロミナンスサンプルは、本明細書で「クロマ」サンプルとも呼ばれ得る。他の例では、ピクチャが、モノクロームであってよく、ルーマサンプルのアレイのみを含み得る。
[0081] ピクチャの符号化された表現を生成するために、ビデオエンコーダ20はコーディングツリーユニット(CTU)のセットを生成し得る。CTUの各々は、ルーマサンプルのコーディングツリーブロックと、クロマサンプルの2つの対応するコーディングツリーブロックと、それらのコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。3つの別個のカラープレーンを有する1つまたは複数のモノクロームピクチャでは、CTUが、単一のコーディングツリーブロックと、そのコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。コーディングツリーブロックは、サンプルのN×Nのブロックであり得る。CTUは、「ツリーブロック」または「最大コーディングユニット」(LCU)とも呼ばれることがある。このようにして、HMの作業モデルは、ビデオフレームまたはピクチャが、ルーマとクロマの両方のサンプルを含む一連のツリーブロックまたはLCU(「コーディングツリーユニット」とも呼ばれる)に分割され得ることを記述する。ツリーブロックは、H.264規格のマクロブロックと同様の目的を有し得る。
[0082] HEVCのCTUは、H.264/AVCのような他の規格のマクロブロックに広い意味で類似し得る。しかしながら、CTUは、必ずしも特定のサイズには限定されず、1つまたは複数のコーディングユニット(CU)を含み得る。ビットストリーム内のシンタックスデータはLCUのサイズを定義でき、LCUはピクセルの数の点で最大のコーディングユニットである。
[0083] ビデオフレームまたはピクチャは、1つまたは複数のスライスに区画され得る。スライスは、ラスタースキャン順序で連続的に順序付けられた整数個のCTUを含み得る。言い換えると、スライスは、いくつかの連続したツリーブロックを、コーディングの順序で含み得る。いくつかの例では、ピクチャの各スライスが、それぞれのスライスのための符号化モードを記述するスライスシンタックスデータを含み得る。ビデオエンコーダ20は通常、ビデオデータを符号化するために、個々のビデオスライス内のビデオブロックに対して動作する。ビデオブロックは、固定サイズまたは可変サイズを有することがあり、指定されたコーディング規格に応じてサイズが異なり得る。
[0084] コーディングされたCTUを生成するために、ビデオエンコーダ20は、コーディングツリーブロックをコーディングブロックに分割するように、CTUのコーディングツリーブロックに対して4分木区画を再帰的に行うことができ、従って「コーディングツリーユニット」という名称である。コーディングブロックは、サンプルのN×Nのブロックである。CUは、ルーマサンプルアレイとCbサンプルアレイとCrサンプルアレイとを有するピクチャのルーマサンプルのコーディングブロックと、そのピクチャのクロマサンプルの2つの対応するコーディングブロックと、それらのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。3つの別個のカラープレーンを有する1つまたは複数のモノクロームピクチャでは、CUが、単一のコーディングブロックと、そのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。CUは、CUがサイズの区別を有しないことを除いて、H.264規格のマクロブロックと同様の目的を有し得る。
[0085] 従って、いくつかの例では、各ツリーブロックが、4分木に従って1つまたは複数のCUに分割され得る。例えば、ツリーブロックは、(サブCUとも呼ばれる)4つの子ノードに分割されてよく、各子ノードは、今度は親ノードとなり、別の4つの子ノードに分割されてよい。一般に、4分木データ構造は、CUあたり1つのノードを、ツリーブロックに対応するルートノードとともに含む。CUが4つのサブCUに分割される場合、CUに対応するノードは、4つのリーフノードを含み、その各々は、サブCUの1つに対応する。4分木のリーフノードと呼ばれる、最後の分割されていない子ノードは、リーフCU(例えば、コーディングされたビデオブロック)とも呼ばれるコーディングノードを備える。従って、ビデオブロックはCU内のコーディングノードに対応し得る。4分木データ構造の各ノードは、対応するCUのシンタックスデータを与え得る。例えば、4分木中のノードは、そのノードに対応するCUがサブCUに分割されるかどうかを示す分割フラグを含み得る。CUのためのシンタックス要素は、再帰的に定義されてよく、CUがサブCUに分割されるかどうかに依存し得る。CUがさらに分割されない場合、そのCUはリーフCUと呼ばれる。本開示では、たとえ元のリーフCUの明示的な分割がなくても、リーフCUの4つのサブCUもリーフCUと呼ばれる。例えば、16×16のサイズのCUがさらに分割されない場合、4つの8×8サブCUも、16×16CUが決して分割されなくてもリーフCUと呼ばれる。CUのサイズは、コーディングノードのサイズ(すなわち、CUのコーディングブロックのサイズ)に対応し、いくつかの例では、形状が正方形でなければならない。CUのサイズは、8×8ピクセルから、最大で64×64ピクセルまたはそれを超えるツリーブロックのサイズにまで及び得る。コーディングされたビットストリームと関連付けられるシンタックスデータは、最大CU深度と呼ばれる、ツリーブロックが分割され得る最大の回数を定義でき、コーディングノードの最小のサイズも定義できる。それに応じて、ビットストリームは最小コーディングユニット(SCU)を定義することもできる。
[0086] ビデオエンコーダ20は、CUのコーディングブロックを1つまたは複数の予測ブロックに区画できる。予測ブロックは、同じ予測が適用されるサンプルの矩形(すなわち、正方形または非正方形)ブロックである。CUの予測ユニット(PU)は、ルーマサンプルの予測ブロックと、クロマサンプルの2つの対応する予測ブロックと、それらの予測ブロックを予測するために使用されるシンタックス構造とを備え得る。3つの別個のカラープレーンを有する1つまたは複数のモノクロームピクチャでは、PUが、単一の予測ブロックと、その予測ブロックを予測するために使用されるシンタックス構造とを備え得る。ビデオエンコーダ20は、CUの各PUの予測ブロック(例えば、ルーマ予測ブロック、Cb予測ブロック、およびCr予測ブロック)のための予測ブロック(例えば、予測ルーマブロック、予測Cbブロックおよび予測Crブロック)を生成できる。従って、リーフCUは、1つまたは複数のPUを含み得る。一般に、PUは、対応するCUの全てまたは一部分に対応する空間的エリアを表し、そのPUの参照サンプルを取り出すためのデータを含み得る。
[0087] その上、PUは、予測に関するデータを含み得る。言い換えると、PUは、予測処理に関するデータを含み得る。例えば、PUがイントラモード符号化されるとき、PUは、PUのためのイントラ予測モードを記述するデータを含み得る。別の例として、PUがインターモード符号化されるとき、PUは、そのPUのための動きベクトルを定義するデータを含み得る。PUのための動きベクトルを定義するデータは、例えば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの解像度(例えば、1/4ピクセル精度または1/8ピクセル精度)、動きベクトルが指す参照ピクチャ、および/または動きベクトルのための参照ピクチャリスト(例えば、リスト0、リスト1、またはリストC)を記述し得る。
[0088] CUと関連付けられるシンタックスデータは、例えば、1つまたは複数のPUへのCUの区画を記述し得る。区画モードは、CUがスキップモード符号化もしくはダイレクトモードで符号化されるか、イントラ予測モードで符号化されるか、またはインター予測モードで符号化されるかで、異なり得る。PUは、形状が非正方形となるように区画され得る。
[0089] HMは、様々なPUサイズでの予測をサポートする。例えば、いくつかの例では、特定のCUのサイズが2N×2Nであるとすると、HMが、2N×2NまたはN×NのPUサイズでのイントラ予測、および2N×2N、2N×N、N×2N、またはN×Nの対称なPUサイズでのインター予測をサポートする。HMは、また、2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズでのインター予測のための、非対称な区画をサポートし得る。非対称な区画では、CUの一方向が区画されないが、他の方向が25%および75%に区画される。25%の区画に対応するCUの部分は、「n」とそれに続く「Up」、「Down」、「Left」、または「Right」という指示によって示される。従って、例えば、「2N×nU」は、上部の2N×0.5NのPU、および下部の2N×1.5NのPUによって水平に区画される2N×2NのCUを指す。
[0090] 本開示では、「N×N」および「N by N」が、垂直方向および水平方向の寸法の観点からビデオブロックのピクセルの寸法を指すために、例えば、16×16ピクセルまたは16by16ピクセルのように同義で使用され得る。一般に、16×16ブロックは、垂直方向に16ピクセル(y=16)、および水平方向に16ピクセル(x=16)を有する。同様に、N×Nブロックは、一般に、垂直方向にNピクセル、および水平方向にNピクセルを有し、ここでNは、非負の整数値を表す。ブロックのピクセルは、行および列へと並べられ得る。その上、ブロックは、必ずしも、水平方向において垂直方向と同じ数のピクセルを有する必要はない。例えば、ブロックはN×Mピクセルを備えることがあり、ここで、Mは必ずしもNに等しいとは限らない。
[0091] ビデオエンコーダ20は、PUのための予測ブロックを生成するためにイントラ予測またはインター予測を使用できる。ビデオエンコーダ20がPUの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ20は、PUと関連付けられたピクチャの復号されたサンプルに基づいてPUの予測ブロックを生成できる。ビデオエンコーダ20がPUの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ20は、PUと関連付けられたピクチャ以外の1つまたは複数のピクチャの復号されたサンプルに基づいて、PUの予測ブロックを生成できる。いくつかの例では、PUがインターモードで符号化されるとき、PUが、PUのための1つまたは複数の動きベクトルを定義するデータを含み得る。PUのための動きベクトルを定義するデータは、例えば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの解像度(例えば、1/4ピクセル精度または1/8ピクセル精度)、動きベクトルが指す参照ピクチャ、および/または動きベクトルのための参照ピクチャリスト(例えば、リスト0、リスト1、またはリストC)を記述し得る。
[0092] ビデオコーダが予測ブロックを生成するためにイントラ予測を使用するとき、ビデオコーダは、複数の利用可能なイントラ予測モードからのイントラ予測モードに従って、予測ブロックを生成できる。イントラ予測モードは、複数の方向的(すなわち、角度)イントラ予測モードを含み得る。例えば、HEVCのいくつかのバージョンでは、33個の方向的イントラ予測モードがある。方向的イントラ予測モードの各々は、異なる方向に対応する。図2は、例示的なイントラ予測モード方向を示す概念図である。ビデオコーダが方向的イントラ予測モードに従って予測ブロックを生成するとき、ビデオコーダは、予測ブロックの各々のそれぞれのサンプルに対して、方向的イントラ予測モードに対応する方向にそれぞれのサンプルと揃っている参照サンプル(または参照サンプルの重み付けられた組合せ)の値を、それぞれのサンプルに割り当てることができる。ビデオコーダが現在のブロックのための予測ブロックを生成するために方向的(すなわち、角度)イントラ予測モードを使用するとき、ビデオコーダは、角度イントラ予測を行うと言われ得る。
[0093] ビデオエンコーダ20がCUの1つまたは複数のPUのための予測ブロック(例えば、予測ルーマブロック、予測Cbブロック、および予測Crブロック)を生成した後、ビデオエンコーダ20はCUのための1つまたは複数の残差ブロックを生成できる。言い換えると、CUのPUを使用するイントラ予測コーディングまたはインター予測コーディングの後で、ビデオエンコーダ20は、CUのTUに対する残差データを計算できる。PUは、空間領域(ピクセル領域とも呼ばれる)において予測ピクセルデータを生成する方法またはモードを記述するシンタックスデータを備えてよく、TUは、変換、例えば、残差ビデオデータへの離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換の適用後の、変換領域における係数を備えてよい。
[0094] 残差ブロック中の各サンプルは、CUの予測ブロックの1つの中のサンプルと、CUのコーディングブロックの1つの中の対応するサンプルとの差分を示す。例えば、ビデオエンコーダ20は、CUのためのルーマ残差ブロックを生成できる。CUのルーマ残差ブロック中の各サンプルは、CUの予測ルーマブロックの1つの中のルーマサンプルとCUの元のルーマコーディングブロック中の対応するサンプルとの差分を示す。従って、残差データは、符号化されていないピクチャのピクセルと、PUに対応する予測値との間のピクセル差分に対応し得る。加えて、ビデオエンコーダ20は、CUのためのCb残差ブロックを生成できる。CUのCb残差ブロック中の各サンプルは、CUの予測Cbブロックの1つの中のCbサンプルと、CUの元のCbコーディングブロック中の対応するサンプルとの間の差を示し得る。ビデオエンコーダ20はまた、CUのためのCr残差ブロックを生成できる。CUのCr残差ブロック中の各サンプルは、CUの予測Crブロックの1つの中のCrサンプルと、CUの元のCrコーディングブロック中の対応するサンプルとの間の差を示し得る。
[0095] 1つまたは複数のPUを有するリーフCUは、1つまたは複数の変換ユニット(TU)も含み得る。一般に、TUは、変換処理および量子化処理のために使用される。1つまたは複数のPUを有する所与のCUは、1つまたは複数のTUも含み得る。ビデオエンコーダ20は、CUの残差ブロック(例えば、ルーマ残差ブロック、Cb残差ブロック、およびCr残差ブロック)を1つまたは複数の変換ブロック(例えば、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロック)に分解するために、4分木区画を使用できる。変換ブロックは、同じ変換が適用されるサンプルの矩形(例えば、正方形または非正方形)ブロックである。従って、TUは形状が正方形であってよく、またはいくつかの例で、非正方形(例えば、長方形)であってもよい。予測の後に、ビデオエンコーダ20は、PUに対応する残差値を計算できる。残差値は、エントロピーコーディングのためのシリアル化された変換係数を生成するために、TUを使用して変換係数に変換され、量子化され、走査され得るピクセル差分値を備える。
[0096] いくつかの例では、TUが、区画されたLCUについて定義された所与のCU内のPUのサイズに基づいてサイズ決定されるが、常にそうであるとは限らない。TUは通常、PUと同じサイズであり、またはPUよりも小さい。従って、TUは、必ずしもPUのサイズに制限されるとは限らない。むしろ、TUはPUよりも大きくても、または小さくてもよい。イントラコーディングのために、PUは、同じCUのための対応するリーフTUと併置され得る。いくつかの例では、リーフTUの最大サイズが、対応するリーフCUのサイズに対応し得る。
[0097] いくつかの例では、リーフCUが4つのTUに分割されるかどうかを分割フラグが示し得る。次いで、各TUは、さらなるサブTUにさらに分割され得る。TUがさらに分割されないとき、そのTUはリーフTUと呼ばれ得る。いくつかの例では、イントラコーディングのために、リーフCUに属している全てのリーフTUが、同じイントラ予測モードを共有する。すなわち、同じイントラ予測モードが、リーフCUの全てのTUに対して予測される値を計算するために全般に適用される。イントラコーディングの場合、ビデオエンコーダは、イントラ予測モードを使用して、各リーフTUに対する残差値を、TUに対応するCUの一部と元のブロックとの間の差分として計算できる。
[0098] いくつかの例では、CUに対応する残差サンプルが、「残差4分木」(RQT)と呼ばれる4分木構造を使用して、より小さいユニットに再分割され得る。言い換えると、TUは、RQT(TU4分木構造とも呼ばれる)を使用して指定され得る。すなわち、リーフCUのTUはまた、RQTと呼ばれる、それぞれの4分木データ構造と関連付けられ得る。このようにして、リーフCUは、リーフCUがどのようにTUに区画されるかを示す4分木を含み得る。RQTのリーフノードはTUと呼ばれ得る。TU4分木のルートノードは一般にリーフCUに対応するが、CU4分木のルートノードは一般にツリーブロック(またはLCU)に対応する。分割されないRQTのTUはリーフTUと呼ばれ得る。一般に、本開示は、別段に注記されない限り、CUおよびTUという用語を、それぞれ、リーフCUおよびリーフTUを指すために使用する。TUと関連付けられるピクセル差分値は、変換係数を生成するために変換されてよく、その変換係数は量子化されてよい。いくつかの例では、PUがイントラモードで符号化されるとき、PUのためのデータがRQTに含まれてよく、RQTは、PUに対応するTUのためのイントラ予測モードを記述するデータを含み得る。
[0099] CUのTUは、ルーマサンプルの変換ブロックと、クロマサンプルの2つの対応する変換ブロックと、それらの変換ブロックサンプルを変換するために使用されるシンタックス構造とを備え得る。言い換えると、CUの各TUは、ルーマ変換ブロックと、Cb変換ブロックと、Cr変換ブロックとに関連付けられ得る。TUと関連付けられたルーマ変換ブロックは、CUのルーマ残差ブロックのサブブロックであり得る。Cb変換ブロックは、CUのCb残差ブロックのサブブロックであり得る。Cr変換ブロックは、CUのCr残差ブロックのサブブロックであり得る。3つの別個のカラープレーンを有する1つまたは複数のモノクロームピクチャでは、TUが、単一の変換ブロックと、その変換ブロックのサンプルを変換するために使用されるシンタックス構造とを備え得る。このようにして、CUは、コーディングノードと、コーディングノードと関連付けられるPUおよびTUとを含み得る。CUと関連付けられたシンタックスデータは、例えば、4分木に従ってCUを1つまたは複数のTUに区画することも記述し得る。本開示は、「ブロック」という用語を、HEVCの文脈でCU、PU、またはTUのうちのいずれか、または他の規格の文脈で同様のデータ構造(例えば、H.264/AVCのマクロブロックおよびそのサブブロック)を指すために使用し得る。さらに、いくつかの例では、本開示が、CUのコーディングノードを指すために、「ビデオブロック」という用語を使用し得る。いくつかの特定の場合には、本開示がまた、コーディングノード並びにPUおよびTUを含む、ツリーブロック、すなわち、LCUまたはCUを指すために、「ビデオブロック」という用語を使用し得る。
[0100] ビデオエンコーダ20は、TUのルーマ変換ブロックに1回または複数回の変換を適用して、TUのルーマ係数ブロックを生成できる。言い換えると、HEVC規格は、異なるCUに対しては異なり得る、TUに従った変換を可能にする。係数ブロックは、変換係数の2次元アレイであり得る。変換係数は、スカラー量であり得る。ビデオエンコーダ20は、TUのためのCb係数ブロックを生成するために、TUのCb変換ブロックに1回または複数回の変換を適用できる。ビデオエンコーダ20は、TUのためのCr係数ブロックを生成するために、TUのCr変換ブロックに1回または複数回の変換を適用できる。このようにして、ビデオエンコーダ20は、CUのための残差データを含むTUを形成し、次いで、CUのための変換係数を生成するためにTUを変換できる。ビデオエンコーダ20は、CUのための残差データを含むTUを形成し、次いで、CUのための変換係数を生成するためにTUを変換できる。
[0101] 係数ブロック(例えば、ルーマ係数ブロック、Cb係数ブロック、またはCr係数ブロック)を生成した後、ビデオエンコーダ20は、その係数ブロックを量子化できる。言い換えると、変換係数を生成するための任意の変換の後で、ビデオエンコーダ20は、変換係数の量子化を行い得る。量子化は、一般に、変換係数を表すために使用されるデータの量をできるだけ減らすために変換係数が量子化され、さらなる圧縮を実現する処理を指す。量子化処理は、係数の一部または全てと関連付けられるビット深度を低減できる。例えば、nビットの値は、量子化中にmビットの値へと切り捨てられてよく、ここで、nはmよりも大きい。
[0102] 量子化の後で、ビデオエンコーダは、変換係数を走査して、量子化された変換係数を含む2次元行列から1次元ベクトルを生成できる。走査は、アレイの前部により高いエネルギー(従って、より低い周波数)の係数を配置し、アレイの後部により低いエネルギー(従って、より高い周波数)の係数を配置するように設計され得る。いくつかの例では、ビデオエンコーダ20が、エントロピー符号化され得るシリアル化されたベクトルを生成するために、量子化された変換係数を走査するための予め定められた走査順序を利用できる。他の例では、ビデオエンコーダ20が適応走査を行い得る。
[0103] ビデオエンコーダ20が係数ブロックを量子化した後、ビデオエンコーダ20は、量子化された変換係数を示すシンタックス要素をエントロピー符号化できる。例えば、ビデオエンコーダ20は、量子化された変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コーディング(CABAC)を行い得る。例えば、1次元ベクトルを形成するために量子化された変換係数を走査した後に、ビデオエンコーダ20は、例えば、コンテキスト適応型可変長コーディング(CAVLC:context-adaptive variable length coding)、コンテキスト適応型バイナリ算術コーディング(CABAC:context-adaptive binary arithmetic coding)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)、確率間隔区画エントロピー(PIPE:Probability Interval Partitioning Entropy)コーディング、または別のエントロピー符号化方法に従って1次元ベクトルをエントロピー符号化できる。ビデオエンコーダ20は、ビデオデータを復号する際にビデオデコーダ30が使用するための、符号化されたビデオデータと関連付けられたシンタックス要素をエントロピー符号化することもできる。
[0104] CABACを行うために、ビデオエンコーダ20は、コンテキストモデル内のコンテキストを、送信されるべきシンボルに割り当てることができる。コンテキストは、例えば、シンボルの隣接値が0でないかどうかに関し得る。CAVLCを行うために、ビデオエンコーダ20は、送信されるべきシンボルに対する可変長符号を選択できる。VLCの中の符号語は、比較的短い符号が優勢シンボルに対応し、より長い符号が劣勢シンボルに対応するように、構築され得る。このようにして、VLCの使用は、例えば、送信されるべき各シンボルのために等長の符号語を使用するよりも、ビットの節約を達成し得る。確率の決定は、シンボルに割り当てられたコンテキストに基づき得る。
[0105] ビデオエンコーダ20は、コーディングされたピクチャおよび関連付けられるデータの表現を形成するビットのシーケンスを含むビットストリームを出力できる。ビットストリームは、一連のネットワーク抽象化レイヤ(NAL)ユニットを備え得る。NALユニットは、NALユニット中のデータのタイプの指示と、必要に応じてエミュレーション防止ビットが点在するローバイトシーケンスペイロード(RBSP:raw byte sequence payload)の形態でそのデータを含んでいるバイトとを含む、シンタックス構造である。NALユニットの各々は、NALユニットヘッダを含み、RBSPをカプセル化する。NALユニットヘッダは、NALユニットタイプコードを含むシンタックス要素を含み得る。NALユニットのNALユニットヘッダによって指定されるNALユニットタイプコードは、NALユニットのタイプを示す。RBSPは、NALユニット内にカプセル化された整数個のバイトを含んでいるシンタックス構造であり得る。場合によっては、RBSPは0ビットを含む。
[0106] 様々なタイプのNALユニットは、様々なタイプのRBSPをカプセル化できる。例えば、第1のタイプのNALユニットはピクチャパラメータセット(PPS)のためのRBSPをカプセル化でき、第2のタイプのNALユニットはコーディングされたスライスのためのRBSPをカプセル化でき、第3のタイプのNALユニットはSEIのためのRBSPをカプセル化でき、以下同様である。ビデオコーディングデータのためのRBSP(パラメータセットおよびSEIメッセージのためのRBSPでなく)をカプセル化するNALユニットは、ビデオコーディングレイヤ(VCL)NALユニットと呼ばれ得る。
[0107] HEVCおよび他のビデオコーディング規格は様々なタイプのパラメータセットを与える。例えば、ビデオパラメータセット(VPS)は、0個以上のコーディングされたビデオシーケンス(CVS)全体に適用されるシンタックス要素を備えるシンタックス構造である。シーケンスパラメータセット(SPS)は、CVSの全てのスライスに適用される情報を含み得る。SPSは、SPSがアクティブであるときにアクティブであるVPSを識別するシンタックス要素を含み得る。従って、VPSのシンタックス要素は、SPSのシンタックス要素よりも一般的に適用可能であり得る。PPSは、0個以上のコーディングされたピクチャに適用されるシンタックス要素を備えるシンタックス構造である。PPSは、PPSがアクティブであるとき、アクティブであるSPSを識別するシンタックス要素を含み得る。スライスのスライスヘッダは、スライスがコーディングされるときにアクティブであるPPSを示すシンタックス要素を含み得る。
[0108] ビデオデコーダ30は、ビデオエンコーダ20によって生成されたビットストリームを受信できる。加えて、ビデオデコーダ30は、ビットストリームを解析して、ビットストリームからシンタックス要素を取得できる。ビデオデコーダ30は、ビットストリームから取得されたシンタックス要素に少なくとも部分的に基づいて、ビデオデータのピクチャを再構築できる。ビデオデータを再構築するための処理は、全般に、ビデオエンコーダ20によって行われる処理の逆であり得る。例えば、ビデオデコーダ30は、現在のCUのPUのための予測ブロックを決定するために、PUの動きベクトルを使用できる。加えて、ビデオデコーダ30は、現在のCUのTUと関連付けられた係数ブロックを逆量子化できる。ビデオデコーダ30は、現在のCUのTUと関連付けられた変換ブロックを再構築するために、係数ブロックに対して逆変換を行い得る。ビデオデコーダ30は、現在のCUのPUのための予測ブロックのサンプルを現在のCUのTUの変換ブロックの対応するサンプルに加算することによって、現在のCUのコーディングブロックを再構築できる。ピクチャの各CUのためのコーディングブロックを再構築することによって、ビデオデコーダ30はピクチャを再構築できる。
[0109] 本開示の技法の1つまたは複数は、HEVC Range Extensionsに従ったビデオコーディングに関する。言い換えると、本開示の技法の1つまたは複数は、HEVC Range Extensionsとともに使用され得る。本技法の1つまたは複数は、HEVC Range Extensionsにおけるイントラ予測で使用される参照サンプルのための適応的なフィルタ制御を提供し得る。スクリーンコンテンツのコーディングに関する技法も、本開示で説明される。しかしながら、本開示の技法はHEVC規格またはHEVC Range Extensionsに必ずしも限定されず、他のビデオコーディングシステムおよび処理において適用可能であり得る。以下のセクションで、現在のHEVC Range Extensionsのワーキングドラフト仕様(JCTVC−M1005−v2)におけるイントラサンプル予測のために使用されるいくつかのフィルタリング動作が提示される。
[0110] HEVCイントラ予測では、上側および左側の隣接ブロックからすでに再構築されているサンプルが、予測のために使用される。2×幅+2×高さ+1個もの数のサンプルに上り得る隣接参照サンプルが、イントラ予測のための参照サンプルに対して使用される。従って、これらのすでに再構築されているサンプルは、参照サンプルと呼ばれ得る。言い換えると、イントラサンプル予測において、デブロッキングフィルタが予測のために使用される前にすでに再構築されている、ビデオエンコーダ20によってイントラ符号化されるべき、またはビデオデコーダ30によってイントラ復号されるべき、ブロックの上側および左側からの隣接サンプル。すなわち、これらの上側および左側のピクセルは参照サンプルと呼ばれる。参照サンプルは、ループフィルタリングの適用の前に得られる再構築されたサンプルであり得る。例えば、JCTVC−M1005−v2の技法によれば、イントラサンプル予測において、デブロッキングフィルタが予測のために使用される前に、上側および左側からの隣接サンプルが再構築される。
[0111] 図3は、HEVCイントラ予測のためのブロックの例示的な参照サンプルを示す概念図である。言い換えると、図3は、現在のブロックと現在のブロックに対する隣接ブロックとを示す概念図である。図3は、サイズがM(高さ)×N(幅)であるブロックと、左の隣接サンプルおよび上の隣接参照サンプルを含む隣接サンプルとを示す。具体的には、図3は4×4のブロックサイズを示し、(2×幅+2×高さ+1個もの)影付きの隣接サンプルが参照サンプルとして使用され得る。サンプルはPi,jによって示され、ここで0≦i≦(M−1)、0≦j≦(N−1)である。言い換えると、現在のブロックは、行(0,0)から(M−1,0)および列(0,0)から(0,N−1)の中のピクセルを含む。
[0112] 影付きのブロックは、現在のブロックのピクセルを予測するのに利用可能であり得る隣接ピクセル(すなわち、参照サンプル)を表す。図3の例では、イントラ予測のために使用される参照サンプルが、−1≦j≦(2N−1)であるP-1,-jおよび0≦i≦(2M−1)であるPi,-1によって示される。HEVCおよび他のビデオコーディング規格では、1つまたは複数の参照ピクセルが利用可能ではない場合、ビデオコーダが、欠けている参照サンプルを生成するために、特定のパディング処理を使用できる。例えば、隣接ピクセルが(例えば、ピクチャまたはスライス境界において)利用可能でない場合、HEVCが、JCTVC−M1005−v2の8.4.4.2.2項において規定されるように、欠けているサンプルを置き換えるために、特定のパディング処理を使用する。従って、全ての参照サンプルが利用可能であるようにパディング処理が完了していると仮定され得る。
[0113] いくつかのイントラ予測モードでは、双線形補間が予測を形成するために行われる。言い換えると、ビデオコーダが予測ブロックを生成するために特定のイントラ予測モードを使用するとき、ビデオコーダは、予測ブロックの各々のそれぞれのサンプルに対して、参照サンプルのうちの2つの双線形補間に基づいて、それぞれのサンプルの値を決定できる。例えば、ビデオコーダが予測ブロックを生成するために角度イントラ予測モードを使用するとき、ビデオコーダは、予測ブロックの各々のそれぞれのサンプルに対して、それぞれのサンプルを通る線が参照サンプルの上の行または参照サンプルの左の列と交差する交差点を決定できる。角度イントラ予測モードは、線の角度と方向とを定める。ビデオコーダは、交差点のいずれかの側の参照サンプルに基づいて、補間された参照サンプルの値を決定するために、双線形補間フィルタを使用できる。それぞれの予測されたサンプルの値は、この補間された参照サンプルの値と等しい。
[0114] 図4Aは、角度イントラ予測における双線形補間を示す概念図である。図4Aの例では、ビデオコーダが、予測ブロック中のサンプル「X」の値を決定している。サンプル「X」を通る線40は、参照サンプル「A」と参照サンプル「B」の間の位置42において、参照サンプルの上の行と交差する。線40は、実際には予測ブロックまたはピクチャの中に存在しないが、説明のために示されている。従って、ビデオコーダは、位置42に対する値を決定するために、双線形補間フィルタを使用する。サンプル「X」の値は、位置42に対する決定された値に等しく設定される。
[0115] JCTVC−M1005−v2では、双線形補間が式(8−52)および(8−60)によって規定される。式(8−52)および(8−60)を含むJCTVC−M1005−v2のセクション8.4.4.2.6の一部分が以下に転載される。
predModeIntraが18以上である場合、次の順序のステップが適用される。
1.・・・
2.x,y=0...nTbS−1である予測サンプルpredSamples[x][y]の値は、次のように導出される。
a.インデックス変数iIdxおよび分数位置係数iFactは、次のように導出される。
b.iFactの値に応じて、次のことが当てはまる。
− iFactが0に等しくない場合、予測サンプルpredSamples[x][y]の値は、次のように導出される。
− それ以外の場合、予測サンプルpredSamples[x][y]の値は、次のように導出される。
c.predModeIntraが26に等しく(垂直方向)、cIdxが0に等しく、nTbSが32未満であり、cu_transquant_bypass_flagが0に等しいとき、x=0,y=0...nTbS−1として次のフィルタリングが適用される。
それ以外(predModeIntraが18未満である)場合、次の順序のステップが適用される。
1.・・・
2.x,y=0...nTbS−1である予測サンプルpredSamples[x][y]の値は、次のように導出される。
a.インデックス変数iIdxおよび分数位置係数iFactは、次のように導出される。
b.iFactの値に応じて、次のことが当てはまる。
− iFactが0に等しくない場合、予測サンプルpredSamples[x][y]の値は、次のように導出される。
− それ以外の場合、予測サンプルpredSamples[x][y]の値は、次のように導出される。
c.predModeIntraが10に等しく(水平方向)、cIdxが0に等しく、nTbSが32未満であり、cu_transquant_bypass_flagが0に等しいとき、x=0...nTbS−1,y=0として次のフィルタリングが適用される。
[0116] スクリーンコンテンツまたはカメラ以外で生成されたコンテンツは、非常に鋭いエッジを含むことがある。その結果、そのようなコンテンツのための予測値を形成するには、双線形補間は適していないことがある。従って、Chen他、「Non−RCE2:Enhanced angular intra−prediction for screen content coding」、JCTVC−N0183、JCT−VC of ITU−T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11、第14回会合:ウィーン、オーストリア、2013年7月25日〜8月2日(以後、「JCTVC−N0183」)は、参照サンプルのサブセットの分散が閾値より大きいという条件のもとで、iFactが0に等しくないときに、最近傍補間を使用することを提案した。言い換えると、JCTVC−N0183は、ある条件のもとで、1/32ペル精度の補間フィルタを伴わずに、最近傍サンプルの選択を使用することを提案した。1つの手法では、参照サンプルのサブセットの分散が閾値より大きい場合、フィルタリングが無効にされる。イントラ予測の方向とともに、サブセットが決定される(すなわち、サブセット中の参照サンプルが決定される)。言い換えると、JCTVC−N0183において、参照サンプルのサブセットは、イントラ予測モードに基づいて決定される。別の手法では、2つの隣り合う参照サンプルの差が閾値より大きい場合、フィルタリングが無効にされる。JCTVC−N0183において記述されるように、この適応は全ての予測サンプルに対して行われる。言い換えると、ビデオコーダは、予測ブロックの各サンプルに対して、双線形補間フィルタを適用するかどうかを決定できる。
[0117] 上の式(8−51)および(8−59)において上で示されるように、iFactは、予測ブロックのサンプルの位置およびイントラ予測の角度に基づく、分数位置係数である。JCTVC−N0183は、参照サンプルのサブセットの分散が閾値よりも大きいという条件のもとで、iFactが0に等しくないときに、最近傍補間を使用することを提案した。言い換えると、参照サンプルのサブセットの分散が閾値より大きく、iFactが0に等しくない場合、ビデオコーダは、最近傍補間を使用できる。JCTVC−N0183は、参照サンプルのサブセットの分散が閾値よりも大きいという条件のもとで、iFactが0に等しくないときに、最近傍補間を使用することを提案した。言い換えると、参照サンプルのサブセットの分散が閾値より大きく、iFactが0に等しくない場合、ビデオコーダは、最近傍補間を使用できる。本開示は補間の1つの形態として最近傍補間を説明するが、最近傍補間は、任意の他の参照サンプルの値に基づく参照サンプルの値の修正を伴わずに、予測サンプルを参照サンプルの1つに等しく設定することのみを備え得る。
[0118] 双線形補間フィルタおよびJCTVC−N0183によって提案される最近傍予測の使用は、次のように規定され得る。参照サンプルAとBの間の双線形補間は、次のように記述され得る。
最近傍補間では、iFactが16以下である場合、
である。
[0119] 図4Bは、角度イントラ予測における最近傍予測を示す概念図である。図4Bは、ビデオコーダが予測ブロック中のサンプル「X」の値を決定しているという点で、図4Aと同様である。サンプル「X」を通る線44は、参照サンプル「A」と参照サンプル「B」の間の位置46において、参照サンプルの上の行と交差する。線44は、実際には予測ブロックまたはピクチャの中に存在しないが、説明のために示されている。しかしながら、最近傍予測では、ビデオコーダが、位置46に対する値を決定するために、双線形補間フィルタを使用しない。むしろ、サンプル「X」の値は、参照サンプルのうちで、線44が参照サンプルの上の行と交差する位置により近いもの(例えば、参照サンプル「A」)に等しく設定される。例えば、サンプル「X」に対するiFactの値が16以下である場合、サンプル「X」の値はサンプル「A」の値に等しく設定される。それ以外の場合、サンプル「X」の値はサンプル「B」の値に等しく設定される。従って、最近傍予測においてフィルタリングは適用されない。
[0120] JCTVC−M1005−v2は、一般的な参照サンプルの生成と置換とを記述する。JCTVC−M1005−v2はまた、モード依存イントラ平滑化(MDIS:mode-dependent intra-smoothing)処理を記述する。参照サンプルが上で論じられたように生成された後で、平滑化フィルタが各参照サンプルに対して適用され得る。例えば、複数の予測ブロックのサイズおよび予測モードに対して、異なる平滑化フィルタが異なるように適用され得る。HEVCは、8×8以上のブロックサイズに対して、[1 2 1]/4の平滑化フィルタを使用する。加えて、隣接サンプルがある基準を満たす場合、32×32のブロックサイズに対して、より強い平滑化が行われ得る。イントラ予測モードに関しては、角度予測における対角モード(すなわち、2、18、34)、および平面モードのみが、8×8のブロックサイズにおいて平滑化された参照サンプルを使用する。しかしながら、予測モードに対するこの制約は、より大きなブロックでより緩和される。例えば、32×32のブロックについては、エンコーダまたはデコーダにおいて、水平方向および垂直方向の予測を除く全ての角度モードが、平滑化されたサンプルを使用する。DCイントラ予測モードは、いずれの場合でも平滑化フィルタリングを使用しない。DCイントラ予測モードのより詳細な説明は、JCTVC−M1005−v2の8.4.4.2.3項で与えられる。
[0121] JCTVC−M1005−v2はまた、1/32ペル(すなわち、1/32ピクセル)の双線形補間を記述する。角度予測において、各々の予測されるサンプル(すなわち、予測ブロックの各サンプル)は、位置を参照ピクセルに投影することによって取得される。JCTVC−M1005−v2において規定され、以下の式(8−52)において示されるように、予測値は、2つの最近傍の参照サンプルを使用して、1/32ピクセル精度で補間される。
式(8−52)において、iFactは、投影されたサブピクセル位置に対応する2つの参照サンプル(すなわち、ref[x+iIdx+1]およびref[x+iIdx+2])に重みを与えている。iFactは、予測の方向並びに予測サンプルのxインデックスおよびyインデックスから導出される。さらなる詳細が、上のJCTVC−M1005−v2の8.4.4.2.6項において論じられている。
[0122] JCTVC−M1005−v2はまた、例えばエッジフィルタおよび/またはDCフィルタリングを使用する、境界フィルタリングを記述する。エッジフィルタリングでは、エンコーダおよび/またはデコーダが、次のように、JCTVC−M1005−v2の式(8−54)および(8−62)においてそれぞれ示される勾配に基づく平滑化を使用して、垂直方向の予測については第1の予測の列を、水平方向の予測については第1の予測の行をフィルタリングする。
[0123] DCフィルタリングにおいて、予測ブロックの第1の予測の行および予測ブロックの第1の予測の列は、2タップのFIRフィルタによってDC値を使用してフィルタリングされ、予測ブロックの角のサンプルは、ブロックサイズが32未満であるときはルミナンス(ルーマ)成分に対して3タップのフィルタ(DC値、上の隣接サンプル、および左の隣接サンプル)によってフィルタリングされる。DC値は、HEVC WD仕様において次のように計算される。
ここで、k=Log2(nTbS)である。
[0124] 式(8−41)を含むJCTVC−M1005−v2のセクション8.4.4.2.5が、以下に転載される。
この処理への入力は以下の通りである。
− x=−1、y=−1...nTbS×2−1、およびx=0...nTbS×2−1、y=−1である、隣接サンプルp[x][y]
− 変換ブロックサイズを規定する変数nTbS
− 現在のブロックの色成分を規定する変数cIdx
この処理の出力は、x,y=0...nTbS−1である予測されたサンプルpredSamples[x][y]である。
x,y=0...nTbS−1である予測サンプルpredSamples[x][y]の値は、次の順序のステップによって導出される。
1.変数dcValが次のように導出される。
ここで、k=Log2(nTbS)である。
2.色成分インデックスcIdxの値に応じて、次のことが当てはまる。
− cIdxが0に等しく、nTbSが32未満である場合、次のことが当てはまる。
− それ以外の場合、予測サンプルpredSamples[x,y]は次のように導出される。
[0125] JCTVC−M1005−v2のセクション8.4.4.2.5の式(8−42)において示されるように、ビデオコーダは、予測ブロックの角のサンプル(すなわち、predSamples[0][0])に3タップのFIRフィルタを適用する。さらに、JCTVC−M1005−v2の8.4.4.2.5の式(8−43)において示されるように、ビデオコーダは、予測ブロックの第1の行(すなわち、predSamples[x][0])に2タップのフィルタを適用する。さらに、JCTVC−M1005−v2の8.4.4.2.5の式(8−44)において示されるように、ビデオコーダは、予測ブロックの第1の列(すなわち、predSamples[0][y])に2タップのフィルタを適用する。
[0126] JCTVC−N0183によって提案される技法と関連付けられる、1つまたは複数の問題があり得る。例えば、JCTVC−N0183により提案される技法は、分散に依存する。この分散の計算は比較的複雑であり得る。
[0127] 本開示の1つの例示的な技法によれば、JCTVC−N0183において提案されるように分散を使用して双線形補間フィルタリングを使用するか最近傍予測(すなわち、最近傍補間)を使用するかを決定する代わりに、ビデオコーダは、複数の隣接参照サンプル間の絶対的差分和をメトリック(metric)として使用できる。絶対的差分和の計算は、分散の計算よりも複雑でないことがある。このメトリックは、最近傍補間が使用されるかどうかを決定するために使用され得る。メトリックの計算のために使用される参照サンプルのサブセットは、0≦i≦(K−1)であるSiによって示されるK個のサンプルを含むものとする。そうすると、隣接参照サンプル間の絶対的差分和(SAD)は、
である。
[0128] 従って、この例では、ビデオコーダが、隣接参照サンプル間の絶対的差分和に少なくとも一部基づいて、メトリックを計算し得る。例えば、ビデオエンコーダ20は、現在のブロックの上にあるサブセット中の参照サンプルに対するSAD値を決定し、現在のブロックの左側にある参照サンプルに対するSAD値を別個に決定し、次いでこれらの2つのSAD値を加算できる。加えて、ビデオコーダは、そのメトリックに少なくとも一部基づいて、隣接参照サンプルに基づいて予測ブロックを生成するときに、最近傍補間を使用するかどうかを決定できる。
[0129] 代替的な例では、現在のブロックの上にあるサブセット中の参照サンプルに対するSAD値と、現在のブロックの左側にあるサブセット中の参照サンプルに対するSAD値が別々に計算され、次いで加算され得る。さらに、イントラ参照サンプルの分散を表すために、他のメトリックも使用され得る。言い換えると、ビデオコーダは、イントラ参照サンプルの分散を表すために、他のメトリックを使用できる。
[0130] 本開示の様々な例は、1つまたは複数の隣接参照サンプルに基づいてあるメトリックを決定することを説明する。使用すべきフィルタリングモードを決定するためにメトリックが使用されるような例で、ビデオコーダ(例えば、ビデオエンコーダまたはビデオデコーダ)は、隣接参照サンプルへのイントラ平滑化(例えば、32×32のブロックに対するイントラ平滑化または双線形補間)の適用の前に隣接参照サンプルが有していた値に基づいて、そのメトリックを決定できる。代替的に、ビデオコーダは、隣接参照サンプルへのイントラ平滑化の適用の後に隣接参照サンプルが有している値に基づいて、そのメトリックを決定できる。フィルタを無効にするかどうかを決定するためにメトリックが使用される例で、ビデオコーダは、隣接参照サンプルへのイントラ平滑化の適用の後に隣接参照サンプルが有している値に基づいて、そのメトリックを決定できる。
[0131] 上で説明されたように、参照サンプルを決定するとき、HEVC(または別のビデオコーディング規格)は、いくつかのイントラ予測モードおよびいくつかのブロックサイズに対して、イントラ参照サンプルの平滑化を使用できる。32×32のブロック(すなわち、サイズが32×32であるブロック)に対しては、ある条件のもとで、平滑化フィルタの代わりに双線形補間フィルタが適用され得る。言い換えると、ビデオコーダが32×32の予測ブロックを生成するために使用すべき参照サンプルを決定しているとき、ビデオコーダは、ビデオコーダが予測ブロックのサンプルの値を決定するために使用するであろう参照サンプルに、平滑化フィルタでなく双線形フィルタを適用できる。現在のHEVC Range Extensions仕様(JCTVC−M1005−v2)のセクション8.4.4.2.3は、平滑化フィルタの代わりに、32×32のブロックの参照サンプルにこの双線形フィルタを適用することを記述する。JCTVC−M1005_v2のセクション8.4.4.2.3が以下に転載される。
8.4.4.2.3 隣接サンプルのフィルタリング処理
この処理への入力は以下の通りである。
− x=−1、y=−1...nTbS×2−1、およびx=0...nTbS×2−1、y=−1である、隣接サンプルp[x][y]
− 変換ブロックサイズを規定する変数nTbS
この処理の出力は、x=−1、y=−1...nTbS×2−1、およびx=0...nTbS×2−1、y=−1である、フィルタリングされたサンプルpF[x][y]である。
変数filterFlagは次のように導出される。
− 次の条件の1つまたは複数が真である場合、filterFlagは0に等しく設定される。
− predModeIntraがINTRA_DCに等しい。
− nTbSが4に等しい。
− それ以外の場合、以下のことが当てはまる。
− 変数minDistVerHorがMin(Abs(predModeIntra−26),Abs(predModeIntra−10))に設定される。
− 変数intraHorVerDistThres[nTbS]は表8−4において規定される。
− 変数filterFlagは次のように導出される。
− minDistVerHorがintraHorVerDistThres[nTbS]より大きい場合、filterFlagは1に等しく設定される。
− それ以外の場合、filterFlagは0に等しく設定される。
filterFlagが1に等しいとき、以下のことが当てはまる。
− 変数biIntFlagが次のように導出される。
− 次の条件の全てが真である場合、biIntFlagは1に等しく設定される。
− strong_intra_smoothing_enabled_flagが1に等しい。
− nTbSが32に等しい。
− それ以外の場合、biIntFlagは0に等しく設定される。
− フィルタリングが次のように行われる。
− biIntFlagが1に等しい場合、x=−1,y=−1...63、およびx=0...63、y=−1であるフィルタリングされたサンプル値pF[x][y]は次のように導出される。
− それ以外(biIntFlagが0に等しい)場合、x=−1,y=−1...nTbS×2−1、およびx=0...nTbS×2−1、y=−1であるフィルタリングされたサンプル値pF[x][y]は次のように導出される。
[0132] 本開示の別の例示的な技法では、参照サンプル(またはそのサブセット)にわたって計算されるメトリックが閾値より大きい場合、filterFlagが0に設定される。言い換えると、ビデオコーダは、イントラ参照サンプルにわたって計算されるメトリックが閾値を超えると決定したことに応答して、filterFlagを0に設定できる。いくつかの例では、このメトリックが、隣接参照サンプル間の絶対的差分和である。filterFlagを0に設定することは、イントラ予測参照サンプルに平滑化または双線形補間フィルタリング(biIntFlag)が適用されないことを示唆し得る。言い換えると、ビデオコーダは、filterFlagが0である場合、平滑化または双線形補間フィルタリングをイントラ予測参照サンプルに適用しない。
[0133] 本開示の別の例示的な技法によれば、平滑化または双線形補間フィルタリング(biIntFlag)がイントラ予測参照サンプルに適用されるかどうかを決定するために、(分散または隣接参照サンプル間の絶対的差分和のような)メトリックが使用される。言い換えると、ビデオコーダは、メトリックに基づいて、平滑化または双線形補間フィルタリングをイントラ予測参照サンプルに適用するかどうかを決定する。この例では、次いで、iFactが0に等しくないときに、参照サンプルに双線形補間が適用されるか最近傍補間が適用されるかを決定するために、別のメトリックが使用される。言い換えると、iFactが0に等しくないとき、ビデオコーダは、第2の異なるメトリックに基づいて、イントラ予測参照サンプルに双線形補間フィルタリングを適用するか最近傍補間フィルタリングを適用するかを決定できる。いくつかの例では、これらの決定の両方を行うために、同じメトリック(例えば、分散、隣接参照サンプル間の絶対的差分和など)が使用される。例えば、ビデオコーダは、同じメトリックに基づいて、平滑化を適用するか双線形補間フィルタを適用するかを決定し、イントラ予測参照サンプルに双線形補間フィルタリングを適用するか最近傍補間フィルタリングを適用するかを決定できる。
[0134] 本開示の別の例示的な技法によれば、iFactが0に等しくないとき、いくつかの予測値は双線形補間を使用して形成されてよく、他の予測値は最近傍補間を使用して形成されてよい。言い換えると、ビデオコーダは、予測ブロックのいくつかのサンプルの値を決定するために双線形補間を使用でき、予測ブロックの他のサンプルの値を決定するために最近傍補間を使用できる。この例で、どの補間の形式を使用すべきかを決定するためのメトリックは、予測のために使用されるであろう2つの参照サンプル間の絶対的な差分である。言い換えると、ビデオコーダは、予測ブロックのサンプルの値を決定するために使用されるべき2つの参照サンプル間の絶対的な差分に基づいて、双線形補間を使用してサンプルの値を決定するか、最近傍補間を使用してサンプルの値を決定するかを決定できる。この例で、この差分(すなわち、参照サンプル間の絶対的な差分)が閾値より大きい場合、ビデオコーダが最近傍補間を使用する。さらに、この例では、この差分が閾値以下である場合、ビデオコーダが双線形補間を使用する。他の例では、参照サンプル間の絶対的な差分を使用する代わりに、ビデオコーダが他のメトリックも使用できる。
[0135] 上で説明された問題に加えて、イントラ予測のために使用されるフィルタリング動作にも、以下の問題があり得る。第一に、HEVCにおけるイントラ予測のために使用されるフィルタリング設計は、自然なビデオのために開発されたものである。しかしながら、スクリーンコンテンツまたはカメラ以外により生成されたビデオは、物体の境界に沿った鋭いエッジを伴う合成コンテンツを含み得る。この性質は、HEVCにおいて使用されるフィルタリング設計の原則に反して作用し得る。フィルタリング動作は、差分をぼかすことがある。結果として、不正確な予測サンプルがコーディング損失を招き得る。第二に、1/32ペルの補間フィルタを無効にすることは、JCTVC−N0183文書において記述されるように適応的に引き起こされ得る。しかしながら、JCTVC−N0183により記述される決定の処理は複雑である。その上、JCTVC−N0183により記述される決定の処理は、予測モードに依存するため、システムフレンドリーな設計でない。さらに、JCTVC−N0183において記述される決定の処理は、補間フィルタのスイッチオフのみに対して機能する。第三に、JCTVC−N0183では、決定基準のために使用される閾値が柔軟でない。本開示の他の箇所で説明されるように、決定基準のために使用される閾値は、JCTVC−N0183において提案されたものよりもより柔軟な形で定式化され得る。
[0136] 本開示は、イントラ予測のために使用されるフィルタを適応的にオンおよびオフするための様々な技法を説明する。本技法は、個別に、または任意の組合せで行われてよく、イントラ符号化処理をサポートするためにビデオエンコーダ20のようなエンコーダ内、および/または、イントラ復号処理をサポートするためにビデオデコーダ30のようなデコーダ内で行われてよい。
[0137] 本開示は、イントラ予測のために使用されるフィルタを適応的にオフするための技法を説明する。いくつかの例では、本技法が、1つまたは複数のフィルタを、例えば部分的にまたは完全に無効にするために、フィルタ無効化フラグ(すなわち、フィルタリング無効化フラグ)をオンにできる。言い換えると、1つまたは複数のフィルタを適応的に無効にすることは、1つまたは複数のフィルタが無効にされるかどうかを示す無効化フラグの値を決定することを備える。様々な例では、フィルタ無効化フラグが、1つまたは複数の基準が1つまたは複数の定められた閾値を満たすとき、またはそれを超えるときに、(例えばフィルタを無効にするために)オンにされ得る。例えば、ビデオコーダは、1つまたは複数の基準が1つまたは複数の定められた閾値を満たす、またはそれを超えると、ビデオコーダが決定したことに応答して、1つまたは複数のフィルタを無効にできる。
[0138] 本技法は、様々な例において、フィルタをオフにするためのフラグを決定するために、低複雑度の基準を備え得る。言い換えると、ビデオコーダは、フィルタ無効化フラグを「オン」に設定するかどうかを決定するために、低複雑度の基準を使用できる。例えば、いくつかの例では、フラグ(すなわち、フィルタ無効化フラグ)が、コーディングされたシンタックス要素(例えば、「transform_skip_flag」および/または「cu_transquant_bypass_flag」)によって決定される。さらに、本開示は、フラグをオンにするための様々な決定基準を説明する。加えて、本開示は、異なるブロックサイズおよび/または成分タイプ、例えばルーマ成分またはクロマ成分に基づいて作られる、決定基準の変形を説明する。さらに、本開示は、ブロックサイズおよび成分タイプに基づく方法の制約を説明する。本開示はまた、複雑度を下げるための方法を説明する。複雑度を下げるためのこれらの方法は、決定処理におけるCUベースの適応とピクセルサンプルのサブサンプリングとを含み得る。例えば、CUベースの適応において、ビデオコーダは、JCTVC−N0183において説明されるようにフィルタを無効にするかどうかをサンプルごとに決定することとは対照的に、フィルタを無効にするかどうかをCUごとに決定できる。
[0139] 加えて、本開示の技法の1つまたは複数は、決定処理から得られるフラグの復号処理を規定する。いくつかの例では、エンコーダおよびデコーダにおいて、フラグの同じ導出処理(すなわち、フィルタ無効化フラグ)が使用される。言い換えると、ビデオエンコーダおよびビデオデコーダは、フィルタ無効化フラグのために同じ導出処理を使用できる。他の例では、本開示の技法が、フラグ(すなわち、フィルタ無効化フラグ)の明示的なシグナリングを規定する。フィルタ無効化フラグの明示的なシグナリングは、TUベース、PUベース、CUベースなどであり得る。例えば、ビデオエンコーダ20は、TU、PU、またはCUの少なくとも1つにおいて、フィルタ無効化フラグを明示的にシグナリングできる。
[0140] さらに、本開示の技法の1つまたは複数は、決定処理において使用される適応パラメータの暗黙的な導出を規定する。他の例では、本開示の技法の1つまたは複数が、パラメータの明示的なシグナリング(例えば、ビデオパラメータセット、シーケンスパラメータセット、ピクチャパラメータセット、および/または他の箇所において)を規定する。加えて、本開示は、フラグ(すなわち、フィルタ無効化フラグ)によって無効化されるべき例示的なフィルタを説明する。
[0141] 図5は、本開示の例による、HEVCイントラ予測のためのブロックの参照サンプルのための適応フィルタ制御の方法を示す概念図である。図5を参照すると、ビデオコーダ(ビデオエンコーダ20またはビデオデコーダ30のような)は、以下の手順に従って、この例の提案される方法を行い得る。
[0142] 第一に、左下の位置P2M-1,-1から左上の位置P-1,-1までの、次いで右上の位置P-1,2N-1までの隣接ピクセルの全てまたは一部を考慮して、左下の位置(例えば、P2M-1,-1)から右上の位置(例えば、P-1,2N-1)まで、すなわち図5の矢印によって示される経路に沿って、隣接ピクセル(すなわち、イントラ予測参照サンプル)を縦断する。あるいは、ビデオコーダは、隣接ピクセル(すなわち、イントラ予測参照サンプル)を備える任意の経路またはパターンを使用できる。例えば、図5の経路は、右上の位置P-1,2N-1から左上の位置P-1,-1に、次いで左下の位置P2M-1,-1に向かうように、逆にされ得る。
[0143] 第二に、その経路に沿った2つの連続する隣接サンプル(すなわち、イントラ予測参照サンプル)の間の、所定の閾値(Thr1)より大きなピクセル差分を見つける。いくつかの例では、ピクセル差分が、連続する隣接サンプルの値の間の差分の絶対値である。例えば、ビデオコーダは、走査経路に沿って2つの連続する隣接サンプルのピクセル値の差分を決定でき、その差分(例えば、差分の絶対値)を閾値(Thr1)と比較できる。2つの連続的な隣接サンプルは、互いに隣接していてよい。代替的に、隣接サンプルがこの決定のために走査経路に沿ってサブサンプリングされる場合、2つの連続する隣接サンプルは連続的に走査されるが、場合によっては互いに直接隣り合ってはいない。いくつかの例では、Thr1が1<<(bitdepth−1)に設定され、ここでbitdepthは隣接サンプルのビット深度を示す。代替的に、[0,(1<<bitdepth)−1]の中にある任意の整数値が、閾値Thr1として使用され得る。
[0144] 第三に、ビデオコーダが、Thr1よりも大きなピクセル差分を有する、その経路に沿った2つの連続する隣接サンプル(すなわち、イントラ予測参照サンプル)を見つける場合、ビデオコーダは無効化フラグ(すなわち、フィルタ無効化フラグ)をオンにする。いくつかの例では、ビデオエンコーダが、無効化フラグをオンにでき、無効化フラグをビデオデコーダにシグナリングできる。代替的に、ビデオデコーダは、上で説明されたような方式で(すなわち、ビデオエンコーダと同じまたは同様の方式で)、デコーダ側における隣接サンプルの経路の走査に基づいて、ビデオデコーダにおいて無効化フラグを推測し生成できる。他の例で、無効化フラグをオンにする代わりに、ビデオエンコーダは、フィルタが無効にされるべきであることを示すシンタックス要素を生成できる。しかしながら、本開示は、説明のために無効化フラグの使用を説明する。
[0145] 第四に、無効化フラグがオンにされる場合、ビデオコーダは、MDIS(例えば、平滑化フィルタ、DCイントラ予測モードフィルタ)、1/32ペル補間、およびエッジフィルタにおいてフィルタの全体のセットを、またはフィルタのいくつかのフィルタを無効にする。従って、いくつかの例で、1つまたは複数のフィルタは、無効化フラグがオンにされるときにオフにされ、すなわち無効にされ得る。例えば、そのようなフィルタのいくつかまたは全てが無効にされるとき、関連するフィルタリング動作は、イントラ予測における参照サンプルの使用の前に、参照サンプルに対して行われない。さらに、いくつかのそのようなイントラ予測フィルタが無効にされるとき、そのようなイントラ予測フィルタは、予測ブロックのサンプルに適用されない。
[0146] 加えて、いくつかの例では、DCフィルタが無効にされ得る。すなわち、MDIS、1/32ペル補間、およびエッジフィルタにおいてフィルタのいくつかまたは全てを無効にすることに加えて、DCフィルタが、単独で、または(例えば、無効化フラグに従って)他のフィルタの1つまたは複数を無効にすることと組み合わせて、無効にされ得る。さらなる代替形態として、いくつかの例では、個々のフィルタ動作に対する無効化ステータスを示すために、個々の無効化フラグがオンまたはオフにされ得る。例示として、様々な例において、1つまたは複数の無効化フラグがオンにされると、MDISにおいて1つまたは複数のフィルタは無効にされ得るが他のフィルタは有効であり、1/32ペル補間において1つまたは複数のフィルタは無効にされ得るが他のフィルタは有効であり、エッジフィルタにおいて1つまたは複数のフィルタは無効にされるが他のフィルタは有効であり、DCフィルタは無効にされるが他のフィルタは有効であり、前述のフィルタの2つ以上が任意の組合せで無効にされるが他のフィルタは有効であり、前述のフィルタの任意の組合せが無効にされるが他のフィルタは有効であり、または全てのフィルタが無効にされる。いくつかの例では、無効化フラグが、イントラコーディングされるべき所与のブロックに対するフィルタの無効化を規定し得る。
[0147] この例で説明される手順は、ブロック(例えば、CU、PU、TUなど)のためのイントラ予測全体において一度、ビデオエンコーダまたはビデオデコーダによって行われてよく、任意のフィルタリング動作の前に呼び出され得る。すなわち、一例では、ビデオコーダが、MDISを行う前にフィルタを無効にするための上で説明された動作を行い得る。その後、ビデオコーダは、イントラ予測のために、完全にフィルタリングされた参照サンプル、部分的にフィルタリングされた参照サンプル、またはフィルタリングされていない参照サンプルを、適宜使用できる。ブロックのためのイントラ予測全体に対して一度だけこれらの手順を行うことは、特定のフィルタを無効にするかどうかをサンプルごとに決定することよりも、複雑でなくなり得る。
[0148] 本開示の別の例では、カウンタベースの決定基準が適用される。言い換えると、ビデオコーダは、カウンタベースの決定基準を適用する。経路中の2つの連続する隣接サンプルの間のピクセル差分(例えば、絶対的なピクセル差分)が閾値を超える場合に無効化フラグを生成する(例えば、無効化フラグをオンにする)ことに対する代替形態として、ビデオコーダは、経路中の2つの連続する隣接サンプルの間のピクセル差分(例えば、絶対的なピクセル差分)が第1の閾値を超えた事例の数のカウントを決定できる。ビデオコーダは次いで、そのカウントを第2の閾値と比較できる。従って、ビデオコーダは次いで、そのカウントに基づいて、無効化フラグの生成を決定できる。カウンタベースの決定基準の使用の例は、次のように働き得る。
[0149] 第一に、隣接ピクセルを縦断する。例えば、ビデオコーダは、左下の位置P2M-1,-1から左上の位置P-1,-1までの、次いで右上の位置P-1,2N-1までの隣接ピクセルの全てまたは一部を考慮して、左下の位置(すなわち、P2M-1,-1)から右上の位置(すなわち、P-1,2N-1)までの経路に沿って(例えば、図5の矢印によって示される経路に沿って)、隣接ピクセルを縦断できる。上の例を参照して言及されたように、この経路は、反対方向に、または異なる経路もしくはパターンで進行し得る。
[0150] 第二に、その経路に沿った2つの連続する(すなわち、隣り合う)サンプルの間の、所定の閾値(Thr1)より大きなピクセル差分を見つける。第三に、ピクセル差分(例えば、絶対的なピクセル差分)が所定の閾値(Thr1)より大きい場合、カウンタは1だけ増やされる。第四に、カウンタの値が第2の閾値(Thr2)より大きい場合、無効化フラグがオンにされる。カウンタの値が第2の閾値(Thr2)以下である場合、無効化フラグはオフにされる。第四に、無効化フラグがオンである場合、フィルタは無効にされる。例えば、MDIS、1/32ペル補間、およびエッジフィルタにおいてフィルタの全てまたはいくつかが、(例えば、上で説明されたように)無効にされる。加えて、DCフィルタは、無効化フラグが(例えば、上で説明されたように)オンにされる場合、いくつかの例で無効にされ得る。
[0151] ある代替形態として、ビデオコーダ(例えば、ビデオエンコーダまたはビデオデコーダ)は、経路中の2つの連続する隣接サンプルの間のピクセル差分が別の閾値より小さい事例の数のカウントに基づいて、無効化フラグをオンにできる。例えば、ビデオコーダは、上で説明されたように、隣接サンプルを通る経路の縦断において、2つの隣り合うサンプルの間の、閾値(Thr3)よりも小さなピクセル差分を見つけることができる。
[0152] 閾値Th3よりも小さなピクセル差分に対するカウンタベースの決定基準の使用の例は、次のように、エンコーダまたはデコーダにおいて働き得る。第一に、(例えば、上で説明されたように)経路に沿って隣接ピクセルを縦断する。第二に、その経路に沿った2つの連続する(例えば、隣り合う)サンプルの間の、閾値(Thr3)より小さなピクセル差分(例えば、絶対的なピクセル差分)を見つける。第三に、ビデオコーダが閾値(Thr3)よりも小さなピクセル差分(例えば、絶対的なピクセル差分)を見つける場合、ビデオコーダはカウンタを1だけ増やす。第四に、カウンタが閾値(Thr4)より大きい場合、ビデオコーダは無効化フラグをオンにする。第五に、無効化フラグがオンである場合、例えば上で説明されたように、フィルタの全てが無効にされ、またはフィルタのいくつかが無効にされる。
[0153] 前の段落の例の第4のステップに対する代替形態として、またはそれに加えて、ビデオコーダは、Thr1よりも大きな差分(例えば、絶対的な差分)とともに、組み合わされた方式でカウンタを考慮できる。例えば、Thr3よりも小さなピクセル差分(例えば、絶対的なピクセル差分)に対するカウントの数が閾値Thr4を超え、Thr1よりも大きなピクセル差分(例えば、絶対的なピクセル差分)のカウントが閾値Thr2を超える場合、ビデオコーダは、(例えば、全てのフィルタリング動作のいくつかが無効にされ、コーディングされるべきブロックのイントラコーディングのための参照サンプルに適用されないように)無効化フラグをオンにする。この例では、これらの条件のいずれかが満たされる場合、ビデオコーダが、(例えば、フィルタリングが参照サンプルに適用されるように)無効化フラグをオフにできる。
[0154] 本開示の別の例によれば、閾値とのサンプルごとの比較またはカウントとのサンプルごとの比較を使用する代わりに、ビデオコーダ(例えば、ビデオエンコーダまたはビデオデコーダ)は、フィルタを無効にするかどうかを決定するために、種々の異なる基準のいずれをも使用できる。例えば、ビデオコーダは、鋭いエッジを検出するために、3タップの有限インパルス応答(FIR)フィルタ(例えば、[−1,2,−1]を使用した)を使用できる。ビデオコーダは、ピクセルごとに、または3ピクセルごとに、FIRフィルタリングを行い得る。1つの例示として、FIRフィルタマスクは、隣接参照サンプルの経路に沿って(例えば、上の例の1つまたは複数において説明され、図5に示されるような経路で)動かされ得る。ビデオコーダは、一度に1ピクセル、または一度に3ピクセルだけFIRフィルタマスクを動かし、3つのピクセルの各セットに対するFIRフィルタ出力(FIRフィルタの係数がそれに適用され得る)を生成できる。従って、いくつかの例では、FIRフィルタが適用される連続する3ピクセルのセットは、互いに重複してよく、またはセットに含まれる参照サンプルに関して別個であり得る。経路に沿った3つのサンプルの連続的にFIRフィルタリングされたセットのいずれかからのフィルタ出力(例えば、フィルタ出力の絶対値)が所定の閾値を超える値を生み出す場合、ビデオコーダは無効化フラグをオンにできる。代替的に、カウントベースの例では、ビデオコーダが閾値を超えるフィルタ出力(例えば、フィルタ出力の絶対値)をカウントし、カウントがカウント閾値を超える場合、ビデオコーダは無効化フラグをオンにできる。それ以外の場合、ビデオコーダは無効化フラグをオフにできる。
[0155] 一例では、ビデオコーダが、図5においてP2M-1,-1、P-1,-1、およびP-1,2N-1によって示される3つの角のみを使用する。この例で、ビデオコーダは、差分(例えば、絶対的な差分)が閾値より大きいかどうかのために、差分を調査する。例えば、ビデオコーダは、図5においてP2M-1,-1、P-1,-1、およびP-1,2N-1によって示される3つの角を、FIRフィルタへの入力として使用できる。一例として、参照サンプルP2M-1,-1、P-1,-1、およびP-1,2N-1の値へのFIRフィルタのそれぞれの適用によって生成されるFIRフィルタ出力(例えば、FIRフィルタ出力の絶対値)が所定の閾値を超える場合、ビデオコーダは、全てのフィルタまたはいくつかのフィルタが無効にされるように、無効化フラグをオンにできる。別の代替形態として、参照サンプルP2M-1,-1、P-1,-1、およびP-1,2N-1をFIRフィルタへの入力として使用する代わりに、ビデオコーダは、左の列においては参照サンプルP2M-1,-1、PM,-1、およびP-1,1に、上の行においては参照サンプルP-1,2N-1、P-1,N、およびP-1,-1にFIRフィルタを適用できる。この場合、ビデオコーダはFIRフィルタリングを2回適用する。やはり、FIRフィルタ出力(例えば、FIRフィルタ出力の絶対値)が所定の閾値を超える場合、ビデオコーダは無効化フラグをオンにできる。
[0156] 代替的に、または加えて、ビデオコーダは、例えば上で説明されたFIRフィルタ出力とともに、2つの隣接ピクセルの絶対的差分和(SAD)の値を一緒に考慮できる。ビデオコーダは、FIRフィルタ出力を生成するために使用される2つのピクセルの間の全てのピクセルに対するSAD値を計算できる。すなわち、左の列におけるP(2M−1,−1)およびP(−1,−1)に対して、隣り合うピクセルのSADはP(2M−1−k,−1)とP(2M−1−k−1,−1)との差の合計を指し、ここでk=0,...,2M−1である。SADは、上の行に対しても同様の方式で得られる。
[0157] いくつかの例では、左にある3つのサンプルピクセル(P2M+1,PM-1-1,P-1-1)および上にある(P2N+1,PN-1-1,P-1-1)が、FIRフィルタのために使用される。結果の各々が、1つのフラグを作るために組み合わされる。別の例では、MDISにおいて使用されるのと同じ条件が、この決定基準のために使用される。例えば、隣接参照サンプルに適用されるフィルタを無効にするための無効化フラグは、MDISをオフにするための基準が満たされる場合、オンにされ得る。さらに、いくつかの例では、2つの連続するピクセルの差分の分散が使用される。例えば、連続するピクセルの間のピクセル差分が上で説明されたようにある経路に沿って決定されるにつれて、ビデオコーダはピクセル差分の分散を計算できる。その分散が所定の分散の閾値を超える場合、ビデオコーダは、参照サンプルに適用されるフィルタが部分的にまたは完全に無効にされるように、無効化フラグをオンにできる。
[0158] 別の代替形態として、ピクセル差分の符号変化のカウントが使用される。例えば、連続するピクセルの間のピクセル差分が上で説明されたようにある経路に沿って決定されるにつれて、例えば正から負および/または負から正への符号変化の回数がカウントされ、閾値と比較され得る。そのカウントが所定のカウントの閾値を超える場合、エンコーダまたはデコーダは、参照サンプルに適用されるフィルタが部分的にまたは完全に無効にされるように、無効化フラグをオンにできる。
[0159] 本開示の別の例によれば、参照サンプルの部分的な領域が、フィルタのオン/オフの決定を行うために適応的に選択される。言い換えると、ビデオコーダは、イントラ予測参照サンプルの部分的な領域を適応的に選択し、参照サンプルの選択された部分的な領域に基づいて、フィルタリングを有効にするか無効にするかを決定できる。例えば、左の隣接する列および上の隣接する行の中の全ての参照サンプルを走査する代わりに、隣接参照サンプルの全て未満のものを含む選択されたサブセットまたは領域が使用され得る。そのようなサブセットは、上の例の1つまたは複数において、上で説明された例示的な処理の1つまたは複数のために使用され得る。
[0160] 例えば、1つの例は、所与の予測モードのために参照ピクセルを使用することである。例えば、所与の予測モードは、特定の角度イントラ予測モードであり得る。この例では、予測の角度が負である場合、[PM-1,-1,P-1-1]と[P-1-1,P-1,N-1]との間のピクセルが使用される。そうではなく、予測の角度が正であり、垂直方向により近い場合、範囲[P-1-1,P-1,2N-1]の中のピクセルが使用される。そうではない(予測の角度が正であり、水平方向に近い)場合、範囲[P-1-1,P2M-1,-1]の中のピクセルが使用される。これらの例の各々において、隣接ピクセルの左の列および上の行の経路に沿ったピクセルのサブセットが、上の例の1つまたは複数を参照して上で説明された決定のいずれにおいても使用され得る。例として、予測の角度が正であり水平方向よりも垂直方向に近い場合、ビデオコーダは、(例えば、フィルタ無効化フラグをオンにするかどうかを決定するために)上の様々な例で説明されたような、ピクセル差分ベースの決定、カウントベースの決定、またはFIRベースの決定のために、範囲[P-1-1,P-1,2N-1]の中のピクセルを使用できる。同様に、予測の角度が負である場合、ビデオコーダは、そのような決定において、[PM-1,-1,P-1-1]と[P-1-1,P-1,N-1]との間のピクセルを使用できる。
[0161] 別の例では、上の行に対するカウンタが左の列に対するカウンタより大きい場合、ビデオコーダが、上の行の中の参照サンプルを使用する。例えば、上の行の中の参照サンプルに対する所定のピクセル閾値を超えるピクセル差分(例えば、絶対的なピクセル差分)のカウントが、左の列の中の参照サンプルに対する所定のピクセル閾値を超えるピクセル差分(例えば、絶対的なピクセル差分)のカウントよりも大きい場合、ビデオコーダは、上の行からのカウントをカウント閾値と比較する。逆に、左の列に対するカウントが上の行におけるカウントよりも大きい場合、ビデオコーダは左の列の中の参照サンプルを使用する。例えば、左の列の中の参照サンプルに対する所定のピクセル閾値を超えるピクセル差分(例えば、絶対的なピクセル差分)のカウントが、上の行の中の参照サンプルに対する所定のピクセル閾値を超えるピクセル差分(例えば、絶対的なピクセル差分)のカウントよりも大きい場合、ビデオコーダは、左の列からのカウントをカウント閾値と比較できる。いずれの場合も、選択されたカウントがカウント閾値を超える場合、ビデオコーダは無効化フラグをオンにする。カウント閾値は、隣接参照サンプル(すなわち、イントラ予測参照サンプル)の全体のセットが使用されるか、または選択されたサブセットが使用であるかに従って、選択またはスケーリングされ得る。
[0162] 別の例では、HEVC Range Extensions(すなわち、JCTVC−M1005−v2)の8.4.4.2.2において規定されるパディングから生成されるいくつかの参照ピクセルが、この決定において考慮されない。例えば、上で説明された決定のいずれもが、例えば異なる閾値、カウント閾値、または他の決定について、パディングによって追加された参照ピクセルを考慮から外すことができる。
[0163] 本開示の別の例によれば、ブロックサイズ、成分タイプ、および入力ビデオタイプに応じた、いくつかのパラメータ適応が提示される。例えば、閾値は、1つの値の代わりにブロックサイズとともに適応的に変更される。言い換えると、1つの閾値を使用する代わりに、ビデオコーダは、ブロックサイズに基づいて閾値を適応的に変更できる。例えば、上で与えられた例の1つまたは複数において例えば使用するための、上で説明されたピクセル差分閾値および/またはカウント閾値の様々な値は、ブロックサイズ(例えば、ピクセルごとのサイズ)、成分タイプ(例えば、ルーマ成分またはクロマ成分)、または入力ビデオタイプ(例えば、カラーサンプリングフォーマット)に基づいて調整され得る。一例では、コーディングされるべきブロックのブロックサイズが二倍になれば、4×4のブロックサイズのために使用される閾値Thr2および/またはThr4が二倍になる。他の例では、ブロックサイズが例えば所定のサイズに対して増大するとき、正の整数または0のオフセットが閾値Thr2および/またはThr4に追加され得る。
[0164] さらに、いくつかの例では、閾値が、全ての成分に対する1つの値の代わりに、成分タイプとともに適応的に変更される。例えば、閾値の値は、ルーマ成分に対してはブロックのクロマ成分とは異なるように規定され得る。従って、ルーマ成分およびクロマ成分に対して個別の閾値があり得る。クロマ成分に対する閾値は、同じであっても異なっていてもよい。様々な閾値は、計算または記憶され得る。
[0165] 加えて、いくつかの例では、閾値が入力ビデオタイプとともに適応的に変更される。言い換えると、ビデオコーダは、入力ビデオタイプに基づいて、閾値を適応的に変更できる。従って、異なるカラーサンプリングフォーマットは異なる閾値を有し得る。4:2:2のビデオシーケンスに対して、クロマ成分のために使用される閾値Thr2および/またはThr4は、4:4:4のビデオシーケンスにおいて使用される閾値の半分だけ下げられる。ビデオコーダは、所与の入力ビデオタイプのルーマ成分およびクロマ成分に対して同じ閾値を、または、所与の入力ビデオタイプのルーマ成分とクロマ成分との間の異なる閾値を決定するために、異なる入力ビデオタイプに対して異なる閾値を使用でき、ここでいずれの場合でも、閾値は入力ビデオタイプに従って変化し得る。
[0166] 本開示の別の例によれば、例えば上の例を参照して上で説明されたような、1つまたは複数のフィルタを適応的にオフにするための方法は、ブロックサイズおよび/または成分タイプによって制約される。例えば、上で与えられた例の1つまたは複数において説明された技法は、あるサイズよりも小さいブロックサイズのみに対して適用され、コーディングされるべきブロックのブロックサイズがあるサイズ以上であるときには適用されない。例えば、この方法は4×4のブロックサイズのみに適用される。しかしながら、代替的には、1つまたは複数のフィルタを適応的にオフにするための方法は、最小のTUサイズのみに適用される。しかしながら、代替的には、1つまたは複数のフィルタを適応的にオフにするための方法は、最小のCUサイズのみに適用される。しかしながら、代替的には、1つまたは複数のフィルタを適応的にオフにするための方法は、CUがN×Nの区画を有する場合のみに適用される。別の例として、1つまたは複数のフィルタを適応的にオフにするための方法は、ある成分タイプのみに適用される。例えば、この方法はルーマ成分コーディングのみに適用される。しかしながら、代替的には、提案される方法は、入力ビデオが4:4:4のビデオ入力である場合、全ての成分(例えば、Y、U、およびV)に対して適用され得る。
[0167] 本開示の別の例によれば、隣接参照サンプル(すなわち、イントラ予測参照サンプル)は、計算的な複雑度が下がり得るように、比較においてサブサンプリングされる。例えば、フィルタリングをオフにする(例えば、無効化フラグをオンにする)かどうかを決定するために使用される隣接参照サンプルは、参照サンプルのサブサンプリングされたセットであり得る。いくつかの例では、参照ピクセルが2という係数によってダウンサンプリングされる。代替的に、他の例で、ビデオコーダは、ブロックサイズが増大するにつれてダウンサンプリング比を上げる。
[0168] 図6は、本開示の別の例による、HEVCイントラ予測のためのCUのTUの参照サンプルのための適応フィルタ制御の方法を使用するを示す概念図である。HEVCでは、イントラ予測がTUごとに行われる。従って、本開示のいくつかの例によれば、ビデオコーダは4×4のブロック処理を行い得る。図6を参照すると、複雑度を下げるために、1つまたは複数のフィルタを適応的にオフにするための方法がCUにおいて一度行われ、無効化フラグがそのCUにおけるイントラ予測のために使用される全ての関連するフィルタリングを制御する。図6は、CUの中に4つのTUがある例を示す。CUの上および左にある参照サンプルは、例えば、CU内のPUおよび/またはTUのイントラコーディングのために使用される参照サンプルに対してフィルタを適用するかどうかを決定するために本開示で説明される例示的な技法のいずれにおいても、決定のために使用され、無効化フラグが、CUのPUおよび/またはTUにおいてフィルタをオフに切り替えるために適用される。
[0169] 上の例では、無効化フラグが、同じ方式でエンコーダとデコーダの両方で導出された。しかしながら、いくつかの例では、フラグが、エンコーダ側で導出され、デコーダ側でシグナリングされる。言い換えると、ビデオエンコーダは、フィルタ無効化フラグをビデオデコーダにシグナリングできる。ビデオデコーダは、フラグを解析した後で関連するフィルタリングを制御できる。いくつかの例では、ビデオエンコーダがPUにおいてフラグをシグナリングする。他の例では、前の段落の例のように、ビデオコーダがCUにおいてフラグできる。
[0170] さらに、本開示の1つまたは複数の例によれば、上の例においては、閾値(例えば、Thr1、Thr2、Thr3など)は不変であり、またはブロックサイズおよび成分タイプとともに適応的に変更された。いくつかのそのような例では、ビデオエンコーダが、閾値(例えば、Thr1、Thr2、Thr3など)をビデオデコーダにシグナリングして送信できる。いくつかの例では、ビデオエンコーダが、ビデオエンコーダによって生成されるスライスヘッダ、PPS、SPS、またはVPSの少なくとも1つにおいて閾値をシグナリングする。加えて、いくつかの例では、ビデオエンコーダが、スライスヘッダ、PPS、SPS、またはVPSの少なくとも1つにおいて、制約条件(例えば、方法がブロックサイズおよび/または成分タイプによって制約され得る、上の例の1つまたは複数において説明されたような制約条件)をシグナリングできる。
[0171] HEVCにおいて、coding_unitシンタックス構造はCUに対応する。CUのcoding_unitシンタックス構造は、CUのRQTに対応するtransfrom_treeシンタックス構造を含み得る。transfrom_treeシンタックス構造は、追加のtransfrom_treeシンタックス構造またはtransfrom_unitシンタックス構造を含み得る。transfrom_treeシンタックス構造がtransfrom_unitシンタックス構造を備える場合、transfrom_treeシンタックス構造はRQTのリーフノードに対応する。HEVCのtransfrom_treeシンタックス構造が、下の表1に転載される。
[0172] 表1に示されるように、transfrom_treeシンタックス構造は、cbf_cbシンタックス要素と、cbf_crシンタックス要素と、cbf_lumaシンタックス要素とを含み得る。cbf_cbシンタックス要素、cbf_crシンタックス要素、およびcbf_lumaシンタックス要素は、コーディングされたブロックフラグ(CBF)と総称的に呼ばれ得る。1に等しいcbf_cbシンタックス要素は、transfrom_treeシンタックス構造に対応するCb変換ブロックが0に等しくない1つまたは複数の変換係数レベルを含むことを指定する。1に等しいcbf_crシンタックス要素は、transfrom_treeシンタックス構造に対応するCr変換ブロックが0に等しくない1つまたは複数の変換係数レベルを含むことを指定する。1に等しいcbf_lumaシンタックス要素は、transfrom_treeシンタックス構造に対応するluma変換ブロックが0に等しくない1つまたは複数の変換係数レベルを含むことを指定する。
[0173] さらに、HEVCでは、transfrom_unitシンタックス構造が、1つまたは複数のresidual_codingシンタックス構造を含み得る。transfrom_unitシンタックス構造にresidual_codingシンタックス構造を含めることは、transfrom_unitシンタックス構造を含むtransfrom_treeシンタックス構造において指定されるCBFの値に依存する。HEVCのtransfrom_unitシンタックス構造が、下の表2に転載される。
[0174] さらに、residual_codingシンタックス構造は、関連付けられる変換ブロックに変換が適用されるかどうかを指定する、transfrom_skip_flagシンタックス要素を含み得る。言い換えると、transfrom_skip_flagは、変換を伴わずに、例えばDCTの適用を伴わずに予測後の残差信号が量子化される、変換スキップ動作を呼び出す。本開示は、ブロック(例えば、CU)の残差ブロックのサンプルをブロックのための残差信号と呼ぶことがある。residual_codingシンタックス構造はまた、変換係数の値を指定するシンタックス要素(例えば、sig_coeff_flag、coeff_abs_level_greater1_flag、coeff_abs_level_greater2_flag、coeff_sign_flag、coeff_abs_level_remaining)を、または変換が適用されない場合は残差サンプルを含み得る。いくつかの例では、cu_transquant_bypass_flagがオンにされる場合、transform_skip_flagがシグナリングされない。
[0175] 本開示の別の例によれば、transform_skip_flagシンタックス要素のような変換スキップシンタックス要素は、フィルタ無効化フラグをオンにするかオフにするかを決定するために使用される。例えば、ビデオデコーダ30は、変換が変換ブロックに適用されるかどうかを示す変換スキップシンタックス要素に基づいて、フィルタ無効化フラグをオンにするかオフにするかを決定できる。例えば、transform_skip_flagがオン(またはオフ)にされる場合、フィルタ無効化フラグはオン(またはオフ)にされる。この構成では、transform_skip_flagがオンにされる場合にフィルタ無効化フラグがオンにされ、transform_skip_flagがオフにされる場合に無効化フラグがオフにされる。言い換えると、シンタックス要素(すなわち、transform_skip_flag)は、残差信号が変換を伴わずに量子化されるかどうかを指定し、無効化フラグは、シンタックス要素がオンにされる場合にオンにされ、無効化フラグがオンである場合、イントラ予測のために使用される1つまたは複数のフィルタは無効にされる。いくつかの例では、これが4×4のブロックのみに適用され得るが、サイズに左右されなくてもよい。いくつかの例では、transform_skip_flagのオンまたはオフのステータスに基づいて無効化フラグをオンまたはオフにする動作が、4×4のブロックのみに適用され得る。
[0176] 代替的に、いくつかの例では、変換スキップフラグの条件は、上の様々な例で言及された任意の他の条件と組み合わされ得る。例えば、フィルタ無効化フラグは、transform_skip_flagがオンであるかオフであるかということと、例えば、上で説明された閾値ベースの基準のような種々の閾値ベースの基準のいずれかのような他の基準との組合せに基づいて、オンまたはオフにされ得る。
[0177] HEVCにおいて、coding_unitシンタックス構造はCUに対応する。coding_unitシンタックス構造は、cu_transquant_bypass_flagシンタックス要素を含み得る。1に等しいcu_transquant_bypass_flagシンタックス要素は、HEVCの8.6項において規定されるようなスケーリングおよび変換処理およびHEVCの8.7項において規定されるようなループ内フィルタ処理が迂回されることを指定する。cu_transquant_bypass_flagシンタックス要素がcoding_unitシンタックス構造中に存在しないとき、それは0に等しいと推測される。いくつかの事例では、cu_transquant_bypass_flagが、transquant_bypass_flagと呼ばれることがある。無損失コーディングの構成では、cu_transquant_bypass_flagシンタックス要素がオンにされ(例えば、1に等しく)、予測されるブロック(すなわち、変換ブロック)が量子化および変換を伴わずにコーディングされる。
[0178] 本開示の別の例として、cu_transquant_bypass_flagシンタックス要素のような量子化および変換迂回シンタックス要素は、フィルタ無効化フラグをオンにするかオフにするかを決定するために使用され得る。例えば、ビデオデコーダ30は、量子化および変換迂回シンタックス要素に基づいて、フィルタ無効化フラグをオンにするかオフにするかを決定できる。この構成では、cu_transquant_bypass_flagシンタックス要素がオンにされる場合にフィルタ無効化フラグがオンにされる。cu_transquant_bypass_flagシンタックス要素がオフにされる場合に無効化フラグがオフにされる。従って、この例では、シンタックス要素(すなわち、cu_transquant_bypass_flag)のときに予測ブロックが量子化および変換を伴わずにコーディングされ、シンタックス要素がオンにされる場合に無効化フラグがオンにされ、無効化フラグがオンである場合に1つまたは複数のフィルタが無効にされる。代替的に、同じtransform_skip_flagが使用され得る。言い換えると、transform_skip_flagがオフにされる場合、フィルタ無効化フラグはオフにされる。いくつかの例では、cu_transquant_bypass_flagがオンにされる場合、transform_skip_flagがシグナリングされない。本開示の1つまたは複数の例に従った詳細の追加の精緻化が、以下で与えられる。
[0179] 本開示の上の例または他の例の1つまたは複数に従って、transform_skip_flagがフィルタリング無効化フラグを決定するために使用され得る。イントラ予測/再構築処理は全てのTUレベルにおいて行われるので、transform_skip_flagはすでにTUにおいて利用可能である。さらに、本開示の上で説明された1つまたは複数の例および他の例に従って、無効化フィルタリングフラグの動作は、transform_skip_flagのような変換スキップフラグに基づいて決定され得る。変換スキップフラグがTUに対して0であるとき、フィルタリング無効化フラグは0に設定され、現在のHEVC Range Extensionsの仕様におけるようなフィルタリングが適用される。変換スキップフラグが1であるとき、フィルタリング無効化フラグは1に設定され、フィルタリングは無効にされる。
[0180] 別の例では、フィルタリングの無効化が、本開示で説明される3タップのFIRフィルタ[1,−2,1]のような、任意の暗黙的な導出方法に基づき得る。この例では、変換スキップフラグが0である場合、現在のHEVC Range Extensionsの仕様におけるようなフィルタリングが適用される(例えば、JCTVC−M1005−v2のセクション8.4.4.2.3において説明されるように)。変換スキップフラグが1であり、FIRフィルタリングの結果が閾値を下回り、フィルタリング無効化フラグが0であるとき、現在のHEVC Range Extensionsの仕様(すなわち、JCTVC−M1005−v2)におけるようなフィルタリングが適用される。変換スキップフラグが1であり、FIRフィルタリングの結果が閾値を上回り、フィルタリング無効化フラグが1であるとき、フィルタリングは無効にされる。言い換えると、シンタックス要素(すなわち、transform_skip_flag)は、残差信号が変換を伴わずに量子化されるかどうかを指定し、無効化フラグが1に等しくFIRフィルタの結果が閾値を上回ると決定される場合、イントラ予測のために使用される1つまたは複数のフィルタは無効にされる。
[0181] さらに、本開示の1つまたは複数の例に従うと、無損失コーディングの場合、フィルタリングの適用は、transform_skip_flagおよび/またはFIRフィルタの結果の代わりに、transquant_bypass_flagに依存して行われ得る。代替的に、フィルタリングの適用は、無損失コーディングにおいてフィルタリング無効化フラグのみに依存し得る。
[0182] 様々な例において、本開示は、ビデオデータをコーディングするための方法を説明する。本方法は、イントラ予測参照サンプルの少なくともいくつかの1つまたは複数の特性に基づいて複数のイントラ予測参照サンプルをフィルタリングするために使用される1つまたは複数のフィルタを適応的に無効にすることと、イントラ予測参照サンプルを使用してビデオデータをイントラコーディングすることとを備え得る。適応的に無効にすることは、CUに隣接するイントラ予測サンプルの1つまたは複数の特性に基づいて、CUの中の全てのPUまたはTUに対して1つまたは複数のフィルタを適応的に無効にすることを備え得る。いくつかの例では、適応的に無効にすることが、それぞれのPUまたはTUに隣接するイントラ予測サンプルの個々のセットの1つまたは複数の特性に基づいて、CUの中の個々のPUまたはTUに対して1つまたは複数のフィルタを適応的に無効にすることを備える。
[0183] 1つまたは複数のフィルタを適応的に無効にするために使用される1つまたは複数の特性は、複数の参照サンプル中の参照サンプル間のピクセル差分(例えば、絶対的なピクセル差分)が所定の閾値を超えるかどうかを含み得る。代替的に、または加えて、1つまたは複数の特性は、複数の参照サンプルの参照サンプル間のピクセル差分(例えば、絶対的なピクセル差分)が所定の閾値を超える事例の数のカウントが、カウント閾値を超えるかどうかを含み得る。代替的に、または加えて、1つまたは複数の特性は、複数の参照サンプルの参照サンプル間のピクセル差分(例えば、絶対的なピクセル差分)が第1の所定の閾値を超える事例の数のカウントが、第1のカウント閾値を超えるかどうかということと、複数の参照サンプルの参照サンプル間のピクセル差分(例えば、絶対的なピクセル差分)が第2の所定の閾値未満である事例の数のカウントが、第2のカウント閾値を超えるかどうかということとを含み得る。
[0184] 別の例として、1つまたは複数の特性は、複数の参照サンプルの参照サンプルに適用される3タップのFIRフィルタの出力(例えば、3タップのFIRフィルタの出力の絶対値)が閾値を超えるかどうかを含む。別の例として、1つまたは複数の特性は、複数の参照サンプルの参照サンプルに適用される3タップのFIRフィルタの出力(例えば、3タップのFIRフィルタの出力の絶対値)が閾値を超える事例のカウントが、カウント閾値を超えるかどうかを含む。FIRフィルタが適用される参照サンプルは、一度に1ピクセル、または一度に3ピクセルだけインクリメントされる、参照サンプルのアレイを通る経路中の3つの参照サンプルの連続的なセットを含み得る。FIRフィルタが適用される参照サンプルは、参照サンプルのアレイの中に、参照サンプルP2M-1,-1、P-1,-1、およびP-1,2N-1、参照サンプルP2M-1,-1、PM,-1、およびP-1,-1、または参照サンプルP-1,2N-1、P-1,N、およびP-1,-1を含み得る。
[0185] イントラ予測参照サンプルの少なくともいくつかの特性は、複数の予測モードの選択された1つに基づいて選択される複数の参照サンプルの全てよりも少ないサブセットの特性を含み得る。イントラ予測参照サンプルの少なくともいくつかの特性は、参照サンプルの上の行と左の列のいずれかの特性を含んでよく、上の行と左の列のいずれかは、上の行または左の列の参照サンプル間のピクセル差分が所定の閾値を超える事例の数のカウントに基づいて選択され、カウント閾値を超える。
[0186] いくつかの例では、ビデオコーダが、ブロックサイズ、成分タイプ、もしくは入力ビデオタイプの少なくとも1つに基づいて1つまたは複数の閾値を選択的に適応させ、並びに/または、ブロックサイズもしくは成分タイプの少なくとも1つに基づいて適応的に無効にするステップを選択的にオンおよびオフにできる。イントラ予測参照サンプルの少なくともいくつかの1つまたは複数の特性は、参照サンプルのサブサンプリングされたセットに対するものであり得る。様々な例において使用される閾値の1つまたは複数は、符号化されたビットストリームにおいて、例えばPPS、SPS、またはVPSの少なくとも1つにおいてシグナリングされ得る。
[0187] 別の例で、本開示はビデオデータをコーディングするための方法を説明し、この方法は、シンタックス要素に基づいて複数のイントラ予測参照サンプルをフィルタリングするために使用される1つまたは複数のフィルタを適応的に無効にすることと、イントラ予測参照サンプルを使用してビデオデータをイントラコーディングすることとを備える。シンタックス要素は、transform_skip_flagのような変換スキップシンタックス要素であってよく、この方法は、transform_skip_flagがオンにされるときに1つまたは複数のフィルタを無効にすることを備え得る。transfrom_skip_flagは、変換を伴わずに予測後の残差信号が量子化される、変換スキップ動作を呼び出す。代替的に、シンタックス要素は、cu_transquant_bypassフラグのような量子化および変換シンタックス要素であってよく、この方法は、cu_transquant_bypassフラグがオンにされるときに1つまたは複数のフィルタを無効にすることを備え得る。cu_transquant_bypass_flagは、予測されたブロックが量子化および変換を伴わずにコーディングされる動作を呼び出す。
[0188] 少なくともいくつかの例では、イントラコーディングが、例えばビデオデコーダ30におけるイントラ復号を備え、イントラ復号が、イントラ予測参照サンプル(フィルタリングされるか、部分的にフィルタリングされるか、1つまたは複数のフィルタを適応的に無効にした結果としてフィルタリングされないかのいずれか)および残差データに基づいて、ビデオデータをイントラ復号することを備える。この方法はさらに、デコーダ30において、1つまたは複数の特性に基づいて無効化フラグをオンにすること、または符号化されたビットストリームにおいて無効化フラグを受信することを備え得る。他の例では、イントラコーディングがイントラ符号化を備えてよく、イントラ符号化が、イントラ予測参照サンプル(フィルタリングされるか、部分的にフィルタリングされるか、1つまたは複数のフィルタを適応的に無効にした結果としてフィルタリングされないかのいずれか)および残差データに基づいて、ビデオデータをイントラ符号化することを備える。
[0189] 本開示はさらに、本明細書で説明される方法の任意の組合せ、さらには、ビデオデコーダ、ビデオエンコーダ、およびそのような方法の任意の組合せを行うように構成される他のデバイス、および実行されるとそのような方法の任意の組合せを行うように構成されるデバイスの1つまたは複数のプロセッサを引き起こす命令を記憶したコンピュータ可読記憶媒体を考慮する。
[0190] 上で与えられた例のいくつかは、フィルタを無効にするかどうかを決定するための暗黙的な導出方法である。暗黙的な導出方法は、明示的なシグナリングよりも小さな柔軟性しかエンコーダ側において提供できず、より小さなコーディング利得しか提供できない。本開示の追加の技法はさらに、HEVCまたは他のビデオコーディング規格のイントラ予測のためのフィルタリング動作を行うときに、エンコーダ側において複雑度を下げ、柔軟性を上げることができる。
[0191] 例えば、本開示は、イントラ予測のために使用される1つまたは複数のフィルタをオフにするためのシンタックス要素(フラグのような)をコーディングする(例えば、シグナリングする)ことに関する様々な技法を説明する。これらの技法は、単独で、または任意の組合せで使用され得る、以下で説明される技法を含み得る。一般に、本技法は、CUベース、CUの区画ベース、および/またはTUベースであり得る、様々な階層的シグナリングを含む。ビデオシーケンスフォーマットに応じて(例えば、ビデオデータが4:2:0フォーマットに適合するか、4:2:2フォーマットに適合するか、または4:4:4フォーマットに適合するか)、異なるシグナリング方法があり得る。本開示はまた、例えば、ブロックサイズおよび色成分のタイプ(例えば、ルミナンス、青色のクロミナンス、および/または赤色のクロミナンス)に基づく、シグナリング方法の制約を説明する。本開示はまた、シンタックス要素、例えばフラグをCABACコーディングするための技法を説明する。シンタックス要素は、CU、CUの区画、および/またはTUの中でシンタックス要素をシグナリングすることに加えて、またはその代わりに、VPS、SPS、PPS、および/またはスライスヘッダにおいてシグナリングされ得る。一般に、シンタックス要素は、1つまたは複数のイントラ予測フィルタが無効にされるかどうかを示し得る。
[0192] HEVCバージョン1では、イントラ予測の間のフィルタリング動作がTUに適用される。本開示の技法の例では、TUベースのシグナリング方法が提示される。言い換えると、フィルタリングのオン/オフの指示を制御するために、フラグがTU(すなわち、変換ツリーのリーフノード)においてシグナリングされ得る。いくつかの例では、3つの成分を別々に制御するために、3つのフラグがシグナリングされ得る。例えば、ルミナンス(ルーマまたはY)、青色のクロミナンス(Cb)、および赤色のクロミナンス(Cr)をそれぞれ制御するために、3つのフラグがシグナリングされ得る。代替的に、他の例では、2つのフラグがシグナリングされてよく、一方がルーマのフィルタリングを制御するためのものであり、他方が両方のクロマチャネル(CbおよびCr)のフィルタリングを制御するためのものである。そのような例では、CbおよびCrのためのフィルタリング動作が、クロマチャネルにおけるフラグのみを対象とし得る。
[0193] 図7は、2つの正方形のTUを含む例示的な長方形を示す概念図である。具体的には、長方形のブロックはTU0とTU1とを含む。一例では、イントラ予測のフィルタリングがTU0とTU1の各々に対して有効にされるかどうかをフラグが示すように、フラグが長方形のブロックのためにシグナリングされ得る。別の例では、別々のフラグがTU0およびTU1のためにシグナリングされてよく、ここで、TU0に対するフラグは、イントラ予測のフィルタリングがTU0に対して有効にされるかどうかを示し、TU1に対するフラグは、イントラ予測のフィルタリングがTU1に対して有効にされるかどうかを示す。
[0194] 4:2:2のビデオフォーマットに関するHEVC Range Extensionsのワーキングドラフトの仕様(すなわち、JCTVC−M1005−v2)に記述されるように、Cb/CrのためのTUの形状は非正方形であり得る。例えば、4:2:2のビデオフォーマットでは、Cb/CrのためのTUの形状が、図7に示されるように長方形であり得る。長方形はさらに、非正方形の変換の使用を避けるために、図7に示されるように、2つの正方形、例えばTU0およびTU1に分割される。この場合(4:2:2のビデオフォーマットおよびCb/Cr成分の変換)、ビデオエンコーダ20は、正方形(TU0およびTU1)の各々に対してフラグをシグナリングできる。代替的に、ビデオエンコーダ20は、フラグが両方の正方形の変換に関するフィルタリングを制御できるように、長方形だけのためのフラグをシグナリングできる。しかしながら、この事例は、4:2:2のビデオフォーマットおよびCb/Cr成分だけを対象とするものでない。すなわち、このシグナリング方法は、任意のビデオフォーマットにおける、Y成分だけでなくクロマ成分に対しても適用され得る任意の長方形の変換について一般化され得る。
[0195] ビデオエンコーダ20は、フラグがCUの区画の内部のTUの全てに対するフィルタリングのオン/オフを制御できるように、CUの区画(N×Nまたは2N×2N)においてフラグをシグナリングできる。いくつかの例では、ビデオエンコーダ20が、その区画に対して3つのフラグをシグナリングし、3つのフラグは各々が1つの成分(例えば、それぞれY、Cb、およびCr)に対応する。代替的に、ビデオエンコーダ20は、Y成分と、Cb成分およびCr成分(またはチャネル)の両方とにそれぞれ対応する、区画ごとの2つのフラグをシグナリングできる。この方式で、CbとCrの両方のためのフィルタリング動作は、クロマチャネルに対するフラグを対象とし得る。
[0196] 以下で図8および図9に関して詳細に説明されるように、CUの1つまたは複数の区画に対してフラグがシグナリングされ得る。フラグは、対応する区画のTUに対してフィルタリングが行われるべきかどうかを示し得る。図8および図9に示される例は、フラグがルーマ成分のためにどのようにシグナリングされ得るかを表す。クロミナンス成分に対して、変形形態が存在する。一例で、ビデオエンコーダ20は、CUがどのように区画されるかにかかわらず、クロミナンス成分に対するフラグを1回シグナリングする。別の例で、ビデオエンコーダ20は、クロマ成分ごとに(ルーマ成分の場合と同じ方式で)各区画ごとに1つのフラグをシグナリングできる。いくつかの例で、ビデオエンコーダ20は、ビデオデータが4:4:4のビデオフォーマットに準拠するときだけ、クロマ成分ごとに各区画のために1つのフラグをシグナリングする。
[0197] 図8は、4つのN×NのTUへと区画される例示的な2N×2NのCUを示す概念図である。図8は、(含んでいるCUが2N×2Nであると仮定して)4つのN×Nの区画へと区画されるCUの例を示す。図8に示されるように、4つの区画に対してそれぞれ4つのフラグがある。各フラグは、区画のそれぞれ1つの内部のフィルタリング動作を制御する。
[0198] 図9は、1つの2N×2Nの区画を有する例示的な2N×2NのCUを示す概念図である。図9は、1つの2N×2Nの区画へとCUが区画されるときの例を示す。図9に示されるように、TUの各々に対応する、区画全体に対する1つだけのフラグがある。
[0199] いくつかの例では、フラグがCU内部の全てのフィルタリング動作を制御するように、ビデオエンコーダ20が、CUの区画の形状とは無関係に、CUの中で一度フラグをシグナリングできる。例えば、ビデオエンコーダ20は、各々がY成分、Cb成分、およびCr成分のそれぞれ1つに対するフィルタリングを制御する、3つのフラグをシグナリングできる。代替的に、ビデオエンコーダ20は、2つのフラグをシグナリングでき、一方はルーマチャネルのフィルタリングを制御するためのものであり、他方はクロマチャネルのフィルタリングを制御するためのものである。CbとCrの両方のためのフィルタリング動作は、クロマチャネルに対してシグナリングされるフラグを対象とし得る。
[0200] いくつかの例では、イントラ予測におけるフィルタリングを制御するためのフラグのシグナリングが、1つまたは複数の様々な方法で制約され得る。例えば、TUおよび/またはCUのサイズ、区画の形状、およびまたはチャネル/成分のタイプに基づく制約があり得る。様々な制約は、独立であってよく、または1つまたは複数の結合条件を形成するために、組み合わされてよい。いくつかの例示的な制約が以下で列挙され、これらも単独で、または任意の組合せで使用され得る。
− CU区画がN×Nである場合にのみ、フラグがシグナリングされる。
− CUサイズが、スライスヘッダ、PPS、SPS、および/またはVPSにおいてシグナリングされ得る(またはシグナリングされ得ない)閾値未満である場合にのみ、フラグがシグナリングされる。
− TUサイズが、スライスヘッダ、PPS、SPS、および/またはVPSにおいてシグナリングされ得る(またはシグナリングされ得ない)閾値未満である場合にのみ、フラグがシグナリングされる。
− ある予測モードが使用される場合にのみ、フラグがシグナリングされる。
− スライスヘッダ、PPS、SPS、および/またはVPSにおいてシグナリングされるフラグによって方法が許可される場合にのみ、フラグがシグナリングされる。
− ルーマチャネルまたはY成分のみに対して、フラグがシグナリングされる。
− CUサイズがサポートされる最小のCUサイズである場合にのみ、フラグがシグナリングされる。
− TUサイズがサポートされる最小のTUサイズである場合にのみ、フラグがシグナリングされる。
− コーディングされたブロックフラグ(CBF)がTUにおいて1に設定される場合にのみ、フラグがシグナリングされる。
[0201] 上でシグナリングを論じる際に、ビデオエンコーダ20は一般に、ビデオエンコーダ20がフラグのようなシンタックス要素の値を符号化できるという意味で、フラグの値をシグナリングすることを理解されたい。言い換えると、ビデオエンコーダ20は、ビットストリーム中に、シンタックス要素の値を示すデータを含め得る。ビデオデコーダ30は同様に、シンタックス要素の値を復号できる。言い換えると、ビデオデコーダ30は、ビットストリーム中のデータに基づいて、シンタックス要素の値を決定できる。より一般的には、シンタックス要素の値の符号化および復号は、シンタックス要素の値を「コーディングする」ものとして呼ばれることがある。ビデオエンコーダ20およびビデオデコーダ30は、CABACを使用してシンタックス要素の値をコーディングできる。
[0202] シンタックス要素にCABAC符号化を適用するために、ビデオエンコーダは、「ビン」と呼ばれる一連の1つまたは複数のビットを形成するためにシンタックス要素を二値化できる。加えて、ビデオエンコーダは、コーディングコンテキストを特定できる。コーディングコンテキストは、特定の値を有するビンをコーディングする確率を特定できる。例えば、コーディングコンテキストは、0の値のビンをコーディングする0.7の確率と、1の値のビンをコーディングする0.3の確率とを示し得る。コーディングコンテキストを特定した後、ビデオエンコーダは、間隔を下位サブ間隔と上位サブ間隔とに分割できる。サブ間隔の一方は値0と関連付けられてよく、他方のサブ間隔は値1と関連付けられてよい。サブ間隔の幅は、関連付けられる値について、特定されたコーディングコンテキストによって示される確率に比例し得る。シンタックス要素のビンが下位サブ間隔と関連付けられる値を有する場合、符号化された値は下位サブ間隔の下位境界に等しくなり得る。シンタックス要素の同じビンが上位サブ間隔と関連付けられる値を有する場合、符号化された値は上位サブ間隔の下位境界に等しくなり得る。シンタックス要素の次のビンを符号化するために、ビデオエンコーダは、符号化されたビットの値と関連付けられたサブ間隔である間隔で、これらのステップを繰り返すことができる。ビデオエンコーダが次のビンについてこれらのステップを繰り返すとき、ビデオエンコーダは、特定されたコーディングコンテキストおよび符号化されたビンの実際の値によって示される確率に基づく、修正された確率を使用できる。
[0203] ビデオデコーダがシンタックス要素に対してCABAC復号を行うとき、ビデオデコーダはコーディングコンテキストを特定できる。ビデオデコーダは次いで、間隔を下位サブ間隔と上位サブ間隔とに分割できる。サブ間隔の一方は値0と関連付けられてよく、他方のサブ間隔は値1と関連付けられてよい。サブ間隔の幅は、関連付けられる値について、特定されたコーディングコンテキストによって示される確率に比例し得る。符号化された値が下位サブ間隔内にある場合、ビデオデコーダは、下位サブ間隔と関連付けられる値を有するビンを復号できる。符号化された値が上位サブ間隔内にある場合、ビデオデコーダは、上位サブ間隔と関連付けられる値を有するビンを復号できる。シンタックス要素の次のビンを復号するために、ビデオデコーダは、符号化された値を含んでいるサブ間隔である間隔で、これらのステップを繰り返し得る。ビデオデコーダが次のビンについてこれらのステップを繰り返すとき、ビデオデコーダは、特定されたコーディングコンテキストおよび復号されたビンによって示される確率に基づく、修正された確率を使用できる。ビデオデコーダは次いで、ビンを逆二値化してシンタックス要素を復元できる。
[0204] いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30が、チャネルごとに(または代替的に、各成分に対して)1つのコンテキストを使用して、シンタックス要素をコーディングするためのコンテキスト(すなわち、コーディングコンテキスト)を決定できる。代替的に、1つまたは複数の隣接ブロック(例えば、左の、並びに/または上の、隣接CU、PU、および/もしくはTU)における1つまたは複数のシグナリングされたフラグによって決定される、2つのコンテキストインデックスがあり得る。一例として、左の隣接CU、PU、またはTUの中のフラグが0に等しく設定される場合、または利用不可能である場合、ビデオエンコーダ20およびビデオデコーダ30は、現在のCU、PU、またはTUのフラグをCABACコーディングするためのコンテキストインデックスが0であると決定できる。別の例として、左の隣接ブロック中のフラグが利用可能であり1に等しい場合、ビデオエンコーダ20およびビデオデコーダ30は、現在のCU/PU/TUのフラグをCABACコーディングするためのコンテキストインデックスが1であると決定できる。
[0205] さらに別の例として、左の隣接ブロック(例えば、CU、PU、および/またはTU)中のシグナリングされたフラグ、および上の隣接ブロック(例えば、CU、PU、および/またはTU)中のフラグによって決定される、3つのコンテキストがあり得る。ビデオエンコーダ20およびビデオデコーダ30は、次のようにコンテキストインデックス(ctxIdx)を決定できる。
式(1)の例で、FlagLeftおよびFlagAboveは、左および上のCU、PU、またはTUの中のシグナリングされるフラグをそれぞれ指し、AvailLeftおよびAvailAboveは、フラグが利用可能であるかどうかを指す。利用可能である場合、それらは1である。それ以外の場合、それらは0である。
[0206] 代替的に、ビデオエンコーダ20およびビデオデコーダ30は、隣接参照サンプルから得られる測定結果とともにコンテキストを導出できる。本開示で提供される例の1つまたは複数において、フィルタのセットをオン/オフするためのいくつかの暗黙的な基準があり、それらの基準は次のようなコンテキストインデックスの導出のために使用され得る。
− 参照サンプルの分散
− 2つの隣り合うピクセルの間の絶対的差分和
− 閾値よりも大きなピクセル間の最大の差分(例えば、絶対的な差分)
− 閾値よりも大きな最大の差分(例えば、最大の絶対的な差分)を有する回数のカウント
− [1,−2,1]FIRフィルタリングおよび閾値よりも大きな結果(例えば、結果の絶対値)
− ピクセル差分の符号変化のカウント
− 上の基準の任意の組合せ
[0207] 加えて、または代替的に、いくつかのシンタックス要素がコンテキストインデックスの導出において考慮され得る。
− 予測モード
− ブロックサイズ
− 区画サイズ
[0208] いくつかの例では、イントラ予測のためのフィルタが無効にされるべきかどうかを表すシンタックス要素(例えば、フラグ)の値をビデオエンコーダ20およびビデオデコーダ30が暗黙的に導出するように構成され得る。暗黙的に導出されるとき、ビデオエンコーダ20はシンタックス要素の値をシグナリングする必要はなく、ビデオデコーダ30はシンタックス要素の値を受信する必要はない。
[0209] いくつかの例では、閾値よりも小さな(または代替的には大きな)ブロックサイズに対して、ビデオエンコーダ20およびビデオデコーダ30がフラグの値を暗黙的に導出できる。導出基準は、本開示の他の例で説明されるものと同じであり得る。それ以外の場合、フラグは明示的にシグナリングされ得る。
[0210] 一例では、ルーマチャネル(またはY成分)に対して、ビデオエンコーダ20およびビデオデコーダ30がフラグを暗黙的に導出するが、クロマチャネル(またはCb成分、Cr成分)に対して、ビデオエンコーダ20およびビデオデコーダ30がフラグの値を明示的にコーディングできる。代替的に、ルーマチャネル(またはY成分)に対しては、ビデオエンコーダ20およびビデオデコーダ30はフラグの値をコーディングできるが、クロマチャネル(またはCb成分、Cr成分)に対しては、ビデオエンコーダ20およびビデオデコーダ30はフラグの値を暗黙的に導出できる。
[0211] いくつかの例では、いくつかのフィルタが暗黙的な導出の方法とともに適応的にオン/オフされるが、他のフィルタのためのフラグが明示的にシグナリングされる。すなわち、同じブロックに対して、1つまたは複数のフィルタは明示的にコーディングされるフラグを使用して明示的に有効または無効にされ得るが、1つまたは複数の他のフィルタは暗黙的な導出を使用して有効または無効にされ得る。
[0212] いくつかの例では、ハイレベルシンタックス(HLS)フラグが、スライスヘッダ、PPS、SPS、および/またはVPSにおいてシグナリング(例えば、コーディング)され得る。ビデオエンコーダ20およびビデオデコーダ30は、イントラ予測フィルタリングを示す、スライスヘッダ、PPS、SPS、および/またはVPSの1つまたは複数の中の対応するフラグが有効にされ得るときにのみ、CU、PU、および/またはTUのレベルで、同様のフラグの値をコーディングできる。
[0213] 一般に、上の例では、1つまたは複数のフィルタが、シンタックス要素または暗黙的な導出を使用して、有効または無効にされ得る。例えば、フィルタは、MDISフィルタ、1/32ピクセル(ペル)の双線形補間フィルタ、境界フィルタ、エッジフィルタ、および/またはDCフィルタのいずれかまたは全てを含み得る。VPS、SPS、PPS、および/またはスライスヘッダは、CU、PU、および/またはTUのレベルのシンタックス要素(例えば、フラグ)の1つまたは複数に基づいて、どのフィルタがオフに切り替えられる(または有効にされ得る)かを指定できる。
[0214] 本開示の別の例では、フィルタリング無効化フラグがCUレベルまたはTUレベルにおいて明示的にシグナリングされると仮定される。そのような例では、ビデオエンコーダ20が、TUレベルで、CBFの前にフィルタリング無効化フラグをシグナリングできる。例えば、フィルタリング無効化フラグは、transfrom_treeシンタックス構造においてCBFよりも前に配置され得る。従って、この仮定のもとでは、フィルタリング無効化フラグが常に、(transfrom_treeシンタックス要素においてCBFの後に現れるtransfrom_unitシンタックス構造中のresidual_codingシンタックス構造においてシグナリングされる)transfrom_skip_flagシンタックス要素の前にシグナリングされる。上で示されたように、transfrom_skip_flagシンタックス要素の値は変換スキップ動作を呼び出すことができ、ここで予測後の残差信号は変換を伴わずに(例えば、DCTの適用を伴わず)量子化され得る。
[0215] 上で説明された本開示の様々な例は、フィルタリング無効化フラグが変換スキップフラグおよび/または任意の暗黙的な導出の方法によって決定される技法を提供する。フィルタリング無効化フラグの明示的なシグナリングに関する本開示の追加の例によれば、フィルタリング無効化フラグの動作はさらに、transform_skip_flagシンタックス要素の値に基づいて変更され得る。この例によれば、フィルタリング無効化フラグが1であり(または、フィルタリングが有効にされ得ることを示す何らかの他の値を有し)、TUに対するtransform_skip_flagシンタックス要素が0(または変換がTUに対してスキップされるべきであること、すなわちTUに変換が適用されるべきでないことを示す別の値)であるとき、HEVC Range Extensions(JCTVC−M1005−v2)仕様のセクション8.4.4.2.6において記述されるようなフィルタリングが適用され得る。言い換えると、ビデオコーダは、JCTVC−M1005−v2の式(8−52)または(8−60)の双線形フィルタリングまたはJCTVC−M1005−v2の式(8−53)または(8−61)の最近傍補間を適用できる。しかしながら、フィルタリング無効化フラグが1(フィルタリングが無効にされ得ることを示す何らかの他の値)であり、TUに対するtransform_skip_flagが1(またはTUに変換を適用すべきかどうかが他のシンタックス要素に依存することを示す何らかの他の値)であるとき、フィルタリングは無効にされ得る。フィルタリング無効化フラグが0であるとき、HEVC Range Extensions仕様(JCTVC−M1005−v2)におけるようなフィルタリングが、transform_skip_flagとは無関係に適用され得る。言い換えると、ビデオコーダは、JCTVC−M1005−v2の式(8−52)または(8−60)の双線形フィルタリングまたはJCTVC−M1005−v2の式(8−53)または(8−61)の最近傍補間を適用できる。
[0216] 無損失コーディングの場合、フィルタリングの適用は、transform_skip_flagの代わりにtransquant_bypass_flagに依存して行われ得る。例えば、変換および量子化がTUに対してはスキップされるべきであることを示す値を、TUを含むCUのtransquant_bypass_flagシンタックス要素が有するとき、ビデオコーダは、JCTVC−M1005−v2のセクション8.4.4.2.6において説明されるようなフィルタリングを適用できる。しかしながら、変換および量子化がTUに対してはスキップされることを示す値を、cu_transquant_bypass_flagが有しないとき、ビデオコーダはフィルタリングを無効にできる。代替的に、フィルタリングの適用は、無損失コーディングにおいてフィルタリング無効化フラグのみに依存し得る。
[0217] 別の例では、フィルタリングの無効化が、本開示の様々な例において説明される3タップのFIRフィルタ[1,−2,1]のような、任意の暗黙的な導出方法に基づき得る。この場合、フィルタリング無効化フラグが1であり、FIRフィルタリングの結果が閾値を下回る場合、JCTVC−M1005−v2におけるようなフィルタリングが適用され得る。フィルタリング無効化フラグが1であり、FIRフィルタリングの結果が閾値を上回る場合、フィルタリングが無効にされ得る。フィルタリング無効化フラグが0であるとき、JCTVC−M1005−v2におけるようなフィルタリングが、transform_skip_flagとは無関係に適用され得る。さらに、いくつかの例では、フィルタリングを適用するための基準が、本開示の他の例において説明されるように、transform_skip_flagと1つまたは複数の暗黙的な導出の方法との組合せにより条件付けられ得る。
[0218] 図10は、本開示の技法を実装できる例示的なビデオエンコーダ20を示すブロック図である。図10は、説明のために提供されるものであり、本開示で広く例示され説明される技法を限定するものと見なされるべきでない。説明の目的で、本開示は、HEVCコーディングの文脈においてビデオエンコーダ20を説明する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
[0219] ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラコーディングとインターコーディングとを行い得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオにおける空間的冗長性を低減または除去するために、空間的予測に依存する。インターコーディングは、ビデオシーケンスの隣接するフレーム内またはピクチャ内のビデオの時間的な冗長性を低減または除去するために、時間的予測に依拠する。イントラモード(Iモード)は、いくつかの空間ベースの圧縮モードのいずれかを指し得る。単方向予測(Pモード)または双予測(Bモード)のようなインターモードは、いくつかの時間ベースの圧縮モードのいずれかを指し得る。
[0220] 図10の例では、ビデオエンコーダ20が、予測処理ユニット100と、残差生成ユニット102と、変換処理ユニット104と、量子化ユニット106と、逆量子化ユニット108と、逆変換処理ユニット110と、再構築ユニット112と、フィルタユニット114と、復号ピクチャバッファ116と、エントロピー符号化ユニット118とを含む。予測処理ユニット100は、インター予測処理ユニット120と、イントラ予測処理ユニット126とを含む。予測処理ユニット100は、「モード選択ユニット」と呼ばれることもある。インター予測処理ユニット120は、動き推定ユニット122と、動き補償ユニット124とを含む。動き推定ユニット122および動き補償ユニット124は、高度に統合され得るが、概念的な目的のために別々に示されている。ビデオエンコーダ20は、逆量子化ユニット108と、逆変換処理ユニット110と、ビデオブロックの再構築のための再構築ユニット112とを含む。いくつかの例では、残差生成ユニット102および/または再構築ユニット112が加算器である。他の例では、ビデオエンコーダ20が、より多数の、より少数の、または異なる機能コンポーネントを含み得る。
[0221] ビデオエンコーダ20は、ビデオデータを受信できる。ビデオエンコーダ20は、ビデオデータのピクチャのスライス中の各CTUを符号化できる。CTUの各々は、等しいサイズのルーマコーディングツリーブロック(CTB)およびピクチャの対応するCTBと関連付けられ得る。CTUを符号化することの一部として、予測処理ユニット100は、CTUのCTBを徐々により小さくなるブロックに分割するために、4分木区分を行い得る。より小さいブロックは、CUのコーディングブロックであり得る。例えば、予測処理ユニット100は、CTUと関連付けられたCTBを4つの等しいサイズのサブブロックに区画でき、サブブロックの1つまたは複数を4つの等しいサイズのサブサブブロックに区画でき、以下同様である。
[0222] 図10に示されたように、ビデオエンコーダ20はビデオデータを受信し、データをビデオブロックに区画する。言い換えると、符号化処理の間に、ビデオエンコーダ20はコーディングされるべきビデオフレームまたはスライスを受信する。いくつかの例では、ビデオエンコーダ20の区画モジュール(図示されず)が、データをビデオブロックへと区画する。言い換えると、区画モジュールは、(例えば、以前のコーディングパスにおける以前の区画方式の評価に基づいて)ビデオデータのブロックをサブブロックに区画できる。例えば、区画処理ユニット100は、最初は、レートひずみ分析(例えば、レートひずみ最適化)に基づいて、フレームまたはスライスをLCUに区画し、LCUの各々をサブCUに区画できる。予測処理ユニット100はさらに、LCUをサブCUに区画することを示す4分木データ構造を生成できる。4分木のリーフノードCUは、1つまたは複数のPUと1つまたは複数のTUとを含み得る。この区画はまた、例えばLCUおよびCUの4分木構造に従って、スライス、タイル、または他のより大きなユニットへの区画を、ビデオブロックの区画とともに含み得る。ビデオエンコーダ20は一般に、符号化されるべきビデオスライス内のビデオブロックを符号化するコンポーネントを示す。スライスは、複数のビデオブロック(場合によってはタイルと呼ばれるビデオブロックのセット)に分割され得る。予測処理ユニット100は、誤差の結果(例えば、コーディングレートおよびひずみレベル)に基づいて、現在のビデオブロックのために、複数のイントラコーディングモードの1つ、または複数のインターコーディングモードの1つのように、複数の可能なコーディングモードのうちの1つを選択できる。予測処理ユニット100は、イントラ予測を行うための本開示の技法を実施するように構成され得る。予測処理ユニット100は、得られたイントラコーディングされたブロックまたはインターコーディングされたブロックを残差生成ユニット102(例えば、加算器)に提供して残差ブロックデータを生成し、再構築ユニット112(例えば、加算器)に提供して参照ピクチャとして使用するための符号化されたブロックを再構築できる。
[0223] ビデオエンコーダ20は、CUの符号化された表現(すなわち、コーディングされたCU)を生成するために、CTUのCUを符号化できる。CUを符号化することの一部として、予測処理ユニット100は、CUの1つまたは複数のPUの間で、CUと関連付けられたコーディングブロックを区分できる。従って、各PUは、ルーマ予測ブロックおよび対応するクロマ予測ブロックと関連付けられ得る。ビデオエンコーダ20およびビデオデコーダ30は、様々なサイズを有するPUをサポートできる。上で示されたように、CUのサイズはCUのルーマコーディングブロックのサイズを指すことがあり、PUのサイズはPUのルーマ予測ブロックのサイズを指すことがある。特定のCUのサイズが2N×2Nであると仮定すると、ビデオエンコーダ20およびビデオデコーダ30は、イントラ予測の場合は2N×2NまたはN×NのPUサイズをサポートでき、インター予測の場合は2N×2N、2N×N、N×2N、N×N、または同様の対称のPUサイズをサポートできる。ビデオエンコーダ20およびビデオデコーダ30はまた、インター予測のための2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズに対して非対称な区画をサポートできる。
[0224] 予測処理ユニット100内のイントラ予測処理ユニット126は、空間的圧縮を行うために、コーディングされるべき現在のブロックと同じフレームまたはスライス中の1つまたは複数の隣接ブロックに対する現在のビデオブロックのイントラ予測コーディングを行い得る。様々な例において、イントラ予測処理ユニット126は、符号化処理のイントラ予測の間のフィルタリングを適応的に制御するための、本明細書で説明される技法の1つまたは複数を行い得る。予測処理ユニット100内の動き推定ユニット122および動き補償ユニット124は、時間的圧縮を行うために、1つまたは複数の参照ピクチャ中の1つまたは複数の予測ブロックに対する現在のビデオブロックのインター予測コーディングを行う。
[0225] インター予測処理ユニット120は、CUの各PUに対してインター予測を行うことによって、PUのための予測データを生成できる。PUのための予測データは、PUの予測ブロックとPUのための動き情報とを含み得る。インター予測処理ユニット120は、PUがIスライス内にあるか、Pスライス内にあるか、またはBスライス内にあるかに応じて、CUのPUに対して異なる動作を行い得る。Iスライスでは、全てのPUがイントラ予測される。従って、PUがIスライス内にある場合、インター予測処理ユニット120はPUに対してインター予測を行わない。いくつかの例では、動き推定ユニット122が、ビデオシーケンスの所定のパターンに従ってビデオスライスのためのインター予測モードを決定するように構成され得る。所定のパターンは、シーケンス中のビデオスライスを、Pスライス、Bスライス、またはGPBスライスとして指定し得る。ビデオエンコーダ20は、例えば、ビデオデータの各ブロック対する適切なコーディングモードを選択するために、複数のコーディングパスを行い得る。
[0226] 動き推定ユニット122によって行われる動き推定は、動きベクトルを生成する処理であり、ビデオブロックの動きを推定する。動きベクトルは、例えば、参照ピクチャ内の予測ブロックに対する現在のビデオフレームまたはピクチャ内のビデオブロックのPUの変位を示し得る。動き推定ユニット122は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコーディングされたスライス中のビデオブロックのPUに対する動きベクトルを計算できる。参照ピクチャは、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択されてよく、それらの参照ピクチャリストの各々は、復号ピクチャバッファ116に記憶された1つまたは複数の参照ピクチャを特定する。動き推定ユニット122は、計算された動きベクトルをエントロピー符号化ユニット118と動き補償ユニット124とに送る。
[0227] 予測ブロックは、絶対値差分和(SAD)、差分2乗和(SSD)、または他の差分のメトリックによって決定され得るピクセル差分に関して、コーディングされるべきビデオブロックのPUと厳密に一致することが見出されるブロックである。いくつかの例では、ビデオエンコーダ20が、復号ピクチャバッファ116(すなわち、参照フレームメモリ)に記憶された参照ピクチャのサブ整数ピクセル位置の値を計算できる。例えば、ビデオエンコーダ20は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数のピクセル位置の値を補間できる。従って、動き推定ユニット122は、完全なピクセル位置および分数のピクセル位置に対して動き探索を行い、分数のピクセル精度で動きベクトルを出力できる。
[0228] 動き補償ユニット124によって行われる動き補償は、動き推定によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成すること、場合によってはサブピクセル精度への補間を行うことを含み得る。現在のビデオブロックのPUに対する動きベクトルを受信すると、動き補償ユニット124は、動きベクトルが参照ピクチャリストの1つにおいて指す予測ブロックを位置特定できる。ビデオエンコーダ20(例えば、ビデオエンコーダ20の残差生成ユニット102)は、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって残差ビデオブロックを形成できる。一般に、動き推定ユニット122は、ルーマ成分に対する動き推定を行い、動き補償ユニット124は、クロマ成分とルーマ成分の両方のために、ルーマ成分に基づいて計算された動きベクトルを使用する。ピクセル差分値は、ブロックのための残差データを形成し、ルーマ差分成分とクロマ差分成分の両方を含み得る。残差生成ユニット102(例えば、「加算器」)は、この減算動作を行う1つまたは複数のコンポーネントを表し得る。動き補償ユニット124はまた、ビデオスライスのビデオブロックを復号する際にビデオデコーダ30が使用するための、ビデオブロックとビデオスライスとに関連付けられたシンタックス要素を生成できる。
[0229] PUがPスライス中にある場合、動き推定ユニット122は、PUのための参照領域について参照ピクチャのリスト(例えば、「RefPicList0」)中の参照ピクチャを探索できる。PUのための参照領域は、PUの予測ブロックに最も密接に対応するサンプルを含んでいる参照ピクチャ内の領域であり得る。動き推定ユニット122は、PUのための参照領域を含んでいる参照ピクチャのRefPicList0中の位置を示す参照インデックスを生成できる。加えて、動き推定ユニット122は、PUのコーディングブロックと参照領域と関連付けられた参照位置との間の空間変位を示す動きベクトルを生成できる。例えば、動きベクトルは、現在のピクチャにおける座標から参照ピクチャにおける座標までのオフセットを与える2次元ベクトルであり得る。動き推定ユニット122は、PUの動き情報として、参照インデックスと動きベクトルとを出力できる。動き補償ユニット124は、PUの動きベクトルによって示された参照位置における実際のサンプルまたは補間サンプルに基づいて、PUの予測ブロックを生成できる。
[0230] PUがBスライス中にある場合、動き推定ユニット122は、PUのために単予測または双予測を行い得る。PUのための単予測を行うために、動き推定ユニット122は、PUのための参照領域についてRefPicList0または第2の参照ピクチャリスト(「RefPicList1」)の参照ピクチャを探索できる。動き推定ユニット122は、PUの動き情報として、参照領域を含んでいる参照ピクチャのRefPicList0またはRefPicList1中の位置を示す参照インデックスと、PUの予測ブロックと参照領域と関連付けられた参照位置との間の空間変位を示す動きベクトルと、参照ピクチャがRefPicList0中にあるかRefPicList1中にあるかを示す1つまたは複数の予測方向インジケータとを出力できる。動き補償ユニット124は、PUの動きベクトルによって示された参照位置における実際のまたは補間されたサンプルに少なくとも部分的に基づいて、PUの予測ブロックを生成できる。
[0231] PUのための双方向インター予測を行うために、動き推定ユニット122は、PUのための参照領域についてRefPicList0中の参照ピクチャを探索でき、また、PUのための別の参照領域についてRefPicList1中の参照ピクチャを探索できる。動き推定ユニット122は、参照領域を含んでいる参照ピクチャのRefPicList0およびRefPicList1中の位置を示す参照インデックスを生成できる。加えて、動き推定ユニット122は、参照領域と関連付けられた参照位置とPUの予測ブロックとの間の空間変位を示す動きベクトルを生成できる。PUの動き情報は、PUの参照インデックスと動きベクトルとを含み得る。動き補償ユニット124は、PUの動きベクトルによって示された参照位置における実際のまたは補間されたサンプルに少なくとも部分的に基づいて、PUの予測ブロックを生成できる。
[0232] イントラ予測処理ユニット126は、PUに対してイントラ予測を行うことによって、PUのための予測データを生成できる。言い換えると、イントラ予測処理ユニット126は、上で説明されたように、動き推定ユニット122と動き補償ユニット124とによって行われるインター予測の代替として、現在のブロックをイントラ予測できる。PUのための予測データは、PUのための予測ブロックと様々なシンタックス要素とを含み得る。イントラ予測処理ユニット126は、Iスライス、Pスライス、およびBスライス中のPUに対してイントラ予測を行い得る。
[0233] イントラ予測処理ユニット126は、現在のブロックを符号化するために使用すべきイントラ予測モードを決定できる(例えば、PUのための予測ブロックを決定できる)。例えば、PUに対してイントラ予測を行うために、イントラ予測処理ユニット126は、複数のイントラ予測モードを使用して、PUのための予測ブロックの複数のセットを生成できる。言い換えると、イントラ予測処理ユニット126は、例えば別々の符号化パスの間に、様々なイントラ予測モードを使用して現在のブロックを符号化でき、イントラ予測処理ユニット126(またはいくつかの例では、モード選択ユニット)は、試験されたモードから使用すべき適切なイントラ予測モードを選択できる。
[0234] いくつかの例では、イントラ予測ユニット126が、様々な試験されたイントラ予測モードに対して、レートひずみ分析を使用してレートひずみの値を計算でき、試験されたモードの中から最良のレートひずみ特性を有するイントラ予測モードを選択できる。レートひずみ分析は、一般に、符号化されたブロックと、符号化されたブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみ(すなわち、誤差)の量、さらには、符号化されたブロックを生成するために使用されるビットレート(すなわち、ビットの数)とを決定する。イントラ予測処理ユニット126は、符号化された様々なブロックのひずみおよびレートから比を算出し、どのイントラ予測モードがブロックに対して最良のレートひずみ値を示すかを決定できる。
[0235] 特定のイントラ予測モードを使用してイントラ予測を行うとき、イントラ予測処理ユニット126は、隣接ブロックからのサンプルの特定のセットを使用してPUの予測ブロックを生成できる。隣接ブロックは、PU、CU、およびCTUについて左から右、上から下の符号化順序を仮定すると、PUの予測ブロックの上、右上、左上、または左にあり得る。イントラ予測処理ユニット126は、様々な数のイントラ予測モード、例えば33個の方向性イントラ予測モードを使用できる。いくつかの例では、イントラ予測モードの数が、PUの予測ブロックのサイズに依存し得る。
[0236] いくつかの例では、イントラ予測処理ユニット126が、隣接参照サンプル間の絶対的差分和に少なくとも一部基づいて、メトリックを計算できる。加えて、イントラ予測処理ユニット126は、そのメトリックに少なくとも一部基づいて、隣接参照サンプルに基づいて予測ブロックを生成するときに、最近傍補間を使用するかどうかを決定できる。いくつかの例では、イントラ予測処理ユニット126が最近傍補間を使用するという決定を行わないとき、イントラ予測処理ユニット166が双線形補間を使用できる。ビデオエンコーダ20は、ビデオデータのビットストリームに、予測ブロックに基づいて残差データを表すデータを含め得る。
[0237] 別の例では、イントラ予測処理ユニット126が、隣接参照サンプル間の絶対的差分和に少なくとも一部基づいて、メトリックを計算できる。メトリックが閾値よりも大きくないとき、イントラ予測処理ユニット126は、平滑化フィルタリングまたは双線形補間フィルタリングを隣接参照サンプルに適用できる。加えて、イントラ予測処理ユニット126は、隣接参照サンプルに少なくとも一部基づいて、予測ブロックを生成できる。ビデオエンコーダ20は、ビデオデータのビットストリームに、予測ブロックに基づいて残差データを表すデータを含め得る。
[0238] 別の例では、予測ブロック中の各々のそれぞれのサンプルに対して、イントラ予測処理ユニット126が、それぞれのサンプルの位置およびイントラ予測の角度に少なくとも一部基づいて、変数を決定できる。変数が特定の値に等しくないとき、イントラ予測処理ユニット126は、第1のメトリックに少なくとも一部基づいて、平滑化フィルタリングおよび双線形補間フィルタリングの中から第1のフィルタリングモードを選択できる。加えて、変数が特定の値に等しくないとき、イントラ予測処理ユニット126は、第1の選択されたフィルタリングモードを1つまたは複数のイントラ予測参照サンプルに適用することによって少なくとも一部、それぞれのサンプルの値を決定できる。変数が特定の値に等しいとき、イントラ予測処理ユニット126は、第2のメトリックに少なくとも一部基づいて、平滑化フィルタリングおよび双線形補間フィルタリングの中から第2のフィルタリングモードを選択できる。イントラ予測処理ユニット126は、第2の選択されたフィルタリングモードを1つまたは複数のイントラ予測参照サンプルに適用することによって少なくとも一部、それぞれのサンプルの値を決定できる。ビデオエンコーダ20は、ビデオデータのビットストリームに、予測ブロックに基づいて残差データを表すデータを含め得る。
[0239] 別の例では、予測ブロック中の各々のそれぞれの予測サンプルに対して、イントラ予測処理ユニット126が、メトリックに少なくとも一部基づいて、双線形補間および最近傍補間の中から補間モードを選択できる。イントラ予測処理ユニット126は、選択された補間モードに基づいて、それぞれの予測サンプルを決定できる。さらに、ビデオエンコーダ20は、ビデオデータのビットストリームに、予測ブロックに基づいて残差データを表すデータを含め得る。
[0240] ブロックのイントラ予測モードを選択した後に、イントラ予測処理ユニット126は、エントロピー符号化ユニット118にブロックのための選択されたイントラ予測モードを示す情報を提供できる。エントロピー符号化ユニット118は、本開示の技法に従って、選択されたイントラ予測モードを示す情報を符号化できる。ビデオエンコーダ20は、複数のイントラ予測モードインデックステーブルおよび複数の修正されたイントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)と、様々なブロックに対する符号化コンテキストの定義と、コンテキストの各々に対して使用すべき、最確イントラ予測モード、イントラ予測モードインデックステーブル、および修正されたイントラ予測モードインデックステーブルの指示とを含み得る構成データを、送信されるビットストリームに含め得る。
[0241] 予測処理ユニット100は、PUについてインター予測処理ユニット120によって生成された予測データ、またはPUについてイントラ予測処理ユニット126によって生成された予測データの中から、CUのPUのための予測データを選択できる。いくつかの例では、予測処理ユニット100が、予測データのセットのレート/歪みのメトリックに基づいて、CUのPUのための予測データを選択する。選択された予測データの予測ブロックは、本明細書で、選択された予測ブロックと呼ばれ得る。言い換えると、(モード選択ユニットとして動作する)予測処理ユニット100は、例えば誤差の結果に基づいて、コーディングモード、すなわち、イントラまたはインターのうちの1つを選択でき、得られたイントラコーディングされたブロックまたはインターコーディングされたブロックを、残差ブロックデータを生成するために残差生成ユニット102に提供し、参照フレームとして使用するための符号化されたブロックを再構築するために再構築ユニット112に提供できる。予測処理ユニット100はまた、動きベクトル、イントラモードインジケータ、区画情報、および他のそのようなシンタックス情報のようなシンタックス要素を、エントロピー符号化ユニット118に提供できる。
[0242] 残差生成ユニット102は、CUのコーディングブロック(例えば、ルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロック)、並びにCUのPUの選択された予測ブロック(例えば、ルーマブロック、Cbブロック、およびCrブロック)に基づいて、CUの残差ブロック(例えば、ルーマ残差ブロック、Cb残差ブロック、およびCr残差ブロック)を生成できる。例えば、残差生成ユニット102は、残差ブロック中の各サンプルが、CUのコーディングブロック中のサンプルとCUのPUの対応する選択された予測ブロック中の対応するサンプルとの差分に等しい値を有するように、CUの残差ブロックを生成できる。いくつかの例では、予測処理ユニット100がインター予測とイントラ予測のいずれかを介して現在のビデオブロックのための予測ブロックを生成した後、ビデオエンコーダ20(例えば、ビデオエンコーダ20の残差生成ユニット102)が、現在のビデオブロック(すなわち、コーディングされているビデオブロック)から予測ブロックを減算することによって残差ビデオブロックを形成する。残差ブロック中の残差ビデオデータは、1つまたは複数のTUに含まれ、変換処理ユニット104に適用され得る。
[0243] 変換処理ユニット104は、4分木区画を行って、CUの残差ブロックをCUのTUと関連付けられた変換ブロックに区画できる。従って、TUは、ルーマ変換ブロックと、2つの対応するクロマ変換ブロックとに関連付けられ得る。CUのTUのルーマ変換ブロックおよびクロマ変換ブロックのサイズおよび位置は、CUのPUの予測ブロックのサイズおよび位置に基づくことも基づかないこともある。
[0244] 変換処理ユニット104は、TUの変換ブロックに1つまたは複数の変換を適用することによって、CUの各TUに対して変換係数ブロックを生成できる。変換処理ユニット104は、TUと関連付けられた変換ブロックに様々な変換を適用できる。例えば、変換処理ユニット104は、離散コサイン変換(DCT)、方向性変換、または概念的に同様の変換を変換ブロックに適用できる。言い換えると、変換処理ユニット104は、DCTまたは概念的に同様の変換のような変換を使用して、残差ビデオデータを残差変換係数に変換できる。ウェーブレット変換、整数変換、サブバンド変換または他のタイプ変換も使用され得る。変換を適用することで、残差変換係数値を備えるビデオブロック(すなわち、残差変換係数のブロック)が生成し得る。いくつかの例では、変換処理ユニット104が、残差ビデオデータをピクセル領域から周波数領域のような変換領域に変換できる。いくつかの例では、変換処理ユニット104が、得られた変換係数を量子化ユニット106へ送る。
[0245] 量子化ユニット106は、係数ブロック中の変換係数を量子化できる。量子化処理は、変換係数の一部または全てと関連付けられるビット深度を低減できる。従って、量子化ユニット106は、ビットレートをさらに低減するために変換係数を量子化できる。量子化処理は、係数の一部または全てと関連付けられるビット深度を低減できる。量子化処理は「スケーリング」処理と呼ばれることもあり、従って、量子化された変換係数は「スケーリングされた変換係数」と呼ばれることもある。例えば、nビットの変換係数は量子化の間にmビットの変換係数へと切り捨てられてよく、ただし、nはmよりも大きい。
[0246] 量子化ユニット106は、CUと関連付けられた量子化パラメータ(QP)値に基づいて、CUのTUと関連付けられた係数ブロックを量子化できる。ビデオエンコーダ20は、CUと関連付けられたQP値を調整することによって、CUと関連付けられた係数ブロックに適用される量子化の程度を調整できる。言い換えると、量子化(またはスケーリング)の程度は、量子化パラメータを調整することによって修正され得る。量子化は、情報の喪失をもたらすことがあり、従って、量子化された変換係数は、元の係数よりも精度が低いことがある。いくつかの例では、量子化ユニット106が次いで、量子化された変換係数を含む行列の走査を行い得る。代替的に、エントロピー符号化ユニット118が走査を行い得る。
[0247] 逆量子化ユニット108および逆変換処理ユニット110は、それぞれ、係数ブロックから残差ブロックを再構築するために、それぞれ、係数ブロックに逆量子化および逆変換を適用できる。再構築ユニット112は、TUと関連付けられる再構築された変換ブロックを生成するために、再構築された残差ブロックを、予測処理ユニット100によって生成された1つまたは複数の予測ブロックからの対応するサンプルに加算できる。このようにして、逆量子化ユニット108および逆変換処理ユニット110は、参照ピクチャの参照ブロックとして後で使用するためのピクセル領域中の残差ブロックを再構築するために、それぞれ、逆量子化および逆変換を適用できる。このようにCUの各TUのための変換ブロックを再構築することによって、ビデオエンコーダ20は、CUのコーディングブロックを再構築できる。
[0248] さらに、いくつかの例では、変換処理ユニット104が変換ブロックに変換を適用しない。そのような例では、変換ブロックが、変換係数ブロックとして扱われ得る。いくつかの例では、変換処理ユニット104が、得られた変換係数を量子化ユニット54へ送る。
[0249] フィルタユニット114は、CUと関連付けられたコーディングブロック中のブロッキングアーティファクトを低減するために、1つまたは複数のデブロッキング動作を行い得る。復号ピクチャバッファ116は、フィルタユニット114が、再構築されたコーディングブロックに対して1つまたは複数のデブロッキング動作を行った後、再構築されたコーディングブロックを記憶できる。例えば、再構築されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタリングするための、デブロッキングフィルタも含まれ得る。必要に応じて、デブロッキングフィルタは通常、再構築ユニット112の出力をフィルタリングする。デブロッキングフィルタに加えて、追加のループフィルタ(ループ内またはループ後)が使用されてもよい。そのようなフィルタは、簡潔にするために示されないが、必要な場合、再構築ユニット112の出力を(ループ内フィルタとして)フィルタリングできる。インター予測処理ユニット120は、他のピクチャのPUに対してインター予測を行うために、再構築されたコーディングブロックを含む参照ピクチャを使用できる。加えて、イントラ予測処理ユニット126は、CUと同じピクチャ中の他のPUに対してイントラ予測を行うために、復号ピクチャバッファ116中の再構築されたコーディングブロックを使用できる。
[0250] エントロピー符号化ユニット118は、ビデオエンコーダ20の他の機能コンポーネントからデータを受信できる。例えば、エントロピー符号化ユニット118は、量子化ユニット106から係数ブロックを受信でき、予測処理ユニット100からシンタックス要素を受信できる。エントロピー符号化ユニット118は、エントロピー符号化されたデータを生成するために、データに対して1つまたは複数のエントロピー符号化動作を行い得る。例えば、量子化に続いて、エントロピー符号化ユニット118は、量子化された変換係数をエントロピー符号化できる。エントロピー符号化ユニット118は、様々なエントロピー符号化動作を行い得る。例えば、エントロピー符号化ユニット118は、CABAC動作、CAVLC動作、変数−変数(V2V:variable-to-variable)レングスコーディング動作、SBAC動作、PIPEコーディング動作、指数ゴロム符号化動作、または別のタイプのエントロピー符号化動作をデータに対して行い得る。コンテキストベースのエントロピーコーディングの場合、コンテキストは隣接ブロックに基づき得る。エントロピー符号化ユニット118によるエントロピー符号化の後、符号化されたビットストリームは、ビデオデコーダ30に送信されてよく、または、ビデオデコーダ30による後の送信または取り出しのためにアーカイブされ得る。エントロピー符号化ユニット118はまた、コーディングされている現在のビデオスライスのための動きベクトルと他のシンタックス要素とをエントロピー符号化できる。ビデオエンコーダ20は、エントロピー符号化ユニット118によって生成されたエントロピー符号化されたデータを含むビットストリームを出力できる。
[0251] 図10のビデオエンコーダ20は、ビデオデータの少なくとも1つのブロックのイントラ予測のために少なくとも1つのフィルタを有効にするかどうかを表すシンタックス要素の値をコーディング(すなわち、符号化)し、ビデオデータの少なくとも1つのブロックをイントラ予測コーディング(すなわち、符号化)するように構成される、ビデオエンコーダの例を表すことができ、少なくとも1つのフィルタが有効にされることをシンタックス要素の値が表すとき、少なくとも1つのブロックをイントラ予測コーディングすることは、少なくとも1つのブロックのためのイントラ予測データをフィルタリングすることを備える。さらに、いくつかの例では、図10のビデオエンコーダ20が、複数のイントラ予測参照サンプルをフィルタリングするために使用される1つまたは複数のフィルタを適応的に無効にするように構成される、ビデオエンコーダの例を表す。加えて、ビデオエンコーダ20は、1つまたは複数のフィルタを制御するシンタックス要素をシグナリングできる。ビデオエンコーダ20のイントラ予測処理ユニット126は、イントラ予測参照サンプルを使用してビデオデータをイントラ符号化できる。
[0252] 図11は、本開示の技法を実装するように構成された例示的なビデオデコーダ30を示すブロック図である。図11は、説明のために提供されるものであり、本開示において広く例示され説明される技法を限定するものでない。説明の目的で、本開示は、HEVCコーディングの状況においてビデオデコーダ30を説明する。しかしながら、本開示の技法は他のコーディング規格または方法に適用可能であり得る。
[0253] 図11の例では、ビデオデコーダ30が、エントロピー復号ユニット150と、予測処理ユニット152と、逆量子化ユニット154と、逆変換処理ユニット156と、再構築ユニット158と、フィルタユニット160と、復号ピクチャバッファ162とを含む。予測処理ユニット152は、動き補償ユニット164とイントラ予測処理ユニット166とを含む。動き補償ユニット164は、エントロピー復号ユニット150から受信された動きベクトルに基づいて予測データ(例えば、予測ブロック)を生成できるが、イントラ予測処理ユニット166は、エントロピー復号ユニット150から受信されたイントラ予測モードインジケータに基づいて予測データ(例えば、予測ブロック)を生成できる。いくつかの例では、再構築ユニット158が加算器である。他の例では、ビデオデコーダ30が、より多数の、より少数の、または異なる機能コンポーネントを含み得る。ビデオデコーダ30は、いくつかの例で、図10からのビデオエンコーダ20に関して説明された符号化パスとは全般に逆の復号パスを行い得る。
[0254] コーディングされたピクチャバッファ(CPB)151は、ビットストリームの符号化されたビデオデータ(例えば、NALユニット)を受信し、記憶できる。エントロピー復号ユニット150は、CPB151からNALユニットを受信でき、NALユニットを解析してビットストリームからシンタックス要素を取得できる。従って、復号処理の間に、ビデオデコーダ30は、符号化されたビデオスライスのビデオブロックと、関連付けられるシンタックス要素とを表す符号化されたビデオビットストリームを、ビデオエンコーダ20から受信できる。エントロピー復号ユニット150は、NALユニット中のエントロピー符号化されたシンタックス要素をエントロピー復号できる。いくつかの例では、ビデオデコーダ30のエントロピー復号ユニット150が、量子化された係数と、動きベクトルと、他のシンタックス要素とを生成するために、ビットストリームをエントロピー復号する。そのような例では、エントロピー復号ユニット150が、予測処理ユニット152に動きベクトルと他のシンタックス要素とを転送できる。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルにおいてシンタックス要素を受信できる。予測処理ユニット152、逆量子化ユニット154、逆変換処理ユニット156、再構築ユニット158、およびフィルタユニット160は、ビットストリームから抽出されたシンタックス要素に基づいて、復号されたビデオデータを生成できる。
[0255] ビットストリームのNALユニットは、コーディングされたスライスNALユニットを含み得る。ビットストリームを復号することの一部として、エントロピー復号ユニット150は、コーディングされたスライスNALユニットからシンタックス要素を抽出し、エントロピー復号できる。コーディングされたスライスの各々は、スライスヘッダと、スライスデータとを含み得る。スライスヘッダは、スライスに関するシンタックス要素を含み得る。
[0256] ビットストリームからのシンタックス要素を復号することに加えて、ビデオデコーダ30は、CUに対して再構築動作を行い得る。CUに対して再構築動作を行うために、ビデオデコーダ30はCUの各TUに対して再構築動作を行い得る。CUの各TUに対して再構築動作を行うことによって、ビデオデコーダ30はCUの残差ブロックを再構築できる。
[0257] CUのTUに対して再構築動作を行うことの一部として、逆量子化ユニット154は、TUと関連付けられた係数ブロックを逆量子化(inverse quantize)、すなわち逆量子化(de−quantize)できる。例えば、逆量子化ユニット154は、ビットストリーム中で与えられ、エントロピー復号ユニット150によって復号された、量子化された変換係数を逆量子化(inverse quantize)、すなわち逆量子化(de−quantize)できる。逆量子化ユニット154は、量子化の程度を決定するために、また同様に、逆量子化ユニット154が適用すべき逆量子化の程度を決定するために、TUのCUと関連付けられたQP値を使用できる。例えば、逆量子化処理は、量子化の程度、および同様に、適用されるべき逆量子化の程度を決定するために、ビデオスライスの中の各ビデオブロックに対してビデオデコーダ30によって計算された量子化パラメータQPYの使用を含み得る。言い換えると、逆量子化処理は、ビデオエンコーダ20によって計算された量子化パラメータをビデオスライス中の各ビデオブロックに対して使用して、適用されるべき量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定することを含み得る。すなわち、圧縮比、すなわち、元のシーケンスと圧縮されたシーケンスとを表すために使用されるビット数の比は、変換係数を量子化するときに使用されるQPの値を調整することによって制御され得る。圧縮比は、採用されるエントロピーコーディングの方法に依存し得る。
[0258] 逆量子化ユニット154が係数ブロックを逆量子化した後、逆変換処理ユニット156は、TUと関連付けられた残差ブロックを生成するために、係数ブロックに1つまたは複数の逆変換を適用できる。例えば、逆変換処理ユニット156は、(例えば、ピクセル領域において残差ブロックを生成するために)逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向変換、または別の逆変換を、係数ブロックに適用できる。
[0259] ビデオスライスがイントラコーディングされた(I)スライスとしてコーディングされるとき、予測処理ユニット152のイントラ予測処理ユニット166は、シグナリングされたイントラ予測モードと、現在のフレームまたはピクチャの、以前に復号されたブロックからのデータとに基づいて、現在のビデオスライスのビデオブロックのための予測データ(例えば、予測ブロック)を生成できる。様々な例において、イントラ予測処理ユニット166は、復号処理のイントラ予測の間のフィルタリングを適応的に制御するための、本明細書で説明される技法の1つまたは複数を行い得る。ビデオフレームがインターコーディングされた(すなわち、B、またはP)スライスとしてコーディングされるとき、予測処理ユニット152の動き補償ユニット164は、エントロピー復号ユニット150から受信された動きベクトルおよび他のシンタックス要素に基づいて、現在のビデオスライスのビデオブロックのための予測ブロックを生成する。予測ブロックは、参照ピクチャリストの1つの中の参照ピクチャの1つから生成され得る。ビデオデコーダ30は、復号ピクチャバッファ92に記憶された参照ピクチャに基づいて、デフォルトの構築技法を使用して、参照フレームリスト、すなわち、リスト0およびリスト1を構築できる。
[0260] イントラ予測を使用してPUが符号化される場合、イントラ予測処理ユニット166は、PUの予測ブロックを生成するためにイントラ予測を行い得る。イントラ予測処理ユニット166は、空間的に隣接するPUの予測ブロックに基づいて、PUのための予測ブロック(例えば、予想ルーマブロック、予測Cbブロック、および予測Crブロック)を生成するために、イントラ予測モードを使用できる。イントラ予測処理ユニット166は、ビットストリームから復号された1つまたは複数のシンタックス要素に基づいて、PUのためのイントラ予測モードを決定できる。
[0261] いくつかの例では、イントラ予測処理ユニット166が、隣接参照サンプル間の絶対的差分和に少なくとも一部基づいて、メトリックを計算できる。さらに、イントラ予測処理ユニット166は、そのメトリックに少なくとも一部基づいて、隣接参照サンプルに基づいて予測ブロックを生成するときに、最近傍補間を使用するかどうかを決定できる。いくつかの例では、イントラ予測処理ユニット166が最近傍補間を使用するという決定を行わないとき、イントラ予測処理ユニット166が双線形補間を使用できる。ビデオデコーダ30は、予測ブロックに一部基づいて、復号されたビデオブロックを再構築できる。
[0262] 別の例では、イントラ予測処理ユニット166が、隣接参照サンプル間の絶対的差分和に少なくとも一部基づいて、メトリックを計算できる。この例では、メトリックが閾値よりも大きくないとき、イントラ予測処理ユニット166が、平滑化フィルタリングまたは双線形補間フィルタリングを隣接参照サンプルに適用できる。加えて、イントラ予測処理ユニット166は、隣接参照サンプルに少なくとも一部基づいて、予測ブロックを生成できる。ビデオデコーダ30は、予測ブロックに一部基づいて、復号されたビデオブロックを再構築できる。
[0263] 別の例では、予測ブロック中の各々のそれぞれのサンプルに対して、イントラ予測処理ユニット166が、それぞれのサンプルの位置およびイントラ予測の角度に少なくとも一部基づいて、変数(例えば、iFact)を決定できる。変数が特定の値(例えば、0)に等しくないとき、イントラ予測処理ユニット166は、第1のメトリックに少なくとも一部基づいて、平滑化フィルタリングおよび双線形補間フィルタリングの中から第1のフィルタリングモードを選択できる。さらに、変数が特定の値に等しくないとき、イントラ予測処理ユニット166は、第1の選択されたフィルタリングモードを1つまたは複数のイントラ予測参照サンプルに適用することによって少なくとも一部、それぞれのサンプルの値を決定できる。変数が特定の値に等しいとき、イントラ予測処理ユニット166は、第2のメトリックに少なくとも一部基づいて、平滑化フィルタリングおよび双線形補間フィルタリングの中から第2のフィルタリングモードを選択できる。加えて、変数が特定の値に等しいとき、イントラ予測処理ユニット166は、第2の選択されたフィルタリングモードを1つまたは複数のイントラ予測参照サンプルに適用することによって少なくとも一部、それぞれのサンプルの値を決定できる。ビデオデコーダ30は、予測ブロックに一部基づいて、復号されたビデオブロックを再構築できる。
[0264] 別の例では、予測ブロック中の各々のそれぞれの予測サンプルに対して、イントラ予測処理ユニット166が、メトリックに少なくとも一部基づいて、双線形補間および最近傍補間の中から補間モードを選択できる。加えて、イントラ予測処理ユニット166は、選択された補間モードに基づいて、それぞれの予測サンプルを決定できる。ビデオデコーダ30は、予測ブロックに一部基づいて、復号されたビデオブロックを再構築できる。
[0265] 予測処理ユニット152は、ビットストリームから抽出されたシンタックス要素に基づいて、第1の参照ピクチャリスト(RefPicList0)と第2の参照ピクチャリスト(RefPicList1)とを構築できる。さらに、インター予測を使用してPUが符号化される場合、エントロピー復号ユニット150は、PUの動き情報を取得できる。動き補償ユニット164は、PUの動き情報に基づいて、PUに対する1つまたは複数の参照領域を決定できる。動き補償ユニット164は、PUのための1つまたは複数の参照ブロックにおけるサンプルブロックに基づいて、PUのための予測ブロック(例えば、予測ルーマブロック、予測Cbブロック、および予測Crブロック)を生成できる。
[0266] いくつかの例では、動き補償ユニット164が、動きベクトルと他のシンタックス要素とを解析することによって現在のビデオスライスのビデオブロックのための予測情報を決定し、復号されている現在のビデオブロックのための予測ブロックを生成するためにその予測情報を使用する。例えば、動き補償ユニット164は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(例えば、イントラ予測またはインター予測)と、インター予測スライスタイプ(例えば、Bスライス、Pスライス、またはGPBスライス)と、スライスの参照ピクチャリストの1つまたは複数のための構築情報と、スライスの各々のインター符号化されたビデオブロックに対する動きベクトルと、スライスの各々のインターコーディングされたビデオブロックに対するインター予測ステータスと、現在のビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素のいくつかを使用できる。
[0267] さらに、いくつかの例では、動き補償ユニット164が、補間フィルタに基づいて補間を行うこともできる。動き補償ユニット164は、参照ブロックのサブ整数ピクセルに対して補間された値を計算するために、ビデオブロックの符号化の間にビデオエンコーダ20によって使用されたような補間フィルタを使用できる。この場合、動き補償ユニット164は、受信されたシンタックス要素からビデオエンコーダ20によって使用された補間フィルタを決定し、補間フィルタを使用して予測ブロックを生成できる。
[0268] 再構築ユニット158は、CUのコーディングブロック(例えば、ルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロック)を再構築するために、適宜、CUのTUと関連付けられる変換ブロック(例えば、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロック)と、CUのPUの予測ブロック(例えば、ルーマブロック、Cbブロック、およびCrブロック)とを、すなわち、イントラ予測データとインター予測データのいずれかを使用できる。例えば、再構築ユニット158は、CUのコーディングブロック(例えば、ルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロック)を再構築するために、変換ブロック(例えば、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロック)のサンプルを、予測ブロック(例えば、予測ルーマブロック、予測Cbブロック、および予測Crブロック)の対応するサンプルに加算できる。言い換えると、動き補償ユニット164が、動きベクトルと他のシンタックス要素とに基づいて現在のビデオブロックのための予測ブロックを生成した後に、ビデオデコーダ30は、逆変換処理ユニット156からの残差ブロックを動き補償ユニット164によって生成された対応する予測ブロックと加算することによって、復号されたビデオブロックを形成できる。このようにして、動き補償ユニット164が、動きベクトルと他のシンタックス要素とに基づいて現在のビデオブロックのための予測ブロックを生成した後に、ビデオデコーダ30は、逆変換処理ユニット156からの残差ブロックを動き補償ユニット164によって生成された対応する予測ブロックと加算することによって、復号されたビデオブロックを形成できる。再構築ユニット158(例えば、加算器)は、この加算動作を行う1つまたは複数のコンポーネントを表し得る。
[0269] フィルタユニット160は、CUのコーディングブロック(例えば、ルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロック)と関連付けられたブロッキングアーティファクトを低減するために、デブロッキング演算を行い得る。従って、必要な場合、デブロッキングフィルタも、ブロッキネスアーティファクトを除去するために復号されたブロックをフィルタリングするために適用され得る。他のループフィルタ(コーディングループの中、またはコーディングループの後のいずれかにおける)も、ピクセルの遷移を平滑化し、または別様にビデオ品質を改善するために使用され得る。
[0270] ビデオデコーダ30は、CUのコーディングブロック(例えば、ルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロック)を復号ピクチャバッファ162に記憶できる。従って、所与のフレームまたはピクチャ中の復号されたビデオブロックは次いで、復号ピクチャバッファ162に記憶され、この復号ピクチャバッファ162は後続の動き補償のために使用される参照ピクチャを記憶する。復号ピクチャバッファ162はまた、図1のディスプレイデバイス32のような、ディスプレイデバイス上での後の表示のために、復号されたビデオを記憶できる。言い換えると、復号ピクチャバッファ162は、次の動き補償、イントラ予測、および図1のディスプレイデバイス32のようなディスプレイデバイス上での提示のために、参照ピクチャを提供できる。例えば、ビデオデコーダ30は、復号ピクチャバッファ162中のブロック(例えば、ルーマブロック、Cbブロック、およびCrブロック)に基づいて、他のCUのPUに対してイントラ予測動作またはインター予測動作を行い得る。このようにして、ビデオデコーダ30は、有意なルーマ係数ブロックの変換係数レベルをビットストリームから抽出し、変換係数レベルを逆量子化し、変換係数レベルに変換を適用して変換ブロックを生成し、変換ブロックに少なくとも一部基づいてコーディングブロックを生成し、コーディングブロックを表示のために出力できる。
[0271] 図11のビデオデコーダ30は、ビデオデータの少なくとも1つのブロックのイントラ予測のために少なくとも1つのフィルタを有効にするかどうかを表すシンタックス要素の値をコーディング(すなわち、復号)し、ビデオデータの少なくとも1つのブロックをイントラ予測コーディング(すなわち、復号)するように構成される、ビデオデコーダの例を表すことができ、少なくとも1つのフィルタが有効にされることをシンタックス要素の値が表すとき、少なくとも1つのブロックをイントラ予測コーディングすることは、少なくとも1つのブロックのためのイントラ予測データをフィルタリングすることを備える。さらに、図11のビデオデコーダ30は、シンタックス要素に基づいて、複数のイントラ予測参照サンプルをフィルタリングするために使用される1つまたは複数のフィルタを適応的に無効にするように構成される、ビデオデコーダの例を表し得る。ビデオデコーダ30は、イントラ予測参照サンプルを使用してビデオデータをイントラ復号できる。
[0272] 図12Aは、本開示の1つまたは複数の技法による、ビデオデータを符号化するためのビデオエンコーダ20の例示的な動作を示すフローチャートである。図12Aは、本開示の他のフローチャートとともに、例として提示される。他の例は、より多数の、より少数の、または異なる処置(action)を含み得る。
[0273] 図12Aの例では、ビデオエンコーダ20が、隣接参照サンプル間の絶対的差分和(SAD)に少なくとも一部基づいて、メトリックを計算できる(200)。例えば、ビデオエンコーダ20は、現在のブロックの上にあるサブセット中の参照サンプルに対するSAD値を決定し、現在のブロックの左側にある参照サンプルに対するSAD値を別個に決定し、次いでこれらの2つのSAD値を加算できる。
[0274] 加えて、ビデオエンコーダ20は、そのメトリックに少なくとも一部基づいて、隣接参照サンプルに基づいて予測ブロックを生成するときに、最近傍補間を使用するかどうかを決定できる(202)。ビデオエンコーダ20は、ビデオデータのビットストリームに、予測ブロックに基づいて残差データを表すデータを含め得る(204)。
[0275] 図12Aの例には示されないが、ビデオエンコーダ20は、いくつかの例で、メトリックに少なくとも一部基づいて、予測ブロックを生成するために双線形補間を使用するかどうかをさらに決定できる。例えば、ビデオエンコーダ20は、本開示の他の箇所で説明されたように、隣接参照サンプル間の絶対的差分和を決定できる。この例で、ビデオエンコーダ20は、iFactが0に等しくなく絶対的差分和が閾値より大きいとき、双線形補間を使用するための決定を行うことができる。
[0276] さらに、いくつかの例では、絶対的差分和が第1の絶対的差分和である。そのような例では、ビデオエンコーダ20がメトリックを計算するとき、ビデオエンコーダ20は、予測ブロックの上の参照サンプルに基づいて、第1の絶対的差分和を計算できる。加えて、ビデオエンコーダ20は、予測ブロックの左にある参照サンプルに基づいて、第2の絶対的差分和を計算できる。加えて、ビデオエンコーダ20は、第1および第2の絶対的差分和に少なくとも一部基づいて、メトリックを計算できる。本開示の他の箇所で説明されたように、ビデオエンコーダ20が予測ブロックを生成するために双線形補間を使用するとき、ビデオエンコーダ20は、予測ブロック中の各サンプルの値を、式
、
または式
を使用して計算できる。
[0277] 図12Bは、本開示の1つまたは複数の技法による、ビデオデータを復号するためのビデオデコーダ30の例示的な動作を示すフローチャートである。図12Bの例では、ビデオデコーダ30が、隣接参照サンプル間の絶対的差分和に少なくとも一部基づいて、メトリックを計算できる(220)。加えて、ビデオデコーダ30は、そのメトリックに少なくとも一部基づいて、隣接参照サンプルに基づいて予測ブロックを生成するときに、最近傍補間を使用するかどうかを決定できる(222)。さらに、ビデオデコーダ30は、予測ブロックに一部基づいて、復号されたビデオブロックを再構築できる(224)。
[0278] 図12Bの例には示されないが、ビデオデコーダ30はまた、メトリックに少なくとも一部基づいて、予測ブロックを生成するために双線形補間を使用するかどうかを決定できる。例えば、ビデオデコーダ30は、本開示の他の箇所で説明されたように、隣接参照サンプル間の絶対的差分和を決定できる。この例で、ビデオデコーダ30は、iFactが0に等しくなく絶対的差分和が閾値より大きいとき、双線形補間を使用するための決定を行うことができる。本開示の他の箇所で説明されたように、ビデオデコーダ30が予測ブロックを生成するために双線形補間を使用するとき、ビデオデコーダ30は、予測ブロック中の各サンプルの値を、式
、または式
を使用して計算できる。
[0279] さらに、いくつかの例では、絶対的差分和が第1の絶対的差分和である。そのような例では、ビデオデコーダ30がメトリックを計算するとき、ビデオデコーダ30が、予測ブロックの上の参照サンプルに基づいて、第1の絶対的差分和を計算できる。加えて、そのような例では、ビデオデコーダ30が、予測ブロックの左にある参照サンプルに基づいて、第2の絶対的差分和を計算できる。そのような例では、ビデオデコーダ30が、第1および第2の絶対的差分和に少なくとも一部基づいて、メトリックを計算できる。
[0280] 図13Aは、本開示の1つまたは複数の技法による、ビデオデータを符号化するためのビデオエンコーダ20の例示的な動作を示すフローチャートである。図13Aの例では、ビデオエンコーダ20が、メトリックを計算できる(250)。いくつかの例では、ビデオエンコーダ20が、隣接参照サンプル間の絶対的差分和(SAD)に少なくとも一部基づいて、メトリックを計算できる。他の例では、ビデオエンコーダ20が、分散または別の関数に基づいてメトリックを決定できる。
[0281] さらに、ビデオエンコーダ20は、メトリックが閾値より大きいかどうかを決定できる(252)。例えば、メトリックが隣接参照サンプル間のSADである場合、閾値は50または別の値に等しくてよい。メトリックが閾値よりも大きくないとき(252の「いいえ」)、ビデオエンコーダ20は、平滑化フィルタリングまたは双線形補間フィルタリングを隣接参照サンプルに適用できる(254)。平滑化フィルタリングまたは双線形補間フィルタリングを適用した後、または、メトリックが閾値より大きいと決定した後(252の「はい」)、ビデオエンコーダ20は、隣接参照サンプルに少なくとも一部基づいて、予測ブロックを生成できる(256)。言い換えると、ビデオエンコーダ20は、現在のピクチャのサンプルに基づいて予測ブロックを生成するためにイントラ予測を使用できる。いくつかの例では、メトリックが閾値より大きいとき、ビデオエンコーダ20が、平滑化フィルタリングも双線形補間フィルタリングも隣接参照サンプルに適用しない。例えば、メトリックが閾値より大きいとき、ビデオエンコーダ20はfilterFagを0に設定できる。さらに、ビデオエンコーダ20は、ビデオデータのビットストリームに、予測ブロックに基づいて残差データを表すデータを含め得る(258)。いくつかの例で、ビデオエンコーダ20は、残差データの各サンプルが予測ブロック中のサンプルと符号化されているブロックの対応するサンプルとの差分を示すように、残差データを生成できる。残差データを表すデータは、変換され、量子化され、および/またはエントロピー符号化され得る。
[0282] 図13Bは、本開示の1つまたは複数の技法による、ビデオデータを復号するためのビデオデコーダ30の例示的な動作を示すフローチャートである。図13Bの例では、ビデオデコーダ30が、メトリックを計算できる(270)。いくつかの例では、ビデオデコーダ30が、隣接参照サンプル間の絶対的差分和(SAD)に少なくとも一部基づいて、メトリックを計算できる。他の例では、ビデオデコーダ30が、分散または別の関数に基づいてメトリックを決定できる。
[0283] ビデオデコーダ30は次いで、メトリックが閾値より大きいかどうかを決定できる(272)。例えば、メトリックが隣接参照サンプル間のSADである場合、閾値は50または別の値に等しくてよい。メトリックが閾値よりも大きくないとき(272の「いいえ」)、ビデオデコーダ30は、平滑化フィルタリングまたは双線形補間フィルタリングを隣接参照サンプルに適用できる(274)。隣接参照サンプルに平滑化フィルタリングまたは双線形補間フィルタリングを適用した後、または、メトリックが閾値より大きいと決定した後(272の「はい」)、ビデオデコーダ30は、隣接参照サンプルに少なくとも一部基づいて、予測ブロックを生成できる(276)。言い換えると、ビデオデコーダ30は、隣接参照サンプルに基づいて予測ブロックを生成するためにイントラ予測を使用できる。いくつかの例では、メトリックが閾値より大きいとき、ビデオデコーダ30が、平滑化フィルタリングも双線形補間も隣接参照サンプルに適用しない。ビデオデコーダ30は、予測ブロックに一部基づいて、復号されたビデオブロックを再構築できる(274)。例えば、ビデオデコーダ30は、復号されたビデオブロックの各サンプルが予測ブロック中のサンプルと残差サンプルのブロックの対応するサンプルとの合計に等しいように、復号されたビデオブロックを再構築できる。
[0284] 図14Aは、本開示の1つまたは複数の技法による、ビデオデータを符号化するためのビデオエンコーダ20の例示的な動作を示すフローチャートである。図14Aの例では、ビデオエンコーダ20が、予測ブロック中の各々のそれぞれのサンプルのための処置300〜310を行い得る。
[0285] 具体的には、図14Aの例では、ビデオエンコーダ20が、それぞれのサンプルの位置およびイントラ予測の角度に少なくとも一部基づいて、変数(例えば、iFact)を決定できる(300)。さらに、ビデオエンコーダ20は、変数が特定の値に等しいかどうかを決定できる(302)。いくつかの例では、変数が((x+1)×intraPredAngle)&31に等しく、ここでxはそれぞれのサンプルの行または列の位置であり、intraPredAngleはイントラ予測の角度である。そのような例では、特定の値が0に等しくてよい。
[0286] 変数が特定の値に等しくないとき(302の「いいえ」)、ビデオエンコーダ20は、第1のメトリックに少なくとも一部基づいて、平滑化フィルタリングまたは双線形補間フィルタリングの中から第1のフィルタリングモードを選択できる(304)。いくつかの例では、ビデオエンコーダ20が、隣接参照サンプル間の絶対的差分和に少なくとも一部基づいて、第1のメトリックを計算できる。他の例では、ビデオエンコーダ20が、分散に少なくとも一部基づいて第1のメトリックを計算できる。いくつかの例では、ビデオエンコーダ20が、第1のメトリックが閾値(例えば、50)を超える(または超えない)と決定したことに応答して、平滑化フィルタリングを選択できる。いくつかの例では、ビデオエンコーダ20が、第1のメトリックが閾値(例えば、50)を超える(または超えない)と決定したことに応答して、双線形補間フィルタリングを選択できる。加えて、ビデオエンコーダ20は、第1の選択されたフィルタリングモードを1つまたは複数のイントラ予測参照サンプルに適用することによって少なくとも一部、それぞれのサンプルの値を決定できる(306)。
[0287] 一方、変数が特定の値に等しいとき(302の「はい」)、ビデオエンコーダ20は、第2のメトリックに少なくとも一部基づいて、平滑化フィルタリングまたは最近傍補間の中から第2のフィルタリングモードを選択できる(308)。いくつかの例では、ビデオエンコーダ20が、隣接参照サンプル間の絶対的差分和に少なくとも一部基づいて、第2のメトリックを計算できる。他の例では、ビデオエンコーダ20が、分散に少なくとも一部基づいて第2のメトリックを計算できる。さらに、いくつかの例では、第1のメトリックが第2のメトリックと同じである。いくつかの例では、ビデオエンコーダ20が、第2のメトリックが閾値(例えば、50)を超える(または超えない)と決定したことに応答して、双線形補間フィルタリングを選択できる。いくつかの例で、ビデオエンコーダ20は、第2のメトリックが閾値(例えば、50)を超える(または超えない)と決定したことに応答して、最近傍補間を選択できる。加えて、ビデオエンコーダ20は、第2の選択されたフィルタリングモードを1つまたは複数のイントラ予測参照サンプルに適用することによって少なくとも一部、それぞれのサンプルの値を決定できる(310)。
[0288] さらに、図14Aの例では、ビデオエンコーダ20が、ビデオデータのビットストリームに、予測ブロックに基づいて残差データを表すデータを含み得る(312)。いくつかの例では、ビデオエンコーダ20が、残差データの各サンプルが予測ブロック中のサンプルと符号化されているブロックの対応するサンプルとの差分を示すように、残差データを生成できる。残差データを表すデータは、変換され、量子化され、および/またはエントロピー符号化され得る。
[0289] 図14Bは、本開示の1つまたは複数の技法による、ビデオデータを復号するためのビデオデコーダ30の例示的な動作を示すフローチャートである。図14Bの例では、ビデオデコーダ30が、予測ブロック中の各々のそれぞれのサンプルのための処置320〜330を行い得る。
[0290] 具体的には、図14Bの例では、ビデオデコーダ30が、それぞれのサンプルの位置およびイントラ予測の角度に少なくとも一部基づいて、変数を決定できる(320)。加えて、ビデオデコーダ30は、メトリックが特定の値に等しいかどうかを決定できる(322)。いくつかの例では、変数が((x+1)×intraPredAngle)&31に等しく、ここでxはそれぞれのサンプルの行または列の位置であり、intraPredAngleはイントラ予測の角度である。さらに、そのような例では、特定の値が0に等しい。
[0291] 変数が特定の値に等しいとき(322の「いいえ」)、ビデオデコーダ30は、第1のメトリックに少なくとも一部基づいて、平滑化フィルタリングおよび双線形補間フィルタリングの中から第1のフィルタリングモードを選択できる(324)。いくつかの例では、ビデオデコーダ30が、メトリックが閾値(例えば、50)を超える(または超えない)と決定したことに応答して、平滑化フィルタリングを選択できる。いくつかの例で、ビデオデコーダ30は、メトリックが閾値(例えば、50)を超える(または超えない)と決定したことに応答して、双線形補間フィルタリングを選択できる。加えて、ビデオデコーダ30は、第1の選択されたフィルタリングモードを1つまたは複数のイントラ予測参照サンプルに適用することによって少なくとも一部、それぞれのサンプルの値を決定できる(326)。
[0292] 一方、変数が特定の値に等しいとき(322の「はい」)、ビデオデコーダ30は、第2のメトリックに少なくとも一部基づいて、平滑化フィルタリングおよび最近傍補間の中から第2のフィルタリングモードを選択できる(328)。いくつかの例では、ビデオデコーダ30が、メトリックが閾値(例えば、50)を超える(または超えない)と決定したことに応答して、双線形補間を選択できる。いくつかの例では、ビデオデコーダ30が、メトリックが閾値(例えば、50)を超える(または超えない)と決定したことに応答して、最近傍補間を選択できる。いくつかの例では、ビデオデコーダ30が、隣接参照サンプル間の絶対的差分和に少なくとも一部基づいて、第1または第2のメトリックを計算できる。他の例で、ビデオデコーダ30は、分散に少なくとも一部基づいて第1または第2のメトリックを計算できる。さらに、いくつかの例では、第1のメトリックが第2のメトリックと同じである。加えて、図14Bでは、ビデオデコーダ30が、第2の選択されたフィルタリングモードを1つまたは複数のイントラ予測参照サンプルに適用することによって少なくとも一部、それぞれのサンプルの値を決定できる(330)。
[0293] ビデオデコーダ30は、予測ブロックに一部基づいて、復号されたビデオブロックを再構築できる(332)。例えば、ビデオデコーダ30は、復号されたビデオブロックの各サンプルが予測ブロック中のサンプルと残差サンプルのブロックの対応するサンプルとの合計に等しいように、復号されたビデオブロックを再構築できる。
[0294] 図15Aは、本開示の1つまたは複数の技法による、ビデオデータを符号化するためのビデオエンコーダ20の例示的な動作を示すフローチャートである。図15Aの例では、ビデオエンコーダ20が、予測ブロック中の各々のそれぞれのサンプルのための処置350と352とを行い得る。
[0295] 図15Aの例では、ビデオエンコーダ20が、メトリックに少なくとも一部基づいて、双線形補間および最近傍補間の中から補間モードを選択できる(350)。いくつかの例では、メトリックが、それぞれの予測サンプルの予測のために使用される2つの参照サンプル間の絶対的な差分である。加えて、いくつかの例で、ビデオエンコーダ20が補間モードを選択するとき、ビデオエンコーダ20は、メトリックが閾値より大きいとき、最近傍補間を選択された補間モードとして選択する。そのような例では、ビデオエンコーダ20が、メトリックが閾値以下であるとき、双線形補間を選択された補間モードとして選択する。
[0296] さらに、図15Aの例では、ビデオエンコーダ20が、選択された補間モードに基づいて、それぞれの予測サンプルを決定できる(352)。ビデオエンコーダ20は、ビデオデータのビットストリームに、予測ブロックに基づいて残差データを表すデータを含め得る(354)。いくつかの例で、ビデオエンコーダ20は、残差データの各サンプルが予測ブロック中のサンプルと符号化されているブロックの対応するサンプルとの差分を示すように、残差データを生成できる。残差データを表すデータは、変換され、量子化され、および/またはエントロピー符号化され得る。
[0297] 図15Bは、本開示の1つまたは複数の技法による、ビデオデータを復号するためのビデオデコーダ30の例示的な動作を示すフローチャートである。図15Bの例では、ビデオデコーダ30が、予測ブロック中の各々のそれぞれの予測サンプルのための処置370と372とを行い得る。
[0298] 図15Bの例では、ビデオデコーダ30が、メトリックに少なくとも一部基づいて、双線形補間および最近傍補間の中から補間モードを選択できる(370)。いくつかの例では、メトリックが、それぞれの予測サンプルの予測のために使用される2つの参照サンプル間の絶対的な差分である。加えて、いくつかの例では、ビデオデコーダ30が補間モードを選択するとき、ビデオデコーダ30は、メトリックが閾値より大きいとき、最近傍補間を選択された補間モードとして選択する。そのような例で、ビデオデコーダ30は、メトリックが閾値以下であるとき、双線形補間を選択された補間モードとして選択する。
[0299] さらに、図15Bの例では、ビデオデコーダ30が、選択された補間モードに基づいて、それぞれの予測サンプルを決定できる(372)。ビデオデコーダ30は、予測ブロックに一部基づいて、復号されたビデオブロックを再構築できる(374)。例えば、ビデオデコーダ30は、復号されたビデオブロックの各サンプルが予測ブロック中のサンプルと残差サンプルのブロックの対応するサンプルとの合計に等しいように、復号されたビデオブロックを再構築できる。
[0300] 図16は、本開示の1つまたは複数の技法による、ビデオデータをコーディングするためのビデオコーダの例示的な動作を示すフローチャートである。図16の例では、ビデオコーダが、イントラ予測参照サンプルの少なくともいくつかの1つまたは複数の特性に基づいて複数のイントラ予測参照サンプルをフィルタリングするために使用される、1つまたは複数のフィルタを適応的に無効にする(400)。
[0301] さらに、ビデオコーダは、イントラ予測参照サンプルを使用してビデオデータをイントラコーディングできる(402)。いくつかの例では、ビデオデータをイントラコーディングすることの一部として、ビデオコーダがイントラ復号を行い得る。イントラ復号は、イントラ予測参照サンプル(フィルタリングされるか、部分的なフィルタか、1つまたは複数のフィルタを適応的に無効にした結果としてフィルタリングされないかのいずれか)および残差データに基づいて、ビデオデータをイントラ復号することを備え得る。他の例では、イントラコーディングがイントラ符号化を備える。イントラ符号化は、イントラ予測参照サンプル(フィルタリングされるか、部分的なフィルタか、1つまたは複数のフィルタを適応的に無効にした結果としてフィルタリングされないかのいずれか)および残差データに基づいて、ビデオデータをイントラ復号することを備え得る。
[0302] いくつかの例で、1つまたは複数の特性は、複数の参照サンプル中の参照サンプル間のピクセル差分(例えば、絶対的なピクセル差分)が所定の閾値を超えるかどうかを含む。さらに、いくつかの例で、1つまたは複数の特性は、複数の参照サンプルの参照サンプル間のピクセル差分(例えば、絶対的なピクセル差分)が所定の閾値を超える事例の数のカウントが、カウント閾値を超えるかどうかを含む。加えて、いくつかの例で、1つまたは複数の特性は、複数の参照サンプルの参照サンプル間のピクセル差分(例えば、絶対的なピクセル差分)が第1の所定の閾値を超える事例の数のカウントが、第1のカウント閾値を超えるかどうかということと、複数の参照サンプルの参照サンプル間のピクセル差分が第2の所定の閾値未満である事例の数のカウントが、第2のカウント閾値を超えるかどうかということとを含む。
[0303] いくつかの例で、1つまたは複数の特性は、複数の参照サンプルの参照サンプルに適用される3タップの有限インパルス応答(FIR)フィルタの出力(例えば、出力の絶対値)が閾値を超えるかどうかを含む。いくつかの例で、1つまたは複数の特性は、複数の参照サンプルの参照サンプルに適用される3タップのFIRフィルタの出力(例えば、出力の絶対値)が閾値を超える事例のカウントが、カウント閾値を超えるかどうかを含む。これらの例のいずれにおいても、FIRフィルタが適用される参照サンプルは、一度に1ピクセル、または一度に3ピクセルだけインクリメントされる、参照サンプルのアレイを通る経路中の3つの参照サンプルの連続的なセットを含み得る。さらに、これらの例のいずれにおいても、FIRフィルタが適用される参照サンプルは、参照サンプルのアレイの中に、参照サンプルP2M-1,-1、P-1,-1、およびP-1,2N-1、参照サンプルP2M-1,-1、PM,-1、およびP-1,1、または参照サンプルP-1,2N-1、P-1,N、およびP-1,-1を含む。
[0304] さらに、いくつかの例で、イントラ予測参照サンプルの少なくともいくつかの特性は、複数の予測モードの選択された1つに基づいて選択される複数の参照サンプルの全てよりも少ないサブセットの特性を含む。いくつかの例で、イントラ予測参照サンプルの少なくともいくつかの特性は、参照サンプルの上の行と左の列のいずれかの特性を含み、上の行と左の列のいずれかは、上の行または左の列の参照サンプル間のピクセル差分が所定の閾値を超える事例の数のカウントに基づいて選択され、カウント閾値を超える。さらに、いくつかの例で、イントラ予測参照サンプルの少なくともいくつかの1つまたは複数の特性は、参照サンプルのサブサンプリングされたセットに対するものである。
[0305] 図16の例には示されないが、ビデオコーダはまた、ブロックサイズ、成分タイプ、および入力ビデオタイプの少なくとも1つに基づいて、1つまたは複数の閾値を選択的に適応させることができる。加えて、ビデオコーダは、ブロックサイズと成分タイプの少なくとも1つに基づいて適応的に無効にするステップを、選択的にオンおよびオフにできる。いくつかのそのような例では、閾値の1つまたは複数が符号化されたビットストリームにおいてシグナリングされる。例えば、様々な例において、閾値の1つまたは複数は、PPS、SPS、またはVPSの少なくとも1つにおいてシグナリングされる。
[0306] 上で示されたように、ビデオコーダは、複数のイントラ予測参照サンプルをフィルタリングするために使用される1つまたは複数のフィルタを適応的に無効にできる。いくつかの例では、1つまたは複数のフィルタを適応的に無効にすることの一部として、ビデオコーダが、CUに隣接するイントラ予測サンプルの1つまたは複数の特性に基づいて、CU中の全てのPUまたはTUに対して1つまたは複数のフィルタを適応的に無効にできる。さらに、いくつかの例では、1つまたは複数のフィルタを適応的に無効にすることの一部として、ビデオコーダが、それぞれのPUまたはTUに隣接するイントラ予測サンプルの個々のセットの1つまたは複数の特性に基づいて、CUの中の個々のPUまたはTUに対して1つまたは複数のフィルタを適応的に無効にできる。
[0307] さらに、図16の例には示されないが、ビデオコーダは、1つまたは複数の特性に基づいて無効化フラグをオンにできる。他の例では、ビデオコーダが、符号化されたビットストリームにおいて無効化フラグを受信できる。これらの例で、1つまたは複数のフィルタは、無効化フラグがオンにされるときに無効にされる。
[0308] 図17は、本開示の1つまたは複数の技法による、ビデオデータをコーディングするためのビデオコーダの追加の動作を示すフローチャートである。図17の例では、ビデオコーダが、シンタックス要素に基づいて複数のイントラ予測参照サンプルをフィルタリングするために使用される、1つまたは複数のフィルタを適応的に無効にする(450)。いくつかの例では、シンタックス要素がtransform_skip_flagであり、transform_skip_flagがオンにされるとき、ビデオコーダは1つまたは複数のフィルタを無効にする。少なくともいくつかのそのような例で、transfrom_skip_flagは、変換を伴わずに予測後の残差信号が量子化される、変換スキップ動作を呼び出す。
[0309] いくつかの例では、シンタックス要素がcu_transquant_bypassフラグであり、cu_transquant_bypassフラグがオンにされるとき、ビデオコーダが1つまたは複数のフィルタを無効にする。少なくともいくつかの例で、cu_transquant_bypass_flagは、予測されたブロックが量子化および変換を伴わずにコーディングされる動作を呼び出す。
[0310] さらに、いくつかの例では、シンタックス要素が変換スキップシンタックス要素であり、方法は、変換スキップシンタックス要素がオンにされるときに1つまたは複数のフィルタを無効にすることを備える。少なくともいくつかのそのような例で、変換スキップシンタックス要素は、変換を伴わずに予測後の残差信号が量子化される、変換スキップ動作を呼び出す。
[0311] いくつかの例では、シンタックス要素は量子化および変換迂回シンタックス要素であり、ビデオコーダは、量子化および変換迂回シンタックス要素がオンにされるときに1つまたは複数のフィルタを無効にする。少なくともいくつかのそのような例では、量子化および変換迂回シンタックス要素は、予測されたブロックが量子化および変換を伴わずにコーディングされる動作を呼び出す。
[0312] さらに、図17の例では、ビデオコーダが、イントラ予測参照サンプルを使用してビデオデータをイントラコーディングする(452)。いくつかの例では、イントラコーディングがイントラ復号を備える。イントラ復号は、フィルタリングされた参照サンプル、部分的にフィルタリングされた参照サンプル、および1つまたは複数のフィルタを適応的に無効にした結果としてフィルタリングされていない参照サンプルの1つを含むイントラ予測参照サンプルと、残差データとに基づいて、ビデオデータをイントラ復号することを備え得る。他の例では、イントラコーディングがイントラ符号化を備える。イントラ符号化は、フィルタリングされた参照サンプル、部分的にフィルタリングされた参照サンプル、または1つまたは複数のフィルタを適応的に無効にした結果としてフィルタリングされていない参照サンプルの1つを含むイントラ予測参照サンプルと、残差データとに基づいて、ビデオデータをイントラ符号化することを備え得る。
[0313] 図18は、現在のブロックを符号化するための例示的な方法を示すフローチャートである。現在のブロックは、現在のCU、または現在のCUの一部分を備え得る。ビデオエンコーダ20(図1および図10)に関して説明されるが、他のデバイスが図18の方法と同様の方法を行うように構成され得ることを理解されたい。
[0314] この例では、ビデオエンコーダ20がイントラ予測フィルタのためのシンタックス要素を符号化し(500)、シンタックス要素の値がイントラ予測フィルタが有効にされるかどうかを示す。シンタックス要素を符号化することは、シンタックス要素をCABACコーディングすることを含んでよく、これは、上で論じられたように、シンタックス要素をコーディングするためのコンテキストを選択することを伴い得る。ビデオエンコーダ20は次いで、現在のブロックを予測する(502)。具体的には、イントラ予測フィルタが有効にされる場合、ビデオエンコーダ20はイントラ予測フィルタを実行し得るが、イントラ予測フィルタが有効にされない場合、ビデオエンコーダ20はイントラ予測フィルタの実行をスキップできる。ビデオエンコーダ20は、現在のブロックのための1つまたは複数のPUを計算できる。
[0315] ビデオエンコーダ20は次いで、例えばTUを生成するために、現在のブロックのための残差ブロックを計算できる(504)。残差ブロックを計算するために、ビデオエンコーダ20は、元の符号化されていないブロックと現在のブロックのための予測されたブロックとの差分を計算できる。ビデオエンコーダ20は次いで、残差ブロックの係数を変換し、量子化できる(506)。次に、ビデオエンコーダ20は、残差ブロックの量子化された変換係数を走査できる(508)。走査の間に、または走査の後に、ビデオエンコーダ20は、係数をエントロピー符号化できる(510)。例えば、ビデオエンコーダ20は、CAVLCまたはCABACを使用して係数を符号化できる。ビデオエンコーダ20は次いで、ブロックのエントロピーコーディングされたデータを出力できる(512)。
[0316] このようにして、図18の方法は、ビデオデータの少なくとも1つのブロックのイントラ予測のために少なくとも1つのフィルタを有効にするかどうかを表すシンタックス要素の値をコーディング(この例では符号化)することと、ビデオデータの少なくとも1つのブロックをイントラ予測コーディング(この例では符号化)することとを含む方法の例を表し、少なくとも1つのフィルタが有効にされることをシンタックス要素の値が表すとき、少なくとも1つのブロックをイントラ予測コーディングすることは、少なくとも1つのブロックのためのイントラ予測データをフィルタリングすることを備える。
[0317] 図19は、ビデオデータの現在のブロックを復号するための例示的な方法を示すフローチャートである。現在のブロックは、現在のCU、または現在のCUの一部分を備え得る。ビデオデコーダ30(図1および図11)に関して説明されるが、他のデバイスが図19の方法と同様の方法を行うように構成され得ることを理解されたい。
[0318] ビデオデコーダ30は、現在のブロックのためのイントラ予測フィルタに対するシンタックス要素(例えば、フラグ)を復号できる(530)。シンタックス要素の値は、イントラ予測フィルタが現在のブロックに対して有効にされるか無効にされるかを示し得る。やはり、シンタックス要素の値を復号することはCABACを使用して行われてよく、シンタックス要素を復号するためのコンテキストの決定は上で説明された技法に従って行われてよい。
[0319] ビデオデコーダ30は次いで、現在のブロックのための予測されたブロックを計算するために、例えば、イントラ予測モードを使用して現在のブロックを予測できる(532)。フィルタが有効にされることをシンタックス要素が示すとき、ビデオデコーダ30はフィルタを実行し得るが、フィルタが有効にされないことをシンタックス要素が示すとき、ビデオデコーダ30はフィルタの実行をスキップできる。ビデオデコーダ30は、現在のブロックに対応する残差ブロックの係数のエントロピーコーディングされたデータのような、現在のブロックのエントロピーコーディングされたデータを受信することもできる(534)。ビデオデコーダ30は、残差ブロックの変換係数を再生成するために、エントロピーコーディングされたデータをエントロピー復号できる(536)。ビデオデコーダ30は次いで、量子化された変換係数のブロックを作成するために、再生成された係数を逆走査できる(538)。ビデオデコーダ30は次いで、残差ブロックを生成するために係数を逆量子化し、逆変換できる(540)。ビデオデコーダ30は、最終的に、予測されたブロックと残差ブロックとを組み合わせることによって現在のブロックを復号できる(542)。例えば、ビデオデコーダ30は、復号された現在のブロック中の各サンプルが予測されたブロック中のサンプルと残差ブロックの対応するサンプルとの合計に等しいように、予測されたブロックと残差ブロックとを組み合わせることができる。予測されたブロック(すなわち、予測ブロック)中のサンプルは、2つのサンプルがピクチャ内の同じ位置に対応する場合、残差ブロックのサンプルに対応し得る。
[0320] このようにして、図19の方法は、ビデオデータの少なくとも1つのブロックのイントラ予測のために少なくとも1つのフィルタを有効にするかどうかを表すシンタックス要素の値をコーディング(この例では復号)することと、ビデオデータの少なくとも1つのブロックをイントラ予測コーディング(この例では復号)することとを含む方法の例を表し、少なくとも1つのフィルタが有効にされることをシンタックス要素の値が表すとき、少なくとも1つのブロックをイントラ予測コーディングすることは、少なくとも1つのブロックのためのイントラ予測データをフィルタリングすることを備える。
[0321] 図20は、本開示の1つまたは複数の技法による、ビデオデータをコーディングするためのビデオコーダの例示的な動作を示すフローチャートである。図20の例では、ビデオコーダが、ビデオデータの少なくとも1つのブロックのイントラ予測のために少なくとも1つのフィルタを有効にするかどうかを表すシンタックス要素の値をコーディングできる(550)。加えて、ビデオコーダは、ビデオデータの少なくとも1つのブロックのイントラ予測コーディングを行い得る(552)。少なくとも1つのフィルタが有効にされることをシンタックス要素の値が表すとき、少なくとも1つのブロックをイントラ予測コーディングすることは、少なくとも1つのブロックのためのイントラ予測データをフィルタリングすることを備える。
[0322] 図20の例では、少なくとも1つのブロックがTUであり得る(またはそれを備え得る)。さらに、いくつかのそのような例では、シンタックス要素の値が、TUのシンタックス要素の値をコーディングすることを備え得る。少なくとも1つのブロックが非正方形の長方形ブロックを備えるとき、シンタックス要素は、非正方形の長方形ブロックの第1の正方形部分に対する第1のシンタックス要素を備えてよく、方法はさらに、非正方形の長方形ブロックの第2の正方形部分に対する第2の値をコーディングすることを備える。さらに、いくつかの例では、少なくとも1つのブロックは、少なくとも1つのブロックが4:2:2のビデオフォーマットに準拠するとき、非正方形の長方形ブロックを備える。
[0323] さらに、いくつかの例では、シンタックス要素が、ルミナンスブロック、第1のクロミナンスブロック、および第2のクロミナンスブロックの1つに対するシンタックス要素を備える。そのような例で、ビデオコーダは、ルミナンスブロック、第1のクロミナンスブロック、および第2のクロミナンスブロックの各々に対するシンタックス要素の値をコーディングできる。そのような例では、シンタックス要素が、それぞれのルミナンスブロック、第1のクロミナンスブロック、または第2のクロミナンスブロックのイントラ予測のための少なくとも1つのフィルタを有効にするかどうかを表し得る。
[0324] いくつかの例では、シンタックス要素が、ルミナンスブロックに対する、または第1のクロミナンスブロックおよび第2のクロミナンスブロックに対するシンタックス要素を備え得る。そのような例では、ビデオコーダが、ルミナンスブロックに対するシンタックス要素の第1の値と、第1のクロミナンスブロックおよび第2のクロミナンスブロックに対する第2のシンタックス要素の第2の値とをコーディングできる。第1のシンタックス要素は、ルミナンスブロックのイントラ予測のために少なくとも1つのフィルタを有効にするかどうかを表す。第2のシンタックス要素は、第1のクロミナンスブロックおよび第2のクロミナンスブロックのイントラ予測のために少なくとも1つのフィルタを有効にするかどうかを表す。そのような例では、第1のクロミナンスブロックが青色のクロミナンスブロック(例えば、Cbブロック)を備えてよく、第2のクロミナンスブロックは赤色のクロミナンスブロック(例えば、Crブロック)を備えてよい。
[0325] 上で示されたように、ビデオコーダは、シンタックス要素の値をコーディングできる。いくつかの例では、ビデオコーダが、CUのある区画に対するシンタックス要素の値をコーディングできる。そのような例では、CUが2N×2Nのピクセルというサイズを有し、CUのその区画は2N×2Nのピクセルというサイズの区画と、N×Nのピクセルというサイズの区画の1つを備える。さらに、いくつかの例で、ビデオコーダは、CUが単一の区画を備えるか複数の区画を備えるかを示すデータをコーディングできる。CUが単一の区画を備えることをデータが示すとき、ビデオコーダは、単一の区画に対する単一のシンタックス要素の値をコーディングできる。CUが複数の区画を備えることをデータが示すとき、ビデオコーダは、区画の各々に対するそれぞれのシンタックス要素の値をコーディングできる。いくつかのそのような例では、複数の区画は4つの区画を備え得る。
[0326] さらに、いくつかの例では、CUの各区画は、ルミナンス成分と、第1のクロミナンス成分と、第2のクロミナンス成分とを備え得る。各区画に対して、ビデオコーダは、ルミナンス成分のために少なくとも1つのフィルタを有効にするかどうかを表す第1のシンタックス要素、第1のクロミナンス成分のために少なくとも1つのフィルタを有効にするかどうかを表す第2のシンタックス要素、および第2のクロミナンス成分のために少なくとも1つのフィルタを有効にするかどうかを表す第3のシンタックス要素の値をコーディングできる。いくつかのそのような例では、ビデオコーダが、第1のシンタックス要素、第2のシンタックス要素、および第3のシンタックス要素の値をコーディングするとき、ビデオコーダは、ブロックが4:4:4のビデオフォーマットに準拠するときにのみ、第1のシンタックス要素、第2のシンタックス要素、および第3のシンタックス要素の値をコーディングできる。
[0327] いくつかの例では、CUの各区画が、ルミナンス成分と、第1のクロミナンス成分と、第2のクロミナンス成分とを備える。各区画に対して、ビデオコーダは、ルミナンス成分、第1のクロミナンス成分、および第2の成分の各々のために少なくとも1つのフィルタを有効にするかどうかを表す、単一のシンタックス要素の値をコーディングできる。少なくともいくつかのそのような例では、第1のクロミナンス成分が青色のクロミナンス成分(すなわち、Cb)を備え、第2のクロミナンス成分は赤色のクロミナンス成分(すなわち、Cr)を備える。
[0328] さらに、いくつかの例では、各区画に対して、ビデオコーダが、区画のルミナンス成分のために少なくとも1つのフィルタを有効にするかどうかを表す、区画のルミナンス成分に対するそれぞれのシンタックス要素の値をコーディングできる。CUに対して、ビデオコーダは、CUの全ての区画のクロミナンス成分のために少なくとも1つのフィルタを有効にするかどうかを表す、それぞれのシンタックス要素の値をコーディングできる。
[0329] いくつかの例では、ビデオコーダがシンタックス要素の値をコーディングするとき、ビデオコーダは、CUに対するシンタックス要素の値をコーディングできる。いくつかのそのような例では、ビデオコーダが、CUの1つまたは複数の区画のルミナンス成分のために少なくとも1つのフィルタを有効にするかどうかを表す、第1のシンタックス要素の第1の値をコーディングできる。加えて、ビデオコーダは、CUの第1のタイプの1つまたは複数の区画のクロミナンス成分のために少なくとも1つのフィルタを有効にするかどうかを表す、第2のシンタックス要素の第2の値をコーディングできる。さらに、ビデオコーダは、CUの第2のタイプの1つまたは複数の区画のクロミナンス成分のために少なくとも1つのフィルタを有効にするかどうかを表す、第3のシンタックス要素の第3の値をコーディングできる。さらに、いくつかの例では、ビデオコーダが、CUの1つまたは複数の区画のルミナンス成分のために少なくとも1つのフィルタを有効にするかどうかを表す、第1のシンタックス要素の第1の値をコーディングできる。加えて、ビデオコーダは、CUの第1のタイプおよび第2のタイプの1つまたは複数の区画のクロミナンス成分のために少なくとも1つのフィルタを有効にするかどうかを表す、第2のシンタックス要素の第2の値をコーディングできる。いくつかのそのような例では、第1のタイプのクロミナンス成分は青色のクロミナンス成分(すなわち、Cb)を備え、第2のタイプのクロミナンス成分は赤色のクロミナンス成分(すなわち、Cr)を備える。
[0330] さらに、いくつかの例で、ビデオコーダは、ブロックが2N×2NピクセルのサイズのCUのN×Nピクセルのサイズの区画を備えるときにのみ、シンタックス要素の値をコーディングできる。他の例で、ビデオコーダは、閾値未満のサイズを有するCUをブロックが備えるときにのみ、シンタックス要素の値をコーディングできる。いくつかのそのような例で、ビデオコーダは、ブロックを含むスライスのスライスヘッダ、ブロックを含むピクチャに対するPPS、ブロックを含むピクチャのシーケンスに対するSPS、およびブロックを含むビデオデータの1つまたは複数のレイヤに対するVPSの少なくとも1つにおいて、閾値を表すシンタックス要素の値をコーディングできる。
[0331] いくつかの例で、ビデオコーダは、閾値未満のサイズを有するTUをブロックが備えるときにのみ、シンタックス要素の値をコーディングできる。さらに、いくつかのそのような例で、ビデオコーダは、ブロックを含むスライスのスライスヘッダ、ブロックを含むピクチャに対するPPS、ブロックを含むピクチャのシーケンスに対するSPS、およびブロックを含むビデオデータの1つまたは複数のレイヤに対するVPSの少なくとも1つにおいて、閾値を表すシンタックス要素の値をコーディングできる。
[0332] いくつかの例で、ビデオコーダは、ブロックが特定の予測モードを使用してコーディングされるときにのみ、シンタックス要素の値をコーディングする。いくつかの例で、ビデオコーダは、少なくとも1つのフィルタが選択的に有効または無効にされ得ることをシンタックス要素の値が示すときにのみ、シンタックス要素の値をコーディングする。いくつかの例で、ビデオコーダは、ブロックを含むスライスのスライスヘッダ、ブロックを含むピクチャに対するPPS、ブロックを含むピクチャのシーケンスに対するSPS、およびブロックを含むビデオデータの1つまたは複数のレイヤに対するVPSの少なくとも1つにおいて、少なくとも1つのフィルタが選択的に有効にされ得るか無効にされ得るかを示す、シンタックス要素の値をコーディングする。
[0333] さらに、いくつかの例で、ビデオコーダは、ルミナンスチャネルのみに対してシンタックス要素の値をコーディングする。他の例で、ビデオコーダは、ブロックのルミナンス成分のみに対してシンタックス要素の値をコーディングする。他の例で、ビデオコーダは、サポートされる最小のCUサイズであるサイズを有するCUをブロックが備えるときにのみ、シンタックス要素の値をコーディングする。他の例で、ビデオコーダは、サポートされる最小のTUサイズであるサイズを有するTUをブロックが備えるときにのみ、シンタックス要素の値をコーディングする。他の例で、ビデオコーダは、ブロックがTUを備え、TUが少なくとも1つの0でない係数を含むことをTUのためのコーディングされたブロックのフラグが示すときにのみ、シンタックス要素の値をコーディングできる。
[0334] 加えて、いくつかの例で、ビデオコーダがシンタックス要素の値をコーディングするとき、ビデオコーダは、CABACを使用してシンタックス要素の値をコーディングできる。いくつかのそのような例で、ビデオコーダは、シンタックス要素がルミナンスチャネルに対応するか、第1のクロミナンスチャネルに対応するか、または第2のクロミナンスチャネルに対応するかに基づいて、シンタックス要素をコーディングするためのコンテキストを決定できる。いくつかのそのような例で、ビデオコーダは、シンタックス要素がルミナンスチャネルに対応するか、または第1のクロミナンスチャネルと第2のクロミナンスチャネルの1つに対応するかに基づいて、シンタックス要素をコーディングするためのコンテキストを決定できる。さらに、いくつかのそのような例で、第1のクロミナンスチャネルは青色のクロミナンスチャネル(すなわち、Cb)を備え、第2のクロミナンスチャネルは赤色のクロミナンスチャネル(すなわち、Cr)を備える。
[0335] いくつかの例では、ビデオコーダが、シンタックス要素がブロックのルミナンス成分に対応するか、ブロックの第1のクロミナンス成分に対応するか、またはブロックの第2のクロミナンス成分に対応するかに基づいて、シンタックス要素のためのコンテキストを決定できる。いくつかの例では、ビデオコーダが、シンタックス要素がブロックのルミナンス成分に対応するか、またはブロックの第1のクロミナンス成分とブロックの第2のクロミナンス成分の1つに対応するかに基づいて、シンタックス要素のためのコンテキストを決定できる。そのような例では、第1のクロミナンス成分が青色のクロミナンス成分(すなわち、Cb)を備えてよく、第2のクロミナンス成分は赤色のクロミナンス成分(すなわち、Cr)を備えてよい。
[0336] さらに、いくつかの例では、ブロックが現在のブロックを備えてよく、ビデオコーダは現在のブロックに対する少なくとも1つの隣接ブロックのシンタックス要素の値に基づいて、シンタックス要素のためのコンテキストを決定できる。少なくとも1つの隣接ブロックは、現在のブロックに対する左の隣接ブロックと現在ブロックに対する上の隣接ブロックの少なくとも1つを備え得る。さらに、隣接ブロックが利用可能でないとき、または隣接ブロックのシンタックス要素の値が0でないとき、ビデオコーダは、コンテキストに対するコンテキストインデックスが0に等しいと決定することをコンテキストが備えると、決定できる。いくつかの例で、隣接ブロックのシンタックス要素の値が1に等しいとき、ビデオコーダは、コンテキストに対するコンテキストインデックスが1に等しいと決定することをコンテキストが備えると、決定できる。
[0337] いくつかの例で、ビデオコーダは、ブロックに対する参照サンプルの分散、2つの隣り合うピクセルの絶対的差分和、閾値よりも大きなピクセル間の最大の差分、最大の差分を有する回数のカウントを閾値と比較すること、[1,−2,1]FIRフィルタリングの結果を閾値と比較すること、ピクセル差分の符号変化の回数のカウント、ブロックを予測するための予測モード、ブロックのサイズ、およびブロックの区画サイズの少なくとも1つに基づいて、シンタックス要素をコーディングするためのコンテキストを決定できる。
[0338] 加えて、いくつかの例では、ビデオコーダが、閾値に対するブロックのサイズの比較の第1の結果に対してシンタックス要素の値をコーディングでき、異なる結果に対して、方法は、少なくとも1つのフィルタを有効にするかどうかを表すシンタックス要素の値を推測することを備える。いくつかのそのような例で、第1の結果は、ブロックのサイズが閾値より大きいことを示す比較結果を備える。いくつかの例で、第1の結果は、ブロックのサイズが閾値より小さいことを示す比較結果を備える。
[0339] さらに、いくつかの例で、ビデオコーダは、シンタックス要素がブロックのルミナンスチャネルまたはルミナンス成分のためのものであるとき、シンタックス要素の値を推測できる。いくつかの例で、ビデオコーダは、シンタックス要素がブロックのクロミナンスチャネルまたはクロミナンス成分のためのものであるとき、シンタックス要素の値を推測できる。
[0340] いくつかの例で、ビデオコーダがシンタックス要素の値をコーディングするとき、ビデオコーダは、少なくとも1つのフィルタに対する第1のシンタックス要素の値をコーディングできる。そのような例で、ビデオコーダは、ブロックのイントラ予測のために第2の異なるフィルタを有効にするかどうかを表す第2のシンタックス要素の値を推測できる。
[0341] いくつかの例で、ビデオコーダがシンタックス要素の値をコーディングするとき、ビデオコーダは、スライスヘッダ、PPS、SPS、およびVPSの少なくとも1つのシンタックス要素の値をコーディングできる。いくつかのそのような例で、ビデオコーダは、スライスヘッダ、PPS、SPS、およびVPSの少なくとも1つのシンタックス要素の値が、イントラ予測のための少なくとも1つのフィルタが有効にされ得ることを示すときにのみ、ブロックのイントラ予測のために少なくとも1つのフィルタを有効にするかどうかを表すシンタックス要素の値をコーディングできる。
[0342] いくつかの例では、少なくとも1つのフィルタが、MDISフィルタ、32タップの補間フィルタ、およびエッジフィルタの少なくとも1つを備える。さらに、いくつかの例で、ビデオコーダがブロックをイントラ予測コーディングするとき、ビデオコーダは、少なくとも1つのフィルタが有効にされることをシンタックス要素の値が示すときに、少なくとも1つのフィルタを実行し得る。さらに、ビデオコーダは、少なくとも1つのフィルタが有効にされることをシンタックス要素の値が示すときに、少なくとも1つのフィルタの実行をスキップできる。加えて、いくつかの例で、少なくとも1つのフィルタは、モード依存イントラ平滑化(MDIS)フィルタ、1/32ピクセルの双線形補間フィルタ、境界フィルタ、エッジフィルタ、およびDCフィルタの少なくとも1つを備える。
[0343] いくつかの例では、少なくとも1つのブロックがCUとTUの1つに対応する。さらに、ビデオコーダがシンタックス要素の値をコーディングするとき、ビデオコーダは、変換スキップフラグシンタックス要素の値をコーディングする前に、CUまたはTUに対するシンタックス要素の値をコーディングする。加えて、ビデオコーダは、少なくとも1つのフィルタを有効にするかどうかを表すシンタックス要素の値および変換スキップフラグ要素の値に少なくとも一部基づいて、少なくとも1つのフィルタを有効にするか無効にするかを決定できる。
[0344] 少なくとも前の段落の例においては、少なくとも1つのフィルタを有効にするか無効にするかをビデオコーダが決定するとき、ビデオコーダは、少なくとも1つのフィルタを有効にするかどうかを表すシンタックス要素が、フィルタリングが無効にされ得ることを示す値を有するとき、および、変換スキップフラグシンタックス要素が、変換がTUに適用されるべきでないことを示す値を有するとき、または、少なくとも1つのフィルタを有効にするかどうかを表すシンタックス要素が、フィルタリングが無効にされるべきでないことを示す値をフィルタリングが有することを示す値を有するとき、HEVC Range Extensionsの仕様(JCTVC−M1005−v2)において規定されるような少なくとも1つのフィルタを有効または無効にできる。加えて、ビデオコーダは、少なくとも1つのフィルタを有効にするかどうかを表すシンタックス要素が、フィルタリングが無効にされ得ることを示す値を有するとき、および、変換スキップフラグシンタックス要素の値が、TUに変換を適用するかどうかが他のシンタックス要素に依存することを示すとき、少なくとも1つのフィルタを無効にできる。すなわち、ビデオデコーダは、変換スキップフラグ以外のシンタックス要素に基づいて、変換を適用するかどうかを決定できる。
[0345] さらに、いくつかの例で、少なくとも1つのフィルタを有効にするか無効にするかをビデオコーダが決定するとき、ビデオコーダは、少なくとも1つのフィルタを有効にするかどうかを表すシンタックス要素が、フィルタリングが無効にされ得ることを示す値を有するとき、HEVC Range Extensionsの仕様(JCTVC−M1005−v2)において規定されるような少なくとも1つのフィルタを有効または無効にする。いくつかの例で、少なくとも1つのフィルタを有効にするか無効にするかをビデオコーダが決定するとき、ビデオコーダは、少なくとも1つのフィルタを有効にするかどうかを表すシンタックス要素が、フィルタリングが無効にされるべきでないことを示す値をフィルタリングが有することを示す値を有するとき、HEVC Range Extensionsの仕様(JCTVC−M1005−v2)において規定されるような少なくとも1つのフィルタを有効または無効にする。いくつかの例で、少なくとも1つのフィルタを有効にするか無効にするかをビデオコーダが決定するとき、ビデオコーダは、少なくとも1つのフィルタを有効にするかどうかを表すシンタックス要素が、フィルタリングが無効にされ得ることを示す値を有するとき、および、変換スキップフラグシンタックス要素が、TUに変換を適用するかどうかが他のシンタックス要素に依存することを示すとき、少なくとも1つのフィルタを無効にできる。
[0346] いくつかの例で、少なくとも1つのフィルタを有効にするかどうかを表すシンタックス要素に対してフィルタリングが無効にされ得ることを示す値は、1という値を備える。いくつかの例では、少なくとも1つのフィルタを有効にするかどうかを表すシンタックス要素に対してフィルタリングが無効にされるべきでないことを示す値が、0という値を備える。さらに、いくつかの例で、変換スキップフラグシンタックス要素に対するTUに変換が適用されるべきでないことを示す値は、1という値を備える。いくつかの例で、TUに変換を適用するかどうかが他のシンタックス要素に依存することを示す変換スキップフラグシンタックス要素の値は、0という値を備える。
[0347] さらに、いくつかの例では、少なくとも1つのフィルタを有効にするか無効にするかをビデオコーダが決定するとき、ビデオコーダが、少なくとも1つのフィルタを有効にするかどうかを表すシンタックス要素の値および少なくとも1つのブロックに対するtransquant_bypass_flagの値に少なくとも一部基づいて、少なくとも1つのフィルタを有効または無効にできる。
[0348] いくつかの例では、ビデオコーダが、暗黙的な導出を使用して少なくとも1つのフィルタを無効にするかどうかを決定できる。いくつかの例では、ビデオコーダが、少なくとも1つのフィルタを無効にするかどうかを決定できるは、3タップのFIRフィルタ[1,−2,1]を使用して少なくとも1つのフィルタを無効にするかどうかを決定することを備える。少なくともいくつかのそのような例では、少なくとも1つのフィルタを無効にするかどうかをビデオコーダが決定するとき、ビデオコーダは、少なくとも1つのフィルタを有効にするかどうかを表すシンタックス要素が、少なくとも1つのブロックに対してフィルタリングが無効にされ得ることを示す値を有するとき、および、FIRフィルタの結果が閾値を下回るとき、HEVC Range Extensionsの仕様(JCTVC−M1005−v2)において規定されるような少なくとも1つのフィルタを有効にするか無効にするかを決定できる。さらに、いくつかのそのような例では、少なくとも1つのフィルタを無効にするかどうかをビデオコーダが決定するとき、ビデオコーダは、少なくとも1つのフィルタを有効にするかどうかを表すシンタックス要素が、少なくとも1つのブロックに対してフィルタリングが無効にされ得ることを示す値を有するとき、および、FIRフィルタの結果が閾値以上であるとき、少なくとも1つのフィルタを無効にできる。
[0349] いくつかの例では、ビデオコーダがブロックをイントラ予測コーディングするとき、ビデオコーダは、ブロックに対する予測されたブロックをイントラ予測し、ブロックに対する1つまたは複数の残差値を復号し、ブロックを復号するために予測されたブロックを残差値と組み合わせることができる。例えば、ビデオコーダは、復号されたブロック中の各サンプルが予測されたブロック中のサンプルと対応する残差サンプルとの合計に等しいように、予測されたブロックと残差値とを組み合わせることができる。他の例では、ビデオコーダがブロックをイントラ予測コーディングするとき、ビデオコーダが、ブロックに対する予測されたブロックをイントラ予測し、ブロックと予測されたブロックとの差分に基づいてブロックに対する1つまたは複数の残差値を計算し、残差値を符号化できる。
[0350] 図21Aは、本開示の1つまたは複数の技法による、ビデオデータを符号化するためのビデオエンコーダ20の例示的な動作を示すフローチャートである。図21Aの例では、ビデオエンコーダ20が、第1のシンタックス要素(例えば、filter_disable_flagシンタックス要素)の値を符号化でき、第1のシンタックス要素は、ビデオデータのブロックのイントラ予測のためにフィルタを有効にするかどうかを表す(600)。言い換えると、ビデオエンコーダ20は、ビットストリーム中に、第1のシンタックス要素を示すデータを含め得る。いくつかの例で、第1のシンタックス要素を示すデータを含めることは、第1のシンタックス要素をエントロピー符号化する(例えば、CABAC符号化する)ことを備える。いくつかの例で、フィルタは、JCTVC−M1005−v2において記述されるような、双線形補間フィルタである。
[0351] さらに、ビデオエンコーダ20は第2のシンタックス要素(例えば、transform_skip_flagシンタックス要素)の値を符号化でき、第2のシンタックス要素は、予測後の残差信号が変換を伴わずに量子化されるかどうかを規定する(602)。言い換えると、ビデオエンコーダ20は、ビットストリーム中に、第2のシンタックス要素を示すデータを含め得る。いくつかの例で、第2のシンタックス要素を示すデータを含めることは、第2のシンタックス要素をエントロピー符号化する(例えば、CABAC符号化する)ことを備える。ビデオエンコーダ20は、フィルタが無効にされるかどうかをビデオデコーダ30が第1のシンタックス要素および第2のシンタックス要素に基づいて決定することが可能であるように、第1のシンタックス要素および第2のシンタックス要素の値を設定できる。
[0352] 加えて、ビデオエンコーダ20は、ブロックをイントラ予測符号化できる(604)。言い換えると、ビデオエンコーダ20は、ブロックを符号化するためにイントラ予測を使用できる。図21Aの例では、ビデオエンコーダ20がブロックをイントラ予測符号化するとき、ビデオエンコーダ20は、フィルタが有効にされるときにブロックのためのイントラ予測データにフィルタを適用できる(606)。例えば、ビデオエンコーダ20は、ブロックに対応する予測ブロックの各サンプルにフィルタを適用できる。
[0353] 図21Bは、本開示の1つまたは複数の技法による、ビデオデータを復号するためのビデオデコーダ30の例示的な動作を示すフローチャートである。図21Bの例では、ビデオデコーダ30が、第1のシンタックス要素(例えば、filter_disable_flagシンタックス要素)の値を復号でき、第1のシンタックス要素は、ビデオデータのブロックのイントラ予測のためにフィルタを有効にするかどうかを示す(例えば、それを表す)(63)。言い換えると、ビデオデコーダ30は、ビットストリームから第1のシンタックス要素を取得できる。いくつかの例で、ビットストリームから第1のシンタックス要素を取得することは、第1のシンタックス要素をエントロピー復号する(例えば、CABAC復号する)ことを備える。いくつかの例で、フィルタは、JCTVC−M1005−v2において記述されるような、双線形補間フィルタである。
[0354] さらに、ビデオデコーダ30は第2のシンタックス要素(例えば、transform_skip_flagシンタックス要素)の値を復号でき、第2のシンタックス要素は、予測後の残差信号が変換を伴わずに量子化されるかどうかを規定する(632)。言い換えると、ビデオデコーダ30は、ビットストリームから第2のシンタックス要素を取得できる。いくつかの例では、ビットストリームから第2のシンタックス要素を取得することは、第2のシンタックス要素をエントロピー復号する(例えば、CABAC復号する)ことを備える。
[0355] 加えて、ビデオデコーダ30は、ブロックをイントラ予測復号できる(634)。言い換えると、ビデオデコーダ30は、ブロックを復号するためにイントラ予測を使用できる。図21Bの例では、ビデオデコーダ30がブロックをイントラ予測復号するとき、ビデオデコーダ30は、第1のシンタックス要素の値および第2のシンタックス要素の値に少なくとも一部基づいて、フィルタを有効にするか無効にするかを決定できる(636)。さらに、フィルタが有効にされるとき、ビデオデコーダ30は、ブロックのためのイントラ予測データにフィルタを適用できる(638)。例えば、ビデオデコーダ30は、ブロックに対応する予測ブロックの各サンプルにフィルタを適用できる。
[0356] 図22Aは、本開示の1つまたは複数の技法による、ビデオデータを符号化するためのビデオエンコーダ20の例示的な動作を示すフローチャートである。図22Aの例では、ビデオエンコーダ20が、イントラ予測のために使用される1つまたは複数のフィルタを適応的に無効にできる(650)。いくつかの例では、1つまたは複数のフィルタが平滑化フィルタを含む。いくつかの例では、1つまたは複数のフィルタが、双線形補間フィルタ、エッジフィルタ、およびDCイントラ予測モードフィルタの少なくとも1つを含む。エッジフィルタは、勾配ベースの平滑化を使用して、第1の予測の列と第1の予測の行とをフィルタリングできる。DCイントラ予測モードフィルタは、2タップのFIRフィルタとともにDCの値を使用して予測ブロックの第1の予測の行と第1の予測の列とをフィルタリングでき、3タップのフィルタを使用して予測ブロックの角のサンプルをフィルタリングする。
[0357] 加えて、ビデオエンコーダ20は、1つまたは複数のフィルタを制御するシンタックス要素をシグナリングできる(652)。いくつかの例では、シンタックス要素がPUにおいてシグナリングされる。さらに、いくつかの例で、シンタックス要素は、残差信号が変換を伴わずに量子化されるかどうかを規定する。例えば、シンタックス要素はtransform_skip_flagシンタックス要素であり得る。他の例では、シンタックス要素はcu_transquant_bypass_flagであり得る。さらに、ビデオエンコーダ20は、ビデオデータの現在のビデオブロックのための予測データを生成するために、イントラ予測を行い得る(654)。
[0358] 残差信号が変換を伴わずに量子化されるかどうかをシンタックス要素が規定するいくつかの例では、ビデオエンコーダ20が第2のシンタックス要素の値を符号化できる。第2のシンタックス要素は、ビデオデータのブロックのイントラ予測のために1つまたは複数のフィルタを有効にするかどうかを表し得る。さらに、ビデオエンコーダ20は、第1のシンタックス要素の値を符号化できる。1つまたは複数のフィルタが無効にされるかどうかをビデオデコーダが第1のシンタックス要素および第2のシンタックス要素に基づいて決定することが可能であるように、第1のシンタックス要素および第2のシンタックス要素が設定される。さらに、1つまたは複数のフィルタが有効にされるとき、ビデオエンコーダ20は、ブロックのためのイントラ予測データに1つまたは複数のフィルタを適用できる。いくつかのそのような例では、1つまたは複数のフィルタが無効にされ得ることを第2のシンタックス要素の値が示すとき、および、TUに変換が適用されるべきでないことを示す値を第1のシンタックス要素が有するとき、または、1つまたは複数のフィルタが無効にされるべきでないことを示す値を第2のシンタックス要素が有するとき、1つまたは複数のフィルタが有効または無効にされる。1つまたは複数のフィルタが無効にされ得ることを第2のシンタックス要素の値が示すとき、および、TUへの変換の適用が他のシンタックス要素に依存することを第1のシンタックス要素の値が示すとき、1つまたは複数のフィルタは無効にされる。1つまたは複数のフィルタは、JCTVC−M1005−v2において規定され得る。
[0359] 図22Bは、本開示の1つまたは複数の技法による、ビデオデータを復号するためのビデオデコーダ30の例示的な動作を示すフローチャートである。図22Bの例では、ビデオデコーダ30が、シンタックス要素に基づいて、イントラ予測のために使用される1つまたは複数のフィルタを適応的に無効にできる(670)。いくつかの例では、1つまたは複数のフィルタが平滑化フィルタを含む。いくつかの例では、1つまたは複数のフィルタが、双線形補間フィルタ、エッジフィルタ、およびDCイントラ予測モードフィルタの少なくとも1つを含む。エッジフィルタは、勾配ベースの平滑化を使用して、第1の予測の列と第1の予測の行とをフィルタリングできる。DCイントラ予測モードフィルタは、2タップのFIRフィルタとともにDCの値を使用して予測ブロックの第1の予測の行と第1の予測の列とをフィルタリングでき、3タップのフィルタを使用して予測ブロックの角のサンプルをフィルタリングする。いくつかの例では、シンタックス要素がPUにおいてシグナリングされる。
[0360] 加えて、ビデオデコーダ30は、現在のビデオスライスの現在のブロックのための予測データを生成するために、イントラ予測を行い得る(672)。いくつかの例では、シンタックス要素が、残差信号が変換(例えば、DCT)を伴わずに量子化されるかどうかを規定する。例えば、シンタックス要素はtransform_skip_flagシンタックス要素であり得る。さらに、いくつかのそのような例では、シンタックス要素が第1のシンタックス要素であり、ビデオデコーダ30が第2のシンタックス要素の値を復号する。第2のシンタックス要素は、ビデオデータのブロックのイントラ予測のためにフィルタを有効にするかどうかを表し得る。言い換えると、第2のシンタックス要素はフィルタ無効化フラグであり得る。さらに、ビデオデコーダ30は、第1のシンタックス要素の値を復号できる。ビデオデータをイントラ復号することの一部として、ビデオデコーダ30は、第1のシンタックス要素の値および第2のシンタックス要素の値に少なくとも一部基づいて、フィルタを有効にするか無効にするかを決定できる。さらに、フィルタが有効にされるとき、ビデオデコーダ30は、ブロックのためのイントラ予測データにフィルタを適用できる。例えば、いくつかの例で、ビデオデコーダ30は、1つまたは複数のフィルタが無効にされ得ることを第2のシンタックス要素の値が示すとき、および、TUに変換が適用されるべきでないことを示す値を第1のシンタックス要素が有するとき、または、フィルタリングが無効にされるべきでないことを示す値を第2のシンタックス要素が有するとき、1つまたは複数のフィルタを有効または無効にできる。さらに、ビデオデコーダ30は、1つまたは複数のフィルタが無効にされ得ることを第2のシンタックス要素の値が示すとき、および、TUへの変換の適用が他のシンタックス要素に依存することを第1のシンタックス要素の値が示すとき、1つまたは複数のフィルタを無効にできる。1つまたは複数のフィルタは、JCTVC−M1005−v2において規定され得る。
[0361] 例に応じて、本明細書で説明される技法のいずれものいくつかの処置または事象は、異なる順序で行われてよく、全体的に追加され、結合され、または除外されてよいことが、認識されるべきである(例えば、説明される処置または事象の全てが、この技法の実践のために必要であるとは限らない)。その上、いくつかの例では、動作またはイベントが、連続的にでなく、同時に、例えば、マルチスレッド処理、割込み処理、または複数のプロセッサを通じて行われ得る。
[0362] 1つまたは複数の例では、説明された機能が、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって処理され得る。コンピュータ可読媒体は、データ記憶媒体のような有形媒体に対応するコンピュータ可読記憶媒体、または、例えば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、一般に、(1)非一時的である有形のコンピュータ可読記憶媒体、または(2)信号もしくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明される技法の実装のための、命令、コードおよび/またはデータ構造を取り出すために、1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
[0363] 限定でなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用されコンピュータによってアクセスされ得る任意の他の媒体を備え得る。また、任意の接続が、コンピュータ可読媒体と適切に呼ばれる。例えば、命令が、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用してウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに、非一時的な有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタル多用途ディスク(DVD)、フロッピー(登録商標)ディスク、およびブルーレイ(登録商標)ディスクを含み、通常、ディスク(disk)は磁気的にデータを再生し、ディスク(disc)はレーザーを用いて光学的にデータを再生する。上記の組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
[0364] 命令は、1つまたは複数のデジタルシグナルプロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他の同等の集積された論理回路もしくは個別の論理回路のような、1つまたは複数のプロセッサによって行われ得る。従って、「プロセッサ」という用語は、本明細書において、前述の構造のいずれか、または本明細書で説明された技法の実装に適した任意の他の構造を指し得る。加えて、いくつかの態様では、本明細書で説明された機能が、符号化および復号のために構成され、または組み合わされたコーデックに組み込まれた、専用ハードウェア内および/またはソフトウェアモジュール内で提供され得る。また、本技法は、1つまたは複数の回路または論理素子内で完全に実装され得る。
[0365] 本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、またはICのセット(例えば、チップセット)を含む、多種多様なデバイスまたは装置において実施され得る。様々なコンポーネント、モジュール、またはユニットは、開示されている技術を行うように構成されたデバイスの機能的態様を強調するように本開示において説明されているが、異なるハードウェアユニットによる実現を必ずしも必要としない。むしろ、上で説明されたように、様々なユニットは、適切なソフトウェアおよび/またはファームウェアとともに、上で説明された1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わされ、または相互動作するハードウェアユニットの集合によって提供され得る。
[0366] 様々な例が説明されてきた。これらの例および他の例、並びにそれらの特定の組合せが、以下の特許請求の範囲内に入る。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[C1]
ビデオデータを復号する方法であって、
シンタックス要素に基づいて、イントラ予測のために使用される1つまたは複数のフィルタを適応的に無効にすることと、
現在のビデオスライスの現在のブロックのための予測データを生成するために、イントラ予測を行うこととを備える、方法。
[C2]
前記1つまたは複数のフィルタは平滑化フィルタを含む、C1に記載の方法。
[C3]
前記1つまたは複数のフィルタは、双線形補間フィルタ、エッジフィルタ、またはDCイントラ予測モードフィルタの少なくとも1つを含み、
前記エッジフィルタは、勾配ベースの平滑化を使用して、第1の予測の列と第1の予測の行とをフィルタリングし、
前記DCイントラ予測モードフィルタは、2タップの有限インパルス応答(FIR)フィルタとともにDCの値を使用して予測ブロックの第1の予測の行と第1の予測の列とをフィルタリングし、3タップのフィルタを使用して前記予測ブロックの角のサンプルをフィルタリングする、C1に記載の方法。
[C4]
前記シンタックス要素は予測ユニット(PU)においてシグナリングされる、C1に記載の方法。
[C5]
前記1つまたは複数のフィルタを適応的に無効にすることは、前記1つまたは複数のフィルタが無効にされるかどうかを示す無効化フラグの値を決定することを備える、C1に記載の方法。
[C6]
前記シンタックス要素は、残差信号が変換を伴わずに量子化されるかどうかを規定し、
前記シンタックス要素がオンにされる場合、前記無効化フラグがオンにされ、
前記無効化フラグがオンである場合、前記1つまたは複数のフィルタが無効にされる、C5に記載の方法。
[C7]
前記シンタックス要素は、残差信号が変換を伴わずに量子化されるかどうかを規定し、
前記無効化フラグが1に等しく、有限インパルス応答(FIR)フィルタの結果が閾値を上回ると決定される場合、前記1つまたは複数のフィルタが無効にされる、C5に記載の方法。
[C8]
前記シンタックス要素がオンにされるとき、予測ブロックが量子化および変換を伴わずにコーディングされ、
前記シンタックス要素がオンにされる場合、前記無効化フラグがオンにされ、
前記無効化フラグがオンである場合、前記1つまたは複数のフィルタが無効にされる、C5に記載の方法。
[C9]
ビデオデータを符号化する方法であって、
イントラ予測のために使用される1つまたは複数のフィルタを適応的に無効にすることと、
前記1つまたは複数のフィルタを制御するシンタックス要素をシグナリングすることと、
前記ビデオデータの現在のビデオブロックのための予測データを生成するために、イントラ予測を行うこととを備える、方法。
[C10]
前記1つまたは複数のフィルタは平滑化フィルタを含む、C9に記載の方法。
[C11]
前記1つまたは複数のフィルタは、双線形補間フィルタ、エッジフィルタ、またはDCイントラ予測モードフィルタの少なくとも1つを含み、
前記エッジフィルタは、勾配ベースの平滑化を使用して、第1の予測の列と第1の予測の行とをフィルタリングし、
前記DCイントラ予測モードフィルタは、2タップの有限インパルス応答(FIR)フィルタとともにDCの値を使用して予測ブロックの第1の予測の行と第1の予測の列とをフィルタリングし、3タップのフィルタを使用して前記予測ブロックの角のサンプルをフィルタリングする、C9に記載の方法。
[C12]
前記シンタックス要素は予測ユニット(PU)においてシグナリングされる、C9に記載の方法。
[C13]
前記1つまたは複数のフィルタを適応的に無効にすることは、前記1つまたは複数のフィルタが無効にされるかどうかを示す無効化フラグの値を決定することを備える、C9に記載の方法。
[C14]
前記シンタックス要素は、残差信号が変換を伴わずに量子化されるかどうかを規定し、
前記シンタックス要素がオンにされる場合、前記無効化フラグがオンにされ、
前記無効化フラグがオンである場合、前記1つまたは複数のフィルタが無効にされる、C13に記載の方法。
[C15]
前記シンタックス要素は、残差信号が変換を伴わずに量子化されるかどうかを規定し、
前記無効化フラグが1に等しく、有限インパルス応答(FIR)フィルタの結果が閾値を上回ると決定される場合、前記1つまたは複数のフィルタが無効にされる、C13に記載の方法。
[C16]
前記シンタックス要素がオンにされるとき、予測ブロックが量子化および変換を伴わずにコーディングされ、
前記シンタックス要素がオンにされる場合、前記無効化フラグがオンにされ、
前記無効化フラグがオンである場合、前記1つまたは複数のフィルタが無効にされる、C13に記載の方法。
[C17]
ビデオデータを記憶するように構成されたコンピュータ可読媒体と、
1つまたは複数のプロセッサとを備え、前記1つまたは複数のプロセッサは、
シンタックス要素に基づいて、イントラ予測のために使用される1つまたは複数のフィルタを適応的に無効にし、
現在のビデオスライスの現在のブロックのための予測データを生成するために、イントラ予測を行うように構成される、ビデオ復号デバイス。
[C18]
前記1つまたは複数のフィルタは平滑化フィルタを含む、C17に記載のビデオ復号デバイス。
[C19]
前記1つまたは複数のフィルタは、双線形補間フィルタ、エッジフィルタ、およびDCイントラ予測モードフィルタの少なくとも1つを含み、
前記エッジフィルタは、勾配ベースの平滑化を使用して、第1の予測の列と第1の予測の行とをフィルタリングし、
前記DCイントラ予測モードフィルタは、2タップの有限インパルス応答(FIR)フィルタとともにDCの値を使用して予測ブロックの第1の予測の行と第1の予測の列とをフィルタリングし、3タップのフィルタを使用して前記予測ブロックの角のサンプルをフィルタリングする、C17に記載のビデオ復号デバイス。
[C20]
前記シンタックス要素は予測ユニット(PU)においてシグナリングされる、C17に記載のビデオ復号デバイス。
[C21]
前記1つまたは複数のフィルタを適応的に無効にすることの一部として、前記1つまたは複数のプロセッサは、前記1つまたは複数のフィルタが無効にされるかどうかを示す無効化フラグの値を決定する、C17に記載のビデオ復号デバイス。
[C22]
前記シンタックス要素は、残差信号が変換を伴わずに量子化されるかどうかを規定し、
前記シンタックス要素がオンにされる場合、前記無効化フラグがオンにされ、
前記無効化フラグがオンである場合、前記1つまたは複数のフィルタが無効にされる、C21に記載のビデオ復号デバイス。
[C23]
前記シンタックス要素は、残差信号が変換を伴わずに量子化されるかどうかを規定し、
前記無効化フラグが1に等しく、有限インパルス応答(FIR)フィルタの結果が閾値を上回ると決定される場合、前記1つまたは複数のフィルタが無効にされる、C21に記載のビデオ復号デバイス。
[C24]
前記シンタックス要素がオンにされるとき、予測ブロックが量子化および変換を伴わずにコーディングされ、
前記シンタックス要素がオンにされる場合、前記無効化フラグがオンにされ、
前記無効化フラグがオンである場合、前記1つまたは複数のフィルタが無効にされる、C21に記載のビデオ復号デバイス。
[C25]
前記1つまたは複数のプロセッサは、
前記現在のブロックのための予測されたブロックをイントラ予測し、
前記現在のブロックに対する1つまたは複数の残差値を復号し、
前記現在のブロックを復号するために、前記予測されたブロックを前記残差値と組み合わせるように構成される、C21に記載のビデオ復号デバイス。
[C26]
シンタックス要素に基づいて、イントラ予測のために使用される1つまたは複数のフィルタを適応的に無効にするための手段と、
現在のビデオスライスの現在のブロックのための予測データを生成するために、イントラ予測を行うための手段とを備える、ビデオ復号デバイス。
[C27]
前記1つまたは複数のフィルタは平滑化フィルタを含む、C26に記載のビデオ復号デバイス。
[C28]
前記1つまたは複数のフィルタは、双線形補間フィルタ、エッジフィルタ、またはDCイントラ予測モードフィルタの少なくとも1つを含み、
前記エッジフィルタは、勾配ベースの平滑化を使用して、第1の予測の列と第1の予測の行とをフィルタリングし、
前記DCイントラ予測モードフィルタは、2タップの有限インパルス応答(FIR)フィルタとともにDCの値を使用して予測ブロックの第1の予測の行と第1の予測の列とをフィルタリングし、3タップのフィルタを使用して前記予測ブロックの角のサンプルをフィルタリングする、C26に記載のビデオ復号デバイス。
[C29]
前記現在のブロックのための予測されたブロックをイントラ予測するための手段と、
前記現在のブロックに対する1つまたは複数の残差値を復号するための手段と、
前記現在のブロックを復号するために、前記予測されたブロックを前記残差値と組み合わせるための手段とをさらに備える、C26に記載のビデオ復号デバイス。