(57)【特許請求の範囲】
【請求項１】
ビデオデータを符号化するための方法であって、前記方法は、
ピクチャーを複数のピクチャーパーティションに分割することと、ここで、前記ピクチャーは複数のツリーブロックを有し、前記ピクチャーパーティションは前記ピクチャーの前記ツリーブロックのオーバーラップしないサブセットに関連付けられる、
前記ピクチャーのスライスに関連付けられた前記ツリーブロックの符号化表現を含むコード化スライスネットワークアブストラクションレイヤ（ＮＡＬ）ユニットを生成することと、ここで、前記ツリーブロックの前記符号化表現は、前記コード化スライスＮＡＬユニット内で前記ツリーブロックが属する前記ピクチャーパーティションに従って、セグメントにグループ化され、
ここにおいて、前記セグメントのそれぞれがバイト境界上で開始するように前記セグメントのうちの１つまたは複数がパディングされ、
前記セグメントは、所与のセグメントを含み、
前記コード化スライスＮＡＬユニットを生成することは、コーディング順序の次のツリーブロックが、前記スライス内にあり、前記所与のセグメントに関連付けられるピクチャーパーティションとは異なるピクチャーパーティションに関連付けられる場合に、前記所与のセグメントにビットを付加するパディング演算を実行することを含む、
を含む、方法。
【請求項２】
前記コード化スライスＮＡＬユニットを生成することは、前記セグメントのうちの１つまたは複数のためのエントリーポイントを示すスライスヘッダを生成することを含む、請求項１に記載の方法。
【請求項３】
前記セグメントのための前記エントリーポイントは、前記セグメントのバイトオフセットを示す、請求項２に記載の方法。
【請求項４】
前記ピクチャーパーティションは、タイルまたはウェイブフロント並列処理（ＷＰＰ）ウェイブである、請求項１に記載の方法。
【請求項５】
前記ピクチャーに関連付けられたパラメータセットを生成することをさらに含み、前記パラメータセットは、第１の値を有するフラグを含み、前記第１の値は、前記セグメントのそれぞれがバイト境界において開始するように前記セグメントのうちの前記１つまたは複数がパディングされることを示し、
前記フラグが第２の値を有するとき、前記セグメントはバイト境界において開始することも開始しないこともある、請求項１に記載の方法。
【請求項６】
前記ピクチャーパーティションは、タイルであり、
前記コード化スライスＮＡＬユニットを生成することは、前記タイルが互いから独立していると判定した後にのみ、前記セグメントがバイト境界において開始することを保証するパディング演算を実行することを含む、請求項１に記載の方法。
【請求項７】
ビデオデータを復号する方法であって、前記方法は、
ピクチャーのスライスに関連付けられたツリーブロックの符号化表現を含むコード化スライスネットワークアブストラクションレイヤ（ＮＡＬ）ユニットを記憶することと、ここで、前記ピクチャーは複数のピクチャーパーティションに区分され、前記ツリーブロックの前記符号化表現は、前記ツリーブロックが属する前記ピクチャーパーティションに従って、セグメントにグループ化され、ここにおいて、
前記セグメントのそれぞれがバイト境界において開始するように前記セグメントのうちの１つまたは複数がパディングされ、
前記セグメントは、所与のセグメントを含み、
前記コード化スライスＮＡＬユニットは、コーディング順序の次のツリーブロックが、前記スライス内にあり、前記所与のセグメントに関連付けられるピクチャーパーティションとは異なるピクチャーパーティションに関連付けられる場合に、前記所与のセグメントに付加されるビットを含む、
前記ツリーブロックの前記符号化表現を復号することと、
を含む、方法。
【請求項８】
前記コード化スライスＮＡＬユニットは、前記セグメントのうちの１つまたは複数のためのエントリーポイントを示すスライスヘッダを含む、請求項７に記載の方法。
【請求項９】
前記セグメントのための前記エントリーポイントは、前記セグメントのバイトオフセットを示す、請求項８に記載の方法。
【請求項１０】
前記ピクチャーパーティションは、タイルまたはウェイブフロント並列処理（ＷＰＰ）ウェイブである、請求項７に記載の方法。
【請求項１１】
前記ピクチャーに関連付けられたパラメータセットを記憶することをさらに含み、前記パラメータセットは、第１の値を有するフラグを含み、前記第１の値は、前記セグメントのそれぞれがバイト境界において開始するように前記セグメントのうちの前記１つまたは複数がパディングされることを示し、
前記フラグが第２の値を有するとき、前記セグメントはバイト境界において開始することも開始しないこともある、請求項７に記載の方法。
【請求項１２】
前記ピクチャーパーティションは、タイルであり、
前記タイルが互いから独立しているとき、前記セグメントがバイト境界において開始するように前記セグメントのうちの１つまたは複数がパディングされる、請求項７に記載の方法。
【請求項１３】
前記ツリーブロックの前記符号化表現を復号することは、前記セグメントのうちの２つ以上の中の前記ツリーブロックの前記符号化表現を並列に復号することを含む、請求項７に記載の方法。
【請求項１４】
ビデオデータを符号化するビデオ符号化デバイスであって、前記ビデオ符号化デバイスは、下記を含む、
前記ビデオデータを記憶するように構成されたデータ記憶媒体と、
１つまたは複数のプロセッサであって、
前記ビデオデータのピクチャーを複数のピクチャーパーティションに分割することと、ここで、前記ピクチャーは複数のツリーブロックを有し、前記ピクチャーパーティションは前記ピクチャーの前記ツリーブロックのオーバーラップしないサブセットに関連付けられる、
前記ピクチャーのスライスに関連付けられた前記ツリーブロックの符号化表現を含むコード化スライスネットワークアブストラクションレイヤ（ＮＡＬ）ユニットを生成することと、ここで、前記ツリーブロックの前記符号化表現は、前記コード化スライスＮＡＬユニット内で前記ツリーブロックが属する前記ピクチャーパーティションに従って、セグメントにグループ化され、ここにおいて、
前記セグメントのそれぞれがバイト境界上で開始するように前記セグメントのうちの１つまたは複数がパディングされ、
前記セグメントは、所与のセグメントを含み、
前記１つまたは複数のプロセッサが、コーディング順序の次のツリーブロックが、前記スライス内にあり、前記所与のセグメントに関連付けられるピクチャーパーティションとは異なるピクチャーパーティションに関連付けられる場合に、前記所与のセグメントにビットを付加するパディング演算を実行するように構成される、
を行うように構成された前記１つまたは複数のプロセッサ。
【請求項１５】
前記１つまたは複数のプロセッサは、前記コード化スライスＮＡＬユニットが、前記セグメントのうちの１つまたは複数のためのエントリーポイントを示すスライスヘッダを含むように、前記コード化スライスＮＡＬユニットを生成するように構成された、請求項１４に記載のビデオ符号化デバイス。
【請求項１６】
前記セグメントのための前記エントリーポイントは、前記セグメントのバイトオフセットを示す、請求項１５に記載のビデオ符号化デバイス。
【請求項１７】
前記ピクチャーパーティションは、タイルまたはウェイブフロント並列処理（ＷＰＰ）ウェイブである、請求項１４に記載のビデオ符号化デバイス。
【請求項１８】
前記１つまたは複数のプロセッサは、前記ピクチャーに関連付けられたパラメータセットを生成するように構成され、前記パラメータセットは、第１の値を有するフラグを含み、前記第１の値は、前記セグメントのそれぞれがバイト境界において開始するように前記セグメントのうちの前記１つまたは複数がパディングされることを示し、
前記フラグが第２の値を有するとき、前記セグメントはバイト境界において開始することも開始しないこともある、請求項１４に記載のビデオ符号化デバイス。
【請求項１９】
前記ピクチャーパーティションは、タイルであり、
１つまたは複数のプロセッサは、前記タイルが互いから独立していると判定した後にのみ、前記セグメントがバイト境界において開始することを保証するパディング演算を実行するように構成された、請求項１４に記載のビデオ符号化デバイス。
【請求項２０】
前記ビデオ符号化デバイスは、モバイルコンピューティングデバイスである、請求項１４に記載のビデオ符号化デバイス。
【請求項２１】
ビデオデータを復号するビデオ復号デバイスであって、前記ビデオ復号デバイスは、下記を含む、
ピクチャーのスライスに関連付けられたツリーブロックの符号化表現を含むコード化スライスネットワークアブストラクションレイヤ（ＮＡＬ）ユニットを記憶するメモリであって、ここで、前記ピクチャーは複数のピクチャーパーティションに分割され、前記ツリーブロックの前記符号化表現は前記ツリーブロックが属する前記ピクチャーパーティションに従って、セグメントにグループ化され、ここにおいて、
前記セグメントのそれぞれがバイト境界において開始するように前記セグメントのうちの１つまたは複数がパディングされ、
前記セグメントは、所与のセグメントを含み、
前記コード化スライスＮＡＬユニットは、コーディング順序の次のツリーブロックが、前記スライス内にあり、前記所与のセグメントに関連付けられるピクチャーパーティションとは異なるピクチャーパーティションに関連付けられる場合に、前記所与のセグメントに付加されるビットを含む、
メモリと、
前記ツリーブロックの前記符号化表現を復号するように構成された１つまたは複数のプロセッサ。
【請求項２２】
前記コード化スライスＮＡＬユニットは、前記セグメントのうちの１つまたは複数のためのエントリーポイントを示すスライスヘッダを含む、請求項２１に記載のビデオ復号デバイス。
【請求項２３】
前記セグメントのための前記エントリーポイントは、前記セグメントのバイトオフセットを示す、請求項２２に記載のビデオ復号デバイス。
【請求項２４】
前記ピクチャーパーティションは、タイルまたはウェイブフロント並列処理（ＷＰＰ）ウェイブである、請求項２１に記載のビデオ復号デバイス。
【請求項２５】
前記メモリは、前記ピクチャーに関連付けられたパラメータセットを記憶し、前記パラメータセットは、第１の値を有するフラグを含み、前記第１の値は、前記セグメントのそれぞれがバイト境界において開始するように前記セグメントのうちの前記１つまたは複数がパディングされることを示し、
前記フラグが第２の値を有するとき、前記セグメントはバイト境界において開始することも開始しないこともある、請求項２１に記載のビデオ復号デバイス。
【請求項２６】
前記ビデオ復号デバイスは、モバイルコンピューティングデバイスである、請求項２１に記載のビデオ復号デバイス。
【請求項２７】
前記１つまたは複数のプロセッサが、前記セグメントのうちの２つ以上の中の前記ツリーブロックの前記符号化表現を並列に復号するように構成された、請求項２１に記載のビデオ復号デバイス。
【請求項２８】
１つまたは複数のプロセッサによって実行されたとき、
ピクチャーを複数のピクチャーパーティションに分割することと、ここで、前記ピクチャーは複数のツリーブロックを有し、前記ピクチャーパーティションは前記ピクチャーの前記ツリーブロックのオーバーラップしないサブセットに関連付けられる、
前記ピクチャーのスライスに関連付けられた前記ツリーブロックの符号化表現を含むコード化スライスネットワークアブストラクションレイヤ（ＮＡＬ）ユニットを生成することと、ここで、前記ツリーブロックの前記符号化表現は、前記コード化スライスＮＡＬユニット内で前記ツリーブロックが属する前記ピクチャーパーティションに従って、セグメントにグループ化され、ここにおいて、
前記セグメントのそれぞれがバイト境界上で開始するように前記セグメントのうちの１つまたは複数がパディングされ、
前記セグメントは、所与のセグメントを含み、
前記１つまたは複数のプロセッサは、コーディング順序の次のツリーブロックが、前記スライス内にあり、前記所与のセグメントに関連付けられるピクチャーパーティションとは異なるピクチャーパーティションに関連付けられる場合に、前記所与のセグメントにビットを付加するパディング演算を実行するように構成される、
を行うようにビデオ符号化デバイスを構成する、命令を記憶する非一時的なコンピュータ可読記憶媒体。
【請求項２９】
１つまたは複数のプロセッサによって実行されたとき、
ピクチャーのスライスに関連付けられたツリーブロックの符号化表現を含むコード化スライスネットワークアブストラクションレイヤ（ＮＡＬ）ユニットを記憶することと、ここで、前記ピクチャーは複数のピクチャーパーティションに分割され、前記ツリーブロックの前記符号化表現は前記ツリーブロックが属する前記ピクチャーパーティションに従って、セグメントにグループ化され、ここにおいて、
前記セグメントのそれぞれがバイト境界において開始するように前記セグメントのうちの１つまたは複数がパディングされ、
前記セグメントは、所与のセグメントを含み、
前記コード化スライスＮＡＬユニットは、コーディング順序の次のツリーブロックが、前記スライス内にあり、前記所与のセグメントに関連付けられるピクチャーパーティションとは異なるピクチャーパーティションに関連付けられる場合に、前記所与のセグメントに付加されたビットを含む、
前記ツリーブロックの前記符号化表現を復号することと、
を行うようにビデオ復号デバイスを構成する、命令を記憶する非一時的なコンピュータ可読記憶媒体。
【請求項３０】
ビデオデータを符号化するビデオ符号化デバイスであって、前記ビデオ符号化デバイスは、
ピクチャーを複数のピクチャーパーティションに分割するための手段と、ここで、前記ピクチャーは複数のツリーブロックを有し、前記ピクチャーパーティションは前記ピクチャーの前記ツリーブロックのオーバーラップしないサブセットに関連付けられる、
前記ピクチャーのスライスに関連付けられた前記ツリーブロックの符号化表現を含むコード化スライスネットワークアブストラクションレイヤ（ＮＡＬ）ユニットを生成するための手段と、ここで、前記ツリーブロックの前記符号化表現は、前記コード化スライスＮＡＬユニット内で前記ツリーブロックが属する前記ピクチャーパーティションに従って、セグメントにグループ化され、ここにおいて、
前記セグメントのそれぞれがバイト境界上で開始するように前記セグメントのうちの１つまたは複数がパディングされ、
前記セグメントは、所与のセグメントを含み、
前記コード化スライスＮＡＬユニットを生成することは、コーディング順序の次のツリーブロックが、前記スライス内にあり、前記所与のセグメントに関連付けられるピクチャーパーティションとは異なるピクチャーパーティションに関連付けられる場合に、前記所与のセグメントにビットを付加するパディング演算を実行することを含む、
を含む、ビデオ符号化デバイス。
【請求項３１】
ビデオデータを復号するビデオ復号デバイスであって、前記ビデオ復号デバイスは、下記を含む、
ピクチャーのスライスに関連付けられたツリーブロックの符号化表現を含むコード化スライスネットワークアブストラクションレイヤ（ＮＡＬ）ユニットを記憶するための手段であって、ここで、前記ピクチャーは複数のピクチャーパーティションに分割され、前記ツリーブロックの前記符号化表現は前記ツリーブロックが属する前記ピクチャーパーティションに従って、セグメントにグループ化され、ここにおいて、
前記セグメントのそれぞれがバイト境界において開始するように前記セグメントのうちの１つまたは複数がパディングされ、
前記セグメントは、所与のセグメントを含み、
前記コード化スライスＮＡＬユニットは、コーディング順序の次のツリーブロックが、前記スライス内にあり、前記所与のセグメントに関連付けられるピクチャーパーティションとは異なるピクチャーパーティションに関連付けられる場合に、前記所与のセグメントに付加されるビットを含む、
手段と、
前記ツリーブロックの前記符号化表現を復号するための手段。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、その内容全体が参照により本明細書に組み込まれる、２０１１年１１月８日に出願された米国仮出願第６１／５５７，２５９号の利益を主張する。本出願はまた、２０１１年１１月４日に出願された米国仮出願第６１／５５５，９３２号の利益を主張する。
【０００２】
本開示はビデオコーディング（video coding）（すなわち、ビデオデータの符号化(encoding)または復号(decoding)）に関する。
【背景技術】
【０００３】
デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末（ＰＤＡ）、ラップトップまたはデスクトップコンピュータ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラー電話または衛星無線電話、ビデオ遠隔会議デバイスなどを含む、広範囲にわたるデバイスに組み込まれ得る。デジタルビデオデバイスは、デジタルビデオ情報をより効率的に送信、受信および記憶するための、たとえばＭＰＥＧ−２、ＭＰＥＧ−４、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４，Ｐａｒｔ１０，Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＡＶＣ）によって定義された規格、現在開発中の高効率ビデオコーディング（ＨＥＶＣ：High Efficiency Video Coding）規格、およびそのような規格の拡張に記載されているビデオ圧縮技法などのような、ビデオ圧縮技法を実装する。
【０００４】
ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために空間的（イントラピクチャー）予測および／または時間的（インターピクチャー）予測を実行する。ブロックベースのビデオコーディングの場合、ビデオスライスが、ツリーブロック、コーディングユニット（ＣＵ）および／またはコーディングノードと呼ばれることもあるビデオブロックに区分（partitioned）され得る。ピクチャーのイントラコード化（Ｉ）スライス（intra-coded (I) slice）中のビデオブロックは、同じピクチャー中の隣接ブロック中の参照サンプルに対する空間的予測を使用して符号化される。ピクチャーのインターコード化（ＰまたはＢ）スライス（inter-coded (P or B) slice）中のビデオブロックは、同じピクチャー中の隣接ブロック中の参照サンプルに対する空間的予測、または他の参照ピクチャー中の参照サンプルに対する時間的予測を使用し得る。ピクチャーはフレームと呼ばれることがあり、参照ピクチャーは参照フレームと呼ばれることがある。
【発明の概要】
【０００５】
概して、本開示では、ビデオデータを符号化および復号するための技法について説明する。ビデオエンコーダは、ピクチャーを複数のピクチャーパーティションに分割（divide）し得る。ピクチャーパーティションは、ピクチャーのツリーブロックのオーバーラップしないサブセットを含む。例示的なタイプのピクチャーパーティションは、タイル（tiles）およびウェイブフロント並列処理（ＷＰＰ）ウェイブ（wavefront parallel processing waves）を含む。ビデオエンコーダは、ピクチャーのスライスに関連付けられたツリーブロックの符号化表現（encoded representations）を含むコード化スライスネットワークアブストラクションレイヤ（ＮＡＬ）ユニット（coded slice network abstraction layer unit）を生成し得る。ビデオエンコーダは、コード化ツリーブロック（coded treeblocks）が、それらツリーブロックが属するピクチャーパーティションによってコード化スライスＮＡＬユニット内でグループ化されるように、コード化スライスＮＡＬユニットを生成する。ビデオエンコーダは、セグメントのそれぞれがバイト境界上で開始するようにセグメントのうちの１つまたは複数をパディングし得る。ビデオデコーダは、コード化スライスＮＡＬユニットのコード化ツリーブロックを復号し得る。
【０００６】
一態様では、本開示では、ビデオデータを符号化するための方法について説明する。本方法は、ピクチャーを複数のピクチャーパーティションに分割することを含む。ピクチャーは、複数のツリーブロックを有する。ピクチャーパーティションは、ピクチャーのツリーブロックのオーバーラップしないサブセットに関連付けられる。本方法は、ピクチャーのスライスに関連付けられたツリーブロックの符号化表現を含むコード化スライスＮＡＬユニットを生成することをも含み、ここで、ツリーブロックの符号化表現は、コード化スライスＮＡＬユニット内で上記ピクチャーパーティションのうちの異なるピクチャーパーティションに関連付けられたセグメントにグループ化され、セグメントのそれぞれがバイト境界上で開始するように、セグメントのうちの１つまたは複数がパディングされる。
【０００７】
別の態様では、本開示では、ビデオデータを復号する方法について説明する。本方法は、ピクチャーのスライスに関連付けられたツリーブロックの符号化表現を含むコード化スライスＮＡＬユニットを記憶することを含む。ピクチャーは、複数のピクチャーパーティションに区分される。ツリーブロックの符号化表現は、上記ピクチャーパーティションのうちの異なるピクチャーパーティションに関連付けられたセグメントにグループ化される。セグメントのそれぞれがバイト境界において開始するように、セグメントのうちの１つまたは複数がパディングされる。本方法は、ツリーブロックの符号化表現を復号することをも含む。
【０００８】
別の態様では、本開示では、ビデオデータを符号化するビデオ符号化デバイスについて説明する。本ビデオ符号化デバイスは、ピクチャーを複数のピクチャーパーティションに分割するように構成された１つまたは複数のプロセッサを含む。ピクチャーは、複数のツリーブロックを有する。ピクチャーパーティションは、ピクチャーのツリーブロックのオーバーラップしないサブセットに関連付けられる。１つまたは複数のプロセッサは、ピクチャーのスライスに関連付けられたツリーブロックの符号化表現を含むコード化スライスＮＡＬユニットを生成するようにも構成される。ツリーブロックの符号化表現は、コード化スライスＮＡＬユニット内で上記ピクチャーパーティションのうちの異なるピクチャーパーティションに関連付けられたセグメントにグループ化される。セグメントのそれぞれがバイト境界上で開始するように、セグメントのうちの１つまたは複数がパディングされる。
【０００９】
別の態様では、本開示では、ビデオデータを復号するビデオ復号デバイスについて説明する。本ビデオ復号デバイスは、ピクチャーのスライスに関連付けられたツリーブロックの符号化表現を含むコード化スライスＮＡＬユニットを記憶するメモリを含む。ピクチャーは、複数のピクチャーパーティションに分割される。ツリーブロックの符号化表現は、上記ピクチャーパーティションのうちの異なるピクチャーパーティションに関連付けられたセグメントにグループ化される。セグメントのそれぞれがバイト境界において開始するように、セグメントのうちの１つまたは複数がパディングされる。本ビデオ復号デバイスは、ツリーブロックの符号化表現を復号するように構成された１つまたは複数のプロセッサをも含む。
【００１０】
別の態様では、本開示では、１つまたは複数のプロセッサによって実行されたとき、ピクチャーを複数のピクチャーパーティションに分割するようにビデオ符号化デバイスを構成する、命令を記憶する１つまたは複数のコンピュータ可読記憶媒体を含むコンピュータプログラム製品について説明する。ピクチャーは、複数のツリーブロックを有する。ピクチャーパーティションは、ピクチャーのツリーブロックのオーバーラップしないサブセットに関連付けられる。上記命令は、ピクチャーのスライスに関連付けられたツリーブロックの符号化表現を含むコード化スライスＮＡＬユニットを生成するようにもビデオ符号化デバイスを構成する。ツリーブロックの符号化表現は、コード化スライスＮＡＬユニット内で上記ピクチャーパーティションのうちの異なるピクチャーパーティションに関連付けられたセグメントにグループ化される。セグメントのそれぞれがバイト境界上で開始するように、セグメントのうちの１つまたは複数がパディングされる。
【００１１】
別の態様では、本開示では、１つまたは複数のプロセッサによって実行されたとき、ピクチャーのスライスに関連付けられたツリーブロックの符号化表現を含むコード化スライスＮＡＬユニットを記憶するようにビデオ復号デバイスを構成する、命令を記憶する１つまたは複数のコンピュータ可読記憶媒体を含むコンピュータプログラム製品について説明する。ピクチャーは、複数のピクチャーパーティションに分割される。ツリーブロックの符号化表現は、上記ピクチャーパーティションのうちの異なるピクチャーパーティションに関連付けられたセグメントにグループ化される。セグメントのそれぞれがバイト境界において開始するように、セグメントのうちの１つまたは複数がパディングされる。上記命令は、ツリーブロックの符号化表現を復号するようにもビデオ復号デバイスを構成する。
【００１２】
別の態様では、本開示では、ビデオデータを符号化するビデオ符号化デバイスについて説明する。本ビデオ符号化デバイスは、ピクチャーを複数のピクチャーパーティションに分割するための手段を含む。ピクチャーは、複数のツリーブロックを有する。ピクチャーパーティションは、ピクチャーのツリーブロックのオーバーラップしないサブセットに関連付けられる。本ビデオ符号化デバイスは、ピクチャーのスライスに関連付けられたツリーブロックの符号化表現を含むコード化スライスＮＡＬユニットを生成するための手段をも含む。ツリーブロックの符号化表現は、コード化スライスＮＡＬユニット内で上記ピクチャーパーティションのうちの異なるピクチャーパーティションに関連付けられたセグメントにグループ化される。セグメントのそれぞれがバイト境界上で開始するように、セグメントのうちの１つまたは複数がパディングされる。
【００１３】
別の態様では、本開示では、ビデオデータを復号するビデオ復号デバイスについて説明する。本ビデオ復号デバイスは、ピクチャーのスライスに関連付けられたツリーブロックの符号化表現を含むコード化スライスＮＡＬユニットを記憶するための手段を含む。ピクチャーは、複数のピクチャーパーティションに分割される。ツリーブロックの符号化表現は、上記ピクチャーパーティションのうちの異なるピクチャーパーティションに関連付けられたセグメントにグループ化される。セグメントのそれぞれがバイト境界において開始するように、セグメントのうちの１つまたは複数がパディングされる。本ビデオ復号デバイスは、ツリーブロックの符号化表現を復号するための手段を含む。
【００１４】
１つまたは複数の例の詳細を添付の図面および以下の説明に記載する。他の特徴、目的、および利点は、その説明および図面、ならびに特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１５】
【図１】図１は、本開示の技法を利用し得る例示的なビデオコーディングシステムを示すブロック図である。
【図２】図２は、本開示の技法を実装するように構成された例示的なビデオエンコーダを示すブロック図である。
【図３】図３は、本開示の技法を実装するように構成された例示的なビデオデコーダを示すブロック図である。
【図４】図４は、ピクチャーのスライスのためのスライスデータを生成するための例示的な動作を示すフローチャートである。
【図５】図５は、コード化スライスＮＡＬユニットを復号するための例示的な動作を示すフローチャートである。
【図６】図６は、ウェイブフロント並列処理を示す概念図である。
【図７】図７は、ピクチャーが複数のタイルに区分されるときの例示的なコーディング順序を示す概念図である。
【図８】図８は、例示的なコード化スライスＮＡＬユニットを示す概念図である。
【発明を実施するための形態】
【００１６】
ピクチャーは、複数のツリーブロックを含む。ツリーブロックは、ピクチャー内の２次元ビデオブロックに関連付けられる。ビデオエンコーダは、ピクチャーを複数のピクチャーパーティションに分割する。たとえば、ビデオエンコーダは、ピクチャーをタイルまたはウェイブフロント並列処理（ＷＰＰ）ウェイブに分割し得る。言い換えれば、本開示では、タイルまたはＷＰＰウェイブを総称的に指すために「ピクチャーパーティション」（picture partition）という用語を使用し得る。ピクチャーパーティションは、ピクチャーのツリーブロックのオーバーラップしないサブセットに関連付けられる。たとえば、ピクチャーの各ツリーブロックがピクチャーパーティションのうちの厳密に１つに関連付けられ得る。
【００１７】
ビデオエンコーダは、コード化スライスネットワークアブストラクションレイヤ（ＮＡＬ）ユニットを生成し得る。コード化スライスＮＡＬユニットは、ピクチャーのスライスに関連付けられた各ツリーブロックの符号化表現を含み得る。本開示では、ツリーブロックの符号化表現をコード化ツリーブロックと呼ぶことがある。コード化ツリーブロックは、ツリーブロックに関連付けられたビデオブロックを表すビットのシーケンスを含み得る。コード化ツリーブロック中のビットのシーケンスは、シンタックス要素のシーケンスを表し得る。
【００１８】
ビデオエンコーダは、コード化スライスＮＡＬユニット内のコード化ツリーブロックをセグメントにグループ化し得る。セグメントは、上記ピクチャーパーティションのうちの異なるピクチャーパーティションに関連付けられる。セグメントのそれぞれは、たとえば一連の１つまたは複数のコード化ツリーブロックおよび関連データを表すビットなどのような、連続する一連のビットであり得る。したがって、コード化スライスＮＡＬユニットは、第１のピクチャーパーティションに関連付けられた各コード化ツリーブロック、その後に続く第２のピクチャーパーティションに関連付けられた各コード化ツリーブロック、その後に続く第３のピクチャーパーティションに関連付けられた各コード化ツリーブロックなどを含み得る。
【００１９】
本開示の技法によれば、ビデオエンコーダは、セグメントのそれぞれがバイト境界上で開始するように、セグメントのうちの１つまたは複数をパディングし得る。ビデオエンコーダがセグメントをパディングするとき、ビデオエンコーダはセグメントにパディングビットを付加し得る。パディングビットは、いかなる意味論的意味（semantic meaning）をも有しないことがあるが、次のセグメントがバイト境界において開始することを保証するのに役立ち得る。このようにして、ビデオエンコーダは、並列処理目的でタイルまたはＷＰＰウェイブが１つのコード化スライスＮＡＬユニット中に含まれるとき、タイルまたはＷＰＰウェイブのバイト・アラインメント（byte alignment）を提供し得る。
【００２０】
ビデオデコーダは、コード化スライスＮＡＬユニットをバイトアドレス指定のメモリに記憶し得る。ビデオデコーダは、次いで、セグメントのうちの２つ以上を、並列に動作する異なる復号スレッド（decoding threads）に割り当て得る。各復号スレッドは、復号スレッドに割り当てられたセグメントのコード化ツリーブロックを復号する。セグメントのそれぞれがバイト境界において開始するので、ビデオデコーダは、復号スレッドにセグメントを割り当てるとき、復号スレッドにセグメントのメモリアドレスを与え得る。このようにして、セグメントのそれぞれがバイト境界において開始することを保証することにより、ビデオデコーダは、セグメントが非バイト境界位置において開始し得るときよりも単純な方式でセグメントを並列に復号することが可能になり得る。
【００２１】
これは、セグメントがバイト境界において開始することを保証しない従来のビデオエンコーダおよび従来のビデオデコーダとは対照をなし得る。セグメントがバイト境界において開始しないことがあるので、バイト単位のメモリアドレス指定を使用する従来のビデオデコーダは、セグメント中のコード化ツリーブロックを並列に復号することができないことがある。従来のビデオデコーダは、セグメント中のコード化ツリーブロックを並列に復号することを可能にするためにビット単位のメモリアドレス指定またはバイト単位＋ビット単位のアドレス指定を使用し得るが、実装および計算の複雑さの増加を伴う。
【００２２】
添付の図面は例を示している。添付の図面中の参照番号によって示される要素は、以下の説明における同様の参照番号によって示される要素に対応する。本開示では、序数語（たとえば、「第１の」、「第２の」、「第３の」など）で始まる名前を有する要素は、必ずしもそれらの要素が特定の順序を有することを暗示するとは限らない。むしろ、そのような序数語は、同じまたは同様のタイプの異なる要素を指すために使用されるにすぎない。さらに、以下の説明では、「現在ピクチャー（current picture）」は、「現在、符号化または復号されているピクチャー」を指すことがある。
【００２３】
図１は、本開示の技法を利用し得る例示的なビデオコーディングシステム１０を示すブロック図である。本明細書で使用し説明する「ビデオコーダ（video coder）」という用語は、ビデオエンコーダとビデオデコーダの両方を総称的に指す。本開示では、「ビデオコーディング（video coding）」または「コーディング（coding）」という用語は、ビデオ符号化（video encoding）およびビデオ復号（video decoding）を総称的に指すことがある。
【００２４】
図１に示すように、ビデオコーディングシステム１０は、ソースデバイス１２と宛先デバイス１４とを含む。ソースデバイス１２は、符号化ビデオデータを生成する。したがって、ソースデバイス１２は、ビデオ符号化デバイスと呼ばれることがある。宛先デバイス１４は、ソースデバイス１２によって生成された符号化ビデオデータを復号し得る。したがって、宛先デバイス１４は、ビデオ復号デバイスと呼ばれることがある。ソースデバイス１２および宛先デバイス１４はビデオコーディングデバイスの例であり得る。
【００２５】
ソースデバイス１２および宛先デバイス１４は、デスクトップコンピュータ、モバイルコンピューティングデバイス、ノートブック（たとえば、ラップトップ）コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどのような電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、車内コンピュータなどを含む、広範囲にわたるデバイスを含み得る。いくつかの例では、ソースデバイス１２および宛先デバイス１４は、ワイヤレス通信が可能であり得る。
【００２６】
宛先デバイス１４は、チャネル１６を介してソースデバイス１２から符号化ビデオデータを受信し得る。チャネル１６は、ソースデバイス１２から宛先デバイス１４に符号化ビデオデータを移動することが可能なタイプの媒体またはデバイスを含み得る。一例では、チャネル１６は、ソースデバイス１２が符号化ビデオデータをリアルタイムで宛先デバイス１４に直接送信することを可能にする通信媒体を含み得る。この例では、ソースデバイス１２は、ワイヤレス通信プロトコルなどのような通信規格に従って符号化ビデオデータを変調し得、変調されたビデオデータを宛先デバイス１４に送信し得る。通信媒体は、無線周波数（ＲＦ）スペクトルまたは１つまたは複数の物理伝送線路などのような、ワイヤレス通信媒体またはワイヤード通信媒体を含み得る。通信媒体は、たとえばローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなどのような、パケットベースネットワークの一部を形成し得る。通信媒体は、ソースデバイス１２から宛先デバイス１４への通信を容易にするルータ、スイッチ、基地局、または他の機器を含み得る。
【００２７】
別の例では、チャネル１６は、ソースデバイス１２によって生成された符号化ビデオデータを記憶する記憶媒体に対応し得る。この例では、宛先デバイス１４は、ディスクアクセスまたはカードアクセスを介して記憶媒体にアクセスし得る。記憶媒体は、たとえばＢｌｕ−ｒａｙ（登録商標）ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、フラッシュメモリ、または符号化ビデオデータを記憶するための他の好適なデジタル記憶媒体などのような、様々なローカルにアクセスされたデータ記憶媒体を含み得る。さらなる例では、チャネル１６は、ソースデバイス１２によって生成された符号化ビデオを記憶するファイルサーバまたは別の中間ストレージデバイスを含み得る。この例では、宛先デバイス１４は、ストリーミングまたはダウンロードを介して、ファイルサーバまたは別の中間ストレージデバイスに記憶された符号化ビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶することと、符号化ビデオデータを宛先デバイス１４に送信することとが可能なタイプのサーバであり得る。例示的なファイルサーバは、（たとえば、ウェブサイトのための）ウェブサーバ、ファイル転送プロトコル（ＦＴＰ）サーバ、ネットワーク接続ストレージ（ＮＡＳ）デバイス、およびローカルディスクドライブを含む。宛先デバイス１４は、インターネット接続を含む、標準のデータ接続を介して符号化ビデオデータにアクセスし得る。例示的なタイプのデータ接続は、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適である、ワイヤレスチャネル（たとえば、Ｗｉ−Ｆｉ（登録商標）接続）、ワイヤード接続（たとえば、ＤＳＬ、ケーブルモデムなど）、または両方の組み合せを含み得る。ファイルサーバからの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組み合せであり得る。
【００２８】
本開示の技法は、ワイヤレスのアプリケーションまたはセッティングに限定されない。本技法は、たとえば無線の（over-the-air）テレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、または他のアプリケーションなどのような、様々なマルチメディア・アプリケーションのいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、ビデオコーディングシステム１０は、たとえばビデオストリーミング、ビデオ再生、ビデオブロードキャスト、および／またはビデオテレフォニーなどのようなアプリケーションをサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
【００２９】
図１の例では、ソースデバイス１２は、ビデオソース１８と、ビデオエンコーダ２０と、出力インターフェース２２とを含む。場合によっては、出力インターフェース２２は、変調器／復調器（モデム）および／または送信機を含み得る。ソースデバイス１２において、ビデオソース１８は、たとえばビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオデータを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオデータを受信するためのビデオフィードインターフェース、および／またはビデオデータを生成するためのコンピュータグラフィックスシステムなどのようなソース、あるいはそのようなソースの組み合せを含み得る。
【００３０】
ビデオエンコーダ２０は、キャプチャされたビデオデータ、以前にキャプチャされたビデオデータ、またはコンピュータ生成されたビデオデータを符号化し得る。符号化ビデオデータは、ソースデバイス１２の出力インターフェース２２を介して宛先デバイス１４に直接送信され得る。符号化ビデオデータはまた、復号および／または再生のための宛先デバイス１４による後のアクセスのために記憶媒体またはファイルサーバ上に記憶され得る。
【００３１】
図１の例では、宛先デバイス１４は、入力インターフェース２８と、ビデオデコーダ３０と、ディスプレイデバイス３２とを含む。場合によっては、入力インターフェース２８は、受信機および／またはモデムを含み得る。宛先デバイス１４の入力インターフェース２８は、チャネル１６を介して符号化ビデオデータを受信する。符号化ビデオデータは、ビデオデータを表す、ビデオエンコーダ２０によって生成された様々なシンタックス要素を含み得る。そのようなシンタックス要素は、通信媒体上で送信されるか、記憶媒体上に記憶されるか、またはファイルサーバ上に記憶される、符号化ビデオデータとともに含まれ得る。
【００３２】
ディスプレイデバイス３２は、宛先デバイス１４と一体化され得るかまたはその外部にあり得る。いくつかの例では、宛先デバイス１４は、一体型ディスプレイデバイスを含み得、また、外部ディスプレイデバイスとインターフェースするように構成され得る。他の例では、宛先デバイス１４は、ディスプレイデバイスであり得る。一般に、ディスプレイデバイス３２は、復号ビデオデータをユーザに表示する。ディスプレイデバイス３２は、たとえば液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプのディスプレイデバイスなどのような、様々なディスプレイデバイスのいずれかを含み得る。
【００３３】
ビデオエンコーダ２０およびビデオデコーダ３０は、現在開発中の高効率ビデオコーディング（ＨＥＶＣ）規格などのような、ビデオ圧縮規格に従って動作し得、ＨＥＶＣテストモデル（ＨＭ）に準拠し得る。「ＨＥＶＣ  Ｗｏｒｋｉｎｇ  Ｄｒａｆｔ  ６」または「ＷＤ６」と呼ばれる、今度のＨＥＶＣ規格の最近のドラフトは、２０１２年５月１日現在、http://phenix.int-evry.fr/jct/doc_end_user/documents/8_San%20Jose/wg11/JCTVC-H1003-v22.zipからダウンロード可能である、ドキュメントＪＣＴＶＣ−Ｈ１００３、Ｂｒｏｓｓら、「High efficiency video coding (HEVC) text specification draft 6」、Ｊｏｉｎｔ  Ｃｏｌｌａｂｏｒａｔｉｖｅ  Ｔｅａｍ  ｏｎ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ  （ＪＣＴ−ＶＣ）  ｏｆ  ＩＴＵ−Ｔ  ＳＧ１６  ＷＰ３  ａｎｄ  ＩＳＯ／ＩＥＣ  ＪＴＣ１／ＳＣ２９／ＷＧ１１、８ｔｈ  Ｍｅｅｔｉｎｇ：  Ｓａｎ  Ｊｏｓｅ、Ｃａｌｉｆｏｒｎｉａ、ＵＳＡ、Ｆｅｂｒｕａｒｙ、２０１２に記載されており、その内容全体が参照により本明細書に組み込まれる。代わりに、ビデオエンコーダ２０およびビデオデコーダ３０は、タイルまたはウェイブフロント並列処理に類似するピクチャー区分技法が含まれるならば、たとえばＩＴＵ−Ｔ  Ｈ．２６４規格（代わりにＭＰＥＧ−４，Ｐａｒｔ１０，Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＡＶＣ）と呼ばれる）などのような、他のプロプライエタリ規格または業界規格、あるいはそのような規格の拡張に従って、動作し得る。しかしながら、本開示の技法は、いかなる特定のコーディング規格またはコーディング技法にも限定されない。ビデオ圧縮の規格および技法の他の例としては、タイルまたはウェイブフロント並列処理のようなピクチャー区分技法が含まれるとき、ＭＰＥＧ−２、ＩＴＵ−Ｔ  Ｈ．２６３、ならびにＶＰ８および関係するフォーマットなどのようなプロプライエタリまたはオープンソースの圧縮フォーマットがある。
【００３４】
図１の例には示されていないが、ビデオエンコーダ２０およびビデオデコーダ３０は、それぞれオーディオエンコーダおよびデコーダと統合され得、適切なＭＵＸ−ＤＥＭＵＸユニット、または他のハードウェアおよびソフトウェアを含んで、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理し得る。適用可能な場合、いくつかの例では、ＭＵＸ−ＤＥＭＵＸユニットはＩＴＵ  Ｈ．２２３マルチプレクサプロトコル、またはユーザデータグラムプロトコル（ＵＤＰ）などのような他のプロトコルに準拠し得る。
【００３５】
この場合も、図１は一例にすぎず、本開示の技法は、符号化デバイスと復号デバイスとの間のデータ通信を必ずしも含むとは限らないビデオコーディング・セッティング（たとえば、ビデオ符号化またはビデオ復号）に適用され得る。他の例では、データがローカルメモリから取り出されること、ネットワークを介してストリーミングされることなどが行われ得る。符号化デバイスがデータを符号化し、メモリに記憶し得、および／または復号デバイスがメモリからデータを取り出し、復号し得る。多くの例では、符号化および復号は、互いに通信しないが、メモリにデータを符号化し、および／またはメモリからデータを取り出し、復号するだけである、デバイスによって実行される。
【００３６】
ビデオエンコーダ２０およびビデオデコーダ３０は、それぞれ、１つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ハードウェアなどのような、様々な好適な回路のいずれか、あるいはそれらの任意の組み合せとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、好適な非一時的コンピュータ可読記憶媒体にソフトウェアの命令を記憶し得、１つまたは複数のプロセッサを使用してその命令をハードウェアで実行して、本開示の技法を実行し得る。ビデオエンコーダ２０およびビデオデコーダ３０のそれぞれは、１つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ／デコーダ（コーデック）の一部として統合され得る。
【００３７】
上記で手短に述べたように、ビデオエンコーダ２０は、ビデオデータを符号化する。ビデオデータは、１つまたは複数のピクチャーを含み得る。ピクチャーのそれぞれは、ビデオの一部を形成する静止画像である。いくつかの事例では、ピクチャーは、ビデオ「フレーム」（frame）またはビデオ「フィールド」（field）と呼ばれることがある。ビデオエンコーダ２０がビデオデータを符号化するとき、ビデオエンコーダ２０は、ビットストリームを生成し得る。ビットストリームは、ビデオデータのコード化表現（coded representation）を形成するビットのシーケンスを含み得る。ビットストリームは、コード化ピクチャー（coded pictures）と関連データとを含み得る。コード化ピクチャーは、ピクチャーのコード化表現である。
【００３８】
ビットストリームを生成するために、ビデオエンコーダ２０は、ビデオデータ中の各ピクチャーに対して符号化演算（encoding operations）を実行し得る。ビデオエンコーダ２０がピクチャーに対して符号化演算を実行するとき、ビデオエンコーダ２０は、一連のコード化ピクチャーと関連データとを生成し得る。関連データは、シーケンスパラメータセット、ピクチャーパラメータセット、適応パラメータセット、および他のシンタックス構造を含み得る。シーケンスパラメータセット（ＳＰＳ：sequence parameter set）は、ピクチャーの０個以上のシーケンスに適用可能なパラメータを含んでいることがある。ピクチャーのシーケンスは、Ｈ．２６４／ＡＶＣおよびＨＥＶＣの場合のように、コード化ビデオシーケンスと呼ばれることもある。ピクチャーパラメータセット（ＰＰＳ：picture parameter set）は、０個以上のピクチャーに適用可能なパラメータを含んでいることがある。適応パラメータセット（ＡＰＳ：adaptation parameter set）は、０個以上のピクチャーに適用可能なパラメータを含んでいることがある。ＡＰＳ内のパラメータは、ＰＰＳ内のパラメータよりも変化する可能性が高いパラメータであり得る。
【００３９】
コード化ピクチャーを生成するために、ビデオエンコーダ２０は、ピクチャーを等しいサイズのビデオブロックに区分し得る。ビデオブロックは、サンプルの２次元アレイであり得る。ビデオブロックのそれぞれは、ツリーブロックに関連付けられる。いくつかの事例では、ツリーブロックは、最大コーディングユニット（ＬＣＵ：largest coding unit）またはコーディングツリーブロックと呼ばれることがある。ＨＥＶＣのツリーブロックは、Ｈ．２６４／ＡＶＣなどのような、以前の規格のマクロブロックに広い意味で類似し得る。しかしながら、ツリーブロックは、必ずしも特定のサイズに限定されるとは限らず、１つまたは複数のコーディングユニット（ＣＵ：coding unit）を含み得る。ビデオエンコーダ２０は、４分木区分を使用して、ツリーブロックのビデオブロックを、ＣＵに関連付けられたビデオブロックに区分し得、したがって「ツリーブロック」（treeblocks）という名前がある。
【００４０】
いくつかの例では、ビデオエンコーダ２０は、ピクチャーを複数のスライスに区分し得る。スライスのそれぞれは、整数個の連続するコード化ツリーブロックを含み得る。いくつかの事例では、スライスのそれぞれは、整数個の連続するコード化ＣＵを含み得る。ピクチャーに対して符号化演算を実行することの一部として、ビデオエンコーダ２０は、ピクチャーの各スライスに対して符号化演算を実行し得る。ビデオエンコーダ２０がスライスに対して符号化演算を実行するとき、ビデオエンコーダ２０は、スライスに関連付けられた符号化データを生成し得る。スライスに関連付けられた符号化データは、「コード化スライス」（coded slice）と呼ばれることがある。
【００４１】
コード化スライスを生成するために、ビデオエンコーダ２０は、スライス中の各ツリーブロックに対して符号化演算を実行し得る。ビデオエンコーダ２０がツリーブロックに対して符号化演算を実行するとき、ビデオエンコーダ２０は、コード化ツリーブロックを生成し得る。コード化ツリーブロックは、ツリーブロックの符号化バージョンを表すデータを含み得る。
【００４２】
ビデオエンコーダ２０がコード化スライスを生成するとき、ビデオエンコーダ２０は、ラスタスキャン順序に従ってスライス中のツリーブロックに対して符号化演算を実行し得る（すなわち、そのツリーブロックを符号化し得る）。言い換えれば、ビデオエンコーダ２０は、スライス中のツリーブロックの一番上の行にわたって左から右に進み、次いでツリーブロックの次の下の行にわたって左から右に進み、以下同様に進む、順序で、ビデオエンコーダ２０がスライス中のツリーブロックのそれぞれを符号化するまで、スライスのツリーブロックを符号化し得る。
【００４３】
ラスタスキャン順序に従ってツリーブロックを符号化した結果として、所与のツリーブロックの上および左のツリーブロックは符号化されていることがあるが、所与のツリーブロックの下および右のツリーブロックはまだ符号化されていない。したがって、ビデオエンコーダ２０は、所与のツリーブロックを符号化するとき、所与のツリーブロックの上および左のツリーブロックを符号化することによって生成された情報にアクセスすることが可能であり得る。しかしながら、ビデオエンコーダ２０は、所与のツリーブロックを符号化するとき、所与のツリーブロックの下および右のツリーブロックを符号化することによって生成された情報にアクセスすることができないことがある。
【００４４】
コード化ツリーブロックを生成するために、ビデオエンコーダ２０は、ツリーブロックのビデオブロックに対して４分木区分を再帰的に実行して、ビデオブロックを徐々により小さいビデオブロックに分割し得る。より小さいビデオブロックのそれぞれは、異なるＣＵに関連付けられ得る。たとえば、ビデオエンコーダ２０は、ツリーブロックのビデオブロックを４つの等しいサイズのサブブロック（sub-blocks）に区分し、サブブロックのうちの１つまたは複数を、４つの等しいサイズのサブサブブロック（sub-sub-blocks）に区分し得、以下同様である。区分されたＣＵ（partitioned CU）は、それのビデオブロックが、他のＣＵに関連付けられたビデオブロックに区分された、ＣＵであり得る。区分されていないＣＵ（non-partitioned CU）は、それのビデオブロックが、他のＣＵに関連付けられたビデオブロックに区分されていない、ＣＵであり得る。
【００４５】
ビットストリーム中の１つまたは複数のシンタックス要素は、ビデオエンコーダ２０がツリーブロックのビデオブロックを区分し得る最大の回数を示し得る。ＣＵのビデオブロックは、形状が正方形であり得る。ＣＵのビデオブロックのサイズ（すなわち、ＣＵのサイズ）は、８×８ピクセルから、ツリーブロックのビデオブロックのサイズ（すなわち、ツリーブロックのサイズ）までにわたり、最大で６４×６４ピクセル以上であり得る。
【００４６】
ビデオエンコーダ２０は、ｚスキャン順序に従って、ツリーブロックの各ＣＵに対して符号化演算を実行し得る（すなわち、各ＣＵを符号化し得る）。言い換えれば、ビデオエンコーダ２０は、左上のＣＵと、右上のＣＵと、左下のＣＵと、次いで右下のＣＵとを、その順序で符号化し得る。ビデオエンコーダ２０が区分されたＣＵに対して符号化演算を実行するとき、ビデオエンコーダ２０は、ｚスキャン順序に従って、区分されたＣＵのビデオブロックのサブブロックに関連付けられたＣＵを符号化し得る。言い換えれば、ビデオエンコーダ２０は、左上のサブブロックに関連付けられたＣＵと、右上のサブブロックに関連付けられたＣＵと、左下のサブブロックに関連付けられたＣＵと、次いで右下のサブブロックに関連付けられたＣＵとを、その順序で符号化し得る。
【００４７】
ｚスキャン順序に従ってツリーブロックのＣＵを符号化した結果として、所与のＣＵの上、左上、右上、左、および左下のＣＵは符号化されていることがある。所与のＣＵの下および右のＣＵはまだ符号化されていない。したがって、ビデオエンコーダ２０は、所与のＣＵを符号化するとき、所与のＣＵに隣接するいくつかのＣＵを符号化することによって生成された情報にアクセスすることが可能であり得る。しかしながら、ビデオエンコーダ２０は、所与のＣＵを符号化するとき、所与のＣＵに隣接する他のＣＵを符号化することによって生成された情報にアクセスすることができないことがある。
【００４８】
ビデオエンコーダ２０が区分されていないＣＵを符号化するとき、ビデオエンコーダ２０は、ＣＵのために１つまたは複数の予測ユニット（ＰＵ：prediction unit）を生成し得る。ＣＵのＰＵのそれぞれは、ＣＵのビデオブロック内の異なるビデオブロックに関連付けられ得る。ビデオエンコーダ２０は、ＣＵの各ＰＵについて予測されたビデオブロックを生成し得る。ＰＵの予測されたビデオブロックは、サンプルのブロックであり得る。ビデオエンコーダ２０は、イントラ予測またはインター予測を使用して、ＰＵの予測されたビデオブロックを生成し得る。
【００４９】
ビデオエンコーダ２０がイントラ予測を使用してＰＵの予測されたビデオブロックを生成するとき、ビデオエンコーダ２０は、ＰＵに関連付けられたピクチャーの復号化サンプル（decoded samples）に基づいて、ＰＵの予測されたビデオブロックを生成し得る。ビデオエンコーダ２０がイントラ予測を使用してＣＵのＰＵの予測されたビデオブロックを生成する場合、ＣＵはイントラ予測されたＣＵである。ビデオエンコーダ２０がインター予測を使用してＰＵの予測されたビデオブロックを生成するとき、ビデオエンコーダ２０は、ＰＵに関連付けられたピクチャー以外の１つまたは複数のピクチャーの復号化サンプルに基づいて、ＰＵの予測されたビデオブロックを生成し得る。ビデオエンコーダ２０がインター予測を使用してＣＵのＰＵの予測されたビデオブロックを生成する場合、ＣＵはインター予測されたＣＵである。
【００５０】
さらに、ビデオエンコーダ２０がインター予測を使用してＰＵの予測されたビデオブロックを生成するとき、ビデオエンコーダ２０は、ＰＵの動き情報を生成し得る。ＰＵの動き情報は、ＰＵの１つまたは複数の参照ブロックを示し得る。ＰＵの各参照ブロックは、参照ピクチャー内のビデオブロックであり得る。参照ピクチャーは、ＰＵに関連付けられたピクチャー以外のピクチャーであり得る。いくつかの事例では、ＰＵの参照ブロックは、ＰＵの「参照サンプル」（reference sample）と呼ばれることもある。ビデオエンコーダ２０は、ＰＵの参照ブロックに基づいてＰＵの予測されたビデオブロックを生成し得る。
【００５１】
ビデオエンコーダ２０がＣＵの１つまたは複数のＰＵの予測されたビデオブロックを生成した後、ビデオエンコーダ２０は、ＣＵのＰＵの予測されたビデオブロックに基づいて、ＣＵの残差データ（residual data）を生成し得る。ＣＵの残差データは、ＣＵのＰＵの予測されたビデオブロック中のサンプルと、ＣＵの元のビデオブロック中のサンプルとの間の差（differences）を示し得る。
【００５２】
さらに、区分されていないＣＵに対して符号化演算を実行することの一部として、ビデオエンコーダ２０は、ＣＵの残差データに対して再帰的な４分木区分を実行して、ＣＵの残差データを、ＣＵの変換ユニット（ＴＵ：transform unit）に関連付けられた残差データの１つまたは複数のブロック（すなわち、残差ビデオブロック）に区分し得る。ＣＵの各ＴＵは、異なる残差ビデオブロックに関連付けられ得る。
【００５３】
ビデオコーダ２０は、ＴＵに関連付けられた残差ビデオブロックに１つまたは複数の変換を適用して、ＴＵに関連付けられた変換係数ブロック（すなわち、変換係数のブロック）を生成し得る。概念的に、変換係数ブロックは、変換係数の２次元（２Ｄ）行列であり得る。
【００５４】
変換係数ブロックを生成した後、ビデオエンコーダ２０は、変換係数ブロックに対して量子化プロセスを実行し得る。量子化は、一般に、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を実現する処理を指す。量子化プロセスは、変換係数の一部または全部に関連付けられたビット深度（bit depth）を低減し得る。たとえば、量子化中にｎビットの変換係数がｍビットの変換係数に切り捨てられることがあり、ここで、ｎはｍよりも大きい。
【００５５】
ビデオエンコーダ２０は、各ＣＵを量子化パラメータ（ＱＰ：quantization parameter）値に関連付け得る。ＣＵに関連付けられたＱＰ値は、ビデオエンコーダ２０が、ＣＵに関連付けられた変換係数ブロックをどのように量子化するかを決定し得る。ビデオエンコーダ２０は、ＣＵに関連付けられたＱＰ値を調整することによって、ＣＵに関連付けられた変換係数ブロックに適用される量子化のディグリー（degree of quantization）を調整し得る。
【００５６】
ビデオエンコーダ２０が変換係数ブロックを量子化した後、ビデオエンコーダ２０は、量子化された変換係数ブロック内で変換係数を表すシンタックス要素のセットを生成し得る。ビデオエンコーダ２０は、これらのシンタックス要素のうちのいくつかに、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）演算（Context Adaptive Binary Arithmetic Coding (CABAC) operations）などのような、エントロピー符号化演算を適用し得る。
【００５７】
ビデオエンコーダ２０によって生成されるビットストリームは、一連のネットワークアブストラクションレイヤ（ＮＡＬ）ユニットを含み得る。ＮＡＬユニットのそれぞれは、ＮＡＬユニット中のデータのタイプの指示と、データを含んでいるバイトとを含んでいるシンタックス構造であり得る。たとえば、ＮＡＬユニットは、シーケンスパラメータセット、ピクチャーパラメータセット、コード化スライス、１つまたは複数の補足エンハンスメント情報（ＳＥＩ：supplemental enhancement information）メッセージ、アクセスユニットデリミター（access unit delimiter）、フィラーデータ（filler data）、または別のタイプのデータを表すデータを含んでいることがある。ＮＡＬユニット中のデータは、様々なシンタックス構造を含み得る。
【００５８】
ビデオデコーダ３０は、ビデオエンコーダ２０によって生成されたビットストリームを受信し得る。ビットストリームは、ビデオエンコーダ２０によって符号化されたビデオデータのコード化表現を含み得る。ビデオデコーダ３０がビットストリームを受信するとき、ビデオデコーダ３０は、ビットストリームに対してパース演算（parsing operation）を実行し得る。ビデオデコーダ３０がパース演算を実行するとき、ビデオデコーダ３０は、ビットストリームからシンタックス要素を抽出し得る。ビデオデコーダ３０は、ビットストリームから抽出されたシンタックス要素に基づいて、ビデオデータのピクチャーを再構成し得る。シンタックス要素に基づいてビデオデータを再構成するためのプロセスは、一般に、シンタックス要素を生成するためにビデオエンコーダ２０によって実行されるプロセスの逆であり得る。
【００５９】
ビデオデコーダ３０がＣＵに関連付けられたシンタックス要素を抽出した後、ビデオデコーダ３０は、シンタックス要素に基づいて、ＣＵのＰＵの予測されたビデオブロックを生成し得る。加えて、ビデオデコーダ３０は、ＣＵのＴＵに関連付けられた変換係数ブロックを逆量子化し得る。ビデオデコーダ３０は、変換係数ブロックに対して逆変換を実行して、ＣＵのＴＵに関連付けられた残差ビデオブロックを再構成し得る。予測されたビデオブロックを生成し、残差ビデオブロックを再構成した後、ビデオデコーダ３０は、予測されたビデオブロックおよび残差ビデオブロックに基づいて、ＣＵのビデオブロックを再構成し得る。このようにして、ビデオデコーダ３０は、ビットストリーム中のシンタックス要素に基づいて、ＣＵのビデオブロックを再構成し得る。
【００６０】
ビデオエンコーダ２０は、現在ピクチャーを複数のピクチャーパーティションに分割し得る。ピクチャーパーティションは、現在ピクチャーのツリーブロックのオーバーラップしないサブセットに関連付けられ得る。ビデオエンコーダ２０は、様々な方法で現在ピクチャーを複数のピクチャーパーティションに分割し得る。以下で説明するように、ビデオエンコーダ２０は、現在ピクチャーを複数のタイルにまたは複数のウェイブフロント並列処理（ＷＰＰ）ウェイブに分割し得る。本開示では、タイルとＷＰＰウェイブの両方を総称的に指すために「ピクチャーパーティション」（picture partition）という用語を使用し得る。現在ピクチャーをピクチャーパーティションに分割するプロセスは、現在ピクチャーをピクチャーパーティションに「区分」すること（partitioning）と呼ばれることがある。
【００６１】
上述のように、ビデオエンコーダ２０は、現在ピクチャーを１つまたは複数のタイルに分割し得る。タイルのそれぞれは、現在ピクチャー中の整数個のツリーブロックを含み得る。ビデオエンコーダ２０は、２つ以上の垂直タイル境界と２つ以上の水平タイル境界とを画定することによって現在ピクチャーをタイルに分割し得る。現在ピクチャーの各垂直辺は、垂直タイル境界であると見なされ得る。現在ピクチャーの各水平辺は、水平タイル境界であると見なされ得る。たとえば、ビデオエンコーダ２０が現在ピクチャーのための４つの垂直タイル境界と３つの水平タイル境界とを画定する場合、現在ピクチャーは、６つのタイルに分割される。
【００６２】
ビデオエンコーダ２０またはビデオデコーダ３０などのビデオコーダは、ラスタスキャン順序に従って、現在ピクチャーのタイルをコーディングし得る。さらに、ビデオコーダがタイルをコーディングするとき、ビデオコーダは、ラスタスキャン順序に従ってタイル内の各ツリーブロックをコーディングし得る。このようにして、ビデオコーダは、現在ピクチャーの別のタイルのいずれかのツリーブロックをコーディングする前に、現在ピクチャーの所与のタイルの各ツリーブロックをコーディングし得る。したがって、ビデオコーダが現在ピクチャーを複数のタイルに区分するとき、ビデオコーダが現在ピクチャーのツリーブロックをコーディングする順序は、ビデオコーダが現在ピクチャーを複数のタイルに区分しないときとは異なり得る。
【００６３】
さらに、いくつかの事例では、ビデオコーダは、所与のＣＵと空間的に隣接するＣＵとが同じタイルに属する限り、現在ピクチャー中の所与のＣＵに対してイントラ予測を実行するために、空間的に隣接するＣＵに関連付けられた情報を使用し得る。空間的に隣接するＣＵは、現在ピクチャーの現在スライスに属するＣＵである。いくつかの事例では、ビデオコーダは、所与のＣＵと空間的に隣接するＣＵとが同じタイル内にある限り、所与のＣＵのシンタックス要素をＣＡＢＡＣ符号化するためのコンテキストを選択するために、空間的に隣接するＣＵに関連付けられた情報を使用し得る。これらの制限のために、ビデオコーダは、複数のタイルのツリーブロックを並列にコーディングすることが可能であり得る。
【００６４】
他の例では、ビデオコーダは、ウェイブフロント並列処理（ＷＰＰ）を使用して現在ピクチャーをコーディングし得る。ビデオコーダがＷＰＰを使用して現在ピクチャーをコーディングするとき、ビデオコーダは、現在ピクチャーのツリーブロックを複数の「ＷＰＰウェイブ」（WPP waves）に分割し得る。ＷＰＰウェイブのそれぞれは、現在ピクチャー中のツリーブロックの異なる行に対応し得る。ビデオコーダがＷＰＰを使用して現在ピクチャーをコーディングするとき、ビデオコーダは、ツリーブロックの最上行をコーディングし始め得る。ビデオコーダが最上行の２つ以上のツリーブロックをコーディングしたとき、ビデオコーダは、ツリーブロックの最上行をコーディングすることと並列にツリーブロックの最上行から２番目の行をコーディングし始め得る。ビデオコーダが最上行から２番目の行の２つ以上のツリーブロックをコーディングしたとき、ビデオコーダは、ツリーブロックの最上行から３番目の行よりも上の行をコーディングすることと並列にツリーブロックの最上行から３番目の行をコーディングし始め得る。このパターンは、現在ピクチャー中のツリーブロックの行を下って続き得る。
【００６５】
ビデオコーダがＷＰＰを使用して現在ピクチャーをコーディングしているとき、ビデオコーダは、空間的に隣接するＣＵが現在ツリーブロックの左、左上、上、または右上にある限り、現在ツリーブロック中の所与のＣＵに対してイントラ予測を実行するために現在ツリーブロック外の空間的に隣接するＣＵに関連付けられた情報を使用し得る。現在ツリーブロックが一番上の行以外の行中の最左ツリーブロックである場合、ビデオコーダは、現在ツリーブロックのシンタックス要素をＣＡＢＡＣ符号化するためのコンテキストを選択するためにすぐ上の行の第２のツリーブロックに関連付けられた情報を使用し得る。そうではなく、現在ツリーブロックが上記行中の最左ツリーブロックでない場合、ビデオコーダは、現在ツリーブロックのシンタックス要素をＣＡＢＡＣ符号化するためのコンテキストを選択するために現在ツリーブロックの左のツリーブロックに関連付けられた情報を使用し得る。このようにして、ビデオコーダは、すぐ上の行の２つ以上のツリーブロックを符号化した後に、すぐ上の行のＣＡＢＡＣ状態に基づいて、ある行のＣＡＢＡＣ状態を初期化し得る。
【００６６】
いくつかの例では、ビデオコーダがＷＰＰを使用して現在ピクチャーをコーディングしているとき、現在ピクチャーの単独のタイルの境界は、現在ピクチャーの水平境界および垂直境界である。したがって、現在ピクチャーの単独のタイルは、現在ピクチャーと同じサイズであり得る。ビデオコーダは、現在ピクチャー、したがって現在ピクチャーの単一のタイルを複数のＷＰＰウェイブに分割し得る。
【００６７】
上述のように、ビデオエンコーダ２０は、スライスの符号化表現を含むコード化スライスＮＡＬユニットを生成し得る。スライスは、整数個の連続するコード化ツリーブロックに関連付けられ得る。コード化スライスＮＡＬユニットは、スライスヘッダとスライスデータとを含み得る。スライスデータは、スライスに関連付けられた各ツリーブロックの符号化表現を含み得る。ビデオエンコーダ２０は、ツリーブロックが属するピクチャーパーティションに従って、ツリーブロックの符号化表現がスライスデータ内でセグメントにグループ化されるように、コード化スライスＮＡＬユニットを生成し得る。たとえば、コード化スライスＮＡＬユニットは、第１のピクチャーパーティションに関連付けられた各コード化ツリーブロック、その後に続く第２のピクチャーパーティションに関連付けられた各コード化ツリーブロック、その後に続く第３のピクチャーパーティションに関連付けられた各コード化ツリーブロックなどを含み得る。
【００６８】
本開示の技法によれば、ビデオエンコーダ２０は、セグメントのそれぞれがバイト境界上で開始するようにセグメントのうちの１つまたは複数をパディングし得る。コード化スライスＮＡＬユニットは一連のバイトに分割され得る。セグメントは、セグメントの第１のビットがコード化スライスＮＡＬユニットのバイトのうちの１つの第１のビットであるとき、バイト境界上で開始し得る。さらに、セグメントは、セグメントの第１のビットがコード化スライスＮＡＬユニットのバイトのうちの１つの第１のビットである場合、バイト・アライン（byte aligned）され得る。ビデオエンコーダ２０がセグメントをパディングするとき、ビデオエンコーダ２０は、セグメントにパディングビットを付加し得る。たとえば、ビデオエンコーダ２０は、剰余を残すことなしにセグメント中のビット数が８で割り切れるように、セグメントに１つまたは複数のパディングビットを追加し得る。パディングビットは、いかなる意味論的意味をも有しないことがあるが、次のセグメントがバイト境界において開始することを保証するのに役立ち得る。
【００６９】
ビデオデコーダ３０がコード化スライスＮＡＬユニットを受信するとき、ビデオエンコーダ３０は、コード化スライスＮＡＬユニットをメモリに記憶し得る。ピクチャーパーティションを並列に復号するために、ビデオデコーダ３０は、並列に動作する異なる復号スレッドにセグメントを割り当て得る。異なる復号スレッドにセグメントを割り当てるために、ビデオデコーダ３０は、セグメントの始端に関連付けられたメモリアドレスを示す必要があり得る。ビデオデコーダ３０は、バイト単位のメモリアドレス指定を使用し得る。したがって、ビデオデコーダ３０は、セグメントの始まりがバイト内で発生する場合、セグメントの始まりに関連付けられたメモリアドレスを示すことができないことがある。したがって、ビデオデコーダ３０は、セグメントのうちの１つまたは複数がバイト内で開始する場合、セグメント中のコード化ツリーブロックを並列に復号することができないことがある。代替として、ビデオデコーダ３０は、セグメント中のコード化ツリーブロックを並列に復号することを可能にするためにビット単位のメモリアドレス指定またはバイト単位＋ビット単位のアドレス指定を使用し得るが、実装および計算の複雑さの増加を伴う。
【００７０】
このようにして、ビデオエンコーダ２０は、ピクチャーを複数のピクチャーパーティションに分割し得る。ピクチャーは、複数のツリーブロックを有する。ピクチャーパーティションは、ピクチャーのツリーブロックのオーバーラップしないサブセットに関連付けられる。ビデオエンコーダ２０は、ピクチャーのスライスに関連付けられたツリーブロックの符号化表現を含むコード化スライスＮＡＬユニットを生成し得る。ツリーブロックの符号化表現は、コード化スライスＮＡＬユニット内で上記ピクチャーパーティションのうちの異なるピクチャーパーティションに関連付けられたセグメントにグループ化される。セグメントのそれぞれがバイト境界上で開始するようにセグメントのうちの１つまたは複数がパディングされる。
【００７１】
その上、ビデオデコーダ３０は、ピクチャーのスライスに関連付けられたツリーブロックの符号化表現を含むコード化スライスＮＡＬユニットを記憶し得る。ピクチャーは、複数のピクチャーパーティションに分割され得る。ツリーブロックの符号化表現は、上記ピクチャーパーティションのうちの異なるピクチャーパーティションに関連付けられたセグメントにグループ化され得る。セグメントのそれぞれがバイト境界において開始するようにセグメントのうちの１つまたは複数がパディングされる。ビデオデコーダ３０は、ツリーブロックの符号化表現を復号し得る。いくつかの事例では、ビデオデコーダ３０は、セグメントのうちの２つ以上の中のツリーブロックの符号化表現を並列に復号し得る。
【００７２】
図２は、本開示の技法を実装するように構成された例示的なビデオエンコーダ２０を示すブロック図である。図２は、説明のために与えられており、本開示で広く例示および説明する技法を限定するものと見なされるべきではない。説明のために、本開示では、ＨＥＶＣコーディングのコンテキストにおいてビデオエンコーダ２０について説明する。ただし、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
【００７３】
図２の例では、ビデオエンコーダ２０は、複数の機能構成要素を含む。ビデオエンコーダ２０の機能構成要素は、予測モジュール（prediction module）１００と、残差生成モジュール（residual generation module）１０２と、変換モジュール（transform module）１０４と、量子化モジュール（quantization module）１０６と、逆量子化モジュール（inverse quantization module）１０８と、逆変換モジュール（inverse transform module）１１０と、再構成モジュール（reconstruction module）１１２と、フィルタモジュール（filter module）１１３と、復号化ピクチャーバッファ（decoded picture buffer）１１４と、エントロピー符号化モジュール（entropy encoding module）１１６とを含む。予測モジュール１００は、インター予測モジュール（inter prediction module）１２１と、動き推定モジュール（motion estimation module）１２２と、動き補償モジュール（motion compensation module）１２４と、イントラ予測モジュール（intra prediction module）１２６とを含む。他の例では、ビデオエンコーダ２０は、より多数の、より少数の、または異なる機能構成要素を含み得る。さらに、動き推定モジュール１２２と動き補償モジュール１２４は、高度に統合され得るが、図２の例では、説明のために別々に表されている。
【００７４】
ビデオエンコーダ２０は、ビデオデータを受信し得る。ビデオエンコーダ２０は、様々なソースからビデオデータを受信し得る。たとえば、ビデオエンコーダ２０は、ビデオソース１８（図１）または別のソースからビデオデータを受信し得る。ビデオデータは一連のピクチャーを表し得る。ビデオデータを符号化するために、ビデオエンコーダ２０は、ピクチャーのそれぞれに対して符号化演算を実行し得る。ピクチャーに対して符号化演算を実行することの一部として、ビデオエンコーダ２０は、ピクチャーの各スライスに対して符号化演算を実行し得る。スライスに対する符号化演算を実行することの一部として、ビデオエンコーダ２０は、スライス中のツリーブロックに対して符号化演算を実行し得る。
【００７５】
ツリーブロックに対して符号化演算を実行することの一部として、予測モジュール１００は、ツリーブロックのビデオブロックに対して４分木区分を実行して、ビデオブロックを徐々により小さいビデオブロックに分割し得る。より小さいビデオブロックのそれぞれは、異なるＣＵに関連付けられ得る。たとえば、予測モジュール１００は、ツリーブロックのビデオブロックを４つの等しいサイズのサブブロックに区分し、サブブロックのうちの１つまたは複数を、４つの等しいサイズのサブサブブロックに区分し得、以下同様である。
【００７６】
ＣＵに関連付けられたビデオブロックのサイズは、８×８サンプルから、ツリーブロックのサイズまでにわたり、最大で６４×６４サンプル以上であり得る。本開示では、「Ｎ×Ｎ（NxN）」および「Ｎ×Ｎ（N by N）」は、垂直ディメンションおよび水平ディメンションに関するビデオブロックのサンプル・ディメンション、たとえば、１６×１６（16x16）サンプルまたは１６×１６（16 by 16）サンプルを指すために互換的に使用され得る。一般に、１６×１６のビデオブロックは、垂直方向に１６個のサンプルを有し（ｙ＝１６）、水平方向に１６個のサンプルを有する（ｘ＝１６）。同様に、Ｎ×Ｎのブロックは、一般に、垂直方向にＮ個のサンプルを有し、水平方向にＮ個のサンプルを有し、ここで、Ｎは非負整数値を表す。
【００７７】
さらに、ツリーブロックに対して符号化演算を実行することの一部として、予測モジュール１００は、ツリーブロック用の階層的な４分木データ構造を生成し得る。たとえば、ツリーブロックは、４分木データ構造のルートノードに対応し得る。予測モジュール１００が、ツリーブロックのビデオブロックを４つのサブブロックに区分する場合、ルートノードは、４分木データ構造中に４つの子ノードを有する。子ノードのそれぞれは、サブブロックのうちの１つに関連付けられたＣＵに対応する。予測モジュール１００が、サブブロックのうちの１つを４つのサブサブブロックに区分する場合、サブブロックに関連付けられたＣＵに対応するノードは、サブサブブロックのうちの１つに関連付けられたＣＵにそれぞれが対応する、４つの子ノードを有し得る。
【００７８】
４分木データ構造の各ノードは、対応するツリーブロックまたはＣＵのシンタックスデータ（たとえば、シンタックス要素）を含み得る。たとえば、４分木中のノードは、そのノードに対応するＣＵのビデオブロックが４つのサブブロックに区分される（すなわち、分割される）かどうかを示す分割フラグを含み得る。ＣＵのシンタックス要素は、再帰的に定義され得、ＣＵのビデオブロックがサブブロックに分割されるかどうかに依存し得る。それのビデオブロックが区分されていないＣＵは、４分木データ構造におけるリーフノードに対応し得る。コード化ツリーブロックは、対応するツリーブロック用の４分木データ構造に基づくデータを含み得る。
【００７９】
ビデオエンコーダ２０は、ツリーブロックの区分されていない各ＣＵに対して符号化演算を実行し得る。ビデオエンコーダ２０が区分されていないＣＵに対して符号化演算を実行するとき、ビデオエンコーダ２０は、区分されていないＣＵの符号化表現を表すデータを生成する。
【００８０】
ＣＵに対して符号化演算を実行することの一部として、予測モジュール１００は、ＣＵの１つまたは複数のＰＵの中で、ＣＵのビデオブロックを区分し得る。ビデオエンコーダ２０およびビデオデコーダ３０は、様々なＰＵサイズをサポートし得る。特定のＣＵのサイズが２Ｎ×２Ｎであると仮定すると、ビデオエンコーダ２０およびビデオデコーダ３０は、２Ｎ×２ＮまたはＮ×ＮのＰＵサイズと、２Ｎ×２Ｎ、２Ｎ×Ｎ、Ｎ×２Ｎ、Ｎ×Ｎ、２Ｎ×ｎＵ、ｎＬ×２Ｎ、ｎＲ×２Ｎ、または同様の対称ＰＵサイズでのインター予測とをサポートし得る。ビデオエンコーダ２０およびビデオデコーダ３０は、２Ｎ×ｎＵ、２Ｎ×ｎＤ、ｎＬ×２Ｎ、およびｎＲ×２ＮのＰＵサイズに対する非対称区分（asymmetric partitioning）をもサポートし得る。いくつかの例では、予測モジュール１００は、ＣＵのビデオブロックの辺に直角で接触（meet）しない境界に沿ったＣＵの複数のＰＵの間で、ＣＵのビデオブロックを区分するために、幾何学的な区分（geometric partitioning）を実行し得る。
【００８１】
インター予測モジュール１２１は、ＣＵの各ＰＵに対してインター予測を実行し得る。インター予測は、時間圧縮を実現し得る。ＰＵに対してインター予測を実行するために、動き推定モジュール１２２は、ＰＵの動き情報を生成し得る。動き補償モジュール１２４は、動き情報と、ＣＵに関連付けられたピクチャー以外のピクチャー（すなわち、参照ピクチャー）の復号化サンプルとに基づいて、ＰＵの予測されたビデオブロックを生成し得る。本開示では、動き補償モジュール１２４によって生成された予測されたビデオブロックは、インター予測されたビデオブロックと呼ばれることがある。
【００８２】
スライスは、Ｉスライス、Ｐスライス、またはＢスライスであり得る。動き推定モジュール１２２および動き補償モジュール１２４は、ＰＵがＩスライス中にあるか、Ｐスライス中にあるか、Ｂスライス中にあるかに応じて、ＣＵのＰＵに対して異なる演算を実行し得る。Ｉスライス中では、すべてのＰＵがイントラ予測される。したがって、ＰＵがＩスライス中にある場合、動き推定モジュール１２２および動き補償モジュール１２４は、ＰＵに対してインター予測を実行しない。
【００８３】
ＰＵがＰスライス中にある場合、ＰＵを含んでいるピクチャーは、「リスト０」（list 0）と呼ばれる参照ピクチャーのリストに関連付けられる。リスト０中の参照ピクチャーのそれぞれは、他のピクチャーのインター予測に使用され得るサンプルを含んでいる。動き推定モジュール１２２が、Ｐスライス中のＰＵに関して動き推定演算を実行するとき、動き推定モジュール１２２は、ＰＵの参照ブロックについて、リスト０中の参照ピクチャーを探索し得る。ＰＵの参照ブロックは、ＰＵのビデオブロック中のサンプルに最も密接に（most closely）対応するサンプルのセット、たとえば、サンプルのブロックであり得る。動き推定モジュール１２２は、様々なメトリックを使用して、参照ピクチャー中のサンプルのセットがどの程度密接にＰＵのビデオブロック中のサンプルに対応するかを判定し得る。たとえば、動き推定モジュール１２２は、絶対差分和（sum of absolute difference）（ＳＡＤ）、２乗差分和（sum of square difference）（ＳＳＤ）、または他の差分メトリックによって、参照ピクチャー中のサンプルのセットがどの程度密接にＰＵのビデオブロック中のサンプルに対応するかを判定し得る。
【００８４】
Ｐスライス中のＰＵの参照ブロックを識別した後、動き推定モジュール１２２は、参照ブロックを含んでいる、リスト０中の参照ピクチャーを示す参照インデックスと、ＰＵと参照ブロックとの間の空間変位（spatial displacement）を示す動きベクトルとを生成し得る。様々な例において、動き推定モジュール１２２は、動きベクトルを可変の精度で生成し得る。たとえば、動き推定モジュール１２２は、１／４サンプル精度、１／８サンプル精度、または他の分数のサンプル精度で、動きベクトルを生成し得る。分数のサンプル精度の場合、参照ブロック値は、参照ピクチャー中の整数位置のサンプル値から補間され得る。動き推定モジュール１２２は、ＰＵの動き情報として参照インデックスと動きベクトルとを出力し得る。動き補償モジュール１２４は、ＰＵの動き情報によって識別される参照ブロックに基づいてＰＵの予測されたビデオブロックを生成し得る。
【００８５】
ＰＵがＢスライス中にある場合、ＰＵを含んでいるピクチャーは、「リスト０」（list 0）および「リスト１」（list 1）と呼ばれる参照ピクチャーの２つのリストに関連付けられ得る。いくつかの例では、Ｂスライスを含んでいるピクチャーは、リスト０とリスト１の組み合せである、リストの組み合せに関連付けられ得る。
【００８６】
さらに、ＰＵがＢスライス中にある場合、動き推定モジュール１２２は、ＰＵについての単方向予測または双方向予測を実行し得る。動き推定モジュール１２２が、ＰＵについての単方向予測を実行するとき、動き推定モジュール１２２は、ＰＵの参照ブロックについて、リスト０またはリスト１の参照ピクチャーを探索し得る。動き推定モジュール１２２は次いで、参照ブロックを含んでいる、リスト０またはリスト１中の参照ピクチャーを示す参照インデックスと、ＰＵと参照ブロックの間の空間変位を示す動きベクトルとを生成し得る。動き推定モジュール１２２は、ＰＵの動き情報として参照インデックスと、予測方向インジケータと、動きベクトルとを出力し得る。予測方向インジケータは、参照インデックスが、リスト０中の参照ピクチャーを示すか、リスト１中の参照ピクチャーを示すかを示し得る。動き補償モジュール１２４は、ＰＵの動き情報によって示される参照ブロックに基づいてＰＵの予測されたビデオブロックを生成し得る。
【００８７】
動き推定モジュール１２２が、ＰＵについての双方向予測を実行するとき、動き推定モジュール１２２は、ＰＵの参照ブロックについて、リスト０中の参照ピクチャーを探索し得、また、ＰＵの別の参照ブロックについて、リスト１中の参照ピクチャーを探索し得る。動き推定モジュール１２２は次いで、参照ブロックを含んでいる、リスト０およびリスト１中の参照ピクチャーを示す参照インデックスと、参照ブロックとＰＵの間の空間変位を示す動きベクトルとを生成し得る。動き推定モジュール１２２は、ＰＵの動き情報としてＰＵの参照インデックスと動きベクトルとを出力し得る。動き補償モジュール１２４は、ＰＵの動き情報によって示される参照ブロックに基づいてＰＵの予測されたビデオブロックを生成し得る。
【００８８】
いくつかの例では、動き推定モジュール１２２は、ＰＵの動き情報のフルセットをエントロピー符号化モジュール１１６に出力しない。そうではなく、動き推定モジュール１２２は、別のＰＵの動き情報を参照して、ＰＵの動き情報をシグナリングし得る。たとえば、動き推定モジュール１２２は、ＰＵの動き情報が、隣接ＰＵの動き情報と十分に類似していると判定し得る。この例では、動き推定モジュール１２２は、ＰＵに関連付けられたシンタックス構造において、ＰＵが隣接ＰＵと同じ動き情報を有することをビデオデコーダ３０に示す値を、示し得る。別の例では、動き推定モジュール１２２は、ＰＵに関連付けられたシンタックス構造において、隣接ＰＵと動きベクトル差分（ＭＶＤ：motion vector difference）とを識別し得る。動きベクトル差分は、ＰＵの動きベクトルと、示される隣接ＰＵの動きベクトルとの間の差分を示す。ビデオデコーダ３０は、示される隣接ＰＵの動きベクトルと、動きベクトル差分とを使用して、ＰＵの動きベクトルを判定し得る。第２のＰＵの動き情報をシグナリングするときに第１のＰＵの動き情報を参照することによって、ビデオエンコーダ２０は、より少数のビットを使用して、第２のＰＵの動き情報をシグナリングすることが可能であり得る。
【００８９】
ＣＵに対して符号化演算を実行することの一部として、イントラ予測モジュール１２６は、ＣＵのＰＵに対してイントラ予測を実行し得る。イントラ予測は空間圧縮を実現し得る。イントラ予測モジュール１２６がＰＵに対してイントラ予測を実行するとき、イントラ予測モジュール１２６は、同じピクチャー中の他のＰＵの復号化サンプルに基づいて、ＰＵの予測データを生成し得る。ＰＵの予測データは、予測されたビデオブロックと様々なシンタックス要素とを含み得る。イントラ予測モジュール１２６は、Ｉスライス、Ｐスライス、およびＢスライス中のＰＵに対してイントラ予測を実行し得る。
【００９０】
ＰＵに対してイントラ予測を実行するために、イントラ予測モジュール１２６は、複数のイントラ予測モードを使用して、ＰＵの予測データの複数のセットを生成し得る。イントラ予測モジュール１２６が、イントラ予測モードを使用してＰＵの予測データのセットを生成するとき、イントラ予測モジュール１２６は、イントラ予測モードに関連付けられた方向（direction）および／または勾配（gradient）で、隣接ＰＵのビデオブロックからＰＵのビデオブロックにわたって、サンプルを延ばし（extend）得る。隣接ＰＵは、ＰＵ、ＣＵおよびツリーブロックについて左から右、上から下の符号化順序を仮定すると、ＰＵの上、右上、左上、または左にあり得る。イントラ予測モジュール１２６は、ＰＵのサイズに応じて、様々な数のイントラ予測モード、たとえば、３３個の方向性イントラ予測モードを使用し得る。
【００９１】
予測モジュール１００は、ＰＵについての、動き補償モジュール１２４によって生成された予測データ、またはＰＵについての、イントラ予測モジュール１２６によって生成された予測データの中から、ＰＵの予測データを選択し得る。いくつかの例では、予測モジュール１００は、予測データのセットのレート／ひずみ（distortion）メトリックに基づいて、ＰＵの予測データを選択する。
【００９２】
予測モジュール１００が、イントラ予測モジュール１２６によって生成された予測データを選択する場合、予測モジュール１００は、ＰＵの予測データを生成するために使用されたイントラ予測モード、すなわち、選択されたイントラ予測モードをシグナリングし得る。予測モジュール１００は、選択されたイントラ予測モードを様々な方法でシグナリングし得る。たとえば、選択されたイントラ予測モードは、隣接ＰＵのイントラ予測モードと同じであることがあり得る。言い換えれば、隣接ＰＵのイントラ予測モードは、現在ＰＵに対して最もあり得るモードであり得る。したがって、予測モジュール１００は、選択されたイントラ予測モードが隣接ＰＵのイントラ予測モードと同じであることを示すための、シンタックス要素を生成し得る。
【００９３】
予測モジュール１００がＣＵのＰＵの予測データを選択した後、残差生成モジュール１０２は、ＣＵのビデオブロックからＣＵのＰＵの予測されたビデオブロックを差し引くことによって、ＣＵの残差データを生成し得る。ＣＵの残差データは、ＣＵのビデオブロック中のサンプルの様々なサンプル成分に対応する、２Ｄ残差ビデオブロックを含み得る。たとえば、残差データは、ＣＵのＰＵの予測されたビデオブロック中のサンプルのルミナンス成分（luminance components）と、ＣＵの元のビデオブロック中のサンプルのルミナンス成分との間の差に対応する、残差ビデオブロックを含み得る。加えて、ＣＵの残差データは、ＣＵのＰＵの予測されたビデオブロック中のサンプルのクロミナンス成分（chrominance components）と、ＣＵの元のビデオブロック中のサンプルのクロミナンス成分との間の差に対応する、残差ビデオブロックを含み得る。
【００９４】
予測モジュール１００は、４分木区分を実行して、ＣＵの残差ビデオブロックをサブブロックに区分し得る。分割されていない各残差ビデオブロックは、ＣＵの異なるＴＵに関連付けられ得る。ＣＵのＴＵに関連付けられた残差ビデオブロックのサイズおよび位置は、ＣＵのＰＵに関連付けられたビデオブロックのサイズおよび位置に基づくことも基づかないこともある。「残差４分木」（ＲＱＴ：residual quad tree）として知られる４分木構造は、残差ビデオブロックのそれぞれに関連付けられたノードを含み得る。ＣＵのＴＵは、ＲＱＴのリーフノードに対応し得る。
【００９５】
変換モジュール１０４は、ＴＵに関連付けられた残差ビデオブロックに１つまたは複数の変換を適用することによって、ＣＵの各ＴＵについて１つまたは複数の変換係数ブロックを生成し得る。変換係数ブロックのそれぞれは、変換係数の２Ｄ行列であり得る。変換モジュール１０４は、ＴＵに関連付けられた残差ビデオブロックに様々な変換を適用し得る。たとえば、変換モジュール１０４は、離散コサイン変換（ＤＣＴ）、方向性変換、または概念的に同様の変換を、ＴＵに関連付けられた残差ビデオブロックに適用し得る。
【００９６】
変換モジュール１０４が、ＴＵに関連付けられた変換係数ブロックを生成した後、量子化モジュール１０６は、変換係数ブロック中の変換係数を量子化し得る。量子化モジュール１０６は、ＣＵに関連付けられたＱＰ値に基づいて、ＣＵのＴＵに関連付けられた変換係数ブロックを量子化し得る。
【００９７】
ビデオエンコーダ２０は、様々な方法でＱＰ値をＣＵに関連付け得る。たとえば、ビデオエンコーダ２０は、ＣＵに関連付けられたツリーブロックに対して、レートひずみ分析を実行し得る。レートひずみ分析では、ビデオエンコーダ２０は、ツリーブロックに対して符号化演算を複数回実行することによって、ツリーブロックの複数のコード化表現を生成し得る。ビデオエンコーダ２０がツリーブロックの異なる符号化表現を生成するとき、ビデオエンコーダ２０は、異なるＱＰ値をＣＵに関連付け得る。ビデオエンコーダ２０は、最小のビットレートおよびひずみメトリックを有するツリーブロックのコード化表現で所与のＱＰ値がＣＵに関連付けられるとき、所与のＱＰ値がＣＵに関連付けられることをシグナリングし得る。
【００９８】
逆量子化モジュール１０８および逆変換モジュール１１０は、それぞれ、変換係数ブロックに逆量子化および逆変換を適用して、変換係数ブロックから残差ビデオブロックを再構成し得る。再構成モジュール１１２は、再構成された残差ビデオブロックを、予測モジュール１００によって生成される１つまたは複数の予測されたビデオブロックからの対応するサンプルに追加して、ＴＵに関連付けられた再構成されたビデオブロックを生成し得る。このようにＣＵの各ＴＵについてビデオブロックを再構成することによって、ビデオエンコーダ２０は、ＣＵのビデオブロックを再構成し得る。
【００９９】
再構成モジュール１１２がＣＵのビデオブロックを再構成した後、フィルタモジュール１１３は、デブロッキング演算（deblocking operation）を実行して、ＣＵに関連付けられたビデオブロックにおけるブロッキングアーティファクト（blocking artifacts）を低減し得る。１つまたは複数のデブロッキング演算を実行した後、フィルタモジュール１１３は、復号化ピクチャーバッファ１１４にＣＵの再構成されたビデオブロックを記憶し得る。動き推定モジュール１２２および動き補償モジュール１２４は、再構成されたビデオブロックを含んでいる参照ピクチャーを使用して、後続のピクチャーのＰＵに対してインター予測を実行し得る。加えて、イントラ予測モジュール１２６は、復号化ピクチャーバッファ１１４中の再構成されたビデオブロックを使用して、ＣＵと同じピクチャーの中の他のＰＵに対してイントラ予測を実行し得る。
【０１００】
エントロピー符号化モジュール１１６は、ビデオエンコーダ２０の他の機能構成要素からデータを受信し得る。たとえば、エントロピー符号化モジュール１１６は、量子化モジュール１０６から変換係数ブロックを受信し得、予測モジュール１００からシンタックス要素を受信し得る。エントロピー符号化モジュール１１６がデータを受信するとき、エントロピー符号化モジュール１１６は、１つまたは複数のエントロピー符号化演算を実行して、エントロピー符号化データを生成し得る。たとえば、ビデオエンコーダ２０は、コンテキスト適応型可変長コーディング（ＣＡＶＬＣ：context adaptive variable length coding）演算、ＣＡＢＡＣ演算、変数−変数（Ｖ２Ｖ：variable-to-variable）レングスコーディング演算、シンタックスベースのコンテキスト適応型バイナリ算術コーディング（ＳＢＡＣ：syntax-based context-adaptive binary arithmetic coding）演算、確率間隔区分エントロピー（ＰＩＰＥ：Probability Interval Partitioning Entropy）コーディング演算、または別のタイプのエントロピー符号化演算をデータに対して実行し得る。エントロピー符号化モジュール１１６は、エントロピー符号化データを含むビットストリームを出力し得る。
【０１０１】
データに対してエントロピー符号化演算を実行することの一部として、エントロピー符号化モジュール１１６は、コンテキストモデルを選択し得る。エントロピー符号化モジュール１１６がＣＡＢＡＣ演算を実行している場合、コンテキストモデルは、特定の値を有する特定のビンの確率の推定値を示し得る。ＣＡＢＡＣのコンテキストでは、「ビン」（bin）という用語は、シンタックス要素の２値化されたバージョンのビットを指すために使用される。
【０１０２】
ビデオエンコーダ２０は、現在ピクチャーの各スライスについてコード化スライスＮＡＬユニットを生成し得る。スライスのためのコード化スライスＮＡＬユニットは、スライスヘッダとスライスデータとを含み得る。スライスデータは、複数のセグメントを含み得る。セグメントのそれぞれは、異なるピクチャーパーティションに関連付けられたコード化ツリーブロックを含む。ビデオエンコーダ２０は、セグメントのそれぞれがスライスデータ内のバイト境界において開始するようにセグメントをパディングし得る。たとえば、コード化スライスＮＡＬユニット中のセグメントは所与のセグメントを含み得る。この例では、ビデオエンコーダ２０は、少なくとも部分的に、次のツリーブロックが、現在スライス内にあり、所与のセグメントとは異なるピクチャーパーティションに関連付けられる場合、所与のセグメントにビットを付加するパディング演算を実行することによって、コード化スライスＮＡＬユニットを生成し得る。
【０１０３】
いくつかの例では、ビデオエンコーダ２０は、コード化スライスＮＡＬユニットのスライスヘッダがコード化スライスＮＡＬユニットのスライスデータ中のセグメントのためのエントリーポイントを示すようにスライスヘッダを生成し得る。エントリーポイントは、セグメントのスライスデータ内の位置を示し得る。たとえば、エントリーポイントは、セグメントのバイトオフセットを示し得る。この例では、バイトオフセットは、コード化スライスＮＡＬユニットの第１のビット、スライスデータの第１のビット、またはコード化スライスＮＡＬユニット中の別のビットに対するバイトオフセットであり得る。別の例では、エントリーポイントは、セグメントのそれぞれ内のビットまたはバイトの数を示し得る。いくつかの例では、スライスヘッダは、スライスデータ中の第１のセグメントのためのエントリーポイントを示さない。
【０１０４】
いくつかの例では、ビデオエンコーダ２０は、フラグが第１の値（たとえば、１）を有するかどうかを判定し得る。フラグが第１の値を有する場合、ビデオエンコーダ２０は、各セグメントがバイト境界において開始するようにセグメントのうちの１つまたは複数をパディングし得る。フラグが第２の値（たとえば、０）を有するとき、ビデオエンコーダ２０は、セグメントをパディングしない。その結果、セグメントは、バイト・アラインされた位置（byte-aligned positions）において開始することも開始しないこともある。そのような例では、シーケンスパラメータセット、ピクチャーパラメータセット、適応パラメータセット、またはスライスヘッダがフラグを含み得る。したがって、いくつかの例では、ビデオエンコーダ２０は現在ピクチャーに関連付けられたパラメータセットを生成し得、パラメータセットはフラグを含む。フラグが第１の値を有するとき、セグメントがバイト境界において開始するようにセグメントのうちの１つまたは複数がパディングされる。フラグが第２の値を有するとき、セグメントはバイト境界において開始することも開始しないこともある。
【０１０５】
さらに、いくつかの例では、ビデオエンコーダ２０は現在ピクチャーを複数のタイルに区分し得る。ビデオエンコーダ２０がタイル境界を越えるピクチャー内予測を可能にする場合（すなわち、タイルのうちの２つ以上が互いに依存するとき）、ビデオエンコーダ２０はセグメントをパディングしない。その結果、セグメントは、バイト・アラインされた位置において開始することも開始しないこともある。しかしながら、ビデオエンコーダ２０がタイル境界を越えるピクチャー内予測を可能にしない場合、ビデオエンコーダ２０は、セグメントのそれぞれがバイト境界において開始するようにセグメントのうちの１つまたは複数をパディングし得る。したがって、ビデオエンコーダ２０は、少なくとも部分的に、タイルが互いから独立していると判定した後にのみ、セグメントがバイト境界において開始することを保証するパディング演算を実行することによって、コード化スライスＮＡＬユニットを生成し得る。
【０１０６】
図３は、本開示の技法を実装するように構成された例示的なビデオデコーダ３０を示すブロック図である。図３は、説明のために与えられており、本開示で広く例示および説明する技法に対する限定ではない。説明のために、本開示では、ＨＥＶＣコーディングのコンテキストにおいてビデオデコーダ３０について説明する。ただし、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
【０１０７】
図３の例では、ビデオデコーダ３０は、複数の機能構成要素を含む。ビデオデコーダ３０の機能構成要素は、エントロピー復号モジュール（entropy decoding module）１５０と、予測モジュール（prediction module）１５２と、逆量子化モジュール（inverse quantization module）１５４と、逆変換モジュール（inverse transform module）１５６と、再構成モジュール（reconstruction module）１５８と、フィルタモジュール（filter module）１５９と、復号化ピクチャーバッファ（decoded picture buffer）１６０とを含む。予測モジュール１５２は、動き補償モジュール（motion compensation module）１６２と、イントラ予測モジュール（intra prediction module）１６４とを含む。いくつかの例では、ビデオデコーダ３０は、図２のビデオエンコーダ２０に関して説明した符号化パスとは概して逆の復号パスを実行し得る。他の例では、ビデオデコーダ３０は、より多数の、より少数の、または異なる機能構成要素を含み得る。
【０１０８】
ビデオデコーダ３０は、符号化ビデオデータを含むビットストリームを受信し得る。ビットストリームは、複数のシンタックス要素を含み得る。ビデオデコーダ３０がビットストリームを受信するとき、エントロピー復号モジュール１５０は、ビットストリームに対してパース演算を実行し得る。ビットストリームに対してパース演算を実行した結果として、エントロピー復号モジュール１５０は、ビットストリームからシンタックス要素を抽出し得る。パース演算を実行することの一部として、エントロピー復号モジュール１５０は、ビットストリーム中のエントロピー符号化シンタックス要素をエントロピー復号し得る。予測モジュール１５２、逆量子化モジュール１５４、逆変換モジュール１５６、再構成モジュール１５８、およびフィルタモジュール１５９は、ビットストリームから抽出されたシンタックス要素に基づいて復号ビデオデータを生成する再構成演算（reconstruction operation）を実行し得る。
【０１０９】
上記で説明したように、ビットストリームは一連のＮＡＬユニットを含み得る。ビットストリームのＮＡＬユニットは、シーケンスパラメータセットＮＡＬユニット、ピクチャーパラメータセットＮＡＬユニット、ＳＥＩ  ＮＡＬユニットなどを含み得る。ビットストリームに対してパース演算を実行することの一部として、エントロピー復号モジュール１５０は、シーケンスパラメータセットＮＡＬユニットからのシーケンスパラメータセット、ピクチャーパラメータセットＮＡＬユニットからのピクチャーパラメータセット、ＳＥＩ  ＮＡＬユニットからのＳＥＩデータなどを抽出しエントロピー復号するパース演算を実行し得る。
【０１１０】
加えて、ビットストリームのＮＡＬユニットは、コード化スライスＮＡＬユニットを含み得る。ビットストリームに対してパース演算を実行することの一部として、ビデオデコーダ３０は、コード化スライスＮＡＬユニットからコード化スライスを抽出しエントロピー復号するパース演算を実行し得る。コード化スライスのそれぞれは、スライスヘッダとスライスデータとを含み得る。スライスヘッダは、スライスに関するシンタックス要素を含んでいることがある。スライスヘッダ中のシンタックス要素は、スライスを含んでいるピクチャーに関連付けられたピクチャーパラメータセットを識別するシンタックス要素を含み得る。
【０１１１】
コード化スライスＮＡＬユニットのスライスデータは、複数のセグメントを含み得る。セグメントのそれぞれは、異なるピクチャーパーティション（たとえば、タイルまたはＷＰＰウェイブ）に関連付けられたコード化ツリーブロックを含み得る。スライスデータ中のセグメントのそれぞれがバイト境界において開始するようにセグメントのうちの１つまたは複数がパディングされ得る。コード化スライスＮＡＬユニットのスライスヘッダは、セグメントのためのエントリーポイントを示し得る。この場合、セグメントが常にバイト境界において開始するので、ビデオデコーダ３０は、バイト単位のメモリアドレス指定を使用することによって単純な方式で異なる復号スレッドに上記セグメントのうちの異なるセグメントを割り当てることが可能であり得る。異なる復号スレッドは、セグメントのコード化ツリーブロックをパースし、対応するツリーブロックに関連付けられたビデオデータを並列に再構成し得る。
【０１１２】
コード化スライスＮＡＬユニットからスライスデータを抽出することの一部として、エントロピー復号モジュール１５０は、コード化ＣＵからシンタックス要素を抽出するパース演算を実行し得る。抽出されたシンタックス要素は、変換係数ブロックに関連付けられたシンタックス要素を含み得る。エントロピー復号モジュール１５０は、次いでシンタックス要素のうちのいくつかに対してＣＡＢＡＣ復号演算を実行し得る。
【０１１３】
エントロピー復号モジュール１５０が区分されていないＣＵに対してパース演算を実行した後、ビデオデコーダ３０は、区分されていないＣＵに対して再構成演算を実行し得る。区分されていないＣＵに対して再構成演算を実行するために、ビデオデコーダ３０は、ＣＵの各ＴＵに対して再構成演算を実行し得る。ＣＵの各ＴＵについて再構成演算を実行することによって、ビデオデコーダ３０は、ＣＵに関連付けられた残差ビデオブロックを再構成し得る。
【０１１４】
ＴＵに対して再構成演算を実行することの一部として、逆量子化モジュール（inverse quantization module）１５４は、ＴＵに関連付けられた変換係数ブロックを逆量子化（inverse quantize）、すなわち、逆量子化（de-quantize）し得る。逆量子化モジュール１５４は、ＨＥＶＣのために提案される、またはＨ．２６４復号規格によって定義される逆量子化処理と同様の方式で、変換係数ブロックを逆量子化し得る。逆量子化モジュール１５４は、量子化のディグリー（degree of quantization）を判定し、同様に、逆量子化モジュール１５４が適用するべき逆量子化のディグリー（degree of inverse quantization）を判定するために、変換係数ブロックのＣＵのためにビデオエンコーダ２０によって計算される量子化パラメータＱＰを使用し得る。
【０１１５】
逆量子化モジュール１５４が変換係数ブロックを逆量子化した後、逆変換モジュール１５６は、変換係数ブロックに関連付けられたＴＵの残差ビデオブロックを生成し得る。逆変換モジュール１５６は、ＴＵの残差ビデオブロックを生成するために、逆変換を変換係数ブロックに適用し得る。たとえば、逆変換モジュール１５６は、逆ＤＣＴ、逆整数変換（inverse integer transform）、逆カルーネンレーベ変換（inverse Karhunen-Loeve transform）（ＫＬＴ）、逆回転変換（inverse rotational transform）、逆方向性変換（inverse directional transform）、または別の逆変換を変換係数ブロックに適用し得る。
【０１１６】
いくつかの例では、逆変換モジュール１５６は、ビデオエンコーダ２０からのシグナリングに基づいて、変換係数ブロックに適用するべき逆変換を判定し得る。そのような例では、逆変換モジュール１５６は、変換係数ブロックに関連付けられたツリーブロックの４分木のルートノードにおいてシグナリングされた変換に基づいて、逆変換を判定し得る。他の例では、逆変換モジュール１５６は、たとえばブロックサイズ、コーディングモードなどのような、１つまたは複数のコーディング特性から、逆変換を推論し得る。いくつかの例では、逆変換モジュール１５６は、カスケード逆変換（cascaded inverse transform）を適用し得る。
【０１１７】
いくつかの例では、動き補償モジュール１６２は、補間フィルタ（interpolation filters）に基づく補間を実行することによって、ＰＵの予測されたビデオブロックをリファイン（refine）し得る。サブサンプル精度（sub-sample precision）をもつ動き補償に使用されるべき補間フィルタの識別子は、シンタックス要素中に含まれ得る。動き補償モジュール１６２は、ＰＵの予測されたビデオブロックの生成中にビデオエンコーダ２０によって使用されたのと同じ補間フィルタを使用して、参照ブロックのサブ整数サンプル（sub-integer samples）に対する補間される値を計算し得る。動き補償モジュール１６２は、受信したシンタックス情報に従って、ビデオエンコーダ２０によって使用された補間フィルタを判定し、その補間フィルタを使用して、予測されたビデオブロックを生成し得る。
【０１１８】
イントラ予測を使用してＰＵが符号化される場合、イントラ予測モジュール１６４は、イントラ予測を実行して、ＰＵの予測されたビデオブロックを生成し得る。たとえば、イントラ予測モジュール１６４は、ビットストリーム中のシンタックス要素に基づいて、ＰＵのイントラ予測モードを判定し得る。ビットストリームは、ＰＵのイントラ予測モードを判定するためにイントラ予測モジュール１６４が使用し得るシンタックス要素を含み得る。
【０１１９】
いくつかの事例では、シンタックス要素は、イントラ予測モジュール１６４が別のＰＵのイントラ予測モードを使用して現在ＰＵのイントラ予測モードを判定するべきであることを、示し得る。たとえば、現在ＰＵのイントラ予測モードが、隣接ＰＵのイントラ予測モードと同じであることがあり得る。言い換えれば、隣接ＰＵのイントラ予測モードは、現在ＰＵに対して最もあり得るモードであり得る。したがって、この例では、ビットストリームは、ＰＵのイントラ予測モードが、隣接ＰＵのイントラ予測モードと同じであることを示す、小さいシンタックス要素を含み得る。イントラ予測モジュール１６４は、次いで、イントラ予測モードを使用して、空間的に隣接するＰＵのビデオブロックに基づいて、ＰＵの予測データ（たとえば、予測されたサンプル）を生成し得る。
【０１２０】
再構成モジュール１５８は、適用可能なとき、ＣＵのＴＵに関連付けられた残差ビデオブロックとＣＵのＰＵの予測されたビデオブロックとを使用して、すなわち、イントラ予測データまたはインター予測データのいずれかを使用して、ＣＵのビデオブロックを再構成し得る。したがって、ビデオデコーダ３０は、ビットストリーム中のシンタックス要素に基づいて、予測されたビデオブロックと残差ビデオブロックとを生成し得、予測されたビデオブロックと残差ビデオブロックとに基づいて、ビデオブロックを生成し得る。
【０１２１】
再構成モジュール１５８がＣＵのビデオブロックを再構成した後、フィルタモジュール１５９は、デブロッキング演算を実行して、ＣＵに関連付けられたブロッキングアーティファクトを低減し得る。フィルタユニット１５９がデブロッキング演算を実行してＣＵに関連付けられたブロッキングアーティファクトを低減した後、ビデオデコーダ３０は、復号化ピクチャーバッファ１６０にＣＵのビデオブロックを記憶し得る。復号化ピクチャーバッファ１６０は、後続の動き補償、イントラ予測、および図１のディスプレイデバイス３２などのディスプレイデバイス上での提示のために、参照ピクチャーを与え得る。たとえば、ビデオデコーダ３０は、復号化ピクチャーバッファ１６０中のビデオブロックに基づいて、他のＣＵのＰＵに対して、イントラ予測演算またはインター予測演算を実行し得る。
【０１２２】
図４は、スライスのためのスライスデータを生成するための例示的な動作２００を示すフローチャートである。ビデオエンコーダ２０（図１および図２）などの、ビデオエンコーダが動作２００を実行し得る。図４の例は一例にすぎない。他の例示的な動作が他の方法でスライスデータを生成し得る。
【０１２３】
ビデオエンコーダが動作２００を開始した後、ビデオエンコーダは、ツリーブロックアドレスが現在スライスの初期ツリーブロックを識別するように、ツリーブロックアドレスを初期化し得る（２０２）。現在スライスは、ビデオエンコーダが現在符号化しているスライスであり得る。現在スライスの初期ツリーブロックは、現在ピクチャーのためのツリーブロックコーディング順序に従って現在スライスに関連付けられた第１のツリーブロックであり得る。説明を簡単にするために、本開示では、ツリーブロックアドレスによって識別されるツリーブロックを現在ツリーブロックと呼ぶことがある。
【０１２４】
ビデオエンコーダは、現在スライスのためのコード化スライスＮＡＬユニットのスライスデータに、現在ツリーブロックのためのシンタックス要素を付加し得る（２０４）。現在ツリーブロックのためのシンタックス要素は、現在ツリーブロックの４分木中のシンタックス要素を含み得る。現在ツリーブロックの４分木中のシンタックス要素は、イントラ予測モードを示すシンタックス要素、動き情報、変換係数レベルを示すシンタックス要素などを含み得る。
【０１２５】
さらに、ビデオエンコーダは、現在スライス中にさらなるデータがあるかどうかを判定し得る（２０６）。ツリーブロックアドレスによって示されるツリーブロックが現在スライス内にある場合、現在スライス中にさらなるデータがあり得る。現在スライス中にさらなるデータがないと判定したことに応答して（２０６の「ＮＯ」）、ビデオエンコーダは、ビデオエンコーダがスライスデータに必要なシンタックス要素のすべてを追加したので、動作２００を終了し得る。
【０１２６】
ビデオエンコーダは、様々な方法で、現在スライス中にさらなるデータがあるかどうかを判定し得る。たとえば、ビデオエンコーダは、ツリーブロックのためのシンタックス要素を出力するために関数「ｃｏｄｉｎｇ＿ｔｒｅｅ（  ）」を呼び出し得る。この例では、関数「ｃｏｄｉｎｇ＿ｔｒｅｅ（  ）」は、現在スライス中にさらなるデータがあるかどうかを示す「ｍｏｒｅＤａｔａＦｌａｇ」を返し得る。
【０１２７】
現在スライスに関連付けられたさらなるデータがあると判定したことに応答して（２０６の「ＹＥＳ」）、ビデオエンコーダは、現在ピクチャーのタイルが独立しているかどうかと、現在スライスの次のツリーブロックが現在スライスの現在ツリーブロックとは異なるタイル中にあるかどうかとを判定し得る（２０８）。上記で説明したように、ピクチャーのタイルは、ピクチャー内予測（たとえば、現在ピクチャー中のデータを使用するイントラ予測、インター予測、および現在ピクチャーの他のタイルからのデータに基づくＣＡＢＡＣコンテキスト選択）が禁止される場合、独立していることがある。ビデオエンコーダは、様々な方法で、現在ピクチャーのタイルが独立しているかどうかを判定し得る。たとえば、現在ピクチャーに関連付けられたシーケンスパラメータセットがシンタックス要素「ｔｉｌｅ＿ｂｏｕｎｄａｒｙ＿ｉｎｄｅｐｅｎｄｅｎｃｅ＿ｉｄｃ」を含み得る。この例では、「ｔｉｌｅ＿ｂｏｕｎｄａｒｙ＿ｉｎｄｅｐｅｎｄｅｎｃｅ＿ｉｄｃ」が０に等しい場合、現在ピクチャーのタイルは独立しておらず、タイル境界を越えるピクチャー内予測は可能にされる。「ｔｉｌｅ＿ｂｏｕｎｄａｒｙ＿ｉｎｄｅｐｅｎｄｅｎｃｅ＿ｉｄｃ」が０に等しい場合、スライス境界を越えるピクチャー内予測は依然として禁止され得る。「ｔｉｌｅ＿ｂｏｕｎｄａｒｙ＿ｉｎｄｅｐｅｎｄｅｎｃｅ＿ｉｄｃ」が１に等しい場合、現在ピクチャーのタイルは独立しており、タイル境界を越えるピクチャー内予測は可能にされない。
【０１２８】
ビデオエンコーダは、現在スライスの次のツリーブロックが現在スライスの現在ツリーブロックとは異なるタイル中にあるかどうかを様々な方法で判定し得る。たとえば、ビデオエンコーダは、現在スライスの次のツリーブロックのツリーブロックアドレスを判定し得る。この例では、ビデオエンコーダは、次のツリーブロックのツリーブロックアドレスをパラメータとしてとり、次のツリーブロックが現在ツリーブロックとは異なるタイル中にあるかどうかを示す値「ｎｅｗＴｉｌｅＦｌａｇ」を返す、関数「ＮｅｗＴｉｌｅ（．．．）」を呼び出し得る。
【０１２９】
現在ピクチャーのタイルが独立していないか、または次のツリーブロックが現在ツリーブロックとは異なるタイル中にない場合（２０８の「ＮＯ」）、ビデオエンコーダは、現在ピクチャーがＷＰＰを使用して符号化されており、現在スライスの次のツリーブロックが現在スライスの現在ツリーブロックとは異なるＷＰＰウェイブ中にあるかどうかを判定し得る（２１０）。ビデオエンコーダは、現在スライスの次のツリーブロックが現在スライスの現在ツリーブロックとは異なるＷＰＰウェイブ中にあるかどうかを様々な方法で判定し得る。たとえば、ビデオエンコーダは、現在スライスの次のツリーブロックのツリーブロックアドレスを判定し得る。この例では、ビデオエンコーダは、次のツリーブロックのツリーブロックアドレスをパラメータとしてとり、次のツリーブロックが現在ツリーブロックとは異なるＷＰＰウェイブ中にあるかどうかを示す値「ｎｅｗＷａｖｅＦｌａｇ」を返す、関数「ＮｅｗＷａｖｅ（．．．）」を呼び出し得る。
【０１３０】
現在ピクチャーがＷＰＰを使用して符号化されており、次のツリーブロックが現在ツリーブロックとは異なるＷＰＰウェイブ中にあると判定したことに応答して（２１０の「ＹＥＳ」）、または現在ピクチャーのタイルが独立しており、次のツリーブロックが現在ツリーブロックとは異なるタイル中にあると判定したことに応答して（２０８の「ＹＥＳ」）、ビデオエンコーダは、現在セグメントがバイト・アラインされているかどうかを判定し得る（２１２）。言い換えれば、ビデオエンコーダは、現在セグメントがバイト境界上で終了するかどうかを判定し得る。現在セグメントは、現在ツリーブロックが関連付けられたピクチャーパーティション（たとえば、タイルまたはＷＰＰウェイブ）に関連付けられたセグメントである。現在セグメントがバイト・アラインされていないと判定したことに応答して（２１２の「ＮＯ」）、ビデオエンコーダは、現在セグメントの終端にパディングビットを付加し得る（２１４）。パディングビットは様々な値を有し得る。たとえば、パディングビットは、常に、１に等しい値を有し得る。他の例では、パディングビットは、常に、０に等しい値を有し得る。
【０１３１】
現在セグメントの終端にパディングビットを付加した後に、ビデオエンコーダは、現在セグメントがバイト・アラインされているかどうかを再び判定し得る（２１２）。このようにして、ビデオエンコーダは、現在セグメントがバイト・アラインされるまで、スライスデータの終端にパディングビットを付加し続け得る。
【０１３２】
スライスデータがバイト・アラインされていると判定したことに応答して（２１２の「ＹＥＳ」）、ビデオエンコーダはツリーブロックアドレスを更新し得る（２１６）。ビデオエンコーダは、ツリーブロックアドレスが現在ピクチャーのツリーブロックコーディング順序に従って次のツリーブロックを示すようにツリーブロックアドレスを更新し得る。たとえば、ビデオエンコーダがツリーブロックアドレスを更新するとき、ツリーブロックアドレスは、ツリーブロックアドレスによって前に示されたツリーブロックの右のツリーブロックを識別し得る。以下で詳細に説明する、図７は、複数のタイルに区分されたピクチャーのための例示的なツリーブロックコーディング順序を示す概念図である。
【０１３３】
ツリーブロックアドレスを更新した後に、ビデオエンコーダは、現在スライス中にさらなるデータがあるかどうかを判定し得る（２１８）。現在スライス中にさらなるデータがあると判定したことに応答して（２１８の「ＹＥＳ」）、または現在ピクチャーがＷＰＰを使用して符号化されておらず、次のツリーブロックが現在ツリーブロックとは異なるタイル中にないと判定したことに応答して（２１０の「ＮＯ」）、ビデオエンコーダは、スライスデータに現在ツリーブロックのためのシンタックス要素を付加し得る（２０４）。このようにして、ビデオエンコーダは、スライスデータに現在スライスの各ツリーブロックのためのシンタックス要素を付加し得、異なるピクチャーパーティションに関連付けられたセグメントがバイト境界において開始するようにセグメントがパディングされることを保証し得る。
【０１３４】
現在スライス中にさらなるデータがないと判定したことに応答して（２１８の「ＮＯ」）、ビデオエンコーダは、ビデオエンコーダがスライスデータに現在スライスのシンタックス要素のすべてを付加していることがあるので、動作２００を終了し得る。
【０１３５】
図５は、コード化スライスＮＡＬユニットを復号するための例示的な動作２５０を示すフローチャートである。ビデオデコーダ３０（図１および図３）などの、ビデオデコーダが動作２５０を実行し得る。図５の例は一例にすぎない。他の例示的な動作が、コード化スライスＮＡＬユニットを復号するために他の動作を実行し得る。
【０１３６】
図５の例では、ビデオデコーダはコード化スライスＮＡＬユニットをバイトアドレス指定のメモリに記憶し得る（２５２）。コード化スライスＮＡＬユニットは、スライスヘッダとスライスデータとを含み得る。スライスデータは、複数のセグメントを含み得る。各セグメントがバイト境界において開始するようにセグメントのうちの１つまたは複数がパディングされ得る。
【０１３７】
コード化スライスＮＡＬユニットをメモリに記憶した後に、ビデオデコーダは、コード化スライスＮＡＬユニットのスライスデータ内のセグメントの位置を識別し得る（２５４）。ビデオデコーダは、様々な方法でセグメントの位置を識別し得る。たとえば、ビデオデコーダは、セグメントのバイトオフセットを示すコード化スライスＮＡＬユニットのスライスヘッダ中のシンタックス要素に基づいてセグメントの位置を識別し得る。この例では、スライスヘッダは、スライスデータの第１のセグメントの位置がスライスヘッダの終端の直後にくることがあるので、第１のセグメントのためのバイトオフセットを含まないことがある。別の例では、ビデオデコーダは、スライスデータ中のエントリーポイント・マーカーに基づいてセグメントの位置を識別し得る。エントリーポイント・マーカーは、セグメント間に配置（disposed）された値であり得る。
【０１３８】
スライスデータ内のセグメントの位置を識別した後に、ビデオデコーダは、２つ以上の異なる復号スレッドにセグメントのうちの２つ以上を割り当て得る（２５６）。復号スレッドのそれぞれは、上記で説明したように、復号スレッドに割り当てられたセグメント中のコード化ツリーブロックのシンタックス要素をパースし、対応するツリーブロックのためのビデオブロックを再構成し得る。
【０１３９】
図６は、ウェイブフロント並列処理を示す概念図である。上記で説明したように、ピクチャーは、ツリーブロックにそれぞれが関連付けられる、ビデオブロックに区分され得る。図６は、ツリーブロックに関連付けられたビデオブロックを白い正方形の格子として示している。ピクチャーは、ツリーブロック行３００Ａ〜３００Ｅ（総称して、「ツリーブロック行３００」（treeblock rows 300））を含む。
【０１４０】
第１のスレッドが、ツリーブロック行３００Ａ中のツリーブロックをコーディングしていることがある。同時に、他のスレッドが、ツリーブロック行３００Ｂ、３００Ｃ、および３００Ｄ中のツリーブロックをコーディングしていることがある。図６の例では、第１のスレッドはツリーブロック３０２Ａを現在コーディングしており、第２のスレッドはツリーブロック３０２Ｂを現在コーディングしており、第３のスレッドはツリーブロック３０２Ｃを現在コーディングしており、第４のスレッドはツリーブロック３０２Ｄを現在コーディングしている。本開示では、ツリーブロック３０２Ａ、３０２Ｂ、３０２Ｃ、および３０２Ｄを「現在ツリーブロック３０２」（current treeblocks 302）と総称することがある。ビデオコーダは、すぐ上の行の３つ以上のツリーブロックがコーディングされた後、ツリーブロック行をコーディングし始め得るので、現在ツリーブロック３０２は、２つのツリーブロックの幅だけ互いから水平方向に変位される。
【０１４１】
図６の例では、スレッドは、現在ツリーブロック３０２中のＣＵのためのイントラ予測またはインター予測を実行するとき、太いグレーの矢印によって示されるツリーブロックからのデータを使用し得る。（スレッドがＣＵのためのインター予測を実行するとき、スレッドは、１つまたは複数の参照フレームからのデータをも使用し得る。）スレッドが所与のツリーブロックをコーディングするとき、スレッドは、前にコーディングされたツリーブロックに関連付けられた情報に基づいて１つまたは複数のＣＡＢＡＣコンテキストを選択し得る。スレッドは、所与のツリーブロックの第１のＣＵに関連付けられたシンタックス要素に対してＣＡＢＡＣコーディングを実行するために１つまたは複数のＣＡＢＡＣコンテキストを使用し得る。所与のツリーブロックが行の最左ツリーブロックでない場合、スレッドは、所与のツリーブロックの左のツリーブロックの最後のＣＵに関連付けられた情報に基づいて１つまたは複数のＣＡＢＡＣコンテキストを選択し得る。所与のツリーブロックが行の最左ツリーブロックである場合、スレッドは、所与のツリーブロックの上の２つ右のツリーブロックの最後のＣＵに関連付けられた情報に基づいて１つまたは複数のＣＡＢＡＣコンテキストを選択し得る。スレッドは、現在ツリーブロック３０２の第１のＣＵのためのＣＡＢＡＣコンテキストを選択するために、細い黒い矢印によって示されるツリーブロックの最後のＣＵからのデータを使用し得る。
【０１４２】
図７は、複数のタイル３５２Ａ、３５２Ｂ、および３５２Ｃに区分されたピクチャー３５０のための例示的なツリーブロックコーディング順序を示す概念図である。ピクチャー３５０中の各正方形の白いブロックが、ツリーブロックに関連付けられたビデオブロックを表す。太い垂直破線が例示的な垂直タイル境界を示す。太いグレーの線が例示的なスライス境界を示す。
【０１４３】
ビデオブロック中の番号が、ピクチャー３５０のためのツリーブロックコーディング順序における対応するツリーブロック（ＬＣＵ）の位置を示す。図７の例に示すように、最左タイル３５２Ａ中のツリーブロックのそれぞれは、中間タイル３５２Ｂ中のいずれかのツリーブロックの前のツリーブロックコーディング順序で発生する。中間タイル３５２Ｂ中のツリーブロックのそれぞれは、最右タイル３５２Ｃ中のいずれかのツリーブロックの前のツリーブロックコーディング順序で発生する。タイル３５２Ａ、３５２Ｂ、および３５２Ｃのそれぞれの中で、ツリーブロックはラスタスキャン順序に従ってコーディングされる。
【０１４４】
ビデオエンコーダが、ピクチャー３５０のための２つのコード化スライスＮＡＬユニットを生成し得る。第１のコード化スライスＮＡＬユニットは、ピクチャー３５０の左スライスに関連付けられ得る。第１のコード化スライスＮＡＬユニットは、ツリーブロック１〜２３の符号化表現を含み得る。第１のコード化スライスＮＡＬユニットのスライスデータは、２つのセグメントを含み得る。第１のセグメントは、ツリーブロック１〜１５の符号化表現を含み得る。第２のセグメントは、ツリーブロック１６〜３０の符号化表現を含み得る。本開示の技法によれば、第２のセグメントがバイト境界において開始するように、第１のセグメントがパディングされ得る。
【０１４５】
第２のコード化スライスＮＡＬユニットは、ピクチャー３５０の右スライスに関連付けられ得る。第２のコード化スライスＮＡＬユニットは、ツリーブロック２４〜４５の符号化表現を含み得る。第２のコード化スライスＮＡＬユニットのスライスデータは、２つのセグメントを含み得る。第１のセグメントは、ツリーブロック２４〜３０の符号化表現を含み得る。第２のセグメントは、ツリーブロック３１〜４５の符号化表現を含み得る。第２のセグメントがバイト境界において開始するように、第１のセグメントがパディングされ得る。
【０１４６】
図８は、例示的なコード化スライスＮＡＬユニット４００を示す概念図である。図８の例に示すように、コード化スライスＮＡＬユニット４００は、スライスヘッダ４０２とスライスデータ４０４とを含む。スライスデータ４０４は、第１のセグメント４０６と第２のセグメント４０８とを含む。セグメント４０６は、コード化ツリーブロック４１０Ａ〜４１０Ｎとパディングデータ４１２とを含む。セグメント４０８は、コード化ツリーブロック４１４Ａ〜４１４Ｎを含む。
【０１４７】
１つまたは複数の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合せで実装され得る。ソフトウェアで実装される場合、機能は、１つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含み得、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、（１）非一時的である有形コンピュータ可読記憶媒体、あるいは（２）信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明した技法の実装のための命令、コードおよび／またはデータ構造を取り出すために１つまたは複数のコンピュータあるいは１つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
【０１４８】
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（登録商標）、ＣＤ−ＲＯＭまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を含むことができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク（disk）およびディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザーディスク（登録商標）（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（disk）およびＢｌｕ−ｒａｙディスク（disc）を含み、ディスク（disk）は、通常、データを磁気的に再生し、ディスク（disc）は、データをレーザーで光学的に再生する。上記の組み合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【０１４９】
命令は、１つまたは複数のデジタル信号プロセッサ（ＤＳＰ）などの１つまたは複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、あるいは他の等価な集積回路またはディスクリート論理回路によって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書で説明した技法の実装に好適な他の構造のいずれかを指すことがある。さらに、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用のハードウェアおよび／またはソフトウェアモジュール内に与えられ得、あるいは複合コーデックに組み込まれ得る。また、本技法は、１つまたは複数の回路または論理要素中に十分に実装され得る。
【０１５０】
本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）またはＩＣのセット（たとえば、チップセット）を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示する技法を実行するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明したが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェアおよび／またはファームウェアとともに、上記で説明した１つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作ハードウェアユニットの集合によって与えられ得る。
【０１５１】
様々な例について説明した。これらおよび他の例は以下の特許請求の範囲内に入る。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］
ビデオデータを符号化するための方法であって、前記方法は、
ピクチャーを複数のピクチャーパーティションに分割することと、ここで、前記ピクチャーは複数のツリーブロックを有し、前記ピクチャーパーティションは前記ピクチャーの前記ツリーブロックのオーバーラップしないサブセットに関連付けられる、
前記ピクチャーのスライスに関連付けられた前記ツリーブロックの符号化表現を含むコード化スライスネットワークアブストラクションレイヤ（ＮＡＬ）ユニットを生成することと、ここで、前記ツリーブロックの前記符号化表現は、前記コード化スライスＮＡＬユニット内で前記ピクチャーパーティションのうちの異なるピクチャーパーティションに関連付けられたセグメントにグループ化され、前記セグメントのそれぞれがバイト境界上で開始するように前記セグメントのうちの１つまたは複数がパディングされる、を含む、方法。
［Ｃ２］
前記コード化スライスＮＡＬユニットを生成することは、前記セグメントのうちの１つまたは複数のためのエントリーポイントを示すスライスヘッダを生成することを含む、Ｃ１に記載の方法。
［Ｃ３］
前記セグメントのための前記エントリーポイントは、前記セグメントのバイトオフセットを示す、Ｃ２に記載の方法。
［Ｃ４］
前記ピクチャーパーティションは、タイルまたはウェイブフロント並列処理（ＷＰＰ）ウェイブである、Ｃ１に記載の方法。
［Ｃ５］
前記ピクチャーに関連付けられたパラメータセットを生成することをさらに含み、前記パラメータセットは、第１の値を有するフラグを含み、前記第１の値は、前記セグメントのそれぞれがバイト境界において開始するように前記セグメントのうちの前記１つまたは複数がパディングされることを示し、
前記フラグが第２の値を有するとき、前記セグメントはバイト境界において開始することも開始しないこともある、Ｃ１に記載の方法。
［Ｃ６］
前記セグメントは、所与のセグメントを含み、
前記コード化スライスＮＡＬユニットを生成することは、次のツリーブロックが、前記スライス内にあり、前記所与のセグメントとは異なるピクチャーパーティションに関連付けられる場合に、前記所与のセグメントにビットを付加するパディング演算を実行することを含む、Ｃ１に記載の方法。
［Ｃ７］
前記ピクチャーパーティションは、タイルであり、
前記コード化スライスＮＡＬユニットを生成することは、前記タイルが互いから独立していると判定した後にのみ、前記セグメントがバイト境界において開始することを保証するパディング演算を実行することを含む、Ｃ１に記載の方法。
［Ｃ８］
ビデオデータを復号する方法であって、前記方法は、
ピクチャーのスライスに関連付けられたツリーブロックの符号化表現を含むコード化スライスネットワークアブストラクションレイヤ（ＮＡＬ）ユニットを記憶することと、ここで、前記ピクチャーは複数のピクチャーパーティションに区分され、前記ツリーブロックの前記符号化表現は前記ピクチャーパーティションのうちの異なるピクチャーパーティションに関連付けられたセグメントにグループ化され、前記セグメントのそれぞれがバイト境界において開始するように前記セグメントのうちの１つまたは複数がパディングされる、
前記ツリーブロックの前記符号化表現を復号することを含む、方法。
［Ｃ９］
前記コード化スライスＮＡＬユニットは、前記セグメントのうちの１つまたは複数のためのエントリーポイントを示すスライスヘッダを含む、Ｃ８に記載の方法。
［Ｃ１０］
前記セグメントのための前記エントリーポイントは、前記セグメントのバイトオフセットを示す、Ｃ９に記載の方法。
［Ｃ１１］
前記ピクチャーパーティションは、タイルまたはウェイブフロント並列処理（ＷＰＰ）ウェイブである、Ｃ８に記載の方法。
［Ｃ１２］
前記ピクチャーに関連付けられたパラメータセットを記憶することをさらに含み、前記パラメータセットは、第１の値を有するフラグを含み、前記第１の値は、前記セグメントのそれぞれがバイト境界において開始するように前記セグメントのうちの前記１つまたは複数がパディングされることを示し、
前記フラグが第２の値を有するとき、前記セグメントはバイト境界において開始することも開始しないこともある、Ｃ８に記載の方法。
［Ｃ１３］
前記ピクチャーパーティションは、タイルであり、
前記タイルが互いから独立しているとき、前記セグメントがバイト境界において開始するように前記セグメントのうちの１つまたは複数がパディングされる、Ｃ８に記載の方法。
［Ｃ１４］
前記ツリーブロックの前記符号化表現を復号することは、前記セグメントのうちの２つ以上の中の前記ツリーブロックの前記符号化表現を並列に復号することを含む、Ｃ８に記載の方法。
［Ｃ１５］
ビデオデータを符号化するビデオ符号化デバイスであって、前記ビデオ符号化デバイスは、
ピクチャーを複数のピクチャーパーティションに分割することと、ここで、前記ピクチャーは複数のツリーブロックを有し、前記ピクチャーパーティションは前記ピクチャーの前記ツリーブロックのオーバーラップしないサブセットに関連付けられる、
前記ピクチャーのスライスに関連付けられた前記ツリーブロックの符号化表現を含むコード化スライスネットワークアブストラクションレイヤ（ＮＡＬ）ユニットを生成することと、ここで、前記ツリーブロックの前記符号化表現は、前記コード化スライスＮＡＬユニット内で前記ピクチャーパーティションのうちの異なるピクチャーパーティションに関連付けられたセグメントにグループ化され、前記セグメントのそれぞれがバイト境界上で開始するように前記セグメントのうちの１つまたは複数がパディングされる、を行うように構成された１つまたは複数のプロセッサを含む、ビデオ符号化デバイス。
［Ｃ１６］
前記１つまたは複数のプロセッサは、前記コード化スライスＮＡＬユニットが、前記セグメントのうちの１つまたは複数のためのエントリーポイントを示すスライスヘッダを含むように、前記コード化スライスＮＡＬユニットを生成するように構成された、Ｃ１５に記載のビデオ符号化デバイス。
［Ｃ１７］
前記セグメントのための前記エントリーポイントは、前記セグメントのバイトオフセットを示す、Ｃ１６に記載のビデオ符号化デバイス。
［Ｃ１８］
前記ピクチャーパーティションは、タイルまたはウェイブフロント並列処理（ＷＰＰ）ウェイブである、Ｃ１５に記載のビデオ符号化デバイス。
［Ｃ１９］
前記１つまたは複数のプロセッサは、前記ピクチャーに関連付けられたパラメータセットを生成するように構成され、前記パラメータセットは、第１の値を有するフラグを含み、前記第１の値は、前記セグメントのそれぞれがバイト境界において開始するように前記セグメントのうちの前記１つまたは複数がパディングされることを示し、
前記フラグが第２の値を有するとき、前記セグメントはバイト境界において開始することも開始しないこともある、Ｃ１５に記載のビデオ符号化デバイス。
［Ｃ２０］
前記セグメントは、所与のセグメントを含み、
前記１つまたは複数のプロセッサは、次のツリーブロックが、前記スライス内にあり、前記所与のセグメントとは異なるピクチャーパーティションに関連付けられる場合に、前記所与のセグメントにビットを付加するパディング演算を実行するように構成された、Ｃ１５に記載のビデオ符号化デバイス。
［Ｃ２１］
前記ピクチャーパーティションは、タイルであり、
１つまたは複数のプロセッサは、前記タイルが互いから独立していると判定した後にのみ、前記セグメントがバイト境界において開始することを保証するパディング演算を実行するように構成された、Ｃ１５に記載のビデオ符号化デバイス。
［Ｃ２２］
前記ビデオ符号化デバイスは、モバイルコンピューティングデバイスである、Ｃ１５に記載のビデオ符号化デバイス。
［Ｃ２３］
ビデオデータを復号するビデオ復号デバイスであって、前記ビデオ復号デバイスは、
ピクチャーのスライスに関連付けられたツリーブロックの符号化表現を含むコード化スライスネットワークアブストラクションレイヤ（ＮＡＬ）ユニットを記憶するメモリと、ここで、前記ピクチャーは複数のピクチャーパーティションに分割され、前記ツリーブロックの前記符号化表現は前記ピクチャーパーティションのうちの異なるピクチャーパーティションに関連付けられたセグメントにグループ化され、前記セグメントのそれぞれがバイト境界において開始するように前記セグメントのうちの１つまたは複数がパディングされる、
前記ツリーブロックの前記符号化表現を復号するように構成された１つまたは複数のプロセッサとを含む、ビデオ復号デバイス。
［Ｃ２４］
前記コード化スライスＮＡＬユニットは、前記セグメントのうちの１つまたは複数のためのエントリーポイントを示すスライスヘッダを含む、Ｃ２３に記載のビデオ復号デバイス。
［Ｃ２５］
前記セグメントのための前記エントリーポイントは、前記セグメントのバイトオフセットを示す、Ｃ２４に記載のビデオ復号デバイス。
［Ｃ２６］
前記ピクチャーパーティションは、タイルまたはウェイブフロント並列処理（ＷＰＰ）ウェイブである、Ｃ２３に記載のビデオ復号デバイス。
［Ｃ２７］
前記メモリは、前記ピクチャーに関連付けられたパラメータセットを記憶し、前記パラメータセットは、第１の値を有するフラグを含み、前記第１の値は、前記セグメントのそれぞれがバイト境界において開始するように前記セグメントのうちの前記１つまたは複数がパディングされることを示し、
前記フラグが第２の値を有するとき、前記セグメントはバイト境界において開始することも開始しないこともある、Ｃ２３に記載のビデオ復号デバイス。
［Ｃ２８］
前記ビデオ復号デバイスは、モバイルコンピューティングデバイスである、Ｃ２３に記載のビデオ復号デバイス。
［Ｃ２９］
前記１つまたは複数のプロセッサが、前記セグメントのうちの２つ以上の中の前記ツリーブロックの前記符号化表現を並列に復号するように構成された、Ｃ２３に記載のビデオ復号デバイス。
［Ｃ３０］
１つまたは複数のプロセッサによって実行されたとき、
ピクチャーを複数のピクチャーパーティションに分割することと、ここで、前記ピクチャーは複数のツリーブロックを有し、前記ピクチャーパーティションは前記ピクチャーの前記ツリーブロックのオーバーラップしないサブセットに関連付けられる、
前記ピクチャーのスライスに関連付けられた前記ツリーブロックの符号化表現を含むコード化スライスネットワークアブストラクションレイヤ（ＮＡＬ）ユニットを生成することと、ここで、前記ツリーブロックの前記符号化表現は、前記コード化スライスＮＡＬユニット内で前記ピクチャーパーティションのうちの異なるピクチャーパーティションに関連付けられたセグメントにグループ化され、前記セグメントのそれぞれがバイト境界上で開始するように前記セグメントのうちの１つまたは複数がパディングされる、を行うようにビデオ符号化デバイスを構成する、命令を記憶する１つまたは複数のコンピュータ可読記憶媒体を含む、コンピュータプログラム製品。
［Ｃ３１］
１つまたは複数のプロセッサによって実行されたとき、
ピクチャーのスライスに関連付けられたツリーブロックの符号化表現を含むコード化スライスネットワークアブストラクションレイヤ（ＮＡＬ）ユニットを記憶することと、ここで、前記ピクチャーは複数のピクチャーパーティションに分割され、前記ツリーブロックの前記符号化表現は前記ピクチャーパーティションのうちの異なるピクチャーパーティションに関連付けられたセグメントにグループ化され、前記セグメントのそれぞれがバイト境界において開始するように前記セグメントのうちの１つまたは複数がパディングされる、
前記ツリーブロックの前記符号化表現を復号することとを行うようにビデオ復号デバイスを構成する、命令を記憶する１つまたは複数のコンピュータ可読記憶媒体を含む、コンピュータプログラム製品。
［Ｃ３２］
ビデオデータを符号化するビデオ符号化デバイスであって、前記ビデオ符号化デバイスは、
ピクチャーを複数のピクチャーパーティションに分割するための手段と、ここで、前記ピクチャーは複数のツリーブロックを有し、前記ピクチャーパーティションは前記ピクチャーの前記ツリーブロックのオーバーラップしないサブセットに関連付けられる、
前記ピクチャーのスライスに関連付けられた前記ツリーブロックの符号化表現を含むコード化スライスネットワークアブストラクションレイヤ（ＮＡＬ）ユニットを生成するための手段と、ここで、前記ツリーブロックの前記符号化表現は、前記コード化スライスＮＡＬユニット内で前記ピクチャーパーティションのうちの異なるピクチャーパーティションに関連付けられたセグメントにグループ化され、前記セグメントのそれぞれがバイト境界上で開始するように前記セグメントのうちの１つまたは複数がパディングされる、を含む、ビデオ符号化デバイス。
［Ｃ３３］
ビデオデータを復号するビデオ復号デバイスであって、前記ビデオ復号デバイスは、
ピクチャーのスライスに関連付けられたツリーブロックの符号化表現を含むコード化スライスネットワークアブストラクションレイヤ（ＮＡＬ）ユニットを記憶するための手段と、ここで、前記ピクチャーは複数のピクチャーパーティションに分割され、前記ツリーブロックの前記符号化表現は前記ピクチャーパーティションのうちの異なるピクチャーパーティションに関連付けられたセグメントにグループ化され、前記セグメントのそれぞれがバイト境界において開始するように前記セグメントのうちの１つまたは複数がパディングされる、
前記ツリーブロックの前記符号化表現を復号するための手段とを含む、ビデオ復号デバイス。
【図１】
0005893747.tif 000002
【図２】
0005893747.tif 000003
【図３】
0005893747.tif 000004
【図４】
0005893747.tif 000005
【図５】
0005893747.tif 000006
【図６】
0005893747.tif 000007
【図７】
0005893747.tif 000008
【図８】
0005893747.tif 000009