電子デバイス上で参照ピクチャを追跡するための方法が記載される。本方法は、ビットストリームを受信するステップを含む。本方法は、復号された参照ピクチャを生成するために、ビットストリームの一部分を復号するステップも含む。本方法は、さらに、指定ピクチャに基づいて、削減されたオーバーヘッドの参照により、復号ピクチャバッファ(DPB:decoded picture buffer)における復号された参照ピクチャを追跡するステップを含む。加えて、本方法は、復号された参照ピクチャに基づいてピクチャを復号するステップを含む。指定ピクチャは、瞬時復号リフレッシュ(IDR:instantaneous decoding refresh)ピクチャとするとよい。加えて、復号された参照ピクチャのバッファ記述は、ピクチャオーダーカウント(POC)、サイクルパラメータ、時間識別子およびスケーリングパラメータを含む。
復号された参照ピクチャを追跡するステップは、指定ピクチャに基づいてサイクルパラメータを決定することを含む。サイクルパラメータは、指定ピクチャに基づいてリセットされる。
復号された参照ピクチャを追跡するステップは、指定ピクチャに基づいてピクチャオーダーカウント(POC)を決定することを含む。ピクチャオーダーカウント(POC)シーケンスは、指定ピクチャに基づいてリセットされる。
復号された参照ピクチャの解像度は、ピクチャの解像度と異なってもよい。本方法は、ピクチャを復号するために、復号された参照ピクチャの変換係数をスケーリングパラメータに基づいて処理することも含む。
復号された参照ピクチャを追跡するステップは、復号された参照ピクチャを含む復号参照ピクチャ群を追跡することを含む。復号された参照ピクチャを追跡するステップは、バッファ記述を取得すること、およびバッファ記述を修正することも含む。バッファ記述を修正するステップは、エントリを削除すること、エントリを追加すること、および/またはエントリを置き換えることを含む。
参照ピクチャを追跡するように構成された電子デバイスも記載される。電子デバイスは、プロセッサと、プロセッサと電子通信を行うメモリに記憶された命令とを含む。電子デバイスは、ビットストリームを受信する。電子デバイスは、また、復号された参照ピクチャを生成するために、ビットストリームの一部分を復号する。電子デバイスは、さらに、指定ピクチャに基づいて、削減されたオーバーヘッドの参照により、復号ピクチャバッファ(DPB)における復号された参照ピクチャを追跡する。加えて、電子デバイスは、復号された参照ピクチャに基づいてピクチャを復号する。
本明細書に開示されるシステムおよび方法は、指定ピクチャに基づいて、電子デバイス上で参照ピクチャを追跡するためのいくつかの構成を記載する。例えば、本明細書に開示されるシステムおよび方法は、削減されたオーバーヘッドの参照により、復号ピクチャバッファ(DPB)における復号された参照ピクチャを追跡するステップを記載する。例として、長期参照ピクチャのシグナリングのいくつかのアプローチが記載される。留意すべきは、復号ピクチャバッファ(DPB)が、仮想参照デコーダに関して指定された参照、出力リオーダリング、または出力遅延のために、復号されたピクチャを保持するバッファであってもよいことである。
電子デバイス上で、復号ピクチャバッファ(DPB)は、デコーダで再構成された(例えば、復号された)ピクチャを記憶するために用いられる。これらの記憶されたピクチャは、次に例えば、インター予測メカニズムに用いられる。ピクチャが順序を違えて復号されたときには、これらのピクチャが順序の後の方で表示できるようにDPBに記憶される。
H.264またはアドバンスト・ビデオ・コーディング(AVC:advance video coding)規格では、DPB管理(例えば、ピクチャの削除、追加、ピクチャのリオーダリングなど)がメモリ管理制御操作(MMCO:memory management control operation)を用いて実施される。来たるべき高効率動画像符号化(HEVC:high efficiency video coding)規格のために、より高信頼性のDPB管理アプローチが検討されている。より高信頼性のアプローチの一例は、動画像符号化に関する協同作業チーム(JCT−VC:Joint Collaborative Team on Video Coding)文書JCTVC−F493からの「参照ピクチャの絶対シグナリング(Absolute signaling of reference pictures)」に詳述されるような、参照ピクチャの絶対シグナリングに基づく。
JCTVC−F493は、復号ピクチャバッファ(DPB)にどの参照ピクチャを維持すべきかを識別するための参照ピクチャの絶対シグナリングを概説する。特に、JCTVC−F493は、DPBにどの参照ピクチャが維持されるべきかをピクチャオーダーカウント(POC)に基づいて識別する2つの異なるアプローチを概説する。ピクチャオーダーカウント(POC)は、各符号化されたピクチャに関連する変数であり、ラップアラウンドを伴った出力順でのピクチャ位置の増加とともに増加する値を有する。
一例において、すべてのピクチャは、時間識別子(temporalID)=0を有すると仮定する。さらに、現POC=5であり、現DPBは={3,2}を含むと仮定する。加えて、ピクチャパラメータセット(PPS:Picture Parameter Set)における定義は、BufferDescription0={deltaPOC=−1,temporalID=0},{deltaPOC=−2,temporalID=0}であると仮定する。deltaPOCは、参照ピクチャのPOC値の現ピクチャからの距離を指定し、現ピクチャは、復号されているピクチャである。示される1つのアプローチは、PPSにおけるバッファ記述を参照する。このアプローチでは、POC=5を持つピクチャのスライスヘッダが、PPSにBufferDescription0への参照を含む。動作は、POC=2を持つ復号されたピクチャをDPBから落とし、POC=4を持つ復号されたピクチャをDPBに追加することであると仮定する。結果として、DPBは、次に={4,3}を含む。
一構成において、バッファ記述は、POCBDおよびTemporalIDBDと示される2つのリスト、ならびにすべてのピクチャに関して存在する変数NumberOfPicturesInBDとして定義される。このバッファ記述では、POCBDが参照ピクチャのピクチャオーダーカウント値を含み、TemporalIDBDが参照ピクチャの対応する時間識別子を含み、両方のリストがNumberOfPicturesInBD値を含む。
留意すべきは、TemporalIDが、動画像符号化に関する協同作業チーム(JCT−VC)文書JCTVC−F803では次のように定義されることである。「temporalIDは、NALユニットに関する時間識別子を指定する。temporalIDの値は、アクセスユニットのすべてのNALユニットに関して同じであるものとする。アクセスユニットが、5に等しいnal_unit_typeを持つ任意のNALユニットを含むとき、temporalIDは、0に等しいものとする」。NALは、「ネットワーク抽象化層」の略語であることに留意すべきである。
別のアプローチは、現POCに対するdelta POCを用いて、DPBの内容を明示的にシグナリングする。このアプローチでは、POC=5を持つピクチャのスライスヘッダは、{deltaPOC=−1,temporalID=0}および{deltaPOC=−2,temporalID=0}を含む。動作は、POC=2を持つ復号されたピクチャをDPBから落とし、復号されたピクチャPOC=4をDPBに追加することであると仮定する。結果として、新しいDPBは={4,3}を含む。
JCTVC−F493に示されるアプローチのいくつかの利点は、次の通りである。JCTVC−F493におけるアプローチは、簡易なメカニズムを提供する。そのうえ、ピクチャの損失がデコーダで容易に検出される。加えて、より高位の時間IDを持つピクチャの全レイヤの脱落が検出されて、十分にサポートされる。
しかしながら、JCTVC−F493に示されるアプローチのいくつかの不利な点は、以下の通りである。長期参照ピクチャをシグナリングするためのビット・オーバーヘッドが大きくなる可能性がある。そのうえ、POCを通信するために固定ビット数が割り当てられる。結果として、用いられるビット数によって許容された最大値に達したときには、POC番号付けが0にラップアラウンドされなければならない。従って、POCを用いてピクチャを一意的に識別できると保証することができない。
本明細書に開示されるシステムおよび方法は、これらの不利な点を軽減するための助けとなりうる。特に、本明細書に開示されるシステムおよび方法は、絶対長期ピクチャ参照に関連するオーバーヘッドを削減することにより有益であり、ピクチャを一意的に識別することが可能である(例えば、長期(参照)ピクチャが他の短期または長期ピクチャと混同されることはなく、逆もまた同様である)。
本明細書に開示されるシステムおよび方法は、次のように記載される1つ以上のさらなる利益を提供する。本明細書に開示されるシステムおよび方法の1つ以上の構成は、利用可能なPOC番号付け空間[0,・・・,MaxPOC−1]を十分に利用することができる。ここで、MaxPOC=2log2_max_pic_order_cnt_minus4+4であり、log2_max_pic_order_cnt_minus4は、ピクチャオーダーカウントに関する復号処理に用いられる変数MaxPOCの値を指定する。例えば、POCラップアラウンド後の[0,・・・,MaxPOC−1]の再使用を解決する1つの従来のアプローチが提唱するのは、ピクチャに識別子(例えば、POC番号)を割り当てるときに現在使用中のPOCをステップオーバーすることである。この結果、POC空間の一部が用いられないことになる。しかしながら、本明細書に開示されるシステムおよび方法は、POCのステップオーバーおよび関連するPOC空間縮小の課題を解決する。
別の利益は、シグナリングに関して本明細書に開示されるシステムおよび方法のいくつかの構成が、各ピクチャで自己完結的なことである。従って、(損失または脱落するかもしれない)前のピクチャからの情報伝搬に依存するスキームと比較して、誤り耐性が良好である。例えば、復号ピクチャバッファ(DPB)記述の一構成は、エンコーダと同じDPBを保持するために他のピクチャに組み込まれた情報に依存しない。
本明細書に開示されるシステムおよび方法のいくつかの構成のさらに別の利益は、ピクチャが損失した場合、(次の受信ピクチャにある)バッファ記述がデコーダで利用可能になるとすぐに、その損失を検出できることである。これは、デコーダが補正動作を行うことを可能にする。さらに別の利益は、POC解像度が十分な場合、余分なビットをなにも必要としないことである。
次に、図面を参照して様々な構成が記載される。図面中、同様の参照番号は機能的に類似した要素を示す。本明細書において図面に一般的に記載され、説明されるシステムおよび方法は、多種多様に異なった構成に配置され、設計されてもよい。従って、図面に表現されるいくつかの構成の以下のさらに詳細な記載は、特許請求の範囲を限定するものではなく、システムおよび方法を単に代表するに過ぎない。
図1は、指定ピクチャに基づいて参照ピクチャを追跡するためのシステムおよび方法が実装される、1つ以上の電子デバイス104の例を示すブロックダイアグラムである。この例では、電子デバイスA104aおよび電子デバイスB104bが示される。しかしながら、留意すべきは、電子デバイスA104aおよび電子デバイスB104bに関して記載される特徴および/または機能性が、いくつかの構成において、単一の電子デバイスに組み合わされてもよいことである。
電子デバイスA104aは、エンコーダ108およびオーバーヘッド・シグナリング・モジュール112を含む。電子デバイスA104a内に含まれる要素(例えば、エンコーダ108およびオーバーヘッド・シグナリング・モジュール112)のそれぞれは、ハードウェア、ソフトウェアまたは両方の組み合わせで実装されてもよい。
電子デバイスA104aは、入力ピクチャ106を取得する。いくつかの構成において、入力ピクチャ106は、イメージセンサを用いて電子デバイスA104a上で取り込まれる、メモリから読み出される、および/または別の電子デバイスから受信される。
エンコーダ108は、符号化されたデータ110を生成するために、入力ピクチャ106を符号化する。例えば、エンコーダ108は、一連の入力ピクチャ106(例えば、動画像)を符号化する。一構成において、エンコーダ108は、高効率動画像符号化(HEVC)エンコーダである。符号化されたデータ110は、デジタルデータ(例えば、ビットストリーム)である。
オーバーヘッド・シグナリング・モジュール112は、符号化されたデータ110に基づいてオーバーヘッド・シグナリングを発生させる。例えば、オーバーヘッド・シグナリング・モジュール112は、符号化されたデータ110にオーバーヘッド・データ、例えば、スライスヘッダ情報、ピクチャパラメータセット(PPS)情報、ピクチャオーダーカウント(POC)、参照ピクチャ指定などを追加する。いくつかの構成において、オーバーヘッド・シグナリング・モジュール112は、2つのピクチャセット間の遷移を指示するラップ・インジケータを生成する。
電子デバイスA104aによって生成されるオーバーヘッド・シグナリングの種類に関するさらなる詳細が以下に示される。特に、復号に関して以下に記載されるパラメータ、インジケータまたは情報の種類のうち、ゼロ、1つまたはそれ以上が、構成に依存してオーバーヘッド・シグナリング・モジュール112によって生成される。留意すべきは、いくつかの構成において、オーバーヘッド・シグナリング・モジュール112がエンコーダ108内に含まれることである。オーバーヘッド・シグナリング・モジュール112は、削減されたオーバーヘッドの参照によりピクチャを追跡することを可能にできる。
エンコーダ108(および、例えば、オーバーヘッド・シグナリング・モジュール112)は、ビットストリーム114を生成する。ビットストリーム114は、入力ピクチャ106に基づいて符号化されたピクチャデータを含む。いくつかの構成において、ビットストリーム114は、スライスヘッダ情報、PPS情報などのようなオーバーヘッド・データも含む。オーバーヘッド・データに関するさらなる詳細が以下に示される。追加の入力ピクチャ106が符号化されたとき、ビットストリーム114は、1つ以上の符号化されたピクチャを含む。例として、ビットストリーム114は、1つ以上の符号化された参照ピクチャおよび/または他のピクチャを含むことができる。
ビットストリーム114は、デコーダ102へ供給される。一例において、ビットストリーム114は、有線または無線リンクを用いて電子デバイスB104bへ送信される。いくつかの場合、この送信は、インターネットまたはローカルエリアネットワーク(LAN:Local Area Network)のようなネットワーク上で行われる。図1に示されるように、デコーダ102は、電子デバイスA104a上のエンコーダ108とは別に、電子デバイスB104b上に実装されてもよい。しかしながら、留意すべきは、いくつかの構成において、エンコーダ108およびデコーダ102が同じ電子デバイス上に実装されてもよいことである。例として、エンコーダ108およびデコーダ102が同じ電子デバイス上に与えられる実装において、ビットストリーム114は、バスを通してデコーダ102に供給されるか、あるいはデコーダ102による読み出しのためにメモリに記憶される。
デコーダ102は、ハードウェア、ソフトウェアまたは両方の組み合わせで実装されてもよい。一構成において、デコーダ102は、高効率動画像符号化(HEVC)デコーダである。デコーダ102は、ビットストリーム114を受信する(例えば、取得する)。デコーダ102は、ビットストリーム114に基づいて、復号されたピクチャ118(例えば、1つ以上の復号されたピクチャ118)を発生させる。復号されたピクチャ118は、表示、再生、メモリへの記憶、および/または別のデバイスへの送信などが行われる。
デコーダ102は、参照ピクチャ追跡モジュール116を含む。参照ピクチャ追跡モジュール116は、デコーダ102が、削減されたオーバーヘッドの参照により、参照ピクチャを追跡することを可能にする。例えば、参照ピクチャ追跡モジュール116は、JCTVC−F493に示されるアプローチのような従来のアプローチで必要とされるよりも少ないオーバーヘッドを用いて、復号ピクチャバッファ(DPB)における参照ピクチャを追跡することができる。
従来のアプローチでは、例えば、現ピクチャと長期参照ピクチャとの間の関係を指定するために、削減されていないオーバーヘッドの参照が用いられる。例として、従来のアプローチでは、現ピクチャと長期参照ピクチャとの間の関係は、POC番号付け空間を増加させて、POCラップアラウンドの課題を回避することによって指定される。しかしながら、POC番号付け空間の増加は、POCに関するビット要件を増加させる代償によってのみ達成される。この例は、従来のアプローチにおいてPOCラップアラウンドの課題を回避するために用いうるいくつかの可能なメカニズムの1つである。しかしながら、他ならぬこの例が、従来のアプローチでは長期ピクチャに関するオーバーヘッドが大きくなる様態を実証する。
例えば、JCTVC−F493は、長期ピクチャに関して、絶対POCを指定したバッファ記述にはlongterm_poc[i]フィールドを、時間IDを指定したバッファ記述にはlongterm_temporal_id[i]フィールドを用いた。これは、後に、長期ピクチャに関するメカニズムを含まないJCTVC−F803において削除された。その後の議論では、(長期ピクチャ)POCをステップオーバーするアプローチが示された。
従来のアプローチでは、問題が生じる可能性がある。第1に、長期参照ピクチャと別のピクチャとの間の関係を指定するために、大量のオーバーヘッド・データが必要である。例として、長期参照ピクチャと別のピクチャとの間のPOCの整数差を適切に表すために、多数のオーバーヘッド・ビットを割り当てる必要がある。第2に、この差を表すために限られたビット数が指定された場合には、(例えば、数設定が循環するので)数が再使用されたときに、差が曖昧に指示されるであろう。
参照ピクチャ追跡モジュール116は、参照オーバーヘッドを削減するために、以下にさらに詳細に記載される1つ以上のアプローチまたは方法を用いる。いくつかの例は、サイクルパラメータを用いること、およびラップ・インジケータまたはピクチャセット間の遷移に基づいてサイクルパラメータをデクリメントすることを含む。
留意すべきは、本明細書に記載される「参照ピクチャ」が、いくつかの構成において、代わりに参照ピクチャ群(例えば、フレームのグループ)であってもよいことである。従って、本明細書に記載される「復号された参照ピクチャ」は、いくつかの構成において、代わりに「復号参照ピクチャ群」であってもよい。例えば、本明細書に開示されるシステムおよび方法と併せて記載されるように、単一の参照ピクチャの代わりに参照ピクチャ群が適用されてもよい。参照ピクチャ群は、1つ以上の参照ピクチャを含む。参照ピクチャ群における2つ以上の参照ピクチャは、同じ時間インスタンスか、または異なる(例えば、同様の)時間インスタンスに対応してもよい。例えば、3次元(3D)符号化シナリオでは、ビットストリーム114は、複数のピクチャを含み、いくつかのピクチャが左ビューを参照し、いくつかのピクチャが右ビューを参照する。かくして、参照ピクチャ群は、特定の表示時間に対応する左右両ピクチャを識別することができる。
スケーラブル符号化シナリオのような、別の例では、ビットストリームは、異なる解像度のピクチャを含む。この例では、参照ピクチャ群は、同じピクチャの異なる解像度版を含む(例えば、識別する)ことができる。
図2は、デコーダ202の一構成を示すブロックダイアグラムである。デコーダ202は、電子デバイス204に含まれてもよい。例えば、デコーダ202は、高効率動画像符号化(HEVC)デコーダである。デコーダ202および/またはデコーダ202に含まれるものとして示される1つ以上の要素は、ハードウェア、ソフトウェアまたは両方の組み合わせで実装されてもよい。デコーダ202は、ビットストリーム214(例えば、ビットストリーム214に含まれる1つ以上の符号化されたピクチャ)を復号するために受信する。いくつかの構成において、受信されたビットストリーム214は、受信されたスライスヘッダ、受信されたPPS、受信されたバッファ記述情報などのような、受信されたオーバーヘッド情報を含む。ビットストリーム214に含まれる符号化されたピクチャは、1つ以上の符号化された参照ピクチャおよび/または1つ以上の他の符号化されたピクチャを含む。
(ビットストリーム214に含まれる1つ以上の符号化されたピクチャにおける)受信シンボルは、エントロピー復号モジュール254によってエントロピー復号され、それによって動き情報信号256、ならびに量子化、スケーリングおよび/または変換された係数258を生成する。
動き情報信号256は、動き補償モジュール260においてフレームメモリ264からの参照フレーム信号284の一部分と組み合わされ、それによってフレーム間予測信号268を生成する。量子化、デスケーリングおよび/または変換された係数258は、逆モジュール262によって逆量子化、スケーリングおよび逆変換され、それによって復号された残差信号270を生成する。復号された残差信号270は、結合信号272を生成するために予測信号278に加算される。予測信号278は、フレーム間予測信号268か、またはフレーム内予測モジュール274によって生成されたフレーム内予測信号276のいずれかから選択された信号である。いくつかの構成において、この信号選択は、ビットストリーム214に基づく(例えば、ビットストリーム214によって制御される)。
フレーム内予測信号276は、(例えば、現フレームにおける)結合信号272から予め復号された情報から予測される。結合信号272は、さらにデブロッキングフィルタ280によってフィルタされる。結果として生じるフィルタされた信号282は、フレームメモリ264に書き込まれる。結果として生じるフィルタされた信号282は、復号されたピクチャを含む。
フレームメモリ264は、本明細書に記載されるような復号ピクチャバッファ(DPB)を含む。DPBは、短期または長期参照フレームとして保持された1つ以上の復号されたピクチャを含む。フレームメモリ264は、復号されたピクチャに対応するオーバーヘッド情報も含む。例えば、フレームメモリ264は、スライスヘッダ、ピクチャパラメータセット(PPS)情報、サイクルパラメータ、バッファ記述情報などを含む。これらの情報の1つ以上は、エンコーダ(例えば、エンコーダ108、オーバーヘッド・シグナリング・モジュール112)からシグナリングされる。フレームメモリ264は、復号されたピクチャ218を供給することができる。
デコーダ202は、参照ピクチャ追跡モジュール216を含む。参照ピクチャ追跡モジュール216は、削減された参照オーバーヘッドにより、フレームメモリ264における1つ以上の参照ピクチャを追跡する。一例において、参照ピクチャ追跡モジュール216は、サイクルパラメータを用い、かつ受信されたラップ・インジケータに基づいてサイクルパラメータを修正(例えば、デクリメント)して、長期参照ピクチャを追跡する。別の例では、復号されているピクチャに対して、すべての参照ピクチャのサイクルパラメータが更新される。この更新手順は、現ピクチャ(例えば、復号されているピクチャ)毎に一回実行される。サイクル間の遷移は、暗黙的にPOCの助けによって追跡される。時には、(例えば、順序を違えたピクチャ復号において生じるように、ピクチャセット‘n’からピクチャセット‘n−1’へ遷移するときには)サイクルパラメータが増加する。指定ピクチャに基づいて参照ピクチャを追跡する1つ以上のアプローチのさらなる詳細が以下に示される。
本明細書に開示されるシステムおよび方法のいくつかの構成は、修正されたバッファ記述を用いる。修正されたバッファ記述の例が以下に示される。バッファ記述は、長期参照ピクチャに関する“POC”、“poc_cycle”および“temporalID”を含むように修正される。“poc_cycle”は、本明細書に記載されるサイクルパラメータの一例であることに留意すべきである。本明細書に開示されるシステムおよび方法に従って示される(修正された)バッファ記述、(修正された)シンタックスおよび/またはパラメータが、削減されたオーバーヘッドの参照を可能にする。
次の表(1)は、従来のアプローチでのPPS内のバッファ記述と、本明細書に開示されるシステムおよび方法による1つの提案アプローチとを比較した一例を示す。従来のアプローチは、JCTVC−F493における作業をさらに進めるために作成された「アドホックグループ21の候補作業草案テキスト(candidate working draft text of ad-hoc group 21)」文書(AHG21)に詳述される。留意すべきは、AHG21(JCTVC−F803)が「負のピクチャ」(例えば、負のdeltaPOC値を有するピクチャ)と「正のピクチャ」(例えば、正のdeltaPOC値を有するピクチャ)とを別のグループに分けて指定することである。
上掲の表(1)において、(POC0,poc_cycles0,temporalID3)および(POC1,poc_cycles1,temporalID4)は、長期(参照)ピクチャを表す。留意すべきは、バッファ記述が、短期参照ピクチャに関しては(それぞれ、POCおよびTemporalIDフィールドに対応する)2つのリストPOCBDおよびTemporalIDBDを含むことである。そのうえ、バッファ記述は、長期参照ピクチャに関しては(それぞれPOC、poc_cycleおよびTemporalIDフィールドに対応する)3つのリスト:POCBD、POC_CYCLE_BDおよびTemporalIDBDを含む。
いくつかの構成において、複数のバッファ記述が、ピクチャパラメータセット内に定義される。インデックスiを持つ各バッファ記述は、参照ピクチャに関するリスト:POCBD_pps[i]、POC_CYCLE_pps[i]、DeltaPOCBD_pps[i]およびTemporalIDBD_pps[i]ならびに変数NumberOfPicturesInBD_pps[i]を含む。i番目のリストPOCBD_pps[i]は、参照ピクチャのピクチャオーダーカウント値を含む。i番目のリストPOC_CYCLE_pps[i]は、参照ピクチャのpoc_cycle値を含む。i番目のリストTemporalIDBD_pps[i]は、参照ピクチャの対応する時間識別子を含む。そのうえ、i番目のリストTemporalIDBD_pps[i]は、NumberOfPicturesInBD_pps[i]エントリを含む。リスト群は、POC_pps、POC_CYCLE_pps、DeltaPOCBD_ppsおよびTemporalIDBD_ppsと呼ばれる。deltaPOCの参照では、1つのリストDeltaPOCBD_pps[i]が参照ピクチャのdeltaPOC値を含む。留意すべきは、アドホックグループ21の候補作業草案テキストにおいて、DeltaPOCBD_ppsがDeltaPOCBDと呼ばれることである。リストPOCBD_pps[i]およびリストDeltaPOCBD_pps[i]におけるエントリの合計がNumberOfPicturesInBD_pps[i]値によって与えられる。そのうえ、POCBD_pps[i]およびPOC_CYCLE_pps[i]ではエントリの数が同じである。
留意すべきは、AHG21に示されるシンタックスが、固定された長期参照を適切にサポートしないことである。次のリスティング(1)は、アドホックグループ21(AHG21)の候補作業草案テキストに必要とされるビットストリーム・シンタックス修正の一例を示す。従来のアプローチに加えられるべき変更は、リスティング(1)に太字テキストで示される。
positive_pictures_in_buffer_descriptions_flagは、正のdeltaPOCを持つ任意のバッファ記述ピクチャがあるかどうかを指定する。bits_for_temporal_id_in_buffer_descriptionsは、temporal_id_negative_pps[i][j]、temporal_id_positive_pps[i][j]、temporal_id_poc_pps[i][j]、temporal_id_negative[i]およびtemporal_id_positive[i]に用いられるビット数を指定する。number_of_bdsは、ピクチャパラメータセットにおけるバッファ記述の数を指定する。number_of_negative_pictures_pps[i]は、リストDeltaPOCBD_pps[i]における負値を持つエントリの数を指定する。number_of_negative_pictures_pps[i]は、OffsetBD[i]の値をOffsetBD[i]=number_of_negative_pictures_pps[i]として定義する。number_of_negative_pictures_pps[i]の値は、両端値を含めて、0からmax_num_ref_framesまでの範囲内にあるものとする。negative_delta_poc_minus_one_pps[i][j]は、POC値における絶対距離を指定する。max_num_ref_framesは、シーケンスにおける任意のピクチャをインター予測するための復号処理に用いられる参照フレーム、相補的な参照フィールド対、および対を成さない参照フィールドの最大数を指定する。ここで、参照フィールドは、参照フレームの一部分を示す。例えば、インタレース動画像を用いたアプリケーションでは、参照フレームが2つの参照フィールドからなる。第1の参照フィールドは、参照フレームにおけるデータの第1のサブセットを含み、第2の参照フィールドは、参照フレームにおけるデータの第2のサブセットを含み、第1のサブセットと第2のサブセットとは異なるデータに対応する。
negative_delta_poc_minus_one_pps[i][j]は、jが0に等しければ、変数DeltaPOCBD_pps[i][j]の値をDeltaPOCBD_pps[i][j]=−(negative_delta_poc_minus_one_pps[i][j]+1)として定義する。また、negative_delta_poc_minus_one_pps[i][j]は、j>0であれば、変数DeltaPOCBD_pps[i][j]の値をDeltaPOCBD_pps[i][j]=DeltaPOCBD_pps[i][j−1]−(negative_delta_poc_minus_one_pps[i][j]+1)として定義する。DeltaPOCBD_pps[i][j]は、−1から−MaxPOC/2までの範囲内にあるものとする。
temporal_id_negative_pps[i][j]は、時間識別子を指定し、bits_for_temporal_id_in_buffer_descriptionsビットによって表されるものとする。temporal_id_negative_pps[i][j]は、リストTemporalIDBD_pps[i]に追加される。上記の一構成において、追加操作は、添付操作である。別の構成において、添付操作は、リストにおける項目を所定の順序で置き換える操作である。temporal_id_negative_pps[i][j]は、両端値を含めて、0からmax_temporal_layers_minus1までの範囲内にあるものとする。max_temporal_layers_minus1+1は、シーケンスに存在する時間的レイヤの最大数を指定する。
number_of_positive_pictures_in_bd_pps[i]は、リストDeltaPOCBD_pps[i]における正の値を有するエントリの数を指定する。number_of_positive_pictures_in_bd_pps[i]の値は、両端値を含めて、0からmax_num_ref_frames−OffsetBD[i]までの範囲内にあるものとする。number_of_positive_pictures_in_bd_pps[i]シンタックス要素が存在しないとき、number_of_positive_pictures_in_bd_pps[i]の値は、0に等しいと推定するものとする。
delta_poc_minus_one_pps[i][j]は、POC値における絶対距離を指定する。delta_poc_minus_one_pps[i][j]は、jが0に等しければ、変数DeltaPOCBD_pps[i][j+OffsetBD[i]]の値を、DeltaPOCBD_pps[i][j+OffsetBD[i]]=delta_poc_minus_one_pps[i][j]+1として、j>0であれば、DeltaPOCBD_pps[i][j+OffsetBD[i]]=DeltaPOCBD_pps[i][j−1+OffsetBD[i]]+delta_poc_minus_one_pps[i][j]+1として定義する。DeltaPOCBD_pps[i][j+OffsetBD[i]]は、1からMaxPOC/2−1までの範囲内にあるものとする。
temporal_id_positive_pps[i][j]は、時間識別子を指定し、bits_for_temporal_id_in_buffer_descriptionsビットによって表されるものとする。temporal_id_positive_pps[i][j]は、変数TemporalIDBD_pps[i][j]の値をTemporalIDBD_pps[i][j+OffsetBD[i]]=temporal_id_positive_pps[i][j]として定義する。temporal_id_positive_pps[i][j]は、両端値を含めて、0からmax_temporal_layers_minus1までの範囲内にあるものとする。
リスティング(1)におけるパラメータの記述の例は、次のように示される。number_of_longterm_pictures_pps[i]は、リストPOCBD_pps[i]およびPOC_CYCLE_BD_pps[i]におけるエントリの数を指定する。number_of_longterm_pictures_pps[i]の値は、両端値を含めて、0からmax_num_ref_framesまでの範囲内にあるものとする。max_num_ref_framesは、短期および長期参照フレームの最大数を指定する。poc_pps[i][j]は、POC値を指定し、リストPOCBD_pps[i]に追加されるべき値をPOCBD[i][j]=poc[j]として定義する。上記の一構成において、追加操作は、添付操作である。別の構成において、添付(または追加)操作は、リストにおける項目を所定の順序で置き換える操作である。poc_pps[i][j]は、0からMaxPOC−1までの範囲内にあるものとする。
poc_cycle_pps[i][j]は、poc_cycle(例えば、サイクルパラメータ)値を指定し、リストPOC_CYCLE_BD_pps[i]に追加されるべき値を定義する。上記の一構成において、追加操作は、添付操作である。別の構成において、添付(または追加)操作は、リストにおける項目を所定の順序で置き換える操作である。poc_cycle_pps[i][j](例えば、サイクルパラメータ)は、いくつかの構成においてゼロ以下である。かかる場合には、サイクルパラメータを表すために符号付き整数が用いられる。他の構成では、サイクルパラメータを表すために符号なし整数が用いられる。
temporal_id_poc_pps[i][j]は、時間識別子を指定し、bits_for_temporal_id_in_buffer_descriptions>0であれば存在するものとする。temporal_id_poc_pps[i][j]は、リストTemporalIDBD_pps[i]におけるエントリの値を定義する。temporal_id_poc_pps[i][j]は、リストTemporalIDBD_pps[i]に追加される。上記の一構成において、追加操作は、添付操作である。別の構成において、添付(または追加)操作は、リストにおける項目を所定の順序で置き換える操作である。temporal_id_poc_pps[i][j]は、両端値を含めて、0からmax_temporal_layers_minus1までの範囲内にあるものとする。max_temporal_layers_minus1+1は、シーケンスに存在する時間的レイヤの最大数を指定する。留意すべきは、変数NumberOfPicturesInBD_pps[i]が、number_of_negative_pictures_pps[i]+number_of_positive_pictures_pps[i]+number_of_longterm_pictures_pps[i]として算出されることである。
i番目のピクチャパラメータセットのバッファ記述で送信される、参照ピクチャに関する負および正のdeltaPOC値は、リストDeltaPOCBD_pps[i]に追加される。上記の一構成において、追加操作は、添付操作である。別の構成において、添付(または)追加操作は、リストにおける項目を所定の順序で置き換える操作である。
次のリスティング(2)は、複数のバッファ記述が、以下のシンタックスを用いて異なるサイクルパラメータ(例えば、poc_cycles)を持つPPS内に作成される代わりの構成例を示す。従来のアプローチに加えられるべき変更は、リスティング(2)に太字テキストで示される。
リスティング(2)において、さらなるパラメータの記述の例が次のように示される。1に設定されたときに、poc_cycle_steps_flagは、シグナリングされたバッファ記述モデルとpoc_cycleカウント以外は同一の、追加のバッファ記述を、シグナリングされるバッファ記述モデルに関して発生させることを指定する。poc_cycle_steps_flagは、デフォルトで0とする。そのうえ、poc_cycle_stepsは、シグナリングされるバッファ記述モデルに関して発生させなければならない追加のバッファ記述の数を指定する。追加のバッファ記述は、poc_cycleカウントを減少させなければならないということ以外は、シグナリングされたバッファ記述と同一であるものとする。一構成において、発生させる追加のバッファ記述は、−1、−2、−3、・・・、−(poc_cycle_steps)のpoc_cycle_pps[i][j]値を有する。
いくつかの構成において、ビットストリーム内で解像度の切り替えを可能にすることができる。これらの構成では、参照ピクチャの解像度が現ピクチャの解像度と異なってもよい。従って、参照ピクチャを正しい解像度にスケーリングするためにどのメカニズムを用いうるかを知ることが有益であろう。メカニズムをシグナリングする一方法は、バッファ記述とともにメカニズムを明示的にシグナリングすることである。例えば、エンコーダ108(例えば、オーバーヘッド・シグナリング・モジュール112)がスケーリングパラメータをデコーダ102へシグナリングする。かくして、代わりのバッファ記述が表(2)に示される。
表(2)において、最初の2つのエントリは、現ピクチャの解像度に一致する解像度を有する。しかしながら残りの3つのエントリは、異なる解像度を有し、それぞれスケーリングパラメータs0、s1、s2を用いる。スケーリングパラメータは、選択的にシグナリングされる。例えば、スケーリングパラメータは、現ピクチャおよび参照ピクチャが異なる解像度を有する場合にのみシグナリングされる。別の構成では、スケーリングパラメータは、常にシグナリングされる。さらに別の構成では、スケーリングパラメータは、例えば、現ピクチャの特性(例えば、解像度)および参照ピクチャの特性(例えば、解像度)によってインデックス付けされたルックアップテーブルを用いることにより(デコーダによって)暗黙的に推定される。
さらに別の構成では、スケーリングパラメータは、バッファ記述に定義されたピクチャの任意のサブセットに関してシグナリングされる。例えば、スケーリングパラメータは、正のdeltaPOC値を用いてシグナリングされるピクチャのサブセット、負のdeltaPOC値を用いてシグナリングされる参照ピクチャのサブセット、POCおよびpoc_cycleを用いてシグナリングされるピクチャのサブセットに関してシグナリングされる。一構成において、サブセットはリスト全体を含む。一例は、次の表(3)に示され、ここでnegativeDeltaPOC0およびnegativeDeltaPOC1は、負のdelta POC値であり、positiveDeltaPOC2は、正のdelta POC値であり、s0、s1、s2、s3およびs4は、それぞれ第1のエントリ、第2のエントリ、第3のエントリ、第4のエントリ、第5のエントリに関するスケーリングパラメータである。
さらに別の構成では、スケーリングパラメータは、復号ピクチャバッファに維持されるべき参照ピクチャの1つ以上の解像度を指示する。さらに別の構成では、スケーリングパラメータは、動き補償処理に用いるべき参照ピクチャの解像度をシグナリングするために用いられる。さらに別の構成では、参照ピクチャおよび復号されているピクチャの解像度が同じでない場合、スケーリングパラメータは、予測を発生させるために用いるべき動き補償処理を指示する。
一構成において、スケーリングパラメータは、画素における水平および/または垂直解像度の変化をシグナリングする(例えば、指示する)。一構成において、スケーリングパラメータは、所望の水平および/または垂直解像度と元の水平および/または垂直解像度との間の比をシグナリングする(例えば、指示する)。一構成において、スケーリングパラメータは、2タプルであり、第1の値は、水平解像度に関するスケーリングを識別し、第2の値は、垂直解像度に関するスケーリングを識別する。
いくつかの構成において、所望の解像度を得るために、参照ピクチャの変換係数がスケーリングパラメータに基づいて処理される。これは、参照ピクチャを符号化する間に或る閾値より大きいブロックサイズのみを許容することによって、より良好な解像度の適応を可能にするために有益であろう。
さらに別の構成では、所望の解像度を得るために、参照ピクチャの再構成画素がスケーリングパラメータに基づいて処理される。留意すべきは、これらの構成が本明細書に開示されるすべての参照ピクチャ・インデックス付けスキームに適用できることである。
リスティング(3)は、PPSに関するシンタックスのAHG21からの修正の別の例を示す。特に、リスティング(3)は、AHG21に概説されるような、スライスヘッダに用いられるバッファ記述シンタックスの一例を示す。但し、本明細書に開示されるシステムおよび方法による、AHG21に示されるシンタックスへの修正は、リスティング(3)に太字テキストで示される。
リスティング(3)におけるパラメータの記述の例は、次のように示される。number_of_negative_picturesは、負のdelta POCエントリの数を指定する。number_of_negative_picturesは、Offsetの値をOffset=number_of_negative_picturesとして定義する。number_of_negative_picturesの値は、両端値を含めて、0からmax_num_ref_framesまでの範囲内にあるものとする。
negative_delta_poc_minus_one[i]は、POC値における絶対距離を指定する。negative_delta_poc_minus_one[i]は、iが0に等しければ、変数POCBD[i]の値をPOCBD[i]=(pic_order_cnt+MaxPOC−(negative_delta_poc_minus_one[i]+1))%MaxPOCとして、i>0であれば、POCBD[i]=(POCBD[i−1]+MaxPOC−(negative_delta_poc_minus_one[i]+1))%MaxPOCとして定義する。ここで、pic_order_cntは、スライスヘッダでシグナリングされるような、現ピクチャのPOCである。negative_delta_poc_minus_one[i]の値は、両端値を含めて、0からMaxPOC−1までの範囲内にあるものとする。POCBD[i]の値は、DiffPOC(CurrPic,refPic)の値が−1から−MaxPOC/2までの範囲内にあるものとする。ここで、refPicは、POCBD[i]に等しいpic_order_cntを持つ参照ピクチャである。
DiffPOC(picA,picB)は、次のように指定される。
関数POC(picX)は、次のように指定される。POC(picX)=picXのpic_order_cnt。POC_CYCLE_BD[i]は、i番目の負のdeltaPOC参照ピクチャのpoc_cycleに設定される。i番目の負のdeltaPOC参照ピクチャのpoc_cycleは、指定ピクチャに基づいて算出される。
temporal_id_negative[i]は、時間識別子を指定し、bits_for_temporal_id_in_buffer_descriptionsビットによって表されるものとし、ここでbits_for_temporal_id_in_buffer_descriptionsは、現ピクチャによって用いられるピクチャパラメータセットからのシンタックス要素である。temporal_id_negative[i]は、変数TemporalIDBD[i]の値をTemporalIDBD[i]=temporal_id_negative[i]として定義する。temporal_id_negative[i]は、両端値を含めて、0からmax_temporal_layers_minus1までの範囲内にあるものとする。TemporalIDBD[i]の値は、TemporalIDBD[i]が、POCBD[i]に等しいpic_order_cntを持つ参照ピクチャのNALヘッダでシグナリングされる、temporal_idに等しくなければならないように制限される。
number_of_positive_picturesは、リストDeltaPOCBD_pps[i]における正の値を持つエントリの数を指定する。number_of_positive_picturesの値は、両端値を含めて、0からmax_num_ref_frames−Offsetまでの範囲内にあるものとする。number_of_positive_picturesシンタックス要素が存在しないとき、number_of_positive_picturesの値は、0に等しいと推定するものとする。
delta_poc_minus_one[i]は、POC値における絶対距離を指定する。delta_poc_minus_one[i]は、iが0に等しければ、変数POCBD[i+Offset]の値をPOCBD[i+Offset]=(pic_order_cnt+(delta_poc_minus_one[i]+1))%MaxPOCとして、i>0であれば、POCBD[i+Offset]=(POCBD[i−1+Offset]+(delta_poc_minus_one[i]+1))%MaxPOCとして定義する。ここで、pic_order_cntは、スライスヘッダでシグナリングされるような、現ピクチャのPOCである。delta_poc_minus_one[i]の値は、両端値を含めて、0からMaxPOC−1までの範囲内にあるものとする。POCBD[i+Offset]の値は、DiffPOC(currPic,refPic)の値が1からMaxPOC/2−1までの範囲内にあるものとし、ここでrefPicは、POCBD[i+Offset]に等しいpic_order_cntを持つ参照ピクチャである。POC_CYCLE_BD[i+Offset]は、i番目の正のdeltaPOC参照ピクチャのpoc_cycleに設定される。i番目の正のdeltaPOC参照ピクチャのpoc_cycleは、指定ピクチャに基づいて算出される。
temporal_id_positive[i]は、時間識別子を指定し、bits_for_temporal_id_in_buffer_descriptionsビットによって表されるものとし、ここでbits_for_temporal_id_in_buffer_descriptionsは、現ピクチャによって用いられるピクチャパラメータセットからのシンタックス要素である。temporal_id_positive[i]は、変数TemporalIDBD[i+Offset]の値をTemporalIDBD[i+Offset]=temporal_id_positive[i]として定義する。temporal_id_positive[i]は、両端値を含めて、0からmax_temporal_layers_minus1までの範囲内にあるものとする。TemporalIDBD[i]の値は、TemporalIDBD[i]が、POCBD[i]に等しいpic_order_cntを持つ参照ピクチャのNALヘッダでシグナリングされる、temporal_idに等しくなければならないように制限される。
1に等しいbd_poc_cycle_update_flagは、参照されるバッファ記述のPOC_CYCLE_BD_pps[bd_idx][j]が、現ピクチャに関して、オーバーライドされるべきであることを指定する。いくつかの構成において、将来のフレームも、poc_cycle情報をオーバーライドすることができる。bd_poc_cycle_update_flagが0であれば、参照されるバッファ記述の元のPOC_CYCLE_BD_pps[bd_idx][j]を用いるべきである。poc_cycle_pps_override[j]は、現ピクチャに関してのみ、POC_CYCLE_BD_pps[bd_idx][j]内の値をオーバーライドするために用いるべき値を指定する。代わりの構成では、poc_cycle_pps_override[j]がオフセットを指定する。現ピクチャに関してのみ、POC_CYCLE_BD_pps[bd_idx][j]の代わりに(POC_CYCLE_BD_pps[bd_idx][j]+poc_cycle_pps_override[j])を用いることができる。
poc_pps_override[j]は、現ピクチャに関してのみ、POCBD_pps[bd_idx][j]内の値をオーバーライドするために用いるべき値を指定する。代わりの構成では、poc_pps_override[j]がオフセットを指定する。現ピクチャに関してのみ、POCBD_pps[bd_idx][j]の代わりに(POCBD_pps[bd_idx][j]+poc_pps_override[j])を用いることができる。temporal_id_pps_override[j]は、現ピクチャに関してのみ、TemporalIDBD_pps[bd_idx][j]内の値をオーバーライドするために用いるべき値を指定する。代わりの構成では、temporal_id_pps_override[j]がオフセットを指定する。現ピクチャに関してのみ、TemporalIDBD_pps[bd_idx][j]の代わりに(TemporalIDBD_pps[bd_idx][j]+ temporal_id_pps_override[j])を用いることができる。
number_of_longterm_picturesは、リストPOCBDおよびPOC_CYCLE_BDにおける長期ピクチャ・エントリの数を指定する。number_of_longterm_picturesの値は、両端値を含めて、0からmax_num_ref_framesまでの範囲内にあるものとする。max_num_ref_framesは、短期および長期参照フレームの最大数を指定する。poc[j]は、リストPOCBDに追加されるべきPOC値をPOCBD[bd_idx][j]=poc[j]として指定する。上記の一構成において、追加操作は、添付操作である。別の構成において、添付(または追加)操作は、リストにおける項目を所定の順序で置き換える操作である。poc[j]は、0からMaxPOC−1までの範囲内にあるものとする。
poc_cycle[j](例えば、サイクルパラメータ)は、poc_cycle値を指定し、リストPOC_CYCLE_BDに追加されるべき値を定義する。上記の一構成において、追加操作は、添付操作である。別の構成において、添付(または追加)操作は、リストにおける項目を所定の順序で置き換える操作である。poc_cycle[j]は、ゼロ以下であってもよく、または異なる数値範囲を占めてもよい。
temporal_id_poc[j]は、時間識別子を指定し、bits_for_temporal_id_in_buffer_descriptionビットによって表されるものとする。temporal_id_poc[j]は、リストTemporalIDBDに追加されるべき値を定義する。上記の一構成において、追加操作は、添付操作である。別の構成において、添付(または追加)操作は、リストにおける項目を所定の順序で置き換える操作である。temporal_id_poc[i][j]は、両端値を含めて、0からmax_temporal_layers_minus1までの範囲内にあるものとする。max_temporal_layers_minus1+1は、シーケンスに存在する時間的レイヤの最大数を指定する。
いくつかの構成において、number_of_longterm_pictures_pps[bd_idx]は、リスティング(3)に示される“for”ループより前に送信され、それによってPPSを持つスライスヘッダへの依存性を回避する。代わりに、bd_poc_cycle_update_flagは、別のパラメータnum_longterm_poccycle_override_countで置き換えられる。例えば、上記のリスティング(3)における該当コードは、“If num_longterm_poccycle_override_count>0 then For(j=0;j<num_longterm_poccycle_override_count;j++) {....}.”で置き換えられる。
1に等しいbd_reference_flagは、現ピクチャのバッファ記述が、スライスヘッダで送信されないシンタックス要素を用いて作成されることを指定する。一構成において、現ピクチャに関するバッファ記述は、ピクチャパラメータセットにおけるシンタックス要素を用いて作成される。0に等しいbd_reference_flagは、現ピクチャのバッファ記述が、スライスヘッダで送信されるバッファ記述とスライスヘッダで送信されないバッファ記述との組み合わせによって作成されることを指定する。一構成において、スライスヘッダで送信されないバッファ記述は、ピクチャパラメータセットで送信される。
bd_idxは、利用可能なバッファ記述のセットにおけるバッファ記述を識別する。一構成において、bd_idxは、現ピクチャのバッファ記述の作成に用いるものとするリストPOCBD_pps、DeltaPOCBD_pps、POC_CYCLE_BD_pps、およびTemporalIDBD_ppsにおけるインデックスを指定する。
(DeltaPOCBD_pps[bd_idx],TemporalIDBD_pps[bd_idx])においてdeltaPOC参照されたピクチャに対応する値は、ピクチャオーダーカウント(例えば、POC)、サイクルパラメータ(例えば、poc_cycle)および時間識別子に変換されて、ピクチャバッファ記述リストPOCBD、POC_CYCLE_BDおよびTemporalIDBDに追加される。参照ピクチャに対応するリスト(POCBD_pps[bd_idx]、POC_CYCLE_BD_pps[bd_idx]、TemporalIDBD_pps[bd_idx])における値は、ピクチャバッファ記述リストPOCBD、POC_CYCLE_BDおよびTemporalIDBDに追加される。上記の一構成において、追加操作は、添付操作である。別の構成において、添付(追加)操作は、リストにおける項目を所定の順序で置き換える操作である。
1に等しいcombine_with_reference_flagは、リストPOCBD、POC_CYCLE_BDおよびTemporalIDBDに値を割り当てるために、アクティブなPPSからのシンタックス要素が、明示的なシグナリングと組み合わせて用いられることを指定する。combine_with_reference_flagシンタックス要素が存在しないとき、combine_with_reference_flagの値は、0に等しいと推定するものとする。
bd_combination_idxは、現ピクチャのバッファ記述の作成のために、明示的なシグナリングと組み合わせて用いるものとする、リストDeltaPOCBD_ppsおよびTemporalIDBD_ppsにおけるインデックスを指定する。bd_combination_idxは、ceil(log2(number_of_bds))ビットによって表されるものとする。bd_combination_idxの値は、0からnumber_of_bds−1までの範囲内にあるものとし、ここでnumber_of_bdsは、現ピクチャによって用いられるピクチャパラメータセットからのシンタックス要素である。次に、所定のメカニズムを用いて、POCBD、POC_CYCLE_BDおよびTemporalIDBDリストにおける現ピクチャに、リストDeltaPOCBD_pps[bd_idx]、POCBD_pps[bd_idx]、POC_CYCLE_BD_pps[bd_idx]およびTemporalIDBD_pps[bd_idx]からの値が追加される。上記の一構成において、追加操作は、添付操作である。別の構成において、添付(または追加)操作は、リストにおける項目を所定の順序で置き換える操作である。
本明細書に記載されるシステムおよび方法の適用の仕方のいくつかの例が以下に示される。POC=0オンを持つピクチャは、POC=MaxPOC−1を持つピクチャおよび後続ピクチャセットからのPOC=0を持つピクチャによって用いられる長期(参照)ピクチャであると仮定する。長期(参照)ピクチャは、様々な方法で指示される。
第1の方法では、PPSに、バッファ記述A:{POC=0,poc_cycle=0,temporalID}およびバッファ記述B:{POC=0,poc_cycle=−1,temporalID}を含む2つのバッファ記述がある。POC=MaxPOC−1を持つピクチャは、バッファ記述Aを指すことになろう。後続ピクチャセットからのPOC=0を持つピクチャは、バッファ記述Bを参照することになろう。
第2の代わりの方法では、POC=MaxPOC−1を持つピクチャは、バッファ記述Aを指すことになろう。後続ピクチャセットからのPOC=0を持つピクチャは、バッファ記述Aを参照することになろう。バッファ記述Aは、{POC=0,poc_cycle=0,temporalID}に対応する。参照されるピクチャが前の[0,・・・,MaxPOC−1]ピクチャセットに属するので、正しいピクチャを参照するためには、poc_cycleが−1に設定されるべきである。従って、現在0に設定されているバッファ記述Aに関するpoc_cycle値は、スライスヘッダで「−1」を送信することによって、現スライスに関してのみ、オーバーライドされる(例えば、異なる値に設定される)。いくつかの構成において、ピクチャにおける第1のスライスは、現ピクチャに関してのみ、バッファ記述のpoc_cycle値をオーバーライドするために用いられる。
いくつかの構成において、ハイレベルでシグナリングされる参照ピクチャのリストは、より微細なレベルで修正される。例えば、参照ピクチャのリストは、PPSにおいて送信されるバッファ記述でシグナリングされる(例えば、ハイレベルでシグナリングされる)。しかしながら、PPSにおいて送信されるバッファ記述は、修正する(例えば、より微細なレベルで修正する)ことができる。例えば、バッファ記述が、既存のエントリを削除することによって修正される。加えて、または代わりに、PPSからのバッファ記述情報が、新しいエントリを追加するか、またはエントリを置き換えるべく修正される。PPSからのバッファ記述情報は、例えば、空のスロットがなにも利用できない場合には、所定のメカニズムを用いて新しいエントリを追加し、現エントリを置き換えるべく修正される。修正を可能にする利益は、よりハイレベルの制御が達成されることである。これは、PPSからのバッファ記述を修正なしに用いる代わりに、または最初の‘n’エントリのみを置き換えることに加えて、あるいは置き換えることによって可能である。
いくつかの構成において、スロット・リストにおけるエントリを置き換えるために、追加のシンタックスが定義される。この場合、置き換えられるリストにおけるインデックス、およびそのインデックスにおいて現エントリを置き換えるエントリが指定されることになろう。
加えて、または代わりに、スロット・リストがなにも空きを有さない場合、置き換えを伴うスロット・リストにエントリを追加するために、追加のシンタックスが定義される。この場合、置き換えるべきリストにおけるインデックスは、(例えば、エンコーダ108またはオーバーヘッド・シグナリング・モジュール112から)明示的にシグナリングされるか、またはビットストリームで前に送信されたいくつかの情報を用いて(例えば、デコーダ102によって)暗黙的に推定される。
リスティング(4)は、PPSに関するシンタックスのAHG21からの修正の別の例を示す。特に、リスティング(4)は、AHG21に概説されるような、スライスヘッダに用いられるバッファ記述シンタックスの別の例を示す。但し、本明細書に開示されるシステムおよび方法による、AHG21に示されるシンタックスへの修正は、リスティング(4)に太字テキストで示される。
リスティング(4)は、リスティング(3)と同様の多くの要素を含む。リスティング(4)は、参照ピクチャの削除および/または追加を可能にするスライスヘッダのシンタックス修正も含む。
リスティング(4)におけるパラメータの記述の例は、次のように示される。bd_poc_cycle_delete_countは、現ピクチャに関して(例えば、のみ)、リスト:POCBD_pps[bd_idx]、temporalIDBD_pps[bd_idx]およびPOC_CYCLE_BD_pps[bd_idx]から削除されるべきエントリの数を指定する。いくつかの構成において、bd_poc_cycle_delete_countは、0以上である。
bd_pps_delete_idx[j]は、現ピクチャに関して、POC_CYCLE_BD_pps[bd_idx][bd_pps_delete_idx[j]]エントリ、temporalIDBD_pps[bd_idx][bd_pps_delete_idx[j]]エントリ、およびPOCBD_pps[bd_idx][bd_pps_delete_idx[j]]エントリが、リストにおいて削除されることを指定する。いくつかの構成において、ピクチャが一旦削除されると、もはや後続の復号されるピクチャによる参照のためにそれを利用することはできない。他の構成において、すべての削除が一旦完了すると、リストPOCBD_pps[bd_idx]、temporalIDBD_pps[bd_idx]およびPOC_CYCLE_BD_pps[bd_idx]における残りのエントリは、空のスロットを占有するために、最初のインデックス(例えば、ゼロ番目のインデックス)に向って移される。この処理は、任意の2つの占有スロット間に空のスロットがなにも残らないように実施される。ここで、スロットは、バッファ記述におけるエントリに対応する。例えば、リストが[Slot0=A][Slot1=empty][Slot2=B][Slot3=C][Slot4=empty][Slot5=D]であれば、削除後に、エントリは、任意の2つの占有スロット間に空のスロットがなにも残らなくなるまでスロット0に向って移される。この例では、結果として生じるリストは、[Slot0=A][Slot1=B][Slot2=C][Slot3=D][Slot4=empty][Slot5=empty]である。
bd_poc_cycle_append_countは、現ピクチャに関して、リスト:POCBD_pps[bd_idx]、temporalIDBD_pps[bd_idx]およびPOC_CYCLE_BD_pps[bd_idx]に添付されるべきエントリの数を指定する。いくつかの構成において、bd_poc_cycle_append_countは、0以上である。
poc_pps_append[j]は、現ピクチャに関して(例えば、のみ)、リストPOCBD_pps[bd_idx]に添付されるべきPOC値を指定する。いくつかの構成において、リストに任意の空のスロットが存在する場合、追加は、ゼロ・インデックスに最も近い空のスロットで開始し、その後、スロット・インデックスの昇順に行われる。
poc_cycle_pps_append[j]は、現ピクチャに関して(例えば、のみ)、リストPOC_CYCLE_BD_pps[bd_idx]に添付されるべきpoc_cycle値を指定する。いくつかの構成において、リストに任意の空のスロットが存在する場合、ゼロ・インデックスに最も近い空のスロットが最初に満たされる。さらに、スロット・インデックスの昇順にスロットが満たされる。いくつかの構成において、POCBD_pps[bd_idx]およびPOC_CYCLE_BD_pps[bd_idx]に対してエントリをオーバーライドする、エントリを削除する、およびエントリを添付するこれらの操作が、所定の順序で実施される。
temporal_id_pps_append[j]は、現ピクチャに関して(例えば、のみ)、リストTemporalIDBD_pps[bd_idx]に添付されるべき時間識別子値を指定する。いくつかの構成において、リストに任意の空のスロットが存在する場合、追加は、ゼロ・インデックスに最も近い空のスロットで開始し、その後、スロット・インデックスの昇順に行われる。
本明細書に開示されるシステムおよび方法の構成のいくつかの例が以下に示される。一構成において、3タプル(POC,poc_cycle,temporalID)は、2タプル(LTSlotIdx,temporalID)に置き換えられる。LTSlotIndexは、長期DPBにおける位置を指すスロット・インデックスである。このアプローチの1つの可能な利益は、ビットレート・オーバーヘッドを削減することである。
別の構成において、3タプル(POC,poc_cycle,temporalID)は、(f(POC,poc_cycle),temporalID)に置き換えられ、ここでf(POC,poc_cycle)は、2タプル(POC,poc_cycle)をインデックスへマッピングする関数(例えば、ルックアップテーブル)である。さらに別の構成において、(POC,poc_cycle)の代わりに、絶対POC値を用いることもできる。一例において、この絶対POC値は、絶対POCを指定したJCTVC−F493のバッファ記述におけるlongterm_poc[i]フィールドとは異なることになろう。特に、JCTVC−F493のlongterm_poc[i]フィールドは、範囲0およびMaxPOCにおける値をシグナリングできるに過ぎない。しかしながら、本明細書に開示されるシステムおよび方法に従って、絶対POC値は、AVCの最上位ビット(MSB:most significant bit)および最下位ビット(LSB:least significant bit)スキームを用いてシグナリングされ(および場合によっては導出され)、かくして、より大きいビット解像度を提供する。代わりに、絶対POC値は、MaxPOCより大きい数空間を用いてシグナリングされてもよい。
別の構成において、本明細書に開示されるシステムおよび方法による絶対POCは、すべての参照ピクチャ(例えば、短期ピクチャおよび長期ピクチャ)を参照するために用いられる。別の構成において、本明細書に開示されるシステムおよび方法による絶対POCは、deltaPOCのシグナリングの代わりに用いられる。いくつかの構成において、POCおよびpoc_cycleは、以下の例に示されるように絶対POC値によって置き換えられる(しかも以下の例には限定されない)。
この例では、absolute_poc_pps[i][j]は、PPS内のi番目のバッファ記述におけるj番目の長期ピクチャ・エントリに関する絶対ピクチャオーダーカウントである。
この例では、absolute_poc[j]は、バッファ記述におけるj番目の長期ピクチャ・エントリに関する絶対ピクチャオーダーカウントである。
いくつかの構成において、PPSに、および/またはバッファ記述に典型的に含まれるいくつかまたはすべての情報は、さらに、または代わりに、適応スライスパラメータセットまたは適応パラメータセット(APS:Adaptation Parameter Set)で伝えられる。この情報は、number_of_longterm_pictures、poc[j]、poc_cycle[j]、temporal_id_poc[j]、number_of_longterm_pictures_pps[i]、poc_pps[i][j]、poc_cycle_pps[i][j]、およびtemporal_id_poc_pps[i][j]の1つ以上を含む。例えば、適応スライスパラメータセットまたは適応パラメータセット(APS)は、参照ピクチャの数(例えば、number_of_longterm_pictures)、ピクチャオーダーカウント(例えば、poc[j])、ピクチャオーダーカウント・サイクルパラメータ(例えば、poc_cycle[j])、時間識別子ピクチャオーダーカウント・パラメータ(例えば、temporal_id_poc[j])、参照ピクチャのピクチャパラメータセット数(例えば、number_of_longterm_pictures_pps[i])、ピクチャパラメータセット・ピクチャオーダーカウント(例えば、poc_pps[i][j])、ピクチャパラメータセット・ピクチャオーダーカウント・サイクルパラメータ(例えば、poc_cycle_pps[i][j])およびピクチャパラメータセット時間識別子ピクチャオーダーカウント・パラメータ(例えば、temporal_id_poc_pps[i][j])の1つ以上を含む。
いくつかの構成において、情報poc_cycle[j]は、0とは異なる場合に(例えば、エンコーダ108からデコーダ102、202へ)シグナリングされるに過ぎない。この場合には、代わりのシンタックスが定義される。
さらに別の構成において、PPSに、および/またはバッファ記述に典型的に含まれるいくつかまたはすべての情報は、さらに、または代わりに、バッファ記述情報とは別にスライスヘッダで伝えられる。例えば、スライスヘッダは、参照ピクチャの数(例えば、number_of_longterm_pictures)、ピクチャオーダーカウント(例えば、poc[j])、ピクチャオーダーカウント・サイクルパラメータ(例えば、poc_cycle[j])、時間識別子ピクチャオーダーカウント・パラメータ(例えば、temporal_id_poc[j])、参照ピクチャのピクチャパラメータセット数(例えば、number_of_longterm_pictures_pps[i])、ピクチャパラメータセット・ピクチャオーダーカウント(例えば、poc_pps[i][j])、ピクチャパラメータセット・ピクチャオーダーカウント・サイクルパラメータ(例えば、poc_cycle_pps[i][j])およびピクチャパラメータセット時間識別子ピクチャオーダーカウント・パラメータ(例えば、temporal_id_poc_pps[i][j])の1つ以上を(バッファ記述コンテナとは別に)伝えることができる。
代わりの構成において、長期(参照)ピクチャは、それをx.yとインデックス付けすることによってシグナリングされ、ここでx=poc[j]またはpoc_pps[i][j]であり、yは、長期(参照)ピクチャをサブインデックス付けするために、追加の名前空間/数空間を定義する新しい情報サブインデックスである。この場合、xおよびyエントリは、PPSで、および/または各長期(参照)ピクチャに関する(スライスヘッダにおける)バッファ記述で送られる。
いくつかの構成において、すべての(参照)ピクチャ(例えば、長期および短期)は、(例えば、deltaPOCおよびtemporalIDを用いた)差分参照か、または(例えば、POC、poc_cycleおよびtemporalIDを用いた)絶対参照のいずれかを用いて参照される。例えば、復号ピクチャバッファ(DPB)全体が、受信されたピクチャのセットを含む。これらの受信されたピクチャのサブセットが、差分参照を用い、残りの受信されたピクチャが絶対参照を用いてもよい。留意すべきは、従来のアプローチが、本明細書に開示されるシステムおよび方法に従って示される(例えば、POCおよびpoc_cycleを用いた)ものと同じ絶対参照を指定しないことである。留意すべきは、記載されるバッファ記述およびシンタックスの構成の1つ以上が、本明細書に記載される方法および/またはアプローチの1つ以上と組み合わせて実装されてもよいことである。
図3は、指定ピクチャに基づいて、削減されたオーバーヘッドの参照により、参照ピクチャを追跡するための方法300の一構成を示すフローダイアグラムである。電子デバイス204(例えば、デコーダ202)は、ビットストリームを受信する(ステップ302)。例えば、デコーダ202は、符号化された参照ピクチャ(および、例として、他の符号化されたピクチャ)を含むビットストリーム214を受信する(ステップ302)。いくつかの構成において、ビットストリーム214は、オーバーヘッド情報(例えば、PPS、バッファ記述情報、パラメータ、ラップ・インジケータ、参照ピクチャ指定または識別子など)も含む。
電子デバイス204は、復号された参照ピクチャを生成するために、ビットストリーム214の一部分を復号する(ステップ304)。例えば、デコーダ202は、フレームメモリ264に記憶される復号された参照ピクチャを生成するために、ビットストリーム214の一部分を復号する(ステップ304)。留意すべきは、1つ以上の復号された参照ピクチャを生成するために、ビットストリーム214の1つ以上の部分が復号される(ステップ304)ことである。
電子デバイス204は、削減されたオーバーヘッドの参照により、復号ピクチャバッファ(DPB)における復号された参照ピクチャを追跡する(ステップ306)。例えば、電子デバイス204は、サイクルパラメータを、復号された参照ピクチャと関連付け、ラップ・インジケータが受信されるか、またはピクチャセット間で遷移が判定された場合、サイクルパラメータを修正する(例えば、デクリメントまたはインクリメントする)。復号された参照ピクチャを追跡する(ステップ306)ために、他のアプローチが用いられてもよい。さらなる詳細が以下に示される。留意すべきは、DPBが1つ以上の復号された参照ピクチャを含むことである。
電子デバイス204は、1つ以上の復号された参照ピクチャに基づいて、ピクチャを復号する(ステップ308)。例えば、(復号された参照ピクチャを生成するために復号された(ステップ304)部分以外の)ビットストリーム214の一部分が、参照ピクチャに基づいて復号される(ステップ308)。例として、(DPBで追跡された)復号された参照ピクチャが、フレーム間予測メカニズムに基づいてフレーム間予測信号268を発生させるために、動き補償モジュール260へ供給される。フレーム間予測信号268は、次にピクチャを復号する(ステップ308)ために用いられる。いくつかの構成または例では、ピクチャを復号する(ステップ308)ために、1つ以上の復号された参照ピクチャが追跡されて(ステップ306)、用いられる。
図4は、指定ピクチャに基づいて、削減されたオーバーヘッドの参照により、参照ピクチャを追跡するための方法400のより具体的な構成を示すフローダイアグラムである。この方法400は、POCが再使用されたときにどのピクチャが参照されているかを追跡するための1つのアプローチである。電子デバイス204(例えば、デコーダ202)は、ビットストリーム214を受信する(ステップ402)。例えば、デコーダ202は、符号化された参照ピクチャ(および、例えば、他の復号されたピクチャ)を含むビットストリーム214を受信する(ステップ402)。いくつかの構成において、ビットストリーム214は、オーバーヘッド情報(例えば、PPS、バッファ記述情報、パラメータ、ラップ・インジケータ、参照ピクチャ指定または識別子など)を含む。
電子デバイス204は、復号された参照ピクチャを生成するために、ビットストリーム214の一部分を復号する(ステップ404)。例えば、デコーダ202は、フレームメモリ264に記憶される復号された参照ピクチャを生成するために、ビットストリーム214の一部分を復号する(ステップ404)。留意すべきは、1つ以上の復号された参照ピクチャを生成するために、ビットストリーム214の1つ以上の部分が復号される(ステップ404)ことである。
電子デバイス204は、サイクルパラメータを、復号された参照ピクチャを含む復号ピクチャセットと関連付ける(ステップ406)。例えば、電子デバイス204は、サイクルパラメータ“poc_cycle”を、復号された参照ピクチャを含む復号ピクチャセットと関連付ける(ステップ406)。
サイクルパラメータ“poc_cycle”は、次のように定義される。範囲[0,・・・,MaxPOC−1]内のピクチャのPOCを表すために固定ビット数が用いられるとき、MaxPOC個の一意的な整数値が存在する。符号化しているピクチャの数がMaxPOCを超えた場合、ピクチャ番号付けメカニズムは、既に割り当てられたPOC値を再使用しなければならない。従って、POC番号付けは、一例において次のように進行する:・・・,[0,・・・,MaxPOC−1]n−2,[0,・・・,MaxPOC−1]n−1,[0,・・・,MaxPOC−1]n,[0,・・・,MaxPOC−1]n+1,・・・。この例における下付き文字は、セット[0,・・・,MaxPOC−1]が繰り返された回数を示す。この下付き文字、またはセット[0,・・・,MaxPOC−1]が繰り返された回数は、MaxPOCSetIndexとして示される。例えば、POC=0およびMaxPOCSetIndex=nを持つピクチャは、(例として、ピクチャセット番号付けが1で開始すると仮定して)シーケンスの(n×MaxPOC+1)番目のピクチャを表す。サイクルパラメータ“poc_cycle”に関するさらなる詳細は、次の図5に関連して示される。
電子デバイス204は、ラップ・インジケータが受信されたかどうかを判定する(ステップ408)。例えば、エンコーダ108または送信用電子デバイスA104aが、ピクチャセットにおける所定の最大ピクチャ数に達するたびに、エンコーダ108または送信用電子デバイスA104aは、別のピクチャセットが送られている(例えば、POCがリセットしているか、または別のサイクルを開始している)ことを指示するために、デコーダ102または受信用電子デバイスB104bによって受信されるラップ・インジケータを送る。さらなる詳細は、添付の図12に関連して示される。
電子デバイス204が、ラップ・インジケータを受信したと判定した(ステップ408)場合、電子デバイス204は、サイクルパラメータを修正する(ステップ410)(例えば、デクリメントする)。例えば、電子デバイス204は、DPBにおけるピクチャ毎、またはピクチャセット毎にサイクルパラメータをデクリメントする。別の例では、電子デバイス204は、サイクルパラメータをインクリメントすることもある。
電子デバイス204は、復号された参照ピクチャに基づいてピクチャを復号する(ステップ412)。例えば、(復号された参照ピクチャを生成するために復号された(ステップ404)部分以外の)ビットストリーム214の一部分が、参照ピクチャに基づいて復号される(ステップ412)。例として、(DPBで追跡された)復号された参照ピクチャは、フレーム間予測メカニズムに基づいてフレーム間予測信号268を発生させるために、動き補償モジュール260へ供給される。フレーム間予測信号268は、次にピクチャを復号する(ステップ412)ために用いられる。いくつかの構成または例では、ピクチャを復号する(ステップ412)ために、1つ以上の復号された参照ピクチャが用いられる。
図5は、サイクルパラメータによって参照される複数のピクチャセットの一例を示すダイアグラムである。より具体的には、図5は、サイクルパラメータを用い、指定ピクチャに基づいて、削減されたオーバーヘッドの参照により、参照ピクチャを追跡する例を示す。特に、図5は、ピクチャセットA507aに関連するサイクルパラメータ(例えば、poc_cycle=−1)、ピクチャセットB507bに関連するサイクルパラメータ(例えば、poc_cycle=0)、およびピクチャセットC507cに関連するサイクルパラメータ(例えば、poc_cycle=+1)を示す。しかしながら、留意すべきは、ピクチャセットA507aがフレームのシーケンスにおける第1のピクチャセットであっても、なくてもよいことである。例えば、1つ以上のピクチャセットがピクチャセットA507aに先行してもよい。そのうえ、留意すべきは、ピクチャセットC507cがフレームのシーケンスにおける最後のピクチャセットであっても、なくてもよいことである。例えば、1つ以上のピクチャセットがピクチャセットC507cの後に続いてもよい。
各ピクチャセット507a〜cは、1つ以上のピクチャ501a〜n、503a〜n、505a〜nを含む。この例では、各ピクチャセット507a〜cは、MaxPOC個のピクチャ501、503、505を含む。特に、各ピクチャ501、503、505は、図5に[0,1,2,・・・MaxPOC−1]と示される、対応するピクチャオーダ−カウント(POC)を有する。
一例において、現在復号されるピクチャを含むピクチャセットのpoc_cycleは、他のピクチャのpoc_cycleを計算するために0に設定される。いくつかの場合、ピクチャは順序を違えて復号される。例えば、デコーダは、503b、次に505aさらに次に503cを参照することもある。この例では、現在復号されているピクチャは、ピクチャセットB507bにおけるPOC=1を持つピクチャ503bであると仮定する。別のピクチャ、例えば、参照ピクチャのpoc_cycleが、次に現在復号されるピクチャのpoc_cycleに基づいて算出される。
図6は、複数のピクチャセットの別の例を示すダイアグラムである。図6は、図5に関連して上述されたピクチャセット507a〜cと同様のピクチャセット607a〜cを含む。各ピクチャセット607a〜cには、1つ以上のピクチャ601a〜c、603a〜n、605a〜nが含まれる。ピクチャセット607a〜cは、MaxPOC個のピクチャを含む。さらに、各ピクチャ601a〜c、603a〜603n、605a〜605nは、図6に示されるようなセット[0,1,2,・・・,MaxPOC−1]に属する、対応するピクチャオーダーカウント(POC)を有する。
ピクチャセット607は、1つ以上のピクチャを含む。例えば、ピクチャセットB607bにおけるピクチャ603a〜603nは、ピクチャセットとしてグループ化される。同様に、ピクチャセットC607cにおけるピクチャ605a〜nは、ピクチャセットに一緒にグループ化される。ピクチャセットは、符号化されたときに互いに隣接するピクチャを含んでもよく、または一緒にグループ化されたランダム・ピクチャからなってもよい。別の例では、ピクチャセットが、[0,1,2,・・・,MaxPOC−1]ピクチャからなるpoc_cycleを形成する。
いくつかの構成において、ピクチャセット607aは、瞬時復号リフレッシュ(IDR)ピクチャ603a(例えば、IDRアクセスユニット)を含む。IDRピクチャ603aは、エンコーダによってビットストリームでシグナリングされる。加えて、または代わりに、IDRは、ピクチャタイプに基づいて識別される。いくつかの構成において、IDRピクチャ603aは、ビットストリーム214におけるいかなる後続ピクチャも、ビットストリーム214における前のピクチャへの参照を必要としないであろうことをデコーダ202に指示する。
IDRピクチャ603aがデコーダ202によって復号されたときに、POCは、リセットして所定の値に戻される。例えば、ピクチャセットA607aを復号した後に、IDRピクチャ603aが受信またはシグナリングされる。この時点で、POCは、リセットして0に戻され、新しいピクチャセット、ピクチャセットB607bが開始する。言い換えれば、IDRピクチャ603aは、参照ピクチャを指定ピクチャに対して指定する。IDRピクチャ603aを送る1つの利益は、新しい参照ピクチャを導入することである。図7に関連して、この利益が以下にさらに詳細に記載されることになろう。
図7は、サイクルパラメータによって参照される複数のピクチャセットのより具体的な例のダイアグラムである。図7は、図5に関連して上述されたコンポーネント507a〜c、501、503、505と同様のピクチャセット707a〜dおよびピクチャ701、703、705をそれらに関連するPOCおよびpoc_cycleとともに示す。加えて、図7は、追加ピクチャセット707dを関連するピクチャ731a〜nとともに示す。
図7は、指定ピクチャ703aも示す。一構成において、指定ピクチャに関するサイクルパラメータ(例えば、poc_cycle)は、0に設定される。例えば、ピクチャセットにおける第1のピクチャ(例えば、POC=0)が指定ピクチャ(例えば、IDRピクチャ)であるときには、指定ピクチャに関するpoc_cycleは、0である。時間的に後のピクチャセットのサイクルパラメータ(例えば、poc_cycle)は、0に設定されたサイクルパラメータ(例えば、poc_cycle=0)を持つピクチャセットに対して算出される。
指定ピクチャの一例は、図6に関連して上述されたIDRピクチャ603aと同様のIDRピクチャ703a(例えば、IDRアクセスユニット)である。便宜上、指定ピクチャ703aは、IDRピクチャと記載されることになろう。しかしながら、留意すべきは、指定ピクチャ703aが、エンコーダによってビットストリームにおけるシグナリングを用いて指示されるか、あるいはデコーダによって暗黙的に決定される任意のピクチャであってよいことである。
いくつかの構成において、エンコーダは、IDRピクチャ703aを指示する信号をビットストリームで送る。POCカウンタの値は、この信号に基づいて決定される。例えば、この信号は、(例えば、IDRピクチャのPOCが0でなければ)IDRピクチャのPOCを0に設定するように(デコーダに)指示する。例として、IDRピクチャ703aは、デコーダに、POCカウンタを初期値、例えば、0にリセットさせることができる。poc_cycleもIDRピクチャ703aに基づく。POCと同様に、この信号は、poc_cycleが初期値にリセットされるべきであることを指示する。別の例では、この信号は、POCまたはpoc_cycleの修正が、(IDRピクチャ703aについてそれらが初期値にある場合には)なにも生じる必要はないことを指示する。
IDRピクチャ703aは、指定ピクチャ703aに対して参照ピクチャを追跡するために用いられるPOCならびにpoc_cycle(および/または、例えば、他のサイクルパラメータ)をセットまたはリセットするためのインジケーションである。例えば、デコーダ202は、セットA707aにおけるピクチャ701a〜cを復号する。ピクチャセットA707aは、このピクチャセットに関連するサイクルパラメータpoc_cycle=mを有する。IDRピクチャ703aが、次にビットストリーム214からシグナリングされる。IDRピクチャ703aは、新しいサイクルパラメータ(例えば、poc_cycle=0)を指示し、POC=0を指示する。ピクチャセット707b〜dが、次に復号されて、それらに関連するサイクルパラメータが初期値からインクリメントする(例えば、それぞれpoc_cycle=0,poc_cycle=+1,poc_cycle=+2)。この例では、時間的に後のピクチャセット707b〜dが、新しく設定されたサイクルパラメータおよびPOCに対して算出される。
前述のように、IDRピクチャ703aは、ビットストリームにおけるいかなる後続ピクチャも、ビットストリーム214におけるピクチャ前のピクチャへの参照を必要としないであろうことをデコーダ202に指示する。しかしながら、IDRピクチャ703aは、POCの、またはサイクルパラメータのリセットをまさしくシグナリングする。例えば、ピクチャセットAは、サイクルパラメータpoc_cycle=mを有し、m=+5である。IDRピクチャ703aが受信されたときに、mは、m=−1に変更される。かくして、IDRピクチャ703aは、参照ピクチャのpoc_cycleを指定ピクチャに対してカウントする。言い換えれば、IDRピクチャ703aは、シーケンスにおいて現ピクチャだけでなく、参照ピクチャを指定ピクチャに対して算出するために、poc_cycleカウントをシグナリングする。
図8は、指定ピクチャに基づいて、削減されたオーバーヘッドの参照により、参照ピクチャを追跡するための方法800の一構成を示すフローダイアグラムである。電子デバイス204(例えば、デコーダ202)は、ビットストリームを受信して(ステップ802)、復号された参照ピクチャを生成するためにビットストリーム214の一部分を復号する(ステップ804)。これは、図3に関連して前述されたのと同様の仕方で生じる。
電子デバイス204は、指定ピクチャに基づいて、削減されたオーバーヘッドの参照により、復号ピクチャバッファ(DPB)における復号された参照ピクチャを追跡する。これは、次のように達成される。電子デバイス204(例えば、デコーダ202)は、指定ピクチャを決定する(ステップ806)。一構成において、電子デバイス204は、ビットストリーム214で受信された明示的なシグナリングに基づいて、この決定(ステップ806)を行う。例として、ビットストリーム214は、指定ピクチャを指定するインジケータを含む。一例において、指定ピクチャは、ビットストリーム214で受信されるシグナリングによって(例えば、ピクチャパラメータセット(PPS)、バッファ記述などで)指示される瞬時復号リフレッシュ(IDR)ピクチャである。
電子デバイス204は、指定ピクチャに基づいて、ピクチャオーダーカウント(POC)を決定する(ステップ808)。例えば、電子デバイス204は、指定ピクチャに関連するPOCをセットまたはリセットする。例として、指定ピクチャに関連するPOCは、0に設定される。従って、電子デバイス204は、指定ピクチャに基づいて、POCシーケンスをリセットすることができる。例えば、他のピクチャに関するPOCは、図6に示されるように、参照ピクチャ603aに関連するPOCに基づいて番号付けされる。
電子デバイス204は、指定ピクチャに基づいて、サイクルパラメータ(例えば、poc_cycle)を決定する(ステップ810)。例えば、指定ピクチャを含むピクチャセットに関連するサイクルパラメータは、0にセットまたはリセットされる。他のピクチャセットに関するサイクルパラメータは、指定ピクチャ(例えば、IDRピクチャ)を含むピクチャセットに基づいて決定される(例えば、算出される)。この一例が図7に示され、同図に関連して説明される。
POCおよびサイクルパラメータ(例えば、poc_cycle)が、指定ピクチャに基づいて決定されたときに、必要に応じて、復号された参照ピクチャのPOCおよびサイクルパラメータが更新される。これは、復号ピクチャバッファ(DPB)における復号された参照ピクチャの追跡を可能にする。かくして、復号された参照ピクチャを指定ピクチャ(例えば、IDRピクチャ)に基づいて追跡することができる。
電子デバイス204は、DPBから復号された参照ピクチャを取得する(ステップ812)。例えば、電子デバイス204は、指定ピクチャに基づいたPOCおよびサイクルパラメータ(例えば、poc_cycle)に従って、DPBから復号された参照ピクチャを読み出すことができる。
電子デバイス204は、復号された参照ピクチャに基づいてピクチャを復号する(ステップ814)。これは、図3に関連して上述されたのと同様に生じる。留意すべきは、1つ以上の復号された参照ピクチャからなるセットが、方法800に従って追跡されることである。
図9は、指定ピクチャに基づいて、削減されたオーバーヘッドの参照により、参照ピクチャを追跡するための方法900の別の構成を示すフローダイアグラムである。前述のように、電子デバイス204は、ビットストリームを受信する(ステップ902)。電子デバイス204は、参照ピクチャ群を生成するために、ビットストリームの1つ以上の部分を復号する(ステップ904)こともできる。復号参照ピクチャ群は、1つ以上の復号された参照ピクチャを含む。
電子デバイス204は、指定ピクチャに基づいて、削減されたオーバーヘッドの参照により、復号ピクチャバッファ(DPB)における復号参照ピクチャ群を追跡する(ステップ906)。これは、図8に関連して上述されたように行われる。復号参照ピクチャ群における2つ以上の復号された参照ピクチャは、上記のように、同じか、または異なる時間インスタンス(例えば、同様の時間インスタンス)を参照してもよい。
電子デバイス204は、復号参照ピクチャ群における(ピクチャを復号するための)復号されたピクチャの解像度が、現ピクチャの解像度と異なるかどうかを随意的に判定する(ステップ908)。解像度が2つのピクチャ間で異なれば、電子デバイス204は、ピクチャを復号するためのスケーリングパラメータに基づいて、復号された参照ピクチャの変換係数を処理する(ステップ910)。スケーリングパラメータおよび解像度の切り替えに関するさらに詳細な説明は、表(2)に関連して上記に示される。スケーリングパラメータは、明示的にスケーリングパラメータを受信することによって、あるいは(例えば、ルックアップテーブル、ピクチャ解像度特性などを用いて)暗黙的にスケーリングパラメータを決定することによって決定されることに留意すべきである。
解像度が同じであるか異なるかに関わらず、電子デバイス204は、復号参照ピクチャ群(例えば、復号参照ピクチャ群における復号された参照ピクチャ)に基づいて、ピクチャを復号する(ステップ912)。
図10は、指定ピクチャに基づいて、削減されたオーバーヘッドの参照により、参照ピクチャを追跡するための方法1000の別の構成を示すフローダイアグラムである。電子デバイス204は、ビットストリームを受信して(ステップ1002)、復号された参照ピクチャを生成するためにビットストリームの一部分を復号する(ステップ1004)。電子デバイス204は、指定ピクチャに基づいて、削減されたオーバーヘッドの参照により、復号ピクチャバッファ(DPB)における復号された参照ピクチャを追跡する(ステップ1006)。これは、上記のように行われる。
電子デバイス204は、バッファ記述も取得する(ステップ1008)。バッファ記述のいくつかの例は、上記に詳述される。例として、上掲の表(1)および表(2)は、様々なバッファ記述の例を含む。バッファ記述は、エンコーダからのパラメータピクチャセット(PPS)の部分としてデコーダによって受信される。然るべきバッファ記述へのインデックスも、スライスヘッダの一部としてデコーダによって受信される。バッファ記述が一旦取得される(ステップ1008)と、電子デバイス204は、バッファ記述を修正すべきかどうかを判定する(ステップ1010)。バッファ記述がなにも修正を必要としなければ、電子デバイス204は、復号された参照ピクチャに基づいてピクチャを復号する(ステップ1014)。しかしながら、バッファ記述が修正を必要とすれば、電子デバイス204は、1つ以上のエントリを修正する(ステップ1012)。修正(ステップ1012)の例は、エントリを削除すること、エントリを追加すること、またはエントリを置き換えることを含む。エントリの削除、追加、または置き換えのさらに詳細な説明は、リスティング(4)の説明に関連して上に記載されている。修正(ステップ1012)が一旦完了すると、電子デバイス204は、復号された参照ピクチャに基づいてピクチャを復号する(ステップ1014)。
図11は、本明細書に開示されるシステムおよび方法に従って、ラップ・インジケータをシグナリングする一例を示すダイアグラムである。この例では、いくつかのピクチャ1101a〜n、1103aが示される。POC=0を持つ第1のピクチャ1101aは、図11に示される残りのピクチャ1101b〜n、1103aのための参照ピクチャである。特に、図11は、参照ピクチャ1101aと他のピクチャ1101b〜n、1103aとの間の関連または対応1109を示す。例えば、POC=0を持つピクチャ1101aは、他のピクチャ1101b〜n、1103aを復号するためにDPBに維持すべき長期参照ピクチャ1101aである。
図11に示されるように、POC番号0からMaxPOC−1、および再使用された0は、それぞれピクチャ1101a〜n、1103aに対応する。ピクチャ1101a〜nの第1のセットは、POC番号0からMaxPOC−1に対応する。上記のように、(POC番号0からMaxPOC−1を持つ)各ピクチャセットが1つのサイクルパラメータ(例えば、poc_cycle)に対応する。
一構成において、ラップ・インジケータは、1つのピクチャセットと時間的に後の後続ピクチャセットとの間の第1の遷移においてシグナリングされ(ステップ1133)。例えば、POC番号付けが1つの[0,・・・,MaxPOC−1]セットから次へ初めて遷移するときに、ラップ・インジケータがシグナリングされる(ステップ1133)。いくつかの構成において、シグナリングされるラップ・インジケータは、“poc_wraparound”と示された保護メッセージである。本明細書では、「シグナリングされる(signaled)」は、エンコーダとデコーダとの間で通信が行われることを意味する。いくつかの構成において、「シグナリングされる(signaled)」は、異なる電子デバイス間で通信が行われることも意味する。
保護メッセージは、損失ピクチャの検出のような、所望の機能性を維持するために、電子デバイス204が受信しなければならないメッセージである。メッセージを保護メッセージとして送信するための1つのメカニズムは、他の情報メッセージと比較したときに、より高い優先度を保護メッセージに割り当てることである。インテリジェントデバイス(例えば、ネットワーク輻輳制御エージェント)は、そのときに、この優先度割り当てを調べて、利用可能なネットワーク帯域幅のような制約条件を満たすために、優先度が低い方のメッセージを落とすことができる。
いくつかの構成において、ラップ・インジケータ(例えば、poc_wraparound)メッセージは、ピクチャパラメータセット(PPS)、スライスヘッダ、適応パラメータセット(APS)またはビットストリームにおける任意の適切な位置でシグナリングされる。加えて、または代わりに、ラップ・インジケータは、境界外で(例えば、ピクチャ・ビットストリームとは別に)シグナリングされる。ラップ・インジケータ(例えば、poc_wraparoundメッセージ)がデコーダ102で受信されるたびに、DPBにおけるすべてのピクチャ(例えば、すべてのピクチャセット)に関するサイクルパラメータ(例えば、poc_cycle)が、(例えば、1つ)デクリメントされる。
図12は、本明細書に開示されるシステムおよび方法に従って、ラップ・インジケータ1133をシグナリングする一例を示すダイアグラムである。この例では、いくつかのピクチャ1137a〜n、1139a〜n、1141a〜n、1143a〜n、1145a〜n、およびピクチャセット1107a〜eが示される。特に、図12は、対応する現フレームおよびラップ・インジケータのタイミング1149とともに参照バッファ状態1135を経時的に示す。
この例では、poc_cycle=0を持つピクチャセットB1107bにおけるピクチャB01139aが、第1の時刻における現ピクチャまたはフレームであると仮定する。遷移A1147aが生じるときに、ラップ・インジケータがシグナリングされる(ステップ1133a)。第2の時刻では、ピクチャセットC1107cにおけるピクチャC01141aが、現ピクチャまたはフレームである。ピクチャC01141aは、(例えば、ピクチャセットD1107dおよびピクチャセットE1107eにおける)すべての後続ピクチャのための参照ピクチャであると仮定する。例として、ピクチャC01141aは、後続ピクチャ1141b〜n、1143a〜n、1145a〜nを復号するためにDPBに維持すべき長期参照ピクチャである。遷移B1147bが生じるときに、別のラップ・インジケータがシグナリングされる(1133b)。図示されるように、poc_cycleパラメータは、ラップ・インジケータのシグナリング1133の際に更新される。この手順は、本明細書に開示されたシステムおよび方法に従って、参照ピクチャを追跡するために用いることができる。そのうえ、留意すべきは、POCおよびpoc_cycleが、本明細書に記載されるように、復号された参照ピクチャに基づいてリセットまたは再スタートされることである。
図12に示されるように、POC番号0からMaxPOC−1は、ピクチャ1137a〜n、1139a〜n、1141a〜n、1143a〜n、1145a〜nに繰り返して対応する。上記のように、(POC番号0からMaxPOC−1を持つ)各ピクチャセット1107a〜eが、サイクルパラメータ(例えば、poc_cycle)に対応する。
一構成において、ラップ・インジケータは、現ピクチャセット(例えば、ピクチャセットB1107b)と時間的に後の後続ピクチャセット(例えば、ピクチャセットC1107c)との間の第1の遷移1147aにおいてシグナリングされる(ステップ1133a)。例えば、POC番号付けが1つの[0,・・・,MaxPOC−1]セットから次へ初めて遷移するときに、ラップ・インジケータがシグナリングされる(ステップ1133)。いくつかの構成において、ラップ・インジケータは、POC番号付けが1つの[0,・・・,MaxPOC−1]セットから他へ遷移するときに、シグナリングされる(ステップ1133)。代わりに、ラップ・インジケータは、poc_cycle番号付けが次の[0,・・・,MaxPOC−1]ピクチャセットのために初めて遷移するときに、シグナリングされる(ステップ1133)。いくつかの構成において、ラップ・インジケータは、poc_cycle番号付けが次の[0,・・・,MaxPOC−1]ピクチャセットのために遷移するときに、シグナリングされる(ステップ1133)。いくつかの構成において、シグナリングされるラップ・インジケータは、“poc_wraparound”と示される保護メッセージである。本明細書では、「シグナリングされる(signaled)」は、エンコーダとデコーダとの間で通信が行われることを意味する。いくつかの構成において、「シグナリングされる(signaled)」は、異なる電子デバイス間で通信が行われることも意味する。
保護メッセージは、損失ピクチャの検出のような、所望の機能性を維持するために、電子デバイス204が受信しなければならないメッセージである。メッセージを保護メッセージとして送信するための1つのメカニズムは、他の情報メッセージと比較したときに、より高い優先度を保護メッセージに割り当てることである。インテリジェントデバイス(例えば、ネットワーク輻輳制御エージェント)は、そのときに、この優先度割り当てを調べて、利用可能なネットワーク帯域幅のような制約条件を満たすために、優先度が低い方のメッセージを落とすことができる。
いくつかの構成において、ラップ・インジケータ(例えば、poc_wraparound)メッセージは、ピクチャパラメータセット(PPS)、スライスヘッダ、適応パラメータセット(APS)またはビットストリームにおける任意の適切な位置でシグナリングされる。加えて、または代わりに、ラップ・インジケータは、境界外で(例えば、ピクチャ・ビットストリームとは別に)シグナリングされる。ラップ・インジケータ(例えば、poc_wraparoundメッセージ)がデコーダ102によって受信されるたびに、DPBにおけるすべてのピクチャ(例えば、すべてのピクチャセット)に関するサイクルパラメータ(例えば、poc_cycle)が(例えば、1つ)デクリメントされる。
次のリスティング(5)は、ピクチャパラメータセットでラップ・インジケータをシグナリングするために必要とされるビットストリーム・シンタックス修正の例を示す。
1に等しいwrap_indicator_flagは、POC番号付けが1つの[0,・・・,MaxPOC−1]ピクチャセットから次へ初めて遷移したことを指定する。0に等しいwrap_indicator_flagは、別様に指定する。いくつかの構成において、1に等しいwrap_indicator_flagは、1つの[0,・・・,MaxPOC−1]ピクチャセットから他へのPOC番号付け遷移であることを指示する。0に等しいwrap_indicator_flagは、別様に指定する。
いくつかの構成において、1に等しいwrap_indicator_flagは、poc_cycleが次の[0,・・・,MaxPOC−1]ピクチャセットのために初めて遷移したことを指定する。0に等しいwrap_indicator_flagは、別様に指定する。POC番号付け遷移が1つの[0,・・・,MaxPOC−1]ピクチャセットから他への遷移であることを指示する。
いくつかの構成において、1に等しいwrap_indicator_flagは、poc_cycleが1つの[0,・・・,MaxPOC−1]ピクチャセットから他へ遷移したことを指定する。0に等しいwrap_indicator_flagは、別様に指定する。
いくつかの構成において、wrap_indicator_flagは、追加の情報、例えば、遷移の方向を識別するために1つより多いビットを用いる。別の構成において、wrap_indicator_flagは、エントロピー符号化を用いて可変長符号化された符号なし整数としてシグナリングされる。別の構成において、wrap_indicator_flagは、エントロピー符号化を用いて可変長符号化された符号付き整数である。
seq_parameter_set_idは、ピクチャパラメータセットによって参照されるシーケンス・パラメータセットを識別する。seq_parameter_set_idの値は、両端値を含めて、0から31までの範囲内にあるものとする。
pic_parameter_set_idは、スライスヘッダにおいて参照されるピクチャパラメータセットを識別する。pic_parameter_set_idの値は、両端値を含めて、0から255までの範囲内にあるものとする。entropy_coding_mode_flagは、シンタックス要素に適用されるべきエントロピー復号法を選択する。
num_temporal_layer_switching_point_flagは、いくつの時間切り替えポイントフラグが存在するかを指定する。temporal_id_nesting_flagが1に等しければ、num_temporal_layer_switching_point_flagは、0に等しいものとする。temporal_layer_switching_point_flag[i]は、現アクセスポイントが、このアクセスユニットに続くより高位の時間的idレイヤの復号を可能にする、時間切り替えポイントであるかどうかを指定する。temporal_id_nesting_flagが1に等しければ、temporal_layer_switching_point_flag[i]は、1に等しいと推定するものとする。temporal_id_nesting_flagが0に等しく、かつnum_temporal_layer_switching_point_flagがi未満であれば、temporal_layer_switching_point_flag[i]は、0に等しいと推定するものとする。より高位の時間的レイヤiを復号し始めるときには、必要とされる参照ピクチャの利用可能性が、IDR、またはiより低いtemporal_id値jおよび1に等しいtemporal_switching_flag[j]を持つピクチャの直後に保証されることに留意すべきである。
num_ref_idx_l0_default_active_minus1は、0に等しいnum_ref_idx_active_override_flagを持つPおよびBスライスに関して、num_ref_idx_l0_active_minus1がいかに推定されるかを指定する。num_ref_idx_l0_default_active_minus1の値は、両端値を含めて、0から31までの範囲内にあるものとする。
num_ref_idx_l1_default_active_minus1は、0に等しいnum_ref_idx_active_override_flagを持つBスライスに関して、num_ref_idx_l1_active_minus1がいかに推定されるかを指定する。num_ref_idx_l1_default_active_minus1の値は、両端値を含めて、0から31までの範囲内にあるものとする。
pic_init_qp_minus26は、スライス毎にSliceQPYの初期値マイナス26を指定する。初期値は、非ゼロのslice_qp_delta値が復号されたときにスライスレイヤで修正され、非ゼロのcu_qp_delta値が符号化ユニットレイヤで復号されたときにさらに修正される。pic_init_qp_minus26の値は、両端値を含めて、−(26+QpBdOffsetY)から+25までの範囲内にあるものとする。
0に等しいconstrained_intra_pred_flagは、マクロブロック内予測モードを用いて符号化されたマクロブロックの予測のために、イントラ予測が、残差データおよびマクロブロック間予測モードを用いて符号化された隣接マクロブロックの復号サンプルの利用を許可することを指定する。1に等しいconstrained_intra_pred_flagは、制約されたイントラ予測を指定し、その場合、マクロブロック内予測モードを用いて符号化されたマクロブロックの予測は、残差データおよびIマクロブロック・タイプからの復号サンプルのみを用いる。
slice_granularityは、ピクチャ内のスライス粒度を指示する。slice_granularityの値は、Min(Log2MaxCUSize−4,log2_diff_max_min_coding_block_size)以下とする。変数SliceGranularityは、(slice_granularity<<1)の値に設定される。
shared_pps_info_enabled_flagは、ピクチャパラメータセットRBSPにおける共有情報が、参照されるスライスに用いられることを指定する。shared_pps_info_enabled_flagが1に等しければ、ピクチャパラメータセットRBSPにおけるalf_param()が、参照されるスライスに適用されるものとする。そうでない場合は、スライスヘッダ(単数または複数)におけるalf_param()が適用されるものとする。
max_cu_qp_delta_depthは、符号化ユニットに関するQPY値を指定するために用いられる最大許容深さを指定する。max_cu_qp_delta_depthの値は、両端値を含めて、0から15までの範囲内にあるものとする。
変数Log2MinCUDQPSizeは、最小符号化ユニットサイズを指定し、QPYの値を次のようにさらに修正することができる。log2MinCUDQPSize=Log2MaxCUSize−max_cu_qp_delta_depth。alf_param()は、適応ループフィルタ・パラメータシンタックスを決定する関数である。rbsp_trailing_bits()は、(1に等しい)停止ビット、およびバイトアラインメントが達成されるまでそれに続くゼロビットに対応する関数である。
次のリスティング(6)は、ラップ・インジケータをスライスヘッダでシグナリングするために必要とされるビットストリーム・シンタックス修正の例を示す。
1に等しいlightweight_slice_flagは、存在しないスライスヘッダ・シンタックス要素の値が、進行スライスにおけるスライスヘッダ・シンタックス要素の値に等しいと推定されることを指定する。0に等しいlightweight_slice_flagは、スライスヘッダ・シンタックス要素値が、現スライスヘッダで送信されることを指定する。slice_typeは、スライスP、BまたはIの符号化タイプを指定する。
idr_pic_idは、瞬時復号リフレッシュ(IDR)ピクチャを識別する。IDRピクチャのすべてのスライスにおけるidr_pic_idの値は、変更されないままであるものとする。復号順に2つ連続したアクセスユニットがいずれもIDRアクセスユニットであるとき、第1のかかるIDRアクセスユニットのスライスにおけるidr_pic_idの値は、第2のかかるIDRアクセスユニットにおけるidr_pic_idとは異なるものとする。idr_pic_idの値は、両端値を含めて、0から65535までの範囲内にあるものとする。
pic_order_cntは、符号化されたピクチャのピクチャオーダーカウントを指定し、バッファ記述適用処理および参照ピクチャリスト作成処理における識別子として用いられる。pic_order_cntシンタックス要素は、log2_max_pic_order_cnt_minus4+4ビットで表されるものとする。pic_order_cntの値は、両端値を含めて、0からMaxPOC−1までの範囲内にあるものとする。
1に等しいnum_ref_idx_active_override_flagは、シンタックス要素num_ref_idx_l0_active_minus1がPおよびBスライスに関して存在すること、およびシンタックス要素num_ref_idx_l1_active_minus1がBスライスに関して存在することを指定する。0に等しいnum_ref_idx_active_override_flagは、シンタックス要素num_ref_idx_l0_active_minus1およびnum_ref_idx_l1_active_minus1が存在しないことを指定する。
現スライスがPまたはBスライスであり、field_pic_flagが0に等しく、ピクチャパラメータセットにおけるnum_ref_idx_l0_default_active_minus1の値が15を超えるとき、num_ref_idx_active_override_flagは、1に等しいものとする。現スライスがBスライスであり、field_pic_flagが0に等しく、ピクチャパラメータセットにおけるnum_ref_idx_l1_default_active_minus1の値が15を超えるとき、num_ref_idx_active_override_flagは、1に等しいものとする。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の範囲は、次のように指定される。field_pic_flagが0に等しければ、num_ref_idx_l0_active_minus1は、両端値を含めて、0から15までの範囲内にあるものとする。MbaffFrameFlagが1に等しいとき、num_ref_idx_l0_active_minus1は、フレーム・マクロブロックの復号に関する最大インデックス値であり、2*num_ref_idx_l0_active_minus1+1は、フィールド・マクロブロックの復号に関する最大インデックス値である。そうでない場合は、(field_pic_flagが1に等しいとき)、num_ref_idx_l0_active_minus1は、両端値を含めて、0から31までの範囲内にあるものとする。
num_ref_idx_l1_active_minus1は、スライスを復号するために用いるものとする参照ピクチャリスト1に関する最大参照インデックスを指定する。現スライスが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の範囲は、num_ref_idx_l0_active_minus1のl0およびリスト0をそれぞれl1およびリスト1で置き換えたセマンティクスで指定されるように制約される。
no_output_of_prior_pics_flagは、復号ピクチャバッファにおける前に復号されたピクチャが、IDRピクチャの復号後にいかに処理されるかを指定する。IDRピクチャが、ビットストリームにおける第1のIDRピクチャであるとき、no_output_of_prior_pics_flagの値は、復号処理になにも影響を与えない。IDRピクチャが、ビットストリームにおける第1のIDRピクチャではなく、アクティブシーケンス・パラメータセットから導出されるPicWidthInMbs、FrameHeightInMbs、またはmax_dec_frame_bufferingの値が、先行ピクチャに関してアクティブなシーケンス・パラメータセットから導出されるPicWidthInMbs、FrameHeightInMbs、またはmax_dec_frame_bufferingの値と異なるときには、no_output_of_prior_pics_flagの実際値に関わらず、1に等しいno_output_of_prior_pics_flagがデコーダによって推定(されるべきではないが)される。
cabac_init_idcは、コンテキスト変数に関する初期化処理に用いられる初期化表を決定するためのインデックスを指定する。cabac_init_idcの値は、両端値を含めて、0から2までの範囲内にあるものとする。
first_slice_in_pic_flagは、スライスが、ピクチャの第1のスライスであるかどうかを指示する。first_slice_in_pic_flagが1に等しければ、変数SliceAddressおよびLCUAddressは、いずれも0に設定され、復号は、ピクチャにおける第1の最大符号化ユニット(LCU:largest coding unit)で開始する。
slice_addressは、スライスが開始するアドレスをスライス粒度解像度で指定し、ビットストリームにおける(Ceil(Log2(NumLCUsInPicture))+SliceGranularity)ビットによって表すものとする。ここで、NumLCUsInPictureは、ピクチャにおけるLCUの数である。変数LCUAddressは、(slice_address>>SliceGranularity)に設定され、ラスタスキャン順にスライスアドレスのLCU部分を表す。変数GranularityAddressは、(slice_address−(LCUAddress<<SliceGranularity))に設定され、Zスキャン順に表現されたスライスアドレスのサブLCU部分を表す。変数SliceAddressは、次に(LCUAddress<<(log2_diff_max_min_coding_block_size<<1))+(GranularityAddress<<((log2_diff_max_min_coding_block_size<<1)−SliceGranularity))に設定され、スライス復号は、スライス開始座標において可能な最大符号化ユニットで開始する。
slice_qp_deltaは、符号化ユニットレイヤでcu_qp_deltaの値によって修正されるまで、スライスにおけるすべてのマクロブロックに用いるべき輝度量子化パラメータQPYの初期値を指定する。スライスに関する初期QPY量子化パラメータは、SliceQPY=26+pic_init_qp_minus26+slice_qp_deltaとして計算される。slice_qp_deltaの値は、SliceQPYが、両端値を含めて、−QpBdOffsetYから+51までの範囲内にあるように制限されるものとする。“QpBdOffsetY=6*bit_depth_luma_minus8”は、輝度量子化パラメータ範囲オフセットの値を指定する。“bit_depth_luma_minus8+8”は、輝度アレイ・サンプルのビット深度を指定する。pic_init_qp_minus26は、スライス毎にSliceQPYの初期値マイナス26を指定する。
1に等しいcollocated_from_l0_flagは、コロケートパーティションを含むピクチャがリスト0から導出され、そうでない場合はピクチャがリスト1から導出されることを指定する。ref_pic_list_modification()は、参照ピクチャリスト修正のシンタックスを識別する関数である。ref_pic_list_combination()は、参照ピクチャリスト組み合わせのシンタックスを識別する関数である。alf_cu_control_param()は、適応ループフィルタ符号化ユニット制御パラメータのシンタックスを識別する関数である。sao_param()は、サンプル適応オフセットパラメータのシンタックスを識別する関数である。
1に等しいdisable_deblocking_filter_idcは、あるブロックエッジへのデブロッキングフィルタの適用を無効にする。0に等しいdisable_deblocking_filter_idcは、あるブロックエッジへのデブロッキングフィルタの適用を有効にする。デブロッキング処理は、シンタックス要素slice_alpha_c0_offset_div2およびslice_beta_offset_div2の値を用いて制御される。
次のリスティング(7)は、適応パラメータセット(APS)でラップ・インジケータをシグナリングするために必要とされるビットストリーム・シンタックス修正の例を示す。
aps_idは、スライスヘッダで参照される適応パラメータセットを識別する。1に等しいaps_sample_adaptive_offset_flagは、SAOが、現APSに参照されるスライスに関してオンであることを指定する。0に等しいとき、aps_sample_adaptive_offset_flagは、SAOが、現APSに参照されるスライスに関してオフであることを指定する。アクティブなAPSがなにもなければ、aps_sample_adaptive_offset_flag値は、0であると推定される。
1に等しいaps_adaptive_loop_filter_flagは、ALFが、現APSに参照されるスライスに関してオンであることを指定する。0に等しいとき、aps_adaptive_loop_filter_flagは、ALFが、現APSに参照されるスライスに関してオフであることを指定する。アクティブなAPSがなにもなければ、aps_adaptive_loop_filter_flag値は、0であると推定される。
1に等しいaps_cabac_use_flagは、sao_param()が存在するときには、CABAC復号処理がsao_param()に用いられ、alf_param()が存在するときには、alf_param()に用いられることを指定する。0に等しいときには、aps_cabac_use_flagは、sao_param()が存在するときには、CAVLC復号処理がsao_param()に用いられ、alf_paramが存在するときには、alf_param()に用いられることを指定する。
aps_cabac_init_idcは、SAOおよびALFのコンテキスト変数に関する初期化処理に用いられる初期化表を決定するためのインデックスを指定する。cabac_init_idcの値は、両端値を含めて、0から2までの範囲内にあるものとする。aps_cabac_ini_qp_minus26は、量子化パラメータマイナス26を指定し、この量子化パラメータは、SAOおよびALFのコンテキスト変数に関する初期化処理に用いられる。alf_data_byte_countは、バイト数を指定する。sao_data_byte_pointは、バイト数を指定する。byte_align()は、アラインメントに達するまで0から7ビットを挿入する。
いくつかの構成において、ピクチャパラメータセットは、長期ピクチャのみに対応する複数のバッファ記述を含む。次のリスティング(8)は、長期ピクチャのみに対応する複数のバッファ記述をシグナリングするためのビットストリーム・シンタックス修正の例を示す。
1に等しいlongterm_pictures_only_flag_pps[i]は、i番目のバッファ記述が、長期ピクチャ参照のみを含むことを指示する。0に等しいlongterm_pictures_only_flag_pps[i]は、i番目のバッファ記述が、deltaPOCも長期ピクチャ参照も含むことを指示する。
いくつかの構成において、バッファ記述は、参照に利用できないピクチャを参照する。参照に利用できないピクチャは、現ピクチャより前に復号されなかったピクチャを指す。加えて、参照に利用できないピクチャは、現ピクチャより前に復号されたが、もはや参照に利用できないと識別されたピクチャを指す。ピクチャがもはや参照に利用できないと識別するための手順の一例は、IDRフレームの使用による。IDRフレームは、IDRフレームおよびその後に受信されたすべてのピクチャが、IDRフレームを受信する前に受信されたピクチャを参照しないことを示す。かくして、IDRフレームより前に受信されたすべてのフレームは、IDRフレームおよびその後に受信されたフレームの参照にもはや利用できない。
バッファ記述が参照に利用できないピクチャを参照する構成では、デコーダが、現フレームを復号するために用いられる情報を予測するときに、参照に利用できないピクチャの使用を許可しない。一構成において、これは、参照フレームのセットを作成する処理にこのフレームを含めないことによって行われる。従って、参照フレームのセットを作成する処理の出力は、バッファ記述が参照に利用できないピクチャを参照する場合、バッファ記述が参照に利用できないピクチャを参照しない場合、および両方のバッファ記述によって他のピクチャが参照される場合に同じである。別の構成では、参照に利用できないピクチャが、参照フレームのセットを作成する処理に含まれる。従って、参照フレームのセットを作成する処理の出力は、バッファ記述が参照に利用できないピクチャを参照する場合と、バッファ記述が参照に利用できないピクチャを参照しない場合とでは同じでない。この構成では、デコーダが、現フレームを復号するために用いられる情報を予測するときに、参照に利用できないピクチャを選択することを許可しない。
いくつかの構成において、PPSに定義されるi番目の参照ピクチャリスト:POCBD_pps[i]、temporalIDBD_pps[i]、POC_CYCLE_BD_pps[i]、ならびにリストPOCBD、temporalIDBDおよびPOC_CYCLE_BDは、参照ピクチャが、表示順に、(復号されている)現ピクチャに対して過去のピクチャか、または将来のピクチャであるかに基づいて分割される。留意すべきは、iが0からnumber_of_bds−1までの値を取ることである。
いくつかの構成において、時間識別子は、対応する参照ピクチャが(復号されている)現ピクチャによって用いられるかどうかをシグナリングまたは指示するフラグで置き換えられる。結果として、temporalIDリストtemporalIDBBD、およびPPS temporalIDBD_pps[i]におけるi番目のtemporalIDリストは、上記フラグを含んだリストusedByCurPicBDおよびusedByCurPicBD_pps[i]によってそれぞれ置き換えられる。いくつかの構成において、フラグの値は、PPSにおいて定義されたi番目の参照ピクチャリスト:POCBD_pps[i]、usedByCurPicBD_pps[i]、POC_CYCLE_BD_pps[i]、ならびにリストPOCBD、usedByCurPicBD、POC_CYCLE_BDを1つ以上のリストに分割するために用いられる。一構成において、フラグについてゼロ値を持つエントリは、1つのリストに割り当てられ、非ゼロ値(例えば、1)を持つエントリは、別のリストに割り当てられる。留意すべきは、iが0からnumber_of_bds−1までの値を取ることである。
リスティング(9)は、PPSに関するシンタックスのAHG21からの修正の別の例を示す。特に、リスティング(9)は、AHG21作業草案に概説されるような、スライスヘッダに用いられるバッファ記述シンタックスの別の例を示す。但し、本明細書に開示されるシステムおよび方法による、AHG21作業草案に示されるシンタックスへの修正は、リスティング(9)に太字テキストで示される。
リスティング(9)は、リスティング(4)と同様の多く要素を含む。リスティング(9)は、参照ピクチャの選択的な置き換えを可能にするためのスライスヘッダのシンタックス修正も含む。
bd_poc_cycle_replace_countは、リストPOCBD_pps[bd_idx]、POC_CYCLE_BD_pps[bd_idx]およびtemporalIDBD_pps[bd_idx]において選択的に置き換えられるべきエントリの数を指定する。いくつかの構成において、bd_poc_cycle_replace_countは、0以上である。bd_pps_replace_idx[j]は、リスト:POCBD_pps[bd_idx]、POC_CYCLE_BD_pps[bd_idx]およびtemporalIDBD_pps[bd_idx]において置き換えられるべきエントリのインデックスを識別する。
参照されるバッファ記述のPOC_CYCLE_BD_pps[bd_idx][bd_pps_replace_idx[j]]は、現ピクチャに関して置き換えられるべきである。いくつかの構成において、将来のフレームもpoc_cycle情報をオーバーライドすることができる。poc_cycle_pps_replace[j]は、現ピクチャに関してのみ、POC_CYCLE_BD_pps[bd_idx][bd_pps_replace_idx[j]]内の値を置き換えるために用いるべき値を指定する。
poc_pps_replace[j]は、現ピクチャに関してのみ、POCBD_pps[bd_idx][bd_pps_replace_idx[j]]内の値を置き換えるために用いるべき値を指定する。temporal_id_pps_replace[j]は、現ピクチャに関してのみ、TemporalIDBD_pps[bd_idx][bd_pps_replace_idx[j]]内の値を置き換えるために用いるべき値を指定する。
いくつかの構成において、PPSで定義されたi番目の参照ピクチャリスト:POCBD_pps[i]、usedByCurPicBD_pps[i]、POC_CYCLE_BD_pps[i]を分割した場合、分割リストを用いて発生させた導出リストに対して、選択的な置き換え、オーバーライド、削除および添付操作が最初に実行される。操作のすべてまたはサブセットが完了した後に、導出リストにおけるエントリは、導出リストを導出した元のリストの分割に戻される(例えば、復元される)。留意すべきは、iが0からnumber_of_bds−1までの値を取ることである。
いくつかの構成において、選択的な置き換え、オーバーライド、削除および添付操作は、PPSにおけるバッファ記述に属するリストセット(例えば、(負のdeltaPOCリスト、負のdeltaPOC usedByCurPicBDリスト)セット、(正のdeltaPOCリスト、正のdeltaPOC usedByCurPicBDリスト)セット、および(pocリスト、poc_cycleリスト、pocおよびpoc_cycle usedByCurPicBDリスト)セット)毎に別々にシグナリングされる。別の構成では、スケーリングパラメータリストが、各リストセット内に存在する。
いくつかの構成において、ビットストリームが第1の解像度を持つ第1のピクチャおよび第2の解像度を持つ第2のピクチャを含み、第1の解像度と第2の解像度とが等しくなく、かつ第2のピクチャがIDRピクチャではないか、またはシーケンス・パラメータセット(SPS)が第1のピクチャより後かつ第2のピクチャより前に受信されない場合、復号ピクチャバッファは、異なる解像度を有するピクチャを含む。エンコーダは、そのときに、参照ピクチャが次のオプション:
(a)第1の解像度、
(b)第2の解像度、または
(c)第1および第2の両方の解像度
のうちの1つを備えるように復号ピクチャバッファ(DPB)における参照ピクチャが修正されることをデコーダにシグナリングする。
いくつかのユースケース例が次のように示される。オプション(a)が有用なのは、参照ピクチャが、低い方の解像度での動き予測にのみ用いられることになる場合である。オプション(a)の例は、図17に説明される第1の例1653aとして示される。
オプション(b)が有用なのは、ビットストリームが第2のピクチャに続く第3のピクチャを含み、第3のピクチャが第1の解像度にあり、DPBに記憶された長期ピクチャが、動き予測に用いられるときである。オプション(b)の例は、図17に説明される第2の例1653bとして示される。
オプション(c)が有用なのは、参照ピクチャの低い方の解像度版が、低い方の解像度のピクチャに関する動き予測に用いられるときである。加えて、第2のピクチャに続く第3のピクチャを復号するときに、第3のピクチャが第1の解像度にあり、参照ピクチャの高い方の解像度版が、動き予測に用いられるときである。オプション(c)の例は、図17に第3の例1653cとして示される。
解像度の切り替えは、次のリスティング(10)に示されるように、シンタックス修正を用いてシグナリングされる。本明細書に記載されるシステムおよび方法による修正は、以下に太字テキストで示される。
adaptive_res_coding_flagが0に等しければ、シーケンスは、解像度の切り替えを受けない。adaptive_res_coding_flagが1に等しければ、シーケンスは、解像度の切り替えを受ける。
refPicS0Height[i]およびrefPicS0Width[i]は、負のdeltaPOCに対応するi番目の参照ピクチャの元の高さおよび幅を表す。refPicS1Height[i]およびrefPicS1Width[i]は、正のdeltaPOCに対応するi番目の参照ピクチャの元の高さおよび幅を表す。curPicHeightおよびcurPicWidthは、復号されている現ピクチャの高さおよび幅を表す。
num_negative_picsは、以下のdelta_poc_s0_minus1[i]およびused_by_curr_pic_s0_flag[i]シンタックス要素の数を指定する。num_positive_picsは、以下のdelta_poc_s1_minus1[i]およびused_by_curr_pic_s1_flag1[i]シンタックス要素の数を指定する。
delta_poc_s0_minus1[i]プラス1は、2つのピクチャオーダーカウント値の間の絶対差を指定する。delta_poc_s0_minus1[i]の値は、両端値を含めて、0から215−1までの範囲内にあるものとする。delta_poc_s0_minus1[i]は、負のdeltaPOC値に対応する。
0に等しいused_by_curr_pic_s0_flag[i]は、現ピクチャより小さいピクチャオーダーカウントを有するi番目の参照ピクチャが、現ピクチャによる参照のために用いられないことを指定する。delta_poc_s1_minus1[i]プラス1は、2つのピクチャオーダーカウント値の間の絶対差を指定する。delta_poc_s1_minus1[i]の値は、両端値を含めて、0から215−1までの範囲内にあるものとする。delta_poc_s1_minus1[i]は、正のdeltaPOC値に対応する。
0に等しいused_by_curr_pic_s1_flag[i]は、現ピクチャより大きいピクチャオーダーカウントを有するi番目の参照ピクチャが、現ピクチャによる参照のために用いられないことを指定する。
0に等しいused_by_curr_pic_longterm_flag[i]は、i番目の長期参照ピクチャが、現ピクチャによる参照のために用いられないことを指定する。
0に等しいref_pic_s0_resolution_idx[i]は、参照ピクチャの解像度を復号されている現ピクチャの解像度と一致するように、参照ピクチャがスケーリングされることを指定する。1に等しいref_pic_s0_resolution_idx[i]は、参照ピクチャが、参照ピクチャの元の解像度に維持されることを指定する。2に等しいref_pic_s0_resolution_idx[i]は、参照ピクチャの解像度が、その元の解像度と現ピクチャの解像度との両方で保持されることを指定する。ref_pic_s0_resolution_idx[i]は、存在しないときに0であると推定される。
0に等しいref_pic_s1_resolution_idx[i]は、参照ピクチャの解像度を復号されている現ピクチャの解像度と一致させるように、参照ピクチャがスケーリングされることを指定する。1に等しいref_pic_s1_resolution_idx[i]は、参照ピクチャが、参照ピクチャの元の解像度に維持されることを指定する。2に等しいref_pic_s1_resolution_idx[i]は、参照ピクチャの解像度が、その元の解像度と現ピクチャの解像度との両方で保持されることを指定する。ref_pic_s1_resolution_idx[i]は、存在しないときに0であると推定される。
一構成において、ビットストリームが第1の解像度を持つ第1のピクチャならびに第2の解像度を持つ第2のピクチャおよび第4のピクチャを含み、第1の解像度と第2の解像度とが等しくなく、かつ第2のピクチャがIDRピクチャではないか、またはシーケンス・パラメータセット(SPS)が第1のピクチャより後かつ第2のピクチャより前に受信されない場合、第2のピクチャは、第1の解像度の1つの参照ピクチャのみを参照する。第2の構成において、ビットストリームが第1の解像度を持つ第1のピクチャならびに第2の解像度を持つ第2のピクチャを含み、第1の解像度と第2の解像度とが等しくなく、かつ第2のピクチャがIDRピクチャではないか、またはシーケンス・パラメータセット(SPS)が第1のピクチャより後かつ第2のピクチャより前に受信されない場合、第4のピクチャは、第2の解像度の他のピクチャによって参照されない、第1の解像度の1つの参照ピクチャのみを参照する。
例えば、同じ解像度の他のピクチャが第4のピクチャに先行した場合、第4のピクチャは、第4のピクチャに先行した同じ解像度のピクチャによって用いられた参照ピクチャに加えて、第1の解像度の1つの参照ピクチャを参照する。言い換えれば、第2の解像度のピクチャを復号するときには、ピクチャを復号するときの参照のために、第1の解像度を持つ1つの参照ピクチャのみを用いることができる。第2の解像度を持つピクチャを復号するときの参照のために、第1の解像度を持つピクチャが一旦用いられると、参照のために用いられた第1の解像度を持つそのピクチャは、後続ピクチャを復号するための第2の解像度を有すると見做される。
図13は、指定ピクチャに基づいて、削減されたオーバーヘッドの参照により、参照ピクチャを追跡するための方法1200の別のより具体的な構成を示すフローダイアグラムである。この方法1200は、POCが再使用されたときにどのピクチャが参照されているかを追跡するための別のアプローチである。電子デバイス204(例えば、デコーダ202)は、ビットストリームを受信する(ステップ1202)。例えば、デコーダ202は、符号化された参照ピクチャを含むビットストリーム214を受信する(ステップ1202)。いくつかの構成において、ビットストリーム214は、オーバーヘッド情報(例えば、PPS,バッファ記述情報、パラメータ、参照ピクチャ指定または識別子など)も含む。
電子デバイス204は、復号された参照ピクチャを生成するために、ビットストリームの一部分を復号する(ステップ1204)。例えば、デコーダ202は、フレームメモリ264に記憶される復号された参照ピクチャを生成するために、ビットストリーム214の一部分を復号する(ステップ1204)。留意すべきは、1つ以上の復号された参照ピクチャを生成するために、ビットストリーム214の一つ以上の部分が復号される(ステップ404)ことである。
電子デバイス204は、サイクルパラメータを、復号された参照ピクチャを含む復号ピクチャセットと関連付ける(ステップ1206)。例えば、電子デバイス204は、サイクルパラメータ“poc_cycle”を、復号された参照ピクチャを含む復号ピクチャセットまたは復号ピクチャセットにおける各ピクチャと関連付ける(ステップ1206)。サイクルパラメータ“poc_cycle”は、上記にさらに詳細に記載される。
電子デバイス204は、ピクチャセット間の遷移が生じたかどうかを判定する(ステップ1208)。例えば、遷移は、復号されている現ピクチャのPOC(例えば、CurPOC)を調べて、そのPOCを復号された最後のピクチャのPOC(例えば、LastPOC)と比較することによって判定される(ステップ1208)。例として、復号されている現ピクチャのPOC(例えば、CurPOC)が、最後に復号されたピクチャのPOC(例えば、LastPOC)より小さく、かつLastPOC−CurPOCが閾値TH_FWDより大きければ、時間的に前のピクチャセットから後のピクチャセットへの遷移が判定される(ステップ1208)。しかしながら、復号されている現ピクチャのPOC(例えば、CurPOC)が、復号された最後のピクチャのPOC(例えば、LastPOC)より大きく、かつCurPOC−LastPOCが閾値TH_BCKWDより大きければ、時間的に後のピクチャセットから前のピクチャセットへの遷移が判定される(ステップ1208)。すべての他のケースでは、遷移がなにも生じなかったと判定される(ステップ1208)。いくつかの構成において、閾値は、TH_FWD=TH_BCKWD=MaxPOC/2の値を取る。
電子デバイス204が、2つのピクチャセット間で遷移が生じたと判定した(ステップ1208)場合、電子デバイス204は、サイクルパラメータを修正する(ステップ1210)。例えば、遷移が時間的に前のピクチャセットからであるときに、電子デバイス204は、DPBにおけるピクチャ毎またはピクチャセット毎にサイクルパラメータをデクリメントする。別の例では、遷移が時間的に後のピクチャセットからであるときに、電子デバイス204は、DPBにおけるピクチャ毎またはピクチャセット毎にサイクルパラメータをインクリメントする。かくして、復号されているピクチャに関して、すべての参照ピクチャのサイクルパラメーラの更新が実施される。(ピクチャセット間で遷移が生じたかどうかを判定し(ステップ1208)、場合によってはサイクルパラメータ(単数または複数)を修正する(ステップ1210))この更新手順は、復号されているピクチャ毎に一度実行される。
サイクルパラメータ“poc_cycle”の1つの択一的な定義は、(現在)復号されているピクチャに関するpoc_cycleが0であることである。従って、現在復号されているピクチャを含むピクチャセットは、0である。
任意の他のピクチャ、例えば、参照ピクチャのpoc_cycleは、参照ピクチャのMaxPOCSetIndexから復号されているピクチャのMaxPOCSetIndexを差し引いて算出される。例えば、復号されているピクチャのMaxPOCSetIndexがnであり、参照ピクチャがn−1のMaxPOCSetIndexを有すれば、参照ピクチャのpoc_cycleは、(n−1)−n=−1である。
留意すべきは、参照ピクチャに関するpoc_cycleが、参照ピクチャと復号されているピクチャとの間の距離MaxPOCSetIndexに依存することである。これは、1つのピクチャセット[0,・・・,MaxPOC−1]と他のピクチャセット[0,・・・,MaxPOC−1]との間の遷移をエンコーダ108でもデコーダ102でも追跡し続ける(例えば、遷移が生じたかどうかを判定する(ステップ1208))ことによって暗黙的に判定できる。
電子デバイス204は、復号された参照ピクチャに基づいて、ピクチャを復号する(ステップ1212)。例えば、(復号された参照ピクチャを生成するために復号された(ステップ1204)部分以外の)ビットストリーム214の一部分が、復号された参照ピクチャに基づいて復号される(ステップ1212)。例えば、(DPBで追跡された)復号された参照ピクチャは、フレーム間予測メカニズムに基づいてフレーム間予測信号268を発生させるために、動き補償モジュール260へ供給される。フレーム間予測信号268は、次にピクチャを復号する(ステップ1212)ために用いられる。いくつかの構成または例では、ピクチャを復号する(ステップ1212)ために、1つ以上の復号された参照ピクチャが用いられる。
図14は、ピクチャセット間で遷移が生じたかどうかを判定するための方法1300の一構成を示すフローダイアグラムである。例えば、図14は、図13に示されるようにピクチャセット間で遷移が生じたかどうかを判定する(ステップ1208)一例を提供する。電子デバイス204は、(例えば、“CurPOC”と示される)復号されている現ピクチャのPOCが、(例えば、“LastPOC”と示される)最後に復号されたピクチャのPOCより小さいかどうかを判定する(ステップ1302)。例として、電子デバイス204は、この判定(ステップ1302)を行うために、復号されている現ピクチャのPOC(例えば、CurPOC)を最後に復号されたピクチャのPOC(例えば、LastPOC)と比較する。
CurPOC<LastPOCであれば、電子デバイス204は、LastPOC−CurPOCが閾値TH_FWDより大きいかどうかを判定する(ステップ1308)。LastPOC−CurPOCが閾値TH_FWDより大きければ、電子デバイス204は、時間的に前のピクチャセットから後のピクチャセットへの遷移が生じたと判定する(ステップ1308)。しかしながら、LastPOC−CurPOCがTH_FWDより大きくなければ、電子デバイス204は、遷移がなにも生じなかったと判定する(ステップ1308)。
CurPOCがLastPOCより小さくなければ、電子デバイス204は、CurPOCがLastPOCより大きいかどうかを判定する(ステップ1304)。電子デバイス204が、CurPOCがLastPOCより大きいと判定すれば(ステップ1304)、電子デバイス204は、CurPOC−LastPOCが閾値TH_BCKWDより大きいかどうかを判定する(ステップ1306)。電子デバイスが、CurPOC−LastPOCが閾値TH_BCKWDより大きいと判定すれば(ステップ1306)、電子デバイス204は、時間的に後のピクチャセットから前のピクチャセットへの遷移が生じたと判定する(ステップ1306)。電子デバイスが、CurPOC−LastPOCが閾値TH_BCKWDより大きくないと判定すれば(ステップ1306)、電子デバイス204は、遷移がなにも生じなかったと判定する(ステップ1306)。
電子デバイス204が、CurPOCがLastPOCより大きくないと判定すれば(ステップ1304)、電子デバイスは、遷移がなにも生じなかったと判定する(ステップ1304)。いくつかの構成において、閾値は、TH_FWD=TH_BCKWD=MaxPOC/2の値を取る。
図15は、指定ピクチャに基づいて、削減されたオーバーヘッドの参照により、参照ピクチャを追跡するための方法1400の別のより具体的な構成を示すフローダイアグラムである。この方法1400は、POCが再使用されたときにどのピクチャが参照されているかを追跡するための1つのアプローチである。電子デバイス204(例えば、デコーダ202)は、ビットストリーム214を受信する(ステップ1402)。例えば、デコーダ202は、符号化された参照ピクチャ(および、例として、他の符号化されたピクチャ)を含むビットストリーム214を受信する(ステップ1402)。いくつかの構成において、ビットストリーム214は、オーバーヘッド情報(例えば、PPS、バッファ記述情報、パラメータ、参照ピクチャ指定または識別子など)を含む。
電子デバイス204は、復号された参照ピクチャを生成するために、ビットストリーム214の一部分を復号する(ステップ1404)。例えば、デコーダ202は、フレームメモリ264に記憶される復号された参照ピクチャを生成するために、ビットストリーム214の一部分を復号する(ステップ1404)。留意すべきは、1つ以上の復号された参照ピクチャを生成するために、ビットストリーム214の一つ以上の部分が復号される(ステップ1404)ことである。
電子デバイス204は、サイクルパラメータを、復号された参照ピクチャを含む復号ピクチャセットと関連付ける(ステップ1406)。例えば、電子デバイス204は、サイクルパラメータ“poc_cycle”を、復号された参照ピクチャを含む復号ピクチャセットと関連付ける(ステップ1406)。
電子デバイス204は、ピクチャセット間で遷移が生じたかどうかを判定する(ステップ1408)。例えば、デコーダ102がピクチャセットにおける所定数のピクチャを復号するたびに、デコーダ102または電子デバイスB104bは、2つのピクチャセット間で遷移が生じたと判定する(ステップ1408)。別の例では、デコーダ102が、(例えば、最大値から最小値へ再スタートする)POCにおけるサイクルを検出するたびに、デコーダ102または電子デバイスB104bは、2つのピクチャ間で遷移が生じたと判定する(ステップ1408)。
電子デバイス204がピクチャセット間で遷移が生じたと判定すれば(ステップ1408)、電子デバイス204は、サイクルパラメータを修正する(ステップ1410)(例えば、デクリメントする)。例えば、電子デバイス204は、DPBにおけるピクチャ毎またはピクチャセット毎にサイクルパラメータをデクリメントする。別の例では、電子デバイス204は、サイクルパラメータをインクリメントすることもある。
電子デバイス204は、復号された参照ピクチャに基づいてピクチャを復号する(ステップ1412)。例えば、(復号された参照ピクチャを生成するために復号された(ステップ1404)部分以外の)ビットストリーム214の一部分は、参照ピクチャに基づいて復号される(ステップ1412)。例として、(DPBで追跡された)復号された参照ピクチャは、フレーム間予測メカニズムに基づいてフレーム間予測信号268を発生させるために、動き補償モジュール260へ供給される。フレーム間予測信号268は、次にピクチャを復号する(ステップ1412)ために用いられる。いくつかの構成または例では、ピクチャを復号する(ステップ1412)ために、1つ以上の復号された参照ピクチャが用いられる。
図16は、電子デバイス1504で利用される様々なコンポーネントを示す。電子デバイス1504は、前述された1つ以上の電子デバイス(例えば、電子デバイス104、204)として実装される。
電子デバイス1504は、電子デバイス1504の動作を制御するプロセッサ1517を含む。プロセッサ1517は、CPUとも呼ばれる。メモリ1511は、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)の両方、または情報を記憶する任意のタイプのデバイスを含み、命令1513a(例えば、実行可能な命令)およびデータ1515aをプロセッサ1517へ供給する。メモリ1511の一部分が不揮発性ランダムアクセスメモリ(NVRAM)を含んでもよい。メモリ1511は、プロセッサ1517と電子通信を行う。
命令1513bおよびデータ1515bは、プロセッサ1517にも存在する。プロセッサ1517に読み込まれた命令1513bおよび/またはデータ1515bは、プロセッサ1517による実行または処理のために読み込まれた、メモリ1511からの命令1513aおよび/またはデータ1515aを含んでもよい。命令1513bは、本明細書に開示されるシステムおよび方法を実装するためにプロセッサ1517によって実行される。
電子デバイス1504は、他の電子デバイスと通信するための1つ以上の通信インタフェース1519を含む。通信インタフェース1519は、有線通信技術、無線通信技術、または両方に基づく。通信インタフェース1519の例は、シリアルポート、パラレルポート、ユニバーサルシリアルバス(USB:Universal Serial Bus)、イーサネット(登録商標)アダプタ、IEEE1394バスインタフェース、小型計算機システムインタフェース(SCSI:small computer system interface)バスインタフェース、赤外線(IR)通信ポート、Bluetooth(登録商標)無線通信アダプタ、第3世代パートナーシップ・プロジェクト(3GPP:3rd Generation Partnership Project)による無線トランシーバなどを含む。
電子デバイス1504は、1つ以上の出力デバイス1523および1つ以上の入力デバイス1521を含む。出力デバイス1523の例は、スピーカ、プリンタなどを含む。電子デバイス1504に含まれる出力デバイスの1つのタイプは、表示デバイス1525である。本明細書に開示される構成とともに用いられる表示デバイス1525は、任意の適切な画像投影技術、例えば、陰極線管(CRT)、液晶表示(LCD)、発光ダイオード(LED)、気体プラズマ、エレクトロルミネセンスなどを利用する。表示コントローラ1527は、メモリ1511に記憶されたデータを、表示デバイス1525上に示されるテキスト、グラフィックス、および/または動画に(適宜)変換するために提供される。入力デバイス1521の例は、キーボード、マウス、マイクロフォン、リモートコントロールデバイス、ボタン、ジョイスティック、トラックボール、タッチパッド、タッチスクリーン、ライトペンなどを含む。
電子デバイス1504の様々なコンポーネントは、データバスに加えて、電力バス、制御信号バスおよびステータス信号バスを含むバスシステム1529によって一緒で結合される。しかしながら、明確さのために、図16では様々なバスがバスシステム1529として示される。図16に示される電子デバイス1504は、具体的なコンポーネントのリスティングではなく、機能ブロックダイアグラムである。
図17は、本明細書に開示されるシステムおよび方法によるユースケースの例を示すダイアグラムである。特に、3つの例1653a〜cが上記のように示される。これら3つの例は、ビットストリームが第1の解像度を持つ第1のピクチャおよび第2の解像度を持つ第2のピクチャを含む場合、第1の解像度および第2の解像度が等しくない場合、および第2のピクチャがIDRピクチャではないか、またはシーケンス・パラメータセット(SPS)が第1のピクチャより後かつ第2のピクチャより前に受信されない場合に生じる。
第1の例1653aは、復号ピクチャバッファに記憶された第1の解像度1655aのピクチャおよび第2の解像度1657aのピクチャを示す。第1の例1653aでは、エンコーダは、参照ピクチャが第1の解像度にあるように、復号ピクチャバッファ(DPB)における参照ピクチャが修正されることをデコーダにシグナリングする。これが有用なのは、参照ピクチャが、低い方の解像度での動き予測にのみ用いられることになる場合であろう。
第2の例1653bは、復号ピクチャバッファに記憶された第1の解像度1655bのピクチャおよび第2の解像度1657bのピクチャを示す。第2の例1653bでは、エンコーダは、参照ピクチャが第2の解像度にあるように、復号ピクチャバッファ(DPB)における参照ピクチャが修正されることをデコーダにシグナリングする。これが有用なのは、ビットストリームが第2のピクチャに続く第3のピクチャを含み、第3のピクチャが第1の解像度にあり、DPBに記憶された長期ピクチャが、動き予測に用いられるときであろう。
第3の例1653cは、復号ピクチャバッファに記憶された第1の解像度1655cのピクチャと第2の解像度1657cのピクチャとを示す。第3の例1653cでは、エンコーダは、参照ピクチャが第1および第2の両方の解像度にあるように、復号ピクチャバッファ(DPB)における参照ピクチャが修正されることをデコーダにシグナリングする。これが有用なのは、第2のピクチャに続く第3のピクチャを復号するときに、第3のピクチャが第1の解像度にあり、参照ピクチャの高い方の解像度版が、動き予測のために用いられるときであろう。
用語“コンピュータ可読媒体”は、コンピュータまたはプロセッサによってアクセスできる任意の利用可能な媒体を指す。用語“コンピュータ可読媒体”は、本明細書では、非一時的かつ有形のコンピュータおよび/またはプロセッサ可読媒体を示す。限定ではなく、例として、コンピュータ可読またはプロセッサ可読媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMまたは他の光ディスク記憶、磁気ディスク記憶もしくは他の磁気記憶デバイス、あるいは命令の形態の所望のプログラムコードまたはデータ構造を伝えるか、または記憶するために用いることができ、コンピュータまたはプロセッサによってアクセスできる任意の他の媒体を備える。ディスク(disk)およびディスク(disc)は、本明細書では、コンパクトディスク(CD:compact disc)、レーザディスク(laser disc)、光ディスク(optical disc)、デジタルバーサタイルディスク(DVD:digital versatile disc)、フロッピー(登録商標)ディスク(floppy(登録商標) disk)およびBlu−ray(登録商標)ディスク(disc)を含み、ディスク(disk)は、通常、磁気的にデータを再生し、一方でディスク(disc)は、レーザを用いて光学的にデータを再生する。
留意すべきは、本明細書に記載される方法の1つ以上が、ハードウェアで実装されてもよく、および/またはハードウェアを用いて実行されてもよいことである。例えば、本明細書に記載される方法またはアプローチの1つ以上は、チップセット、特定用途向け集積回路(ASIC:application-specific integrated circuit)、大規模集積回路(LSI:large-scale integrated circuit)または集積回路などで実装されてもよく、および/またはそれらを用いて実現されてもよい。
本明細書に開示される方法のそれぞれは、記載される方法を実現するための1つ以上のステップまたは動作を備える。本方法のステップおよび/または動作は、特許請求の範囲から逸脱することなく、相互に交換されても、および/または単一ステップに組み合わされてもよい。言い換えれば、記載される方法の適切な操作のためにステップまたは動作の特定の順序が必要とされない限り、特定のステップおよび/または動作の順序および/または使用は、特許請求の範囲から逸脱することなく、修正されてもよい。
理解すべきは、特許請求の範囲が上記に示された通りの構成およびコンポーネントには限定されないことである。特許請求の範囲から逸脱することなく、本明細書に記載される配置、操作、ならびにシステム、方法、および装置の詳細に様々な修正、変更および変形がなされてもよい。