【文献】
Joel Sole, et al., CE11: Unified scans for the significance map and coefficient level coding in high efficiency,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 6th Meeting: Torino, IT, 14-22 July, 2011,2011年 7月15日,JCTVC-F288,URL,http://phenix.it-sudparis.eu/jct/doc_end_user/documents/6_Torino/wg11/JCTVC-F288-v3.zip
【文献】
Takeshi Tsukuba, et al.,Non-CE11.1: Context reduction of significance map coding,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 8th Meeting: San Jose, CA, USA, 1-10 February, 2012,2012年 2月 1日,JCTVC-H0100,URL,http://phenix.it-sudparis.eu/jct/doc_end_user/documents/8_San%20Jose/wg11/JCTVC-H0100-v5.zip
【文献】
Jianle Chen, et al.,AHG5- context derivation clean-up for significance map,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 9th Meeting: Geneva, CH, 27 April - 7 May 2012,2012年 4月20日,JCTVC-I0373,URL,http://phenix.it-sudparis.eu/jct/doc_end_user/documents/9_Geneva/wg11/JCTVC-I0373-v2.zip
(58)【調査した分野】(Int.Cl.,DB名)
前記第1の変換係数をエントロピー復号することが、コンテキスト適応型バイナリ算術コード化(CABAC)に従って、前記第1のコンテキストを使用して前記第1の変換係数をエントロピー復号することを備える、請求項1に記載の方法。
前記第1の変換係数をエントロピー復号するために、前記ビデオデコーダが、コンテキスト適応型バイナリ算術コード化(CABAC)に従って、前記第1のコンテキストを使用して前記第1の変換係数をエントロピー復号するように構成される、請求項5に記載の装置。
前記第1の変換係数をエントロピー復号するための前記手段が、コンテキスト適応型バイナリ算術コード化(CABAC)に従って、前記第1のコンテキストを使用して前記第1の変換係数をエントロピー復号するための手段を備える、請求項9に記載の装置。
前記プロセッサに前記第1の変換係数をエントロピー復号させる前記命令が、前記プロセッサに、コンテキスト適応型バイナリ算術コード化(CABAC)に従って、前記第1のコンテキストを使用して前記第1の変換係数をエントロピー復号させる命令を備える、請求項13に記載のコンピュータ可読記憶媒体。
前記第1の変換係数をエントロピー符号化することが、コンテキスト適応型バイナリ算術コード化(CABAC)に従って、前記第1のコンテキストを使用して前記第1の変換係数をエントロピー符号化することを備える、請求項17に記載の方法。
前記第1の変換係数をエントロピー符号化するために、前記ビデオエンコーダが、コンテキスト適応型バイナリ算術コード化(CABAC)に従って、前記第1のコンテキストを使用して前記第1の変換係数をエントロピー符号化するように構成される、請求項21に記載の装置。
前記第1の変換係数をエントロピー符号化するための前記手段が、コンテキスト適応型バイナリ算術コード化(CABAC)に従って、前記第1のコンテキストを使用して前記第1の変換係数をエントロピー符号化するための手段を備える、請求項25に記載の装置。
前記プロセッサに前記第1の変換係数をエントロピー符号化させる前記命令が、前記プロセッサに、コンテキスト適応型バイナリ算術コード化(CABAC)に従って、前記第1のコンテキストを使用して前記第1の変換係数をエントロピー符号化させる命令を備える、請求項29に記載のコンピュータ可読記憶媒体。
【発明を実施するための形態】
【0029】
全般に、本開示は、例えば、コンテキスト適応型バイナリ算術コード化(CABAC)を使用して、ビデオデータをエントロピーコード化するためのコンテキストを決定することに関する技法を説明する。CABACコード化は一般に、様々なシンタックス要素のバイナリ化された表現をコード化するときに、コンテキストの決定を伴う。シンタックス要素は、例えば、変換係数が有意かどうかを示すデータ、有意な変換係数の符号、及び有意な変換係数のレベル値のような、変換係数のデータを含む。変換係数は一般に、変換単位(TU)のような変換ブロックの係数に対応する。本開示は、変換係数が存在する変換ブロックの領域に基づいて、変換係数をコード化するためのコンテキストを決定するための技法を説明する。
【0030】
一般に、本開示の技法によれば、ビデオコーダは、変換係数が存在する領域に基づいて変換係数をコード化するためのコンテキストを決定し、次いで、決定されたコンテキストを使用して変換係数をエントロピーコード化するように構成され得る。ビデオブロックは、種々の方法で複数の領域へと分割され得る。
図9A及び
図11は、ビデオブロックが1つ又は複数の左上のサブブロック(例えば、4×4のサブブロック)を含む第1の領域と第1の領域の外側のサブブロックを含む第2の領域とに分割される例を示す。
図9Bは、ビデオブロックが対角方向に沿って複数の領域に分割される例を示す。
図10は、ビデオブロックが4分の1に分割され、左上の4分の1が更に、左上の4分の1の左上部分のサブブロックを含む第1のサブ領域と、第1のサブ領域の外側の左上の4分の1のサブブロックを含む第2のサブ領域とに分割される、例を示す。
図12は、ビデオブロックがビデオブロックサイズ(例えば、4×4、8×8、16×16、及び32×32)に対応する複数の領域へと分割される例を示す。
図13Aは、ビデオブロックが複数の水平な長方形領域に分割される例を示す。
図13Bは、ビデオブロックが複数の垂直な長方形領域に分割される例を示す。これらの図が、以下でより詳細に説明される。
【0031】
様々な例において、ビデオコーダは、例えば、変換係数が存在する領域に基づいて、様々な方法で変換係数をコード化するためのコンテキストを決定するように構成され得る。例えば、ビデオコーダは、一部の領域に対しては位置ベースのコンテキスト情報を、又は他の領域に対しては近隣ベースのコンテキスト情報を使用して、コンテキストを決定するように構成され得る。幾つかの例では、ある特定の領域内の全ての変換係数は、その領域に基づいて決定された、同じコンテキストを使用してコード化され得る。他の例では、ある領域内の変換係数のコンテキストは、コンテキストの近隣に基づいて決定され得る。更に他の例では、ビデオコーダは、変換係数が存在する領域に基づいて、コンテキストに適用されるべきオフセットを決定することができる。即ち、領域の各々は、コンテキストに適用されるべき特定のコンテキストオフセットと関連付けられ得る。
【0032】
本開示の技法は、帯域幅の使用を減らすことができ、これは、変換係数のシンタックス要素をコード化するときのビットの節約につながる。そのようなシンタックス要素は、有意係数フラグ(対応する変換係数が有意かどうか、即ち0ではないかどうかを示す)、有意な係数の符号、有意な係数の絶対値が1よりも大きいかどうかの指示、絶対値が1よりも大きな有意な係数の絶対値が2より大きいかどうかの指示、及び/又は、絶対値が2より大きな係数の残りのレベル値のうちの、いずれか又は全てを含み得る。
【0033】
図1は、本開示で説明される技法を利用し得る例示的なビデオ符号化及び復号システム10を示すブロック図である。
図1に示されるように、システム10は、宛先機器14によって後で復号されるべき符号化ビデオデータを生成する発信源機器12を含む。発信源機器12及び宛先機器14は、デスクトップコンピュータ、ノートブック(即ち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、所謂「スマート」フォンなどの電話ハンドセット、所謂「スマート」パッド、テレビジョン、カメラ、表示装置、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミング機器などを含む、広範囲にわたる機器のいずれかを備え得る。場合によっては、発信源機器12及び宛先機器14は、ワイヤレス通信に対応し得る。
【0034】
宛先機器14は、リンク16を介して復号されるべき符号化ビデオデータを受信し得る。リンク16は、発信源機器12から宛先機器14に符号化ビデオデータを移すことが可能な任意のタイプの媒体又は機器を備え得る。一例では、リンク16は、発信源機器12が、符号化ビデオデータをリアルタイムで宛先機器14に直接送信することを可能にするための通信媒体を備え得る。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先機器14に送信され得る。通信媒体は、高周波(RF)スペクトル若しくは1つ又は複数の物理伝送線路のような、任意のワイヤレス又は有線通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、又はインターネットなどのグローバルネットワークのような、パケットベースネットワークの一部を形成し得る。通信媒体は、発信源機器12から宛先機器14への通信を支援するために有用であり得るルータ、スイッチ、基地局、又は任意の他の機器を含み得る。
【0035】
代替的に、符号化データは、出力インターフェース22から記憶装置34に出力され得る。同様に、符号化データは、入力インターフェースによって記憶装置34からアクセスされ得る。記憶装置34は、ハードドライブ、ブルーレイ(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、揮発性又は不揮発性メモリ、若しくは符号化ビデオデータを記憶するための任意の他の好適なデジタル記憶媒体のような、種々の分散した又はローカルでアクセスされるデータ記憶媒体のいずれかを含み得る。更なる一例では、記憶装置34は、発信源機器12によって生成された符号化ビデオを保持し得るファイルサーバ又は別の中間記憶装置に対応し得る。宛先機器14は、ストリーミング又はダウンロードを介して、記憶装置34から、記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶し、その符号化ビデオデータを宛先機器14に送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバは、(例えば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続記憶(NAS)機器、又はローカルディスクドライブを含む。宛先機器14は、インターネット接続を含む、任意の標準のデータ接続を介して符号化ビデオデータにアクセスし得る。これは、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適であるワイヤレスチャネル(例えば、Wi−Fi接続)、有線接続(例えば、DSL、ケーブルモデムなど)、又は両方の組合せを含み得る。記憶装置34からの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、又は両方の組合せであり得る。
【0036】
本開示の技法は、必ずしもワイヤレス適用例又は設定に限定されるとは限らない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、例えばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、又は他の適用例など、種々のマルチメディア適用例のいずれかをサポートするビデオコード化に適用され得る。幾つかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、及び/又はビデオ電話などの適用例をサポートするために、一方向又は双方向のビデオ送信をサポートするように構成され得る。
【0037】
図1の例では、発信源機器12は、ビデオ発信源18と、ビデオエンコーダ20と、出力インターフェース22とを含む。場合によっては、出力インターフェース22は、変調器/復調器(モデム)及び/又は送信機を含み得る。発信源機器12において、ビデオ発信源18は、ビデオキャプチャ機器、例えばビデオカメラ、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、及び/又は発信源ビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステムのような、発信源、或いはそのような発信源の組合せを含み得る。一例として、ビデオ発信源18がビデオカメラである場合、発信源機器12及び宛先機器14は、所謂カメラ付き携帯電話又はビデオ電話を形成し得る。しかしながら、本開示で説明される技法は、一般にビデオコード化に適用可能であってよく、ワイヤレスの適用例及び/又は有線の適用例に適用され得る。
【0038】
キャプチャされたビデオ、以前にキャプチャされたビデオ、又はコンピュータにより生成されたビデオは、ビデオエンコーダ20によって符号化され得る。符号化ビデオデータは、発信源機器12の出力インターフェース22を介して宛先機器14に直接送信され得る。符号化ビデオデータは、更に(又は代替として)、復号及び/又は再生のための宛先機器14又は他の機器による後のアクセスのために記憶装置34上に記憶され得る。
【0039】
宛先機器14は、入力インターフェース28と、ビデオデコーダ30と、表示装置32とを含む。場合によっては、入力インターフェース28は、受信機及び/又はモデムを含み得る。宛先機器14の入力インターフェース28は、リンク16を通じて符号化ビデオデータを受信する。リンク16を通じて通信され、又は記憶装置34上に与えられた符号化ビデオデータは、ビデオデータを復号する際に、ビデオデコーダ30のようなビデオデコーダが使用するためのビデオエンコーダ20によって生成される種々のシンタックス要素を含み得る。そのようなシンタックス要素は、通信媒体上で送信される、記憶媒体上に記憶される、又はファイルサーバ上に記憶される、符号化ビデオデータとともに含まれ得る。
【0040】
表示装置32は、宛先機器14と一体であってよく、又はその外部にあり得る。幾つかの例では、宛先機器14は、一体型表示装置を含み、また、外部表示装置とインターフェースするように構成され得る。他の例では、宛先機器14は表示装置であり得る。一般に、表示装置32は、復号ビデオデータをユーザに対して表示し、液晶表示器(LCD)、プラズマ表示器、有機発光ダイオード(OLED)表示器、又は別のタイプの表示装置のような、種々の表示装置のいずれかを備え得る。
【0041】
ビデオエンコーダ20及びビデオデコーダ30は、現在開発中のHigh Efficiency Video Coding(HEVC)規格のようなビデオ圧縮規格に従って動作することができ、HEVC Test Model(HM)に準拠し得る。代替的に、ビデオエンコーダ20及びビデオデコーダ30は、代替的にMPEG−4、Part 10、Advanced Video Coding(AVC)と呼ばれるITU−T H.264規格のような、他のプロプライエタリ規格又は業界規格、又はそのような規格の拡張に従って動作することができる。規格の拡張には、例えば、スケーラブルビデオコード化(SVC)、マルチビュービデオコード化(MVC)、深度情報のコード化のような3次元(3D)などがある。しかしながら、本開示の技法は、如何なる特定のコード化規格又は規格の拡張にも限定されない。ビデオ圧縮規格の他の例には、MPEG−2及びITU−T H.263がある。
【0042】
図1には示されていないが、幾つかの態様では、ビデオエンコーダ20及びビデオデコーダ30は、各々オーディオエンコーダ及びデコーダと統合されてよく、共通のデータストリーム又は別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するために、適切なMUX−DEMUXユニット、又は他のハードウェア及びソフトウェアを含み得る。適用可能な場合、幾つかの例では、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、又はユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
【0043】
ビデオエンコーダ20及びビデオデコーダ30は各々、1つ又は複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアのような、種々の好適なエンコーダ回路のいずれか、又はそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、機器は、好適な非一時的コンピュータ可読媒体にソフトウェアのための命令を記憶し、1つ又は複数のプロセッサを使用してその命令をハードウェアで実行して、本開示の技法を実行することができる。ビデオエンコーダ20及びビデオデコーダ30の各々は1つ又は複数のエンコーダ又はデコーダ中に含まれてよく、そのいずれも、それぞれの機器において複合エンコーダ/デコーダ(コーデック)の一部として統合されてよい。
【0044】
JCT−VCは、HEVC規格の開発に取り組んでいる。HEVC規格化の取組みは、HEVC Test Model(HM)と呼ばれるビデオコード化機器の発展的モデルに基づく。HMは、例えば、ITU−T H.264/AVCに従って、既存の機器に対してビデオコード化機器の幾つかの追加の能力を仮定する。例えば、H.264は9つのイントラ予測符号化モードを提供するが、HMは33個ものイントラ予測符号化モードを提供し得る。
【0045】
一般に、HMの作業モデルは、ビデオフレーム又はピクチャが、ルーマとクロマの両方のサンプルを含む一連のツリーブロック又は最大コード化単位(LCU)に分割され得ることを記載する。ツリーブロックは、H.264規格のマクロブロックと同様の目的を有する。スライスは、コード化順序で幾つかの連続するツリーブロックを含む。ビデオフレーム又はピクチャは、1つ又は複数のスライスに区分され得る。各ツリーブロックは、4分木に従ってコード化単位(CU)に分割され得る。例えば、4分木のルートノードとしてのツリーブロックは、4つの子ノードに分割されてよく、各子ノードは、次に、親ノードとなり、別の4つの子ノードに分割されてよい。4分木のリーフノードとしての、最終的な、分割されない子ノードは、コード化ノード、即ち、コード化ビデオブロックを備える。コード化ビットストリームに関連するシンタックスデータは、ツリーブロックが分割され得る最大回数を定義することができ、コード化ノードの最小サイズも定義することができる。
【0046】
CUは、コード化ノードと、コード化ノードに関連する予測単位(PU)及び変換単位(TU)とを含む。CUのサイズは、コード化ノードのサイズに対応し、形状が正方形でなければならない。CUのサイズは、8×8画素から最大で64×64以上の画素をもつツリーブロックのサイズまでに及び得る。各CUは、1つ又は複数のPUと、1つ又は複数のTUとを含み得る。CUに関連するシンタックスデータは、例えば、CUを1つ又は複数のPUに区分することを記述し得る。区分モードは、CUが、スキップモード符号化又はダイレクトモード符号化されるか、イントラ予測モード符号化されるか、又はインター予測モード符号化されるかによって異なり得る。PUは、形状が非正方形になるように区分され得る。CUに関連するシンタックスデータは、例えば、4分木に従って、CUを1つ又は複数のTUに区分することも記述し得る。TUは、形状が正方形又は非正方形であり得る。
【0047】
HEVC規格は、CUごとに異なり得るTUに従った変換を可能にする。TUは、一般に、区分されたLCUについて定義された所与のCU内のPUのサイズに基づいてサイズ決定されるが、常にそうであるとは限らない。TUは、一般にPUと同じサイズであるか又はPUよりも小さい。幾つかの例では、CUに対応する残差サンプルは、「残差4分木」(RQT)として知られる4分木構造を使用してより小さい単位に再分割され得る。RQTのリーフノードは変換単位(TU)と呼ばれ得る。TUに関連する画素差分値は、量子化され得る変換係数を生成するために変換され得る。
【0048】
一般に、PUは、予測プロセスに関連するデータを含む。例えば、PUがイントラモード符号化されるとき、PUは、PUのイントラ予測モードを記述するデータを含み得る。別の例として、PUがインターモード符号化されるとき、PUは、そのPUの動きベクトルを定義するデータを含み得る。PUの動きベクトルを定義するデータは、例えば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの解像度(例えば、1/4画素精度又は1/8画素精度)、動きベクトルが指す参照ピクチャ、及び/又は動きベクトルの参照ピクチャリストを記述し得る。
【0049】
一般に、TUは、変換プロセス及び量子化プロセスのために使用される。1つ又は複数のPUを有する所与のCUは、1つ又は複数のTUも含み得る。予測の後に、ビデオエンコーダ20は、PUに対応する残差値を計算し得る。残差値は、エントロピーコード化のためのシリアル化変換係数を生成するために、TUを使用して変換係数に変換され、量子化され、走査され得る画素差分値を備える。本開示では通常、CUのコード化ノードを指すために「ビデオブロック」という用語を使用する。幾つかの特定の場合において、本開示では、コード化ノード及びPU並びにTUを含む、ツリーブロック、即ち、LCU又はCUを指す「ビデオブロック」という用語も使用し得る。
【0050】
ビデオシーケンスは通常、一連のビデオフレーム又はピクチャを含む。ピクチャグループ(GOP)は、一般に、一連の1つ又は複数のビデオピクチャを備える。GOPは、GOP中に含まれる幾つかのピクチャを記述するシンタックスデータを、GOPのヘッダ中、ピクチャのうちの1つ又は複数のヘッダ中、又は他の場所に含み得る。ピクチャの各スライスは、それぞれのスライスの符号化モードを記述するスライスシンタックスデータを含み得る。ビデオエンコーダ20は通常、ビデオデータを符号化するために個々のビデオスライス内のビデオブロックに対して動作する。ビデオブロックは、CU内のコード化ノードに対応し得る。ビデオブロックは、固定サイズ又は可変サイズを有してよく、指定されたコード化規格に従ってサイズが異なり得る。
【0051】
一例として、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を指す。
【0052】
本開示では、「N×N(NxN)」及び「N×N(N by N)」は、垂直寸法及び水平寸法に関するビデオブロックの画素寸法、例えば、16×16(16x16)画素又は16×16(16 by 16)画素を指すために互換的に使用され得る。一般に、16×16ブロックは、垂直方向に16画素を有し(y=16)、水平方向に16画素を有する(x=16)。同様に、N×Nブロックは一般に、垂直方向にN画素を有し、水平方向にN画素を有し、ここでNは非負の整数値を表す。ブロック内の画素は行と列で構成され得る。更に、ブロックは、必ずしも、水平方向に垂直方向と同じ数の画素を有する必要はない。例えば、ブロックはN×M画素を備えてよく、Mは必ずしもNに等しいとは限らない。
【0053】
CUのPUを使用したイントラ予測コード化又はインター予測コード化の後、ビデオエンコーダ20は、CUのTUのための残差データを計算し得る。PUは、(画素領域とも呼ばれる)空間領域において画素データを備えてよく、TUは、例えば、残差ビデオデータへの離散コサイン変換(DCT)、整数変換、ウェーブレット変換、又は概念的に同様の変換などの変換の適用後に、変換領域において係数を備え得る。残差データは、符号化されていないピクチャの画素と、PUに対応する予測値との間の画素差分に対応し得る。ビデオエンコーダ20は、CUのための残差データを含むTUを形成し、次いで、TUを変換して、CUの変換係数を生成し得る。
【0054】
変換係数を生成するための任意の変換の後に、ビデオエンコーダ20は、変換係数の量子化を実行し得る。量子化は、一般に、更なる圧縮を提供する、係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化されるプロセスを指す。量子化プロセスは、係数の一部又は全てに関連するビット深度を低減することができる。例えば、量子化中にnビット値がmビット値へと切り捨てられてよく、nはmよりも大きい。
【0055】
幾つかの例では、ビデオエンコーダ20及びビデオデコーダ30は、事前に定義された走査順序を利用して、量子化変換係数を走査し、エントロピー符号化され得るシリアル化ベクトルを生成し得る。他の例では、ビデオエンコーダ20及びビデオデコーダ30は適応走査を実行し得る。量子化変換係数を走査して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次元ベクトルをエントロピー符号化し得る。ビデオデコーダ30は、係数をエントロピー復号し、逆量子化プロセスと逆変換プロセスとを実行して残差データを再生成し、残差データを予測データと組み合わせて復号ビデオデータを生成することができる。ビデオエンコーダ20はまた、ビデオデータを復号する際にビデオデコーダ30が使用するための符号化ビデオデータに関連するシンタックス要素をエントロピー符号化することができる。
【0056】
CABACを実行するために、ビデオエンコーダ20及びビデオデコーダ30は、コード化されるべきシンボルに、コンテキストモデル内のコンテキストを割り当て得る。コンテキストは、例えば、シンボルの隣接値が0ではないかどうかに関係し得る。本開示の技法によれば、ビデオエンコーダ20及び/又はビデオデコーダ30は、変換係数が存在するビデオブロックの領域に基づいて変換係数をエントロピーコード化(例えば、エントロピー符号化又はエントロピー復号)するためのコンテキストを決定するように構成され得る。
【0057】
ビデオエンコーダ20及びビデオデコーダ30は、ビデオブロックの様々な領域(例えば、変換単位)の定義とともに構成され得る。例えば、ビデオエンコーダ20及びビデオデコーダ30は、様々なサイズのビデオブロックのための領域の定義とともに構成され得る。幾つかの例では、ビデオエンコーダ20は、ビデオブロックを複数の領域に分割する方法を決定し、ブロックがどのように分割されるべきかを表すデータをコード化することができる。領域の各々は、それぞれの領域内に存在する変換係数のコンテキストを決定するための、それぞれの値及び/又は技法と関連付けられ得る。
【0058】
例えば、ビデオブロックのある特定の領域は、近隣ベースのコンテキスト決定方式と関連付けられ得るが、ビデオブロックの別の領域は、位置ベースのコンテキスト決定方式と関連付けられ得る。別の例として、ビデオブロックのある領域は、その領域に位置する変換係数に対して決定されるコンテキストに適用されるべきオフセットと関連付けられ得る。同じビデオブロックの異なる領域は、コンテキストを計算するための異なるオフセット値及び/又は異なる技法と関連付けられ得る。
【0059】
一例として、ビデオブロックは、ビデオブロックの左上の角にある1つ又は複数のサブブロック(例えば、4×4の変換係数サブブロック)を含む第1の領域と、第1の領域に含まれないビデオブロックの他のサブブロックを含む第2の領域という、2つの異なる領域を含み得る。より具体的には、ビデオエンコーダ20及びビデオデコーダ30は、サブブロックのx座標とy座標とを決定し、xとyの合計を閾値と比較することによって、サブブロックが第1の領域にあるか第2の領域にあるかを決定することができる。xとyの合計が閾値より小さい場合、ビデオエンコーダ20及びビデオデコーダ30は、サブブロックが第1の領域にあると決定することができ、それ以外の場合、ビデオエンコーダ20及びビデオデコーダ30は、サブブロックが第2の領域にあると決定することができる。ビデオエンコーダ20及びビデオデコーダ30は、係数が第1の領域のサブブロック中にあるか第2の領域のサブブロック中にあるかに基づいて、ビデオブロックの係数のコンテキストを決定することができる。
【0060】
例えば、幾つかの領域では、コンテキストは固定されたコンテキストであってよく、この場合、ビデオエンコーダ20及びビデオデコーダ30は、固定されたコンテキストを使用して、そのような領域中の変換係数をコード化する。即ち、ビデオエンコーダ20及びビデオデコーダ30は、同じコンテキストを領域中の全ての変換係数に適用することができる。代替的に、領域中のサブブロックの各々は、コンテキストを決定する同じ方法(例えば、固定されたコンテキストの方法)と関連付けられ得るが、領域中の異なるサブブロックは、異なる固定されたコンテキストを有してよい。ビデオエンコーダ20及びビデオデコーダ30は、領域中のサブブロックの位置に基づいて、サブブロックのための固定されたコンテキストを決定することができる。更に別の例として、固定されたコンテキストは、領域内の個々の変換係数の位置に割り当てられ得る。即ち、ビデオエンコーダ20及びビデオデコーダ30は、ビデオブロック、サブブロック、及び/又は領域の中の変換係数の位置に基づいて、領域内の変換係数をコード化するためのコンテキストを決定することができる。
【0061】
別の例として、幾つかの領域では、コンテキストモデルは、隣接サブブロックに従って定義され得る。例えば、ビデオエンコーダ20及びビデオデコーダ30は、ある特定の領域内の各サブブロックのためのコンテキストのセットとともに構成され得る。即ち、領域中の各サブブロックは、コンテキストのそれぞれのセットと関連付けられ得る。ビデオエンコーダ20及びビデオデコーダ30は、それぞれのサブブロック中の各変換係数のためのコンテキストのセットから、適切なコンテキストを選択することができる。1つのサブブロックのためのコンテキストのセットは、別のサブブロックのためのコンテキストのセットとは異なり得る。
【0062】
更に別の例として、対応するサブブロック中に有意な(即ち、0ではない)係数があるかどうかを表す、領域中の各サブブロックのための個々のフラグがコード化され得る。これらのフラグは、コード化サブブロックフラグと呼ばれ得る。そのようなフラグは、サブブロック中の変換係数をコード化するためのコンテキストを選択するために使用され得る。例えば、ビデオエンコーダ20及びビデオデコーダ30は、1つ又は複数の隣接サブブロックのフラグの値に基づいて、サブブロック中の変換係数をコード化するためのコンテキストを決定することができる。例えば、フラグは、0と1のいずれかのバイナリ値を有してよく、ビデオエンコーダ20及びビデオデコーダ30は、右側の隣接サブブロックのフラグ値と下側の隣接サブブロック(底の隣接サブブロックとも呼ばれる)のフラグ値の合計に基づいて、現在のサブブロック中の変換係数をコード化するためのコンテキストを決定することができる。他の式も、サブブロックのコンテキストを計算するために使用され得る。
【0063】
ビデオエンコーダ20及びビデオデコーダ30は、本開示の技法のいずれか又は全てを、単独で、又は任意の組合せで実施するように構成され得る。これらの技法の1つの例示的な組合せは、ビデオエンコーダ20及びビデオデコーダ30が変換単位をサブブロック(例えば、4×4画素のサブブロック)に分割し、次いで、サブブロック中の変換係数の位置と、1つ又は複数の隣接サブブロック、例えば、左側の隣接サブブロック及び底の隣接サブブロックのためのコード化ブロックフラグとの両方に基づいて、サブブロックの特定の変換係数のデータをコード化するためのコンテキストを決定するように構成され得る。
【0064】
ビデオエンコーダ20及びビデオデコーダ30は、これらの様々な例で決定されたコンテキストを使用して、変換係数を表す1つ又は複数のシンタックス要素をコード化するように構成され得る。変換係数は、様々なタイプのシンタックス要素を含み得る。例えば、変換係数は、変換係数が0ではない値を有する(即ち、有意である)ことを示す有意係数フラグ(significant_coeff_flag)を含み得る。変換係数が有意である場合、変換係数は、変換係数の値が0より大きいか小さいかを示す符号値(例えば、coeff_sign_flag)と、変換係数の絶対値が1より大きいかどうかを示す値(例えば、coeff_abs_level_greater1_flag)とを含み得る。変換係数の絶対値が1より大きい場合、変換係数は、変換係数の絶対値が2より大きいかどうかを示す値(例えば、coeff_abs_level_greater2_flag)を含み得る。変換係数の絶対値が2より大きい場合、変換係数は、変換係数の絶対値−2を示す値(例えば、coeff_abs_level_remaining)を含み得る。
【0065】
ビデオエンコーダ20及びビデオデコーダ30のCABACコーダは、本開示の技法に従って決定されたコンテキストを使用して、これらの値のいずれか又は全てをコード化することができる。加えて、又は代替的に、ビデオエンコーダ20及びビデオデコーダ30は、本開示の技法に従って決定されるコンテキストを使用して、最後の有意な係数の位置を示すデータ(例えば、last_significant_coeff_x_prefix、last_significant_coeff_x_suffix、last_significant_coeff_y_prefix、及びlast_significant_coeff_y_suffix)をコード化することができる。
【0066】
ビデオエンコーダ20及びビデオデコーダ30は、本開示で説明される技法のいずれか1つ又は複数を、単独で、又は任意の組合せで実行するように構成され得る。変換係数が存在するビデオブロックの領域に基づいてビデオブロックの変換係数をコード化するためのコンテキストを決定し、決定されたコンテキストを使用して変換係数をエントロピーコード化するための様々な技法が、以下で説明される。そのような技法の例が、
図9〜
図14に関して以下で説明される。一般に、決定されたコンテキストを使用して変換係数をコード化することは、決定されたコンテキストを使用して変換係数の1つ又は複数のシンタックス要素をコード化することを含む。コンテキストを決定することは、一般に、変換係数が存在する領域を決定することと、領域に基づいてコンテキストを決定することとを含む。例えば、領域は、特定のコンテキスト又はコンテキストのセットと関連付けられ、及び/又は、コンテキストを決定するための1つ又は複数の技法と関連付けられ得る。
【0067】
図2は、本開示で説明されるインター予測技法を実装し得る例示的なビデオエンコーダ20を示すブロック図である。ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラコード化とインターコード化とを実行し得る。イントラコード化は、所与のビデオフレーム又はピクチャ内のビデオの空間的冗長性を低減又は除去するために、空間的予測に依拠する。インターコード化は、ビデオシーケンスの隣接フレーム又はピクチャ内のビデオの時間的冗長性を低減又は除去するために、時間的予測に依拠する。イントラモード(Iモード)は、幾つかの空間ベースの圧縮モードのいずれかを指し得る。単方向予測(Pモード)又は双予測(Bモード)などのインターモードは、幾つかの時間ベースの圧縮モードのいずれかを指し得る。
【0068】
図2の例では、ビデオエンコーダ20は、モード選択ユニット35と、予測プロセッサ41と、参照ピクチャメモリ64と、加算器50と、変換処理ユニット52と、量子化ユニット54と、エントロピー符号化ユニット56とを含む。予測プロセッサ41は、動き推定ユニット42と、動き補償ユニット44と、イントラ予測ユニット46とを含む。ビデオブロック再構成のために、ビデオエンコーダ20はまた、逆量子化ユニット58と、逆変換ユニット60と、加算器62とを含む。ブロック境界をフィルタリングして再構成されたビデオからブロック歪み(blockiness artifact)を除去するために、デブロッキングフィルタ(
図2に図示せず)も含まれ得る。所望される場合、デブロッキングフィルタは通常、加算器62の出力をフィルタリングする。デブロッキングフィルタに加えて追加のループフィルタ(ループ内又はループ後)も使用され得る。
【0069】
図2に示されるように、ビデオエンコーダ20はビデオデータを受信し、モード選択ユニット35はデータをビデオブロックに区分する。この区分は、例えば、LCU及びCUの4分木構造に従って、スライス、タイル、又は他のより大きい単位への区分、及びビデオブロックの区分も含み得る。ビデオエンコーダ20は、一般に、符号化されるべきビデオスライス内のビデオブロックを符号化するコンポーネントを示す。スライスは、複数のビデオブロックに(及び、場合によっては、タイルと呼ばれるビデオブロックのセットに)分割され得る。予測プロセッサ41は、誤り結果(例えば、コード化レート及び歪みのレベル)に基づいて、現在のビデオブロックのために、複数のイントラコード化モードのうちの1つ、又は複数のインターコード化モードのうちの1つのような、複数の可能なコード化モードのうちの1つを選択し得る。予測プロセッサ41は、得られたイントラコード化ブロック又はインターコード化ブロックを、残差ブロックデータを生成するために加算器50に与え、かつ参照ピクチャとして使用するための符号化ブロックを再構成するために加算器62に与え得る。
【0070】
予測プロセッサ41内のイントラ予測ユニット46は、空間圧縮を行うために、コード化されるべき現在のブロックと同じフレーム又はスライス中の1つ又は複数の隣接ブロックに対する現在のビデオブロックのイントラ予測コード化を実行し得る。予測プロセッサ41内の動き推定ユニット42及び動き補償ユニット44は、時間圧縮を行うために、1つ又は複数の参照ピクチャ中の1つ又は複数の予測ブロックに対する現在のビデオブロックのインター予測コード化を実行する。
【0071】
動き推定ユニット42は、ビデオシーケンスの所定のパターンに従ってビデオスライスのためのインター予測モードを決定するように構成され得る。所定のパターンは、シーケンス中のビデオスライスを、Pスライス、Bスライス、又はGPBスライスに指定し得る。動き推定ユニット42と動き補償ユニット44とは、高度に統合され得るが、概念的な目的のために別々に示されている。動き推定ユニット42によって実行される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、例えば、参照ピクチャ内の予測ブロックに対する現在のビデオフレーム又はピクチャ内のビデオブロックのPUの変位を示し得る。
【0072】
予測ブロックは、絶対値差分和(SAD)、差分2乗和(SSD)、又は他の差分尺度によって決定され得る画素差分に関して、コード化されるべきビデオブロックのPUに厳密に一致することがわかるブロックである。幾つかの例では、ビデオエンコーダ20は、参照ピクチャメモリ64に記憶された参照ピクチャのサブ整数画素位置の値を計算し得る。例えば、ビデオエンコーダ20は、参照ピクチャの1/4画素位置、1/8画素位置、又は他の分数画素位置の値を補間し得る。従って、動き推定ユニット42は、フル画素位置と分数画素位置とに対する動き探索を実行し、分数画素精度で動きベクトルを出力し得る。
【0073】
動き推定ユニット42は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化スライス中のビデオブロックのPUの動きベクトルを計算する。参照ピクチャは、第1の参照ピクチャリスト(リスト0)又は第2の参照ピクチャリスト(リスト1)から選択されてよく、それらの参照ピクチャリストの各々は、参照ピクチャメモリ64に記憶された1つ又は複数の参照ピクチャを識別する。動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56と動き補償ユニット44とに送る。
【0074】
動き補償ユニット44によって実行される動き補償は、動き推定によって決定された動きベクトルに基づいて予測ブロックをフェッチ又は生成すること、場合によってはサブ画素精度への補間を実行することを伴い得る。現在のビデオブロックのPUの動きベクトルを受信すると、動き補償ユニット44は、参照ピクチャリストのうちの1つにおいて動きベクトルが指す予測ブロックの位置を特定し得る。動き補償ユニット44はまた、ビデオスライスのビデオブロックを復号する際にビデオデコーダ30が使用するための、ビデオブロックとビデオスライスとに関連するシンタックス要素を生成し得る。
【0075】
イントラ予測ユニット46は、上で説明されたように、動き推定ユニット42と動き補償ユニット44とによって実行されるインター予測の代替として、現在のブロックをイントラ予測し得る。特に、イントラ予測ユニット46は、現在のブロックを符号化するために使用すべきイントラ予測モードを決定し得る。幾つかの例では、イントラ予測ユニット46は、例えば、別個の符号化パス中に、様々なイントラ予測モードを使用して現在のブロックを符号化することができ、イントラ予測ユニット46(又は、幾つかの例では、モード選択ユニット35)は、使用するのに適切なイントラ予測モードをテストされたモードから選択することができる。例えば、イントラ予測ユニット46は、様々なテストされたイントラ予測モードのためのレート歪み分析を使用してレート歪み値を計算し、テストされたモードの中で最良のレート歪み特性を有するイントラ予測モードを選択し得る。レート歪み分析は、一般に、符号化ブロックと、符号化ブロックを生成するために符号化された元の符号化されていないブロックとの間の歪み(又は誤差)の量、及び符号化ブロックを生成するために使用されるビットレート(即ち、ビット数)を決定する。イントラ予測ユニット46は、どのイントラ予測モードがブロックについて最良のレート歪み値を呈するかを決定するために、様々な符号化ブロックの歪み及びレートから比を計算し得る。
【0076】
いずれの場合も、ブロックのイントラ予測モードを選択した後に、イントラ予測ユニット46は、ブロックのための選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット56に提供し得る。エントロピー符号化ユニット56は、本開示の技法に従って、選択されたイントラ予測モードを示す情報を符号化し得る。ビデオエンコーダ20は、送信ビットストリーム中に、複数のイントラ予測モードインデックステーブル及び複数の修正されたイントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)と、様々なブロックの符号化コンテキストの定義と、コンテキストの各々に対して使用すべき、最確イントラ予測モード(a most probable intra-prediction mode)、イントラ予測モードインデックステーブル、及び修正されたイントラ予測モードインデックステーブルの指示とを含み得る、構成データを含み得る。
【0077】
予測プロセッサ41が、インター予測又はイントラ予測のいずれかを介して、現在のビデオブロックのための予測ブロックを生成した後、ビデオエンコーダ20は、現在のビデオブロックから予測ブロックを減算することによって残差ビデオブロックを形成する。加算器50は、この計算を実行するユニットを表す。残差ブロックにおける残差ビデオデータは、1つ又は複数のTUに含まれてよく、変換処理ユニット52に適用されてよい。変換処理ユニット52は、一般に、残差ビデオデータを、画素領域からの周波数領域のような変換領域に変換する。変換処理ユニット52は、変換、例えば離散コサイン変換(DCT)又は概念的に同様の変換を使用して、残差ビデオデータを残差変換係数に変換することができる。或いは、変換処理ユニット52は、2次元(2D)変換(水平方向と垂直方向の両方の)を、TU中の残差データに適用することができる。
【0078】
変換処理ユニット52は、得られた変換係数を量子化ユニット54に送り得る。量子化ユニット54は、ビットレートを更に低減するために変換係数を量子化する。量子化プロセスは、係数の一部又は全てに関連するビット深度を低減することができる。量子化の程度は、量子化パラメータを調整することによって修正され得る。
【0079】
量子化の後に、エントロピー符号化ユニット56は、量子化変換係数をエントロピー符号化する。例えば、エントロピー符号化ユニット56は、コンテキスト適応型可変長コード化(CAVLC)、コンテキスト適応型バイナリ算術コード化(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コード化(SBAC)、確率間隔区分エントロピー(PIPE)コード化又は別のエントロピー符号化方法又は技法を実行し得る。そのようなエントロピー符号化は一般に、量子化変換係数(簡潔にするために本明細書では一般に単に「変換係数」と呼ばれる)を1回又は複数回走査することと、対応する変換係数が有意かどうかを示すシンタックス要素、1又は2よりも大きな絶対値を有するかどうかを示すシンタックス要素、有意な係数の絶対値(又はその一部、例えば2より大きい部分)と符号とを示すシンタックス要素のような、変換係数のためのシンタックス要素を各走査中にエントロピーコード化することとを含む。
【0080】
本開示の技法によれば、エントロピー符号化ユニット56は、変換係数が存在するビデオブロックの領域に基づいて、ビデオブロック(例えば、変換単位)の変換係数をコード化(即ち、エントロピーコード化)するためのコンテキストを決定することができる。例えば、走査中、エントロピー符号化ユニット56は、ビデオブロック中の変換係数の位置を決定し、その位置が存在する領域を決定することができる。加えて、エントロピー符号化ユニット56は、ビデオブロックのための領域を定義する構成データを含み得る。
【0081】
例えば、エントロピー符号化ユニット56は、閾値によって設定されても良い。この例では、エントロピー符号化ユニット56は、変換係数の位置を定めるx座標及びy座標の合計(即ち、x+y)が閾値よりも大きいかどうかを決定することができる。この例では、第1の領域は、x座標及びy座標の値の合計が閾値よりも小さい変換係数に対応し、第2の領域は、x座標及びy座標の値の合計が閾値以上である変換係数に対応する。或いは、複数の閾値が、複数の領域を定義するために使用され得る。この方式で定義される領域の例が
図9Bで示され、これは以下でより詳細に説明される。
【0082】
別の例として、エントロピー符号化ユニット56は、ビデオブロック中の、変換係数を含むサブブロックの位置を決定するように構成され得る。サブブロックは、4×4の変換係数サブブロックに対応し得る。即ち、ビデオブロックは、各々が同じサイズ、例えば4×4の変換係数を有する、複数の重複しないサブブロックを含み得る。サブブロックのための領域を決定するために、エントロピー符号化ユニット56は、サブブロック(例えば、サブブロックの左上の変換係数のような、サブブロックのある特定の変換係数)のx座標及びy座標の合計を閾値と比較することができる。x座標及びy座標の合計が閾値未満かどうかは、サブブロックの変換係数が第1の領域に含まれるか第2の領域に含まれるかを示すものであり得る。
【0083】
例えば、Cijを、位置(i,j)にある左上の変換係数を有するサブブロックの位置を表すものとし、x=iかつy=jである。更に、Tを、閾値を定義するものとする。エントロピー符号化ユニット56は、次の擬似コードを使用して、サブブロックの変換係数が存在する領域を決定することができる。
【0084】
(i+j<T) ? region1 : region2
この例では、i+jがTより小さい(即ち、サブブロックのx座標及びy座標の合計が閾値未満である)場合、エントロピー符号化ユニット56は、サブブロックの全ての変換係数が領域1の中に存在すると決定し、一方、i+jがT以上である(即ち、サブブロックのx座標及びy座標の合計が閾値以上である)場合、エントロピー符号化ユニット56は、サブブロックの全ての変換係数が領域2の中に存在すると決定する。領域のこれらの例及び他の例が、
図9〜
図14に関して以下でより詳細に説明される。
【0085】
エントロピー符号化ユニット56は、様々な方法で、領域に基づいてコンテキストを決定するように構成され得る。例えば、エントロピー符号化ユニット56は、ビデオブロックにおける変換係数の位置又は変換係数が存在する4×4のサブブロックの位置を使用して、変換係数が存在する領域に基づいて、変換係数をコード化するためのコンテキストを決定することができる。
【0086】
或いは、コンテキストモデルは、隣接する4×4のサブブロックに従って定義され得る。例えば、エントロピー符号化ユニット56は、利用可能なコンテキストのそれぞれのセットを各々の4×4のサブブロックに割り当て、例えば、サブブロック中の変換係数の位置に基づいて、サブブロック中で符号化されるべき現在の変換係数のコンテキストの1つを選択することができる。コンテキストのセットは、各サブブロックが利用可能なコンテキストの異なるセットを有し得るように、それぞれのサブブロックに割り当てられ得る。更なる別の例として、エントロピー符号化ユニット56は、ctx=Right4x4SubBlockFlag+Bottom4x4SubBlockFlagとして、コンテキストを計算することができる。この場合、Right4x4SubBlockFlagは、右側の隣接サブブロックのためのコード化サブブロックフラグを表し、Bottom4x4SubBlockFlagは、底の隣接コード化サブブロックフラグのためのコード化サブブロックフラグを表す。
【0087】
幾つかの例では、エントロピー符号化ユニット56は、変換係数をエントロピー符号化するための決定されたコンテキストにオフセットを適用することができ、更に、変換係数が存在する領域に基づいて、適用するオフセットを決定することができる。即ち、エントロピー符号化ユニット56は、2つ以上の領域の係数に対して同一の汎用的な方式で基本コンテキストを計算できるが、異なる領域は、異なる対応するオフセット値を有し得る。従って、エントロピー符号化ユニット56は、領域がマッピングされるオフセット(即ち、領域と関連付けられるオフセット)に基づいて、計算されたコンテキスト値にオフセットを適用することができる。
【0088】
エントロピー符号化ユニット56は、変換係数がDC(直流)変換係数かどうか(通常、変換ブロックの左上の角において提示される)を決定し、変換係数が存在する領域に基づいて、更には、変換係数がDC変換係数かどうかに基づいて、変換係数をコード化するためのコンテキストを選択することができる。例えば、エントロピー符号化ユニット56は、専用の位置に対する共有コンテキストを使用して、変換係数のためのコンテキストを決定することができる。即ち、共有コンテキストは、ある特定の位置、例えば、サブブロックの左上の角に存在する全ての変換係数に適用される、同じコンテキストを備え得る。従って、共有コンテキストは更に、他のサブブロックの左上の位置に存在する非DC変換係数とは対照的に、DC変換係数をコード化するときに適用されるべき特定のコンテキストの指示を含み得る。
【0089】
加えて、又は代替的に、共有コンテキストは、ブロックのある特定の位置に存在する異なるサイズの変換係数のブロックの間で共有されるコンテキストを備え得る。例えば、エントロピー符号化ユニット56は、任意のサイズ、例えば、4×4、8×8、16×16などのビデオブロック(例えば、TU)のDC変換係数をコード化するとき、同じコンテキストを適用するように構成され得る。即ち、エントロピー符号化ユニット56は、任意のサイズのブロックに対して、DC変換係数をコード化するための同じコンテキストデータにDC変換係数をマッピングする、データを含み得る。言い換えると、エントロピー符号化ユニット56は、コード化されている現在のビデオブロックのサイズとは無関係に、DC変換係数に対して決定されたコンテキストを使用して、DC変換係数をコード化するように構成され得る。通常、DC変換係数は、ビデオブロックの左上の係数である。
【0090】
エントロピー符号化ユニット56によるエントロピー符号化の後に、符号化ビットストリームは、ビデオデコーダ30に送信されてよく、又は、ビデオデコーダ30による後の送信又は取り出しのためにアーカイブされてよい。エントロピー符号化ユニット56はまた、コード化されている現在のビデオスライスのための、動きベクトルと、イントラモード指示と、他のシンタックス要素とをエントロピー符号化し得る。
【0091】
逆量子化ユニット58及び逆変換ユニット60は、それぞれ逆量子化及び逆変換を適用して、参照ピクチャの参照ブロックとして後で使用するために、画素領域において残差ブロックを再構成する。動き補償ユニット44は、参照ピクチャリストの1つの中の参照ピクチャの1つの予測ブロックに残差ブロックを加算することによって、参照ブロックを計算し得る。動き補償ユニット44はまた、再構成された残差ブロックに1つ又は複数の補間フィルタを適用して、動き推定において使用するサブ整数画素値を計算し得る。加算器62は、再構成された残差ブロックを動き補償ユニット44によって生成された動き補償予測ブロックに加算して、参照ピクチャメモリ64に記憶するための参照ブロックを生成する。参照ブロックは、後続のビデオフレーム又はピクチャ中のブロックをインター予測するために、動き推定ユニット42及び動き補償ユニット44によって参照ブロックとして使用され得る。
【0092】
このように、ビデオエンコーダ20は、変換係数が存在するビデオブロックの領域に基づいてビデオブロックの変換係数をコード化するためのコンテキストを決定し、決定されたコンテキストを使用して変換係数をエントロピーコード化するように構成される、ビデオコーダの例を表す。領域は、ビデオブロックの変換係数の1つ又は複数の左上の4×4のサブブロックを備える第1の領域と、第1の領域の外側のビデオブロックの変換係数を備える第2の領域とのうちの、1つを備え得る。
【0093】
図3は、本開示で説明されるインター予測技法を実装し得る例示的なビデオデコーダ30を示すブロック図である。
図3の例では、ビデオデコーダ30は、エントロピー復号ユニット80と、予測プロセッサ81と、逆量子化ユニット86と、逆変換ユニット88と、加算器90と、参照ピクチャメモリ92とを含む。予測プロセッサ81は、動き補償ユニット82と、イントラ予測ユニット84とを含む。ビデオデコーダ30は、幾つかの例では、
図2のビデオエンコーダ20に関して説明された符号化パスとは全般に逆の復号パスを実行し得る。
【0094】
復号プロセス中に、ビデオデコーダ30は、ビデオエンコーダ20から、符号化ビデオスライスのビデオブロックと、関連するシンタックス要素とを表す符号化ビデオビットストリームを受信する。ビデオデコーダ30のエントロピー復号ユニット80は、量子化係数と、動きベクトルと、他のシンタックス要素とを生成するために、ビットストリームをエントロピー復号する。エントロピー復号ユニット80は、動きベクトルと、イントラモード指示と、他の予測関連のシンタックス要素とを、予測プロセッサ81に転送する。エントロピー復号ユニット80は、ブロック(例えば、TU)の形式で、量子化係数を逆量子化ユニット86に転送する。ビデオデコーダ30は、ビデオスライスレベル及び/又はビデオブロックレベルでシンタックス要素を受信し得る。
【0095】
具体的には、本開示の技法によれば、エントロピー復号ユニット80は、変換係数が存在するブロックの領域に基づいて、変換係数をエントロピー復号するためのコンテキストを決定することができる。特に、エントロピー復号ユニット80は、変換係数がブロック内に配置されると、変換係数が存在するブロックの領域に基づいて、コンテキストを決定することができる。エントロピー復号ユニット80は、
図9〜
図14に関して説明されたような領域、又は他のそのような領域を決定するように構成され得る。例えば、
図9Aに示されるように、エントロピー復号ユニット80は、変換係数が、ブロックの左上の角にある1つ又は複数のサブブロックを含む第1の領域に存在するか、又は、第1の領域の外側のサブブロックを含む第2の領域に存在するかを決定し、変換係数が第1の領域に存在するか第2の領域に存在するかに基づいてコンテキストを決定するように構成され得る。
【0096】
同様に、エントロピー復号ユニット80は、各領域中の係数と関連付けられるコンテキストを計算又は決定するための1つ又は複数の様々な技法によって構成され得るという点で、領域に基づいてコンテキストを決定することができる。即ち、各領域は、コンテキストを計算又は決定するための1つ又は複数の技法と関連付けられ得る。例えば、領域は、1つ又は複数の変換係数の間で共有されるコンテキストと関連付けられ得る。別の例として、領域は、領域のサブブロックの間で共有されるコンテキストと関連付けられ得る。更に別の例として、領域は、領域中の変換係数のために計算されたコンテキスト値に適用されるべきオフセット値と関連付けられ得る。エントロピー復号ユニット80は、変換係数が存在する領域に基づいて、本明細書で説明されるようなこれらの又は他の技法を使用して、変換係数を復号するためのコンテキストを決定するように構成され得る。エントロピー復号ユニット80は次いで、決定されたコンテキストを使用して変換係数をエントロピー復号することができる。
【0097】
加えて、又は代替的に、共有コンテキストは、ブロックのある特定の位置に存在する異なるサイズの変換係数のブロックの間で共有されるコンテキストを備え得る。例えば、エントロピー復号ユニット80は、任意のサイズ、例えば、4×4、8×8、16×16などのビデオブロック(例えば、TU)のDC変換係数をコード化するとき、同じコンテキストを適用するように構成され得る。即ち、エントロピー復号ユニット80は、任意のサイズのブロックに対して、DC変換係数をコード化するための同じコンテキストデータにDC変換係数をマッピングする、データを含み得る。言い換えると、エントロピー復号ユニット80は、コード化されている現在のビデオブロックのサイズとは無関係に、DC変換係数に対して決定されたコンテキストを使用して、DC変換係数をコード化するように構成され得る。通常、DC変換係数は、ビデオブロックの左上の係数である。
【0098】
ビデオスライスがイントラコード化(I)スライスとしてコード化されたとき、予測プロセッサ81のイントラ予測ユニット84は、信号伝達(signaling)されたイントラ予測モードと、現在のフレーム又はピクチャの、前に復号されたブロックからのデータとに基づいて、現在のビデオスライスのビデオブロックの予測データを生成し得る。ビデオフレームがインターコード化(即ち、B、P又はGPB)スライスとしてコード化されるとき、予測プロセッサ81の動き補償ユニット82は、エントロピー復号ユニット80から受信された動きベクトル及び他のシンタックス要素に基づいて、現在のビデオスライスのビデオブロックの予測ブロックを生成する。予測ブロックは、参照ピクチャリストの1つの中の参照ピクチャの1つから生成され得る。ビデオデコーダ30は、参照ピクチャメモリ92に記憶された参照ピクチャに基づいて、デフォルトの構築技法を使用して、参照フレームリスト、即ち、リスト0とリスト1とを構築し得る。
【0099】
動き補償ユニット82は、動きベクトルと他のシンタックス要素とを解析することによって現在のビデオスライスのビデオブロックに対する予測情報を決定し、予測情報を使用して、復号されている現在のビデオブロックの予測ブロックを生成する。例えば、動き補償ユニット82は、ビデオスライスのビデオブロックをコード化するために使用される予測モード(例えば、イントラ又はインター予測)と、インター予測スライスタイプ(例えば、Bスライス、Pスライス、又はGPBスライス)と、スライスの参照ピクチャリストの1つ又は複数の構築情報と、スライスの各インター符号化ビデオブロックの動きベクトルと、スライスの各インターコード化ビデオブロックのインター予測ステータスと、現在のビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素の幾つかを使用する。
【0100】
動き補償ユニット82はまた、補間フィルタに基づいて補間を実行し得る。動き補償ユニット82は、ビデオブロックの符号化中にビデオエンコーダ20によって使用されるような補間フィルタを使用して、参照ブロックのサブ整数画素の補間値を計算し得る。この場合、動き補償ユニット82は、受信されたシンタックス要素からビデオエンコーダ20によって使用される補間フィルタを決定し、その補間フィルタを使用して予測ブロックを生成し得る。
【0101】
逆量子化ユニット86は、ビットストリーム中で与えられエントロピー復号ユニット80によって復号された、量子化変換係数を逆量子化(inverse quantize)、即ち、逆量子化(de-quantize)する。逆量子化プロセスは、ビデオスライス中の各ビデオブロックに対してビデオエンコーダ20によって計算される量子化パラメータを使用して量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定することを含み得る。逆変換ユニット88は、画素領域において残差ブロックを生成するために、逆変換、例えば逆DCT、逆整数変換、又は概念的に同様の逆変換プロセスを変換係数に適用する。
【0102】
幾つかの場合には、逆変換ユニット88は、2次元(2D)の逆変換(水平方向と垂直方向の両方の)を係数に適用することができる。本開示の技法によれば、逆変換ユニット88は、代わりに、TUの各々の中の残差データに、水平方向の1次元(1D)逆変換を適用すること、又は垂直方向の1D逆変換を適用すること、又は変換を適用しないことが可能である。ビデオエンコーダ20において残差データに適用される変換のタイプは、適切なタイプの逆変換を変換係数に適用するために、ビデオデコーダ30に信号伝達され得る。
【0103】
動き補償ユニット82が、動きベクトルと他のシンタックス要素とに基づいて現在のビデオブロックのための予測ブロックを生成した後、ビデオデコーダ30は、逆変換ユニット88からの残差ブロックを動き補償ユニット82によって生成された対応する予測ブロックと加算することによって、復号されたビデオブロックを形成する。加算器90は、この加算演算を実行する1つ又は複数のコンポーネントを表す。所望される場合、ブロック歪みを除去するために、復号されたブロックをフィルタリングするためのデブロッキングフィルタも適用され得る。画素遷移を平滑化するか、又はさもなければビデオ品質を改善するために、(コード化ループ内又はコード化ループ後の)他のループフィルタも使用され得る。所与のフレーム又はピクチャ中の復号されたビデオブロックは、次いで、その後の動き補償のために使用される参照ピクチャを記憶する参照ピクチャメモリ92に記憶される。参照ピクチャメモリ92はまた、
図1の表示装置32のような表示装置上での後の表示のために、復号されたビデオを記憶する。
【0104】
このように、ビデオデコーダ30は、変換係数が存在するビデオブロックの領域に基づいてビデオブロックの変換係数をコード化するためのコンテキストを決定し、決定されたコンテキストを使用して変換係数をエントロピーコード化するように構成される、ビデオコーダの例を表す。領域は、ビデオブロックの変換係数の1つ又は複数の左上の4×4のサブブロックを備える第1の領域と、第1の領域の外側のビデオブロックの変換係数を備える第2の領域とのうちの、1つを備え得る。
【0105】
図4は、ビデオブロック中の変換係数とビデオブロックと関連付けられる有意性マップとの関係を示す概念図である。
図4に示されるように、有意性マップは、ビデオブロック中の有意な係数の値、即ち0より大きい値の各インスタンスを示すために、「1」を含む。有意性マップは、復号されるべきビデオブロック中の有意な、即ち0より大きい係数の位置を決定するために、ビデオデコーダ30のようなビデオデコーダによって復号可能なビットストリーム中で信号伝達され得る。より具体的には、ビデオブロック内の最後の0ではない係数の位置が、ビットストリーム中で信号伝達され得る。ビデオブロック中の最後の0ではない係数の位置は、ビデオブロックのために使用される走査順序に依存する。既知の、又は知ることができる走査順序に従って、最後の0ではない係数に対する他の有意な係数を示すために、追加のシンタックス要素が信号伝達され得る。
【0106】
図5A〜
図5Dは、ジグザグ走査順序、水平走査順序、垂直走査順序、及び対角走査順序を使用して走査されるビデオデータのブロックの例を示す概念図である。
図5A〜
図5Dに示されるように、ビデオデータの8×8のブロック、例えば、CUのTUは、円によって示されている、対応するブロック位置に64個の変換係数を含み得る。この例では、ブロック100、102、104、及び106は各々、8×8のサイズを有するので、前に説明された予測技法を使用して生成される64個の変換係数を含む。
【0107】
本開示で説明される技法によれば、ブロック100、102、104、及び106の各々の中の64個の変換係数は、2D変換、水平1D変換、及び垂直1D変換のうちの1つを使用して変換されていてよく、又は逆変換されてよく、又は、変換係数はまったく変換されなくてもよい。変換されるかどうかにかかわらず、ビデオブロック100、102、104、及び106の各々の中の係数は、ジグザグ走査順序、水平走査順序、垂直走査順序、及び対角走査順序のうちの1つを使用して、エントロピーコード化のための準備において走査される。
【0108】
図5Aに示されるように、ブロック100に関連する走査順序はジグザグ走査順序である。ジグザグ走査順序は、ビデオエンコーダ20又はビデオデコーダ30のようなビデオコーダに、
図5Aの矢印により示されるような対角方向の方式で、ブロック100の量子化変換係数を走査させる。同様に
図5Dにおいて、対角走査順序は、ビデオコーダに、
図5Dの矢印により示されるような対角方向の方式で、ブロック106の量子化変換係数を走査させる。
図5B及び
図5Cに示されるように、ブロック102及び104に関連する走査順序は、それぞれ水平走査順序及び垂直走査順序である。同じく
図5B及び
図5Cの矢印によって示されるように、水平走査順序は、ビデオコーダに、水平線ごとに、又は「ラスタ」方式で、ブロック102の量子化変換係数を走査させ、一方、垂直走査順序は、垂直線ごとに、又は「回転ラスタ」方式で、ブロック104の量子化変換係数を走査させる。
【0109】
他の例では、上で説明されたように、ブロックは、ブロック100、102、104、及び106のサイズよりも小さいか又は大きいサイズを有してよく、より多数の又は少数の量子化変換係数と対応するブロック位置とを含み得る。これらの例では、特定のブロックに関連する走査順序は、ビデオコーダに、
図5A〜
図5Dの8×8ブロックの例に示されるのと実質的に同様の方式でブロックの量子化変換係数を走査させることができ、前に説明された走査順序のいずれかに従って、例えば、4×4のブロック又は16×16のブロックが走査され得る。
【0110】
図5A〜
図5Dの走査の向きは全般に、低周波の係数から高周波の係数に進むものとして示されるが、他の例では、ビデオエンコーダ20及びビデオデコーダ30は、逆方向の走査順序を実行するように構成されてよく、このとき、走査は、高周波の係数から低周波の係数に進み得る。即ち、ビデオエンコーダ20及びビデオデコーダ30は、
図5A〜
図5Dに示されるものとは逆の順序で係数を走査することができる。
【0111】
図6は、変換係数のコード化のためにサブブロックへと分割された例示的なビデオブロック110を示す概念図である。現在のHMでは、サブブロックという概念が、変換係数のコード化のために使用される。ビデオコーダは、決定されたサブブロックサイズよりも大きな任意の変換単位(TU)を、サブブロックへと副分割することができる。例えば、ビデオブロック110は、4個の4×4のサブブロックに分割される。
【0112】
図6の示される例では、ビデオコーダは、ビデオブロック110を4×4のサブブロックに分割する。他の例では、ビデオコーダは、ビデオブロックを、他のサイズ、例えば8×8、16×16などのサブブロックに分割することができる。ビデオコーダがフレーム又はスライスの全てのTUに対して同じサブブロックサイズを使用する場合、サブブロックサイズについて得られる均一性によって、ハードウェアの実装形態において利益が得られ得る。例えば、全ての処理が、TUのサイズとは無関係に、そのようなサブブロックに分割され得る。しかしながら、均一なサブブロックサイズは、本開示の技法を実行するために必須ではない。
【0113】
係数のコード化のために、ビデオコーダは、
図6に示されるように、対角走査順序を使用してビデオブロック110の各々の4×4のサブブロックを走査することができる。幾つかの例では、ビデオコーダは、各サブブロックの変換係数を走査するために統一された走査を使用することができる。この場合、同じ走査順序が、有意性情報、即ち、有意性マップ、係数レベル、符号などに対して使用される。第1の例では、
図6に示されるように、ビデオコーダは、対角走査を使用して変換係数を走査することができる。別の例では、ビデオコーダは、
図6に示される順序とは逆の順序で、例えば、右下の角から開始し左上の角に向かって進む逆方向の対角走査で、変換係数を走査することができる。他の例では、ビデオコーダは、ジグザグ走査、水平走査、又は垂直走査を使用して変換係数を走査することができる。他の走査の向き/方向も可能である。
【0114】
説明を簡単にするために、本開示は、ビデオブロックのサブブロックを、4×4のサブブロックであるものとして説明する。しかしながら、本開示の技法は、異なるサイズ、例えば、8×8、16×16などのサブブロックに対しても適用され得る。全ての4×4のブロックに対してsignificant_coeffgroup_flagがコード化され、サブブロック中に少なくとも1つの0ではない係数がある場合、このフラグは1に設定され、それ以外の場合、フラグは0に等しい。所与のサブブロックに対してsignificant_coeffgroup_flagが0ではない場合、4×4のサブブロックが後ろ向きの対角順序で走査され、significant_coeffgroup_flagは、係数の有意性を示すために、サブブロックの全ての係数に対してコード化される。これらのフラグのグループは、ビデオブロックの有意性マップと呼ばれ得る。幾つかの例では、有意性マップを明示的に信号伝達する代わりに、significant_coeffgroup_flagは、隣接する4×4のサブブロックのフラグを使用して、又は、4×4のサブブロックが最後の係数又はDC係数を含む場合、暗黙的に導出され得る。係数の絶対値、即ち係数レベルもコード化される。
【0115】
図6の走査の向きは全般に、低周波の係数から高周波の係数に進むものとして示されるが、他の例では、ビデオエンコーダ20及びビデオデコーダ30は、逆方向の走査順序を実行するように構成されてよく、このとき、走査は、高周波の係数から低周波の係数に進み得る。即ち、ビデオエンコーダ20及びビデオデコーダ30は、
図6に示されるものとは逆の順序で係数を走査することができる。
【0116】
図7は、逆方向の対角走査順序を使用して走査されるビデオブロック112中の係数の有意性マップに対するコンテキストの選択のためのコンテキストモデルを定義するために使用される、例示的な5点サポート近隣を示す概念図である。上で述べられたように、コンテキスト適応型コード化では、変換係数は、変換係数が0の値又は1の値を有する確率を記述するコンテキストモデルに基づいて、コード化され得る。有意性マップのコード化に関して、コンテキストモデルは、特定の変換係数が有意かどうか、即ち0ではないかどうかの確率を記述する。
【0117】
有意性マップのコード化では、5点サポートSが、ビデオブロック112の変換係数の有意性マップをコード化するためのコンテキストモデルを定義するために使用され得る。5点サポートは、「コンテキストサポート近隣」又は単に「サポート近隣」と呼ばれ得る。即ち、ビデオコーダは、サポートを参照して、現在の位置の有意性が1又は0である確率を求めることができる。コンテキストサポート近隣は、コンテキスト係数をコード化するためのコンテキストとして使用され得る、隣接する係数(例えば、有意性情報を含み得る)を定義する。本開示の幾つかの例によれば、コンテキストサポート近隣は、ブロック又はサブブロック内の異なる係数の位置に対して異なり得る。
【0118】
図7に示される例では、5点サポートSは、円で囲まれた点により表される現在の位置又は「ターゲット」の位置に対して、正方形によって囲まれた点により表される。コンテキストモデルCtx(以下の式(1))は、サポートの全ての点における有意性フラグの合計として定義されてよく、ここで有意性フラグは、対応する変換係数が0でなければ「1」に設定されてよく、それ以外の場合は「0」に設定されてよい。
【数1】
【0119】
従って、有意性フラグのカウントは、サポートの濃度以下であり得る。ctxの値は未加工のコンテキスト値であるとは限らず、特定の係数に対するデータをコード化するために使用されるべきコンテキストを導出するために、オフセットの形式で基本コンテキスト値に適用され得る。
【0120】
しかしながら、
図7に示されるサポートSは、2つ以上の変換係数のコンテキスト(例えば、変換係数と関連付けられる有意性情報)を並列に計算する場合(「並列有意性コンテキスト計算」又は単に「並列コンテキスト計算」と呼ばれる)、適切ではないことがある。例えば、
図7に示されるサポートSを使用すると、サポートS中の全てのデータがコンテキストの並列計算を可能にするために利用可能(例えば、コード化済み)でなければならないので、有意性情報のコンテキストを並列に計算するためのビデオコーダの能力を妨げ得る。
図8Aに関して以下で説明されるように、幾つかの例では、コーダは、サポートS中のサポート要素のコード化が終了するまで、サポートS中の別のサポート要素のコンテキストを決定することを待機することを強いられ得る。この遅延は、有意性情報を効率的に処理するためのビデオコーダの能力を低下させる。
【0121】
図8A及び
図8Bは、5点サポート内でのコンテキストの依存関係を示す概念図である。例えば、円で囲まれた位置の有意性コンテキストを計算するために、(
図8Aに示される)菱型により図示されるサポートS内の位置の有意性フラグを解析することが必要であり得る。そのような解析は、2つの係数の有意性コンテキストを並列に計算するという要件がある場合には遅延をもたらす可能性があり、それは、走査順序において、菱形が円で囲まれた要素の直前に位置しているからである。即ち、円で囲まれた位置のコンテキストは、菱形により標識された位置と同時に計算されることが不可能であり、それは、円で囲まれた位置が菱形により標識された位置に依存し、従って、菱形により標識された位置は円で囲まれた位置のコンテキストを決定するよりも前にコード化されなければならないからである。
【0122】
この依存関係を解決するために、幾つかの要素がサポートSから除去され、所謂「ホール」(
図8Bに示される、三角形により囲まれる非充填ドット(non-filled dot))を伴うサポートを作ることができる。例えば、ホールの有意性フラグはスキップされ、コンテキストの計算において考慮されない(即ち、0であると仮定される)。従って、ホールの位置における有意性フラグを解析する必要はない。より良好な並列処理を可能にするために、5点サポートの形状は位置に依存する。
【0123】
図9A及び
図9Bは、2つ以上の領域へのビデオブロックの例示的な分割を示す概念図である。現在のHMでは、隣接コンテキストのモデリングが、5点サポートを伴う8×8よりも大きなTUサイズ(即ち、16×16、32×32、及び非正方形の変換サイズ16×4、4×16、32×8、及び8×32)に対して使用される。しかしながら、5点ポイントのサポートを伴うコンテキストのモデリングは、より大きなブロックサイズにおけるコンテキストの計算の複雑さを高め得る。
図9Aの領域R1は、ビデオブロックの変換係数の1つ又は複数の左上の4×4のサブブロックを含む領域の例を表し、一方、
図9Aの領域R2は、領域R1の外側のビデオブロックの変換係数を含む領域の例を表す。
図9Aはまた、複数の領域が1つ又は複数のサブブロックのそれぞれのセットを備える例を表す。
【0124】
本開示で説明される技法によれば、ビデオエンコーダ20又はビデオデコーダ30のようなビデオコーダは、(例えば、
図9A及び
図9Bに示されるように)ビデオブロックを領域Rに分割し、異なる領域の各々に対して異なるコンテキスト割当て手順を使用することができる。例えば、一部の領域は、固定されたコンテキスト又は位置ベースのコンテキストを使用することができ、一部の領域は近隣ベースのコンテキストを使用することができる。
図9Aに示されるように、領域は、サブブロック全体が1つの領域又は別の領域に含まれるように、4×4のサブブロックに基づき得る。また、幾つかの例では、領域への分割はフレキシブルであり得る。
図9Bに示されるように、ビデオブロックは、サブブロックの部分が2つの異なる領域に含まれ得るように、対角方向の領域に分割され得る。他の例では、分割は、係数の位置、又は、この係数を含む4×4のサブブロックの位置に依存し得る。
【0125】
幾つかの例では、コンテキストは、ビデオブロック中の係数の位置に従って、又は、この係数を含む4×4のサブブロックの位置に従って、定義され得る。或いは、コンテキストモデルは、隣接する4×4のサブブロックに従って定義され得る。例えば、同じ4×4のサブブロック内の全ての係数が1つ又は幾つかのコンテキストを使用することができ、次の4×4のサブブロックの係数も1つ又は幾つかのコンテキストを使用することができる。しかしながら、1つの4×4のサブブロックのコンテキストは、前の4×4のサブブロックベースのコンテキストとは異なり得る。或いは、コンテキストは、Ctx=Right4x4SubBlockFlag+Bottom4x4SubBlockFlagとして、又は近隣に応じて同様の式で、計算され得る。やはり、Right4x4SubBlockFlagは、右側の隣接サブブロックのコード化サブブロックフラグ(例えば、右側の隣接する4×4のサブブロックが少なくとも1つの0ではない係数を含むかどうかを示す)を表すことができ、Bottom4x4SubBlockFlagは、右側の隣接サブブロックのコード化サブブロックフラグ(例えば、底の隣接する4×4のサブブロックが少なくとも1つの0ではない係数を含むかどうかを示す)を表すことができる。
【0126】
図10は、ビデオブロックの各領域の近隣ベースの又は位置ベースのコンテキストの例示的な割当てを示す概念図である。
図10に示されるように、ハイブリッドタイプのコンテキストも使用されてよく、例えば、一部の領域ではコンテキストは近隣ベースであってよく、同じビデオブロックの一部の領域ではコンテキストは固定されているか位置ベースであってよい。位置ベースの手法の可能性のある利点は、係数ごとにコンテキストを計算する必要がないということである。代わりに、ビデオコーダは、領域中の全ての係数が同じコンテキストを有するように、領域中の全ての係数に対して一度にコンテキストを計算することができる。
図10は、複数の領域が1つ又は複数のサブブロックのそれぞれのセットを備える例を表す。
【0127】
座標(x,y)の係数に対して、領域は、係数の位置に従って定義され得る。例えば、(x+y≧閾値)という条件が真である場合、ビデオコーダは、対応する係数が領域R2内に存在すると決定することができる。そうではなく、条件が真ではない場合、ビデオコーダは、対応する係数が領域R1内に存在すると決定する。同様に、座標は、4×4のサブブロックに基づいて領域に割り当てられ得る。座標(X,Y)のサブブロックに対して、領域は、4×4のサブブロックの位置に従って定義され得る。例えば、(X+Y≧閾値)という条件が真である場合、ビデオコーダは、対応する係数が領域R2内に存在すると決定することができる。それ以外の場合、ビデオコーダは、対応する係数が領域R1内に存在すると決定することができる。閾値は、4、5、6、7、又は8に等しい整数のような、何らかの事前に定義された値に固定されていてよく、又は、ビデオブロック、例えばTUのサイズに依存してよい。
【0128】
このように、
図10は、ビデオコーダが、変換係数が存在する領域に基づいて、かつ、領域に基づいて位置ベースのコンテキスト情報と近隣ベースのコンテキスト情報の1つを使用して、変換係数をコード化するためのコンテキストを決定するように構成され得る、例を表す。具体的には、変換係数が第1の領域にある場合、ビデオコーダは、第1のコンテキスト決定手法を使用して、変換係数をコード化するためのコンテキストを決定することができる。変換係数が第2の領域にある場合、ビデオコーダは、第2のコンテキスト決定手法を使用して、変換係数をコード化するためのコンテキストを決定し、ここで第2のコンテキスト決定手法は第1のコンテキスト決定手法とは異なり、第1の領域は第2の領域とは異なる。ある例では、第1の領域及び第2の領域は重複しない。やはり、第1のコンテキスト決定手法及び第2のコンテキスト決定手法の例は、位置ベースのコンテキスト情報及び近隣ベースのコンテキスト情報の使用を含む。
【0129】
図11は、ビデオブロックの各領域のコンテキストオフセットの例示的な割当てを示す概念図である。コンテキストモデルは、異なる領域に対しては別々であり得るが、それでもコンテキストの計算のために同じ方法を使用し得る。言い換えると、ビデオコーダは、変換係数をコード化するためのコンテキストを計算するための1つの方法によって構成され得るが、変換係数が存在する領域に基づいて決定される、異なるコンテキストモデルを含み得る。
【0130】
例えば、コンテキストは、近隣に基づいて計算され得るが、異なる領域に対しては、コンテキストはオフセットを使用する。各領域のオフセットは、固定されていてよく、又は、ビデオブロックのサイズ、ビデオブロック又はサブブロック中の係数の位置、及び、ビデオブロック中のサブブロックの位置のうちの1つ又は複数に依存してよい。
図11の領域R1は、ビデオブロックの変換係数の1つ又は複数の左上の4×4のサブブロックを含む領域の別の例を表し、一方、
図11の領域R2は、領域R1の外側のビデオブロックの変換係数を含む領域の別の例を表す。
図11はまた、複数の領域が1つ又は複数のサブブロックのそれぞれのセットを備える例を表す。
【0131】
オフセットがあると、コンテキストは式(2)に従って計算され得る。
【数2】
【0132】
或いは、ビデオコーダは、Ctxを入力として使用する関数、例えば、Ctx=(Ctx+1)>>1に従って、コンテキストを計算することができる。
【0133】
領域ベースのオフセットの一例が
図11に示されており、ここで領域R1及びR2は4×4のサブブロックに基づいて定義され、オフセットは領域R1及びR2に対して異なる。オフセット値offset1及びoffset2は任意の整数であってよく、例えば、offset1=0、offset2=3である。別の例では、領域への他の分割も可能であり、3つ以上の領域への分割も可能である。
【0134】
図12は、既存のコンテキストモデルに相関するTUサイズに基づく、2つ以上の領域へのビデオブロックの例示的な埋込型の分割を示す概念図である。現在のHMには幾つかのTUのサイズ(4×4、8×8、16×16、及び32×32)があるので、
図12に示されるように、より大きなブロックの分割は、埋込式の分割を使用して、より小さなTUサイズに従って行われ得る。埋込型の分割では、コンテキストの計算の方法が共有されてよく、コンテキストモデル自体が共有されてよい。
【0135】
例えば、32×32のTUサイズでは、4×4のTUを表す領域R1において、コンテキストの計算は、4×4のサイズの実際のTUのためのコンテキストの計算の方法と同じ方法を使用することができる。加えて、コンテキストモデルは、4×4のサイズのTUと32×32のサイズのTUのR1との間で共有されてよく、又は、4×4のサイズのTUのコンテキストモデルにオフセットが適用されてよい。R2については、コンテキスト計算方法は、8×8のサイズのTUと32×32のサイズのTUのR2との間で共有され得る。R3は16×16のTUの領域を表し、一方R4は32×32のTUの領域を表す。この方法の可能性のある利点は、コンテキストの計算のために同じユニットが使用されることが可能であり、埋め込まれた領域とTUとの間の追加の相関が考慮され得るということである。
【0136】
或いは、埋込式の分割を使用すると、一部の有意性マップコンテキストモデルが、全てのTU又はTUの一部のグループの間で、専用の位置について共有され得る。例えば、DC係数に対応するコンテキストモデルは、4×4から32×32のサイズを伴う全てのTUの間で共有され得る。別の例として、高周波の係数に関するコンテキストモデルは、全てのTUの間で共有され得る。これらの場合、32×32のTUの中の4×4のTUを表す領域R1は、DC係数及び/又は高周波の係数に対して、4×4、8×8、16×16、32×32などのサイズのいずれかを有するTUと同じコンテキストモデルを使用することができる。
【0137】
更なる例として、全てのTUの間で共有する代わりに、上で説明された係数(例えば、DC及び/又は高周波の係数)のコンテキストモデルは、全てのTUのサブセット又はグループの間でのみ共有され得る。例えば、係数のコンテキストモデルは、4×4のTU及び8×8のTUのような、2つのサイズのTUのみの間で共有され得る。この場合、32×32のサイズのTUの中の4×4のTUを表す領域R1は、DC係数及び/又は高周波の係数に対して、4×4及び8×8のサイズを有するTUと同じコンテキストモデルを使用することができる。
【0138】
このように、
図12の例は、ビデオエンコーダ20又はビデオデコーダ30のようなビデオコーダが、変換係数が存在する領域を、ビデオブロックの複数の領域から決定するように構成され得る例を表し、領域の各々は複数の変換単位(TU)サイズのそれぞれ1つに対応し、ビデオコーダは、領域と、領域と同じサイズを有するTUとの間で共有されるコンテキストを選択することによって、コンテキストを決定する。
【0139】
図12はまた、ビデオエンコーダ20又はビデオデコーダ30のようなビデオコーダが、変換係数が存在する領域を、ビデオブロックの複数の領域から決定するように構成され得る例を表し、領域の各々は複数の変換単位(TU)サイズのそれぞれ1つに対応し、コンテキストを決定するために、ビデオコーダは、異なるサイズの2つ以上のTUの間で変換係数の専用の位置について共有されるコンテキストを選択し、領域は、異なるサイズの2つ以上のTUの1つと同じサイズを有する。変換係数の専用の位置に対する共有コンテキストは、異なるサイズの2つ以上のTUの間で共有される、DC係数と高周波の係数の1つに対するコンテキストを備え得る。加えて、又は代替的に、変換係数の専用の位置に対する共有コンテキストは、4×4の変換係数というサイズを有する第1のTUと、8×8の変換係数というサイズを有する第2のTUとの間での、共有コンテキストを備え得る。
【0140】
図13A及び
図13Bは、2つ以上の領域へのビデオブロックの例示的な分割を示す概念図である。領域が正方形の、例えば4×4のサブブロックに基づく例に関して上で説明されたのと同様の方式で、本開示の技法はまた、ビデオブロック、例えばTUを、長方形の形状のサブブロックに基づく2つ以上の領域に分割するための分類方法を説明する。例えば、
図13A及び
図13Bに示されるように、係数走査に応じて、2×8のサブブロック及び8×2のサブブロックが、8×8のビデオブロックのために使用され得る。この例では、ビデオコーダは、
図13Aに示されるブロック中の係数に水平走査を適用し、
図13Bに示されるブロックに垂直走査を適用する。
図13A及び
図13Bに示される例では、1つの正方形のブロックは1つの単一の係数を表し、ビデオブロック全体のサイズは8×8である。
【0141】
本開示の技法によれば、ビデオブロックは、異なる長方形の領域、例えば、R1、R2、R3、及びR4に分割され得る。異なる長方形領域の各々は、異なるコンテキストの割当てを有し得る。例えば、一部の領域では、固定されたコンテキストが使用され得る。これらの領域は、上で説明され
図13A及び
図13Bで示される、長方形(例えば、2×8又は8×2)のサブブロックに基づいて形成され得る。例えば、コンテキストは、ビデオブロック中の係数の位置に従って、又は、この係数を含む長方形のサブブロックの位置に従って、定義され得る。
【0142】
或いは、コンテキストモデルは、隣接する長方形の形状のサブブロックに従って定義され得る。例えば、同じ長方形のサブブロック内の全ての係数が、1つ又は幾つかのコンテキストを使用することができる。加えて、隣接する長方形のサブブロックの係数も、1つ又は幾つかのコンテキストを使用することができる。しかしながら、1つの長方形のサブブロックのコンテキストは、前の長方形のサブブロックベースのコンテキストとは異なり得る。ハイブリッドタイプのコンテキストも使用されてよく、例えば、一部の領域ではコンテキストは近隣ベースであってよく、同じビデオブロックの一部の領域ではコンテキストは固定されているか位置ベースであってよい。位置ベースの手法の利点は、係数ごとにコンテキストを計算する必要がなく、計算が領域に対して一度に行われ得るということである。また、分割は、係数の位置、又は、この係数を含む長方形のサブブロックの位置に依存し得る。
【0143】
座標(x,y)の係数に対して、領域は、係数の位置に従って定義され得る。例えば、(x+y≧閾値)という条件が真である場合、この係数は領域R2に割り当てられてよく、それ以外の場合、この係数は領域R1に割り当てられてよい。同様の方式で、これは、座標(X,Y)のサブブロックに対して長方形の形状のサブブロックに基づいて行われてよく、領域は、長方形のサブブロックの位置に従って定義され得る。例えば、(X+Y≧閾値)という条件が真である場合、この係数は領域R2に割り当てられてよく、それ以外の場合、この係数はR1に割り当てられてよい。閾値は、整数値(例えば、0又は1に等しい)のような何らかの事前に定義された値に固定されてよく、又は、TUサイズに依存してよい。
【0144】
或いは、コンテキストモデルは、異なる領域に対しては異なり得るが、それでもコンテキストの計算のために同じ方法を使用し得る。例えば、コンテキストは、近隣に基づいて計算され得るが、異なる領域に対しては、コンテキストはオフセットを使用する。オフセットは固定されてよく、ビデオブロックのサイズに依存してよく、又は、ビデオブロック及び/又は長方形のサブブロック中の係数の位置、ビデオブロック中の現在の係数を含む長方形のサブブロックの位置、又はこれらの条件の任意の組合せのうちの1つ又は複数に依存してよい。
【0145】
オフセットがあると、コンテキストは式(3)に従って計算され得る。
【数3】
【0146】
或いは、コンテキストは、Ctxを入力として使用する関数、例えば、Ctx=(Ctx+1)>>1に従って計算され得る。
【0147】
図14A及び
図14Bは、ビデオブロックの各領域のコンテキストオフセットの例示的な割当てを示す概念図である。これらの例では、領域R1及びR2は、長方形のサブブロック及び走査の向きに基づいて定義され、オフセットは領域R1及びR2に対して異なる。オフセット値offset1及びoffset2は任意の整数であってよく、例えば、offset1=0、offset2=3である。領域への他の分割も可能である。例えば、領域の数は2より多くてよい。係数の走査の向きに応じて、2×8及び8×2の長方形のサブブロックが例として本開示では使用されたことに留意されたい。制約されることなく、サイズがM×Nである他の長方形の形状のサブブロックに対して、同様の方法が使用され得る。
【0148】
一般に、本開示は、対角方向ベースの、正方形の、例えば、4×4のサブブロックベースのビデオブロックの分割と、長方形の、例えば2×8及び8×2のサブブロックベースのビデオブロックの分割とを説明する。他の例では、他のタイプの分割が可能であり、分割は、異なるサイズを有する様々な形状、例えば、長方形、正方形、三角形などに基づいて、フレキシブルであり得る。本開示はまた、任意の数の領域へのビデオブロックの分割を説明する。本開示は更に、正方形のサブブロックに基づく、長方形のサブブロックに基づく、又は、ビデオブロックの対角方向の分割のような他のグルーピングに基づく、係数の領域へのグルーピングを説明する。上で説明された閾値及びオフセットはまた例として提供され、他の値又は近隣との依存関係が利用され得る。
【0149】
本開示で説明されるものと同様の技法が、非正方形の変換ユニット又は他の形状のユニットに対して使用され得る。説明される技法は、限定されることなく、有意性マップのコード化と、変換係数の他のシンタックス及びビンのコード化とに適用され得る。加えて、本開示は通常、ビデオブロックをTUブロックと呼ぶが、本技法は、TU、PU、CU、LCU、又はブロックの他のグループのいずれにも適用され得る。
【0150】
図15は、現在のブロックを符号化するための例示的な方法を示すフローチャートである。現在のブロックは、現在のCU、又は現在のCUの一部分を備え得る。ビデオエンコーダ20(
図1及び
図2)に関して説明されるが、他の機器が
図15の方法と同様の方法を実行するように構成され得ることを理解されたい。
【0151】
この例では、ビデオエンコーダ20は、初めに、現在のブロックを予測する(150)。例えば、ビデオエンコーダ20は、現在のブロックの1つ又は複数の予測単位(PU)を計算し得る。ビデオエンコーダ20は、次いで、例えば、変換単位(TU)を生成するために、現在のブロックの残差ブロックを計算し得る(152)。残差ブロックを計算するために、ビデオエンコーダ20は、元のコード化されていないブロックと現在のブロックの予測ブロックとの間の差(即ち、画素ごとの差分)を計算し得る。ビデオエンコーダ20は、次いで、残差ブロックの係数を変換し、量子化し得る(154)。次に、ビデオエンコーダ20は、残差ブロックの量子化変換係数を走査し得る(156)。
【0152】
走査中、ビデオエンコーダ20は、現在の係数が存在する領域を決定することができ、この方式で、ビデオエンコーダ20は、様々な係数が存在する領域を決定することができる(158)。本開示の技法によれば、ビデオエンコーダ20は、係数が存在する領域を、例えば、係数の位置、又は、係数が存在するサブブロックの位置に基づいて、決定することができる。ビデオエンコーダ20は、
図9〜
図14に関して説明される技法、又は他の同様の技法のいずれかを使用して、領域を決定することができる。例えば、
図9Aに示されるように、ビデオエンコーダ20は、係数が1つ又は複数のサブブロックを含む第1の領域に存在するか、第1の領域の外側のサブブロックを含む第2の領域に存在するかを、決定するように構成され得る。
【0153】
ビデオエンコーダ20は更に、領域に基づいて、エントロピー符号化係数のコンテキストを決定することができる(160)。即ち、ビデオエンコーダ20は、各係数に対して、係数が存在する領域に基づいて係数を符号化するためのコンテキストを決定することができる。例えば、上で論じられたように、ビデオエンコーダ20は、ブロック中の係数の位置、ブロック中の係数を含むサブブロックの位置、計算されたコンテキストに適用されるべきオフセットなどに基づいて、係数が存在する領域に基づいてコンテキストを決定することができる。
【0154】
同様に、ビデオエンコーダ20は、決定されたコンテキストを使用して、係数をエントロピー符号化することができる(162)。具体的には、ビデオエンコーダ20は、コンテキストを使用して、係数を表す1つ又は複数のシンタックス要素をエントロピー符号化することができる。例えば、ビデオエンコーダ20は、係数の有意性情報、有意な係数のレベル情報、及び/又は有意な係数の符号情報の1つ又は複数をエントロピー符号化することができる。有意性情報は、significant_coeff_flagデータを備え得る。レベル情報は、coeff_abs_level_greater1_flagと、coeff_abs_level_greater2_flagと、coeff_abs_level_remainingとを備え得る。符号情報は、coeff_sign_flagを備え得る。ビデオエンコーダ20は次いで、係数のエントロピー符号化データを出力することができる(164)。
【0155】
このように、
図15の方法は、変換係数が存在するビデオブロックの領域に基づいてビデオブロックの変換係数をコード化するためのコンテキストを決定することと、決定されたコンテキストを使用して変換係数をエントロピーコード化することとを含む、方法の例を表す。その上、領域は、ビデオブロックの変換係数の1つ又は複数の左上の4×4のサブブロックを備える第1の領域と、第1の領域の外側のビデオブロックの変換係数を備える第2の領域とのうちの、1つを備え得る。
【0156】
図16は、ビデオデータの現在のブロックを復号するための例示的な方法を示すフローチャートである。現在のブロックは、現在のCU、又は現在のCUの一部分を備え得る。ビデオデコーダ30(
図1及び
図3)に関して説明されるが、他の機器が
図16の方法と同様の方法を実行するように構成され得ることを理解されたい。
【0157】
ビデオデコーダ30は、現在のブロックのための予測ブロックを計算するために、例えば、イントラ又はインター予測モードを使用して現在のブロックを予測し得る(200)。ビデオデコーダ30はまた、現在のブロックに対応する残差ブロックの係数のエントロピー符号化データのような、現在のブロックのエントロピー符号化データを受信し得る(202)。
【0158】
本開示の技法によれば、ビデオデコーダ30は、例えば、逆方向の走査及びエントロピー復号プロセスの間に、変換係数が存在する領域を決定することができる(204)。即ち、ビデオデコーダ30は、前に復号された変換係数と、走査順序において次にある有意な変換係数の位置とに基づいて、次の変換係数の位置を決定することができる。ビデオデコーダ30は更に、この位置が存在するブロックの領域を決定することができる。ビデオデコーダ30は同様に、同様の方式で、係数の各々の領域を決定することができる。
【0159】
その上、ビデオデコーダ30は、係数が存在する領域を、例えば、係数の位置、又は、係数が存在するサブブロックの位置に基づいて、決定することができる。ビデオデコーダ30は、
図9〜
図14に関して説明される技法、又は他の同様の技法のいずれかを使用して、領域を決定することができる。例えば、
図9Aに示されるように、ビデオデコーダ30は、係数が1つ又は複数のサブブロックを含む第1の領域に存在するか、第1の領域の外側のサブブロックを含む第2の領域に存在するかを、決定するように構成され得る。
【0160】
更に、ビデオデコーダ30は、決定された領域に基づいて、係数を復号するためのコンテキストを決定することができる(206)。即ち、ビデオデコーダ30は、各係数に対して、係数が存在する領域に基づいて係数を復号するためのコンテキストを決定することができる。例えば、上で論じられたように、ビデオデコーダ30は、ブロック中の係数の位置、ブロック中の係数を含むサブブロックの位置、計算されたコンテキストに適用されるべきオフセットなどに基づいて、係数が存在する領域に基づいてコンテキストを決定することができる。
【0161】
ビデオデコーダ30は、エントロピーコード化データをエントロピー復号して、決定されたコンテキストを使用してブロックの係数を再生成することができる(208)。具体的には、ビデオデコーダ30は、コンテキストを使用して、係数を表す1つ又は複数のシンタックス要素をエントロピー復号することができる。例えば、ビデオデコーダ30は、係数の有意性情報、有意な係数のレベル情報、及び/又は有意な係数の符号情報の1つ又は複数をエントロピー復号することができる。有意性情報は、significant_coeff_flagデータを備え得る。レベル情報は、coeff_abs_level_greater1_flagと、coeff_abs_level_greater2_flagと、coeff_abs_level_remainingとを備え得る。符号情報は、coeff_sign_flagを備え得る。ビデオデコーダ30は次いで、それぞれの部分において復号された変換係数を含むように、ブロック(例えば、TU)を再生成することができる(210)。即ち、上で論じられたように、ビデオデコーダ30は、量子化変換係数のブロックを作成するために再生成された係数を逆走査することができる。
【0162】
ビデオデコーダ30は、次いで、係数を逆量子化し逆走査して、残差ブロックを生成することができる(212)。ビデオデコーダ30は、最終的に、予測ブロックと残差ブロックとを組み合わせることによって現在のブロックを復号することができる(214)。即ち、ビデオデコーダ30は、予測ブロックの画素値と、残差ブロックの同じ位置にある画素値とを数学的に組み合わせて、元のブロックを復号し再生成することができる。
【0163】
このように、
図16の方法は、変換係数が存在するビデオブロックの領域に基づいてビデオブロックの変換係数をコード化するためのコンテキストを決定することと、決定されたコンテキストを使用して変換係数をエントロピーコード化することとを含む、方法の例を表す。その上、領域は、ビデオブロックの変換係数の1つ又は複数の左上の4×4のサブブロックを備える第1の領域と、第1の領域の外側のビデオブロックの変換係数を備える第2の領域とのうちの、1つを備え得る。
【0164】
1つ又は複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組合せで実装され得る。各機能は、ソフトウェアで実装される場合、1つ又は複数の命令又はコードとしてコンピュータ可読媒体上に記憶されてよく、或いはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行されてよい。コンピュータ可読媒体は、例えば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む、データ記憶媒体又は通信媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含み得る。このようにして、コンピュータ可読媒体は、全般に、(1)非一時的である有形コンピュータ可読記憶媒体、或いは(2)信号又は搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明された技法の実装のための命令、コード及び/又はデータ構造を取り出すために1つ又は複数のコンピュータ或いは1つ又は複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
【0165】
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD−ROM又は他の光ディスクストレージ、磁気ディスクストレージ、又は他の磁気記憶装置、フラッシュメモリ、或いは、命令又はデータ構造の形態の所望のプログラムコードを記憶するために使用されコンピュータによってアクセスされ得る、任意の他の媒体を備え得る。また、如何なる接続もコンピュータ可読媒体と適切に呼ばれる。例えば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、又は赤外線、無線、及びマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、又は他のリモート発信源から送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、又は赤外線、無線、及びマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体及びデータ記憶媒体は、接続、搬送波、信号、又は他の一時媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク(disk)及びディスク(disc)は、コンパクトディスク(disc)(CD)、レーザディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)及びブルーレイディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【0166】
命令は、1つ又は複数のデジタル信号プロセッサ(DSP)などの1つ又は複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、或いは他の等価な集積回路又はディスクリート論理回路によって実行され得る。従って、本明細書で使用される「プロセッサ」という用語は、前述の構造、又は本明細書で説明される技法の実装に好適な他の構造のいずれかを指す。加えて、幾つかの態様では、本明細書で説明された機能は、符号化及び復号のために構成された専用のハードウェア及び/又はソフトウェアモジュール内で与えられてよく、或いは複合コーデックに組み込まれてよい。また、本技法は、1つ又は複数の回路又は論理要素中で完全に実装され得る。
【0167】
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、又はICのセット(例えば、チップセット)を含む、多種多様な機器又は装置において実装され得る。本開示では、開示される技法を実行するように構成された機器の機能的態様を強調するために、様々なコンポーネント、モジュール、又はユニットが説明されたが、それらのコンポーネント、モジュール、又はユニットは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上で説明されたように、様々なユニットが、好適なソフトウェア及び/又はファームウェアとともに、上で説明された1つ又は複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられてよく、又は相互動作ハードウェアユニットの集合によって与えられてよい。
【0168】
様々な例が説明されてきた。これら及び他の例は以下の特許請求の範囲内に入る。
以下に本件出願当初の特許請求の範囲に記載された発明を付記する。
[1] ビデオデータを復号する方法であって、ビデオブロックの変換係数がDC変換係数かどうかを決定することと、前記変換係数が前記ビデオブロックの前記DC変換係数であると決定される場合、前記ビデオブロックのサイズとは無関係に、前記DC変換係数である前記変換係数に基づいて前記変換係数を復号するためのコンテキストを決定することと、決定された前記コンテキストを使用して前記変換係数をエントロピー復号することとを備える、方法。
[2] 前記変換係数が第1の変換係数を備え、前記ビデオブロックが第1のビデオブロックを備え、前記サイズが第1のサイズを備え、前記方法は、第2のビデオブロックの第2の変換係数がDC変換係数かどうかを決定することと、前記第2のビデオブロックが、前記第1のビデオブロックの前記第1のサイズとは異なる第2のサイズを有する、前記第2の変換係数が前記第2のビデオブロックの前記DC変換係数であると決定される場合、前記第2のサイズとは無関係に、前記第2のビデオブロックの前記DC変換係数である前記変換係数に基づいて、前記第2の変換係数を復号するための、前記第1の変換係数に対するコンテキストと同じコンテキストを決定することと、決定された前記コンテキストを使用して、前記第2の変換係数をエントロピー復号することとをさらに備える、[1]に記載の方法。
[3] 前記コンテキストを決定することが、複数の異なるサイズのビデオブロックに対する前記同じコンテキストに前記DC変換係数をマッピングするデータから、前記コンテキストを選択することを備える、[1]に記載の方法。
[4] 前記複数の異なるサイズのビデオブロックが、4×4のビデオブロックと8×8のビデオブロックとを含む、[3]に記載の方法。
[5] 前記コンテキストを決定することが、全ての可能なサイズのビデオブロックに対する前記同じコンテキストに前記DC変換係数をマッピングするデータから、前記コンテキストを選択することを備える、[1]に記載の方法。
[6] 前記変換係数をエントロピー復号することが、コンテキスト適応型バイナリ算術コード化(CABAC)に従って、決定された前記コンテキストを使用して前記変換係数をエントロピー復号することを備える、[1]に記載の方法。
[7] ビデオデータを復号するための装置であって、ビデオブロックの変換係数がDC変換係数かどうかを決定し、前記変換係数が前記ビデオブロックの前記DC変換係数であると決定された場合、前記ビデオブロックのサイズとは無関係に、前記DC変換係数である前記変換係数に基づいて前記変換係数を復号するためのコンテキストを決定し、決定された前記コンテキストを使用して変換係数をエントロピー復号するように構成される、ビデオデコーダを備える、装置。
[8] 前記変換係数が第1の変換係数を備え、前記ビデオブロックが第1のビデオブロックを備え、前記サイズが第1のサイズを備え、前記ビデオデコーダがさらに、第2のビデオブロックの第2の変換係数がDC変換係数かどうかを決定し、このとき前記第2のビデオブロックが、前記第1のビデオブロックの前記第1のサイズとは異なる第2のサイズを有し、さらに、前記第2の変換係数が前記第2のビデオブロックの前記DC変換係数であると決定される場合、前記第2のサイズとは無関係に、前記第2のビデオブロックの前記DC変換係数である前記変換係数に基づいて、前記第2の変換係数を復号するための、前記第1の変換係数に対するコンテキストと同じコンテキストを決定し、前記決定されたコンテキストを使用して、前記第2の変換係数をエントロピー復号するように構成される、[7]に記載の装置。
[9] 前記変換係数が前記DC変換係数を備える場合、前記ビデオデコーダが、複数の異なるサイズのビデオブロックに対する前記同じコンテキストに前記DC変換係数をマッピングするデータから、前記コンテキストを選択するように構成される、[7]に記載の装置。
[10] 前記複数の異なるサイズのビデオブロックが、4×4のビデオブロックと8×8のビデオブロックとを含む、[9]に記載の装置。
[11] 前記変換係数が前記DC変換係数を備える場合、前記ビデオデコーダが、全ての可能なサイズのビデオブロックに対する前記同じコンテキストに前記DC変換係数をマッピングするデータから、前記コンテキストを選択するように構成される、[7]に記載の装置。
[12] 前記変換係数をエントロピー復号するために、前記ビデオデコーダが、コンテキスト適応型バイナリ算術コード化(CABAC)に従って、決定された前記コンテキストを使用して前記変換係数をエントロピー復号するように構成される、[7]に記載の装置。
[13] ビデオデータを復号するための装置であって、ビデオブロックの変換係数がDC変換係数かどうかを決定するための手段と、前記変換係数が前記ビデオブロックの前記DC変換係数であると決定される場合、前記ビデオブロックのサイズとは無関係に、前記DC変換係数である前記変換係数に基づいて前記変換係数を復号するためのコンテキストを決定するための手段と、決定された前記コンテキストを使用して、前記変換係数をエントロピー復号するための手段とを備える、装置。
[14] 前記変換係数が第1の変換係数を備え、前記ビデオブロックが第1のビデオブロックを備え、前記サイズが第1のサイズを備え、第2のビデオブロックの第2の変換係数がDC変換係数かどうかを決定するための手段と、前記第2のビデオブロックが、前記第1のビデオブロックの前記第1のサイズとは異なる第2のサイズを有する、前記第2の変換係数が前記第2のビデオブロックの前記DC変換係数であると決定される場合、前記第2のサイズとは無関係に、前記第2のビデオブロックの前記DC変換係数である前記変換係数に基づいて、前記第2の変換係数を復号するための、前記第1の変換係数に対するコンテキストと同じコンテキストを決定するための手段と、決定された前記コンテキストを使用して、前記第2の変換係数をエントロピー復号するための手段とをさらに備える、[13]に記載の装置。
[15] 前記コンテキストを決定するための前記手段が、複数の異なるサイズのビデオブロックに対する前記同じコンテキストに前記DC変換係数をマッピングするデータから、前記コンテキストを選択するための手段を備える、[13]に記載の装置。
[16] 前記複数の異なるサイズのビデオブロックが、4×4のビデオブロックと8×8のビデオブロックとを含む、[15]に記載の装置。
[17] 前記コンテキストを決定するための前記手段が、全ての可能なサイズのビデオブロックに対する前記同じコンテキストに前記DC変換係数をマッピングするデータから、前記コンテキストを選択するための手段を備える、[13]に記載の装置。
[18] 前記変換係数をエントロピー復号するための前記手段が、コンテキスト適応型バイナリ算術コード化(CABAC)に従って、前記決定されたコンテキストを使用して前記変換係数をエントロピー復号することを備える、[13]に記載の装置。
[19] 命令を記憶したコンピュータ可読記憶媒体であって、前記命令が、実行されると、プロセッサに、ビデオブロックの変換係数がDC変換係数かどうかを決定させ、前記変換係数が前記ビデオブロックの前記DC変換係数であると決定される場合、前記ビデオブロックのサイズとは無関係に、前記DC変換係数である前記変換係数に基づいて前記変換係数を復号するためのコンテキストを決定させ、決定された前記コンテキストを使用して前記変換係数をエントロピー復号させる、コンピュータ可読記憶媒体。
[20] 前記変換係数が第1の変換係数を備え、前記ビデオブロックが第1のビデオブロックを備え、前記サイズが第1のサイズを備え、前記プロセッサに、第2のビデオブロックの第2の変換係数がDC変換係数かどうかを決定させ、このとき前記第2のビデオブロックが、前記第1のビデオブロックの前記第1のサイズとは異なる第2のサイズを有し、前記第2の変換係数が前記第2のビデオブロックの前記DC変換係数であると決定される場合、前記第2のサイズとは無関係に、前記第2のビデオブロックの前記DC変換係数である前記変換係数に基づいて、前記第2の変換係数を復号するための、前記第1の変換係数に対するコンテキストと同じコンテキストを決定させ、決定された前記コンテキストを使用して、前記第2の変換係数をエントロピー復号させる命令をさらに備える、[19]に記載のコンピュータ可読記憶媒体。
[21] 前記プロセッサに前記コンテキストを決定させる前記命令が、前記プロセッサに、複数の異なるサイズのビデオブロックに対する前記同じコンテキストに前記DC変換係数をマッピングするデータから、前記コンテキストを選択させる命令を備える、[19]に記載のコンピュータ可読記憶媒体。
[22] 前記複数の異なるサイズのビデオブロックが、4×4のビデオブロックと8×8のビデオブロックとを含む、[21]に記載のコンピュータ可読記憶媒体。
[23] 前記プロセッサに前記コンテキストを決定させる前記命令が、前記プロセッサに、全ての可能なサイズのビデオブロックに対する前記同じコンテキストに前記DC変換係数をマッピングするデータから、前記コンテキストを選択させる命令を備える、[19]に記載のコンピュータ可読記憶媒体。
[24] 前記プロセッサに前記変換係数をエントロピー復号させる前記命令が、前記プロセッサに、コンテキスト適応型バイナリ算術コード化(CABAC)に従って、決定された前記コンテキストを使用して前記変換係数をエントロピー復号させる命令を備える、[19]に記載のコンピュータ可読記憶媒体。
[25] ビデオデータを符号化する方法であって、ビデオブロックの変換係数がDC変換係数かどうかを決定することと、前記変換係数が前記ビデオブロックの前記DC変換係数であると決定される場合、前記ビデオブロックのサイズとは無関係に、前記DC変換係数である前記変換係数に基づいて前記変換係数を符号化するためのコンテキストを決定することと、決定された前記コンテキストを使用して前記変換係数をエントロピー符号化することとを備える、方法。
[26] 前記変換係数が第1の変換係数を備え、前記ビデオブロックが第1のビデオブロックを備え、前記サイズが第1のサイズを備え、前記方法は、第2のビデオブロックの第2の変換係数がDC変換係数かどうかを決定することと、前記第2のビデオブロックが、前記第1のビデオブロックの前記第1のサイズとは異なる第2のサイズを有する、前記第2の変換係数が前記第2のビデオブロックの前記DC変換係数であると決定される場合、前記第2のサイズとは無関係に、前記第2のビデオブロックの前記DC変換係数である前記変換係数に基づいて前記第2の変換係数を符号化するための同じコンテキストを決定することと、決定された前記コンテキストを使用して、前記第2の変換係数をエントロピー符号化することとをさらに備える、[25]に記載の方法。
[27] 前記コンテキストを決定することが、複数の異なるサイズのビデオブロックに対する前記同じコンテキストに前記DC変換係数をマッピングするデータから、前記コンテキストを選択することを備える、[25]に記載の方法。
[28] 前記複数の異なるサイズのビデオブロックが、4×4のビデオブロックと8×8のビデオブロックとを含む、[27]に記載の方法。
[29] 前記コンテキストを決定することが、全ての可能なサイズのビデオブロックに対する前記同じコンテキストに前記DC変換係数をマッピングするデータから、前記コンテキストを選択することを備える、[25]に記載の方法。
[30] 前記変換係数をエントロピー符号化することが、コンテキスト適応型バイナリ算術コード化(CABAC)に従って、決定された前記コンテキストを使用して前記変換係数をエントロピー符号化することを備える、[25]に記載の方法。
[31] ビデオデータを符号化するための装置であって、ビデオブロックの変換係数がDC変換係数かどうかを決定し、前記変換係数が前記ビデオブロックの前記DC変換係数であると決定された場合、前記ビデオブロックのサイズとは無関係に、前記DC変換係数である前記変換係数に基づいて前記変換係数を符号化するためのコンテキストを決定し、決定された前記コンテキストを使用して変換係数をエントロピー符号化するように構成される、ビデオエンコーダを備える、装置。
[32] 前記変換係数が第1の変換係数を備え、前記ビデオブロックが第1のビデオブロックを備え、前記サイズが第1のサイズを備え、前記ビデオエンコーダがさらに、第2のビデオブロックの第2の変換係数がDC変換係数かどうかを決定し、このとき前記第2のビデオブロックが、前記第1のビデオブロックの前記第1のサイズとは異なる第2のサイズを有し、さらに、前記第2の変換係数が前記第2のビデオブロックの前記DC変換係数であると決定される場合、前記第2のサイズとは無関係に、前記第2のビデオブロックの前記DC変換係数である前記変換係数に基づいて、前記第2の変換係数を符号化するための同じコンテキストを決定し、決定された前記コンテキストを使用して、前記第2の変換係数をエントロピー符号化するように構成される、[31]に記載の装置。
[33] 前記変換係数が前記DC変換係数を備える場合、前記ビデオエンコーダが、複数の異なるサイズのビデオブロックに対する前記同じコンテキストに前記DC変換係数をマッピングするデータから、前記コンテキストを選択するように構成される、[31]に記載の装置。
[34] 前記複数の異なるサイズのビデオブロックが、4×4のビデオブロックと8×8のビデオブロックとを含む、[33]に記載の装置。
[35] 前記変換係数が前記DC変換係数を備える場合、前記ビデオエンコーダが、全ての可能なサイズのビデオブロックに対する前記同じコンテキストに前記DC変換係数をマッピングするデータから、前記コンテキストを選択するように構成される、[31]に記載の装置。
[36] 前記変換係数をエントロピー符号化するために、前記ビデオエンコーダが、コンテキスト適応型バイナリ算術コード化(CABAC)に従って、決定された前記コンテキストを使用して前記変換係数をエントロピー符号化するように構成される、[31]に記載の装置。
[37] ビデオデータを符号化するための装置であって、ビデオブロックの変換係数がDC変換係数かどうかを決定するための手段と、前記変換係数が前記ビデオブロックの前記DC変換係数であると決定される場合、前記ビデオブロックのサイズとは無関係に、前記DC変換係数である前記変換係数に基づいて前記変換係数を符号化するためのコンテキストを決定するための手段と、決定された前記コンテキストを使用して、前記変換係数をエントロピー符号化するための手段とを備える、装置。
[38] 前記変換係数が第1の変換係数を備え、前記ビデオブロックが第1のビデオブロックを備え、前記サイズが第1のサイズを備え、第2のビデオブロックの第2の変換係数がDC変換係数かどうかを決定するための手段と、前記第2のビデオブロックが、前記第1のビデオブロックの前記第1のサイズとは異なる第2のサイズを有する、前記第2の変換係数が前記第2のビデオブロックの前記DC変換係数であると決定される場合、前記第2のサイズとは無関係に、前記第2のビデオブロックの前記DC変換係数である前記変換係数に基づいて前記第2の変換係数を符号化するための同じコンテキストを決定するための手段と、決定された前記コンテキストを使用して、前記第2の変換係数をエントロピー符号化するための手段とをさらに備える、[37]に記載の装置。
[39] 前記コンテキストを決定するための前記手段が、複数の異なるサイズのビデオブロックに対する前記同じコンテキストに前記DC変換係数をマッピングするデータから、前記コンテキストを選択するための手段を備える、[37]に記載の装置。
[40] 前記複数の異なるサイズのビデオブロックが、4×4のビデオブロックと8×8のビデオブロックとを含む、[39]に記載の装置。
[41] 前記コンテキストを決定するための前記手段が、全ての可能なサイズのビデオブロックに対する前記同じコンテキストに前記DC変換係数をマッピングするデータから、前記コンテキストを選択するための手段を備える、[37]に記載の装置。
[42] 前記変換係数をエントロピー符号化するための前記手段が、コンテキスト適応型バイナリ算術コード化(CABAC)に従って、決定された前記コンテキストを使用して前記変換係数をエントロピー符号化することを備える、[37]に記載の装置。
[43] 命令を記憶したコンピュータ可読記憶媒体であって、前記命令が、実行されると、プロセッサに、ビデオブロックの変換係数がDC変換係数かどうかを決定させ、前記変換係数が前記ビデオブロックの前記DC変換係数であると決定される場合、前記ビデオブロックのサイズとは無関係に、前記DC変換係数である前記変換係数に基づいて前記変換係数を符号化するためのコンテキストを決定させ、決定された前記コンテキストを使用して前記変換係数をエントロピー符号化させる、コンピュータ可読記憶媒体。
[44] 前記変換係数が第1の変換係数を備え、前記ビデオブロックが第1のビデオブロックを備え、前記サイズが第1のサイズを備え、前記プロセッサに、第2のビデオブロックの第2の変換係数がDC変換係数かどうかを決定させ、このとき前記第2のビデオブロックが、前記第1のビデオブロックの前記第1のサイズとは異なる第2のサイズを有し、前記第2の変換係数が前記第2のビデオブロックの前記DC変換係数であると決定される場合、前記第2のサイズとは無関係に、前記第2のビデオブロックの前記DC変換係数である前記変換係数に基づいて前記第2の変換係数を符号化するための同じコンテキストを決定させ、決定された前記コンテキストを使用して、前記第2の変換係数をエントロピー符号化させる命令をさらに備える、[43]に記載のコンピュータ可読記憶媒体。
[45] 前記プロセッサに前記コンテキストを決定させる前記命令が、前記プロセッサに、複数の異なるサイズのビデオブロックに対する前記同じコンテキストに前記DC変換係数をマッピングするデータから、前記コンテキストを選択させる命令を備える、[43]に記載のコンピュータ可読記憶媒体。
[46] 前記複数の異なるサイズのビデオブロックが、4×4のビデオブロックと8×8のビデオブロックとを含む、[45]に記載のコンピュータ可読記憶媒体。
[47] 前記プロセッサに前記コンテキストを決定させる前記命令が、前記プロセッサに、全ての可能なサイズのビデオブロックに対する同じ前記コンテキストに前記DC変換係数をマッピングするデータから、前記コンテキストを選択させる命令を備える、[43]に記載のコンピュータ可読記憶媒体。
[48] 前記プロセッサに前記変換係数をエントロピー符号化させる前記命令が、前記プロセッサに、コンテキスト適応型バイナリ算術コード化(CABAC)に従って、決定された前記コンテキストを使用して前記変換係数をエントロピー符号化させる命令を備える、[43]に記載のコンピュータ可読記憶媒体。