本開示の技法は概して、ビデオコーディングプロセスにおけるインター予測に使われる参照ピクチャの管理を対象とする。より詳細には、本開示の技法は、ピクチャパラメータセット(PPS)などのパラメータセットでどの参照ピクチャがシグナリングされるべきかと、ビデオデコーダが参照ピクチャセットを構成するとき、ビデオデータのスライス用の初期参照ピクチャリストを構成するために参照ピクチャセットを並べ替える必要がないように、スライスヘッダでどの参照ピクチャがシグナリングされるべきかと、を選択することを対象とする。
ビデオコーダ(たとえば、ビデオエンコーダまたはビデオデコーダ)は通常、復号ピクチャバッファ(DPB)を含む。DPBは、参照ピクチャを含む復号ピクチャを記憶する。参照ピクチャは、ピクチャをインター予測するために使われる可能性があり得るピクチャである。したがって、ビデオコーダは、DPBに記憶された参照ピクチャの1つまたは複数のブロックに基づいて、現時点でコーディングされているピクチャのブロックを予測することができる。
DPBを効率的に使用するために、どの参照ピクチャがビデオデコーダにとって利用可能となるかがビデオエンコーダにわかるように、DPB管理プロセスが指定され得る。指定され得るDPB管理の態様は、たとえば、DPB中での復号ピクチャの記憶プロセス、参照ピクチャのマーキングプロセス、DPBからの復号ピクチャの出力および削除プロセスなどを含む。概して、いくつかの現行および開発中のビデオコーディング規格では、DPB管理は、ピクチャ識別および参照ピクチャ識別、参照ピクチャリスト構成、参照ピクチャマーキング、DPBからのピクチャ出力、DPBへのピクチャ挿入、およびDPBからのピクチャ削除という側面のうちの1つまたは複数を含み得る。
理解を助けるため、以下の説明ではいくつかのビデオコーディング規格に従って、参照ピクチャマーキングおよび参照ピクチャリスト構成がどのように起こり得るかを概観する。参照ピクチャマーキングのために、インター予測に使われる参照ピクチャの、M(num_ref_frames)と呼ばれる最大数が、アクティブシーケンスパラメータセット中で示される。参照ピクチャは、復号されると、「参照に使用される」とマーキングされる。参照ピクチャの復号により、M個より多いピクチャが「参照に使用される」とマーキングされた場合、少なくとも1つのピクチャが「参照に使用されない」とマーキングされていなければならない。DPB削除プロセスは次いで、「参照に使用されない」とマーキングされたピクチャが出力にも必要とされない場合、それらのピクチャをDPBから削除することになる。
ピクチャは、復号されると、非参照ピクチャまたは参照ピクチャのいずれかになり得る。参照ピクチャは、長期参照ピクチャであっても短期参照ピクチャであってもよく、参照ピクチャは、「参照に使用されない」とマーキングされると、参照にはそれ以上必要とされなくなる。いくつかのビデオコーディング規格には、参照ピクチャのステータスを変える参照ピクチャマーキング操作があり得る。
参照ピクチャマーキングには、概してスライディングウィンドウ制御および適応メモリ制御と呼ばれる、2つのタイプの制御操作があり得る。参照ピクチャマーキングのための操作モードは、ピクチャベースで選択することができる。スライディングウィンドウ操作は、一定数の短期参照ピクチャをもつ先入れ先出しキューとして作用し得る。言い換えると、スライディングウィンドウ操作では、復号時間が最も早い短期参照ピクチャが、暗黙的に、削除される最初のものである(参照用に使われないピクチャとマーキングされる)。
適応メモリ制御操作は、対照的に、短期または長期参照ピクチャを明示的に削除する。適応メモリ制御は、短期および長期参照ピクチャなどのステータスを切り替えることも可能にする。たとえば、適応メモリ制御操作において、ビデオエンコーダは、どのピクチャが参照に使用されるものとマーキングされるべきかを指定するシンタックス要素をシグナリングすることができる。ビデオデコーダは、シンタックス要素を受信し、指定された通りにピクチャをマーキングすればよい。適応メモリ制御操作とは異なり、スライディングウィンドウ操作中、ビデオエンコーダは、どのピクチャが参照に使用されるものとマーキングされるかはシグナリングする必要はなくてよい。そうではなく、ビデオデコーダは、暗黙的に(すなわち、シンタックス要素を受信せずに)、どのピクチャがスライディングウィンドウ内にあるかに基づいて、どのピクチャが参照に使用されるものとマーキングされるか判断してよい。
ビデオコーダは、どの参照ピクチャをインター予測目的で使うことができるかを示す参照ピクチャリストのビデオのスライス用の構成も課せられ得る。これらの参照ピクチャリストのうちの2つは、それぞれリスト0およびリスト1と呼ばれる。ビデオコーダは最初に、ビデオのスライス用の、リスト0とリスト1とを構成するためのデフォルトの構成技法(たとえば、リスト0とリスト1とを構成するための事前設定された構成方式)を利用する。任意選択で、初期リスト0およびリスト1が構成された後、ビデオデコーダは、初期リスト0とリスト1とを修正するようビデオデコーダに命令するシンタックス要素が存在するときは、それらのシンタックス要素を復号すればよい。
ビデオエンコーダは、DPB中の参照ピクチャの識別子(1つまたは複数)を示すシンタックス要素をシグナリングすればよく、ビデオエンコーダは、現在のピクチャのコード化ブロックを復号するのに、どの1つまたは複数の参照ピクチャを使うべきかを示す索引を、リスト0、リスト1、またはリスト0とリスト1の両方内に含むシンタックス要素をシグナリングしてもよい。ビデオデコーダは、これに対して、受信した識別子を使って、リスト0、リスト1、またはリスト0とリスト1の両方の中にリストされた1つの参照ピクチャまたは複数の参照ピクチャについての1つまたは複数の索引値を識別する。1つの参照ピクチャまたは複数の参照ピクチャの索引値(1つまたは複数)ならびに識別子(1つまたは複数)から、ビデオデコーダは、1つの参照ピクチャもしくは複数の参照ピクチャ、またはその一部(1つもしくは複数)を、DPBから取り出し、取り出された1つまたは複数の参照ピクチャと、コード化ブロックの復号に使われる1つまたは複数の参照ピクチャ内のブロックを識別する1つまたは複数の動きベクトルとに基づいて、現在のピクチャのコード化ブロックを復号する。
双予測ピクチャの第1または第2の参照ピクチャリストについての参照ピクチャリスト構成は、2つのステップ、すなわち参照ピクチャリスト初期化と、参照ピクチャリスト修正(参照ピクチャリスト並べ替えとも呼ばれる)とを含むことが可能である。参照ピクチャリスト初期化は、参照ピクチャメモリ(復号ピクチャバッファとしても知られる)中の参照ピクチャを、POC(ピクチャの表示順で整列されるピクチャオーダーカウント)値の順序に基づいてリストに入れる暗黙的機構であってよい。参照ピクチャリスト並べ替え機構は、参照ピクチャリスト初期化中にリストに入れられたピクチャの位置をどの新しい位置にも修正し、または参照ピクチャメモリ中のどの参照ピクチャも、そのピクチャが初期化リストに属さなくても、どの位置に入れてもよい。参照ピクチャリスト並べ替え(修正)後のいくつかのピクチャは、リスト中のはるかに離れた位置に入れられる場合がある。ただし、ピクチャの位置が、リストのアクティブ参照ピクチャの数を超える場合、ピクチャは、最終参照ピクチャリストのエントリとは見なされない。アクティブ参照ピクチャの数は、各リスト用のスライスヘッダに入れてシグナリングされ得る。
本開示に記載する技法は、様々なビデオコーディング規格に適用可能であり得る。ビデオコーディング規格の例は、ITU−T H.261、ISO/IEC MPEG−1 Visual、ITU−T H.262またはISO/IEC MPEG−2 Visual、ITU−T H.263、ISO/IEC MPEG−4 Visual、ならびにスケーラブルビデオコーディング(SVC)およびマルチビュービデオコーディング(MVC)拡張を含むITU−T H.264(ISO/IEC MPEG−4 AVCとしても知られている)を含む。さらに、ITU−T Video Coding Experts Group(VCEG)とISO/IEC Motion Picture Experts Group(MPEG)とのJoint Collaboration Team on Video Coding(JCT−VC)によって開発されている新しいビデオコーディング規格、すなわち、高効率ビデオコーディング(HEVC)がある。
単に例示のために、本技法は、HEVC規格のコンテキストにおいて説明される。これ以降HEVC WD8と呼ばれる、HEVCの最新の作業草案(WD)が、2012年10月8日の時点で、http://phenix.int−evry.fr/jct/doc_end_user/documents/10_Stockholm/wg11/JCTVC−J1003−v8.zipから入手可能である。
本開示に記載する技法によると、参照ピクチャリストは、参照ピクチャセットから構成される。参照ピクチャセットは概して、たとえば、次の瞬時復号リフレッシュ(IDR)ピクチャ、またはリンク切断アクセス(BLA:broken link access)ピクチャまで、復号順で関連ピクチャに先立ち、関連ピクチャまたは復号順で関連ピクチャに続く任意のピクチャ中のブロックのインター予測に使うことができる、すべての参照ピクチャからなる、あるピクチャに関連付けられた1組の参照ピクチャとして定義される。言い換えると、参照ピクチャセット中の参照ピクチャは、以下の特性を必要とし得る。すなわち、(1)すべてが、復号順で現在のピクチャに先立ち、(2)現在のピクチャをインター予測し、かつ/または現在のピクチャに復号順で続くどのピクチャも、およびいくつかの例では、次のIDRピクチャまたはBLAピクチャまでの、現在のピクチャに復号順で続くどのピクチャも、インター予測するために使うことができる。参照ピクチャセットの他の代替定義もあってよく、それについては以下に挙げる。
本開示に記載する例示的技法において、ビデオコーダ(ビデオエンコータまたはビデオデコーダなど)は参照ピクチャセットを導出することができ、そのような導出の後、ビデオコーダはビデオデータのスライス用の参照ピクチャリストを構成することができる。たとえば、参照ピクチャセット中の参照ピクチャのみが、スライス用の参照ピクチャリストを構成するのに使われる候補参照ピクチャであり得る。
参照ピクチャセットを構成するために、ビデオコーダは、複数の参照ピクチャサブセットを構成すればよい。参照ピクチャサブセットの組合せは、参照ピクチャセットを共に形成し得る。たとえば、ビデオエンコーダは、コード化ビットストリーム中で、参照ピクチャセットに含まれる参照ピクチャ用の識別子をビデオデコーダが判断するための値を明示的にシグナリングすることができる。たとえば、参照ピクチャの識別子は、ピクチャオーダーカウントであってよい。各ピクチャは、PicOrderCntと呼ばれる1つのピクチャオーダーカウントに関連付けられる。PicOrderCntは、前のIDRピクチャに復号順で相対した、対応するピクチャの出力順または表示順を示し、いくつかの他の代替法では、同じコード化ビデオシーケンス中の他のピクチャの出力順位置に相対した、関連ピクチャの出力順における位置を示す。
PicOrderCntは、ピクチャオーダーカウント(POC)値と呼ばれ得る。POC値は、ピクチャの出力または表示順を示すことができ、ピクチャを識別するのに使うことができる。たとえば、コード化ビデオシーケンス内で、より小さいPOC値をもつピクチャは、より大きいPOC値をもつピクチャよりも早く出力または表示される。
ビデオデコーダは、参照ピクチャ用の識別子を判断し、これらの識別子から、ビデオデコーダは、複数の参照ピクチャサブセットを構成することができる。これらの参照ピクチャサブセットから、ビデオデコーダは、後でより詳しく説明するように、参照ピクチャセットを導出することができる。いくつかの例では、参照ピクチャサブセットの各々は異なる参照ピクチャを含み、これは参照ピクチャサブセット中で参照ピクチャが重複しないことを意味する。このように、参照ピクチャの各々は、参照ピクチャサブセットのうちのただ1つの中に存在することができ、他の参照ピクチャサブセット中に存在することはできない。ただし、本開示の態様はそのように限定されると考えられるべきでない。
参照ピクチャセットまたはそのサブセット中の参照ピクチャの識別子(たとえば、POC値)を判断した後、ビデオデコーダは、参照ピクチャサブセットを構成することができる。後でより詳しく説明するように、ビデオデコーダは、6つの参照ピクチャサブセットを構成することができるが、ビデオデコーダは、より多いまたはより少ない参照ピクチャサブセットを構成することが可能であり得る。
これらの6つの参照ピクチャサブセットは、RefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0、RefPicSetStFoll1、RefPicSetLtCurr、およびRefPicSetLtFollと名付けられる。RefPicSetStCurr0参照ピクチャサブセットは、RefPicSetStCurrBefore参照ピクチャサブセットと呼ばれる場合があり、RefPicSetStCurr1参照ピクチャサブセットは、RefPicSetStCurrAfter参照ピクチャサブセットと呼ばれる場合がある。
RefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0、およびRefPicSetStFoll1参照ピクチャサブセットは、短期参照ピクチャを識別することができる。いくつかの例では、これらの参照ピクチャサブセットは、短期参照ピクチャが、コーディングされている現在のピクチャよりも表示順が早いか、それとも表示順が後であるか、ならびに短期参照ピクチャが、現在のピクチャと、復号順で現在のピクチャに続くピクチャとをインター予測するために使われる可能性があり得るか、それとも復号順で現在のピクチャに続くピクチャのみをインター予測するために使われる可能性があり得るかに基づいて、短期参照ピクチャを識別することができる。
たとえば、RefPicSetStCurr0参照ピクチャサブセットは、現在のピクチャよりも出力または表示順が早いとともに、現在のピクチャのインター予測において参照用に使われる可能性があり得、復号順で現在のピクチャに続く1つまたは複数のピクチャのインター予測において参照用に使われる可能性があり得るすべての短期参照ピクチャの、POC値などの識別情報を含むことができ、かつそれだけを含むことができる。RefPicSetStCurr1参照ピクチャサブセットは、現在のピクチャよりも出力または表示順が後であるとともに、現在のピクチャのインター予測において参照用に使われる可能性があり得、復号順で現在のピクチャに続く1つまたは複数のピクチャのインター予測において参照用に使われる可能性があり得るすべての短期参照ピクチャの識別情報を含むことができ、かつそれだけを含むことができる。
RefPicSetStFoll0参照ピクチャサブセットは、現在のピクチャよりも出力または表示順が早く、復号順で現在のピクチャに続く1つまたは複数のピクチャのインター予測において参照用に使われる可能性があり得るとともに、現在のピクチャのインター予測においては参照用に使うことができない、すべての短期参照ピクチャの識別情報を含むことができ、かつそれだけを含むことができる。RefPicSetStFoll1参照ピクチャサブセットは、現在のピクチャよりも出力または表示順が遅く、復号順で現在のピクチャに続く1つまたは複数のピクチャのインター予測において参照用に使われる可能性があり得、現在のピクチャのインター予測においては参照用に使うことができない、すべての短期参照ピクチャの識別情報を含むことができ、かつそれだけを含むことができる。
RefPicSetLtCurrおよびRefPicSetLtFoll参照ピクチャサブセットは、長期参照ピクチャを識別することができる。いくつかの例では、これらの参照ピクチャサブセットは、長期参照ピクチャが、コーディングされている現在のピクチャよりも表示順が早いか、それとも表示順が後であるかに基づいて、長期参照ピクチャを識別することができる。
たとえば、RefPicSetLtCurr参照ピクチャサブセットは、現在のピクチャのインター予測において参照用に使われる可能性があり得るとともに復号順で現在のピクチャに続く1つまたは複数のピクチャのインター予測において参照用に使われる可能性があり得るすべての長期参照ピクチャの識別情報を含むことができ、かつそれだけを含むことができる。RefPicSetLtFoll参照ピクチャサブセットは、復号順で現在のピクチャに続く1つまたは複数のピクチャのインター予測において参照用に使われる可能性があり得るとともに、現在のピクチャのインター予測においては参照用に使うことができない、すべての長期参照ピクチャの識別情報を含むことができ、かつそれだけを含むことができる。
参照ピクチャサブセットを構成した後、ビデオデコーダは、参照ピクチャサブセットを、参照ピクチャセットを導出するように異なる順序で並べればよい。一例として、参照ピクチャセットの順序は、RefPicSetStCurr0、RefPicSetSetCurr1、RefPicSetFoll0、RefPicSetFoll1、RefPicSetLtCurr、およびRefPicSetLtFollとなり得る。ただし、参照ピクチャセットを導出するように、サブセットの他の順序付けも可能であり得る。たとえば、別の例として、参照ピクチャセットの順序は、RefPicSetStCurr0参照ピクチャサブセット、その後にRefPicSetStCurr1参照ピクチャセットが続き、その後にRefPicSetLtCurr参照ピクチャサブセットが続き、その後にRefPicSetStFoll0参照ピクチャサブセットが続き、その後にRefPicSetFoll1参照ピクチャサブセットが続き、その後にRefPicSetLtFoll参照ピクチャサブセットが続いてよい。
本開示に記載する技法によると、RefPicSetStCurr0、RefPicSetStCurr1、およびRefPicSetLtCurrサブセットは、現在のピクチャ中のブロックのインター予測において使うことができるとともに、復号順で現在のピクチャに続くピクチャのうちの1つまたは複数のピクチャのインター予測において使うことができるすべての参照ピクチャを含む。RefPicSetStFoll0、RefPicSetStFoll1、およびRefPicSetLtFollサブセットは、現在のピクチャ中のブロックのインター予測においては使われないが、復号順で現在のピクチャに続くピクチャのうちの1つまたは複数のピクチャのインター予測において使うことができるすべての参照ピクチャを含む。
6つの参照ピクチャサブセットは、例示目的でのみ記載され、限定的と見なされるべきでないことを理解されたい。代替例では、より多いまたはより少ない参照ピクチャサブセットがあってよい。これらの代替例におけるそのような参照ピクチャサブセットについては、以下でより詳しく説明する。
本開示において記載するいくつかの技法では、ビデオデコーダは、復号ピクチャを、「参照に使用される」、「参照に使用されない」、「短期参照に使用される」、または「長期参照に使用される」とマーキングする必要がなくてよい。そうではなく、DPBに記憶された復号ピクチャがインター予測に必要とされるかどうかは、そのピクチャが現在のピクチャの参照ピクチャセットに含まれるかどうかによって示される。代替例では、ビデオデコーダが、復号ピクチャに、「参照に使用される」、「参照に使用されない」、「短期参照に使用される」、または「長期参照に使用される」としてマーキングすることが可能な場合がある。これらの例では、ビデオデコーダがピクチャを復号した後、そのピクチャは参照ピクチャとなり、「参照に使用される」とマーキングされる。次いで、参照ピクチャセット導出のためのプロセスの呼出しの後、DPBには記憶されているが現在のピクチャの参照ピクチャセットには含まれないすべての参照ピクチャは、DPBからの復号ピクチャの削除が起こり得る前に、「参照に使用されない」とマーキングされる。したがって、DPBに記憶された復号ピクチャがインター予測に必要とされるかどうかは、そのピクチャが「参照に使用される」とマーキングされているかどうかによって示すことができる。
ビデオデコーダが、複数の参照ピクチャサブセットから参照ピクチャセットを導出すると、ビデオデコーダは、参照ピクチャセットから参照ピクチャリスト(たとえば、リスト0およびリスト1)を構成することができる。たとえば、参照ピクチャリストの構成は、初期化ステップと、可能性としては修正ステップとを含み得る。上述したように参照ピクチャセットを導出することによって、ビデオデコーダは、参照ピクチャリスト初期化および参照ピクチャリスト修正に関する効率を向上させ、複雑さを低下させることが可能であり得る。
ビデオデコーダが参照ピクチャリストを構成することができる様々なやり方があり得る。本開示に記載する技法は、ビデオデコーダが、(初期)参照ピクチャリストに含まれるべき参照ピクチャを並べ替える必要なく、参照ピクチャリストを構成することができる機構を提供する。たとえば、ビデオデコーダは、初期参照ピクチャリストを構成するために参照ピクチャサブセットをビデオデコーダが使用するデフォルトの参照リスト構成技法を実装するように構成してよい。すると、参照ピクチャリストの修正が必要とされない場合、最終参照ピクチャリストは、参照ピクチャリストのいかなる追加の並べ替えも必要なく、初期参照ピクチャリストと同じになり得る。
上で提示したように、参照ピクチャセットのいくつかの参照ピクチャはピクチャパラメータセット(PPS)中でシグナリングすることができ、参照ピクチャセットの他の参照ピクチャはスライスヘッダ中でシグナリングすることができる。ビデオデコーダは次いで、PPSとスライスヘッダの両方の中の参照ピクチャを使って参照ピクチャセットを構成することができる。ただし、これらの技法は、ビデオデコーダがビデオのスライス用の初期参照ピクチャリストを構成することができる前に、構成された参照ピクチャセットをビデオデコーダが並べ替えることを要求し得る。この中間並べ替えステップは処理サイクルを浪費し、そうすることによってビデオデコーダが現在のピクチャを復号するのにかかる時間量を増大させる場合がある。
これに対処するために、一例として、本開示は、参照ピクチャセットを構成するために、PPSからのどの参照ピクチャをビデオデコーダが使うべきかを示す「combine_with_reference_flag」シンタックス要素、「ref_pic_set_combination_idx」シンタックス要素、「ref_pic_set_offset0」シンタックス要素、および「ref_pic_set_offset1」シンタックス要素について記載する。本技法は、どのピクチャがスライスヘッダに含まれ得るかに適用される限定についても記載する。このように、ビデオデコーダが、初期参照ピクチャリストを構成する前に参照ピクチャセットを並べ替える必要がないように、ビデオデコーダは参照ピクチャセットを構成することができる。
本開示の技法において、「combine_with_reference_flag」シンタックス要素が真にセットされている(たとえば、1の値を有する)とき、ビデオデコーダは、現在のピクチャ用の参照ピクチャセットが、現在のピクチャのPPS中およびスライスヘッダ中の両方の参照ピクチャから構成されることになると判断する。「ref_pic_set_combination_idx」シンタックス要素は、PPS内の候補参照ピクチャセットを識別するシンタックス要素である。1つの説明のための例として、5つの参照ピクチャ候補がある場合があり、各候補は10個の参照ピクチャを含み得る。「ref_pic_set_combination_idx」シンタックス要素の値は、この例では、5つの候補のうちの1つを指し得る。
候補の各々の中の参照ピクチャは、ピクチャのデルタPOC値によって順序付けることができる。POC値はピクチャの出力順を示し、デルタPOC値は、現在のピクチャのPOC値と参照ピクチャのPOC値との間の差分であり得る。一例として、1つの候補セット中の10個の参照ピクチャが−5〜−1および1〜5のデルタPOC値を有し得るが、他の値も可能である。この例では、−5のデルタPOC値は、参照ピクチャのPOC値から現在のピクチャのPOC値を減算すると−5になることを意味する。POC値が出力順を示すので、負のデルタPOC値は、参照ピクチャが現在のピクチャよりも早く出力される(たとえば、表示される)ことを示すことができ、正のデルタPOC値は、参照ピクチャが現在のピクチャの後で出力されることを示すことができる。
ref_pic_set_offset0シンタックス要素の値は、現在のピクチャよりも出力順が早い何個の参照ピクチャが、識別された候補から削除されるべきかを示す。ref_pic_set_offset1シンタックス要素の値は、現在のピクチャよりも出力順が遅い何個の参照ピクチャが、識別された候補セットから削除されるべきかを示す。いくつかの例において、ビデオデコーダが削除するピクチャは、現在のピクチャから出力順が最も離れているものである。
たとえば、ref_pic_set_offset0およびref_pic_set_offset1の値が両方とも2に等しいと仮定する。この例において、ビデオデコーダは、ref_pic_set_combination_idx値によって識別される候補の参照ピクチャから、2つのピクチャを削除してよい。前述の例では、参照ピクチャは、−5〜−1および1〜5のデルタPOC値に対応する参照ピクチャであり得る。この例では、ビデオデコーダは、−5〜−1のデルタPOC値をもつ参照ピクチャに対応する、参照ピクチャのうちの2つと、1〜5のデルタPOC値をもつ参照ピクチャに対応する、参照ピクチャのうちの2つとを削除してよい。さらに、いくつかの事例において、ビデオデコーダが削除する参照ピクチャは、−5、−4、4、および5のデルタPOC値に対応する参照ピクチャであってよく、というのはこれらの参照ピクチャが、出力順において現在のピクチャから最も離れている参照ピクチャであるからである。
したがって、この例では、ビデオデコーダは、PPS内の識別された候補中の参照ピクチャのうちの6つを、ビデオデコーダが使うべきであると判断することができる。具体的には、この例では、参照ピクチャは、−3〜−1および1〜3のデルタPOC値に対応するものになる。
ビデオデコーダは次いで、スライスのスライスヘッダから、参照ピクチャセットの残りのピクチャを識別すればよい。ただし、ビデオデコーダが参照ピクチャセットを並べ替える必要がなくてよいことを確実にするために、どの参照ピクチャがスライスヘッダに含まれ得るかに対して、いくつかの制限が課され得る。
いくつかの例において、スライスヘッダ中で識別される参照ピクチャは、PPS中で識別される参照ピクチャのうちのどれよりも、距離において、出力順において離れていなければならない。たとえば、前の例に沿うと、−6または+6のデルタPOC値をもつ参照ピクチャは、PPS中の参照ピクチャのうちのどれよりも離れているので、スライスヘッダに含まれ得る参照ピクチャとして適格であり得る。
ビデオデコーダは次いで、参照ピクチャセットを、2つのサブセットの組合せとして構成することができる。第1のサブセットは、現在のピクチャに時間的に先立って出現する参照ピクチャを含むことができ、第2のサブセットは、時間的に現在のピクチャの後に続いて出現する参照ピクチャを含むことができる。ビデオデコーダは、第1のサブセットの参照ピクチャを、PPS中においてデルタPOC値で識別される、現在のピクチャに最も近い参照ピクチャから始まり、スライスヘッダ中においてデルタPOC値で識別される、現在のピクチャから最も離れた参照ピクチャまでの降POC順で順序付ければよい。ビデオデコーダは、第2のサブセット中の参照ピクチャを、PPS中においてデルタPOC値で識別される、現在のピクチャに最も近い参照ピクチャから始まり、スライスヘッダ中においてデルタPOC値で識別される、現在のピクチャから最も離れた参照ピクチャまでの昇POC順で順序付ければよい。このように、ビデオデコーダは、ビデオデコーダが初期参照ピクチャリストを構成するとき、ビデオデコーダが参照ピクチャセットを並べ替える必要がなくてよいように、参照ピクチャセットを構成することができる。
図1は、本開示で説明する技法を利用し得る例示的なビデオ符号化および復号システム10を示すブロック図である。概して、参照ピクチャセットは、あるピクチャに関連付けられた1組の参照ピクチャとして定義される。参照ピクチャセットは、復号順で関連ピクチャに先立ち、関連ピクチャまたは復号順で関連ピクチャに続く任意のピクチャ中のインター予測に使うことができる、すべての参照ピクチャからなる。いくつかの例では、関連ピクチャに先立つ参照ピクチャは、次の瞬時復号リフレッシュ(IDR)ピクチャ、またはリンク切断アクセス(BLA)ピクチャまでの参照ピクチャであり得る。言い換えると、参照ピクチャセット中の参照ピクチャはすべて、現在のピクチャに復号順で先立ち得る。また、参照ピクチャセット中の参照ピクチャは、現在のピクチャをインター予測し、かつ/または次のIDRピクチャまたはBLAピクチャまでの、現在のピクチャに復号順で続くどのピクチャもインター予測するために使うことができる。
参照ピクチャセットの他の代替定義もあってよい。たとえば、参照ピクチャセットは、関連ピクチャまたは復号順で関連ピクチャに続くどのピクチャのインター予測にも使うことができるとともに、temporal_idが関連ピクチャ以下である、関連ピクチャ自体を除くすべての参照ピクチャからなる、あるピクチャに関連付けられた1組の参照ピクチャであってよい。temporal_idは、時間的識別値であり得る。時間的識別値は、現在のピクチャをコーディングするために、どのピクチャを使うことができるかを示す階層的値であってよい。概して、特定のtemporal_id値をもつピクチャは、可能性としては、それ以上のtemporal_id値をもつピクチャ用の参照ピクチャになり得るが、逆は成り立たない。たとえば、1のtemporal_id値をもつピクチャは、可能性としては、1、2、3、...のtemporal_id値をもつピクチャ用の参照ピクチャになり得るが、0のtemporal_id値をもつピクチャ用の参照ピクチャにはなり得ない。
最も低いtemporal_id値は、最も低い表示レートも示し得る。たとえば、ビデオデコーダが、0のtemporal_id値をもつピクチャのみを復号した場合、表示レートは、毎秒7.5個のピクチャになり得る。ビデオデコーダが、0および1のtemporal_id値をもつピクチャのみを復号した場合、表示レートは、毎秒15個のピクチャになり得、以下同様である。
別の例として、参照ピクチャセットは、関連ピクチャまたは復号順で関連ピクチャに続くどのピクチャのインター予測にも使うことができる、関連ピクチャ自体を除くすべての参照ピクチャからなる、あるピクチャに関連付けられた1組の参照ピクチャであってよい。さらに別の例として、参照ピクチャセットは、関連ピクチャまたは復号順で関連ピクチャに続くどのピクチャのインター予測にも使うことができる、関連ピクチャ自体を含み得るすべての参照ピクチャからなる、あるピクチャに関連付けられた1組の参照ピクチャと定義され得る。別の例として、参照ピクチャセットは、関連ピクチャまたは復号順で関連ピクチャに続くどのピクチャのインター予測にも使うことができるとともに、関連ピクチャのtemporal_id以下のtemporal_idをもつ、関連ピクチャ自体を含み得るすべての参照ピクチャからなる、あるピクチャに関連付けられた1組の参照ピクチャとして定義され得る。
さらに別の例として、参照ピクチャセットの上記定義において、「インター予測に使うことができる」というフレーズは、「インター予測に使われる」で置き換えられる。参照ピクチャセットの代替定義があり得るが、本開示では、関連ピクチャまたは復号順で関連ピクチャに続く任意のピクチャ中のインター予測に使うことができる、復号順で関連ピクチャに先立つすべての参照ピクチャからなる、あるピクチャに関連付けられた1組の参照ピクチャである参照ピクチャセットの定義で、例を説明する。
たとえば、参照ピクチャセット中の参照ピクチャのいくつかは、復号順で現在のピクチャに続くピクチャではなく、現在のピクチャのブロックをインター予測するのに使われる可能性があり得る参照ピクチャである。参照ピクチャセット中の参照ピクチャのいくつかは、現在のピクチャのブロックであって、復号順で現在のピクチャに続く1つまたは複数のピクチャ中のブロックをインター予測するのに使われる可能性があり得る参照ピクチャである。参照ピクチャセット中の参照ピクチャのいくつかは、復号順で現在のピクチャに続く1つまたは複数のピクチャ中のブロックをインター予測するのに使われる可能性があり得るとともに、現在のピクチャ中のブロックをインター予測するのに使うことができない参照ピクチャである。
本開示において使われるように、インター予測に使われる可能性があり得る参照ピクチャは、インター予測に使うことはできるが、必ずしもインター予測に使われなくてもよい参照ピクチャを指す。たとえば、参照ピクチャセットは、インター予測に使われる可能性があり得る参照ピクチャを識別することができる。ただし、このことは、識別された参照ピクチャがすべて、インター予測に使われなければならないことを意味するわけではない。そうではなく、これらの識別された参照ピクチャのうちの1つまたは複数が、インター予測に使われてよいが、すべてが必ずしもインター予測に使われなくてもよい。
図1に示すように、システム10は、宛先デバイス14による復号のために符号化ビデオを生成するソースデバイス12を含む。ソースデバイス12および宛先デバイス14は、それぞれビデオコーディングデバイスの一例であり得る。ソースデバイス12は、通信チャネル16を介して宛先デバイス14に符号化ビデオを送信するか、あるいは、必要に応じて符号化ビデオが宛先デバイス14によってアクセスされ得るように記憶媒体17またはファイルサーバ19に符号化ビデオを記憶し得る。
ソースデバイス12および宛先デバイス14は、いわゆる「スマート」フォン、いわゆる「スマート」パッドなどのワイヤレスハンドセット、またはワイヤレス通信のために装備される他のそのようなワイヤレスデバイスを含む、広範なデバイスのうちのどれを備えてもよい。ソースデバイス12および宛先デバイス14の追加例は、デジタルテレビ、デジタルダイレクトブロードキャストシステムにおけるデバイス、ワイヤレスブロードキャストシステムにおけるデバイス、携帯情報端末(PDA)、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、eブックリーダ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラー無線電話、衛星無線電話、テレビ会議デバイス、およびビデオストリーミングデバイス、ワイヤレス通信デバイスなどを含むが、それに限定されない。
上記のように、多くの場合、ソースデバイス12および/または宛先デバイス14は、ワイヤレス通信のために装備され得る。したがって、通信チャネル16は、符号化ビデオデータの送信に好適なワイヤレスチャネル、ワイヤードチャネル、またはワイヤレスチャネルとワイヤードチャネルとの組合せを備え得る。同様に、ファイルサーバ19は、インターネット接続を含む任意の標準データ接続を介して宛先デバイス14によってアクセスされ得る。これは、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適であるワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、または両方の組合せを含み得る。
ただし、本開示の技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオテレフォニーなどの適用例をサポートするために、単方向または二方向のビデオ送信をサポートするように構成され得る。
図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、変調器/復調器(モデム)22と、出力インターフェース24とを含む。ソースデバイス12において、ビデオソース18は、ビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、および/またはソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステムなどのソース、あるいはそのようなソースの組合せを含み得る。一例として、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラ付き電話またはテレビ電話を形成し得る。ただし、本開示で説明する技法は、概してビデオコーディングに適用可能であり得、ワイヤレスおよび/またはワイヤード適用例に適用され得る。
キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成ビデオはビデオエンコーダ20によって符号化され得る。符号化ビデオ情報は、ワイヤレス通信プロトコルなどの通信規格に従ってモデム22によって変調され、出力インターフェース24を介して宛先デバイス14に送信され得る。モデム22は、信号変調のために設計された様々なミキサ、フィルタ、増幅器または他の構成要素を含み得る。出力インターフェース24は、増幅器、フィルタ、および1つまたは複数のアンテナを含む、データを送信するために設計された回路を含み得る。
ビデオエンコーダ20によって符号化された、キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成されたビデオはまた、後で消費するために記憶媒体17またはファイルサーバ19に記憶され得る。記憶媒体17は、ブルーレイ(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、または符号化ビデオを記憶するための他の好適なデジタル記憶媒体を含み得る。記憶媒体17に記憶された符号化ビデオは、次いで、復号および再生のために宛先デバイス14によってアクセスされ得る。
ファイルサーバ19は、符号化ビデオを記憶することと、その符号化ビデオを宛先デバイス14に送信することとが可能な任意のタイプのサーバであり得る。例示的なファイルサーバは、(たとえば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、ローカルディスクドライブ、または符号化ビデオデータを記憶することと、符号化ビデオデータを宛先デバイスに送信することとが可能な他のタイプのデバイスを含む。ファイルサーバ19からの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。ファイルサーバ19は、インターネット接続を含む任意の標準データ接続を介して宛先デバイス14によってアクセスされ得る。これは、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適である、ワイヤレスチャネル(たとえば、Wi−Fi接続)、ワイヤード接続(たとえば、DSL、ケーブルモデム、イーサネット(登録商標)、USBなど)、または両方の組合せを含み得る。
宛先デバイス14は、図1の例では、入力インターフェース26と、モデム28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。宛先デバイス14の入力インターフェース26は、一例として、チャネル16を介して、または代替例として、記憶媒体17もしくはファイルサーバ17から情報を受信し、モデム28は、情報を復調して、ビデオデコーダ30向けの復調ビットストリームを生じる。復調されたビットストリームは、ビデオデータを復号する際にビデオデコーダ30が使用する、ビデオエンコーダ20によって生成された様々なシンタックス情報を含み得る。そのようなシンタックスはまた、記憶媒体17またはファイルサーバ19に記憶された符号化ビデオデータに含まれ得る。一例として、シンタックスは符号化ビデオデータで埋め込まれ得るが、本開示の態様はそのような要件に限定されると考えられるべきでない。ビデオデコーダ30によっても使用される、ビデオエンコーダ20によって定義されたシンタックス情報は、コーディングツリーユニット(CTU)、コーディングツリーブロック(CTB)、予測ユニット(PU:prediction unit)、コーディングユニット(CU)またはコーディングされたビデオの他のユニット、たとえば、ビデオスライス、ビデオピクチャ、およびビデオシーケンスまたはピクチャのグループ(GOP:group of pictures)などのビデオブロックの特性および/または処理を記述するシンタックス要素を含み得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、ビデオデータを符号化または復号することが可能であるそれぞれのエンコーダデコーダ(コーデック)の一部を形成し得る。
ディスプレイデバイス32は、宛先デバイス14と一体化されるかまたはその外部にあり得る。いくつかの例では、宛先デバイス14は、一体型ディスプレイデバイスを含み、また、外部ディスプレイデバイスとインターフェースするように構成され得る。他の例では、宛先デバイス14はディスプレイデバイスであり得る。概して、ディスプレイデバイス32は、復号ビデオデータをユーザに対して表示し、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。
図1の例では、通信チャネル16は、無線周波数(RF)スペクトルあるいは1つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体、あるいはワイヤレス媒体とワイヤード媒体との任意の組合せを備え得る。通信チャネル16は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークのような、パケットベースのネットワークの一部を形成することができる。通信チャネル16は、概して、ワイヤード媒体またはワイヤレス媒体の任意の好適な組合せを含む、ビデオデータをソースデバイス12から宛先デバイス14に送信するのに好適な任意の通信媒体、または様々な通信媒体の集合体を表す。通信チャネル16は、ソースデバイス12から宛先デバイス14への通信を支援するのに有用であり得る、ルータ、スイッチ、基地局、または任意の他の機器を含み得る。
ビデオエンコーダ20およびビデオデコーダ30は、ITU−T H.261、ISO/IEC MPEG−1 Visual、ITU−T H.262またはISO/IEC MPEG−2 Visual、ITU−T H.263、ISO/IEC MPEG−4 Visual、ならびにスケーラブルビデオコーディング(SVC)およびマルチビュービデオコーディング(MVC)拡張を含むITU−T H.264(ISO/IEC MPEG−4 AVCとしても知られている)などのビデオ圧縮規格に従って動作し得る。さらに、上で参照したように、ビデオエンコーダ20およびビデオエンコーダ30は、ITU−T Video Coding Experts Group(VCEG)とISO/IEC Motion Picture Experts Group(MPEG)とのJoint Collaboration Team on Video Coding(JCT−VC)によって現在開発中の新しいビデオコーディング規格、すなわち、高効率ビデオコーディング(HEVC)規格に従って動作し得る。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。単に例示のために、本技法は、HEVC規格に従って説明される。
図1には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は、それぞれオーディオエンコーダおよびオーディオデコーダと統合され得、適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含んで、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理し得る。適用可能な場合、MUX−DEMUXユニットはITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠することができる。
ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、マイクロプロセッサを含む1つまたは複数のプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダ回路のいずれか、またはそれらの任意の組合せとして実装され得る。本技法がソフトウェアで部分的に実施されるとき、デバイスは、好適な非一時的コンピュータ可読媒体にソフトウェアの命令を記憶し、1つまたは複数のプロセッサを使用してその命令をハードウェアで実行して、本開示の技法を実施し得る。
ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合され得る。いくつかの事例では、ビデオエンコーダ20およびビデオデコーダ30は、情報(たとえば、ピクチャおよびシンタックス要素)をコーディングするビデオコーダと通常呼ばれ得る。ビデオコーダがビデオエンコーダ20に対応するとき、情報のコーディングは符号化を指し得る。ビデオコーダがビデオデコーダ30に対応するとき、情報のコーディングは復号を指し得る。
さらに、本開示で説明する技法は、情報をシグナリングするビデオエンコーダ20を指し得る。ビデオエンコーダ20が情報をシグナリングするとき、本開示の技法は、概して、ビデオエンコーダ20が情報を提供する任意の方法を指す。たとえば、ビデオエンコーダ20がビデオデコーダ30にシンタックス要素をシグナリングするとき、それは、ビデオエンコーダ20が出力インターフェース24および通信チャネル16を介してビデオデコーダ30にシンタックス要素を送信したこと、あるいはビデオエンコーダ20がビデオデコーダ30による最終的な受信のために記憶媒体17および/またはファイルサーバ19上に出力インターフェース24を介してシンタックス要素を記憶したことを意味し得る。このように、ビデオエンコーダ20からビデオデコーダ30へのシグナリングは、ビデオデコーダ30によって直ちに受信されるビデオエンコーダ20からの送信が、可能ではあり得るが、必要とされると解釈されるべきでない。そうではなく、ビデオエンコーダ20からビデオデコーダ30へのシグナリングは、直接あるいは(たとえば、記憶媒体17および/またはファイルサーバ19内の)中間記憶装置を介して、ビデオエンコーダ20がビデオデコーダ30による最終的な受信についての情報を提供するためのいずれの技法としても解釈されるべきである。
ビデオエンコーダ20およびビデオデコーダ30は、参照ピクチャセットを導出するための、本開示に記載する例示的技法を実装するように構成すればよい。たとえば、ビデオデコーダ30は、ピクチャごとに一度、参照ピクチャセットを導出するためのプロセスを呼び出すことができる。ビデオデコーダ30は、スライスヘッダの復号の後で、ただしどのコーディングユニットの復号にも先立って、およびスライスの参照ピクチャリスト構成のための復号プロセスに先立って、参照ピクチャセットを導出するためのプロセスを呼び出すことができる。
上述したように、参照ピクチャセットは、現在のピクチャおよび次の瞬時復号リフレッシュ(IDR)ピクチャ、またはリンク切断アクセス(BLA)ピクチャまでの、復号順において今後のコード化ピクチャの復号プロセスにおいて使われる参照ピクチャの絶対記述である。本開示に記載する例において、ビデオエンコーダ20は、参照ピクチャセットに属す参照ピクチャ用の識別子をビデオデコーダ30がそこから判断することができる値を明示的にシグナリングすることができる。参照ピクチャセットシグナリングは、参照ピクチャセットに含まれるすべての参照ピクチャが、IDRピクチャなどのいくつかのピクチャを除いて明示的にリストされるという意味で、明示的である。参照ピクチャセットシンタックス要素がスライスヘッダに含まれない場合は、参照ピクチャセットが空であると解釈される。
参照ピクチャセットを導出するためにビデオデコーダ30が使用することができるコード化ビットストリーム中で、ビデオエンコーダ20がシンタックス要素をシグナリングすることができる様々なやり方があり得る。たとえば、ビデオエンコーダ20は、シンタックス要素を、ピクチャパラメータセット(PPS)、シーケンスパラメータセット(SPS)、ピクチャヘッダ(あれば)、スライスヘッダ、またはそれらのどの組合せに入れてシグナリングしてもよい。説明のためにのみ、ビデオエンコーダ20は、より詳しく説明したように、SPSと、PPSと、スライスヘッダとを使って、シンタックス要素をシグナリングすることができる。本開示の技法は、ピクチャパラメータセットなどのパラメータセット中でどの参照ピクチャがシグナリングされるべきかと、ビデオデコーダが参照ピクチャセットを構成するとき、ビデオデータのスライス用の初期参照ピクチャリストを構成するために参照ピクチャセットを並べ替える必要がないように、スライスヘッダ中でどの参照ピクチャがシグナリングされるべきかと、を選択することを対象とする。
参照ピクチャセットを導出するために、ビデオデコーダ30は、参照ピクチャセットに属すピクチャ用の識別子を判断するための復号プロセスを実装すればよい。ビデオデコーダ30は次いで、複数の参照ピクチャサブセットを構成することができ、サブセットの各々は、参照ピクチャセットに属す参照ピクチャのうちのゼロ個以上のピクチャを識別する。ビデオデコーダ30は、企図される参照ピクチャサブセットから参照ピクチャセットを導出することができる。たとえば、ビデオデコーダ30は、複数の参照ピクチャサブセットを特定の順序でリストして、参照ピクチャセットを導出することができる。
参照ピクチャセットに属すピクチャ用の識別子をビデオデコーダ30が判断することができる、様々なやり方があり得る。概して、ビデオエンコーダ20は、参照ピクチャセットに属すピクチャを含むピクチャ用の識別子を、ビデオデコーダ30がそこから判断することができる値をシグナリングすることができる。ピクチャの識別子は、PicOrderCnt(すなわち、ピクチャオーダーカウント(POC)値)であり得る。上述したように、POC値は、ピクチャの表示または出力順を示すことができ、より小さいPOC値をもつピクチャが、より大きいPOC値をもつピクチャよりも早く表示される。所与のピクチャのPOC値は、前の瞬時復号リフレッシュ(IDR)ピクチャに相対し得る。たとえば、IDRピクチャについてのPicOrderCnt(すなわち、POC値)は0であってよく、表示または出力順でIDRピクチャの後のピクチャについてのPOC値は1であってよく、表示または出力順において、POC値1をもつピクチャの後のPOC値は2であってよく、以下同様に続く。
本開示に記載する技法によると、現在のピクチャがIDRピクチャでないとき、現在のピクチャのPOC値を導出するために、以下のことが適用され得る。以下は、理解を助けることを意図しており、限定的と見なされるべきではない。
たとえば、以下のすべてを含むピクチャのリストに関連付けられたPicOrderCnt値(POC値)を要素として含むリスト変数listDについて検討する。すなわち、(1)リスト中の最初のピクチャが、復号順において前のIDRピクチャであり、(2)他のすべてのピクチャが、復号順において、リスト中の最初のピクチャの後に続き、現在のピクチャに復号順において先行するか、または現在のピクチャである。この例では、現在のピクチャは、参照ピクチャセットのための導出プロセスの呼出しに先立って、listDに含まれている。また、POC値の昇順にソートされるlistDという要素を含むリスト変数listOについて検討する。この例では、listOは、別のピクチャのPOC値に等しい値をもつPOC値を含まなくてもよい。
いくつかの例では、POC値は、両端値を含む−2pocLen-1〜2pocLen-1−1の範囲に制限され得る。この例では、pocLenは、long_term_ref_pic_id_len_delta+long_term_ref_pic_id_delta_len_minus4+4に等しくなり得る。long_term_ref_pic_id_len_delta、およびlong_term_ref_pic_id_delta_len_minus4は、後でより詳しく説明するように、ピクチャパラメータセットシンタックスの一部としてビデオデコーダ30がコード化ビットストリーム中で受信するシンタックス要素であり得る。別の例として、POC値は、両端値を含む−231〜231−1の範囲に制限され得る。
一例として、ビデオデコーダ30は、コード化ビットストリーム(すなわち、ビデオエンコーダ20によってシグナリングされるビットストリーム)中で、pic_order_cnt_lsbシンタックス要素を受信することができる。pic_order_cnt_lsbシンタックス要素は、コード化ピクチャについてのピクチャオーダーカウントモジュロMaxPicOrderCntLsbを指定し得る。pic_order_cnt_lsbシンタックス要素の長さは、log2_max_pic_order_cnt_lsb_minus4+4ビットであり得る。pic_order_cnt_lsbの値は、両端値を含む0〜MaxPicOrderCntLsb−1の範囲内であり得る。ビデオデコーダ30は、pic_order_cnt_lsbシンタックス要素を、復号されるべき現在のピクチャについてのスライスヘッダシンタックス中で受信することができる。
ビデオデコーダ30はまた、ビデオエンコーダ20によってシグナリングされるコード化ビットストリーム中で、log2_max_pic_order_cnt_lsb_minus4シンタックス要素を受信することができる。ビデオデコーダ30は、log2_max_pic_order_cnt_lsb_minus4シンタックス要素を、シーケンスパラメータセット中で受信することができる。log2_max_pic_order_cnt_lsb_minu4の値は、両端値を含む0〜12の範囲内であり得る。log2_max_pic_order_cnt_lsb_minus4シンタックス要素は、ビデオデコーダ30がPOC値を判断するための復号プロセスにおいて使う変数MaxPicOrderCntLsbの値を指定し得る。たとえば、以下のようになる。
これらの受信シンタックス要素から、ビデオデコーダ30は、現在のピクチャのPOC値を次のように判断することができる。たとえば、ビデオデコーダ30は、現在のピクチャについてのPicOrderCntMsbを判断することができる。現在のピクチャについてのPOC値は、現在のピクチャについての判断されたPicOrderCntMsbに、現在のピクチャについての受信されたpic_order_cnt_lsbをプラスしたものとなり得る。
以下で、関数PicOrderCnt(picX)は、ピクチャXについてのPOC値に等しい。関数DiffPicOrderCnt(picA,picB)は、PicOrderCnt(picA)からPicOrderCnt(picB)を引いたものに等しい。いくつかの例では、コード化ビットストリームは、両端値を含む−215〜215−1の範囲を超える、復号プロセスにおいて使われるDiffPicOrderCnt(picA,picB)の値を生じるデータを含まなくてよい。さらに、Xを現在のピクチャとし、YおよびZを同じシーケンス中の2つの他のピクチャとし、ここでYおよびZは、DiffPicOrderCnt(X,Y)とDiffPicOrderCnt(X,Z)の両方が正であり、または両方が負であるとき、Xからの同じ出力順方向であると見なされる。また、いくつかの例では、ビデオエンコーダ20は、前のIDRピクチャのサンプリング時間に相対した、対応するピクチャのサンプリング時間に比例するPicOrderCntを割り当てることができる。
現在のピクチャについてのPOC値を判断するプロセスの一部として、ビデオデコーダ30は、変数prevPicOrderCntMsbおよびprevPicOrderCntLsbを判断すればよい。たとえば、現在のピクチャがIDRピクチャである場合、ビデオデコーダ30は、prevPicOrderCntMsbを0に等しく設定し、prevPicOrderCntLsbを0に等しく設定すればよい。そうでない場合(すなわち、現在のピクチャがIDRピクチャでない場合)、ビデオデコーダ30は、prevPicOrderCntMsbを、現在のピクチャ以下のtemporal_idをもつ、復号順において前の参照ピクチャのPicOrderCntMsbに等しく設定し、prevPicOrderCntLsbを、現在のピクチャ以下のtemporal_idをもつ、復号順において前の参照ピクチャのpic_order_cnt_lsbの値に等しく設定すればよい。
これらの変数値およびシンタックス要素の値(たとえば、prevPicOrderCntMsb、prevPicOrderCntLsb、pic_order_cnt_lsb、およびMaxPicOrderCntLsbの値)を用いて、ビデオデコーダ30は、PicOrderCntMsbの値を、以下の擬似コードに記述するステップに基づいて判断することができる。ビデオデコーダ30は、以下の擬似コードに記述するステップを実装して、現在のピクチャのPOC値を導出するのに使われる、各現在のピクチャについてのPicOrderCntMsbを判断し得ることを理解されたい。
現在のピクチャについてのPicOrderCntMsbを判断した後、ビデオデコーダ30は、現在のピクチャについてのPicOrderCntMsbおよび現在のピクチャについてのpic_order_cnt_lsbに基づいて、現在のピクチャについてのPOC値を判断することができる。ビデオデコーダ30は、現在のピクチャについてのPOC値を次のように判断することができる。
ピクチャの復号の後、ビデオデコーダ30は、参照ピクチャセットに属す参照ピクチャの各々を含む、そのピクチャについてのPicOrderCntMsb値と、pic_order_cnt_lsb値と、POC値とを、ビデオデコーダ30の復号ピクチャバッファ(DPB)に記憶してよい。このように、DPB中の各ピクチャは、POC値、PicOrderCntMsb値、およびpic_order_cnt_lsb値に関連付けられる。
現在のピクチャの参照ピクチャセットに含まれる参照ピクチャのPOC値を判断するための方法について、以下でより詳しく説明する。判断されたPOC値から、ビデオデコーダ30は、参照ピクチャセットのための導出プロセスを実施することができる。ただし、ビデオデコーダ30が参照ピクチャセットのための導出プロセスを実施するやり方を説明するのに先立って、ビデオエンコーダ20によってシグナリングされるコード化ビットストリーム中でビデオデコーダ30が受信することができるシンタックス要素のテーブルを、以下に挙げる。たとえば、ビデオエンコーダ20は、以下のテーブル中のシンタックス要素を、ビデオデコーダ30が受信するコード化ビットストリームに入れてシグナリングすることができる。これらのシンタックス要素のうちのいくつかについては、上で述べた。これらのシンタックス要素から、ビデオデコーダ30は、参照ピクチャセットに含まれる参照ピクチャのPOC値を判断し、さらに参照ピクチャセットを導出することができる。
たとえば、本開示に記載する技法では、シーケンスパラメータセット(SPS)未加工バイトシーケンスペイロード(RBSP)シンタックス、すなわちseq_paramater_set_rbsq()、ピクチャパラメータセット(PPS)RBSPシンタックス、すなわちpic_parameter_set_rbsp()、スライスヘッダシンタックス、すなわちslice_header()、および参照ピクチャリスト修正シンタックス、すなわちref_pic_list_modification()というシンタックス構造が、前のビデオコーディング規格に対して修正される。参照ピクチャセットの導出、および1つまたは複数の参照ピクチャリストの初期化の説明に続いて、参照ピクチャリスト修正について、より詳しく説明する。
また、本開示に記載する技法によると、短期参照ピクチャセットシンタックス、すなわちshort_term_ref_pic_set()、および長期参照ピクチャセットシンタックス、すなわちlong_term_ref_pic_set()というシンタックス構造が、コード化ビットストリームに追加される。ビデオデコーダ30は、参照ピクチャサブセットを構成する目的で、短期参照ピクチャセットシンタックスと、長期参照ピクチャセットシンタックスとを使用することができ、参照ピクチャサブセットから、ビデオデコーダ30は参照ピクチャセットを導出する。
たとえば、ビデオデコーダ30が、参照ピクチャセットに属す参照ピクチャについてのPOC値を判断するために、ビデオエンコーダ20は参照ピクチャ識別情報をシグナリングすればよく、ビデオデコーダ30はこの情報を使って、ピクチャパラメータセット中のPOC値を判断し、リストに対する索引がスライスヘッダ中で参照され得る。ただし、これは、ビデオエンコーダ20がそのような参照ピクチャ識別情報をシグナリングすることができる1つの例示的やり方である。
ある代替例では、ビデオエンコーダ20は、参照ピクチャ情報をシーケンスパラメータセットに入れてシグナリングすることができ、リストに対する索引はスライスヘッダ中で参照することができ、そうすることによってシグナリングオーバーヘッドを削減することができる。別の代替例では、ビデオコーダは、参照ピクチャ情報を、新しいタイプのパラメータセット(たとえば、参照ピクチャセットパラメータセット(RPSPS))に入れてシグナリングすることができ、RPSPS idならびに参照ピクチャ識別情報のリストに対する索引は両方とも、スライスヘッダ中で参照され得る。こうすることにより、シグナリングオーバーヘッドを削減することができ、かつピクチャパラメータセットまたはシーケンスパラメータセットの数の必要が増大されることはない。他の例では、ビデオエンコーダ20は、参照ピクチャ識別情報をシグナリングするのに、これらの例示的技法のどのような組合せを使用してもよい。
以下のテーブル1はSPS RBSPシンタックスの例を示す。
pic_width_in_luma_samplesは、ルーマサンプル中の各復号ピクチャの幅を指定し得る。pic_width_in_luma_samplesの値は、両端値を含む0〜216−1の範囲内であり得る。
pic_height_in_luma_samplesは、ルーマサンプル中の各復号ピクチャの高さを指定し得る。pic_height_in_luma_samplesの値は、両端値を含む0〜216−1の範囲内であり得る。
テーブル1に示されるように、ビデオデコーダ30は、シーケンスパラメータセット(SPS)中で、log2_max_pic_order_cnt_lsb_minus4シンタックス要素を受信することができる。上述したように、log2_max_pic_order_cnt_lsb_minu4の値は、POC値を判断するための復号プロセスにおいてビデオデコーダ30が使う変数MaxPicOrderCntLsbの値を指定することができ、ここでMaxPicOrderCntLsb=2(log2_max_pic_order_cnt_lsb_minus4+4)である。
以下のテーブル2はPPS RBSPシンタックスの例を示す。
シンタックス要素「num_short_term_ref_pic_sets_pps」は、ピクチャパラメータセットに含まれるshort_term_ref_pic_set()シンタックス構造の数を指定する。シンタックス要素「num_short_term_ref_pic_sets_pps」の値は、両端値を含む0〜32の範囲であり得る。
0に等しいlong_term_ref_pics_present_flagは、ピクチャパラメータセットを参照するどのコード化ピクチャのインター予測にも、長期参照ピクチャが使われず、シンタックス要素long_term_ref_pic_id_delta_len_minus4、long_term_ref_pic_id_len_deltaおよびnum_long_term_ref_pics_ppsが存在しないことを指定する。1に等しいlong_term_ref_pics_present_flagは、ピクチャパラメータセットを参照する1つまたは複数のコード化ピクチャのインター予測に長期参照ピクチャを使うことができ、シンタックス要素long_term_ref_pic_id_delta_len_minus4、long_term_ref_pic_id_len_deltaおよびnum_long_term_ref_pics_ppsが存在することを指定する。
long_term_ref_pic_id_delta_len_minus4に4を加えたものは、long_term_ref_pic_id_delta_add_foll[i]シンタックス要素のビット長を指定する。long_term_ref_pic_id_delta_len_minus4の値は、両端値を含む0〜12の範囲内であり得る。
long_term_ref_pic_id_len_deltaプラスlong_term_ref_pic_id_delta_len_minus4プラス4は、long_term_ref_pic_id_pps[i]シンタックス要素のビット長を指定する。long_term_ref_pic_id_len_deltaの値は、両端値を含む0〜28−long_term_ref_pic_id_delta_len_minus4の範囲内であり得る。1つの特定のシーケンスパラメータセットを参照するすべてのピクチャパラメータセット中のlong_term_ref_pic_id_len_delta+long_term_ref_pic_id_delta_len_minus4+4の値は、同一であり得る。
num_long_term_ref_pics_ppsは、ピクチャパラメータセットに含まれる長期参照ピクチャの識別の数を指定する。num_long_term_ref_pics_ppsの値は、両端値を含む0〜32の範囲内であり得る。
long_term_ref_pic_id_pps[i]は、ピクチャパラメータセットに含まれる第iの長期参照ピクチャ識別情報を指定する。long_term_ref_pic_id_pps[i]を表すのに使われるビットの数は、long_term_ref_pic_id_len_delta+long_term_pic_id_len_minus4+4に等しくなり得る。
以下のテーブル3は短期参照ピクチャセットシンタックスを示す。
短期参照ピクチャセットシンタックスは、短期ピクチャ用であり得る。短期ピクチャは、それについての識別情報がコード化ピクチャ用のshort_term_ref_pic_set()シンタックス構造に含まれ、スライスヘッダ(1つもしくは複数)に含まれるか、または参照されるピクチャパラメータセットおよびスライスヘッダ(1つまたは複数)中のshort_term_ref_pic_set_idxシンタックス要素による参照に含まれる参照ピクチャとして定義され得る。スライスヘッダシンタックス要素を、以下のテーブル4に挙げる。
num_short_term_curr0は、以下で説明するように、コード化ピクチャの参照ピクチャセットの導出にshort_term_ref_pic_set()シンタックス構造が使われるとき、RefPicSetStCurr0中の短期参照ピクチャの数を指定する。num_short_term_curr0の値は、両端値を含む0〜max_num_ref_framesの範囲内であり得る。
num_short_term_curr1は、以下で説明するように、コード化ピクチャの参照ピクチャセットの導出にshort_term_ref_pic_set()シンタックス構造が使われるとき、RefPicSetStCurr1中の短期参照ピクチャの数を指定する。num_short_term_curr1の値は、両端値を含む0〜max_num_ref_frames−num_short_term_curr0の範囲内であり得る。
num_short_term_foll0は、以下で説明するように、コード化ピクチャの参照ピクチャセットの導出にshort_term_ref_pic_set()シンタックス構造が使われるとき、RefPicSetStFoll0中の短期参照ピクチャの数を指定する。num_short_term_foll0の値は、両端値を含む0〜max_num_ref_frames−num_short_term_curr0−num_short_term_curr1の範囲内であり得る。
num_short_term_foll1は、以下で説明するように、コード化ピクチャの参照ピクチャセットの導出にshort_term_ref_pic_set()シンタックス構造が使われるとき、RefPicSetStFoll1中の短期参照ピクチャの数を指定する。num_short_term_foll1の値は、両端値を含む0〜max_num_ref_frames−num_short_term_curr0−num_short_term_curr1−num_short_term_foll0の範囲内であり得る。
short_term_ref_pic_id_delta_minus1[i]は、short_term_ref_pic_set()シンタックス構造に含まれる第iの短期参照ピクチャの識別情報を指定する。
以下のテーブル4はスライスヘッダシンタックスの例を示す。
no_output_of_prior_pics_flagは、IDRピクチャの復号の後で復号ピクチャバッファ中のあらかじめ復号されたピクチャがどのように扱われるかを指定する。IDRピクチャがビットストリーム中の最初のIDRピクチャであるとき、no_output_of_prior_pics_flagの値は、復号プロセスに影響する可能性はない。IDRピクチャがビットストリーム中の最初のIDRピクチャではなく、アクティブシーケンスパラメータセットから導出されたpic_width_in_luma_samplesまたはpic_height_in_luma_samplesまたはmax_dec_frame_bufferingの値が、先行ピクチャについてのアクティブなシーケンスパラメータセットから導出されたpic_width_in_luma_samplesまたはpic_height_in_luma_samplesまたはmax_dec_frame_bufferingの値とは異なり得るとき、1に等しいno_output_of_prior_pics_flagは、no_output_of_prior_pics_flagの実効値にかかわらず、デコーダによって推論することができるが、必ずしも推論できるわけではない。
1に等しいshort_term_ref_pic_set_pps_flagは、現在のピクチャ用の参照ピクチャセットに含まれる短期参照ピクチャセットの識別情報が、参照されるピクチャパラメータセットに存在することを指定する。0に等しいshort_term_ref_pic_set_pps_flagは、現在のピクチャ用の参照ピクチャセットに含まれる短期参照ピクチャセットの識別情報が、参照されるピクチャパラメータセットに存在しないことを指定する。
short_term_ref_pic_set_idxは、現在のピクチャ用の参照ピクチャセット中の短期参照ピクチャセットの識別情報を含む、参照されるピクチャパラメータセットに含まれる、short_term_ref_pic_set()シンタックス構造の索引を指定する。
変数NumShortTermCurr0およびNumShortTermCurr1は、次のように指定される。
上式で、num_short_term_curr0およびnum_short_term_curr0は、それぞれ、参照されるピクチャパラメータセットに存在し、short_term_ref_pic_set_idxによって参照されるか、またはスライスヘッダに直接存在する、short_term_ref_pic_set()シンタックス構造中の同じ名称のシンタックス要素である。
num_ref_idx_l0_active_minus1は、スライスを復号するのに使うことができる参照ピクチャリスト0についての最大参照索引を指定する。
現在のスライスがPまたはBスライスであり、num_ref_idx_l0_active_minus1が存在しないとき、num_ref_idx_l0_active_minus1は、num_ref_idx_l0_default_active_minus1に等しいと推論され得る。
num_ref_idx_l0_active_minus1の値は、両端値を含む0〜15の範囲内であり得る。
num_ref_idx_l1_active_minus1は、スライスを復号するのに使うことができる参照ピクチャリスト1についての最大参照索引を指定する。
現在のスライスがPまたはBスライスであり、num_ref_idx_l1_active_minus1が存在しないとき、num_ref_idx_l1_active_minus1は、num_ref_idx_l1_default_active_minus1に等しいと推論され得る。
num_ref_idx_l1_active_minus1の値は、両端値を含む0〜15の範囲内であり得る。以下のテーブル5は長期参照ピクチャシンタックスの例を示す。
長期参照ピクチャセットシンタックスは、長期ピクチャ用であり得る。長期ピクチャは、コード化ピクチャ用のlong_term_ref_pic_set()シンタックス構造に、それについての識別情報が含まれる参照ピクチャとして定義され得る。
num_long_term_pps_currは、参照されるピクチャパラメータセットに識別情報が含まれるとともに現在のピクチャのインター予測に使うことができるすべての長期参照ピクチャの数を指定する。num_long_term_pps_currが存在しない場合、値は、0に等しいものとして導出され得る。num_long_term_pps_currの値は、両端値を含む0〜max_num_ref_framesの範囲内であり得る。
num_long_term_add_currは、参照されるピクチャパラメータセットに識別情報が含まれないとともに現在のピクチャのインター予測に使うことができるすべての長期参照ピクチャの数を指定する。num_long_term_add_currが存在しない場合、値は、0に等しいものとして導出され得る。num_long_term_add_currの値は、両端値を含む0〜max_num_ref_frames−num_long_term_pps_currの範囲内であり得る。
変数NumLongTermCurrは、次のように指定される。
NumLongTermCurr=num_long_term_pps_curr+num_long_term_add_curr
num_long_term_pps_follは、参照されるピクチャパラメータセットに識別情報が含まれ、現在のピクチャのインター予測に使われず、復号順で現在のピクチャに続くピクチャのうちのどのピクチャのインター予測にも使うことができるすべての長期参照ピクチャの数を指定する。num_long_term_pps_follが存在しない場合、値は、0に等しいものとして導出され得る。num_long_term_pps_follの値は、両端値を含む0〜max_num_ref_framesの範囲内であり得る。
num_long_term_add_follは、参照されるピクチャパラメータセットに識別情報が含まれず、現在のピクチャのインター予測に使われず、復号順で後に続くピクチャのうちのどのピクチャのインター予測にも使うことができるすべての長期参照ピクチャの数を指定する。num_long_term_add_follが存在しない場合、値は、0に等しいものとして導出され得る。num_long_term_add_follの値は、両端値を含む0〜max_num_ref_frames−num_long_term_pps_follの範囲内であり得る。
long_term_ref_pic_set_idx_pps[i]は、参照されるピクチャパラメータセットから現在のピクチャの参照ピクチャセットに継承される第iの長期参照ピクチャの、参照されるピクチャパラメータセットに含まれる長期参照ピクチャ識別情報のリストに対する索引を指定する。long_term_ref_pic_set_idx_pps[i]の値は、両端値を含む0〜31の範囲内であり得る。
long_term_ref_pic_id_delta_add[i]は、参照されるピクチャパラメータセットから継承されないが、現在のピクチャの参照ピクチャセットに含まれる第iの長期参照ピクチャの長期参照ピクチャ識別情報を指定する。long_term_ref_pic_id_add_curr[i]を表すのに使われるビットの数は、long_term_pic_id_len_minus4+4に等しくなり得る。
上記シグナリングされたまたは導出された値(すなわち、テーブル1〜5中の値)を用いて、ビデオデコーダ30は、参照ピクチャセットを導出することができる。上述したように、導出された参照ピクチャセットは、現在のピクチャ(すなわち、現在復号中のピクチャ)と、現在のピクチャに復号順において続くピクチャとをコーディング/予測するのに使われる可能性があり得る参照ピクチャを識別することができる。本開示に記載する技法によると、導出された参照ピクチャセット中の参照ピクチャすべての復号順は、現在のピクチャの復号順よりも早い。
導出プロセスは、複数の参照ピクチャサブセットから参照ピクチャセットを構成することを含み得る。このプロセスは、スライスヘッダの復号の後で、ただしどのコーディングユニットの復号にも先立って、およびスライスの参照ピクチャリスト構成のための復号プロセスに先立って、ピクチャごとに一度呼び出すことができる。たとえば、導出された値およびシグナリングされたシンタックス要素から、ビデオデコーダ30は、参照ピクチャセットに属す参照ピクチャについてのPOC値を判断することができる。判断されたPOC値から、ビデオデコーダ30は、参照ピクチャセットを共に形成する参照ピクチャサブセットを構成することができる。このように、参照ピクチャサブセットを構成することによって、ビデオデコーダ30は、参照ピクチャセットを構成することができる。たとえば、ビデオデコーダ30は、参照ピクチャサブセットを特定のやり方で並べて、参照ピクチャセットを導出することができる。順序付けは、ビデオデコーダ30が参照ピクチャサブセットをリストして参照ピクチャセットを導出するやり方を指し得る。
上述したように、参照ピクチャセットを導出するために、ビデオデコーダ30は複数の参照ピクチャサブセットを構成してよい。いくつかの例では、ビデオデコーダ30は6つの参照ピクチャサブセットを構成し得る。6つの参照ピクチャサブセットは、RefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0、RefPicSetStFoll1、RefPicSetLtCurr、およびRefPicSetLtFollと名付けられ得る。RefPicSetStCurr0はRefPicSetStCurrBeforeと呼ばれることがあり、RefPicSetStCurr1はRefPicSetStCurrAfterと呼ばれることがある。
6つの参照ピクチャサブセットは、例示の目的で記載され、限定的と解釈されるべきでないことを理解されたい。一例として、ビデオデコーダ30は、たとえば、サブセットのうちのいくつかを組み合わせることによって、6つの参照ピクチャサブセットよりも少ない参照ピクチャサブセットを構成してよい。ビデオデコーダ30が6未満の参照ピクチャサブセットを構成するこれらの例のうちのいくつかについては、後で説明する。ただし、説明のために、ビデオデコーダ30が6つの参照ピクチャサブセットを構成する例を用いて、本技法を記載する。
RefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0、およびRefPicSetStFoll1参照ピクチャサブセットは、短期参照ピクチャを識別することができる。いくつかの例では、これらの参照ピクチャサブセットは、短期参照ピクチャが、コーディングされている現在のピクチャよりも表示順が早いか、それとも表示順が後であるか、ならびに短期参照ピクチャが、現在のピクチャと、復号順で現在のピクチャに続くピクチャとをインター予測するために使われる可能性があり得るか、それとも復号順で現在のピクチャに続くピクチャのみをインター予測するために使われる可能性があり得るかに基づいて、短期参照ピクチャを識別することができる。
たとえば、RefPicSetStCurr0参照ピクチャサブセットは、現在のピクチャよりも出力または表示順が早いとともに、現在のピクチャのインター予測において参照用に使われる可能性があり得、復号順で現在のピクチャに続く1つまたは複数のピクチャのインター予測において参照用に使われる可能性があり得るすべての短期参照ピクチャの、POC値などの識別情報を含むことができ、かつそれだけを含むことができる。RefPicSetStCurr1参照ピクチャサブセットは、現在のピクチャよりも出力または表示順が後であるとともに、現在のピクチャのインター予測において参照用に使われる可能性があり得、復号順で現在のピクチャに続く1つまたは複数のピクチャのインター予測において参照用に使われる可能性があり得るすべての短期参照ピクチャの識別情報を含むことができ、かつそれだけを含むことができる。
RefPicSetStFoll0参照ピクチャサブセットは、現在のピクチャよりも出力または表示順が早く、復号順で現在のピクチャに続く1つまたは複数のピクチャのインター予測において参照用に使われる可能性があり得るとともに、現在のピクチャのインター予測においては参照用に使うことができない、すべての短期参照ピクチャの識別情報を含むことができ、かつそれだけを含むことができる。RefPicSetStFoll1参照ピクチャサブセットは、現在のピクチャよりも出力または表示順が遅く、復号順で現在のピクチャに続く1つまたは複数のピクチャのインター予測において参照用に使われる可能性があり得、現在のピクチャのインター予測においては参照用に使うことができない、すべての短期参照ピクチャの識別情報を含むことができ、かつそれだけを含むことができる。
RefPicSetLtCurrおよびRefPicSetLtFoll参照ピクチャサブセットは、長期参照ピクチャを識別することができる。いくつかの例では、これらの参照ピクチャサブセットは、長期参照ピクチャが、コーディングされている現在のピクチャよりも表示順が早いか、それとも表示順が後であるかに基づいて、長期参照ピクチャを識別することができる。
たとえば、RefPicSetLtCurr参照ピクチャサブセットは、現在のピクチャのインター予測において参照用に使われる可能性があり得るとともに復号順で現在のピクチャに続く1つまたは複数のピクチャのインター予測において参照用に使われる可能性があり得るすべての長期参照ピクチャの識別情報を含むことができ、かつそれだけを含むことができる。RefPicSetLtFoll参照ピクチャサブセットは、復号順で現在のピクチャに続く1つまたは複数のピクチャのインター予測において参照用に使われる可能性があり得るとともに、現在のピクチャのインター予測においては参照用に使うことができない、すべての長期参照ピクチャの識別情報を含むことができ、かつそれだけを含むことができる。
復号されるべき現在のピクチャがIDRピクチャである場合、ビデオデコーダ30は、RefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0、RefPicSetStFoll1、RefPicSetLtCurr、およびRefPicSetLtFoll参照ピクチャサブセットを空に設定してよい。というのは、IDRピクチャはインター予測することができず、復号順においてIDRピクチャの後のピクチャは、参照用に復号する際に、IDRピクチャに先立つどのピクチャも使うことができないからであり得る。そうでない場合(たとえば、現在のピクチャが非IDRピクチャであるとき)、ビデオデコーダ30は、以下の擬似コードを実装することによって、短期参照ピクチャサブセットと長期参照ピクチャサブセットとを構成することができる。
たとえば、ビデオデコーダ30が、スライスヘッダ中で、または参照されるピクチャパラメータセットへの参照によって、short_term_ref_pic_set()シンタックス構造のインスタンスを復号するとき、ビデオデコーダ30は、以下の擬似コードを実装して、RefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0、およびRefPicSetStFoll1参照ピクチャサブセットを構成することができる。
long_term_ref_pics_present_flagが0に等しいとビデオデコーダ30が判断した場合、このケースに対しては長期参照ピクチャがないので、ビデオデコーダ30は、RefPicSetLtCurrとRefPicSetLtFollとを空に設定してよい。そうではなく、ビデオデコーダ30がスライスヘッダ中のlong_term_ref_pic_set()シンタックス構造のインスタンスを復号する場合、ビデオデコーダ30は、以下の擬似コードを実装して、RefPicSetLtCurrおよびRefPicSetLtFoll参照ピクチャサブセットを構成することができる。
本開示に記載する技法によると、参照ピクチャが、コード化ピクチャの参照ピクチャセットの6つのサブセットのうちのいずれかに含まれる場合、PicOrderCnt(POC値)の特定の値をもつ参照ピクチャは、そのコード化ピクチャの参照ピクチャセットに含まれると言うことができる。PicOrderCntの特定の値をもつ参照ピクチャは、PicOrderCnt(POC値)のその特定の値が、そのサブセットに含まれるPicOrderCnt値のうちの1つに等しい場合、参照ピクチャセットの特定のサブセットに含まれると言われる。
参照ピクチャサブセットを構成した後、ビデオデコーダ30は、参照ピクチャセットを導出することができる。たとえば、ビデオデコーダ30は、参照ピクチャサブセットを並べて、参照ピクチャセットを導出することができる。一例として、ビデオデコーダ30は、RefPicSetStCurr0参照ピクチャサブセット、その後に続くRefPicSetStCurr1参照ピクチャサブセット、その後に続くRefPicSetStFoll0参照ピクチャサブセット、その後に続くRefPicSetStFoll1参照ピクチャサブセット、その後に続くRefPicSetLtCurr参照ピクチャサブセット、次いで、RefPicSetLtFoll参照ピクチャサブセットをリストすることができる。別の例として、ビデオデコーダ30は、RefPicSetStCurr0参照ピクチャサブセット、その後に続くRefPicSetStCurr1参照ピクチャサブセット、その後に続くRefPicSetLtCurr参照ピクチャサブセット、その後に続くRefPicSetStFoll0参照ピクチャサブセット、その後に続くRefPicSetStFoll1、次いで、RefPicSetLtFoll参照ピクチャサブセットをリストすることができる。
ビデオデコーダ30が参照ピクチャサブセットを並べるやり方での他の順列も、参照ピクチャセットを導出するために可能であり得る。いくつかの例では、参照ピクチャサブセットの構成と参照ピクチャセットの導出は組み合わせることができる。たとえば、参照ピクチャサブセットの構成の結果、自動的に、ビデオデコーダ30が参照ピクチャセットを導出することになり得る。言い換えると、ビデオデコーダ30は、参照ピクチャサブセットを構成し、参照ピクチャセットを導出するための異なるステップを実施する必要がなくなり得るが、ビデオデコーダ30が最初に参照ピクチャサブセットを構成し、次いで、参照ピクチャセットを導出することも可能であり得る。
また、本開示に記載する技法によると、上述したように参照ピクチャセットを構成した結果、ビデオデコーダ30は、以下の制約を満たし得る。言い換えると、参照ピクチャサブセットのうちの1つの中で識別される参照ピクチャは、他の参照ピクチャサブセットのうちのいずれの中でも識別することはできない。言い換えると、参照ピクチャサブセットのうちの1つの中で識別される参照ピクチャは、他の参照ピクチャサブセットのうちのいずれの中でも識別することはできない。別の例として、導出された参照ピクチャセット中には、参照ピクチャセットを形成する参照ピクチャサブセットのうちのいずれかに含まれる現在のピクチャよりも大きいtemporal_idをもつ参照ピクチャは存在し得ない。
上述のように、時間的識別値(temporal_id)は、現在のピクチャをコーディング/予測するために、どのピクチャを使うことができるかを示す階層的値であってよい。概して、特定のtemporal_id値をもつピクチャは、可能性としては、それ以上のtemporal_id値をもつピクチャ用の参照ピクチャになり得るが、逆は成り立たない。たとえば、1のtemporal_id値をもつピクチャは、可能性としては、1、2、3、...のtemporal_id値をもつピクチャ用の参照ピクチャになり得るが、0のtemporal_ID値をもつピクチャ用の参照ピクチャにはなり得ない。
最も低いtemporal_id値は、最も低い表示レートも示し得る。たとえば、ビデオデコーダ30が、0のtemporal_id値をもつピクチャのみを復号した場合、表示レートは、毎秒7.5個のピクチャになり得る。ビデオデコーダ30が、0および1のtemporal_id値をもつピクチャのみを復号した場合、表示レートは、毎秒15個のピクチャになり得、以下同様である。
いくつかの例では、現在のピクチャのtemporal_id以下のtemporal_id値をもつピクチャのみが、現在のピクチャの参照ピクチャセットに含まれ得る。上述したように、現在のピクチャのtemporal_id以下のtemporal_id値をもつピクチャのみが、参照ピクチャとして使われ得る。したがって、より低いまたは等しいtemporal_id値をもつすべての参照ピクチャが、現在のピクチャによってインター予測に使うことができ、参照ピクチャセットに含めることができる。また、現在のピクチャよりも大きいtemporal_id値を有し、復号順で現在のピクチャに続くとともに現在のピクチャよりも大きいtemporal_id値を有するピクチャによって使われるべきであるいくつかの参照ピクチャは、参照ピクチャセットから除外される。
これらの技法を用いて、参照ピクチャセットの導出のためのピクチャ識別に加え、temporal_idのシグナリングが必要とされないので、参照ピクチャセットシグナリングはより効率的になる。たとえば、ビデオエンコーダ20は、参照ピクチャセットに属す参照ピクチャのtemporal_id値をシグナリングしなくてよく、ビデオデコーダ30は、参照ピクチャセットを導出する目的で、参照ピクチャセットに属す参照ピクチャのtemporal_id値を受信する必要がなくてよい。
さらに、このようにして、構成された参照ピクチャサブセットは、現在のピクチャのものよりも大きいtemporal_id値をもつ参照ピクチャを識別することができる。たとえば、ビデオデコーダ30は、参照ピクチャサブセットを構成し、参照ピクチャサブセットのうちのいずれかの中で識別された参照ピクチャが、現在のピクチャのものよりも大きいtemporal_id値をもたないようにすることが可能であってよく、これは、ビットストリーム一致が、ビデオエンコーダ20によってシグナリングされるとともにビデオデコーダ30によって受信されるビットストリームにtemporal_id値が含まれないことを要求し得るからである。このようにして、ビデオデコーダ30は、参照ピクチャセットに属す参照ピクチャについての時間的識別値を受信することなく、参照ピクチャセットを導出することができる。
上記例では、ビデオデコーダ30は、6つの参照ピクチャサブセット、すなわち短期参照ピクチャ用に4つ(すなわち、RefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0、およびRefPicSetStFoll1)と、長期参照ピクチャ用に2つ(すなわち、RefPicSetLtCurrおよびRefPicSetLtFoll)とを構成することができる。ただし、本開示の態様はそのように限定されない。他の例では、これらの参照ピクチャサブセットのうちの2つ以上を組み合わせて1つの参照ピクチャサブセットにしてよく、その結果、ビデオデコーダ30が構成するより少ない参照ピクチャサブセットが生じる。以下では、ビデオデコーダ30がより少ない参照ピクチャサブセットを構成し得るいくつかの非限定的例について説明する。ビデオデコーダ30がより少ない参照ピクチャサブセットを構成し得る他のやり方もあり得る。
たとえば、いくつかの例では、現在のピクチャ用のサブセットと、復号順において以降のピクチャ用のサブセットの区別がない場合がある。したがって、RefPicSetSt0およびRefPicSetSt1と呼ばれる、短期参照ピクチャ用の2つのサブセットがあってよく、RefPicSetLtと呼ばれる、長期参照ピクチャ用のただ1つのサブセットがあってよい。この例では、RefPicSetSt0参照ピクチャサブセットは、RefPicSetStCurr0およびRefPicSetStFoll0の連結であってよく、RefPicSetStCurr0が連結結果の始端である。この例では、RefPicSetSt1参照ピクチャサブセットは、RefPicSetStCurr1とRefPicSetStFoll1の連結であってよく、RefPicSetStCurr1が連結結果の始端である。RefPicSetLt参照ピクチャサブセットは、RefPicSetLtCurrとRefPicSetLtFollの連結であってよく、RefPicSetLtCurrが連結結果の始端である。
別の例として、現在のピクチャよりも早いまたは後の出力順をもつサブセットの区別がない場合がある。これは、短期参照ピクチャにのみ当てはまり得る。したがって、RefPicSetStCurrおよびRefPicSetStFollと呼ばれる、短期参照ピクチャ用の2つのサブセットがあり得る。RefPicSetStCurr参照ピクチャサブセットは、RefPicSetStCurr0とRefPicSetStCurr1の連結であってよく、RefPicSetStCurr0が連結結果の始端である。RefPicSetStFoll参照ピクチャサブセットは、RefPicSetStFoll0とRefPicSetStFoll1の連結であってよく、RefPicSetStFoll0が連結結果の始端である。
別の例として、上で言及した両方のタイプの区別が適用されない場合がある。したがって、RefPicSetStと呼ばれる、短期参照ピクチャ用のただ1つのサブセット、およびRefPicSetLtと呼ばれる、長期参照ピクチャ用のただ1つのサブセットがあってよい。RefPicSetSt参照ピクチャサブセットは、リストされる順序(または他の任意の順序)でRefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0、およびRefPicSetStFoll1の連結であってよく、RefPicSetLtは上記と同じであり得る。
上記技法は、ビデオデコーダ30が参照ピクチャセットを導出することができる例示的やり方を説明する。符号化プロセス中、ビデオエンコーダ20は、再構成プロセスと呼ばれるものにおいて、後続ピクチャを符号化する目的で、符号化ピクチャを復号する必要もあり得る。したがって、いくつかの例では、ビデオエンコーダ20は、参照ピクチャセットを導出するようにも構成されてよい。いくつかの例では、ビデオエンコーダ20は、参照ピクチャセットを導出するためにビデオデコーダ30が実装した同じ技法を実装してよい。ただし、ビデオエンコーダ20による参照ピクチャセットの導出は、すべての例において要求されなくてもよく、ビデオデコーダ30が、参照ピクチャセットを導出する唯一のコーダであってよい。
したがって、いくつかの例では、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)が、参照ピクチャセットに属す参照ピクチャを示す情報をコーディングする(たとえば、それぞれ、符号化または復号する)ことができる。たとえば、ビデオエンコーダ20は、どの参照ピクチャが参照ピクチャセットに属すか判断するための値を含む符号化ビットストリームをシグナリングすればよい。同様に、ビデオデコーダ30は、ビットストリームを復号して、どの参照ピクチャが参照ピクチャセットに属すか判断すればよい。
ビデオコーダは、参照ピクチャのうちのゼロ個以上のピクチャを各々が識別する複数の参照ピクチャサブセットを構成することができる。たとえば、ビデオコーダは、6つの参照ピクチャサブセット(すなわち、RefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0、RefPicSetStFoll1、RefPicSetLtCurr、およびRefPicSetLtFoll参照ピクチャサブセット)を構成することができ、サブセットの各々は、ゼロ個以上の参照ピクチャを識別する。いくつかの例では、ビデオコーダは、複数の参照ピクチャサブセットに基づいて、現在のピクチャをコーディングすることができる。
たとえば、ビデオコーダは、構成された複数の参照ピクチャサブセットから、参照ピクチャセットを導出することができる。たとえば、ビデオコーダは、参照ピクチャサブセットを、参照ピクチャセットを導出するためのどの順序で並べてもよく、または参照ピクチャセットを、参照ピクチャサブセットの構成の一部として導出してよい。いくつかの例では、導出された参照ピクチャセットから、ビデオコーダは、現在のピクチャをコーディングすることができる。参照ピクチャセットは複数の参照ピクチャサブセットから導出されるので、ビデオコーダは、複数の参照ピクチャサブセットに基づいて現在のピクチャをコーディングするものと見なすことができる。
いくつかの例では、参照ピクチャサブセットを並べるために、ビデオコーダは、参照ピクチャセット中で参照ピクチャサブセットがリストされるべき順序で、参照ピクチャサブセットを構成すればよい。たとえば、ビデオコーダは、最初にRefPicSetLtCurr参照ピクチャサブセットを構成し、次いで、RefPicSetLtFoll参照ピクチャサブセットを構成し、次いで、RefPicSetStCurr0参照ピクチャサブセットを構成し、次いで、RefPicSetStCurr1参照ピクチャサブセットを構成し、次いで、RefPicSetStFoll0参照ピクチャサブセットを構成し、次いで、RefPicSetStFoll1参照ピクチャサブセットを構成すればよい。この説明のための例において、参照ピクチャセット中の参照ピクチャサブセットの順序は、RefPicSetLtCurr、RefPicSetLtFoll、RefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0、およびRefPicSetStFoll1が、その順序であってよいが、他の順序も可能である。
本開示に記載する例示的技法によると、参照ピクチャセットを導出した後、ビデオデコーダ30は、現在のピクチャ内のスライスの復号を開始してよい。復号プロセスの一部は、1つまたは2つの参照ピクチャリストの構成を伴う。参照ピクチャリストとは、PまたはBスライスの予測に使われる参照ピクチャのリストである。Pスライスの復号プロセスのために、1つの参照ピクチャリスト(リスト0)がある。Bスライスの復号プロセスのために、2つの参照ピクチャリスト(リスト0およびリスト1)がある。参照ピクチャリスト0またはRefPicList0と呼ばれることがあるリスト0は、PまたはBスライスのインター予測に使われる参照ピクチャリストである。Pスライス用に使われるすべてのインター予測は、リスト0を使う。参照ピクチャリスト0は、Bスライスについての双予測に使われる2つの参照ピクチャリストの一方であり、他方が参照ピクチャリスト1である。参照ピクチャリスト1またはRefPicList1と呼ばれることがあるリスト1は、Bスライスの予測に使われる参照ピクチャリストである。参照ピクチャリスト1は、Bスライスについての予測に使われる2つの参照ピクチャリストの一方であり、他方が参照ピクチャリスト0である。Bスライス中のいくつかのブロックは、リスト0とリスト1の両方を使って双予測することができ、Bスライス中のいくつかのブロックは、リスト0またはリスト1のいずれかを使って単予測することができる。
参照ピクチャリストを構成するために、ビデオデコーダ30は、初期リスト0と、Bスライス用には初期リスト1とを構成するためのデフォルトの構成技法を実装すればよい。初期リスト0および初期リスト1の構成は、初期化プロセスと呼ばれ得る。いくつかの例では、コード化ビットストリームは、ビデオデコーダ30が初期リスト0および/または初期リスト1を修正して、最終リスト0と最終リスト1とを生成するべきであることを示し得る。初期リスト0および/または初期リスト1の修正は、修正プロセスと呼ばれ得る。修正プロセスは、すべての例において要求されなくてもよく、ビデオデコーダ30が修正プロセスを実装することができる方法について、以下でより詳しく説明する。本開示に記載する技法によると、初期リスト0または初期リスト1の修正が必要とされないとき、最終リスト0または最終リスト1(すなわち、現在のピクチャのスライスを復号するのに使われる参照ピクチャリスト0または1)は、初期リスト0または初期リスト1に等しくなり得る。このように、参照ピクチャリストの並べ替えは、必要とされない場合もある。
本開示に記載する技法では、参照ピクチャサブセットの各々の中の参照ピクチャはすでに正しい順序になっているので、修正プロセスが必要とされるかどうかにかかわらず、初期リスト0または初期リスト1に含まれるべき参照ピクチャの並べ替えをビデオデコーダ30が実施する必要がなくてもよいように、ビデオデコーダ30は、初期リスト0または初期リスト1を構成することができる。たとえば、いくつかの他の技法では、修正プロセスが必要とされるかどうかにかかわらず、初期リスト0または初期リスト1に参照ピクチャを追加またはリストするときの、初期リスト0または初期リスト1に含まれるべき参照ピクチャの、POC値による並べ替えが必要とされる。
初期化プロセスにおいて、ビデオデコーダ30は、初期リスト0と初期リスト1とを構成するためのデフォルトの構成技法を実装してよい。デフォルトの構成技法は、ビデオデコーダ30が、ビデオデコーダ30が初期参照ピクチャリストを構成するべきであり、または参照ピクチャが初期参照ピクチャリスト中で識別されるべきである方法に関するシンタックス要素をビデオエンコーダ20から受信することなく、初期参照ピクチャリストを構成することを意味し得る。
ビデオデコーダ30は、PまたはBスライスヘッダを復号するとき、参照ピクチャリスト構成プロセスを呼び出してよい。たとえば、Pスライスを復号するとき、ビデオデコーダ30は、初期リスト0を構成するためのプロセスを呼び出すことはできるが、Pスライス中のブロックは、リスト0中で識別される参照ピクチャを参照して単予測されるだけなので、初期リスト1を構成するためのプロセスを呼び出すことはできない。Bスライス中のブロックは、リスト0およびリスト1の各々の中で識別される参照ピクチャを参照して双予測され得るので、Bスライスを復号するとき、ビデオデコーダ30は、初期リスト0を構成し、初期リスト1を構成するためのプロセスを呼び出すことができる。
本開示に記載する例示的技法によると、ビデオデコーダ30は、初期リスト0と初期リスト1とを構成するために、参照ピクチャサブセットを使用してよい。たとえば、初期リスト0および初期リスト1は、RefPicSetStCurr0、RefPicSetStCurr1、またはRefPicSetLtCurr中で識別されるゼロ個以上の参照ピクチャをリストすることができる。この例では、参照ピクチャリスト構成プロセスが呼び出されるとき、RefPicSetStCurr0、RefPicSetStCurr1、およびRefPicSetLtCurrには、少なくとも1つの参照ピクチャがあり得る。初期リスト0および初期リスト1は、同じ参照ピクチャサブセットにある1つまたは複数の参照ピクチャを識別し得るが、ビデオデコーダ30が初期リスト0中で参照ピクチャを追加する順序は、ビデオデコーダ30が初期リスト1中で参照ピクチャを追加する順序とは異なり得る。
本開示では、ビデオデコーダ30が、初期リスト0または初期リスト1中の参照ピクチャサブセットのうちの1つまたは複数から、参照ピクチャを追加する(たとえば、リストする)とき、本開示は、初期リスト0または初期リスト1中の参照ピクチャを識別するビデオデコーダ30に言及する。たとえば、複数の参照ピクチャサブセットは、各々が、ゼロ以上の参照ピクチャを識別することができる。初期リスト0と初期リスト1とを構成するために、ビデオデコーダ30は、初期リスト0または初期リスト1への参照ピクチャサブセット中で識別される、参照ピクチャのうちの1つまたは複数を識別することができる。
混乱を避けるため、および明快性を助けるために、本開示は、参照ピクチャサブセット中で識別される参照ピクチャのうちのゼロ個以上を、ビデオデコーダ30が初期リスト0および初期リスト1にリストしまたは追加して、初期リスト0と初期リスト1とを構成することに言及する場合がある。このように、ビデオデコーダ30が参照ピクチャを追加またはリストすることは、ビデオデコーダ30が、参照ピクチャサブセットに識別された参照ピクチャの識別子を追加またはリストすることを意味する。したがって、結果として得られる初期リスト0および初期リスト1は、現在のピクチャのブロックまたはスライスをコーディングするために使われる可能性があり得る、参照ピクチャについての複数の識別子を含む。これらの参照ピクチャは、ビデオデコーダ30およびビデオエンコーダ20のそれぞれの復号ピクチャバッファに記憶される。
たとえば、初期リスト0を構成するために、ビデオデコーダ30は、最初に、初期リスト0中のRefPicSetStCurr0において識別された参照ピクチャ、続いて、初期リスト0中のRefPicSetStCurr1において識別された参照ピクチャ、次いで、初期リスト0中のRefPicSetLtCurrにおいて識別された参照ピクチャをリスト(たとえば、追加)すればよい。初期リスト1を構成するために、ビデオデコーダ30は、最初に、初期リスト1中のRefPicSetStCurr1において識別された参照ピクチャ、続いて、初期リスト1中のRefPicSetStCurr0において識別された参照ピクチャ、次いで、初期リスト1中のRefPicSetLtCurrにおいて識別された参照ピクチャをリスト(たとえば、追加)すればよい。
さらに、参照ピクチャサブセットに参照ピクチャを異なる順序で追加することに加え、ビデオデコーダ30は、リスト0とリスト1とを構成するとき、参照ピクチャサブセットの各々からの異なる数の参照ピクチャを使用することができる。たとえば、リスト0およびリスト1は、RefPicSetStCurr0、RefPicSetStCurr1、およびRefPicSetLtCurrからの参照ピクチャすべてを含む必要はない。そうではなく、これらの例示的参照ピクチャサブセットから、初期リスト0と初期リスト1とを構成するためにリストされる参照ピクチャの数は、初期リスト0および初期リスト1の各々における参照ピクチャの最大数を示すシンタックス要素に基づき得る。
たとえば、初期リスト0に対して、ビデオエンコーダ20は、PおよびBスライスについてのnum_ref_idx_l0_active_minus1シンタックス要素をスライスヘッダ中で、および双予測されるBスライスについてのnum_ref_idx_l1_active_minus1シンタックス要素をシグナリングすればよい。上述したように、num_ref_idx_l0_active_minus1は、初期リスト0中にあり得る参照ピクチャの最大数を定義することができ、num_ref_idx_l1_active_minus1は、初期リスト1中にあり得る参照ピクチャの最大数を定義することができる。いくつかの例では、num_ref_idx_l0_active_minus1の値がnum_ref_idx_l1_active_minus1の値とは異なることが可能であり得るが、これはすべての例において必要なわけではない。いくつかの例では、num_ref_idx_l0_active_minus1の値は、num_ref_idx_l1_active_minus1の値と同じであり得る。
上述したように、ビデオデコーダ30は、コード化ビットストリーム中で、num_short_term_curr0およびnum_short_term_curr1についての値を受信することができる。ビデオデコーダ30は、変数NumShortTermCurr0を、num_short_term_curr0に等しく定義し、変数NumShortTermCurr1を、num_short_term_curr1に等しく定義すればよい。NumShortTermCurr0は、RefPicSetStCurr0参照ピクチャサブセット中の参照ピクチャの数を示すことができ、NumShortTermCurr1は、RefPicSetStCurr1参照ピクチャサブセット中の参照ピクチャの数を示すことができる。
ビデオデコーダ30は、コード化ビットストリーム中で、num_long_term_pps_currおよびnum_long_term_add_currについての値も受信することができる。ビデオデコーダ30は、変数NumLongTermCurrを、num_long_term_pps_currにnum_long_term_add_currを加えたものに等しいものとして定義すればよい。NumLongTermCurrは、RefPicSetLtCurr中の参照ピクチャの数を示し得る。
初期リスト0を構成するために、ビデオデコーダ30がRefPicSetStCurr0中のすべての参照ピクチャを初期リスト0に追加するまで、および初期リスト0中のエントリの数(たとえば、リスト0中で識別される参照ピクチャの数)がnum_ref_idx_l0_active_minus1以下である限り、ビデオデコーダ30は、最初にRefPicSetStCurr0中の参照ピクチャを初期リスト0に追加すればよい。たとえば、NumShortTermCurr0は、RefPicSetStCurr0参照ピクチャサブセット中の参照ピクチャの数を示し得る。この例では、ビデオデコーダ30は、RefPicSetStCurr0からリストされる参照ピクチャの数がNumShortTermCurr0と等しくなるまで、RefPicSetStCurr0参照ピクチャサブセットからの参照ピクチャをリストする(たとえば、追加する)ことができる。ただし、RefPicSetStCurr0の参照ピクチャを初期リスト0にリストする間、初期リスト0中のエントリの総数がnum_ref_idx_l0_active_minus1と等しくなった場合、ビデオデコーダ30は、初期リスト0にリストされていない追加ピクチャが、RefPicSetStCurr0中にあったとしても、RefPicSetStCurr0参照ピクチャサブセット中の参照ピクチャを追加するのを停止してよい。この場合、ビデオデコーダ30は、初期リスト0の構成を完了してしまってよい。
ビデオデコーダ30が、RefPicSetStCurr0参照ピクチャサブセット中のすべての参照ピクチャをリストし、初期リスト0中のエントリの総数がnum_ref_idx_l0_active_minus1未満になった後、ビデオデコーダ30は次いで、ビデオデコーダ30がRefPicSetStCurr1中のすべての参照ピクチャを識別するまで、および初期リスト0中のエントリの数(たとえば、リスト0中で識別される参照ピクチャの数)がnum_ref_idx_l0_active_minus1以下である限り、RefPicSetStCurr1中の参照ピクチャを追加すればよい。たとえば、上記と同様に、NumShortTermCurr1は、RefPicSetStCurr1参照ピクチャサブセット中の参照ピクチャの数を示し得る。この例では、ビデオデコーダ30は、RefPicSetStCurr1からリストされる参照ピクチャの数がNumShortTermCurr1と等しくなるまで、RefPicSetStCurr1参照ピクチャサブセットからの参照ピクチャをリストすることができる。ただし、RefPicSetStCurr1からの参照ピクチャをリストする間、初期リスト0中のエントリの総数がnum_ref_idx_l0_active_minus1と等しくなった場合、ビデオデコーダ30は、初期リスト0にリストされていない追加ピクチャが、RefPicSetStCurr1中にあったとしても、RefPicSetStCurr1参照ピクチャサブセットから参照ピクチャを追加するのを停止してよい。この場合、ビデオデコーダ30は、初期リスト0の構成を完了してしまってよい。
ビデオデコーダ30が、RefPicSetStCurr1参照ピクチャサブセット中のすべての参照ピクチャをリストし、初期リスト0中のエントリの総数がnum_ref_idx_l0_active_minus1未満になった後、ビデオデコーダ30は次いで、ビデオデコーダ30がRefPicSetLtCurr中のすべての参照ピクチャをリストするまで、および初期リスト0中のエントリの数(たとえば、リスト0中で識別される参照ピクチャの数)がnum_ref_idx_l0_active_minus1以下である限り、RefPicSetLtCurr中の参照ピクチャをリストすればよい。たとえば、上記と同様に、NumLongTermCurrは、RefPicSetLtCurr参照ピクチャサブセット中の参照ピクチャの数を示し得る。この例では、ビデオデコーダ30は、RefPicSetLtCurrからリストされる参照ピクチャの数がNumLongTermCurrと等しくなるまで、RefPicSetLtCurr参照ピクチャサブセットからの参照ピクチャをリストすることができる。ただし、RefPicSetLtCurrから参照ピクチャを初期リスト0にリストする間、初期リスト0中のエントリの総数がnum_ref_idx_l0_active_minus1と等しくなった場合、ビデオデコーダ30は、初期リスト0にリストされていない追加ピクチャが、RefPicSetLtCurr中にあったとしても、RefPicSetLtCurr参照ピクチャサブセット中の参照ピクチャを追加するのを停止してよい。この場合、ビデオデコーダ30は、初期リスト0の構成を完了してしまってよい。
以下の擬似コードは、ビデオデコーダ30が初期リスト0を構成することができるやり方を示す。
上記擬似コードにおいて、RefPicList0は初期リスト0であり得る。リスト0の修正が必要とされない例において、最終リスト0は初期リスト0と等しくなり得る。したがって、リスト0の修正が必要とされない例では、上記擬似コードにおけるRefPicList0は、最終リスト0であり得る。
ビデオデコーダ30は、初期リスト1を同様に構成してよい。ただし、初期リスト1を構成するために、ビデオデコーダ30は、最初に、RefPicSetStCurr1参照ピクチャサブセットから初期リスト1に、続いて、RefPicSetStCurr0参照ピクチャサブセットから初期リスト1に、続いて、RefPicSetLtCurr参照ピクチャサブセットから初期リスト1に、参照ピクチャを追加すればよい。また、上記と同様に、RefPicSetStCurr1、RefPicSetStCurr0、およびRefPicSetLtCurr参照ピクチャサブセットのうちのいずれか1つから参照ピクチャをリストする間、初期リスト1中のエントリの総数がnum_ref_idx_l1_active_minus1と等しくなった場合、これらの参照ピクチャサブセット中に追加参照ピクチャがあったとしても、ビデオデコーダ30は、参照ピクチャの追加を停止してよい。
たとえば、初期リスト1を構成するために、ビデオデコーダ30がRefPicSetStCurr1中のすべての参照ピクチャを識別するまで、および初期リスト1中のエントリの数(たとえば、リスト1中で識別される参照ピクチャの数)がnum_ref_idx_l1_active_minus1以下である限り、ビデオデコーダ30は、最初に、RefPicSetStCurr1から参照ピクチャをリストすればよい。たとえば、NumShortTermCurr1の値は、ビデオデコーダ30がいつ、RefPicSetStCurr1参照ピクチャサブセット中の参照ピクチャすべてをリストするのを完了したかを示し得る。ただし、RefPicSetStCurr1中の参照ピクチャをリストする間、初期リスト1中のエントリの総数がnum_ref_idx_l1_active_minus1と等しくなった場合、ビデオデコーダ30は、初期リスト1にリストされていない追加ピクチャが、RefPicSetStCurr1中にあったとしても、RefPicSetStCurr1参照ピクチャサブセットから参照ピクチャを追加するのを停止してよい。この場合、ビデオデコーダ30は、初期リスト1の構成を完了してしまってよい。
ビデオデコーダ30が、RefPicSetStCurr1参照ピクチャサブセット中のすべての参照ピクチャをリストし、初期リスト1中のエントリの総数がnum_ref_idx_l1_active_minus1未満になった後、ビデオデコーダ30は次いで、ビデオデコーダ30がRefPicSetStCurr0からすべての参照ピクチャをリストするまで、および初期リスト1中のエントリの数(たとえば、リスト1中で識別される参照ピクチャの数)がnum_ref_idx_l1_active_minus1以下である限り、RefPicSetStCurr0中の参照ピクチャをリストすればよい。たとえば、上記と同様、NumShortTermCurr0の値は、ビデオデコーダ30がいつ、RefPicSetStCurr0参照ピクチャサブセット中の参照ピクチャすべてをリストするのを完了したかを示し得る。ただし、RefPicSetStCurr0から参照ピクチャを初期リスト1にリストする間、初期リスト1中のエントリの総数がnum_ref_idx_l1_active_minus1と等しくなった場合、ビデオデコーダ30は、初期リスト1にリストされていない追加ピクチャが、RefPicSetStCurr0中にあったとしても、RefPicSetStCurr0参照ピクチャサブセット中の参照ピクチャを追加するのを停止してよい。この場合、ビデオデコーダ30は、初期リスト1の構成を完了してしまってよい。
ビデオデコーダ30が、RefPicSetStCurr0参照ピクチャサブセット中のすべての参照ピクチャをリストし、初期リスト1中のエントリの総数がnum_ref_idx_l1_active_minus1未満になった後、ビデオデコーダ30は次いで、ビデオデコーダ30がRefPicSetLtCurr中のすべての参照ピクチャをリストするまで、および初期リスト1中のエントリの数(たとえば、リスト1中で識別される参照ピクチャの数)がnum_ref_idx_l1_active_minus1以下である限り、RefPicSetLtCurr中の参照ピクチャをリストすればよい。たとえば、上記と同様、NumLongTermCurrの値は、ビデオデコーダ30がいつ、RefPicSetLtCurr参照ピクチャサブセット中の参照ピクチャすべてをリストするのを完了したかを示し得る。ただし、RefPicSetLtCurr中の参照ピクチャをリストする間、初期リスト1中のエントリの総数がnum_ref_idx_l1_active_minus1と等しくなった場合、ビデオデコーダ30は、初期リスト1にリストされていない追加ピクチャが、RefPicSetLtCurr中にあったとしても、RefPicSetLtCurr参照ピクチャサブセットから参照ピクチャを追加するのを停止してよい。この場合、ビデオデコーダ30は、初期リスト1の構成を完了してしまってよい。
以下の擬似コードは、ビデオデコーダ30が初期リスト1を構成することができるやり方を示す。
上記擬似コードにおいて、RefPicList1は初期リスト1であり得る。リスト1の修正が必要とされない例において、最終リスト1は初期リスト1と等しくなり得る。したがって、リスト1の修正が必要とされない例では、上記擬似コードにおけるRefPicList1は、最終リスト1であり得る。
以上は、参照ピクチャリスト修正が必要とされないとき、ビデオデコーダ30が最終リスト0と最終リスト1とを構成することができる1つの例示的やり方である。他の例では、ビデオデコーダ30は、参照ピクチャサブセットを、上述したものとは異なる順序で追加してよい。さらにいくつかの他の例では、ビデオデコーダ30は、上述したもの以外の参照ピクチャサブセットを追加してよい。
前述の例は、ビデオデコーダ30によって実施される参照ピクチャリスト構成のための技法について記載したが、本開示の態様はそのように限定されるわけではなく、ビデオエンコーダ20は、参照ピクチャリストを構成するための同様の技法を実装することができる。ただし、ビデオデコーダ30が参照ピクチャリストを構成するのと同じやり方で、ビデオエンコーダ20が参照ピクチャリストを構成することが必要なわけではない。
したがって、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は、参照ピクチャセットに属す参照ピクチャを示す情報をコーディングする(たとえば、符号化または復号する)ように構成してよい。上述したように、参照ピクチャセットは、現在のピクチャをインター予測するために使われる可能性があり得るとともに復号順で現在のピクチャに続く1つまたは複数のピクチャをインター予測するために使われる可能性があり得る参照ピクチャを識別する。
ビデオコーダは、ゼロ個以上の参照ピクチャを各々が識別する複数の参照ピクチャサブセットを構成するように構成されてよい。たとえば、ビデオコーダは、少なくともRefPicSetStCurr0、RefPicSetStCurr1、およびRefPicSetLtCurr参照ピクチャサブセットを構成することができる。ビデオコーダは、上述したような、追加参照ピクチャサブセットを構成することができる。
ビデオコーダは次いで、第1の参照ピクチャサブセットからの参照ピクチャを、続いて第2の参照ピクチャサブセットからの参照ピクチャを、続いて第3の参照ピクチャサブセットからの参照ピクチャを、初期参照ピクチャリストエントリの数が最大許容参照ピクチャリストエントリ数以下である限り、初期参照ピクチャリストに追加すればよい。たとえば、ビデオコーダは、初期リスト0中のエントリの数がnum_ref_idx_l0_active_minus1以下である限り、RefPicSetStCurr0参照ピクチャサブセットから、続いてRefPicSetStCurr1参照ピクチャサブセットから、続いてRefPicSetLtCurrサブセットから、初期リスト0に参照ピクチャをリストすればよい。繰返しになるが、num_ref_idx_l0_active_minus1の値は、リスト0についての最大許容参照ピクチャリストエントリ数を示し得る。
いくつかの例では、ビデオコーダは、第1の参照ピクチャサブセット中のすべての参照ピクチャが初期参照ピクチャリスト中でリストされ、または初期参照ピクチャリストエントリの数が最大許容参照ピクチャリストエントリ数と等しくなるまで、初期参照ピクチャリストにある第1の参照ピクチャサブセット中の参照ピクチャから追加してよい。初期参照ピクチャリストエントリの数が最大許容参照ピクチャリストエントリ数未満になったとき、および第1の参照ピクチャサブセットから参照ピクチャを追加した後、ビデオコーダは、第2の参照ピクチャサブセット中のすべての参照ピクチャが初期参照ピクチャリスト中でリストされ、または初期参照ピクチャリストエントリの数が最大許容参照ピクチャリストエントリ数と等しくなるまで、初期参照ピクチャリスト中の第2の参照ピクチャサブセットから参照ピクチャを追加してよい。初期参照ピクチャリストエントリの数が最大許容参照ピクチャリストエントリ数未満になったとき、および第2の参照ピクチャサブセットから参照ピクチャを追加した後、ビデオコーダは、第3の参照ピクチャサブセット中のすべての参照ピクチャが初期参照ピクチャリスト中でリストされ、または初期参照ピクチャリストエントリの数が最大許容参照ピクチャリストエントリ数と等しくなるまで、初期参照ピクチャリスト中の第3の参照ピクチャサブセットから参照ピクチャを追加してよい。
ビデオコーダは、初期リスト1を同様に構成してよい。たとえば、ビデオコーダは、初期リスト1中の初期参照ピクチャリストエントリの数がnum_ref_idx_l1_active_minus1以下である限り、第2の参照ピクチャサブセットからの参照ピクチャを、続いて第1の参照ピクチャサブセットからの参照ピクチャを、続いて第3の参照ピクチャサブセットからの参照ピクチャを初期リスト1に追加してよい。num_ref_idx_l1_active_minus1シンタックス要素は、リスト1中の最大許容エントリ数を定義し得る。
いくつかの例では、たとえば修正が必要とされないとき、初期リスト0および初期リスト1は、最終リスト0および最終リスト1と等しくなり得る。言い換えると、ビデオコーダは、修正が必要とされないとき、初期リスト0および初期リスト1の修正なしで、最終リスト0と最終リスト1とを構成することができる。これらのケースでは、初期リスト0と初期リスト1とを構成した後、ビデオコーダは、最終リスト0および最終リスト1(すなわち、ビデオコーダが現在のピクチャのブロックをコーディングするのに使う参照ピクチャリスト)を構成するための追加ステップを実施する必要がなくてよい。
上記擬似コードに示されるように、ビデオデコーダ30は、cIdxがnum_ref_idx_l0_active_minus1以下である間、初期リスト0を構成することができ、cIdxがnum_ref_idx_l1_active_minus1以下である間、初期リスト1を構成することができる。結果として、ビデオデコーダ30は、初期リスト0と初期リスト1とを構成することができ、参照ピクチャリスト中に未完エントリは残らない。たとえば、いくつかの他のビデオコーディング技法では、これらの他のビデオ技法のためのビデオデコーダは、本開示に記載するもの以外の技法を使用して、初期リスト0とリスト1とを構成することになる。これらの他のビデオコーディング技法については、初期リスト0および初期リスト1中のエントリの数が最大許容エントリ数未満だった場合、これらの他のビデオコーディング技法のためのビデオデコーダは、リスト0およびリスト1中の残りのエントリを、未完エントリに対する「参照ピクチャなし」で埋めることになる。未完エントリは、参照ピクチャを識別する最後のエントリの後の、および最後の可能エントリまでのリスト0およびリスト1中のエントリを指す。
理解を助けるための説明のための例として、これらの他のビデオコーディング技法のためのビデオデコーダは、リスト0を5つのエントリで構成することができ、最大許容エントリ数は10個のエントリである。この例では、これらの他のビデオコーディング技法のためのビデオデコーダは、第6〜第10のエントリを「参照ピクチャなし」として埋めることになる。この例では、未完エントリは、第6のエントリ(たとえば、参照ピクチャを識別する最後のエントリの後のエントリ)から第10のエントリ(たとえば、最大許容エントリ数で定義される最後の可能エントリ)までとなる。
本開示は、PPS中のシグナリングされる参照ピクチャセットの組合せと、スライスヘッダまたはAPS中のシグナリングされる参照ピクチャセットが組み合わされるとき、構成された短期参照ピクチャセットが、参照ピクチャをそのPOC値によって並べ替えずに、短期参照ピクチャセットのサブセットの作成の際に、または初期参照ピクチャリストの作成の際に使われ得るような、参照ピクチャセットの効率的シグナリングのための様々な技法について記載する。さらに、開示する技法は、どの参照ピクチャがPPSから継承されるべきか、およびどれがスライスヘッダまたはAPS中で直接シグナリングされるべきかについての正確な制御を可能にする。
上で提示したように、参照ピクチャセットのいくつかの参照ピクチャはピクチャパラメータセット(PPS)中でシグナリングすることができ、参照ピクチャセットの他の参照ピクチャはスライスヘッダ中でシグナリングすることができる。ビデオデコーダは次いで、PPSとスライスヘッダの両方の中の参照ピクチャを使って参照ピクチャセットを構成することができる。ただし、これらの技法は、ビデオデコーダがビデオのスライス用の初期参照ピクチャリストを構成することができる前に、構成された参照ピクチャセットをビデオデコーダが並べ替えることを要求し得る。この中間並べ替えステップは処理サイクルを浪費し、そうすることによってビデオデコーダが現在のピクチャを復号するのにかかる時間量を増大させる場合がある。
これに対処するために、一例として、本開示は、参照ピクチャセットを構成するために、PPSからのどの参照ピクチャをビデオデコーダが使うべきかを示す「combine_with_reference_flag」シンタックス要素、「ref_pic_set_combination_idx」シンタックス要素、「ref_pic_set_offset0」シンタックス要素、および「ref_pic_set_offset1」シンタックス要素について記載する。本技法は、どのピクチャがスライスヘッダに含まれ得るかに適用される限定についても記載する。このように、ビデオデコーダが、初期参照ピクチャリストを構成する前に参照ピクチャセットを並べ替える必要がないように、ビデオデコーダは参照ピクチャセットを構成することができる。
本開示の技法において、「combine_with_reference_flag」シンタックス要素が真にセットされている(たとえば、1の値を有する)とき、ビデオデコーダは、現在のピクチャ用の参照ピクチャセットが、現在のピクチャのPPS中およびスライスヘッダ中の両方の参照ピクチャから構成されることになると判断する。「ref_pic_set_combination_idx」シンタックス要素は、PPS内の候補参照ピクチャを識別するシンタックス要素である。1つの説明のための例として、5つの参照ピクチャ候補がある場合があり、各候補は10個の参照ピクチャを含み得る。「ref_pic_set_combination_idx」シンタックス要素の値は、この例では、5つの候補のうちの1つを指し得る。
候補の各々の中の参照ピクチャは、ピクチャのデルタPOC値によって順序付けることができる。POC値はピクチャの出力順を示し、デルタPOC値は、現在のピクチャのPOC値と参照ピクチャのPOC値との間の差分であり得る。一例として、1つの候補中の10個の参照ピクチャが−5〜−1および1〜5のデルタPOC値を有し得るが、他の値も可能である。この例では、−5のデルタPOC値は、参照ピクチャのPOC値から現在のピクチャのPOC値を減算すると−5になることを意味する。POC値が出力順を示すので、負のデルタPOC値は、参照ピクチャが現在のピクチャよりも早く出力される(たとえば、表示される)ことを示すことができ、正のデルタPOC値は、参照ピクチャが現在のピクチャの後で出力されることを示すことができる。
ref_pic_set_offset0シンタックス要素の値は、現在のピクチャよりも出力順が早い何個の参照ピクチャが、識別された候補から削除されるべきかを示す。ref_pic_set_offset1シンタックス要素の値は、現在のピクチャよりも出力順が遅い何個の参照ピクチャが、識別された候補から削除されるべきかを示す。いくつかの例において、ビデオデコーダが削除するピクチャは、現在のピクチャから出力順が最も離れているものである。
たとえば、ref_pic_set_offset0およびref_pic_set_offset1の値が両方とも2に等しいと仮定する。この例において、ビデオデコーダは、ref_pic_set_combination_idx値によって識別される候補の参照ピクチャから、2つのピクチャを削除してよい。前述の例では、参照ピクチャは、−5〜−1および1〜5のデルタPOC値に対応する参照ピクチャであり得る。この例では、ビデオデコーダは、−5〜−1のデルタPOC値をもつ参照ピクチャに対応する、参照ピクチャのうちの2つと、1〜5のデルタPOC値をもつ参照ピクチャに対応する、参照ピクチャのうちの2つとを削除してよい。さらに、いくつかの事例において、ビデオデコーダが削除する参照ピクチャは、−5、−4、4、および5のデルタPOC値に対応する参照ピクチャであってよく、というのはこれらの参照ピクチャが、出力順において現在のピクチャから最も離れている参照ピクチャであるからである。
したがって、この例では、ビデオデコーダは、PPS内の識別された候補中の参照ピクチャのうちの6つを、ビデオデコーダが使うべきであると判断することができる。具体的には、この例では、参照ピクチャは、−3〜−1および1〜3のデルタPOC値に対応するものになる。
ビデオデコーダは次いで、スライスのスライスヘッダから、参照ピクチャセットの残りのピクチャを識別すればよい。ただし、ビデオデコーダが参照ピクチャセットを並べ替える必要がなくてよいことを確実にするために、どの参照ピクチャがスライスヘッダに含まれ得るかに対して、いくつかの制限が課され得る。
いくつかの例において、スライスヘッダ中で識別される参照ピクチャは、PPS中で識別される参照ピクチャのうちのどれよりも、距離において、出力順において離れていなければならない。たとえば、前の例に沿うと、−6または+6のデルタPOC値をもつ参照ピクチャは、PPS中の参照ピクチャのうちのどれよりも離れているので、スライスヘッダに含まれ得る参照ピクチャとして適格であり得る。
ビデオデコーダは次いで、参照ピクチャセットを、2つのサブセットの組合せとして構成することができる。第1のサブセットは、現在のピクチャに時間的に先立って出現する参照ピクチャを含むことができ、第2のサブセットは、時間的に現在のピクチャの後に続いて出現する参照ピクチャを含むことができる。ビデオデコーダは、第1のサブセットの参照ピクチャを、PPS中においてデルタPOC値で識別される、現在のピクチャに最も近い参照ピクチャから始まり、スライスヘッダ中においてデルタPOC値で識別される、現在のピクチャから最も離れた参照ピクチャまでの降POC順で順序付ければよい。ビデオデコーダは、第2のサブセット中の参照ピクチャを、PPS中においてデルタPOC値で識別される、現在のピクチャに最も近い参照ピクチャから始まり、スライスヘッダ中においてデルタPOC値で識別される、現在のピクチャから最も離れた参照ピクチャまでの昇POC順で順序付ければよい。このように、ビデオデコーダは、ビデオデコーダが初期参照ピクチャリストを構成するとき、ビデオデコーダが参照ピクチャセットを並べ替える必要がなくてよいように、参照ピクチャセットを構成することができる。
テーブル6は、開示する技法を実装するための例示的シンタックスおよびセマンティクスを示す。
参照ピクチャセットシンタックス構造の内容は、ピクチャのすべてのスライスヘッダ中で同じであり得る。
1に等しくセットされたシンタックス要素「ref_pic_set_pps_flag」は、現在のピクチャの短期参照ピクチャセットがアクティブピクチャパラメータセット中のみのシンタックス要素を使って作成され得ることを指定することができる。0に等しくセットされたシンタックス要素「ref_pic_set_pps_flag」は、現在のピクチャの短期参照ピクチャセットが、ref_pic_set()シンタックス構造中で明示的にシグナリングされる、可能性としてはアクティブピクチャパラメータセット中のシンタックス要素によって示される短期参照ピクチャと組み合わされた、ゼロ個以上の短期参照ピクチャを使って作成され得ることを指定することができる。
シンタックス要素「ref_pic_set_idx」は、現在のピクチャの参照ピクチャセットの作成に使うことができるアクティブピクチャパラメータセット中で指定される短期参照ピクチャセットのリストへの索引を指定することができる。シンタックス要素「ref_pic_set_idx」はceil(log2(num_ref_pic_sets))ビットによって表すことができ、シンタックス要素「ref_pic_set_idx」の値は、両端値を含む0〜num_ref_pic_sets−1の範囲内であり得る。
0〜num_negative_pics_pps[idx]+num_positive_pics_pps[idx]の範囲内の、i個すべての値についての変数RpsPoc[i]およびRpsByCurrPic[i]、ならびに変数Offset、およびRpsNumRefPicsは、次のように導出することができる。
上式で、PicOrderCntは、現在のピクチャのピクチャオーダーカウントである。
1に等しくセットされたシンタックス要素「combine_with_reference_flag」は、アクティブピクチャパラメータセットからのシンタックス要素が、ref_pic_set()シンタックス構造中の明示的シグナリングと組み合わせて、リストRpsPocおよびRpsByCurrPicの値を割り当てるのに使われることを指定することができる。0に等しくセットされたシンタックス要素「combine_with_reference_flag」は、アクティブピクチャパラメータセットからのシンタックス要素が、ref_pic_set()シンタックス構造中の明示的シグナリングと組み合わせて、リストRpsPocおよびRpsByCurrPicの値を割り当てるのに使われないことを指定することができる。
シンタックス要素「ref_pic_set_combination_idx」は、明示的シグナリングと組み合わせて、現在のピクチャの参照ピクチャセットの作成に使うことができるリストRpsPocおよびRpsbyCurrPicへの索引を指定することができる。シンタックス要素「ref_pic_set_comtination_idx」はceil(log2(num_ref_pic_sets))ビットによって表すことができ、シンタックス要素「ref_pic_set_comtination_idx」の値は、両端値を含む0〜num_ref_pic_sets−1の範囲内であり得る。
シンタックス要素「ref_pic_set_offset0」および「ref_pic_set_offset1」は、それぞれ、次のように、リストRpsPocおよびRpsbyCurrPicの導出において使われる変数Offset0およびOffset1の値を指定することができる。idxは、ref_pic_set_combination_idxに等しいとする。ref_pic_set_offset0の値は、両端値を含む0〜num_negative_pics_pps[idx]の範囲内であり得る。ref_pic_set_offset1の値は、両端値を含む0〜num_positive_pics_pps[idx]の範囲内であり得る。
変数Offset0およびOffset1は次のように導出される。
シンタックス要素「combine_with_reference_flag」が0に等しくセットされている場合、変数Offset0およびOffset1は両方とも、0に等しいと推論され得る。
シンタックス要素「num_negative_pics」は、後続のnegative_delta_poc_minus1[i]およびused_by_curr_pic_flag0[i]シンタックス要素の数を指定することができる。num_negativet_picsの値は、両端値を含む0〜max_num_ref_framesの範囲内であり得る。
変数Offsetは次のように導出することができる。
両端値を含む0〜Offset0の範囲内の、i個すべての値についての変数RpsPoc[i]およびRpsByCurrPic[i]は、次のように導出することができる。
上式で、PicOrderCntは、現在のピクチャのピクチャオーダーカウントである。
シンタックス要素「negative_delta_poc_minus1[i]」に1を加えたものは、2つのピクチャオーダーカウント値の間の絶対差分を指定することができる。negative_delta_poc_minus1[i]の値は、両端値を含む0〜MaxPicOrderCntLsb−1の範囲内であり得る。
変数RpsPoc[i+Offset0]は、次のように導出することができる。
上式で、PicOrderCntは、現在のピクチャのピクチャオーダーカウントである。
Offset0が0よりも大きいとき、RpsPoc[Offset0]の値はRpsPoc[Offset0−1]の値未満であり得る。これは、combine_with_reference_flagが1に等しいときの以下の制約を表す。現在のピクチャのもの未満のピクチャオーダーカウントを有する参照ピクチャが、現在のピクチャの短期参照ピクチャセットに含まれるために、スライスヘッダ中で直接シグナリングされるどのピクチャも、PPSから継承されるどのピクチャのもの未満のピクチャオーダーカウントを有してもよい。
0に等しいシンタックス要素「used_by_curr_pic_flag0[i]」は、現在のピクチャのもの未満のピクチャオーダーカウントを有する第iの短期参照ピクチャが、現在のピクチャのインター予測において使われないことを指定することができる。
変数RpsByCurrPic[i+Offset0]は、次のように導出することができる。
シンタックス要素「num_positive_pics」は、後続のpositive_delta_poc_minus1[i]およびused_by_curr_pic_flag1[i]シンタックス要素の数を指定することができる。num_positive_picsの値は、両端値を含む0〜max_num_ref_frames−Offsetの範囲内であり得る。存在しないとき、num_positive_picsの値は、0に等しいと推論され得る。
変数RpsNumRefPicsは、次のように導出することができる。
両端値を含むOffset〜Offset+Offset1−1の範囲内の、i個すべての値についての変数RpsPoc[i]およびRpsByCurrPic[i]は、次のように導出することができる。
上式で、PicOrderCntは、現在のピクチャのピクチャオーダーカウントである。
シンタックス要素「delta_poc_minus1[i]」は、2つのピクチャオーダーカウント値の間の絶対差分を指定することができる。delta_poc_minus1[i]の値は、両端値を含む0〜MaxPicOrderCntLsb−1の範囲内であり得る。
変数RpsPoc[i+Offset+Offset1]は、次のように導出することができる。
上式で、PicOrderCntは、現在のピクチャのピクチャオーダーカウントである。
Offset1が0よりも大きいとき、RpsPoc[Offset+Offset1]の値は、RpsPoc[Offset+Offset1−1]の値よりも大きくなり得る。これは、combine_with_reference_flagが1に等しいときの以下の制約を表す。現在のピクチャのものよりも大きいピクチャオーダーカウントを有する参照ピクチャが、現在のピクチャの短期参照ピクチャセットに含まれるために、スライスヘッダ中で直接シグナリングされるどのピクチャも、PPSから継承されるどのピクチャのものよりも大きいピクチャオーダーカウントを有してもよい。
0に等しくセットされたシンタックス要素「used_by_curr_pic_flag1[i]」は、現在のピクチャのものよりも大きいピクチャオーダーカウントを有する第iの短期参照ピクチャが、現在のピクチャのインター予測において使われないことを指定することができる。
変数RpsbyCurrPic[i+Offset+Offset1]]は、次のように導出することができる。
シンタックス要素「num_long_term_pps」は、参照されるピクチャパラメータセット中で指定されるとともに現在のピクチャの長期参照ピクチャセットに含まれるべきである長期参照ピクチャの数を指定することができる。num_long_term_ppsが存在しない場合、値は、0に等しいものとして導出され得る。num_long_term_ppsの値は、両端値を含む0〜max_num_ref_framesの範囲内であり得る。
変数LtOffsetは次のように導出される。
シンタックス要素「num_long_term_add」は、参照されるピクチャパラメータセット中で指定されないとともに現在のピクチャの長期参照ピクチャセットに含まれるべきである長期参照ピクチャの数を指定することができる。num_long_term_addが存在しない場合、値は、0に等しいものとして導出され得る。num_long_term_addの値は、両端値を含む0〜max_num_ref_frames−num_long_term_ppsの範囲内であり得る。
変数LtRpsNumRefPicsは次のように導出される。
シンタックス要素「long_term_ref_pic_set_idx_pps[i]」は、参照されるピクチャパラメータセットから現在のピクチャの長期参照ピクチャセットに継承される第iの長期参照ピクチャの、参照されるピクチャパラメータセット中で指定される長期参照ピクチャのリストに対する索引を指定し得る。long_term_ref_pic_set_idx_pps[i]の値は、両端値を含む0〜31の範囲内であり得る。
変数LtRpsPoc[i]およびLtRpsByCurrPic[i]は、次のように導出することができる。
シンタックス要素「long_term_ref_pic_poc_delta_add[i]」は、参照されるピクチャパラメータセットから継承されないが現在のピクチャの長期参照ピクチャセットに含まれる第iの長期参照ピクチャのピクチャオーダーカウントを指定することができる。シンタックス要素「long_term_ref_pic_poc_delta_add[i]」を表すのに使われるビットの数は、long_term_ref_pic_poc_len_minus4+4に等しくなり得る。
変数LtRpsPoc[i+LtOffset]は、次のように導出される。
上式で、PicOrderCntは、現在のピクチャのピクチャオーダーカウントである。
0に等しくセットされたシンタックス要素「used_by_curr_pic_flag_add[i]」は、参照されるピクチャパラメータセットから継承されないが現在のピクチャの長期参照ピクチャセットに含まれる第iの長期参照ピクチャが、現在のピクチャのインター予測において使われないことを指定することができる。
変数LtRpsbyCurrPic[i+LtOffset]は、次のように導出される。
上述したように、本開示に記載する技法は、HEVC規格に従って実施することができる。以下は、理解を助けるための、HEVC規格についての手短な説明である。さらに、これらの技法は、HEVC規格のコンテキストで説明されるが、これらの技法は、固有規格を含む他の規格に拡張可能であり得る。
JCT−VCは、HEVC規格の開発に取り組んでいる。HEVC規格化の取り組みは、HEVCテストモデル(HM)と呼ばれるビデオコーディングデバイスの発展的モデルに基づく。HMは、たとえば、ITU−T H.264/AVCに従う既存のデバイスに対してビデオコーディングデバイスのいくつかの追加の能力を仮定する。たとえば、H.264は9つのイントラ予測符号化モードを提供するが、HMは33個ものイントラ予測符号化モードを提供し得る。
一般に、HMの作業モデルは、ビデオフレームまたはピクチャが、ルーマとクロマの両方のサンプルを含む一連のツリーブロックまたは最大コーディングユニット(LCU)に分割され得ることを記載する。ツリーブロックは、H.264規格のマクロブロックと同様の目的を有する。スライスは、復号順序でいくつかの連続的なツリーブロックを含む。ビデオフレームまたはピクチャは、1つまたは複数のスライスに区分され得る。各ツリーブロックは、4分木に従ってコーディングユニット(CU)に分割され得る。たとえば、4分木のルートノードとしてのツリーブロックは、4つの子ノードに分割され得、各子ノードは、次に、親ノードとなり、別の4つの子ノードに分割され得る。4分木のリーフノードとしての、最終的な、分割されていない子ノードは、コーディングノード、すなわち、コード化ビデオブロックを備える。コード化ビットストリームに関連するシンタックスデータは、ツリーブロックが分割され得る最大回数を定義し得、コーディングノードの最小サイズをも定義し得る。ツリーブロックは、いくつかの例では、LCUと呼ばれることがある。
CUは、コーディングノードと、コーディングノードに関連する予測ユニット(PU)および変換ユニット(TU)とを含む。CUのサイズは、コーディングノードのサイズに対応し、形状が方形でなければならない。CUのサイズは、8×8ピクセルから最大64×64以上のピクセルをもつツリーブロックのサイズまでに及び得る。各CUは、1つまたは複数のPUと、1つまたは複数のTUとを含み得る。CUに関連するシンタックスデータは、たとえば、CUを1つまたは複数のPUに区分することを記述し得る。区分モードは、CUが、スキップモード符号化またはダイレクトモード符号化されるか、イントラ予測モード符号化されるか、あるいはインター予測モード符号化されるかによって異なり得る。PUは、形状が非方形になるように区分され得る。CUに関連するシンタックスデータは、たとえば、4分木に従って、CUを1つまたは複数のTUに区分することも記述し得る。TUは、形状が方形または非方形であり得る。
HEVC規格は、CUごとに異なり得るTUに従う変換を可能にする。TUは、一般に、区分されたLCUについて定義された所与のCU内のPUのサイズに基づいてサイズ決定されるが、常にそうであるとは限らない。TUは、一般にPUと同じサイズであるかまたはPUよりも小さい。いくつかの例では、CUに対応する残差サンプルは、「残差4分木」(RQT:residual quad tree)として知られる4分木構造を使用してより小さいユニットに再分割され得る。RQTのリーフノードは変換ユニット(TU)と呼ばれることがある。TUに関連するピクセル差分値は、変換されて変換係数が生成され得、その変換係数は量子化され得る。
一般に、PUは、予測プロセスに関連したデータを含む。たとえば、PUがイントラモード符号化されるとき、PUは、PUについてのイントラ予測モードを記述するデータを含み得る。別の例として、PUがインターモード符号化されるとき、PUは、そのPUについての動きベクトルを定義するデータを含み得る。PUについての動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの解像度(たとえば、1/4ピクセル精度または1/8ピクセル精度)、動きベクトルが指す参照ピクチャ、および/または動きベクトルの参照ピクチャリスト(たとえば、リスト0、リスト1、またはリストC)を記述し得る。
概して、TUは、変換プロセスと量子化プロセスとのために使用される。1つまたは複数のPUを有する所与のCUは、1つまたは複数の変換ユニット(TU)をも含み得る。予測の後に、ビデオエンコーダ20は、PUに対応する残差値を計算し得る。残差値は、エントロピーコーディングのためのシリアル化変換係数(serialized transform coefficient)を生成するために、TUを使用して変換係数に変換され、量子化され、走査され得るピクセル差分値を備える。本開示では、一般に、CUのコーディングノードを指すために「ビデオブロック」という用語を使用する。いくつかの特定の場合において、本開示では、コーディングノードならびにPUおよびTUを含む、ツリーブロック、すなわち、LCUまたはCUを指す「ビデオブロック」という用語も使用し得る。
ビデオシーケンスは、一般的に、一連のビデオフレームまたはピクチャを含む。ピクチャグループ(GOP)は、一般に、ビデオピクチャのうちの一連の1つまたは複数を備える。GOPは、GOP内に含まれるいくつかのピクチャを記述するシンタックスデータを、GOPのヘッダ中、1つまたは複数のピクチャのヘッダ中、または他の場所に含み得る。ピクチャの各スライスは、それぞれのスライスの符号化モードを記述するスライスシンタックスデータを含み得る。ビデオエンコーダ20は、一般に、ビデオデータを符号化するために、個々のビデオスライス内のビデオブロックに対して動作する。ビデオブロックは、CU内のコーディングノードに対応し得る。ビデオブロックは、サイズを固定することも変更することもでき、指定のコーディング規格に応じてサイズが異なることがある。
一例として、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を指す。
本開示では、「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に等しいとは限らない。
CUのPUを使用したイントラ予測コーディングまたはインター予測コーディングの後、ビデオエンコーダ20は、CUのTUのための残差データを計算し得る。PUは、(ピクセル領域とも呼ばれる)空間領域においてピクセルデータを備え得、TUは、たとえば、残差ビデオデータへの離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換などの変換の適用後に、変換領域において係数を備え得る。残差データは、符号化されていないピクチャのピクセルと、PUに対応する予測値との間のピクセル差分に対応し得る。ビデオエンコーダ20は、CUのための残差データを含むTUを形成し、次いで、TUを変換して、CUの変換係数を生成し得る。
変換係数を生成するための任意の変換の後に、ビデオエンコーダ20は、変換係数の量子化を実施し得る。量子化は、概して、さらなる圧縮を提供する、係数を表すために使用されるデータの量をできるだけ低減するために変換係数を量子化するプロセスを指す。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。たとえば、量子化中にnビット値がmビット値に切り捨てられ得、この場合、nはmよりも大きい。
いくつかの例では、ビデオエンコーダ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が使用するための符号化ビデオデータに関連するシンタックス要素をエントロピー符号化し得る。
CABACを実施するために、ビデオエンコーダ20は、送信されるべきシンボルに、コンテキストモデル内のコンテキストを割り当て得る。コンテキストは、たとえば、シンボルの隣接値が非0であるか否かに関係し得る。CAVLCを実施するために、ビデオエンコーダ20は、送信されるべきシンボルの可変長コードを選択し得る。VLCにおけるコードワードは、比較的短いコードが優勢シンボルに対応し、より長いコードが劣勢シンボルに対応するように構成され得る。このようにして、VLCの使用は、たとえば、送信されるべき各シンボルのために等長コードワードを使用するよりも、ビット節約を達成し得る。確率判断は、シンボルに割り当てられるコンテキストに基づき得る。
図2は、符号化され送信される複数のピクチャを含む例示的ビデオシーケンス33を示す概念図である。場合によっては、ビデオシーケンス33はピクチャのグループ(GOP)と呼ばれることがある。ビデオシーケンス33は、図示のように、表示順でピクチャ35A、36A、38A、35B、36B、38B、および35C、ならびに最終ピクチャ39を含む。ピクチャ34は、シーケンス33の前に発生するシーケンスの表示順における最終のピクチャである。図2は概して、ビデオシーケンスのための例示的な予測構造を表し、異なるスライスまたはピクチャタイプ(たとえば、Pピクチャもしくはスライス、またはBピクチャもしくはスライス)のビデオブロックを予測するために使われるピクチャ参照を示すことだけを意図している。実際のビデオシーケンスは、様々なピクチャタイプのより多いまたはより少ないビデオピクチャを異なる表示順で含み得る。ビデオシーケンス33は、図2に示すものよりも多いまたは少ないピクチャを含んでよく、ビデオシーケンス33中に示されるピクチャは、理解のため、および例として示されている。
ブロックベースのビデオコーディングの場合、シーケンス33中に含まれるビデオピクチャの各々は、コーディングユニット(CU)や予測ユニット(PU)などのビデオブロックに区分され得る。たとえば、ビデオピクチャの各CUは、1つまたは複数のPUを含み得る。イントラコード化(I)ピクチャ中のビデオブロックは、同じピクチャ中の隣接ブロックに関する空間的予測を使用して予測される。インターコード化(PまたはB)ピクチャ中のビデオブロックは、同じピクチャ中の隣接ブロックに関する空間的予測、または他の参照ピクチャに関する時間的予測を使用し得る。
Bピクチャ中のビデオブロックは、2つの異なる参照ピクチャリスト(たとえば、リスト0およびリスト1と呼ばれる参照ピクチャリスト0および1)から2つの動きベクトルを算出するための双方向予測を使って予測することができる。場合によっては、Bピクチャ中のビデオブロックは、2つの異なる参照ピクチャリストのうちの1つからの単方向予測を使用して予測され(たとえば、単方向Bコード化され)得る。Pピクチャ中のビデオブロックは、単一の参照ピクチャリストからの単一の動きベクトルを計算するために、単方向予測を使用して予測され得る。新生のHEVC規格によると、ビデオブロックは、2つの参照ピクチャリストのうちの1つから単一の動きベクトルを計算するための単方向予測、または2つの参照ピクチャリストから2つの動きベクトルを計算するための双方向予測のいずれかを使用して符号化され得る。2つの参照ピクチャリストは、たとえば、過去の参照ピクチャもしくは将来の参照ピクチャまたは過去および将来の参照ピクチャの両方を、表示または出力順で、また、常に過去の参照ピクチャを復号順で含み得る。
図2の例では、最終ピクチャ39は、イントラモードコーディングのためにIピクチャに指定される。他の例では、最終ピクチャ39は、Iピクチャであってよい、前のシーケンスの最終ピクチャ34に関する、(たとえば、Pピクチャとして)インターモードコーディングを用いてコーディングされ得る。ビデオピクチャ35A〜35C(総称して「ビデオピクチャ35」)は、過去のフレームと将来のピクチャとに関する双方向予測を使用して、コーディングのためにBピクチャに指定される。図示の例では、ピクチャ35Aは、ピクチャ34および36Aからビデオピクチャ35Aへの矢印によって示されるように、最終ピクチャ34とピクチャ36Aとを参照してBピクチャとして符号化される。ピクチャ35Bおよび35Cは同様に符号化される。
ビデオピクチャ36A〜36B(総称して「ビデオピクチャ36」)は、過去のピクチャを参照して単方向予測を使用してピクチャとしてコーディング用に指定され得る。図示の例では、ピクチャ36Aは、ピクチャ34からビデオピクチャ36Aへの矢印によって示されるように、最終ピクチャ34を参照してPピクチャとして符号化される。ピクチャ36Bは、同様に符号化される。
本開示に記載する技法によると、ビデオエンコーダ20は、シーケンス33中のピクチャの各々についての参照ピクチャセットをシグナリングすることができる。たとえば、ピクチャ35Aの場合、この参照ピクチャセットは、ピクチャ35A、ならびに復号順においてピクチャ35Aに続くピクチャをインター予測するのに使われる可能性があり得るすべての参照ピクチャをインター予測するのに使うことができるすべての参照ピクチャを識別することができる。たとえば、ピクチャ35Aについての参照ピクチャセットは、ピクチャ34およびピクチャ36AについてのPOC値、ならびに復号順においてピクチャ35Aに続くピクチャをインター予測に使われる可能性があり得るものなど、追加参照ピクチャについてのPOC値を含み得る。ピクチャ35Aに続くピクチャは、この例では、復号順においてピクチャ35Aに続くとともに、ビデオシーケンス33内にあるピクチャであり得る。
ビデオデコーダ30は次いで、ピクチャ35A用の参照ピクチャセットを上述したように導出することができる。たとえば、ビデオデコーダ30は、上述したように、参照ピクチャセットに属す参照ピクチャについてのPOC値を判断することができる。ビデオデコーダ30はさらに、少なくとも4つまたは少なくとも5つの参照ピクチャサブセットを、いくつかの例では、上述した6つまでの参照ピクチャサブセットを構成することができる。ビデオデコーダ30は、6つの参照ピクチャセットを、特定の順序で配置して、ピクチャ35A用の参照ピクチャセットを導出すればよい。
ビデオデコーダ30はさらに、上述したように初期参照ピクチャリストを構成することができ、この場合、初期参照ピクチャリストに含まれるべきピクチャの並べ替えは必要とされない。
図3は、本開示で説明する技法を実装し得る例示的なビデオエンコーダ20を示すブロック図である。ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラコーディングおよびインターコーディングを実施し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオの空間的冗長性を低減または除去するために空間的予測に依拠する。インターコーディングは、ビデオシーケンスの隣接フレームまたはピクチャ内のビデオの時間的冗長性を低減または除去するために時間的予測に依拠する。イントラモード(Iモード)は、いくつかの空間ベースの圧縮モードのいずれかを指し得る。単方向予測(Pモード)または双予測(Bモード)などのインターモードは、いくつかの時間ベースの圧縮モードのいずれかを指し得る。
図3の例では、ビデオエンコーダ20は、区分ユニット35と、予測モジュール41と、復号ピクチャバッファ(DPB)64と、加算器50と、変換モジュール52と、量子化ユニット54と、エントロピー符号化ユニット56とを含む。予測モジュール41は、動き推定ユニット42と、動き補償ユニット44と、イントラ予測モジュール46とを含む。ビデオブロック再構成のために、ビデオエンコーダ20はまた、逆量子化ユニット58と、逆変換モジュール60と、加算器62とを含む。再構成されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタ処理するデブロッキングフィルタ(図3に図示せず)も含まれ得る。所望される場合、デブロッキングフィルタは、一般に、加算器62の出力をフィルタ処理することになる。また、デブロッキングフィルタに加えて追加のループフィルタ(ループ内またはループ後)が使用され得る。
図3に示すように、ビデオエンコーダ20はビデオデータを受信し、区分ユニット35はデータをビデオブロックに区分する。この区分は、たとえば、LCUおよびCUの4分木構造に応じて、スライス、タイル、または他のより大きいユニットへの区分、ならびにビデオブロック区分をも含み得る。ビデオエンコーダ20は、概して、符号化されるべきビデオスライス内のビデオブロックを符号化する構成要素を示す。スライスは、複数のビデオブロックに(および、場合によっては、タイルと呼ばれるビデオブロックのセットに)分割され得る。予測モジュール41は、誤り結果(たとえば、コーディングレートおよびひずみレベル)に基づいて現在ビデオブロックのために、複数のイントラコーディングモードのうちの1つ、または複数のインターコーディングモードのうちの1つなど、複数の可能なコーディングモードのうちの1つを選択し得る。予測モジュール41は、得られたイントラコード化ブロックまたはインターコード化ブロックを、残差ブロックデータを生成するために加算器50に与え、参照ピクチャとして使用するための符号化ブロックを再構成するために加算器62に与え得る。
予測モジュール41内のイントラ予測モジュール46は、空間圧縮を行うために、コーディングされるべき現在ブロックと同じピクチャまたはスライス中の1つまたは複数の隣接ブロックに対する現在ビデオブロックのイントラ予測コーディングを実施し得る。予測モジュール41内の動き推定ユニット42および動き補償ユニット44は、時間圧縮を行うために、1つまたは複数の参照ピクチャ中の1つまたは複数の予測ブロックに対する現在ビデオブロックのインター予測コーディングを実施する。
動き推定ユニット42は、ビデオシーケンスの所定のパターンに従ってビデオスライスのためのインター予測モードを判断するように構成され得る。所定のパターンは、シーケンス中のビデオスライスをPスライスまたはBスライスに指定し得る。動き推定ユニット42と動き補償ユニット44とは、高度に統合され得るが、概念的な目的のために別々に示されている。動き推定ユニット42によって実施される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、参照ピクチャ内の予測ブロックに対する現在ビデオピクチャ内のビデオブロックのPUの変位を示し得る。
予測ブロックは、絶対値差分和(SAD)、差分2乗和(SSD)、または他の差分メトリックによって判断され得るピクセル差分に関して、コーディングすべきビデオブロックのPUにぴったり一致することがわかるブロックである。いくつかの例では、ビデオエンコーダ20は、復号ピクチャバッファ64に記憶された参照ピクチャのサブ整数ピクセル位置の値を計算し得る。たとえば、ビデオエンコーダ20は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット42は、フルピクセル位置と分数ピクセル位置とに対する動き探索を実施し、分数ピクセル精度で動きベクトルを出力し得る。
動き推定ユニット42は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化スライス中のビデオブロックのPUについての動きベクトルを計算する。参照ピクチャは、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択され得、それらの参照ピクチャリストの各々は、復号ピクチャバッファ64に記憶された1つまたは複数の参照ピクチャを識別する。動き推定ユニット42は、計算された動きベクトルと他のシンタックス要素とをエントロピー符号化ユニット56と動き補償ユニット44とに送る。
動き補償ユニット44によって実施される動き補償は、動き推定によって判断された動きベクトルに基づいて予測ブロックをフェッチまたは生成すること、場合によってはサブピクセル精度への補間を実施することを伴い得る。現在のビデオブロックのPUのための動きベクトルを受信すると、動き補償ユニット44は、参照ピクチャリストのうちの1つにおいて動きベクトルが指す予測ブロックの位置を特定し得る。ビデオエンコーダ20は、コーディングされている現在ビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって残差ビデオブロックを形成する。ピクセル差分値は、ブロックの残差データを形成し、ルーマ差分成分とクロマ差分成分の両方を含み得る。加算器50は、この減算演算を実施する1つまたは複数の構成要素を表す。動き補償ユニット44はまた、ビデオスライスのビデオブロックを復号する際にビデオデコーダ30が使用するための、ビデオブロックとビデオスライスとに関連するシンタックス要素を生成し得る。
イントラ予測モジュール46は、上記で説明したように、動き推定ユニット42と動き補償ユニット44とによって実施されるインター予測の代替として、現在ブロックをイントラ予測し得る。特に、イントラ予測モジュール46は、現在ブロックを符号化するために使用すべきイントラ予測モードを判断し得る。いくつかの例では、イントラ予測モジュール46は、たとえば、別々の符号化パス中に、様々なイントラ予測モードを使用して現在ブロックを符号化し得、イントラ予測モジュール46(または、いくつかの例では、モード選択ユニット40)は、テストされたモードから使用するのに適切なイントラ予測モードを選択し得る。たとえば、イントラ予測モジュール46は、様々なテストされたイントラ予測モードのためのレートひずみ分析を使用してレートひずみ値を計算し、テストされたモードの中で最良のレートひずみ特性を有するイントラ予測モードを選択し得る。レートひずみ分析は、概して、符号化ブロックと、符号化ブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみ(または誤差)の量、ならびに符号化ブロックを生成するために使用されるビットレート(すなわち、ビット数)を判断する。イントラ予測モジュール46は、どのイントラ予測モードがブロックについて最良のレートひずみ値を呈するかを判断するために、様々な符号化ブロックについてのひずみおよびレートから比率を計算し得る。
ブロック用のイントラ予測モードを選択した後、イントラ予測モジュール46は、ブロック用に選択されたイントラ予測モードを示す情報を、エントロピー符号化ユニット56に提供することができる。エントロピー符号化ユニット56は、本開示の技法に従って選択されたイントラ予測モードを示す情報を符号化し得る。ビデオエンコーダ20は、送信ビットストリーム中に、複数のイントラ予測モードインデックステーブルおよび複数の変更されたイントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)と、様々なブロックの符号化コンテキストの定義と、コンテキストの各々について使用すべき、最確イントラ予測モード、イントラ予測モードインデックステーブル、および変更されたイントラ予測モードインデックステーブルの指示とを含み得る構成データを含み得る。
予測モジュール41が、インター予測またはイントラ予測のいずれかを介して、現在ビデオブロックのための予測ブロックを生成した後、ビデオエンコーダ20は、現在ビデオブロックから予測ブロックを減算することによって残差ビデオブロックを形成する。残差ブロック中の残差ビデオデータは、1つまたは複数のTU中に含まれ、変換モジュール52に適用され得る。変換モジュール52は、離散コサイン変換(DCT)または概念的に同様の変換などの変換を使用して、残差ビデオデータを残差変換係数に変換する。変換モジュール52は、残差ビデオデータをピクセル領域から周波数領域などの変換領域に変換し得る。
変換モジュール52は、得られた変換係数を量子化ユニット54に送り得る。量子化ユニット54は、ビットレートをさらに低減するために変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって変更され得る。いくつかの例では、量子化ユニット54は、次いで、量子化変換係数を含む行列の走査を実施し得る。代替的に、エントロピー符号化ユニット56が走査を実施し得る。
量子化の後、エントロピー符号化ユニット56は、量子化変換係数をエントロピー符号化する。たとえば、エントロピー符号化ユニット56は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディングまたは別のエントロピー符号化方法または技法を実施し得る。エントロピー符号化ユニット56によるエントロピー符号化の後に、符号化ビットストリームは、ビデオデコーダ30に送信されるか、あるいはビデオデコーダ30が後で送信するかまたは取り出すためにアーカイブされ得る。エントロピー符号化ユニット56はまた、コーディングされている現在ビデオスライスのための動きベクトルと他のシンタックス要素とをエントロピー符号化し得る。
逆量子化ユニット58および逆変換モジュール60は、それぞれ逆量子化および逆変換を適用して、参照ピクチャの参照ブロックとして後で使用するためにピクセル領域において残差ブロックを再構成する。動き補償ユニット44は、残差ブロックを参照ピクチャリストのうちの1つ内の参照ピクチャのうちの1つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット44はまた、再構成された残差ブロックに1つまたは複数の補間フィルタを適用して、動き推定において使用するためのサブ整数ピクセル値を計算し得る。加算器62は、再構成された残差ブロックを動き補償ユニット44によって生成された動き補償予測ブロックに加算して、復号ピクチャバッファ64に記憶するための参照ブロックを生成する。参照ブロックは、後続のビデオフレームまたはピクチャ中のブロックをインター予測するために、動き推定ユニット42および動き補償ユニット44によって参照ブロックとして使用され得る。
本開示によると、予測モジュール41は、上述した例示的機能を実施するための1つの例示的ユニットを表す。たとえば、予測モジュール41は、どの参照ピクチャが参照ピクチャセットに属すか判断し、ビデオエンコーダ20に、参照ピクチャセットに属す参照ピクチャを示す情報をコーディングさせればよい。また、再構成プロセス(たとえば、参照ピクチャとして使用し、復号ピクチャバッファ64に記憶するためのピクチャを再構成するのに使われるプロセス)中、予測モジュール41は、参照ピクチャのうちの1つまたは複数を各々が識別する複数の参照ピクチャサブセットを構成することができる。予測モジュール41は、構成された複数の参照ピクチャサブセットから、参照ピクチャセットを導出することもできる。また、予測モジュール41は、上述した複数組の例示的擬似コードのうちのいずれか1つまたは複数を実装して、本開示に記載する1つまたは複数の例示的技法を実装すればよい。
いくつかの例では、予測モジュール41は、上述したように初期参照ピクチャリストを構成してよい。いくつかの例では、短期参照ピクチャセットまたは初期参照ピクチャリストに含まれるべきピクチャの並べ替えは必要とされない。他の例では、予測モジュール41以外のユニットが上述の例を実装し得る。いくつかの他の例では、予測モジュール41は、ビデオエンコーダ20の1つまたは複数の他のユニットとともに、上述した例を実装することができる。さらにいくつかの他の例では、ビデオエンコーダ20のプロセッサまたはユニット(図3には図示せず)は、単独で、またはビデオエンコーダ20の他のユニットとともに、上述した例を実装することができる。
図4は、本開示で説明する技法を実装し得る例示的なビデオデコーダ30を示すブロック図である。図4の例では、ビデオデコーダ30は、エントロピー復号ユニット80と、予測モジュール81と、逆量子化ユニット86と、逆変換ユニット88と、加算器90と、復号ピクチャバッファ(DPB)92とを含む。予測モジュール81は、動き補償ユニット82と、イントラ予測モジュール84とを含む。ビデオデコーダ30は、いくつかの例では、図3のビデオエンコーダ20に関して説明した符号化パスとは概して逆の復号パスを実施し得る。
復号プロセス中に、ビデオデコーダ30は、ビデオエンコーダ20から、符号化ビデオスライスのビデオブロックと、関連するシンタックス要素とを表す符号化ビデオビットストリームを受信する。ビデオデコーダ30のエントロピー復号ユニット80は、量子化係数と、動きベクトルと、他のシンタックス要素とを生成するためにビットストリームをエントロピー復号する。エントロピー復号ユニット80は、予測モジュール81に動きベクトルと他のシンタックス要素とを転送する。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルでシンタックス要素を受信し得る。
ビデオスライスがイントラコード化(I)スライスとしてコーディングされるとき、予測モジュール81のイントラ予測モジュール84は、シグナリングされたイントラ予測モードと、現在ピクチャの、前に復号されたブロックからのデータとに基づいて、現在ビデオスライスのビデオブロックのための予測データを生成し得る。ビデオピクチャがインターコード化(すなわち、B、またはP)スライスとしてコーディングされるとき、予測モジュール81の動き補償ユニット82は、エントロピー復号ユニット80から受信された動きベクトルおよび他のシンタックス要素に基づいて、現在ビデオスライスのビデオブロックのための予測ブロックを生成する。予測ブロックは、参照ピクチャリストのうちの1つ内の参照ピクチャのうちの1つから生成され得る。ビデオデコーダ30は、復号ピクチャバッファ92に記憶された参照ピクチャに基づいて、デフォルトの構成技法を使用して、参照フレームリスト、すなわち、リスト0およびリスト1を構成し得る。いくつかの例では、ビデオデコーダ30は、導出された参照ピクチャセット中で識別された参照ピクチャから、リスト0とリスト1とを構成することができる。
動き補償ユニット82は、動きベクトルと他のシンタックス要素とを解析することによって現在ビデオスライスのビデオブロックについての予測情報を判断し、予測情報を使用して、復号されている現在ビデオブロックのための予測ブロックを生成する。たとえば、動き補償ユニット82は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラまたはインター予測)と、インター予測スライスタイプ(たとえば、BスライスまたはPスライス)と、スライスの参照ピクチャリストのうちの1つまたは複数についての構成情報と、スライスの各インター符号化ビデオブロックについての動きベクトルと、スライスの各インターコード化ビデオブロックについてのインター予測ステータスと、現在ビデオスライス中のビデオブロックを復号するための他の情報とを判断するために、受信されたシンタックス要素のいくつかを使用する。
動き補償ユニット82はまた、補間フィルタに基づいて補間を実施し得る。動き補償ユニット82は、ビデオブロックの符号化中にビデオ符号器20によって使用される補間フィルタを使用して、参照ブロックのサブ整数ピクセルの補間値を計算し得る。この場合、動き補償ユニット82は、受信されたシンタックス要素からビデオ符号器20によって使用された補間フィルタを判断し、その補間フィルタを使用して予測ブロックを生成し得る。
逆量子化ユニット86は、ビットストリーム中で与えられ、エントロピー復号ユニット80によって復号された、量子化変換係数を逆量子化(inverse quantize)、すなわち、逆量子化(de-quantize)する。逆量子化プロセスは、ビデオスライス中の各ビデオブロックについてビデオエンコーダ20によって計算される量子化パラメータを使用して量子化の程度を判断し、同様に、適用すべき逆量子化の程度を判断することを含み得る。逆変換モジュール88は、ピクセル領域において残差ブロックを生成するために、逆変換、たとえば、逆DCT、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用する。
予測モジュール81が、インター予測またはイントラ予測のいずれかに基づいて現在ビデオブロックのための予測ブロックを生成した後、ビデオデコーダ30は、逆変換モジュール88からの残差ブロックを予測モジュール81によって生成された対応する予測ブロックと加算することによって、復号ビデオブロックを形成する。加算器90は、この加算演算を実施する1つまたは複数の構成要素を表す。所望される場合、ブロッキネスアーティファクトを除去するために、復号されたブロックをフィルタ処理するためにデブロッキングフィルタも適用され得る。ピクセル遷移を平滑化するか、またはさもなければビデオ品質を改善するために、(コーディングループ内またはコーディングループ後の)他のループフィルタも使用され得る。次いで、所与のピクチャ内の復号されたビデオブロックは、その後の動き補償に使用される参照ピクチャを記憶する復号ピクチャバッファ92に記憶される。復号ピクチャバッファ92はまた、図1のディスプレイデバイス32などのディスプレイデバイス上での後の表示のための、復号されたビデオを記憶する。
本開示によると、予測モジュール81は、上述した例示的機能を実施するための1つの例示的ユニットを表す。たとえば、予測モジュール81は、どの参照ピクチャが参照ピクチャセットに属すか判断することができる。また、予測モジュール81は、参照ピクチャのうちの1つまたは複数のピクチャを各々が識別する複数の参照ピクチャサブセットを構成することができる。予測モジュール81は、構成された複数の参照ピクチャサブセットから、参照ピクチャセットを導出することもできる。また、予測モジュール81は、上述した複数組の例示的擬似コードのうちのいずれか1つまたは複数を実装して、本開示に記載する1つまたは複数の例示的技法を実装すればよい。
いくつかの例では、予測モジュール81は、上述したように初期参照ピクチャリストを構成してよい。いくつかの例では、短期参照ピクチャセットまたは初期参照ピクチャリストに含まれるべきピクチャの並べ替えは必要とされない。他の例では、予測モジュール81以外のユニットが上述の例を実装し得る。いくつかの他の例では、予測モジュール81は、ビデオデコーダ30の1つまたは複数の他のユニットとともに、上述した例を実装することができる。さらにいくつかの他の例では、ビデオデコーダ30のプロセッサまたはユニット(図4には図示せず)は、単独で、またはビデオデコーダ30の他のユニットとともに、上述した例を実装することができる。
図5は、参照ピクチャセットを導出する例示的操作を示すフローチャートである。説明のためにのみ、図5の方法は、ビデオエンコーダ20またはビデオデコーダ30のいずれかに対応するビデオコーダによって実施することができる。たとえば、いくつかの例では、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)が、参照ピクチャセットに属す参照ピクチャを示す情報をコーディングする(たとえば、符号化または復号する)ことができる(94)。参照ピクチャセットは、現在のピクチャをインター予測するため、および復号順で現在のピクチャに続く1つまたは複数のピクチャをインター予測するために使われる可能性があり得る参照ピクチャを識別することができる。
たとえば、ビデオエンコーダ20がステップ94を実施するとき、ビデオエンコーダ20は、参照ピクチャセットに属す参照ピクチャについての識別子を示す値を符号化することができる。たとえば、ビデオエンコーダ20は、ビットストリーム中でpic_order_cnt_lsbシンタックス要素と、log2_max_pic_order_cnt_lsb_minus4シンタックス要素とをシグナリングすることができる。ビデオデコーダ30がステップ94を実施するとき、log2_max_pic_order_cnt_lsb_minus4シンタックス要素から、ビデオデコーダ30は、MaxPicOrderCntLsbの値を判断することができる。ビデオデコーダ30は次いで、参照ピクチャセットに属す参照ピクチャについての識別子(たとえば、POC値)を判断することができる。
ビデオコーダは、複数の参照ピクチャサブセットを構成することができる。各参照ピクチャサブセットは、ゼロ個の参照ピクチャを識別することができ、または参照ピクチャのうちの1つもしくは複数を識別することができる(96)。たとえば、ビデオコーダは、RefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0、RefPicSetStFoll1、RefPicSetLtCurr、およびRefPicSetLtFoll参照ピクチャサブセットを構成することができる。ただし、本開示の態様はそのように限定されない。いくつかの例では、ビデオコーダは、5つの参照ピクチャサブセットを構成することができ、そのうち4つは、RefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0、RefPicSetStFoll1、RefPicSetLtCurr、およびRefPicSetLtFoll参照ピクチャサブセットのうちの4つであってよく、そのうちの第5のサブセットは、残りの6つの参照ピクチャサブセットの2つの組合せ(たとえば、RefPicSetFoll0およびRefPicSetFoll1参照ピクチャサブセットの組合せ)であってよい。
いくつかの例では、ビデオコーダは、以下の4つの参照ピクチャサブセットのうちの少なくとも2つを構成することができる。他の例では、ビデオコーダは、少なくとも以下の4つの参照ピクチャサブセットを構成することができる。第1の参照ピクチャサブセットは、復号順で現在のピクチャに先立ち、出力順で現在のピクチャに先立つとともに、現在のピクチャと、復号順で現在のピクチャに続く1つまたは複数のピクチャのうちの1つまたは複数とをインター予測するために使われる可能性があり得る短期参照ピクチャを識別することができる。第2の参照ピクチャサブセットは、復号順で現在のピクチャに先立ち、出力順で現在のピクチャに続くとともに、現在のピクチャと、復号順で現在のピクチャに続く1つまたは複数のピクチャのうちの1つまたは複数とをインター予測するために使われる可能性があり得る短期参照ピクチャを識別することができる。
第3の参照ピクチャサブセットは、復号順で現在のピクチャに先立つとともに、現在のピクチャと、復号順で現在のピクチャに続く1つまたは複数のピクチャのうちの1つまたは複数とをインター予測するために使われる可能性があり得る長期参照ピクチャを識別することができる。第4の参照ピクチャサブセットは、復号順で現在のピクチャに先立つとともに、現在のピクチャをインター予測するためには使うことができず、復号順で現在のピクチャに続く1つまたは複数のピクチャのうちの1つまたは複数をインター予測するために使われる可能性があり得る長期参照ピクチャを識別することができる。
ビデオコーダは、複数の参照ピクチャサブセットから、参照ピクチャセットを導出することができる(98)。たとえば、ビデオコーダは、RefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0、RefPicSetStFoll1、RefPicSetLtCurr、およびRefPicSetLtFoll参照ピクチャサブセットのうちの少なくとも2つを、特定の順序で並べて、参照ピクチャセットを導出すればよい。
いくつかの例では、ビデオコードによって実施される順序付けは、参照ピクチャサブセットの各々の中のピクチャが、参照ピクチャセット内で順次識別され得ることを意味し得る。これらの例では、ビデオコーダは、参照ピクチャセットの中への索引値で、参照ピクチャセット中の参照ピクチャを参照すればよい。
ビデオコーダは、導出された参照ピクチャセットに基づいて、現在のピクチャをコーディングすればよい(100)。ビデオコーダが参照ピクチャサブセットから参照ピクチャセットを導出するので、ビデオコーダは、複数の参照ピクチャサブセットに基づいて現在のピクチャをコーディングするものと見なされ得ることを理解されたい。たとえば、ビデオコーダは、複数の参照ピクチャサブセットに基づいて(たとえば、複数の参照ピクチャサブセットから導出される導出された参照ピクチャセットから)、第1の参照ピクチャリストおよび第2の参照ピクチャリストのうちの少なくとも1つを構成することができる。ビデオコーダは次いで、第1の参照ピクチャリストおよび第2の参照ピクチャリストのうちの少なくとも1つに基づいて、現在のピクチャをコーディングすればよい。
図6は、参照ピクチャリストを構成する例示的操作を示すフローチャートである。説明のためにのみ、図6の方法は、ビデオエンコーダ20またはビデオデコーダ30のいずれかに対応するビデオコーダによって実施することができる。図5と同様に、ビデオコーダは、参照ピクチャを示す情報をコーディングして(102)、複数の参照ピクチャサブセットを構成すればよい(104)。
ビデオコーダは次いで、参照ピクチャサブセットから、初期参照ピクチャリストに参照ピクチャを追加して、初期参照ピクチャリストを構成すればよい(106)。いくつかの例では、ビデオエンコーダ20とビデオデコーダ30の両方が、初期参照ピクチャリストを構成することができる。たとえば、ビデオエンコーダ20は、初期参照ピクチャリストを構成して、DPB64に記憶するための再構成ビデオブロックを作成することができる。ビデオデコーダ30は、その復号プロセスの一部として初期参照ピクチャリストを構成すればよく、初期参照ピクチャリストを構成するための方法に関する情報をビデオデコーダ30がビデオエンコーダ20から受信する必要がないデフォルトの構成技法を実装すればよい。ビデオデコーダ30は、たとえば、初期参照ピクチャリストをDPB92に記憶することができる。
いくつかの例では、初期参照ピクチャリストを構成するために、ビデオコーダは、複数の参照ピクチャサブセットのうちの第1のサブセットから初期参照ピクチャリストに参照ピクチャを、続いて第2のサブセットから初期参照ピクチャリストに参照ピクチャを、続いて第3のサブセットから参照ピクチャを、初期参照ピクチャリストに追加すればよい。ビデオコーダは、初期参照ピクチャリスト中にリストされる参照ピクチャの総数が初期参照ピクチャリスト中の最大許容エントリ数以下である限り、これらの参照ピクチャサブセットから参照ピクチャを追加すればよい。たとえば、参照ピクチャリストに参照ピクチャを追加する間のどの時点でも、初期参照ピクチャリスト中のエントリの数が許容初期参照リストエントリの最大数に等しくなった場合、ビデオコーダは、初期参照ピクチャリストにどの追加ピクチャを追加するのも停止してよい。
ビデオコーダは、現在のピクチャのビデオブロックが双予測される例などと同様に、別の初期参照ピクチャリストを構成すればよい。この例では、この別の初期参照ピクチャリストを構成するために、ビデオコーダは、この別の初期参照ピクチャリスト中のエントリの総数がエントリの許容数以下である限り、第2のサブセットから別の初期参照ピクチャリストに参照ピクチャを、続いて第1のサブセットから別の初期参照ピクチャリストに参照ピクチャを、続いて第3のサブセットから別の初期参照ピクチャリストに参照ピクチャを追加すればよい。これらの例では、第1のサブセットはRefPicSetStCurr0参照ピクチャサブセットであってよく、第2のサブセットはRefPicSetStCurr1参照ピクチャサブセットであってよく、第3のサブセットはRefPicSetLtCurr参照ピクチャサブセットであってよい。
何らかの例では、RefPicSetStCurr0、RefPicSetStCurr1、およびRefPicSetLtCurr参照ピクチャサブセット中で識別された参照ピクチャを追加するために、ビデオコーダは、これらの参照ピクチャサブセットの各々の中の参照ピクチャの数をビデオコーダがそこから判断することができるシンタックス要素をコーディング(たとえば、符号化または復号)すればよい。たとえば、ビデオコーダは、num_short_term_curr0シンタックス要素とnum_short_term_curr1シンタックス要素とをコーディングすればよい。num_short_term_curr0シンタックス要素およびnum_short_term_curr1シンタックス要素は、それぞれ、RefPicSetStCurr0参照ピクチャサブセットおよびRefPicSetStCurr1参照ピクチャサブセット中で識別された参照ピクチャの数を示し得る。
ビデオコーダは、num_long_term_pps_currシンタックス要素とnum_long_term_add_currシンタックス要素とをコーディングしてもよい。num_long_term_pps_currシンタックス要素は、ピクチャパラメータセット(PPS)にその識別が含まれる長期参照ピクチャの数を示すことができ、num_long_term_add_currシンタックス要素は、PPSにその識別情報が含まれない長期参照ピクチャの数を示すことができる。この例では、これらの長期参照ピクチャは、現在のピクチャをインター予測するために使われる可能性があり得、復号順で現在のピクチャに続く1つまたは複数のピクチャをインター予測するために使われる可能性があり得る。
ビデオコーダは、num_long_term_pps_currシンタックス要素およびnum_long_term_add_currシンタックス要素に基づいて、RefPicSetLtCurr参照ピクチャサブセット中の参照ピクチャの数を判断することができる。たとえば、ビデオコーダは、num_long_term_pps_currシンタックス要素の値と、num_long_term_add_currシンタックス要素の値を合計して、RefPicSetLtCurr参照ピクチャサブセット中の参照ピクチャの数を判断することができる。
ビデオコーダは、1つまたは複数の参照ピクチャリストに基づいて現在のピクチャをコーディングすればよい(108)。たとえば、ビデオコーダは、導出された参照ピクチャセットに基づいて、第1の参照ピクチャリストおよび第2の参照ピクチャリストのうちの少なくとも1つを構成することができる。ビデオコーダは次いで、第1の参照ピクチャリストおよび第2の参照ピクチャリストのうちの少なくとも1つに基づいて、現在のピクチャをコーディングすればよい。
図7は、参照ピクチャセットを導出する例示的操作を示すフローチャートである。説明のためにのみ、図7の方法は、ビデオエンコーダ20またはビデオデコーダ30のいずれかに対応するビデオコーダによって実施することができる。
ビデオコーダは、現在のピクチャ用の参照ピクチャセットが、パラメータセット中およびスライスヘッダ中で識別される参照ピクチャから構成されるべきであると判断する(112)。現在のピクチャと、スライスヘッダ中で識別される参照ピクチャのうちのいずれかとの間の距離が、現在のピクチャと、パラメータセット中で識別される参照ピクチャのうちのいずれかとの間の距離よりも大きくなるように、パラメータセットに含まれるピクチャおよびスライスヘッダに含まれるピクチャが、パラメータセットおよびスライスヘッダに含められるために選択され得る。パラメータセットおよびスライスヘッダ中で識別される参照ピクチャに基づいて、ビデオコーダは、参照ピクチャセットを構成することができる(114)。構成された参照ピクチャセットから、ビデオコーダは、構成された参照ピクチャセットを並べ替えずに、初期参照ピクチャリストを構成することができる(116)。パラメータセットは、たとえば、PPSを含み得る。現在のピクチャと参照ピクチャとの間の距離は、上述したように、デルタピクチャオーダーカウント値に基づいて判断され得る。
1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。各機能は、ソフトウェアで実装される場合、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されてよく、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行されてよい。コンピュータ可読媒体は、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む、データ記憶媒体または通信媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形コンピュータ可読記憶媒体、あるいは(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明した技法の実装のための命令、コードおよび/またはデータ構造を取り出すために1つまたは複数のコンピュータあるいは1つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。
命令は、1つまたは複数のデジタル信号プロセッサ(DSP)などの1つまたは複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、あるいは他の等価な集積回路またはディスクリート論理回路によって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書で説明する技法の実装に好適な他の構造のいずれかを指す。さらに、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用のハードウェアおよび/またはソフトウェアモジュール内に与えられ得、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素中に十分に実装され得る。
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示する技法を実行するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明したが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明した1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作ハードウェアユニットの集合によって与えられ得る。
様々な例について説明した。これらおよび他の例は以下の特許請求の範囲内に入る。