[0001] 本出願は2012年10月2日に出願された米国仮特許出願第61/709,094号の利益を主張するもので、その全内容が参照により本明細書に組み込まれる。
詳細な説明
[0022] 本開示は、ビデオコーディング(すなわち、ビデオデータの符号化および/または復号)に関し、より詳細にはビデオ処理で使用される動作点シンタックスに関する。一般に、本開示は、ビデオコーディングにおいて動作点に関するレイヤ識別子をシグナリングするための技法について説明する。動作点は、時間的におよび/または複数のレイヤもしくはビューに関して拡張性のある元のビットストリームから抽出され得るサブビットストリームを指す。サブビットストリームは、レイヤ識別子(すなわち、レイヤID)およびビットストリームの動作点を識別する時間的サブレイヤ識別子(すなわち、時間ID)の値に基づいてビットストリームから抽出され得る。一般に、本開示は、レイヤ識別子およびレイヤIDという用語を使用して空間レイヤおよび/またはビューの識別子を指し、一方、時間的サブレイヤ識別子および時間的IDは、時間的サブレイヤの識別子を指す。
[0023] 動作点は、例えば、ビットストリーム内で、ビデオパラメータセット(VPS)などのパラメータセットにおいてシグナリングされ得る。動作点の各々では、動作点シンタックス構造が、例えば、ビデオ符号器によって生成され、所与の動作点のサブビットストリームに属するビットストリーム内のネットワークアブストラクションレイヤ(NAL)ユニットを識別するために使用されるレイヤ識別子の組を指定する。このようにして、メディアアウェアネットワークエンティティ(MANE)などのネットワークエンティティは、所与の動作点のサブビットストリームを構成するNALユニットを元のビットストリームから抽出するために、NALユニットヘッダを構文解析(parse)できる。ビットストリームにおける各NALユニットは、レイヤIDおよび時間的IDを含むことができ、レイヤIDおよび時間的IDを構文解析することによって、MANEは、特定の動作点のためのNALユニットを識別できる。
[0024] 本開示の技法は、動作点のためのレイヤIDのシグナリングを向上させることによって、動作点に関連付けられたシグナリング情報の効率を向上させることができる。以下でさらに詳細に説明する本開示の一例の技法によれば、最大レイヤIDのためのレイヤ識別値(すなわちレイヤID)がシグナリングされ得、追加のレイヤIDの存在が一連のフラグとしてシグナリングされ得る。例えば、ビットストリームは、様々な時間的および空間的解像度の6つのサブストリームを含み、各サブストリームはレイヤIDを有すると仮定する。最大レイヤID値がビットストリームにおいてシグナリングされ得る。この例では、最大レイヤID値が9であり、これは、動作点に含まれ得るレイヤID0から9を有する10のレイヤが潜在的に存在することを意味する。動作点のための残りのレイヤID値は、9つのフラグを使用してシグナリングされ得、ここで第1のフラグは、レイヤID値0が存在するかどうかを示し、第2のフラグは、レイヤID値1が存在するかどうかを示すなど、レイヤID値8が存在するかどうかを示す最後のフラグまで以下同様である。このように、レイヤID値2、5、および9をシグナリングするために、値9が最初にシグナリングされ得、次いでフラグ001001000のシーケンスが続き、ここで第3のビットの1は、レイヤID値2が存在することを示し、第6のビットの1は、レイヤID値5が存在することを示す。レイヤIDをシグナリングするための他の技法についても、本開示で説明する。
[0025] 本開示は、一般に、ビデオコーディングという用語を使用して、ビデオ符号化またはビデオ復号のいずれかを指す。本開示は、ビデオ処理という用語も使用し、これは、一般に、ビデオコーディングを含むが、例えば、ビデオデータ構文解析、ビデオデータルーティング、ビデオビットストリームスプライシング、および他のそのようなプロセスなど、他のタイプのビデオ処理も含むものとする。ビデオコーダは、一般に、ビデオデータを符号化および/または復号するデバイスを指すと考えられ、一方、ビデオプロセッサまたはビデオ処理デバイスは、ビデオデータをコード化し、しかし、ビデオデータにおいて他のプロセスを行うデバイスも指すと考えられ得る。
[0026] 図1は、本開示で説明するレイヤIDをシグナリングするための技法を利用し得る例示的なビデオ符号化および復号システム10を示すブロック図である。図1に示すように、システム10は、宛先デバイス14によって後で復号されるべき符号化ビデオデータを生成するソースデバイス12を含む。符号化されたビデオデータは、ネットワークデバイス13を介してソースデバイス12から宛先デバイス14に送られ得、これらは、ネットワークデバイスのより大きいネットワークの一部であり得る。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(例えば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスのいずれかを備え得る。場合によっては、ソースデバイス12および宛先デバイス14は、ワイヤレス通信のために装備され得る。
[0027] 図1の例では、ソースデバイス12が、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。他の例では、ソースデバイス12および宛先デバイス14が、他のコンポーネントまたは構成を含み得る。例えば、ソースデバイス12は、外部カメラなどの外部ビデオソース18からビデオデータを受信し得る。同様に、宛先デバイス14は、内蔵ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
[0028] 図1の図示のシステム10は一例にすぎない。本開示の技法は、任意のデジタルビデオコーディングおよび/または処理デバイスによって行われ得る。概して、本技法はビデオ符号化デバイスまたはビデオ復号デバイスによって行われるが、本技法は、一般に「コーデック」と呼ばれるビデオエンコーダ/デコーダによっても行われ得る。さらに、本開示の技法は、ビデオプリプロセッサによっても行われ得る。ソースデバイス12および宛先デバイス14は、ソースデバイス12が宛先デバイス14に送信するためのコード化ビデオデータを生成するようなコーディングデバイスの例にすぎない。いくつかの例では、デバイス12、14が、デバイス12、14の各々がビデオ符号化構成要素とビデオ復号構成要素とを含むように、実質的に対称的に動作し得る。従って、システム10は、例えば、ビデオストリーミング、ビデオ再生、ビデオブロードキャストまたはビデオ電話のための、ビデオデバイス12とビデオデバイス14との間の一方向または双方向のビデオ送信をサポートできる。
[0029] 一例では、ソースデバイス12のビデオ符号器20が、ビデオデータのビットストリームを生成できる。ビデオデータのVPSは、ビットストリームのサブビットストリームに対応する複数の動作点を定義できる。ビデオ符号器20は、特定の動作点に含まれるレイヤおよび時間的サブレイヤを識別する動作点シンタックスを含むことができる。VPSにおける動作点シンタックスは、動作点のための最大レイヤID値の表示並びに1つまたは複数のフラグを含むことができる。フラグは、最大レイヤID未満のレイヤIDを有するレイヤが動作点に含まれるかどうかを示す。従って、最大レイヤIDおよびフラグを有するVPSを受信すると、ネットワークデバイス13は、動作点のためのNALユニットを識別し、これらNALユニットを宛先デバイス14に送ることができる。NALユニットを受信すると、宛先デバイス14のビデオ復号器30は、符号化されたビデオデータを復号できる。ビデオ復号器30は、ネットワークデバイス13と同様にしてVPSに含まれる動作点シンタックスを潜在的に構文解析できる。例えば、ビデオ復号器30は、全ての予想されるレイヤが受信されたかどうかを調べる、または適用するための仮定的参照復号器(HRD:hypothetical reference decoder)パラメータのセットを決定するために、動作点シンタックスを構文解析できる。
[0030] ソースデバイス12のビデオソース18は、ビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオを含むビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースを含み得る。さらなる代替として、ビデオソース18は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブビデオとコンピュータ生成ビデオとの組合せを生成し得る。場合によっては、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラ付き携帯電話またはビデオ電話を形成できる。但し、上述のように、本開示で説明する技法は、概してビデオコーディングに適用可能であり得、ワイヤレスおよび/またはワイヤード適用例に適用され得る。
[0031] 各場合において、キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成ビデオは、ビデオエンコーダ20によって符号化され得る。符号化ビデオデータは、ソースデバイス12の出力インターフェース22を介して宛先デバイス14に直接送信され得る。符号化ビデオデータは、さらに(または代替として)、復号および/または再生のための宛先デバイス14または他のデバイスによる後のアクセスのためにストレージデバイス上に記憶され得る。
[0032] リンク16は、ワイヤレスブロードキャストもしくはワイヤードネットワーク送信などの一時的媒体、またはハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、Blu−ray(登録商標)ディスク、または他のコンピュータ可読媒体などの記憶媒体(すなわち、非一時的記憶媒体)を含み得る。いくつかの例では、ネットワークサーバが、ソースデバイス12から符号化ビデオデータを受信し、例えば、ネットワーク送信を介して、その符号化ビデオデータを宛先デバイス14に与え得る。同様に、ディスクスタンピング設備などの媒体製造設備のコンピューティングデバイスは、ソースデバイス12から符号化ビデオデータを受信し、その符号化ビデオデータを含むディスクを生成し得る。従って、様々な例では、リンク16が、様々な形態の1つまたは複数のコンピュータ可読媒体を含むと理解され得る。リンク16は、ソースデバイス12から宛先デバイス14に符号化ビデオデータを動かすことが可能な任意のタイプの媒体またはデバイスを備え得る。一例で、リンク16は、ソースデバイス12が符号化ビデオデータを宛先デバイス14にリアルタイムで直接送信することを可能にするための通信媒体を備え得る。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス14に送信され得る。通信媒体は、無線周波数(RF)スペクトルあるいは1つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信媒体は、ソースデバイス12から宛先デバイス14への通信を可能にするために有用であり得るルータ、スイッチ、基地局、または任意の他の機器を含み得る。
[0033] 宛先デバイス14の入力インターフェース28は、コンピュータ可読媒体であり得るリンク16から情報を受信する。リンク16からの情報は、ビデオエンコーダ20によって定義され、またビデオデコーダ30によって使用される、ブロックおよび他のコード化ユニット、例えば、GOPの特性および/または処理を記述するシンタックス要素を含む、シンタックス情報を含み得る。ディスプレイデバイス32は、宛先デバイス14と一体化されるか、またはその外部にあり得る。ディスプレイデバイス32は、復号ビデオデータをユーザに対して表示し、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの、様々なディスプレイデバイスのいずれかを備え得る。
[0034] 代替的に、いくつかの例では、符号化データが、出力インターフェース22からストレージデバイス34に出力され得る。同様に、符号化データは、入力インターフェースによってストレージデバイス34からアクセスされ得る。ストレージデバイス34は、ハードドライブ、ブルーレイ(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、揮発性または不揮発性メモリ、あるいは符号化ビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる一例では、ストレージデバイス34が、ソースデバイス12によって生成された符号化ビデオを保持し得るファイルサーバまたは別の中間ストレージデバイスに対応し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介してストレージデバイス34から、記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶し、その符号化ビデオデータを宛先デバイス14に送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバは、(例えば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイス14は、インターネット接続を含む、任意の標準のデータ接続を介して符号化ビデオデータにアクセスし得る。これは、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適であるワイヤレスチャネル(例えば、Wi−Fi(登録商標)接続)、ワイヤード接続(例えば、DSL、ケーブルモデムなど)、または両方の組合せを含み得る。ストレージデバイス34からの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
[0035] 本開示の技法は、必ずしもワイヤレス適用例または設定に限定されるとは限らない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、ストリーミングビデオ送信(例えば、インターネットを介して)、ストレージ用デジタルビデオのデータ記憶媒体上への符号化、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例などの、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10が、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオテレフォニーなどの適用例をサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
[0036] ビデオエンコーダ20およびビデオデコーダ30は各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理回路、ソフトウェア、ハードウェア、ファームウェアのような、様々な好適なエンコーダまたはデコーダ回路のうちのいずれか、あるいはこれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、好適な非時間的コンピュータ可読媒体にこのソフトウェアのための複数の命令を記憶し、1つまたは複数のプロセッサを使用してこれら命令をハードウェアで実行し、本開示の技法を行い得る。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれもが該当のデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合され得る。ビデオエンコーダ20および/またはビデオデコーダ30を含むデバイスは、集積回路、マイクロプロセッサ、および/またはセルラー電話などのワイヤレス通信デバイスを備え得る。
[0037] ビデオエンコーダ20およびビデオデコーダ30は、現在開発中のHEVC規格などのビデオコーディング規格に従って動作し得、HEVCテストモデル(HM)に準拠し得る。「HEVC Working Draft 8」または「WD8」と呼ばれる近く公開のHEVC規格の草案は、文書JCTVC−J1003_d7、Brossら、「High efficiency video coding(HEVC) text specification draft 8」、ITU−T SG16 WP3およびISO/IEC JTC1/SC29/WG11のJoint Collaborative Team on Video Coding(JCT−VC)、第10回会議:ストックホルム、スウェーデン、2012年7月に記述される。HEVC規格のWorking Draft 8は、参照によりその全てが本明細書に組み込まれる。「HEVC Working Draft 10」または「WD10」と呼ばれるHEVC規格の別の最近のドラフトは、文書JCTVC−L1003v34、Brossら、「High efficiency video coding (HEVC) text specification draft 10(FDIS&Last Call)」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11のJoint Collaborative Team on Video Coding(JCT−VC)、第12回会合:ジュネーブ、スイス、2013年1月14〜23日に記述される。WD10は、参照によりその全てが本明細書に組み込まれる。
[0038] 代替的に、ビデオエンコーダ20およびビデオデコーダ30は、代替的にMPEG−4、Part 10、アドバンストビデオコーディング(AVC)と呼ばれるITU−T H.264規格などの、他のプロプライエタリ規格または業界規格、あるいはそのような規格の拡張に従って動作し得る。但し、本開示の技法は、いかなる特定のコーディング規格にも限定されない。ビデオコーディング規格の他の例には、MPEG−2およびITU−T H.263がある。いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30が、各々オーディオエンコーダおよびオーディオデコーダと統合され得、適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含んで、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理できる。適用可能な場合、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠できる。
[0039] 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規格に準拠するデバイスに適用できる。H.264規格は、ITU−T研究グループによる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への拡張に取り組み続けている。
[0040] JCT−VCは、HEVC規格の開発に取り組んでいる。HEVC規格化の取り組みは、HEVCテストモデル(HM)と呼ばれるビデオコーディングデバイスの発展的モデルに基づく。HMは、例えば、ITU−T H.264/AVCに従う既存のデバイスに対してビデオコーディングデバイスのいくつかの追加の能力を仮定する。例えば、H.264は9つのイントラ予測符号化モードを提供するが、HMは33個ものイントラ予測符号化モードを提供し得る。
[0041] 一般に、HMの作業モデルは、ビデオフレームまたはピクチャが、ルーマとクロマの両方のサンプルを含む一連のツリーブロックまたは最大コーディングユニット(LCU)に分割され得ることを記述する。ビットストリーム内のシンタックスデータが、ピクセルの数に関して最大コーディングユニットであるLCUのサイズを定義し得る。スライスは、コーディング順序でいくつかの連続するツリーブロックを含む。ビデオフレームまたはピクチャは、1つまたは複数のスライスに区分され得る。各ツリーブロックは、4分木に従って複数のコーディングユニット(CU)に分割され得る。一般に、4分木データ構造はCUごとに1つのノードを含み、ルートノードはツリーブロックに対応する。CUが4つのサブCUに分割された場合、CUに対応するノードは4つのリーフノードを含み、リーフノードの各々はサブCUのうちの1つに対応する。
[0042] 4分木データ構造の各ノードは、対応するCUのシンタックスデータを与え得る。例えば、4分木のノードは、そのノードに対応するCUがサブCUに分割されるかどうかを示す分割フラグを含み得る。CUのシンタックス要素は、再帰的に定義され得、CUがサブCUに分割されるかどうかに依存し得る。CUがさらに分割されない場合、そのCUはリーフCUと呼ばれる。本開示では、元のリーフCUの明示的分割が存在しない場合でも、リーフCUの4つのサブCUをリーフCUとも呼ぶ。例えば、16×16サイズのCUがさらに分割されない場合、この16×16CUが決して分割されなくても、4つの8×8サブCUをリーフCUとも呼ぶ。
[0043] CUは、CUがサイズ差異を有さないことを除いて、H.264規格のマクロブロックと同様の目的を有する。例えば、ツリーブロックは、4つの子ノード(サブCUとも呼ばれる)に分割され得、各子ノードは、今度は親ノードとなり、別の4つの子ノードに分割され得る。4分木のリーフノードと呼ばれる、最後の分割されていない子ノードは、リーフCUとも呼ばれるコーディングノードを備える。コーディングビットストリームに関連するシンタックスデータは、最大CU深さと呼ばれる、ツリーブロックが分割され得る最大回数を定義し得、コーディングノードの最小サイズも定義し得る。それに応じて、ビットストリームは最小コーディングユニット(SCU:smallest coding unit)をも定義し得る。本開示では、HEVCのコンテキストにおけるCU、PU、またはTU、あるいは他の規格のコンテキストにおける同様のデータ構造(例えば、H.264/AVCにおけるマクロブロックおよびそれのサブブロック)のいずれかを指すために「ブロック」という用語を使用する。
[0044] CUは、コーディングノードと、コーディングノードに関連する予測ユニット(PU:prediction unit)および変換ユニット(TU:transform unit)とを含む。CUのサイズは、コーディングノードのサイズに対応し、形状が方形でなければならない。CUのサイズは、8×8ピクセルから最大64×64以上のピクセルを有するツリーブロックのサイズまでに及び得る。各CUは、1つまたは複数のPUと、1つまたは複数のTUとを含み得る。CUに関連するシンタックスデータは、例えば、CUを1つまたは複数のPUに区分することを記述し得る。区分モードは、CUが、スキップモード符号化またはダイレクトモード符号化されるか、イントラ予測モード符号化されるか、あるいはインター予測モード符号化されるかによって異なり得る。PUは、形状が非方形になるように区分され得る。CUに関連するシンタックスデータは、例えば、4分木に従って、CUを1つまたは複数のTUに区分することも記述し得る。TUは、形状が正方形または非正方形(例えば、矩形)であり得る。
[0045] HEVC規格は、CUごとに異なり得るTUに従った変換を可能にする。TUは、一般に、区分されたLCUについて定義された所与のCU内のPUのサイズに基づいてサイズ決定されるが、常にそうであるとは限らない。TUは、一般にPUと同じサイズであるかまたはPUよりも小さい。いくつかの例では、CUに対応する残差サンプルが、「残差4分木」(RQT:residual quad tree)として知られる4分木構造を使用して、より小さいユニットに再分割され得る。RQTのリーフノードは変換ユニット(TU)と呼ばれることがある。TUに関連するピクセル差分値は、量子化され得る変換係数を生成するために変換され得る。
[0046] リーフCUは、1つまたは複数の予測ユニット(PU)を含むことができる。一般に、PUは、対応するCUの全部または一部に対応する空間的エリアを表し、そのPU用の参照サンプルを取り出すためのデータを含むことができる。その上、PUは、予測に関係するデータを含む。例えば、PUがイントラモード符号化されるとき、PUのデータは、PUに対応するTUのイントラ予測モードを記述するデータを含み得る、残差4分木(RQT)中に含まれ得る。別の例として、PUがインターモード符号化されるとき、PUは、PUのための1つまたは複数の動きベクトルを定義するデータを含み得る。PUの動きベクトルを定義するデータは、例えば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの解像度(例えば、1/4ピクセル精度もしくは1/8ピクセル精度)、動きベクトルが指す参照ピクチャ、および/または動きベクトルの参照ピクチャリスト(例えば、リスト0、リスト1、もしくはリストC)を記述し得る。
[0047] 1つまたは複数のPUを有するリーフCUはまた、1つまたは複数の変換ユニット(TU)を含み得る。変換ユニットは、上述したように、(TU4分木構造とも呼ばれる)RQTを使用して指定され得る。例えば、分割フラグは、リーフCUが4つの変換ユニットに分割されるかどうかを示し得る。次いで、各変換ユニットは、さらに、さらなるサブTUに分割され得る。TUがさらに分割されないとき、そのTUはリーフTUと呼ばれ得る。概して、イントラコーディングの場合、リーフCUに属する全てのリーフTUは同じイントラ予測モードを共有する。すなわち、概して、リーフCUの全てのTUの予測値を計算するために同じイントラ予測モードが適用される。イントラコーディングの場合、ビデオエンコーダは、イントラ予測モードを使用して各リーフTUの残差値を、TUに対応するCUの一部と元のブロックとの間の差分として計算し得る。TUは、必ずしもPUのサイズに制限されるとは限らない。従って、TUはPUよりも大きくまたは小さくなり得る。イントラコーディングの場合、PUは、同じCUについて対応するリーフTUとコロケートされ得る。いくつかの例では、リーフTUの最大サイズが、対応するリーフCUのサイズに対応し得る。
[0048] さらに、複数のリーフCUのTUはまた、残差4分木(RQT)と呼ばれる、該当の4分木データ構造に関連付けられ得る。すなわち、リーフCUは、リーフCUがどのようにTUに区分されるかを示す4分木を含み得る。TU4分木のルートノードは概してリーフCUに対応し、CU4分木のルートノードは概してツリーブロック(またはLCU)に対応する。分割されないRQTのTUはリーフTUと呼ばれる。概して、本開示では、特に明記しない限り、リーフCUおよびリーフTUに言及するためにそれぞれCUおよびTUという用語を使用する。
[0049] ビデオシーケンスは、一般に、一連のビデオフレームまたはピクチャを含む。ピクチャグループ(GOP)は、概して、ビデオピクチャのうちの一連の1つまたは複数を備える。GOPは、GOP中に含まれるいくつかのピクチャを記述するシンタックスデータを、GOPのヘッダ中、ピクチャのうちの1つまたは複数のヘッダ中、または他の場所に含み得る。ピクチャの各スライスは、該当するスライスの符号化モードを記述するスライスシンタックスデータを含み得る。ビデオエンコーダ20は、一般に、ビデオデータを符号化するために個々のビデオスライス内のビデオブロックに対して動作する。ビデオブロックは、CU内のコーディングノードに対応し得る。ビデオブロックは、サイズを固定することも変更することもでき、指定のコーディング規格に応じてサイズが異なることがある。
[0050] 一例として、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を指す。
[0051] 本開示では、「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に等しいとは限らない。
[0052] CUのPUを使用したイントラ予測コーディングまたはインター予測コーディングの後、ビデオエンコーダ20は、CUのTUのための残差データを計算し得る。PUは、(ピクセル領域とも呼ばれる)空間領域において予測ピクセルデータを生成する方法またはモードを記述するシンタックスデータを備え得、TUは、変換、例えば、残差ビデオデータへの離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換の適用後に、変換領域において係数を備え得る。残差データは、符号化されていないピクチャのピクセルと、PUに対応する予測値との間のピクセル差分に対応し得る。ビデオエンコーダ20は、CUのための残差データを含むTUを形成し、次いで、TUを変換して、CUの変換係数を生成し得る。
[0053] 変換係数を生成するための任意の変換の後に、ビデオエンコーダ20は、変換係数の量子化を行い得る。量子化は、概して、さらなる圧縮を提供する、係数を表すために使用されるデータの量をできるだけ低減するために変換係数を量子化するプロセスを指す。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。例えば、量子化中にnビット値がmビット値に切り捨てられ得、但し、nはmよりも大きい。
[0054] 量子化の後に、ビデオエンコーダは、変換係数を走査して、量子化変換係数を含む2次元行列から1次元ベクトルを生成し得る。走査は、より高いエネルギー(従ってより低い周波数)の係数をアレイの前方に配置し、より低いエネルギー(従ってより高い周波数)の係数をアレイの後方に配置するように設計され得る。いくつかの例では、ビデオエンコーダ20が、エントロピー符号化され得るシリアル化ベクトルを生成するために、量子化変換係数を走査するためにあらかじめ定義された走査順序を利用し得る。他の例では、ビデオエンコーダ20が適応走査を行い得る。量子化変換係数を走査して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が使用するための符号化ビデオデータに関連するシンタックス要素をエントロピー符号化し得る。
[0055] CABACを行うために、ビデオエンコーダ20は、送信されるべきシンボルに、コンテキストモデル内のコンテキストを割り当て得る。コンテキストは、例えば、シンボルの隣接値が非0であるか否かに関係し得る。CAVLCを行うために、ビデオエンコーダ20は、送信されるべきシンボルのための可変長コードを選択し得る。VLCにおけるコードワードは、比較的短いコードが優勢シンボルに対応し、より長いコードが劣勢シンボルに対応するように構成され得る。このようにして、VLCの使用は、例えば、送信されるべき各シンボルのために等長コードワードを使用するよりも、ビット節約を達成し得る。確率判断は、シンボルに割り当てられるコンテキストに基づき得る。
[0056] ビデオエンコーダ20は、さらに、ブロックベースのシンタックスデータ、フレームベースのシンタックスデータ、およびGOPベースのシンタックスデータなどのシンタックスデータを、例えば、フレームヘッダ、ブロックヘッダ、スライスヘッダ、またはGOPヘッダ中でビデオデコーダ30に送り得る。GOPシンタックスデータは、該当するGOP中のいくつかのフレームを記述し得、フレームシンタックスデータは、対応するフレームを符号化するために使用される符号化/予測モードを示し得る。
[0057] HEVCは、例えば広範なアプリケーション、ビットレート、解像度、品質、およびサービスに適合するなど、それらに対応するためのものであるという点で、一般的であるように設計されている。HEVCによって潜在的にサービスされるアプリケーションは、とりわけ、デジタルストレージ媒体、テレビ放送、およびリアルタイム通信を含む。HEVCを作成する最中に、一般的なアプリケーションからの様々要件が考慮され、必要なアルゴリズム要素が開発され、これらは単一のシンタックスに組み込まれている。従って、HEVCは、異なるアプリケーションの中のビデオデータ交換を容易にする。しかしながら、HEVCの全シンタックスの実装の実用性を考慮すると、シンタックスの限られた数のサブセットが「プロファイル」および「レベル」によっても規定される。
[0058] 「プロファイル」は、HEVCによって指定されたビットストリームシンタックス全体のサブセットとして定義される。所与のプロファイルのシンタックスによって課される限界内で、復号ピクチャの指定サイズなど、ビットストリーム内のシンタックス要素によってとられる値に応じて、エンコーダおよびデコーダのパフォーマンスの極めて大きい変動を必要とする可能性が依然としてある。多くの適用例において、現在、特定のプロファイル内でシンタックスの全ての仮定的使用を処理することが可能なデコーダを実装することは実用的でもなく、経済的でもない。
[0059] この問題に対処するために、各プロファイル内で「ティア」および「レベル」が指定され得る。ティアのレベルは、ビットストリーム内の複数のシンタックス要素の値に課された複数の制約条件の指定された組である。これら制約条件は、値に関する単純な制限であり得る。あるいは、これら制約条件は、値の演算の組合せ(例えば、ピクチャの幅×ピクチャの高さ×毎秒復号されるピクチャの数)に関する制約の形態をとり得る。下位ティアのために指定されたレベルは、上位ティアのために指定されたレベルよりも制約される。全てのプロファイルに関してレベルの同じ組が定義され、各レベルの定義のほとんどの態様が様々なプロファイルにわたって共通である。個々の実装形態は、指定された制約条件内で、各サポートされるプロファイルの異なるレベルをサポートし得る。異なるコンテキストでは、レベルが、スケーリングの前の変換係数の値である。プロファイルおよびレベルは、高効率ビデオコーディング(HEVC)Working Draft 8(WD8)の付属書類Aに詳細に記述される。
[0060] HEVC WD8に準拠するコード化ビデオコンテンツは、共通のシンタックスを使用する。完全なシンタックスのサブセットを実現するために、ビットストリーム中に後に生じるシンタックス要素の有無をシグナリングする、フラグ、パラメータ、および他のシンタックス要素が、ビットストリーム中に含まれる。
[0061] HEVC WD8は、TemporalId変数の特定の値を有するビデオコーディングレイヤ(VCL)ネットワークアブストラクションレイヤ(NAL)ユニットと、関連する非VCL NALユニットとからなる時間的スケーラブルビットストリームの時間的スケーラブルレイヤとしてサブレイヤを定義する。HEVC WD8は、特定のサブレイヤおよび下位のサブレイヤのNALユニットからなるビットストリームのサブセットとしてサブレイヤ表現をさらに定義する。
[0062] HEVC 8のサブクローズ10.1は、ビットストリームサブセットと、サブビットストリームを生成するための抽出プロセスとを記述する。サブクローズ10.1について以下に述べる。
10.1 サブビットストリーム抽出プロセス
これは、0〜6の範囲内の任意の値に等しいtIdTargetと、値0を含むtargetDecLayerIdSetとを有するこのサブクローズにおいて指定されるプロセスの出力に含まれる任意のサブビットストリームが、この勧告|国際規格に合致することになるビットストリームの適合の要件である。
注釈−適合ビットストリームは、nuh_reserved_zero_6bitsが0に等しく、TemporalIdが0に等しい1つまたは複数のコード化スライスのNALユニットを含む。このプロセスへの入力は、可変tIdTargetおよびリストtargetDecLayerIdSetである。
このプロセスの出力は、サブビットストリームである。このサブビットストリームは、targetDecLayerIdSet中の値のうちではなくtIdTargetまたはnuh_reserved_zero_6bitsよりも大きいTemporalIdを有する全てのNALユニットをビットストリームから除去することによって導出される。
[0063] 一般に、HEVC WD8は、レイヤ識別子およびビットストリームの動作点を識別する時間的サブレイヤ識別子の値に基づいてビットストリームからサブビットストリームを抽出することを記述する。
[0064] 動作点は、一般に、OpLayerIdSetとして示されるnuh_reserved_zero_6bits値と、OpTidとして示されるTemporalId値との組によって識別され、入力としてのOpTidおよびOpLayerIdSetを用いてHEVC WD8のサブクローズ10.1中に指定されたサブビットストリーム抽出プロセスの出力として導出された関連のビットストリームサブセットは、独立して復号可能である。簡単な動作点モードは、一般に、動作点ごとに、OpLayerIdSetがnuh_reserved_zero_6bitsの特定の値と、nuh_reserved_zero_6bitsの特定の値未満のnuh_reserved_zero_6bitsの他の全ての値を含み、これら値のみを含む動作点モードであると考えられる。
[0065] 以下の表1は、VPSのローバイトシーケンスペイロード(RBSP)シンタックスおよびセマンティックスの一例を示す。
[0066] 1に等しく設定されたシンタックス要素「vps_simple_op_mode_flag[i]」は、簡単な動作点モードがi番目のoperation_point_layer_ids()synax構造のために使用されることを指定する。0に等しく設定されたシンタックス要素「vps_simple_op_mode_flag[i]」は、簡単な動作点モードがi番目のoperation_point()synax構造のために使用されないことを指定する。
[0067] iがjに等しくない場合、シンタックス構造hrd_parameters(i、vps_max_sub_layers_minus1)およびhrd_parameters(j、vps_max_sub_layers_minus1)の任意の2つのインスタンスは、同じ内容を有さない可能性がある。
[0068] 以下の表2は、プロファイル、レイヤ、並びにレベルシンタックスおよびセマンティックスの一例を示す。
[0069] 1に等しく設定されるシンタックス要素「sub_layer_profile_present_flag[i]」は、ProfilePresentFlagが1に等しいとき、プロファイル情報が、iに等しいTemporalIdを有するサブレイヤの表現のためのprofile_tier_level()シンタックス構造に存在することを指定する。0に等しいsub_layer_profile_present_flag[i]は、プロファイル情報が、iに等しいTemporalIdを有するサブレイヤの表現のためのprofile_tier_level()シンタックス構造に存在しないことを指定する。存在しないとき、sub_layer_profile_present_flag[i]の値は、0に等しいと推測される。
[0070] 1に等しく設定されるシンタックス要素「sub_layer_level_present_flag[i]」は、レベル情報が、iに等しいTemporalIdを有するサブレイヤの表現のためのprofile_tier_level()シンタックス構造に存在することを指定する。0に等しいsub_layer_level_present_flag[i]は、レベル情報が、iに等しいTemporalIdを有するサブレイヤの表現のためのprofile_tier_level()シンタックス構造に存在しないことを指定する。
[0071] シンタックス要素「sub_layer_profile_idc[i]」および「sub_layer_level_idc[i]」は、それぞれgeneral_profile_idcおよびgeneral_level_idcと同じセマンティックスを有するが、iに等しいTemporalIdを有するサブレイヤの表現に適用される。
[0072] 以下の表3は、動作点シンタックスおよびセマンティックスの一例を示す。
[0073] operation_point(opIdx)シンタックス構造は、ビデオパラメータセットにおけるopIdx−th hrd_parameters()シンタックス構造が適用される動作点のOpLayerIdSetに含まれるnuh_reserved_zero_6bits値の組を指定する。
[0074] シンタックス要素「op_first_present_layer_id[opIdx]」は、vps_simple_op_mode_flag[opIdx]が0に等しく設定されるとき、ビデオパラメータセットにおけるopIdx−th hrd_parameters()シンタックス構造が適用される動作点のOpLayerIdSetに含まれるnuh_reserved_zero_6bitsの第1の(すなわち0番目の)値を指定する。「op_first_present_layer_id[opIdx]」は、vps_simple_op_mode_flag[opIdx]が1に等しいとき、ビデオパラメータセットにおけるopIdx−th hrd_parameters()シンタックス構造が適用される動作点のOpLayerIdSetに含まれるnuh_reserved_zero_6bitsの最大値を指定する。
[0075] シンタックス要素「op_num_layer_id_values_minus1[opIdx]」+1は、vps_simple_op_mode_flag[opIdx]が0に等しいとき、ビデオパラメータセットにおけるopIdx−th hrd_parameters()シンタックス構造が適用される動作点のOpLayerIdSetに含まれるnuh_reserved_zero_6bitsの数を指定する。op_num_layer_id_values_minus1[opIdx]は、63以下である。
[0076] シンタックス要素「op_layer_id_delta_minus1[opIdx][i]」+1は、vps_simple_op_mode_flag[opIdx]が0に等しいとき、ビデオパラメータセットにおけるopIdx−th hrd_parameters()シンタックス構造が適用される動作点のOpLayerIdSetに含まれるnuh_reserved_zero_6bitsのi番目の値とnuh_reserved_zero_6bitsの(i−1)番目の値との間の差を指定する。op_layer_id_delta_minus1[opIdx][i]の値は、両端値を含む0から63までの範囲内である。
[0077] 変数NumOpLayerIdsMinus1[opIdx]は、次のように導出される。
NumOpLayerIdsMinus1[0]は、0に等しいと推測される。
[0078] 変数OpLayerId[opIdx][i]は、iが両端値を含む0からNumOpLayerIdsMinus1[opIdx]までの範囲内である場合、次のように導出される。
OpLayerId[0][0]の値は、0に等しいと推測される。
[0079] iがjに等しくなく、iとjの両方が両端値を含む0からNumOpLayerIdsMinus1[opIdx]までの範囲内であるとき、OpLayerId[opIdx][i]の値は、OpLayerId[opIdx][j]に等しくない。
[0080] opIdx1がopIdx2に等しくない場合、任意の2組、OpLayerId[opIdx1]とOpLayerId[opIdx2]とは、nuh_reserved_zero_6bits値の同じ組を含まないである。
[0081] ビデオパラメータセットにおけるopIdx−th hrd_parameters()シンタックス構造が適用される動作点のOpLayerIdSetは、iが両端値を含む0からNumOpLayerIdsMinus1[opIdx]までの範囲内の場合、OpLayerId[opIdx][i]に等しいnuh_reserved_zero_6bits値を含み、これら値のみを含むように設定される。
[0082] 代替の動作点シンタックスおよびセマンティックスが、表4および以下に記述される。
[0083] operation_point(opIdx)シンタックス構造は、ビデオパラメータセットにおけるopIdx−th hrd_parameters()シンタックス構造が適用される動作点のOpLayerIdSetに含まれるnuh_reserved_zero_6bits値の組を指定する。
[0084] シンタックス要素「op_num_layer_id_values_minus1[opIdx]」+1は、ビデオパラメータセットにおけるopIdx−th hrd_parameters()シンタックス構造が適用される動作点のOpLayerIdSetに含まれるnuh_reserved_zero_6bitsの数を指定する。op_num_layer_id_values_minus1[opIdx]は、63以下である。存在しないとき、op_num_layer_id_values_minus1[opIdx]の値は、0に等しいと推測される。
[0085] この仕様に準拠するビットストリームにおいて、op_num_layer_id_values_minus1[opIdx]は、0に等しい。op_num_layer_id_values_minus1[opIdx]の値がこの仕様のこのバージョンで0に等しいことを必要とするが、復号器によって他の値がop_num_layer_id_values_minus1[opIdx]シンタックスに現れることができる。
[0086] シンタックス構造「op_layer_id[opIdx][i]」は、ビデオパラメータセットにおけるopIdx−th hrd_parameters()シンタックス構造が適用される動作点のOpLayerIdSetに含まれるnuh_reserved_zero_6bits値のi番目の値を指定する。
[0087] 変数NumOpLayerIdsMinus1[opIdx]は、次のように導出される。
NumOpLayerIdsMinus1[0]は、0に等しいと推測される。
[0088] 変数OpLayerId[opIdx][i]は、iが両端値を含む0からNumOpLayerIdsMinus1[opIdx]までの範囲内である場合、次のように導出される。
OpLayerId[0][0]の値は、0に等しいと推測される。
[0089] iがjに等しくなく、iとjの両方が両端値を含む0からNumOpLayerIdsMinus1[opIdx]までの範囲内であるとき、OpLayerId[opIdx][i]の値は、OpLayerId[opIdx][j]に等しくない。
[0090] opIdx1がopIdx2に等しくない場合、任意の2組、OpLayerId[opIdx1]とOpLayerId[opIdx2]とは、nuh_reserved_zero_6bits値の同じ組を含まない。
[0091] ビデオパラメータセットにおけるopIdx−th hrd_parameters()シンタックス構造が適用される動作点のOpLayerIdSetは、iが両端値を含む0からNumOpLayerIdsMinus1[opIdx]までの範囲内の場合、OpLayerId[opIdx][i]に等しいnuh_reserved_zero_6bits値を含み、これら値のみを含むように設定される。
[0092] JCTVC−K0204(参照により本明細書に組み込まれ、http://phenix.int−evry.fr/jct/doc_end_user/documents/11_Shanghai/wg11/JCTVC−K0204−v1.zipで入手可能である)は、以下のシンタックスおよびセマンティックスによって説明したように動作点の修正されたシグナリングを提供している。
[0093] 1に等しく設定されたシンタックス要素「layer_present_in_op_flag[opIdx][i]」は、レイヤiが動作点opIdxに存在することを指定し、0に等しく設定されたシンタックス要素「layer_present_in_op_flag[opIdx][i]」は、レイヤiが動作点opIdxに存在しないことを指定する。
[0094] 動作点のシグナリングのための既存の方法は、いくつかの潜在的な欠点を有し得る。例えば、動作点のシグナリングのための既存の方法は、HEVC WD8において指定されたように、ue(v)コーディングを使用してエントロピーコード化シンタックス要素を有する、またはビデオパラメータセット(VPS)においてシグナリングされる、max_num_layers_minus1よりも大きいnuh_reserved_zero_6bits値(すなわちレイヤID)のシグナリングをサポートしない。
[0095] 本開示は、これらの潜在的な欠点のうちのいくつかに潜在的に対処できる様々な技法を提案する。1つのそのような技法において、nuh_reserved_zero_6bits値の最大値(すなわち最大レイヤID値)が最初にシグナリングされ、次いで、フラグのリストが続き、フラグは各々、最大レイヤID値未満のレイヤIDの特定の値を有するレイヤが、ビデオパラメータセットにおけるopIdx−th hrd_parameters()シンタックス構造が適用される動作点のOpLayerIdSetに含まれるかどうかを指定する。別の技法では、M個のフラグのリストがシグナリングされ、フラグは各々、特定の可能なレイヤID値を有するレイヤがビデオパラメータセットにおけるopIdx−th hrd_parameters()シンタックス構造が適用される動作点のOpLayerIdSetに含まれるかどうかを指定する。Mの値は、任意のビットストリームにおける可能な異なるレイヤIDの合計数に等しい。例えば、Mは2Nに等しくてもよく、ここで、Nはnuh_reserved_zero_6bits(すなわちレイヤID)を表すために使用されるビットの数である。さらに別の技法では、nuh_reserved_zero_6bits値の最大値(すなわち最大レイヤID値)がシグナリングされる。簡単な動作点モードが使用されていない場合、フラグのリストがシグナリングされ、フラグは各々、最大レイヤID値未満のレイヤIDの特定の値を有するレイヤが、ビデオパラメータセットにおけるopIdx−th hrd_parameters()シンタックス構造が適用される動作点のOpLayerIdSetに含まれるかどうかを指定する。
[0096] 次に、上記の技法のいくつかの詳細な例が説明される。以下で説明する例は、一般に、HEVC WD8に従い、従って、以下で完全には説明しない態様は、HEVC WD8の場合と同じであると見なされ得る。
[0097] 第1の例のための動作点シンタックスおよびセマンティックスは、以下の表6に示される。
[0098] operation_point(opIdx)シンタックス構造は、ビデオパラメータセットにおけるopIdx−th hrd_parameters()シンタックス構造が適用される動作点のOpLayerIdSetに含まれるnuh_reserved_zero_6bits値の組を指定する。
[0099] シンタックス要素「op_max_layer_id[opIdx]」は、ビデオパラメータセットにおけるopIdx−th hrd_parameters()シンタックス構造が適用される動作点のOpLayerIdSetに含まれるnuh_reserved_zero_6bitsの最大値を指定する。表6は、動作点ごとにシグナリングされるシンタックス要素「op_max_layer_id[opIdx]」を示すが、これは、例えばシーケンスパラメータセットまたはVPSなど、符号化されたビットストリーム中の他の場所にもシグナリングされ得る。
[0100] 0に等しく設定されたシンタックス要素「op_layer_id_incuded_flag[opIdx][i]」は、iに等しいnuh_reserved_zero_6bitsの値がビデオパラメータセットにおけるopIdx−th hrd_parameters()シンタックス構造が適用される動作点のOpLayerIdSetに含まれないことを指定する。1に等しい「op_layer_id_incuded_flag[opIdx][i]」は、iに等しいnuh_reserved_zero_6bitsの値がビデオパラメータセットにおけるopIdx−th hrd_parameters()シンタックス構造が適用される動作点のOpLayerIdSetに含まれることを指定する。全てのop_layer_id_incuded_flag[opIdx][i]の合計は、iが両端値を含む0からop_max_layer_id[opIdx]−1までの場合、max_num_layers_minus1以下である。
[0101] 変数NumOpLayerIdsMinus1[opIdx]および変数OpLayerId[opIdx][i]は、iが両端値を含む0からNumOpLayerIdsMinus1[opIdx]までの範囲内である場合、次のように導出される。
[0102] NumOpLayerIdsMinus1[0]は、0に等しいと推測される。OpLayerId[0][0]の値は、0に等しいと推測される。
[0103] opIdx1がopIdx2に等しくない場合、任意の2組、OpLayerId[opIdx1]とOpLayerId[opIdx2]とは、nuh_reserved_zero_6bits値の同じ組を含まない。
[0104] ビデオパラメータセットにおけるopIdx−th hrd_parameters()シンタックス構造が適用される動作点のOpLayerIdSetは、iが両端値を含む0からNumOpLayerIdsMinus1[opIdx]までの範囲内の場合、OpLayerId[opIdx][i]に等しいnuh_reserved_zero_6bits値を含み、これら値のみを含むように設定される。
[0105] 上記の例に戻って参照すると、ビットストリームは、様々な時間的および空間的解像度の6つのストリームを含み、各サブストリームはレイヤIDを有すると仮定する。opIdxによって識別される動作点について、最大レイヤID値は、シンタックス要素「op_max_layer_id[opIdx]」の値として、ビットストリームにおいてシグナリングされ得る。この例では、op_max_layer_id[opIdx]は9に等しいように、最大レイヤID値が9であると仮定する。残りのレイヤID値は、9つのフラグを使用してシグナリングされ得、第1のフラグは、レイヤID値0が存在するかどうかを示し、第2のフラグは、レイヤID値1が存在するかどうかを示すなど、以下同様である。このように、レイヤID値2、5、および10をシグナリングするために、値10が最初にシグナリングされ得、次いでフラグ001001000のシーケンスが続き、ここで第3のビットの1は、レイヤID値2が存在することを示し、第6のビットの1は、レイヤID値5が存在することを示す。表6のシンタックスを使用して、フラグ001001000のシーケンスは、次のように取得される。i=0では、op_layer_id_included_flag[opIdx][i]のためのフラグの値が、0である。i=1では、op_layer_id_included_flag[opIdx][i]のためのフラグの値が、0である。i=3では、op_layer_id_included_flag[opIdx][i]のためのフラグの値が、0である。i=4では、op_layer_id_included_flag[opIdx][i]のためのフラグの値が、0である。i=5では、op_layer_id_included_flag[opIdx][i]のためのフラグの値が、1である。i=6では、op_layer_id_included_flag[opIdx][i]のためのフラグの値が、0である。i=7では、op_layer_id_included_flag[opIdx][i]のためのフラグの値が、0である。i=8では、op_layer_id_included_flag[opIdx][i]のためのフラグの値が、0である。i=9では、iの値がop_max_layer_id[opIdx]以上であり、これはまた9に等しい。従って、ビデオ復号器は、最後のフラグが受信されたと決定できる。
[0106] 第2の例の技法のための動作点シンタックスおよびセマンティックスは、以下の表7に示される。
[0107] operation_point(opIdx)シンタックス構造は、ビデオパラメータセットにおけるopIdx−th hrd_parameters()シンタックス構造が適用される動作点のOpLayerIdSetに含まれるnuh_reserved_zero_6bits値の組を指定する。
[0108] 0に等しく設定されたシンタックス要素「op_layer_id_incuded_flag[opIdx][i]」は、iに等しいnuh_reserved_zero_6bitsの値がビデオパラメータセットにおけるopIdx−th hrd_parameters()シンタックス構造が適用される動作点のOpLayerIdSetに含まれないことを指定する。1に等しい「op_layer_id_incuded_flag[opIdx][i]」は、iに等しいnuh_reserved_zero_6bitsの値がビデオパラメータセットにおけるopIdx−th hrd_parameters()シンタックス構造が適用される動作点のOpLayerIdSetに含まれることを指定する。全てのop_layer_id_incuded_flag[opIdx][i]の合計は、iが両端値を含む0から63までの場合、max_num_layers_minus1以下である。
[0109] 変数NumOpLayerIdsMinus1[opIdx]および変数OpLayerId[opIdx][i]は、iが両端値を含む0からNumOpLayerIdsMinus1[opIdx]までの範囲内である場合、次のように導出される。
[0110] NumOpLayerIdsMinus1[0]は、0に等しいと推測される。OpLayerId[0][0]の値は、0に等しいと推測される。
[0111] opIdx1がopIdx2に等しくない場合、任意の2組、OpLayerId[opIdx1]とOpLayerId[opIdx2]とは、nuh_reserved_zero_6bits値の同じ組を含まない。
[0112] ビデオパラメータセットにおけるopIdx−th hrd_parameters()シンタックス構造が適用される動作点のOpLayerIdSetは、iが両端値を含む0からNumOpLayerIdsMinus1[opIdx]までの範囲内の場合、OpLayerId[opIdx][i]に等しいnuh_reserved_zero_6bits値を含み、これら値のみを含むように設定される。
[0113] 第3の例のための動作点シンタックスおよびセマンティックスは、以下の表8に示される。この例では、表8に示すように、また、後述のように、VPS構文およびセマンティックスも変更される。
[0114] 1に等しく設定されたシンタックス要素「vps_simple_op_mode_flag[i]」は、簡単な動作点モードがi番目のoperation_point()synax構造のために使用されることを指定する。0に等しい「vps_simple_op_mode_flag[i]」は、簡単な動作点モードがi番目のoperation_point()synax構造のために使用されないことを指定する。
[0115] iがjに等しくない場合、シンタックス構造hrd_parameters(i、vps_max_sub_layers_minus1)およびhrd_parameters(j、vps_max_sub_layers_minus1)の任意の2つのインスタンスは、同じ内容を有さない。
[0116] 表9に示されるoperation_point(opIdx)シンタックス構造は、ビデオパラメータセットにおけるopIdx−th hrd_parameters()シンタックス構造が適用される動作点のOpLayerIdSetに含まれるnuh_reserved_zero_6bits値の組を指定する。
[0117] シンタックス要素「op_max_layer_id[opIdx]」は、ビデオパラメータセットにおけるopIdx−th hrd_parameters()シンタックス構造が適用される動作点のOpLayerIdSetに含まれるnuh_reserved_zero_6bitsの最大値を指定する。
[0118] 0に等しく設定されたシンタックス要素「op_layer_id_incuded_flag[opIdx][i]」は、vps_simple_op_mode_flag[opIdx]が0に等しいとき、iに等しいnuh_reserved_zero_6bitsの値がビデオパラメータセットにおけるopIdx−th hrd_parameters()シンタックス構造が適用される動作点のOpLayerIdSetに含まれないことを指定する。1に等しいop_layer_id_incuded_flag[opIdx][i]は、vps_simple_op_mode_flag[opIdx]が0に等しいとき、iに等しいnuh_reserved_zero_6bitsの値がビデオパラメータセットにおけるopIdx−th hrd_parameters()シンタックス構造が適用される動作点のOpLayerIdSetに含まれることを指定する。全てのop_layer_id_incuded_flag[opIdx][i]の合計は、iが両端値を含む0からop_max_layer_id[opIdx]−1までの場合、max_num_layers_minus1以下である。
[0119] 変数NumOpLayerIdsMinus1[opIdx]および変数OpLayerId[opIdx][i]は、iが両端値を含む0からNumOpLayerIdsMinus1[opIdx]までの範囲内である場合、次のように導出される。
[0120] NumOpLayerIdsMinus1[0]は、0に等しいと推測される。OpLayerId[0][0]の値は、0に等しいと推測される。
[0121] opIdx1がopIdx2に等しくない場合、任意の2組、OpLayerId[opIdx1]とOpLayerId[opIdx2]とは、nuh_reserved_zero_6bits値の同じ組を含まない。
[0122] ビデオパラメータセットにおけるopIdx−th hrd_parameters()シンタックス構造が適用される動作点のOpLayerIdSetは、iが両端値を含む0からNumOpLayerIdsMinus1[opIdx]までの範囲内の場合、OpLayerId[opIdx][i]に等しいnuh_reserved_zero_6bits値を含み、これら値のみを含むように設定される。
[0123] 図2は、本開示で説明する技法を実装し得るビデオエンコーダ20の一例を示すブロック図である。ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラコーディングおよびインターコーディングを行い得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオの空間的冗長性を低減または除去するために空間的予測に依拠する。インターコーディングは、ビデオシーケンスの隣接フレームまたはピクチャ内のビデオの時間的冗長性を低減または除去するために時間的予測に依拠する。イントラモード(Iモード)は、いくつかの空間ベースのコーディングモードのいずれかを指し得る。単方向予測(Pモード)または双方向予測(Bモード)などのインターモードは、いくつかの時間ベースのコーディングモードのいずれかを指し得る。
[0124] 図2に示されるように、ビデオエンコーダ20は、符号化されるべきビデオフレーム内の現在のビデオブロックを受信する。図2の例では、ビデオエンコーダ20が、モード選択ユニット40と、参照フレームメモリ64と、加算器50と、変換処理ユニット52と、量子化ユニット54と、エントロピー符号化ユニット56とを含む。モード選択ユニット40は、今度は、動き補償ユニット44と、動き推定ユニット42と、イントラ予測処理ユニット46と、区分ユニット48とを含む。ビデオブロックの復元のために、ビデオエンコーダ20はまた、逆量子化ユニット58と、逆変換処理ユニット60と、加算器62とを含む。復元されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタリングする、デブロッキングフィルタも含まれ得る。所望される場合、デブロッキングフィルタは一般に、加算器62の出力をフィルタリングすることになる。また、デブロッキングフィルタに加えて追加のフィルタ(ループ内またはループ後)が使用され得る。そのようなフィルタは、簡潔のために示されていないが、所望される場合、(ループ内フィルタとして)加算器50の出力をフィルタ処理し得る。
[0125] 符号化プロセス中に、ビデオエンコーダ20はコーディングされるべきビデオフレームまたはスライスを受信する。フレームまたはスライスは複数のビデオブロックに分割され得る。動き推定ユニット42および動き補償ユニット44は、時間的な予測を行うために、1つまたは複数の参照フレーム中の1つまたは複数のブロックに対する受信されたビデオブロックのインター予測コーディングを行う。イントラ予測処理ユニット46は代替的に、空間的な予測を行うために、コーディングされるべきブロックと同じフレームまたはスライス中の1つまたは複数の隣接ブロックに対して受信されたビデオブロックのイントラ予測コーディングを行い得る。ビデオエンコーダ20は、例えば、ビデオデータのブロックごとに適切なコーディングモードを選択するために、複数のコーディングパスを行い得る。
[0126] その上、区分ユニット48は、以前のコーディングパスにおける以前の区分方式の評価に基づいて、ビデオデータのブロックをサブブロックに区分し得る。例えば、区分ユニット48は、初めにフレームまたはスライスをLCUに区分し、レートひずみ分析(例えば、レートひずみ最適化)に基づいてLCUの各々をサブCUに区分し得る。モード選択ユニット40は、さらに、LCUをサブCUに区分することを示す4分木データ構造を生成し得る。4分木のリーフノードCUは、1つまたは複数のPUと、1つまたは複数のTUとを含み得る。
[0127] モード選択ユニット40は、例えば、誤差結果に基づいて、コーディングモード、すなわち、イントラまたはインターのうちの1つを選択でき、残差ブロックデータを生成するために、得られたイントラコーディングされたブロックまたはインターコーディングされたブロックを加算器50に与え、参照フレームとして使用するための符号化されたブロックを復元するために、得られたイントラコーディングされたブロックまたはインターコーディングされたブロックを加算器62に与える。モード選択ユニット40はまた、動きベクトル、イントラモードインジケータ、パーティション情報、および他のそのようなシンタックス情報などのシンタックス要素をエントロピー符号化ユニット56に与える。
[0128] 動き推定ユニット42と動き補償ユニット44とは、高度に統合され得るが、概念的な目的のために別々に示してある。動き推定ユニット42によって行われる動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、例えば、現在のフレーム(または他のコード化ユニット)内でコーディングされている現在のブロックに対する参照フレーム(または他のコード化ユニット)内の予測ブロックに対する現在のビデオフレームまたはピクチャ内のビデオブロックのPUの変位を示し得る。予測ブロックは、絶対値差分和(SAD)、2乗差分和(SSD)、または他の差分尺度によって決定され得るピクセル差分に関して、コーディングされるブロックに精密に一致することがわかるブロックである。いくつかの例では、ビデオエンコーダ20が、参照フレームメモリ64に記憶された参照ピクチャのサブ整数ピクセル位置の値を計算し得る。例えば、ビデオエンコーダ20は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置の値を補間し得る。従って、動き推定ユニット42は、フルピクセル位置と分数ピクセル位置とに対する動き探索を行い、分数ピクセル精度で動きベクトルを出力し得る。
[0129] 動き推定ユニット42は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化スライス中のビデオブロックのPUについての動きベクトルを計算する。参照ピクチャは、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択され得、これら参照ピクチャリストの各々は、参照フレームメモリ64に記憶された1つまたは複数の参照ピクチャを識別する。動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56と動き補償ユニット44とに送る。
[0130] 動き補償ユニット44によって行われる動き補償は、動き推定ユニット42によって判断された動きベクトルに基づいて予測ブロックをフェッチまたは生成することに関与し得る。この場合も、いくつかの例では、動き推定ユニット42と動き補償ユニット44とが機能的に統合され得る。現在のビデオブロックのPUのための動きベクトルを受信すると、動き補償ユニット44は、参照ピクチャリストのうちの1つにおいて動きベクトルが指す予測ブロックの位置を特定し得る。加算器50は、以下で説明するように、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって、残差ビデオブロックを形成する。概して、動き推定ユニット42はルーマ成分に対して動き推定を行い、動き補償ユニット44は、クロマ成分とルーマ成分の両方のためにルーマ成分に基づいて計算された動きベクトルを使用する。モード選択ユニット40はまた、ビデオスライスのビデオブロックを復号する際にビデオデコーダ30が使用するためのビデオブロックとビデオスライスとに関連するシンタックス要素を生成し得る。
[0131] イントラ予測処理ユニット46は、上述したように、動き推定ユニット42と動き補償ユニット44とによって行われるインター予測の代替として、現在ブロックをイントラ予測し得る。特に、イントラ予測処理ユニット46は、現在ブロックを符号化するために使用すべきイントラ予測モードを判断し得る。いくつかの例では、イントラ予測ユニット処理46が、例えば、別個の符号化パス中に、様々なイントラ予測モードを使用して現在ブロックを符号化し得、イントラ予測ユニット処理46(または、いくつかの例では、モード選択ユニット40)が、テストされたモードから使用するのに適切なイントラ予測モードを選択し得る。
[0132] 例えば、イントラ予測処理ユニット46は、様々なテストされたイントラ予測モードのためのレートひずみ分析を使用してレートひずみ値を計算し、テストされたモードの中で最良のレートひずみ特性を有するイントラ予測モードを選択し得る。レートひずみ分析は、概して、符号化ブロックと、符号化ブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみ(または誤差)の量、並びに符号化ブロックを生成するために使用されるビットレート(すなわち、ビット数)を判断する。イントラ予測処理ユニット46は、どのイントラ予測モードがブロックについて最良のレートひずみ値を呈するかを判断するために、様々な符号化ブロックのひずみおよびレートから比率を計算し得る。
[0133] ブロック用のイントラ予測モードを選択した後、イントラ予測処理ユニット46は、ブロック用に選択されたイントラ予測モードを示す情報を、エントロピー符号化ユニット56に提供できる。エントロピー符号化ユニット56は、選択されたイントラ予測モードを示す情報を符号化できる。ビデオエンコーダ20は、(コードワードマッピングテーブルとも呼ばれる)複数のイントラ予測モードインデックステーブルおよび複数の修正されたイントラ予測モードインデックステーブルと、様々なブロック用の符号化コンテキストの定義と、最確イントラ予測モードの指示とを含む送信されたビットストリーム構成データの中に、コンテキストの各々について使用する、イントラ予測モードインデックステーブルと修正されたイントラ予測モードインデックステーブルとを含めることができる。
[0134] ビデオエンコーダ20は、コーディングされている元のビデオブロックから、モード選択ユニット40からの予測データを減算することによって、残差ビデオブロックを形成する。加算器50は、この減算動作を行う1つまたは複数の構成要素を表す。変換処理ユニット52は、離散コサイン変換(DCT)または概念的に同様の変換などの変換を残差ブロックに適用し、残差変換係数値を備えるビデオブロックを生成する。変換処理ユニット52は、DCTと概念的に同様である他の変換を行い得る。ウェーブレット変換、整数変換、サブバンド変換または他のタイプの変換も使用され得る。いずれの場合も、変換処理ユニット52は、変換を残差ブロックに適用し、残差変換係数のブロックを生成する。変換は、残差情報をピクセル値領域から周波数領域などの変換領域に変換し得る。変換処理ユニット52は、得られた変換係数を量子化ユニット54に送り得る。
[0135] 量子化ユニット54は、ビットレートをさらに低減するために変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって変更され得る。いくつかの例では、量子化ユニット54が、次いで、量子化変換係数を含む行列の走査を行い得る。代替的に、エントロピー符号化ユニット56が走査を行い得る。
[0136] 量子化の後、エントロピー符号化ユニット56は、量子化変換係数をエントロピーコーディングする。例えば、エントロピー符号化ユニット56は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディングまたは別のエントロピーコーディング技法を行い得る。コンテキストベースエントロピーコーディングの場合、コンテキストは隣接ブロックに基づき得る。エントロピー符号化ユニット56によるエントロピーコーディングの後、符号化ビットストリームは、別のデバイス(例えば、ビデオデコーダ30)に送信されるか、または後で送信するかもしくは取り出すためにアーカイブできる。
[0137] 逆量子化ユニット58および逆変換処理ユニット60は、それぞれ逆量子化および逆変換を適用して、例えば参照ブロックとして後で使用するために、ピクセル領域中で残差ブロックを再構成する。動き補償ユニット44は、残差ブロックを参照フレームメモリ64のフレームのうちの1つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット44はまた、再構成された残差ブロックに1つまたは複数の補間フィルタを適用して、動き推定において使用するサブ整数ピクセル値を計算し得る。加算器62は、再構成された残差ブロックを、動き補償ユニット44によって生成された動き補償予測ブロックに加算して、参照フレームメモリ64に記憶するための再構成されたビデオブロックを生成する。再構成されたビデオブロックは、後続のビデオフレーム中のブロックをインターコーディングするために動き推定ユニット42および動き補償ユニット44によって参照ブロックとして使用され得る。
[0138] 図3は、本開示で説明する技法を実装し得るビデオデコーダ30の一例を示すブロック図である。図3の例では、ビデオデコーダ30が、エントロピー復号ユニット70と、動き補償ユニット72と、イントラ予測処理ユニット74と、逆量子化ユニット76と、逆変換処理ユニット78と、参照フレームメモリ82と、加算器80とを含む。ビデオデコーダ30は、いくつかの例では、図2に示すように、ビデオエンコーダ20に関して説明した符号化パスとは概して逆の復号パスを行い得る。
[0139] 復号プロセス中に、ビデオデコーダ30は、ビデオエンコーダ20から、符号化ビデオスライスのビデオブロックと、関連するシンタックス要素とを表す符号化ビデオビットストリームを受信する。ビデオデコーダ30は、ネットワークエンティティ29から符号化ビデオビットストリームを受信できる。ネットワークエンティティ29は、例えば、サーバ、メディアアウェアネットワーク要素(MANE)、ビデオエディタ/スプライサ、または上述した技法のうちの1つもしくは複数を実装するように構成された他のそのようなデバイスであり得る。ネットワークエンティティ29は、本開示の技法を行うように構成された外部手段を含み得る。上述のように、本開示で説明する技法のいくつかは、ネットワークエンティティ29が符号化ビデオビットストリームをビデオデコーダ30に送信する前にネットワークエンティティ29によって実装され得る。いくつかのビデオ復号システムでは、ネットワークエンティティ29およびビデオデコーダ30が別個のデバイスの一部であり得るが、他の事例では、ネットワークエンティティ29に関して説明する機能が、ビデオデコーダ30を備える同じデバイスによって行われ得る。
[0140] 一例では、ネットワークエンティティ29が、スケーラブルであり、および/または多重レイヤまたはビューを含むビデオデータの元のビットストリームを記憶または受信できる。元のビットストリームでは、パラメータセット、例えばVPSが、上述した動作点シンタックスを含むことができる。動作点シンタックスは、ネットワークエンティティ29によって、どのレイヤが動作点に存在するかを識別するために使用され得る。元のビットストリームから、ネットワークエンティティ29は、VPSに含まれる動作点シンタックスに基づいて、および望ましいこと、またはビデオ復号器30によって要求されたことに基づいて、複数の動作点(すなわちサブビットストリーム)のうちの1つを選択する。選択された動作点に対応するサブビットストリームのために、ネットワークエンティティ29は、ビデオ復号器30に、そのビットストリームを備えるVLC NALユニットおよび非VCL NALユニットを転送でき、他のNALユニットを転送しない。
[0141] VPSにおいて識別される特定の動作点のために、ネットワークエンティティ29は、ビットストリームのための最大レイヤID値の表示を受信し、最大レイヤID値未満のレイヤID値を有するレイヤのための一連のフラグを受信できる。フラグの値に基づいて、ネットワークエンティティ29は、どのレイヤが動作点に含まれるかを決定できる。例えば、最大のレイヤIDの値がMである場合、レイヤMは動作点に含まれる。レイヤM−1では、ネットワークエンティティ29が、フラグを受信し、この場合、フラグの第1の値(例えば1または0)は、レイヤM−1が動作点に含まれることを示し、フラグの第2の値(例えば0または1)は、レイヤM−1が動作点に含まれないことを示す。レイヤM−2では、ネットワークエンティティ29が、第2のフラグを受信し、この場合、第2のフラグの第1の値(例えば1または0)は、レイヤM−2が動作点に含まれることを示し、第2のフラグの第2の値(例えば0または1)は、レイヤM−2が動作点に含まれないことを示す。ネットワークエンティティ29は、レイヤ0まで全ての残りのレイヤのためのフラグを同様に受信できる。従って、最大のレイヤIDの値がMである場合、ネットワークエンティティ29は、レイヤ0からM−1までの全てのフラグを受信できる。
[0142] ビデオ復号器30のエントロピー復号ユニット70は、量子化係数、動きベクトルまたはイントラ予測モードインジケータ、および上述した動作点シンタックスなど他のシンタックス要素を生成するために、ネットワークエンティティ29によって提供されるビットストリームをエントロピー復号する。エントロピー復号ユニット70は、動きベクトルと他のシンタックス要素とを動き補償ユニット72に転送する。ビデオ復号器30は、符号化されたビットストリームの異なる部分の異なるシンタックス要素を受信できる。例えば、いくつかのシンタックス要素は、VPSレベル、SPSレベル、またはAPSレベルで受信され、一方、他のシンタックス要素は、ビデオスライスレベルおよび/またはビデオブロックレベルで受信され得る。
[0143] ビデオスライスがイントラコード化(I)スライスとしてコーディングされるとき、イントラ予測処理ユニット74は、シグナリングされたイントラ予測モードと、現在フレームまたはピクチャの、前に復号されたブロックからのデータとに基づいて、現在ビデオスライスのビデオブロックのための予測データを生成し得る。ビデオフレームがインターコーディングされた(すなわち、B、PまたはGPB)スライスとしてコーディングされるとき、動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルと他のシンタックス要素とに基づいて、現在のビデオスライスのビデオブロックのための予測ブロックを生成する。予測ブロックは、参照ピクチャリストの1つの中の参照ピクチャの1つから生成され得る。ビデオデコーダ30は、参照フレームメモリ82に記憶された参照ピクチャに基づいて、デフォルトの構成技法を使用して、参照フレームリスト、すなわち、リスト0およびリスト1を構成し得る。
[0144] 動き補償ユニット72は、動きベクトルと他のシンタックス要素とを解析することによって現在ビデオスライスのビデオブロックについての予測情報を判断し、予測情報を使用して、復号されている現在ビデオブロックのための予測ブロックを生成する。例えば、動き補償ユニット72は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(例えば、イントラまたはインター予測)と、インター予測スライスタイプ(例えば、BスライスまたはPスライス)と、スライスの参照ピクチャリストのうちの1つまたは複数についての構成情報と、スライスの各インター符号化ビデオブロックについての動きベクトルと、スライスの各インターコーディングビデオブロックについてのインター予測ステータスと、現在ビデオスライス中のビデオブロックを復号するための他の情報とを判断するために、受信されたシンタックス要素のいくつかを使用する。
[0145] 動き補償ユニット72はまた、補間フィルタに基づいて補間を行い得る。動き補償ユニット72は、ビデオブロックの符号化中にビデオエンコーダ20によって使用された補間フィルタを使用して、参照ブロックのサブ整数ピクセルの補間値を計算し得る。この場合、動き補償ユニット72は、受信されたシンタックス要素からビデオエンコーダ20によって使用された補間フィルタを判断し、その補間フィルタを使用して予測ブロックを生成し得る。
[0146] 逆量子化ユニット76は、ビットストリーム中で与えられ、エントロピー復号ユニット70によって復号された量子化変換係数を逆量子化(inverse quantize)、すなわち、逆量子化(de-quantize)する。逆量子化プロセスは、ビデオスライス中の各ビデオブロックについてビデオデコーダ30によって計算される量子化パラメータQPYを使用して量子化の程度を判断し、同様に、適用すべき逆量子化の程度を判断することを含み得る。逆変換処理ユニット78は、逆変換、例えば、逆DCT、逆整数変換、または概念的に同様の逆変換処理を変換係数に適用して、ピクセル領域において残差ブロックを生成する。
[0147] 動き補償ユニット72が、動きベクトルと他のシンタックス要素とに基づいて現在ビデオブロックのための予測ブロックを生成した後、ビデオデコーダ30は、逆変換処理ユニット78からの残差ブロックを動き補償ユニット72によって生成された対応する予測ブロックと加算することによって、復号されたビデオブロックを形成する。加算器90は、この加算動作を行う1つまたは複数の構成要素を表す。所望される場合、ブロッキネスアーティファクトを除去するために、復号ブロックをフィルタ処理するためにデブロッキングフィルタも適用され得る。ピクセル遷移を平滑化するか、またはさもなければビデオ品質を改善するために、(コーディングループ内またはコーディングループ後の)他のループフィルタも使用され得る。所与のフレームまたはピクチャの復号されたビデオブロックは、次いで、その後の動き補償のために使用される参照ピクチャを記憶する参照フレームメモリ82に記憶される。参照フレームメモリ82はまた、図1のディスプレイデバイス32などのディスプレイデバイス上での後の表示のために、復号されたビデオを記憶する。
[0148] 図4は、ネットワーク100の一部を形成するデバイスの例示的な組を示すブロック図である。この例では、ネットワーク100が、ルーティングデバイス104A、104B(ルーティングデバイス104)とトランスコーディングデバイス106とを含む。ルーティングデバイス104およびトランスコーディングデバイス106は、ネットワーク100の一部を形成し得る少数のデバイスを表すことが意図される。スイッチ、ハブ、ゲートウェイ、ファイアウォール、ブリッジ、および他のそのようなデバイスなどの他のネットワークデバイスも、ネットワーク100内に含まれ得る。さらに、サーバデバイス102とクライアントデバイス108との間にネットワーク経路に沿って追加のネットワークデバイスが提供され得る。いくつかの例では、サーバデバイス102がソースデバイス12(図1)に対応し得るが、クライアントデバイス108は宛先デバイス14(図1)に対応し得る。
[0149] 一般に、ルーティングデバイス104は、ネットワーク100を介してネットワークデータを交換するための1つまたは複数のルーティングプロトコルを実装する。いくつかの例では、ルーティングデバイス104が、プロキシまたはキャッシュ動作を行うように構成され得る。従って、一部の例では、ルーティングデバイス104がプロキシデバイスと呼ばれ得る。概して、ルーティングデバイス104は、ネットワーク100を介したルートを発見するためにルーティングプロトコルを実行する。そのようなルーティングプロトコルを実行することによって、ルーティングデバイス104Bは、それ自体からルーティングデバイス104Aを介してサーバデバイス102へ至るネットワークルートを発見できる。
[0150] ルーティングデバイス104およびトランスコーディングデバイス106は、本開示で説明する技法を実施できるデバイスの例である。例えば、サーバデバイス102からクライアントデバイス108までのルーティングビデオデータの一部として、ルーティングデバイス104および/またはトランスコーディングデバイス106は、動作点シンタックスを含むVPSシンタックスを受信できる。動作点シンタックスは、例えば、ビットストリームのための最大レイヤID値を含む。ルーティングデバイス104およびトランスコーディングデバイス106は、さらに、動作点シンタックスにおいて、最大レイヤID値未満のレイヤIDを有するレイヤのための1つまたは複数のフラグを受信できる。最大レイヤID値およびフラグに基づいて、ルーティングデバイス104およびトランスコーディングデバイス106は、動作点に含まれるレイヤを決定でき、従って、動作点のサブビットストリームを備えるNALユニットを識別できる。
[0151] 図5は、本開示の技法によるビデオデータを符号化する例示的な方法を示す。図5の技法について、ビデオ符号器20など、ビデオ符号器に関して説明する。ビデオ符号器20は、符号化されたビデオデータのビットストリームにおいて、ビットストリームのための最大レイヤID値の表示を生成できる(152)。ビデオ符号器20は、最大レイヤID値未満のレイヤID値を有する第1のレイヤのためのフラグも生成し得る(154)。最大レイヤIDおよびフラグの表示は、例えば、VPSに含まれる動作点シンタックスの一部とすることができる。
[0152] 図6は、本開示の技法によるビデオデータを処理する例示的な方法を示す。図6の技法は、図1および図3のビデオ復号器30などのビデオ復号器に対応し得る、または、例えば図1のネットワークデバイス13、図3のネットワークエンティティ29、または図4のルーティングデバイス104またはトランスコーディングデバイス106など、ネットワークデバイスまたはネットワークエンティティに対応し得る、ビデオ処理デバイスを参照しながら説明する。ビデオ処理デバイスは、符号化されたビデオデータのビットストリームにおいて、ビットストリームのための最大レイヤID値の表示を受信できる(162)。ビデオ処理デバイスは、最大レイヤID値未満のレイヤID値を有する第1のレイヤのためのフラグも受信し得る(164)。フラグの値に基づいて、ビデオ処理デバイスは、フラグの値に基づいて、第1のレイヤが動作点に含まれるかどうかを決定できる(166)。
[0153] 例によっては、本明細書で説明された技法のうちいずれかの、いくつかの行為またはイベントは、異なるシーケンスで行われる可能性があり、追加され、統合され、または完全に除外され得る(例えば、全ての説明された行為またはイベントが、本技法の実施のために必要であるとは限らない)ことを認識されたい。さらに、いくつかの例では、行為またはイベントが、連続的にではなく、同時に、例えば、マルチスレッド処理、割込み処理、または複数のプロセッサを通じて行われ得る。
[0154] 1つまたは複数の例では、説明された機能が、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、例えば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含むデータ記憶媒体または通信媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形コンピュータ可読記憶媒体、あるいは(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明した技法の実装のための複数の命令、コードおよび/またはデータ構造を取り出すために1つまたは複数のコンピュータあるいは1つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
[0155] 限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは複数の命令または複数のデータ構造の形式で所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。例えば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。但し、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。
[0156] 複数の命令は、1つまたは複数のデジタル信号プロセッサ(DSP)などの1つまたは複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、あるいは他の等価な集積回路またはディスクリート論理回路によって実行され得る。従って、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書で説明する技法の実装に好適な他の構造のいずれかを指す。さらに、いくつかの態様では、本明細書で説明した機能が、符号化および復号のために構成された専用のハードウェアおよび/またはソフトウェアモジュール内に与えられ得、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素中に十分に実装され得る。
[0157] 本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、またはICのセット(例えば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示する技法を行うように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明したが、これら構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上述したように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上述した1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作ハードウェアユニットの集合によって与えられ得る。
[0158] 様々な例について説明してきた。これらおよび他の例は以下の特許請求の範囲内に入る。