メッセージを送信するための或る電子デバイスを説明する。本電子デバイスは、プロセッサと、プロセッサと電子通信するメモリに格納された命令とを含む。本電子デバイスは、符号化ピクチャバッファ(CPB:Coded Picture Buffer)がサブピクチャレベルでのオペレーションをサポートするときに、共通復号ユニットCPB除去遅延パラメータを、ピクチャタイミング付加拡張情報(SEI:Supplemental Enhancement Information)メッセージに含むべきかどうかを判定する。また、本電子デバイスは、共通復号ユニットCPB除去遅延パラメータがピクチャタイミングSEIメッセージ(もしくは他の何らかのSEIメッセージまたは他の何らかのパラメータセット、例えばピクチャパラメータセットもしくはシーケンスパラメータセットもしくはビデオパラメータセットもしくは適応パラメータセット)に含まれるべきときには、共通復号ユニットCPB除去遅延パラメータを生成し、この共通復号ユニットCPB除去遅延パラメータは、CPBからのアクセスユニット中の全ての復号ユニットに適用可能である。また、本電子デバイスは、共通復号ユニットCPB除去遅延パラメータがピクチャタイミングSEIメッセージに含まれるべきでないときにはアクセスユニット中の各復号ユニットに対し個別の復号ユニットCPB除去遅延パラメータを生成する。また、本電子デバイスは、共通復号ユニットCPB除去遅延パラメータまたは復号ユニットCPB除去遅延パラメータを含む、ピクチャタイミングSEIメッセージを送信する。
共通復号ユニットCPB除去遅延パラメータは、直前の復号ユニットのCPBからの除去後、ピクチャタイミングSEIメッセージに関連付けられたアクセスユニット中の現復号ユニットをCPBから除去する前に待つべきサブピクチャクロックティックの量を指定することができる。
さらに、復号ユニットがアクセスユニット中の最初の復号ユニットであるときは、共通復号ユニットCPB除去遅延パラメータは、先行するアクセスユニットにおける直近のバッファリング期間SEIメッセージに関連付けられたアクセスユニット中の最後の復号ユニットのCPBからの除去後、ピクチャタイミングSEIメッセージに関連付けられたアクセスユニット中の最初の復号ユニットをCPBから除去する前に待つべきサブピクチャクロックティックの量を指定することが可能である。
これに対し、復号ユニットがアクセスユニット中の最初の復号ユニットでないときには、共通復号ユニットCPB除去遅延パラメータは、ピクチャタイミングSEIメッセージに関連付けられたアクセスユニット中の先行する復号ユニットのCPBからの除去後、ピクチャタイミングSEIメッセージに関連付けられたアクセスユニット中の現復号ユニットをCPBから除去する前に待つべきサブピクチャクロックティックの量を指定すればよい。
復号ユニットCPB除去遅延パラメータは、最後の復号ユニットのCPBからの除去後、ピクチャタイミングSEIメッセージに関連付けられたアクセスユニット中のi番目の復号ユニットをCPBから除去する前に待つべきサブピクチャクロックティックの量を指定することができる。
本電子デバイスは、モジュロ2(cpb_removal_delay_length_minus1+1)カウンタの余りに従って、復号ユニットCPB除去遅延パラメータを計算することができ、前式中cpb_removal_delay_length_minus1+1は、共通復号ユニットCPB除去遅延パラメータの長さである。
また、本電子デバイスは、CPBがアクセスユニットレベルでのオペレーションをサポートするときには、先行するアクセスユニットにおける直近のバッファリング期間SEIメッセージに関連付けられたアクセスユニットのCPBからの除去後、ピクチャタイミングSEIメッセージに関連付けられたアクセスユニットデータをCPBから除去する前に待つべきクロックティックの数を指定するCPB除去遅延パラメータを含む、ピクチャタイミングSEIメッセージを生成することが可能である。
さらに、本電子デバイスは、CPBがサブピクチャレベルでのオペレーションをサポートするか、またはアクセスユニットレベルでのオペレーションをサポートするかを判定することができる。この判定には、符号化ピクチャバッファ(CPB)がサブピクチャレベルでのオペレーションをサポートするパラメータを提供するかどうかを示すピクチャタイミングフラグを、ピクチャタイミングフラグの値に基づいて算定するステップを含めてよい。ピクチャタイミングフラグは、ピクチャタイミングSEIメッセージに含めることができる。
共通復号ユニットCPB除去遅延パラメータを含むべきかどうかを判定するステップは、共通復号ユニットCPB除去遅延パラメータがピクチャタイミングSEIメッセージに含まれるべきときに、共通復号ユニットCPB除去遅延フラグを1に設定するステップを含んでよい。このステップは、共通復号ユニットCPB除去遅延パラメータがピクチャタイミングSEIメッセージに含まれるべきでないときに、共通復号ユニットCPB除去遅延フラグを0に設定するステップも含み得る。共通復号ユニットCPB除去遅延フラグは、ピクチャタイミングSEIメッセージに含むことができる。
また、電子デバイスは、CPBがサブピクチャレベルでのオペレーションをサポートするときにはアクセスユニット中の各復号ユニットに対するNALユニットの1でオフセットされた量を示す、個別のネットワーク抽象化レイヤ(NAL:network abstraction layer)ユニットの関連するパラメータを生成することができる。これに換えてまたは加えて、本電子デバイスはアクセスユニットの各復号ユニットに共通するNALユニットの1でオフセットされた量を示す、共通NALパラメータを生成することも可能である。
また、ビットストリームをバッファリングするための電子デバイスも説明する。本電子デバイスは、プロセッサと、プロセッサと電子通信するメモリに格納された命令とを含む。本電子デバイスは、CPBがアクセスユニットに対しサブピクチャレベルでのパラメータをシグナリングすることを判定する。また、本電子デバイスは、受信されたピクチャタイミング付加拡張情報(SEI)メッセージが共通復号ユニット符号化ピクチャバッファ(CPB)除去遅延フラグを含むときにはアクセスユニット中の全ての復号ユニットに適用可能な共通復号ユニットCPB除去遅延パラメータを算定する。同様に、本電子デバイスは、ピクチャタイミングSEIメッセージが共通復号ユニットCPB除去遅延フラグを含まないときにはアクセスユニット中の各復号ユニットに対する個別の復号ユニットCPB除去遅延パラメータも算定する。また、本電子デバイスは、共通復号ユニットCPB除去遅延パラメータまたは個別の復号ユニットCPB除去遅延パラメータを用いて、CPBから復号ユニットを除去する。さらに、本電子デバイスはアクセスユニットの復号ユニットを復号する。
一構成において、本電子デバイスは、ピクチャタイミングSEIメッセージにピクチャタイミングフラグが設定されていることを判定する。また、本電子デバイスは、CPB除去遅延パラメータcpb_removal_delayを、
に従って設定することができ、前式中のdu_cpb_removal_delay[i]は復号ユニットCPB除去遅延パラメータであり、tcはクロックティックであり、tc,subはサブピクチャクロックティックであり、num_decoding_units_minus1はアクセスユニットの復号ユニットの1でオフセットされた量であり、iはインデックスである。
あるいは、電子デバイスは、CPB除去遅延パラメータ、cpb_removal_delay、およびdu_cpb_removal_delay[num_decoding_units_minus1]を、
を満たすように設定してもよく、式中のdu_cpb_removal_delay[i]は復号ユニットCPB除去遅延パラメータであり、tcはクロックティックであり、tc,subはサブピクチャクロックティックであり、num_decoding_units_minus1はアクセスユニット中の復号ユニットの1でオフセットされた量であり、iはインデックスである。
あるいは、本電子デバイスは、CPB除去遅延パラメータcpb_removal_delay、およびdu_cpb_removal_delay[num_decoding_units_minus1]を、cpb_removal_delay*tc=du_cpb_removal_delay[num_decoding_units_minus1]*tc_subに従って設定することも可能で、前式中のdu_cpb_removal_delay[num_decoding_units_minus1]はnum_decoding_units_minus1番目の復号ユニットの復号ユニットCPB除去遅延パラメータであり、tcはクロックティックであり、tc,subはサブピクチャクロックティックであり、num_decoding_units_minus1はアクセスユニットの復号ユニットの1でオフセットされた量である。
一構成において、本電子デバイスは、ピクチャタイミングSEI中に、ピクチャタイミングフラグが設定されていることを判定する。また、本電子デバイスは、CPB除去遅延パラメータcpb_removal_delay、およびdu_cpb_removal_delay[num_decoding_units_minus1]を、式:−1≦(cpb_removal_delay*tc−du_cpb_removal_delay[num_decoding_units_minus1]*tc,sub)≦1を満たすように設定することができ、前式中のdu_cpb_removal_delay[num_decoding_units_minus1]は、num_decoding_units_minus1番目の復号ユニットの復号ユニットCPB除去遅延パラメータであり、tcはクロックティックであり、tc,subはサブピクチャクロックティックであり、num_decoding_units_minus1はアクセスユニットの復号ユニットの1でオフセットされた量である。
ClockDiff変数は、ClockDiff=(num_units_in_tick−(num_units_in_sub_tick*(num_decoding_units_minus1+1))/time_scale)として定義することができ、前式中のnum_units_in_tickはクロックティックカウンタの1増加に対応する周波数time_scale Hzで作動するクロックの時間単位数であり、num_units_in_sub_tickはサブピクチャクロックティックカウンタの1増加に対応する周波数time_scale Hzで作動するクロックの時間単位数であり、num_decoding_units_minus1+1はアクセスユニットの復号ユニットの量であり、time_scaleは1秒間に経過する時間単位数である。
低遅延仮想リファレンスデコーダ(HRD:hypothetical reference decoder)フラグ(例えばlow_delay_hrd_flag)が1に設定され、tr,n(m)<taf(m)であり、ピクチャタイミングフラグが1に設定され、CPBがサブピクチャレベルで作動し、ClockDiffがゼロより大きいとき、復号ユニットmの除去時刻tr(m)は、tr(m)=tr,n(m)+tc_sub*Ceil((taf(m)−tr,n(m))/tc_sub)+ClockDiffに従って算定され、前式中のtr,n(m)は復号ユニットmの名目除去時刻であり、tc_subはサブピクチャクロックティックであり、Ceil()はシーリング関数であり、taf(m)は復号ユニットmの最終到着時刻である。
低遅延仮想リファレンスデコーダ(HRD)フラグ(例えばlow_delay_hrd_flag)が1に設定され、tr,n(n)<taf(n)であり、ピクチャタイミングフラグが1に設定され、CPBがアクセスユニットレベルで作動し、ClockDiffがゼロより大きいとき、アクセスユニットnに対する除去時刻tr(n)は、tr(n)=tr,n(n)+tc*Ceil((taf(n)−tr,n(n))/tc)−ClockDiffにより算定され、式中tr,n(n)はアクセスユニットnの名目除去時刻であり、tcはクロックティックであり、Ceil()はシーリング関数であり、taf(n)はアクセスユニットnの最終到着時刻である。
低遅延仮想リファレンスデコーダ(HRD)フラグ(例えばlow_delay_hrd_flag)が1に設定され、tr,n(m)<taf(m)であり、ピクチャタイミングフラグが1に設定され、CPBがサブピクチャレベルで作動しているとき、アクセスユニットの最後の復号ユニットmの除去時刻tr(m)は、tr(m)=tr,n(m)+max((tc_sub*Ceil((taf(m)−tr,n(m))/tc_sub)),(tc*Ceil((taf(n)−tr,n(n))/tc)))により算定され、前式中のtr,n(m)は最後の復号ユニットmの名目除去時刻であり、tc_subはサブピクチャクロックティックであり、Ceil()はシーリング関数であり、taf(m)は最後の復号ユニットmの最終到着時刻であり、tr,n(n)はアクセスユニットnの名目除去時刻であり、tcはクロックティックであり、taf(n)はアクセスユニットnの最終到着時刻である。
低遅延仮想リファレンスデコーダ(HRD)フラグが1に設定され、tr,n(n)<taf(n)であり、ピクチャタイミングフラグが1に設定され、CPBがアクセスユニットレベルで作動しているとき、アクセスユニットnの除去時刻tr(n)は、tr(n)=tr,n(n)+max((tc_sub*Ceil((taf(m)−tr,n(m))/tc_sub)),(tc*Ceil((taf(n)−tr,n(n))/tc)))により算定され、前式中のtr,n(m)は最後の復号ユニットnの名目除去時刻であり、tc_subはサブピクチャクロックティックであり、Ceil()はシーリング関数であり、taf(m)は最後の復号ユニットmの最終到着時刻であり、tr,n(n)はアクセスユニットnの名目除去時刻であり、tcはクロックティックであり、taf(n)はアクセスユニットnの最終到着時刻である。
低遅延仮想リファレンスデコーダ(HRD)フラグ(例えばlow_delay_hrd_flag)が1に設定され、tr,n(m)<taf(m)であり、ピクチャタイミングフラグが1に設定され、CPBがサブピクチャレベルで作動しているとき、アクセスユニットの最後の復号ユニットmの除去時刻tr(m)は、tr(m)=tr,n(m)+min((tc_sub*Ceil((taf(m)−tr,n(m))/tc_sub)),(tc*Ceil((taf(n)−tr,n(n))/tc)))により算定され、前式中のtr,n(m)は最後の復号ユニットmの名目除去時刻であり、tc_subはサブピクチャクロックティックであり、Ceil()はシーリング関数であり、taf(m)は最後の復号ユニットmの最終到着時刻であり、tr,n(n)はアクセスユニットnの名目除去時刻であり、tcはクロックティックであり、taf(n)はアクセスユニットnの最終到着時刻である。
低遅延仮想リファレンスデコーダ(HRD)フラグが1に設定され、tr,n(n)<taf(n)であり、ピクチャタイミングフラグが1に設定され、CPBがアクセスユニットレベルで作動しているとき、アクセスユニットnの除去時刻tr(n)は、tr(n)=tr,n(n)+min((tc_sub*Ceil((taf(m)−tr,n(m))/tc_sub)),(tc*Ceil((taf(n)−tr,n(n))/tc)))により算定され、前式中のtr,n(m)は最後の復号ユニットnの名目除去時刻であり、tc_subはサブピクチャクロックティックであり、Ceil()はシーリング関数であり、taf(m)は最後の復号ユニットmの最終到着時刻であり、tr,n(n)はアクセスユニットnの名目除去時刻であり、tcはクロックティックであり、taf(n)はアクセスユニットnの最終到着時刻である。
低遅延仮想リファレンスデコーダ(HRD)フラグ(例えばlow_delay_hrd_flag)が1に設定され、tr,n(m)<taf(m)であり、ピクチャタイミングフラグが1に設定され、CPBがサブピクチャレベルで作動しているとき、アクセスユニットの最後の復号ユニットmの除去時刻tr(m)は、tr(m)=tr,n(m)+(tc*Ceil((taf(n)−tr,n(n))/tc))により算定され、前式中のtr,n(m)は最後の復号ユニットmの名目除去時刻であり、tc_subはサブピクチャクロックティックであり、Ceil()はシーリング関数であり、taf(m)は最後の復号ユニットmの最終到着時刻であり、tr,n(n)はアクセスユニットnの名目除去時刻であり、tcはクロックティックであり、taf(n)はアクセスユニットnの最終到着時刻である。
低遅延仮想リファレンスデコーダ(HRD)フラグが1に設定され、tr,n(n)<taf(n)であり、ピクチャタイミングフラグが1に設定され、CPBがアクセスユニットレベルで作動しているとき、アクセスユニットnの除去時刻tr(n)は、tr(n)=tr,n(n)+(tc*Ceil((taf(n)−tr,n(n))/tc))により算定され、前式中のtr,n(m)は最後の復号ユニットnの名目除去時刻であり、tc_subはサブピクチャクロックティックであり、Ceil()はシーリング関数であり、taf(m)は最後の復号ユニットmの最終到着時刻であり、tr,n(n)はアクセスユニットnの名目除去時刻であり、tcはクロックティックであり、taf(n)はアクセスユニットnの最終到着時刻である。
低遅延仮想リファレンスデコーダ(HRD)フラグ(例えばlow_delay_hrd_flag)が1に設定され、tr,n(m)<taf(m)であり、ピクチャタイミングフラグが1に設定され、CPBがサブピクチャレベルで作動しているとき、最後の復号ユニットではない復号ユニットmの除去時刻は、tr(m)=taf(m)として設定され、前式中のtaf(m)は復号ユニットmの最終到着時刻である。低遅延仮想リファレンスデコーダ(HRD)フラグ(例えばlow_delay_hrd_flag)が1に設定され、tr,n(m)<taf(m)であり、ピクチャタイミングフラグが1に設定され、CPBがサブピクチャレベルで作動しているとき、アクセスユニットの最後の復号ユニットmである復号ユニットmに対する除去時刻tr(m)は、tr(m)=tr,n(m)+(tc_sub*Ceil((taf(m)−tr,n(m))/tc_sub))により算定され、前式中のtr,n(m)は最後の復号ユニットmの名目除去時刻であり、tc_subはサブピクチャクロックティックであり、Ceil()はシーリング関数であり、taf(m)は最後の復号ユニットmの最終到着時刻であり、tr,n(n)はアクセスユニットnの名目除去時刻であり、tcはクロックティックであり、taf(n)はアクセスユニットnの最終到着時刻であり、taf(m)はアクセスユニットnの最後の復号ユニットmの最終到着時刻である。
低遅延仮想リファレンスデコーダ(HRD)フラグ(例えばlow_delay_hrd_flag)が1に設定され、tr,n(m)<taf(m)であり、ピクチャタイミングフラグが1に設定され、CPBがサブピクチャレベルで作動しているとき、最後の復号ユニットではない復号ユニットmの除去時刻は、tr(m)=taf(m)として設定され、前式中taf(m)は復号ユニットmの最終到着時刻である。低遅延仮想リファレンスデコーダ(HRD)フラグ(例えばlow_delay_hrd_flag)が1に設定され、tr,n(m)<taf(m)であり、ピクチャタイミングフラグが1に設定され、CPBがサブピクチャレベルで作動しているとき、アクセスユニットの最後の復号ユニットmである復号ユニットmの除去時刻tr(m)は:tr(m)=tr,n(m)+(tc*Ceil((taf(m)−tr,n(m))/tc))により算定され、前式中のtr,n(m)は最後の復号ユニットmの名目除去時刻であり、tc_subはサブピクチャクロックティックであり、Ceil()はシーリング関数であり、taf(m)は最後の復号ユニットmの最終到着時刻であり、tr,n(n)はアクセスユニットnの名目除去時刻であり、tcはクロックティックであり、taf(n)はアクセスユニットnの最終到着時刻であり、taf(m)はアクセスユニットnの最後の復号ユニットmの最終到着時刻である。
低遅延仮想リファレンスデコーダ(HRD)フラグ(例えばlow_delay_hrd_flag)が1に設定され、tr,n(m)<taf(m)であり、ピクチャタイミングフラグが1に設定され、CPBがサブピクチャレベルで作動しているとき、復号ユニットmの除去時刻は、tr(m)=taf(m)として設定され、前式中のtr,n(m)は復号ユニットmの名目除去時刻であり、tc_subはサブピクチャクロックティックであり、Ceil()はシーリング関数であり、taf(m)は復号ユニットmの最終到着時刻であり、tr,n(n)はアクセスユニットnの名目除去時刻であり、tcはクロックティックであり、taf(n)はアクセスユニットnの最終到着時刻であり、taf(m)はアクセスユニットn中の復号ユニットmの最終到着時刻である。
低遅延仮想リファレンスデコーダ(HRD)フラグが1に設定され、tr,n(n)<taf(n)であり、ピクチャタイミングフラグが1に設定され、CPBがアクセスユニットレベルで作動しているとき、アクセスユニットnの除去時刻tr(n)は、tr(n)=taf(n)により算定され、前式中のtr,n(m)は最後の復号ユニットnの名目除去時刻であり、tc_subはサブピクチャクロックティックであり、Ceil()はシーリング関数であり、taf(m)は最後の復号ユニットmの最終到着時刻であり、tr,n(n)はアクセスユニットnの名目除去時刻であり、tcはクロックティックであり、taf(n)はアクセスユニットnの最終到着時刻である。
さらに、場合によっては、復号ユニットの除去時刻およびアクセスユニットの除去時刻を決めるのに、前述の各種の式のうちのいずれが使用されるかをシグナリングするため、ビットストリームの一部でフラグを送信することができる。一事例において、このフラグを、du_au_cpb_alignment_mode_flagと呼ぶことにしよう。du_au_cpb_alignment_mode_flagが1である場合、サブピクチャベースのモードで作動するCPBのオペレーションを、アクセスユニットモードで作動するCPBに同調させる前述の式が用いられる。du_au_cpb_alignment_mode_flagが0である場合、サブピクチャベースのモードで作動するCPBのオペレーションを、アクセスユニットモードで作動するCPBに同調させない前述の式が用いられる。
或る事例において、フラグdu_au_cpb_alignment_mode_flagは、ビデオユーザビリティ情報(VUI:video usability information)中でシグナリングすることができる。別の事例では、フラグdu_au_cpb_alignment_mode_flagは、ピクチャタイミングSEIメッセージ中で送信することが可能である。さらに別の事例では、フラグdu_au_cpb_alignment_mode_flagは、ビットストリームの何らかの他の規範的部分の中で送信されてもよい。本明細書で開示されるシステムおよび方法による修正されたシンタクスおよびセマンティクスの一例が、以下の表(0)に示される。
なお、様々な変数に対し上記で使用された記号とは異なる記号(名称)を使用してもよい。例えば、アクセスユニットnのtr(n)はCpbRemovalTime(n)と呼んでもよく、復号ユニットnのtr(m)はCpbRemovalTime(m)と呼んでもよく、tc_subはClockSubTickと呼んでもよく、tcはClockTickと呼んでもよく、アクセスユニットmのtaf(n)はアクセスユニットnのFinalArrivalTime(n)と呼んでもよく、復号ユニットmのtaf(m)はFinalArrivalTime(m)と呼んでもよく、tr,n(n)はアクセスユニットnのNominalRemovalTime(n)と呼んでもよく、tr,n(m)は復号ユニットmのNominalRemovalTime(m)と呼んでもよい。
さらに、電子デバイスによりメッセージを送信する方法も説明する。本方法は、符号化ピクチャバッファ(CPB)がサブピクチャレベルでのオペレーションをサポートするときに、ピクチャタイミング付加拡張情報(SEI)メッセージに共通復号ユニットCPB除去遅延パラメータを含むべきかどうかを判定するステップを含む。また、本方法は、共通復号ユニットCPB除去遅延パラメータがピクチャタイミングSEIメッセージに含まれるべきときに、共通復号ユニットCPB除去遅延パラメータを生成するステップを含み、この共通復号ユニットCPB除去遅延パラメータは、CPBからのアクセスユニット中の全ての復号ユニットに適用可能である。また、本方法は、共通復号ユニットCPB除去遅延パラメータがピクチャタイミングSEIメッセージに含まれるべきでないときにはアクセスユニット中の各復号ユニットに対し個別の復号ユニットCPB除去遅延パラメータを生成するステップも含む。また、本方法は、共通復号ユニットCPB除去遅延パラメータ、または復号ユニットCPB除去遅延パラメータを含むピクチャタイミングSEIメッセージを送信するステップも含む。
また、電子デバイスによりビットストリームをバッファリングする方法も説明する。本方法は、CPBがアクセスユニットに対しサブピクチャレベルでのパラメータをシグナリングすることを判定するステップを含む。また、本方法は、受信されたピクチャタイミング付加拡張情報(SEI)メッセージが共通復号ユニット符号化ピクチャバッファ(CPB)除去遅延フラグを含むときに、アクセスユニット中の全ての復号ユニットに適用可能な共通復号ユニットCPB除去遅延パラメータを算定するステップも含む。さらに、本方法は、ピクチャタイミングSEIメッセージが共通復号ユニットCPB除去遅延フラグを含まないときに、アクセスユニット中の各復号ユニットに対し個別の復号ユニットCPB除去遅延パラメータを算定するステップも含む。また、本方法は、共通復号ユニットCPB除去遅延パラメータまたは個別の復号ユニットCPB除去遅延パラメータを用いて、CPBから復号ユニットを除去するステップも含む。本方法はアクセスユニット中の復号ユニットを復号するステップも含む。
本明細書で開示するシステムおよび方法は、メッセージを送信しビットストリームをバッファリングするための電子デバイスを説明する。例えば、本明細書で開示するシステムおよび方法は、サブピクチャパラメータから始めて、ビットストリームのためのバッファリングを説明する。一部の構成において、本明細書で開示するシステムおよび方法は、サブピクチャベースの仮想リファレンスデコーダ(HRD)パラメータのシグナリングを説明することができる。例えば、本明細書で開示するシステムおよび方法は、ピクチャタイミング付加拡張情報(SEI)メッセージに対する改良を説明する。本明細書で開示するシステムおよび方法(例えばHRD改良)により、各サブピクチャが到着しCPBから一定の間隔で除去される際のパラメータのよりコンパクトなシグナリングを得ることができる。
さらに、サブピクチャレベルのCPB除去遅延パラメータが存在するときは、符号化ピクチャバッファ(CPB)はアクセスユニットレベル、またはサブピクチャレベルで作動することが可能である。また、本システムおよび方法は、サブピクチャレベルベースのCPBオペレーションおよびアクセスユニットレベルのCPBオペレーションにより、同じタイミングの復号ユニット除去が生じるようにビットストリーム制約事項を設けることができる。具体的には、サブピクチャモードでの作動時のアクセスユニット中の最後の復号ユニットの除去のタイミングと、アクセスユニットモードでの作動時のアクセスユニットの除去のタイミングとが同じになることになる。
なお、HRDに関連して「仮想」という用語が用いられるが、HRDは物理的に実装することも可能である。例えば、「HRD」は、実際のデコーダの実装を記述するために用いることもできる。一部の構成において、HRDは、ビットストリームが高効率ビデオ符号化(HEVC:High Efficiency Video Coding)規格に適合するかどうかを判定するために実装されることがある。例えば、HRDは、型Iビットストリームおよび型IIビットストリームがHEVC規格に適合するかどうかを判定するために使用されてもよい。型Iビットストリームは、ビデオ符号化レイヤ(VCL:Video Coding Layer)ネットワークアクセスレイヤ(NAL:Network Access Layer)ユニットおよびフィラデータNALユニットだけを包含し得る。型IIビットストリームには、さらなる他のNALユニットおよびシンタクス要素を含めることが可能である。
ビデオ符号化に関する共同作業チーム(JCTVC:Joint Collaborative Team on Video Coding)文書JCTVC‐I0333は、サブピクチャベースのHRDを含み、ピクチャタイミングSEIメッセージをサポートする。この機能性は、高効率ビデオ符号化(HEVC)委員会ドラフト(JCTVC‐I1003)に組み込まれており、同文書は参照することにより全体として本明細書に組み込まれる。B.ブロス、W‐J.ハン、J‐R.オーム、G.J.サリバン、ワン、およびT‐.ウィーガンド(B.Bros、W‐J.Han、J‐R.Ohm、G.J.Sullivan、Wang、およびT‐.Wiegand)著、「高効率ビデオ符号化(HEVC)規格書ドラフト10(DFIS&最終草案)(High efficiency video coding(HEVC)text specification draft 10(for DFIS & Last Call))」、JCTVC‐L1003_v34、ジュネーブ、2013年1月は、参照することにより全体として本明細書に組み込まれる。B.ブロス、W‐J.ハン、J‐R.オーム、G.J.サリバン、ワン、およびT‐.ウィーガンド(B.Bros、W‐J.Han、J‐R.Ohm、G.J.Sullivan、Wang、およびT‐.Wiegand)著、「高効率ビデオ符号化(HEVC)規格書ドラフト10(High efficiency video coding(HEVC)text specification draft 10)」、JCTVC‐L1003、ジュネーブ、2013年1月は、参照により全体として本明細書に組み込まれる。
本明細書で開示されるシステムおよび方法による修正されたシンタクスおよびセマンティクスの一例が、以下の表(1)に示される。
本明細書で開示されるシステムおよび方法によるバッファリング期間SEIメッセージのセマンティクスに関する諸例を以下に示す。特に、修正されたシンタクス要素のセマンティクスに関するさらなる詳細が、以下のように示される。NalHrdBpPresentFlagまたはVclHrdBpPresentFlagが1に等しいとき、バッファリング期間SEIメッセージは、ビットストリーム中の任意のアクセスユニットに関連付けることができ、バッファリング期間SEIメッセージは、各IDRアクセスユニット、各CRAアクセスユニット、および復元ポイントSEIメッセージに関連する各アクセスユニットに関連付けることが可能である。一部の応用では、バッファリング期間SEIメッセージの高頻度な存在が望ましいこともある。バッファリング期間は、バッファリング期間SEIメッセージの二つのインスタンス間の、復号順のアクセスユニットのセットとして指定される。
「seq_parameter_set_id」は、シーケンスHRD属性を包含するシーケンスパラメータセットを指定する。seq_parameter_set_idの値は、バッファリング期間SEIメッセージに関連付けられたプライマリ符号化ピクチャにより参照されるピクチャパラメータセット中のseq_parameter_set_idの値に等しくてもよい。seq_parameter_set_idの値は、両端値を含めて0から31までの範囲内にあればよい。
「initial_cpb_removal_delay」[SchedSelIdx]は、HRD初期化後の第一のバッファリング期間での、バッファリング期間SEIメッセージに関連するアクセスユニットに関連付けられた符号化データの第一ビットのCPB中への到着時刻と、同じアクセスユニットに関連付けられた符号化データのCPBからの除去時刻と、の間のSchedSelIdx番目のCPBの遅延を指定する。このシンタクス要素は、initial_cpb_removal_delay_length_minus1+1により与えられるビットの長さを有する。このシンタクス要素は90kHzクロックの単位である。initial_cpb_removal_delay[SchedSelIdx]は、0に等しくなることはなく、90kHzクロック単位でのCPBサイズに相当する時間である
を上回ることはない。
「initial_cpb_removal_delay_offset」[SchedSelIdx]は、符号化アクセスユニットのCPBへの初期配信時刻を指定するために、cpb_removal_delayと組み合わせてSchedSelIdx番目のCPBに用いられる。initial_cpb_removal_delay_offset[SchedSelIdx]は、90kHzクロックの単位である。initial_cpb_removal_delay_offset[SchedSelIdx]シンタクス要素は、ビットの長さがinitial_cpb_removal_delay_length_minus1+1により与えられる固定長コードである。このシンタクス要素はデコーダにより用いられず、(例えば、JCTVC‐I1003の付属書Cに規定される)配信スケジューラ(HSS)に対してだけ必要とされる。
符号化ビデオシーケンス全体にわたり、initial_cpb_removal_delay[SchedSelIdx]とinitial_cpb_removal_delay_offset[SchedSelIdx]との和は、SchedSelIdxの値ごとに一定とすることができる。
「initial_du_cpb_removal_delay」[SchedSelIdx]は、HRD初期化後の第一のバッファリング期間での、バッファリング期間SEIメッセージに関連するアクセスユニットの第一の復号ユニットに関連付けられた符号化データの第一ビットのCPBへの到着時刻と、同じ復号ユニットに関連付けられた符号化データのCPBからの除去時刻と、の間のSchedSelIdx番目のCPBに対する遅延を指定する。このシンタクス要素は、initial_cpb_removal_delay_length_minus1+1により与えられるビットの長さを有する。このシンタクス要素は90kHzクロックの単位である。initial_du_cpb_removal_delay[SchedSelIdx]は、0に等しくなることはなく、90kHzクロック単位でのCPBサイズに相当する時間である
を上回ることはない。
「initial_du_cpb_removal_delay_offset」[SchedSelIdx]は、復号ユニットのCPBへの初期配信時刻を指定するために、cpb_removal_delayと組み合わせてSchedSelIdx番目のCPBに対して用いられる。initial_cpb_removal_delay_offset[SchedSelIdx]は90kHzクロックの単位である。該initial_du_cpb_removal_delay_offset[SchedSelIdx]シンタクス要素は、ビットの長さがinitial_cpb_removal_delay_length_minus1+1により与えられる固定長コードである。このシンタクス要素はデコーダにより用いられず、(例えば、JCTVC‐I1003の付属書Cに規定される)配信スケジューラ(HSS)に対してだけ必要とされる。
符号化ビデオシーケンス全体にわたり、initial_du_cpb_removal_delay[SchedSelIdx]とinitial_du_cpb_removal_delay_offset[SchedSelIdx]との和は、SchedSelIdxの値ごとに一定とすることができる。
本明細書で開示されるシステムおよび方法によるピクチャタイミングSEIメッセージのセマンティクスに関する諸例を以下に示す。特に、修正されたシンタクス要素のセマンティクスに関するさらなる詳細が以下のように示される。
ピクチャタイミングSEIメッセージのシンタクスは、ピクチャタイミングSEIメッセージに関連付けられた符号化ピクチャに対しアクティブであるシーケンスパラメータセットのコンテンツに依存する。しかしながら、瞬時復号リフレッシュ(IDR:Instantaneous Decoding Refresh)アクセスユニットのピクチャタイミングSEIメッセージに、同じアクセスユニット内のバッファリング期間SEIメッセージが先行している場合を除き、関連するシーケンスパラメータセットのアクティブ化(および、ビットストリームの第一のピクチャでないIDRピクチャに対しては、当該符号化ピクチャがIDRピクチャであるという判定)は、符号化ピクチャの第一の符号化スライスネットワーク抽象化レイヤ(NAL)ユニットが復号されるまでは行われない。符号化ピクチャの符号化スライスNALユニットが、NALユニット順序でピクチャタイミングSEIメッセージに後続するので、デコーダが、符号化ピクチャに対しアクティブとなるシーケンスパラメータのパラメータ群が算定されるまで、ピクチャタイミングSEIメッセージを包含する低バイトシーケンスペイロード(RBSP:raw byte sequence payload)を格納し、その後ピクチャタイミングSEIメッセージの構文解析を行うことが必要となる場合があり得る。
ビットストリーム中のピクチャタイミングSEIメッセージの存在は、以下のように指定される。CpbDpbDelaysPresentFlagが1に等しい場合は、符号化ビデオシーケンスのアクセスユニット毎に一つのピクチャタイミングSEIメッセージが存在し得る。上記以外の、(CpbDpbDelaysPresentFlagが0に等しい)場合には、符号化ビデオシーケンスのいずれのアクセスユニットにもピクチャタイミングSEIメッセージは存在し得ない。
「cpb_removal_delay」は、先行するアクセスユニット中の直近のバッファリング期間SEIメッセージに関連するアクセスユニットのCPBからの除去後、ピクチャタイミングSEIメッセージに関連付けられたアクセスユニットデータをバッファから除去する前に待つべきクロックティックの数(JCTVC‐I1003のサブクローズE.2.1を参照)を指定する。また、この値は、JCTVC‐I1003の付属書Cに規定されるように、HSSに関してCPBへのアクセスユニットデータの可能な限り早い到着時刻を計算するためにも使用される。このシンタクス要素は、ビットの長さがcpb_removal_delay_length_minus1+1により与えられる固定長コードである。cpb_removal_delayは、モジュロ2(cpb_removal_delay_length_minus1+1)カウンタの余りである。
シンタクス要素cpb_removal_delayの(ビットでの)長さを決めるcpb_removal_delay_length_minus1の値は、ピクチャタイミングSEIメッセージに関連付けられたプライマリ符号化ピクチャに対しアクティブであるシーケンスパラメータセット中に符号化されたcpb_removal_delay_length_minus1の値であるが、但し、cpb_removal_delayは、バッファリング期間SEIメッセージを包含する先行のアクセスユニットの除去時刻に対するクロックティックの数を指定し、該メッセージは異なる符号化ビデオシーケンスのアクセスユニットであり得る。
「dpb_output_delay」は、ピクチャの復号ピクチャバッファ(DPB)出力時刻を計算するために用いられる。「dpb_output_delay」はアクセスユニット中の最後の復号ユニットのCPBからの除去後、復号ピクチャがDPBから出力される前に待つべきクロックティックの数を指定する(JCTVC‐I1003のサブクローズC.2を参照)。
DPBに関しては、ピクチャが「短期参照のために使用される」または「長期参照のために使用される」ものとしてまだマークされている場合は、その出力時刻にDPBから除去されない。復号ピクチャに対して、一つだけのdpb_output_delayが指定される。シンタクス要素dpb_output_delayの長さは、dpb_output_delay_length_minus1+1によりビットで与えられる。max_dec_pic_buffering[max_temporal_layers_minus1]が0に等しいときは、dpb_output_delayは0に等しい。
JCTVC‐I1003のサブクローズC.2に規定される出力タイミング適合デコーダから出力される任意のピクチャのdpb_output_delayから導出される出力時刻は、復号順で後続する任意の符号化ビデオシーケンス中の全てのピクチャのdpb_output_delayから導出される出力時刻に先行することができる。このシンタクス要素の値により確立されるピクチャ出力順序は、サブクローズにより指定されるPicOrderCnt()の値により確立される順序と同順序であればよい。1に等しいかまたは1に等しいものと推定されるno_output_of_prior_pics_flagを有するIDRピクチャに復号順において先行するので、サブクローズの「バンピング」処理により出力されないピクチャに対し、dpb_output_delayから導出される出力時刻は、同じ符号化ビデオシーケンス内の全てのピクチャに対するPicOrderCnt()の値の増加とともに増加し得る。
「num_decoding_units_minus1」プラス1は、ピクチャタイミングSEIメッセージが関連付けられたアクセスユニット中の復号ユニットの数を指定する。num_decoding_units_minus1の値は、両端値を含めて0からPicWidthInCtbs*PicHeightInCtbs−1までの範囲内にあればよい。
1に等しい「common_du_cpb_removal_delay_flag」は、シンタクス要素common_du_cpb_removal_delayが存在することを指定する。0に等しいcommon_du_cpb_removal_delay_flagは、シンタクス要素common_du_cpb_removal_delayが存在しないことを指定する。
「common_du_cpb_removal_delay」は、以下のように情報を指定する:復号ユニットがピクチャタイミングSEIメッセージに関連付けられたアクセスユニットの第一の復号ユニットである場合は、common_du_cpb_removal_delayは、先行するアクセスユニットの直近のバッファリング期間SEIメッセージに関連付けられたアクセスユニット中の最後の復号ユニットのCPBからの除去後、ピクチャタイミングSEIメッセージに関連付けられたアクセスユニットの第一の復号ユニットをCPBから除去する前に待つべきサブピクチャクロックティックの数(JCTVC‐I1003のサブクローズE.2.1を参照)を指定する。
上記以外の場合には、common_du_cpb_removal_delayは、ピクチャタイミングSEIメッセージに関連付けられたアクセスユニット中の先行する復号ユニットのCPBからの除去後、ピクチャタイミングSEIメッセージに関連付けられたアクセスユニット中の現復号ユニットをCPBから除去する前に待つべきサブピクチャクロックティックの数(JCTVC‐I1003のサブクローズE.2.1参照)を指定する。また、この値は、付属書Cに規定されるように、HSSに関してCPBへの復号ユニットデータの可能な限り早い到着時刻を計算するためにも使用される。このシンタクス要素は、ビットの長さがcpb_removal_delay_length_minus1+1により与えられる固定長コードである。common_du_cpb_removal_delayは、モジュロ2(cpb_removal_delay_length_minus1+1)カウンタの余りである。
「common_du_cpb_removal_delay」を指定する代わりの方法は、以下の通りである:
「common_du_cpb_removal_delay」は、CPBから最後の復号ユニットを除去した後、ピクチャタイミングSEIメッセージに関連するアクセスユニットの現復号ユニットをCPBから除去する前に待つべきサブピクチャクロックティックの数(JCTVC‐I1003のサブクローズE.2.1を参照)を指定する。また、この値は、付属書Cに規定されるように、HSSに関してCPBへの復号ユニットデータの可能な限り早い到着時刻を計算するためにも使用される。このシンタクス要素は、ビットの長さがcpb_removal_delay_length_minus1+1により与えられる固定長コードである。common_du_cpb_removal_delayは、モジュロ2(cpb_removal_delay_length_minus1+1)カウンタの余りである。
シンタクス要素common_du_cpb_removal_delayの(ビットでの)長さを決めるcpb_removal_delay_length_minus1の値は、ピクチャタイミングSEIメッセージに関連付けられた符号化ピクチャに対しアクティブであるシーケンスパラメータセット中に符号化されたcpb_removal_delay_length_minus1の値であるが、但し、common_du_cpb_removal_delayは、バッファリング期間SEIメッセージを包含する先行のアクセスユニット中の第一の復号ユニットの除去時刻に関するサブピクチャクロックティックの数を指定し、該メッセージは異なる符号化ビデオシーケンスのアクセスユニットであってよい。
「num_nalus_in_du_minus1[i]」プラス1は、ピクチャタイミングSEIメッセージに関連付けられたアクセスユニットのi番目の復号ユニット中のNALユニットの数を指定する。num_nalus_in_du_minus1[i]の値は、両端値を含めて0からPicWidthInCtbs*PicHeightInCtbs−1までの範囲内にあればよい。
アクセスユニットの第一の復号ユニットはアクセスユニットにおける復号順で最初のnum_nalus_in_du_minus1[0]+1の連続するNALユニットから成る。アクセスユニットのi番目の(iは0より大きい)復号ユニットは、復号順でアクセスユニットの前の復号ユニットの最後のNALユニットの直後に続くnum_nalus_in_du_minus1[i]+1の連続するNALユニットから成る。各復号ユニットに、少なくとも一つのVCL NALユニットがあり得る。VCL NALユニットに関連付けられた全ての非VCL NALユニットは、同じ復号ユニット中に含まれてもよい。
「du_cpb_removal_delay[i]」は、先行するアクセスユニット中の直近のバッファリング期間SEIメッセージに関連付けられたアクセスユニット中の第一の復号ユニットのCPBからの除去後、ピクチャタイミングSEIメッセージに関連するアクセスユニットのi番目の復号ユニットをCPBから除去する前に待つべきサブピクチャクロックティックの数(JCTVC‐I1003のサブクローズE.2.1を参照)を指定する。また、この値は、(例えば、JCTVC‐I1003の付属書Cに規定されるように)HSSに関してCPBへの復号ユニットデータの可能な限り早い到着時刻を計算するためにも使用される。このシンタクス要素は、ビットの長さがcpb_removal_delay_length_minus1+1により与えられる固定長コードである。du_cpb_removal_delay[i]は、モジュロ2(cpb_removal_delay_length_minus1+1)カウンタの余りである。
シンタクス要素du_cpb_removal_delay[i]の(ビットでの)長さを決めるcpb_removal_delay_length_minus1の値は、ピクチャタイミングSEIメッセージに関連付けられた符号化ピクチャに対しアクティブであるシーケンスパラメータセット中に符号化されたcpb_removal_delay_length_minus1の値であるが、但し、du_cpb_removal_delay[i]は、バッファリング期間SEIメッセージを包含する先行のアクセスユニット中の第一の復号ユニットの除去時刻に関するサブピクチャクロックティックの数を指定し、該メッセージは異なる符号化ビデオシーケンスのアクセスユニットであってよい。
一構成において、復号ユニット除去のタイミングおよび復号ユニットの復号は、以下のように実装することができる。
SubPicCpbFlagが0に等しい場合、変数CpbRemovalDelay(m)は、復号ユニットmであるアクセスユニットに関連付けられたピクチャタイミングSEIメッセージ中のcpb_removal_delayの値に設定され、変数Tcはtcに設定される。等しくない場合、SubPicCpbFlagが1に等しく、common_du_cpb_removal_delay_flagが0である場合、変数CpbRemovalDelay(m)は、復号ユニットmを含むアクセスユニットに関連付けられたピクチャタイミングSEIメッセージの復号ユニットm(mは0からnum_decoding_units_minus1までの範囲)のdu_cpb_removal_delay[i]の値に設定され、変数Tcはtc_subに設定される。
一部の場合、上記以外に、SubPicCpbFlagが1に等しく、common_du_cpb_removal_delay_flagが0である場合は、変数CpbRemovalDelay(m)は、復号ユニットmを含むアクセスユニットに関連付けられたピクチャタイミングSEIメッセージの復号ユニットm(mは0からnum_decoding_units_minus1までの範囲)の(m+1)*du_cpb_removal_delay[i]の値に設定され、変数Tcはtc_subに設定される。
それ以外の場合には、SubPicCpbFlagが1に等しく、common_du_cpb_removal_delay_flagが1である場合、変数CpbRemovalDelay(m)は、復号ユニットmを含むアクセスユニットに関連付けられたピクチャタイミングSEIメッセージの復号ユニットmのcommon_du_cpb_removal_delayの値に設定され、変数Tcはtc_subに設定される。
復号ユニットmが、nが0に等しい復号ユニット(HRDを初期化するアクセスユニットの第一の復号ユニット)であるとき、CPBからの復号ユニットの名目除去時刻は、
により指定される。
復号ユニットmが、HRDを初期化しないバッファリング期間の第一のアクセスユニットの第一の復号ユニットであるとき、CPBからの復号ユニットの名目除去時刻は、tr,n(m)=tr,n(mb)+Tc*CpbRemovalDelay(m)により指定され、前式中のtr,n(mb)は前のバッファリング期間の第一の復号ユニットの名目除去時刻である。
復号ユニットmがバッファリング期間の第一の復号ユニットであるとき、mbは復号ユニットmの除去時刻tr,n(m)はmに等しく設定される。バッファリング期間の第一の復号ユニットでない復号ユニットmの名目除去時刻tr,n(m)は、tr,n(m)=tr,n(mb)+Tc*CpbRemovalDelay(m)により与えられ、前式中のtr,n(mb)は、現在のバッファリング期間の第一の復号ユニットの名目除去時刻である。
復号ユニットmの除去時刻は、以下のように指定される。low_delay_hrd_flagが0に等しく、またはtr,n(m)≧taf(m)である場合、復号ユニットmの除去時刻は、tr(m)=tr,n(m)により指定される。上記以外の(low_delay_hrd_flagが1に等しく、tr,n(m)<taf(m)である)場合には、復号ユニットmの除去時刻は、
により指定される。後者の(low_delay_hrd_flagが1に等しく、tr,n(m)<taf(m)である)場合は、復号ユニットmのサイズb(m)が非常に大きくそれが名目除去時刻での除去を妨げることを示す。
別の場合において、復号ユニットmの除去時刻は、以下のように指定される。low_delay_hrd_flagが0に等しいか、またはtr,n(m)≧taf(m)である場合、復号ユニットmの除去時刻は、tr(m)=tr,n(m)により指定される。上記以外の(low_delay_hrd_flagが1に等しく、tr,n(m)<taf(m)である)場合には、アクセスユニットの最後の復号ユニットでない復号ユニットmの除去時刻は、tr(m)=taf(m)により指定され、アクセスユニットの最後の復号ユニットである復号ユニットmの除去時刻は、
により指定される。後者の(low_delay_hrd_flagが1に等しく、tr,n(m)<taf(m)である)場合は、復号ユニットmのサイズb(m)が非常に大きくそれが名目除去時刻での除去を妨げることを示す。
別の場合において、復号ユニットmの除去時刻は、以下のように指定される。low_delay_hrd_flagが0に等しいか、またはtr,n(m)≧taf(m)である場合、復号ユニットmの除去時刻は、tr(m)=tr,n(m)により指定される。上記以外の(low_delay_hrd_flagが1に等しく、tr,n(m)<taf(m)である)場合には、アクセスユニットの最後の復号ユニットではない復号ユニットmの除去時刻は、tr(m)=taf(m)により指定され、アクセスユニットの最後の復号ユニットである復号ユニットmの除去時刻は、
により指定される。後者の(low_delay_hrd_flagが1に等しく、tr,n(m)<taf(m)である)場合は、復号ユニットmのサイズb(m)が非常に大きくそれが名目除去時刻での除去を妨げることを示す。
別の場合において、復号ユニットmの除去時刻は、以下のように指定される。low_delay_hrd_flagが0に等しいか、またはtr,n(m)≧taf(m)である場合、復号ユニットmの除去時刻は、tr(m)=tr,n(m)により指定される。上記以外の(low_delay_hrd_flagが1に等しく、tr,n(m)<taf(m)である)場合には、復号ユニットmの除去時刻は、tr(m)=taf(m)により指定される。後者の(low_delay_hrd_flagが1に等しく、tr,n(m)<taf(m)である)場合は、復号ユニットmのサイズb(m)が非常に大きくそれが名目除去時刻での除去を妨げることを示す。
SubPicCpbFlagが1に等しいとき、アクセスユニットnの名目CPB除去時刻tr,n(n)はアクセスユニットnの最後の復号ユニットの名目CPB除去時刻に設定され、アクセスユニットnのCPB除去時刻tr(n)はアクセスユニットnの最後の復号ユニットのCPB除去時刻に設定される。
SubPicCpbFlagが0に等しいとき、各復号ユニットはアクセスユニットであり、したがってアクセスユニットnの名目CPB除去時刻およびCPB除去時刻は、復号ユニットnの名目CPB除去時刻およびCPB除去時刻である。
復号ユニットmのCPB除去時刻に、復号ユニットが瞬時に復号される。
本明細書に開示されるシステムおよび方法によるピクチャタイミングSEIメッセージに関する修正されたシンタクスおよびセマンティクスの別の例が、以下の表(2)に示される。本明細書に開示されるシステムおよび方法による修正は、太字で表示される。
表(2)に示された例は、シンタクス要素common_num_nalus_in_du_minus1を含み、該要素は、復号ユニットを除去するときにCPBから除去されるべきデータの量を算定するために使用することができる。「common_num_nalus_in_du_minus1」プラス1は、ピクチャタイミングSEIメッセージが関連するアクセスユニットの各復号ユニットにおけるNALユニットの数を指定する。common_num_nalus_in_du_minus1の値は、両端値を含めて0からPicWidthInCtbs*PicHeightInCtbs−1までの範囲内にあればよい。
アクセスユニットの第一の復号ユニットはアクセスユニットにおける復号順で最初のcommon_num_nalus_in_du_minus1+1の連続するNALユニットから成る。アクセスユニットのi番目の(iは0より大きい)復号ユニットは、復号順でアクセスユニットの前の復号ユニットの最後のNALユニットの直後に続くcommon_num_nalus_in_du_minus1+1の連続するNALユニットから成る。各復号ユニットに、少なくとも一つのVCL NALユニットがあればよい。VCL NALユニットに関連付けられた全ての非VCL NALユニットは、同じ復号ユニットに含まれてもよい。
本明細書に開示されるシステムおよび方法によるピクチャタイミングSEIメッセージに対する修正されたシンタクスおよびセマンティクスの別の例が、以下の表(3)に示される。本明細書に開示されるシステムおよび方法による修正は太字で表示される。
表(3)に示す例は、1に等しいときにシンタクス要素「common_num_nalus_in_du_minus1」が存在することを指定する、シンタクス要素「common_num_nalus_in_du_flag」を含む。0に等しい「common_num_nalus_in_du_flag」は、シンタクス要素「common_num_nalus_in_du_minus1」が存在しないことを指定する。
さらに別の実施形態において、フラグcommon_du_cpb_removal_delay_flag common_num_nalus_in_du_minus1は送信しなくてもよい。代わりに、シンタクス要素common_num_nalus_in_du_minus1およびcommon_du_cpb_removal_delayを毎回送信することができよう。この場合は、これらの要素がシグナリングされないことを示すために、これらのシンタクス要素に対して0(またはその他)の値を使えばよい。
本システムおよび方法は、ピクチャタイミングSEIメッセージのシンタクス要素およびセマンティクスに対する修正に加えて、サブピクチャベースのCPBオペレーションおよびアクセスユニットレベルのCPBオペレーションによって同じタイミングの復号ユニット除去が生じるように、ビットストリーム制約事項を実装することもできる。
sub_pic_cpb_params_present_flagが1に等しいとき、サブピクチャレベルCPB除去遅延パラメータが存在し、CPBがアクセスユニットレベルまたはサブピクチャレベルで作動可能なことを指定する。0に等しいsub_pic_cpb_params_present_flagは、サブピクチャレベルCPB除去遅延パラメータが存在せずCPBがアクセスユニットレベルで作動することを、指定する。sub_pic_cpb_params_present_flagが存在しないとき、その値は0に等しいと推定される。
アクセスユニットレベルまたはサブピクチャレベルの両方でのオペレーションをサポートするために、以下のビットストリーム制約事項を用いることができる:sub_pic_cpb_params_present_flagが1である場合、cpb_removal_delayおよび全てのiに対するdu_cpb_removal_delay[i]の値をシグナリングする際に、以下の制約事項に従うことがビットストリーム適合の要件である:
前式中のdu_cpb_removal_delay[i]は復号ユニットCPB除去遅延パラメータであり、tcはクロックティックであり、tc,subはサブピクチャクロックティックであり、num_decoding_units_minus1はアクセスユニット中の復号ユニットの1でオフセットされた量であり、iはインデックスである。一部の実施形態では、前述の制約事項を満たすために許容差パラメータを加えることができよう。
アクセスユニットレベルまたはサブピクチャレベルの両方でのオペレーションをサポートするために、以下のようなビットストリーム制約事項を用いることができる:変数Tdu(k)を以下のように定義する:
前式中のdu_cpb_removal_delay_minus1k[i]およびnum_decoding_units_minus1kは、k番目のアクセスユニットのi番目の復号ユニットに対するパラメータであり(HRDを初期化したアクセスユニットはk=0であり、k<1に対しTdu(k)=0)、さらに前式中、du_cpb_removal_delay_minus1k[i]+1=du_cpb_removal_delay_minus1k[i]はk番目のアクセスユニットのI番目の復号ユニットに対する復号ユニットCPB除去遅延パラメータであり、num_decoding_units_minus1kはk番目のアクセスユニット中の復号ユニットの数であり、tcはクロックティックであり、tc,subはサブピクチャクロックティックであり、iおよびkはインデックスである。そして、ピクチャタイミングフラグ(例えばsub_pic_cpb_params_present_flag)が1に設定されているときは、以下の制約事項が真であり得る:すなわち(au_cpb_removal_delay_minus1+1)*tc==Tdu(k)、前式中の(au_cpb_removal_delay_minus1+1)=cpb_removal_delay、これはCPB除去遅延である。しかしてこの場合、CPB除去遅延(au_cpb_removal_delay_minus1+1)は、サブピクチャベースのCPBオペレーションおよびアクセスユニットベースのCPBオペレーションの作動により、アクセスユニット除去とアクセスユニットの最後の復号ユニットの除去とが同じタイミングで生じるように設定される。
アクセスユニットレベルまたはサブピクチャレベルの両方でのオペレーションをサポートするために、以下のビットストリーム制約事項を用いることができる:sub_pic_cpb_params_present_flagが1である場合、cpb_removal_delayおよび全てのiに対するdu_cpb_removal_delay[i]の値をシグナリングする際に、以下の制約事項に従うことがビットストリーム適合の要件である:
前式中のdu_cpb_removal_delay[i]は復号ユニットCPB除去遅延パラメータであり、tcはクロックティックであり、tc,subはサブピクチャクロックティックであり、num_decoding_units_minus1はアクセスユニットの復号ユニットの1でオフセットされた量であり、iはインデックスである。
アクセスユニットレベルまたはサブピクチャレベルの両方でのオペレーションをサポートするために、以下のビットストリーム制約事項を用いることもできる:sub_pic_cpb_params_present_flagが1である場合、cpb_removal_delayおよびdu_cpb_removal_delay[num_decoding_units_minus1]の値をシグナリングする際に、cpb_removal_delay*tc=du_cpb_removal_delay[num_decoding_units_minus1]*tc,subの制約事項に従うことがビットストリーム適合の要件であり、前式中のdu_cpb_removal_delay[num_decoding_units_minus1]はnum_decoding_units_minus1番目の復号ユニットの復号ユニットCPB除去遅延パラメータであり、tcはクロックティックであり、tc,subはサブピクチャクロックティックであり、num_decoding_units_minus1はアクセスユニットの復号ユニットの1でオフセットされた量である。一部の実施形態では、前述の制約事項を満たすために許容差パラメータを加えることができよう。
アクセスユニットレベルまたはサブピクチャレベルの両方でのオペレーションをサポートするために、以下のビットストリーム制約事項を用いることもきる:sub_pic_cpb_params_present_flagが1である場合、cpb_removal_delayおよび全てのiについてのdu_cpb_removal_delay[i]の値をシグナリングするときに、−1≦(cpb_removal_delay*tc−du_cpb_removal_delay[num_decoding_units_minus1]*tc,sub)≦1の制約事項に従うことがビットストリーム適合の要件であり、前式中du_cpb_removal_delay[num_decoding_units_minus1]はnum_decoding_units_minus1番目の復号ユニットの復号ユニットCPB除去遅延パラメータであり、tcはクロックティックであり、tc,subはサブピクチャクロックティックであり、num_decoding_units_minus1はアクセスユニットの復号ユニットの1でオフセットされた量である。
さらに、本システムおよび方法は、復号ユニット除去のタイミングも修正することが可能である。サブピクチャレベルCPB除去遅延パラメータが存在するときは、(low_delay_hrd_flagが1であり、tr,n(m)<taf(m)である場合)「大きなピクチャ」に対する復号ユニットの除去時刻は、クロックティックカウンタとサブピクチャクロックティックカウンタとにより生じ得る差を補償するために変更することができる。
sub_pic_cpb_params_present_flagが1に等しいときは、サブピクチャレベルCPB除去遅延パラメータが存在し、CPBはアクセスユニットレベルまたはサブピクチャレベルで作動可能である。0に等しいsub_pic_cpb_params_present_flagは、サブピクチャレベルCPB除去遅延パラメータが存在せず、CPBがアクセスユニットレベルで作動することを指定する。sub_pic_cpb_params_present_flagが存在しないとき、その値は0に等しいと推定される。
具体的に、復号ユニット除去のタイミングおよび復号ユニットの復号の実装の一例を以下に示す。変数SubPicCpbPreferredFlagは、外部手段によって指定されるか、または外部手段によって指定されないときには0に設定される。変数SubPicCpbFlagは、以下のように導出される:SubPicCpbFlag=SubPicCpbPreferredFlag&&sub_pic_cpb_params_present_flag。SubPicCpbFlagが0に等しい場合、CPBはアクセスユニットレベルで作動し、各復号ユニットはアクセスユニットである。上記以外の場合には、CPBはサブピクチャレベルで作動し、各復号ユニットはアクセスユニットのサブセットである。
SubPicCpbFlagが0に等しい場合、変数CpbRemovalDelay(m)は、復号ユニットmであるアクセスユニットに関連付けられたピクチャタイミングSEIメッセージのcpb_removal_delayの値に設定され、変数Tcはtcに設定される。上記以外の場合には、変数CpbRemovalDelay(m)は、復号ユニットmを含むアクセスユニットに関連するピクチャタイミングSEIメッセージの復号ユニットmのdu_cpb_removal_delay[i]の値に設定され、変数Tcはtc_subに設定される。
復号ユニットmが、nが0に等しい復号ユニットであるとき(HRDを初期化するアクセスユニットの第一の復号ユニット)、CPBからの復号ユニットの名目除去時刻は、
により指定される。
復号ユニットmが、HRDを初期化しないバッファリング期間の第一のアクセスユニットの第一の復号ユニットであるとき、CPBからの復号ユニットの名目除去時刻は、tr,n(m)=tr,n(mb)+Tc*CpbRemovalDelay(m)により指定され、前式中のtr,n(mb)は前のバッファリング期間の第一の復号ユニットの名目除去時刻である。
復号ユニットmがバッファリング期間の第一の復号ユニットであるとき、mbは復号ユニットmの除去時刻tr,n(m)におけるmに等しく設定される。
バッファリング期間の第一の復号ユニットでない復号ユニットmの名目除去時刻tr,n(m)は、tr,n(m)=tr,n(mb)+Tc*CpbRemovalDelay(m)により与えられ、前式中のtr,n(mb)は、現在のバッファリング期間の第一の復号ユニットの名目除去時刻である。
復号ユニットmの除去時刻は、以下のように指定される。すなわち、変数ClockDiffが、ClockDiff=(num_units_in_tick−(num_units_in_sub_tick*(num_decoding_units_minus1+1))/time_scale)として定義される。一部の場合において、パラメータnum_units_in_tick、num_units_in_sub_tick、num_decoding_units_minus1が、以下の式が満たされるようにシグナリングされることがビットストリーム適合の要件である:(num_units_in_tick−(num_units_in_sub_tick*(num_decoding_units_minus1+1)))≧0。
一部の他の場合において、パラメータnum_units_in_tick、num_units_in_sub_tick、num_decoding_units_minus1が、次の式が満たされるようにシグナリングされることがビットストリーム適合の要件である:(num_units_in_tick−(num_units_in_sub_tick*(num_decoding_units_minus1+1)))≦0。low_delay_hrd_flagが0に等しいか、またはtr,n(m)≧taf(m)である場合、復号ユニットmの除去時刻は、tr(m)=tr,n(m)により指定される。
上記以外の(low_delay_hrd_flagが1に等しく、tr,n(m)<taf(m)である)場合であって、sub_pic_cpb_params_present_flagが1に等しく、CPBがサブピクチャレベルで作動しているときで且つClockDiffがゼロより大きい場合にはアクセスユニットnの最後の復号ユニットであるときの復号ユニットmの除去時刻は、tr(m)=tr,n(m)+Tc*Ceil((taf(m)−tr,n(m))/Tc)+ClockDiffにより指定される。
上記以外の(low_delay_hrd_flagが1に等しく、tr,n(m)<taf(m)である)場合であって、sub_pic_cpb_params_present_flagが1に等しく、CPBがアクセスユニットレベルで作動しているときで且つClockDiffがゼロより小さい場合にはアクセスユニットnの除去時刻は、tr(m)=tr,n(m)+tc*Ceil((taf(m)−tr,n(m))/tc)−ClockDiffにより指定される。
上記以外の(low_delay_hrd_flagが1に等しく、tr,n(m)<taf(m)である)場合、復号ユニットmの除去時刻は、tr(m)=tr,n(m)+Tc*Ceil((taf(m)−tr,n(m))/Tc)により指定される。後者の(low_delay_hrd_flagが1に等しく、tr,n(m)<taf(m)である)場合は、復号ユニットmのサイズb(m)が非常に大きくそれが名目除去時刻での除去を妨げることを示す。
上記以外の(low_delay_hrd_flagが1に等しく、tr,n(m)<taf(m)である)場合であって、ピクチャタイミングフラグが1に設定され、且つCPBがサブピクチャレベルで作動しているとき、アクセスユニットの最後の復号ユニットmに対する除去時刻tr(m)は:tr(m)=tr,n(m)+min((tc_sub*Ceil((taf(m)−tr,n(m))/tc_sub)),(tc*Ceil((taf(n)−tr,n(n))/tc)))により指定され、前式中のtr,n(m)は最後の復号ユニットmの名目除去時刻であり、tc_subはサブピクチャクロックティックであり、Ceil()はシーリング関数であり、taf(m)は最後の復号ユニットmの最終到着時刻であり、tr,n(n)はアクセスユニットnの名目除去時刻であり、tcはクロックティックであり、taf(n)はアクセスユニットnの最終到着時刻である。
上記以外の(low_delay_hrd_flagが1に等しく、tr,n(n)<taf(n)である)場合で、ピクチャタイミングフラグが1に設定され、CPBがアクセスユニットレベルで作動しているとき、アクセスユニットnの除去時刻tr(n)は:tr(n)=tr,n(n)+min((tc_sub*Ceil((taf(m)−tr,n(m))/tc_sub)),(tc*Ceil((taf(n)−tr,n(n))/tc)))により指定され、前式中のtr,n(m)は最後の復号ユニットnの名目除去時刻であり、tc_subはサブピクチャクロックティックであり、Ceil()はシーリング関数であり、taf(m)は最後の復号ユニットmの最終到着時刻であり、tr,n(n)はアクセスユニットnの名目除去時刻であり、tcはクロックティックであり、taf(n)はアクセスユニットnの最終到着時刻である。
上記以外の(low_delay_hrd_flagは1に等しく、tr,n(m)<taf(m)である)場合で、ピクチャタイミングフラグが1に設定され、CPBがサブピクチャレベルで作動しているとき、アクセスユニットの最後の復号ユニットmに対する除去時刻tr(m)は:tr(m)=tr,n(m)+(tc*Ceil((taf(n)−tr,n(n))/tc))により指定され、前式中のtr,n(m)は最後の復号ユニットmの名目除去時刻であり、tc_subはサブピクチャクロックティックであり、Ceil()はシーリング関数であり、taf(m)は最後の復号ユニットmの最終到着時刻であり、tr,n(n)はアクセスユニットnの名目除去時刻であり、tcはクロックティックであり、taf(n)はアクセスユニットnの最終到着時刻である。
上記以外の(low_delay_hrd_flagが1に等しく、tr,n(n)<taf(n)である)場合で、ピクチャタイミングフラグが1に設定され、CPBがアクセスユニットレベルで作動しているとき、アクセスユニットnに対する除去時刻tr(n)は:tr(n)=tr,n(n)+(tc*Ceil((taf(n)−tr,n(n))/tc))により指定され、前式中tr,n(m)は最後の復号ユニットnの名目除去時刻であり、tc_subはサブピクチャクロックティックであり、Ceil()はシーリング関数であり、taf(m)は最後の復号ユニットmの最終到着時刻であり、tr,n(n)はアクセスユニットnの名目除去時刻であり、tcはクロックティックであり、taf(n)はアクセスユニットnの最終到着時刻である。
上記以外の(low_delay_hrd_flagが1に等しく、tr,n(m)<taf(m)である)場合で、ピクチャタイミングフラグが1に設定され、CPBがサブピクチャレベルで作動しているとき、アクセスユニットの最後の復号ユニットでない復号ユニットに対する除去時刻は、tr(m)=taf(m)として設定され、前式中のtaf(m)は復号ユニットmの最終到着時刻である。そして、アクセスユニットの最後の復号ユニットmの除去時刻tr(m)は:tr(m)=tr,n(m)+(tc_sub*Ceil((taf(m)−tr,n(m))/tc_sub))により設定され、前式中のtr,n(m)は最後の復号ユニットmの名目除去時刻であり、tc_subはサブピクチャクロックティックであり、Ceil()はシーリング関数であり、taf(m)は最後の復号ユニットmの最終到着時刻であり、tr,n(n)はアクセスユニットnの名目除去時刻であり、tcはクロックティックであり、taf(n)はアクセスユニットnの最終到着時刻であり、taf(m)はアクセスユニットnの最後の復号ユニットmの最終到着時刻である。
上記以外の(low_delay_hrd_flagが1に等しく、tr,n(m)<taf(m)である)場合で、ピクチャタイミングフラグが1に設定され、CPBがサブピクチャレベルで作動しているとき、アクセスユニットの最後の復号ユニットでない復号ユニットに対する除去時刻は、tr(m)=taf(m)として設定され、前式中taf(m)は復号ユニットmの最終到着時刻である。そして、アクセスユニットの最後の復号ユニットmの除去時刻tr(m)は:tr(m)=tr,n(m)+(tc*Ceil((taf(m)−tr,n(m))/tc))により設定され、前式中のtr,n(m)は最後の復号ユニットmの名目除去時刻であり、tc_subはサブピクチャクロックティックであり、Ceil()はシーリング関数であり、taf(m)は最後の復号ユニットmの最終到着時刻であり、tr,n(n)はアクセスユニットnの名目除去時刻であり、tcはクロックティックであり、taf(n)はアクセスユニットnの最終到着時刻であり、taf(m)はアクセスユニットnの最後の復号ユニットmの最終到着時刻である。
上記以外の(low_delay_hrd_flagが1に等しく、tr,n(m)<taf(m)である)場合で、ピクチャタイミングフラグが1に設定され、CPBがサブピクチャレベルで作動しているとき、復号ユニットに対する除去時刻はtr(m)=taf(m)として設定され、前式中のtr,n(m)は復号ユニットmの名目除去時刻であり、tc_subはサブピクチャクロックティックであり、Ceil()はシーリング関数であり、taf(m)は復号ユニットmの最終到着時刻であり、tr,n(n)はアクセスユニットnの名目除去時刻であり、tcはクロックティックであり、taf(n)はアクセスユニットnの最終到着時刻であり、taf(m)はアクセスユニットn中の復号ユニットmの最終到着時刻である。
上記以外の(low_delay_hrd_flagが1に等しく、tr,n(n)<taf(n)である)場合で、ピクチャタイミングフラグが1に設定され、CPBがアクセスユニットレベルで作動しているとき、アクセスユニットnに対する除去時刻tr(n)は:tr(n)=taf(n)により設定され、前式中のtr,n(m)は最後の復号ユニットnの名目除去時刻であり、tc_subはサブピクチャクロックティックであり、Ceil()はシーリング関数であり、taf(m)は最後の復号ユニットmの最終到着時刻であり、tr,n(n)はアクセスユニットnの名目除去時刻であり、tcはクロックティックであり、taf(n)はアクセスユニットnの最終到着時刻である。
SubPicCpbFlagが1に等しいとき、アクセスユニットnの名目CPB除去時刻tr,n(n)はアクセスユニットn中の最後の復号ユニットの名目CPB除去時刻に設定され、アクセスユニットnのCPB除去時刻tr(n)はアクセスユニットn中の最後の復号ユニットのCPB除去時刻に設定される。
SubPicCpbFlagが0に等しいとき、各復号ユニットはアクセスユニットであり、したがってアクセスユニットnの名目CPB除去時刻およびCPB除去時刻は、復号ユニットnの名目CPB除去時刻およびCPB除去時刻である。復号ユニットmのCPB除去時刻において復号ユニットは瞬時に復号される。
前述により示されるように、本明細書に開示されるシステムおよび方法は、サブピクチャベースのパラメータを搬送するピクチャタイミングSEIメッセージビットストリームを修正するシンタクスおよびセマンティクスを提供する。一部の構成において、本明細書に開示されるシステムおよび方法は、HEVC規格に適用することができる。
便宜上、いくつかの定義が以下のように与えられ、これらは本明細書に開示されるシステムおよび方法に適用可能である。ランダムアクセスポイントとは、ビットストリームの復号が、現ピクチャおよび出力順で前記現ピクチャに後続する全てのピクチャを復号するためにランダムアクセスポイントに先行するビットストリーム中のいかなるポイントへのアクセスも必要としない、データのストリーム(例えばビットストリーム)における任意のポイントでもよい。
バッファリング期間は、バッファリング期間SEIメッセージの二つのインスタンス間にある復号順のアクセスユニットのセットとして指定することができる。付加拡張情報(SEI)は、VCL NALユニットから符号化ピクチャのサンプルを復号するのに必要でない情報を包含し得る。SEIメッセージは、復号、表示または他の目的に関係する手順を補助することができる。出力順序がHEVC規格に適合するようにこの情報を処理するために、適合デコーダは必ずしも必要ない場合もある(例えば、HEVC規格(JCTVC‐I1003)の付属書Cは適合性の規格を含む)。いくつかのSEIメッセージ情報は、ビットストリーム適合性および出力タイミングのデコーダ適合性をチェックするために用いることができる。
バッファリング期間SEIメッセージは、バッファリング期間に関係するSEIメッセージであってよい。ピクチャタイミングSEIメッセージは、CPB除去タイミングに関係するSEIメッセージであってよい。これらのメッセージは、ビットストリームの到着タイミングおよび符号化ピクチャの除去タイミングを定義するシンタクスおよびセマンティクスを定義することができる。
符号化ピクチャバッファ(CPB)は、仮想リファレンスデコーダ(HRD)において指定された復号順のアクセスユニットを包含する先入れ先出しバッファでもよい。アクセスユニットは、復号順に連続し、ちょうど一つの符号化ピクチャを包含する、ネットワークアクセスレイヤ(NAL)ユニットのセットとすることができる。アクセスユニットは、符号化ピクチャの符号化スライスNALユニットに加えて、符号化ピクチャのスライスを包含しない他のNALユニットも含んでもよい。アクセスユニットの復号は常に復号ピクチャをもたらす。NALユニットは、後続するデータの型の指示と、そのデータを必要に応じてエミュレーション防止バイトが組み入れられたローバイトシーケンスペイロードの形で包含するバイト群と、を含むシンタクス構造体でもよい。
本明細書で用いる「共通」という用語は、一般に、複数のものに適用可能なシンタクス要素または変数を言う。例えば、ピクチャタイミングSEIメッセージにおけるシンタクス要素において、「共通」という用語は、シンタクス要素(例えばcommon_du_cpb_removal_delay)が当該ピクチャタイミングSEIメッセージに関連付けられたアクセスユニット中の全ての復号ユニットに適用可能であることを意味し得る。さらに、データの単位は、「n」および「m」に関連付けて表され、それぞれ一般にアクセスの単位および復号の単位を示す。
以降に、様々な構成について図面を参照しながら説明するが、図面中の同じ参照番号は機能的に類似の要素を示す場合もある。本明細書において一般的に説明され図示されるシステムおよび方法は、多種多様な異なる構成に配置および設計することができる。しかして、図に表された以下のいくつかの構成のより詳細な説明は、請求の範囲を制限する意図はなく、単に本発明のシステムおよび方法の代表例である。
図1Aは、メッセージを送信し、ビットストリームをバッファリングするためのシステムおよび方法が実装可能な一つ以上の電子デバイス102の例を示すブロック図である。この例では、電子デバイスA102aおよび電子デバイスB102bが示されている。但し、電子デバイスA102aおよび電子デバイスB102bに関して説明する特徴および機能の一つ以上は、一部の構成では単一の電子デバイスに組み合わせてもよいことに留意する必要がある。
電子デバイスA102aは、エンコーダ104を含む。エンコーダ104は、メッセージ生成モジュール108を含む。電子デバイスA102a内に含まれる要素(例えばエンコーダ104およびメッセージ生成モジュール108)の各々は、ハードウェア、ソフトウェアまたはその両方の組み合わせとして実装することが可能である。
電子デバイスA102aは、一つ以上の入力ピクチャ106を取得することが可能である。一部の構成において、入力ピクチャ(群)106は、イメージセンサを用いて電子デバイスA102aに取り込むこともでき、メモリから読み出すこともでき、および/または別の電子デバイスから受信することもできる。
エンコーダ104は、入力ピクチャ(群)106を符号化して、符号化データを生成することが可能である。例えば、エンコーダ104は、一連の入力ピクチャ106(例えばビデオ)を符号化できる。一構成において、エンコーダ104はHEVCエンコーダとすることが可能である。符号化データは、デジタルデータ(例えばビットストリーム114の一部)とすればよい。エンコーダ104は、入力信号に基づいてオーバーヘッドシグナリングを生成することができる。
メッセージ生成モジュール108は、一つ以上のメッセージを生成することができる。例えばメッセージ生成モジュール108は、一つ以上のSEIメッセージまたは他のメッセージを生成することが可能である。サブピクチャレベルでのオペレーションをサポートするCPBに対し、電子デバイス102は、サブピクチャパラメータ(例えばCPB除去遅延パラメータ)を送信することが可能である。具体的に、電子デバイス102(例えばエンコーダ104)は、共通復号ユニットCPB除去遅延パラメータを、ピクチャタイミングSEIメッセージに含めるべきかどうかを判定することが可能である。例えば、エンコーダ104が、ピクチャタイミングSEIメッセージに共通復号ユニットCPB除去遅延パラメータ(例えばcommon_du_cpb_removal_delay)を含んでいるとき、該電子デバイスはフラグ(例えばcommon_du_cpb_removal_delay_flag)を1に設定することができる。共通復号ユニットCPB除去遅延パラメータが含まれるとき、該電子デバイスはアクセスユニット中の全ての復号ユニットに適用可能な共通復号ユニットCPB除去遅延パラメータを生成することが可能である。言い換えれば、アクセスユニット中の各復号ユニットに対する復号ユニットCPB除去遅延パラメータを含める代わりに、ピクチャタイミングSEIメッセージが関連付けられたアクセスユニット中の全ての復号ユニットに共通パラメータを適用することができる。
また一方、共通復号ユニットCPB除去遅延パラメータがピクチャタイミングSEIメッセージに含まれるべきでないときには、電子デバイス102は、ピクチャタイミングSEIメッセージが関連付けられたアクセスユニット中の各復号ユニットに対し個別の復号ユニットCPB除去遅延を生成することが可能である。メッセージ生成モジュール108は、後記の図2および図3に関連して説明する手順の一つ以上を実施することができる。
一部の構成において、電子デバイスA102aは、メッセージをビットストリーム114の一部として電子デバイスB102bに送信することができる。一部の構成では、電子デバイスA102aは、当該メッセージを、別個の伝送110により電子デバイスB102bに送信することも可能である。例えば、この別個の伝送は、ビットストリーム114の一部でなくてもよい。例えば、ピクチャタイミングSEIメッセージまたは他のメッセージは、何らかの帯域外メカニズムを使用して送信してもよい。なお、一部の構成では、この他のメッセージには、前述のピクチャタイミングSEIメッセージの特徴の一つ以上を含んでよい。さらに、一つ以上の態様において、この他のメッセージは、前述のSEIメッセージと同様に活用することが可能である。
エンコーダ104(および、例えばメッセージ生成モジュール108)は、ビットストリーム114を生成することができる。ビットストリーム114は、入力ピクチャ(群)106に基づく符号化ピクチャデータを含んでいてもよい。また、一部の構成において、ビットストリーム114は、ピクチャタイミングSEIメッセージまたは他のメッセージ、スライスヘッダ(群)、PPS(群)などのオーバーヘッドデータも含んでいてもよい。さらなる入力ピクチャ106が符号化される際に、ビットストリーム114が一つ以上の符号化ピクチャを含んでいてもよい。例えば、ビットストリーム114は、対応するオーバーヘッドデータ(例えば、ピクチャタイミングSEIメッセージまたは他のメッセージ)を有する一つ以上の符号化ピクチャを含むことが可能である。
ビットストリーム114は、デコーダ112に供給することができる。一例において、ビットストリーム114は、ワイヤードまたはワイヤレスリンクを用いて電子デバイスB102bに伝送することができる。一部の場合には、インターネットまたはローカルエリアネットワーク(LAN:Local Area Network)などのネットワークを介して行うことが可能である。図1Aに示されるように、デコーダ112は、電子デバイスA102aのエンコーダ104とは別個に、電子デバイスB102bに実装されてもよい。また一方、一部の構成において、エンコーダ104およびデコーダ112が同じ電子デバイスに実装できることに留意する必要がある。エンコーダ104およびデコーダ112が同じ電子デバイスに実装された実装では、例えばビットストリーム114はバスを通じてデコーダ112に供給するか、またはデコーダ112による読み出しのためにメモリに格納することができる。
デコーダ112は、ハードウェア、ソフトウェアまたは両者の組み合わせとして実装されてもよい。一構成において、デコーダ112はHEVCデコーダとすることができる。デコーダ112は、ビットストリーム114を受信(例えば取得)することが可能である。デコーダ112は、ビットストリーム114に基づいて一つ以上の復号ピクチャ118を生成することができる。復号ピクチャ(単数または複数)118は、表示され、再生され、メモリに格納され、および/または別のデバイスなどに伝送することが可能である。
デコーダ112は、CPB120を含むことができる。CPB120は、符号化されたピクチャを一時的に格納することができる。CPB120は、ピクチャタイミングSEIメッセージに見出されたパラメータを用いて、データをいつ除去すべきかを判定することが可能である。CPB120がサブピクチャレベルでのオペレーションをサポートするときは、一度にアクセスユニット全体が除去される代わりに個々の復号ユニットを除去することができる。デコーダ112は、復号ピクチャバッファ(DPB)122を含むことができる。各復号ピクチャは、復号処理による参照のためならびに出力およびクロッピングのために、DPB122に配置される。復号ピクチャは、DPB出力時刻の後またはインター予測の参照にもはや必要なくなった時点でDPBから除去される。
デコーダ112は、メッセージ(例えばピクチャタイミングSEIメッセージまたは他のメッセージ)を受信することができる。また、デコーダ112は、受信したメッセージが共通復号ユニットCPB除去遅延パラメータ(例えばcommon_du_cpb_removal_delay)を含むかどうかを判定することが可能である。この判定には、ピクチャタイミングSEIメッセージ中に共通パラメータが存在するときに設定されるフラグ(例えばcommon_du_cpb_removal_delay_flag)を識別するステップを含めることができる。共通パラメータが存在する場合、デコーダ112はアクセスユニットの全ての復号ユニットに適用可能な共通復号ユニットCPB除去遅延パラメータを決めることが可能である。共通パラメータが存在しない場合、デコーダ112はアクセスユニットの復号ユニットごとに個別の復号ユニットCPB除去遅延パラメータを決めることが可能である。また、デコーダ112は、共通復号ユニットCPB除去遅延パラメータまたは個別の復号ユニットCPB除去遅延パラメータを用いて、CPB120から復号ユニットを除去することができる。CPB120は、後記の図4および図5に関連して説明する手順の一つ以上を行うことが可能である。
前述のHRDは、図1Aに示されたデコーダ112の一例であり得る。しかして、一部の構成において、電子デバイス102は、前述のHRDならびにCPB120およびDPB122に従って作動してもよい。
なお、電子デバイス(群)102に含まれる要素またはその部分の一つ以上は、ハードウェアとして実装することができる。例えば、これらの要素またはその部分の一つ以上は、チップ、電気回路またはハードウェアコンポーネントなどとして実装されてもよい。本明細書で説明する機能または方法の一つ以上が、ハードウェア上に実装されてもよく、および/またはハードウェアを用いて行われてもよいことに留意する必要がある。例えば、本明細書で説明する方法の一つ以上は、チップセット、特定用途向け集積回路(ASIC:Application‐Specific Integrated Circuit)、大規模集積回路(LSI:Large‐Scale Integrated Circuit)または集積回路など上に実装されてもよく、および/またはこれらを用いて実現されてもよい。
図1Bは、エンコーダ1908およびデコーダ1972の別の例を示すブロック図である。この例では、電子デバイスA1902および電子デバイスB1970が示されている。但し、電子デバイスA1902および電子デバイスB1970に関して説明する特徴および機能は、一部の構成においては、単一の電子デバイスに組み合わせが可能なことに留意する必要がある。
電子デバイスA1902は、エンコーダ1908を含む。エンコーダ1908は、ベースレイヤエンコーダ1910とエンハンスメントレイヤエンコーダ1920とを含んでよい。ビデオエンコーダ1908は、後述のようにスケーラブルビデオ符号化およびマルチビュービデオ符号化に適する。エンコーダ1908は、ハードウェア、ソフトウェアまたは両者の組み合わせで実装することが可能である。一構成において、エンコーダ1908は、スケーラブルおよび/またはマルチビューを含む高効率ビデオ符号化(HEVC)コーダとすることができる。他のコーダも同様に用いられてよい。電子デバイスA1902は、ソース1906を取得することができる。一部の構成において、ソース1906は、イメージセンサを用いて電子デバイスA1902に取り込むことが可能であり、メモリから読み出すことが可能であり、または別の電子デバイスから受信することが可能である。
エンコーダ1908は、ソース1906を符号化して、ベースレイヤビットストリーム1934およびエンハンスメントレイヤビットストリーム1936を生成することができる。例えば、エンコーダ1908は、ソース1906中の一連のピクチャ(例えばビデオ)を符号化することが可能である。具体的に、品質スケーラビリティとしても知られるSNRスケーラビリティに対するスケーラブルビデオ符号化では、同じソース1906をベースレイヤエンコーダとエンハンスメントレイヤエンコーダとに提供することができる。具体的に、空間スケーラビリティに対するスケーラブルビデオ符号化では、ダウンサンプリングされたソースをベースレイヤエンコーダに用いることが可能である。特に、マルチビュー符号化では、異なるビューソースをベースレイヤエンコーダおよびエンハンスメントレイヤエンコーダに用いることが可能である。エンコーダ1908は、図6Bと関連して後述するエンコーダ1782と同様にすることができる。
ビットストリーム1934、1936は、ソース1906に基づく符号化ピクチャデータを含むことができる。また、一部の構成において、ビットストリーム1934、1936は、スライスヘッダ情報、PPS情報などのオーバーヘッドデータも含むことが可能である。ソース1906の追加のピクチャが符号化される際に、ビットストリーム1934、1936は一つ以上の符号化ピクチャを含むことができる。
ビットストリーム1934、1936は、デコーダ1972に供給されてよい。デコーダ1972は、ベースレイヤデコーダ1980およびエンハンスメントレイヤデコーダ1990を含むことができる。ビデオデコーダ1972は、スケーラブルビデオ復号およびマルチビュービデオ復号に適する。一例では、ビットストリーム1934、1936は、ワイヤードまたはワイヤレスリンクを用いて電子デバイスB1970に伝送することができる。一部の場合では、インターネットまたはローカルエリアネットワーク(LAN)などのネットワークを通じて行うことができる。図1Bに示されるように、デコーダ1972は、電子デバイスA1902上のエンコーダ1908とは別個に電子デバイスB1970に実装することが可能である。但し、一部の構成では、エンコーダ1908およびデコーダ1972は、同一の電子デバイス上に実装が可能なことに留意する必要がある。エンコーダ1908およびデコーダ1972が同一の電子デバイスに実装される実装では、例えば、ビットストリーム1934、1936は、バスを介してデコーダ1972に供給することもでき、またはデコーダ1972による読み出しのためにメモリに格納することもできる。デコーダ1972は、復号ベースレイヤ1992および復号エンハンスメントレイヤピクチャ(群)1994を出力として供給することが可能である。
デコーダ1972は、ハードウェア、ソフトウェアまたは両者の組み合わせにおいて実装されてもよい。一構成において、デコーダ1972は、スケーラブルおよび/またはマルチビューを含む高効率ビデオ符号化(HEVC)デコーダとすることができる。他のデコーダも同様に用いることが可能である。デコーダ1972は、図7Bに関連して後述するデコーダ1812と同様なものであってよい。また、ベースレイヤエンコーダおよび/またはエンハンスメントレイヤエンコーダは、それぞれ、図1Aに関して説明したようなメッセージ生成モジュールを含んでもよい。また、ベースレイヤデコーダおよび/またはエンハンスメントレイヤデコーダは、図1Aに関して説明したような符号化ピクチャバッファおよび/または復号ピクチャバッファを含んでもよい。さらに、図1Bの電子デバイスは、適用可能な場合、図1Aの電子デバイスの機能にしたがって作動してもよい。
図2は、メッセージを送信する方法200の一構成を示すフロー図である。方法200は、エンコーダ104またはそのサブパーツの一つ(例えばメッセージ生成モジュール108)によって行うことができる。エンコーダ104は、CPB120がサブピクチャレベルでのオペレーションをサポートするかどうかを示すピクチャタイミングフラグ(例えばsub_pic_cpb_params_present_flag)を算定することが可能である。(ステップ202)。例えば、ピクチャタイミングフラグが1に設定されているときは、CPB120はアクセスユニットレベルまたはサブピクチャレベルで作動することができる。なお、ピクチャタイミングフラグが1に設定されたときであっても、実際にサブピクチャレベルで作動するかどうかについての決定はデコーダ112自体が行うことになる。
また、エンコーダ104はアクセスユニット中の復号ユニットに対する一つ以上の除去遅延を決める(ステップ204)ことができる。例えばエンコーダ104は、CPB120からのアクセスユニット中の全ての復号ユニットに適用可能な単一の共通復号ユニットCPB除去遅延パラメータ(例えばcommon_du_cpb_removal_delay)を決めることが可能である。上記に換えて、エンコーダ104はアクセスユニット中の各復号ユニットに個別の復号ユニットCPB除去遅延(例えばdu_cpb_removal_delay[i])を決めることも可能である。
また、エンコーダ104はアクセスポイント中の各復号ユニットにおけるNALユニットの1でオフセットされた量を示す一つ以上のNALパラメータを決める(ステップ206)ことができる。例えばエンコーダ104は、CPB120からのアクセスユニット中の全ての復号ユニットに適用可能な単一の共通NALパラメータ(例えばcommon_num_nalus_in_du_minus1)を決めることが可能である。上記に換えて、エンコーダ104はアクセスユニットの復号ユニットごとに個別の復号ユニットCPB除去遅延(例えばnum_nalus_in_du_minus1[i])を決めることも可能である。
また、エンコーダ104は、ピクチャタイミングフラグと、除去遅延と、NALパラメータとを含むピクチャタイミングSEIメッセージを送信する(ステップ208)ことができる。ピクチャタイミングSEIメッセージは、他のパラメータ(例えばcpb_removal_delay、dpb_output_delayなど)を含んでよい。例えば電子デバイス102は、ワイヤレス伝送、ワイヤード伝送、デバイスバス、ネットワークなどの一つ以上を介してメッセージを伝送することができる。例えば、電子デバイスA102aは、電子デバイスB102bにメッセージを伝送することが可能である。このメッセージは、例えばビットストリーム114の一部とすることができる。一部の構成において、電子デバイスA102aは、(ビットストリーム114の一部でない)別個の伝送110で、電子デバイスB102bにメッセージを送信する(ステップ208)ことが可能である。例えば、何らかの帯域外メカニズムを使用してメッセージを送信してもよい。一部の場合において、204、206に示される情報は、ピクチャタイミングSEIメッセージとは異なるSEIメッセージ中で送信してもよい。さらに別の場合において、204、206に示される情報は、パラメータセット、例えばビデオパラメータセットおよび/またはシーケンスパラメータセットおよび/またはピクチャパラメータセットおよび/または適応パラメータセットおよび/またはスライスヘッダ中で送信することができる。
図3はアクセスユニット中の復号ユニットに対する一つ以上の除去遅延を決める方法300の一構成を示すフロー図である。言い換えれば、図3に示される方法300は、図2に示される方法200中のステップ204をさらに説明するものである。方法300は、エンコーダ104によって実施すればよい。エンコーダ104は、共通復号ユニットCPB除去遅延パラメータ(例えばcommon_du_cpb_removal_delay)を含めるべきかどうかを判定する(ステップ302)ことができる。この判定には、共通復号ユニットCPB除去遅延フラグ(例えばcommon_du_cpb_removal_delay_flag)が設定されているかどうかを判定するステップを含めることが可能である。エンコーダ104は、復号ユニットが一定間隔でCPBから除去される場合に、この共通パラメータを送信することができる。これは、例えば、各復号ユニットがピクチャの或る数の列に対応するか、または他の何らかの正規構造を有する場合であり得る。
例えば、共通復号ユニットCPB除去遅延パラメータがピクチャタイミングSEIメッセージに含まれるべきときには、共通復号ユニットCPB除去遅延フラグが1に設定され、含まれるべきでないときには0に設定されるとよい。yesの(例えば、フラグが1に設定されている)場合、エンコーダ104はアクセスユニットの全ての復号ユニットに適用可能な共通復号ユニットCPB除去遅延パラメータ(例えばcommon_du_cpb_removal_delay)を決める(ステップ304)ことができる。noの(例えばフラグが0に設定されている)場合、エンコーダ104はアクセスユニット中の各復号ユニットに対する個別の復号ユニットCPB除去遅延パラメータ(例えばdu_cpb_removal_delay[i])を決める(ステップ306)ことができる。
共通復号ユニットCPB除去遅延パラメータが、ピクチャタイミングSEIメッセージ中に存在する場合は、該パラメータは、直前の復号ユニットのCPB120からの除去後、ピクチャタイミングSEIメッセージに関連するアクセスユニット中の現復号ユニットをCPB120から除去する前に待つべきサブピクチャクロックティックの量を指定することができる。
例えば、復号ユニットがアクセスユニットの第一の復号ユニットのときは、共通復号ユニットCPB120除去遅延パラメータは、先行するアクセスユニットの直近のバッファリング期間SEIメッセージに関連付けられたアクセスユニット中の最後の復号ユニットのCPB120からの除去後、ピクチャタイミングSEIメッセージに関連付けられたアクセスユニット中の第一の復号ユニットをCPB120から除去する前に待つべきサブピクチャクロックティックの量を指定することが可能である。
復号ユニットがアクセスユニットの第一の復号ユニットでないときは、共通復号ユニットCPB除去遅延パラメータは、ピクチャタイミングSEIメッセージに関連付けられたアクセスユニット中の先行する復号ユニットのCPB120からの除去後、ピクチャタイミングSEIメッセージに関連付けられたアクセスユニット中の現復号ユニットをCPBから除去する前に待つべきサブピクチャクロックティックの量を指定することが可能である。
その一方、共通復号ユニットCPB除去遅延パラメータ(例えばcommon_du_cpb_removal_delay)がピクチャタイミングSEIメッセージにおいて送信されないときにはアクセスユニット中の各復号ユニットに対する個別の復号ユニットCPB除去遅延パラメータ(例えばdu_cpb_removal_delay[i])をピクチャタイミングSEIメッセージに含めることができる。復号ユニットCPB除去遅延パラメータ(例えばdu_cpb_removal_delay[i])は、最後の復号ユニットのCPB120からの除去後、ピクチャタイミングSEIメッセージに関連付けられたアクセスユニット中のi番目の復号ユニットをCPB120から除去する前に待つべきサブピクチャクロックティックの量を指定することが可能である。復号ユニットCPB除去遅延パラメータは、モジュロ2(cpb_removal_delay_length_minus1+1)カウンタの余りにしたがって計算することができ、前式中のcpb_removal_delay_length_minus1+1は、共通復号ユニットCPB除去遅延パラメータの長さである。
図4は、ビットストリームをバッファリングする方法400の一構成を示すフロー図である。方法400は、電子デバイス102(例えば電子デバイスB102b)のデコーダ112により行うことが可能で、該電子デバイスは、メッセージ(例えばピクチャタイミングSEIメッセージまたは他のメッセージ)を受信する(ステップ402)ことができる。例えば電子デバイス102は、ワイヤレス伝送、ワイヤード伝送、デバイスバス、ネットワークなどの一つ以上を介してメッセージを受信する(ステップ402)ことができる。例えば、電子デバイスB102bは、電子デバイスA102aからメッセージを受信する(ステップ402)ことが可能である。このメッセージは、例えばビットストリーム114の一部であってよい。別の例では、電子デバイスB102bは、(例えばビットストリーム114の一部でない)別個の伝送110で電子デバイスA102aからメッセージを受信してもよい。例えば、何らかの帯域外メカニズムを用いてピクチャタイミングSEIメッセージを受信することが可能である。一部の構成において、メッセージは、ピクチャタイミングフラグと、アクセスユニット中の復号ユニットに対する一つ以上の除去遅延と、一つ以上のNALパラメータとのうちの一つ以上を含むことができる。しかして、メッセージを受信するステップ402は、ピクチャタイミングフラグと、アクセスユニット中の復号ユニットに対する一つ以上の除去遅延と、と一つ以上のNALパラメータとのうちの一つ以上を受信するステップを含むことが可能である。
デコーダ112は、CPB120がアクセスユニットレベルで作動するか、またはサブピクチャレベルで作動するかを決める(ステップ404)ことができる。例えばデコーダ112は、低レイテンシを達成したい場合に、サブピクチャベースで作動すると決めることが可能である。あるいは、この決定は、デコーダ112がサブピクチャベースのオペレーションをサポートするために十分なリソースを有するかどうかに基づいてもよい。CPB120がサブピクチャレベルで作動する場合、デコーダはアクセスユニット中の復号ユニットの一つ以上の除去遅延を決める(ステップ406)ことができる。例えば、デコーダ112はアクセスユニット中の全ての復号ユニットに適用可能な単一の共通復号ユニットCPB除去遅延パラメータ(例えばcommon_du_cpb_removal_delay)を決めることが可能である。上記に換えて、デコーダ112はアクセスユニット中の各復号ユニットに対する個別の復号ユニットCPB除去遅延(例えばdu_cpb_removal_delay[i])を決めてもよい。言い換えれば、ピクチャタイミングSEIメッセージはアクセスユニット中の全ての復号ユニットに適用可能な共通パラメータ、もしくは復号ユニット毎に個別のパラメータを含むことが可能である。
さらに、デコーダ112は、復号ユニットに対する除去遅延に基づいて、すなわちアクセスユニット中の全ての復号ユニットに適用可能な共通パラメータ、または各復号ユニットに個別のパラメータを用いて、復号ユニットを除去する(ステップ408)ことが可能である。また、デコーダ112は、復号ユニットを復号する(ステップ410)ことができる。
デコーダ112は、様々なシグナリングされたパラメータから算定される除去時刻を決める際に、変数ClockDiffを使用することが可能である。具体的に、ClockDiffは、ClockDiff=(num_units_in_tick−(num_units_in_sub_tick*(num_decoding_units_minus1+1))/time_scale)により算定でき、前式中のnum_units_in_tickはクロックティックカウンタの1増加に対応する周波数time_scale Hzで作動するクロックの時間単位数であり、num_units_in_sub_tickはサブピクチャクロックティックカウンタの1増加に対応する周波数time_scale Hzで作動するクロックの時間単位数であり、num_decoding_units_minus1+1はアクセスユニットの復号ユニットの量であり、time_scaleは1秒間に経過する時間単位数である。
低遅延仮想リファレンスデコーダ(HRD)フラグ(例えばlow_delay_hrd_flag)が1に設定され、tr,n(m)<taf(m)であり、ピクチャタイミングフラグが1に設定され、CPBがサブピクチャレベルで作動しており、ClockDiffがゼロより大きいとき、復号ユニットmの除去時刻tr(m)は:tr(m)=tr,n(m)+tc_sub*Ceil((taf(m)−tr,n(m))/tc_sub)+ClockDiffにより算定され、前式中のtr,n(m)は復号ユニットmの名目除去時刻であり、tc_subはサブピクチャクロックティックであり、Ceil()はシーリング関数であり、taf(m)は復号ユニットmの最終到着時刻である。
低遅延仮想リファレンスデコーダ(HRD)フラグ(例えばlow_delay_hrd_flag)が1に設定され、tr,n(n)<taf(n)であり、ピクチャタイミングフラグが1に設定され、CPBがアクセスユニットレベルで作動しており、ClockDiffがゼロより大きいとき、アクセスユニットnの除去時刻tr(n)は:tr(n)=tr,n(n)+tc*Ceil((taf(n)−tr,n(n))/tc)−ClockDiffにより算定され、前式中のtr,n(n)はアクセスユニットnの名目除去時刻であり、tcはクロックティックであり、Ceil()はシーリング関数であり、taf(n)はアクセスユニットnの最終到着時刻である。
低遅延仮想リファレンスデコーダ(HRD)フラグ(例えばlow_delay_hrd_flag)が1に設定され、tr,n(m)<taf(m)であり、ピクチャタイミングフラグが1に設定され、CPBがサブピクチャレベルで作動しており、アクセスユニットの最後の復号ユニットmの除去時刻tr(m)は:tr(m)=tr,n(m)+max((tc_sub*Ceil((taf(m)−tr,n(m))/tc_sub)),(tc*Ceil((taf(n)−tr,n(n))/tc)))により算定され、前式中のtr,n(m)は最後の復号ユニットmの名目除去時刻であり、tc_subはサブピクチャクロックティックであり、Ceil()はシーリング関数であり、taf(m)は最後の復号ユニットmの最終到着時刻であり、tr,n(n)はアクセスユニットnの名目除去時刻であり、tcはクロックティックであり、taf(n)はアクセスユニットnの最終到着時刻である。
低遅延仮想リファレンスデコーダ(HRD)フラグが1に設定され、tr,n(n)<taf(n)であり、ピクチャタイミングフラグが1に設定され、CPBがアクセスユニットレベルで作動しているとき、アクセスユニットnの除去時刻tr(n)は:tr(n)=tr,n(n)+max((tc_sub*Ceil((taf(m)−tr,n(m))/tc_sub)),(tc*Ceil((taf(n)−tr,n(n))/tc)))により算定され、前式中のtr,n(m)は最後の復号ユニットnの名目除去時刻であり、tc_subはサブピクチャクロックティックであり、Ceil()はシーリング関数であり、taf(m)は最後の復号ユニットmの最終到着時刻であり、tr,n(n)はアクセスユニットnの名目除去時刻であり、tcはクロックティックであり、taf(n)はアクセスユニットnの最終到着時刻である。
低遅延仮想リファレンスデコーダ(HRD)フラグ(例えばlow_delay_hrd_flag)が1に設定され、tr,n(m)<taf(m)であり、ピクチャタイミングフラグが1に設定され、CPBがサブピクチャレベルで作動しているとき、アクセスユニットの最後の復号ユニットmの除去時刻tr(m)は:tr(m)=tr,n(m)+min((tc_sub*Ceil((taf(m)−tr,n(m))/tc_sub),(tc*Ceil((taf(n)−tr,n(n))/tc))により算定され、前式中のtr,n(m)は最後の復号ユニットmの名目除去時刻であり、tc_subはサブピクチャクロックティックであり、Ceil()はシーリング関数であり、taf(m)は最後の復号ユニットmの最終到着時刻であり、tr,n(n)はアクセスユニットnの名目除去時刻であり、tcはクロックティックであり、taf(n)はアクセスユニットnの最終到着時刻である。
低遅延仮想リファレンスデコーダ(HRD)フラグが1に設定され、tr,n(n)<taf(n)であり、ピクチャタイミングフラグが1に設定され、CPBがアクセスユニットレベルで作動しているとき、アクセスユニットnの除去時刻tr(n)は:tr(n)=tr,n(n)+min((tc_sub*Ceil((taf(m)−tr,n(m))/tc_sub)),(tc*Ceil((taf(n)−tr,n(n))/tc)))により算定され、前式中のtr,n(m)は最後の復号ユニットnの名目除去時刻であり、tc_subはサブピクチャクロックティックであり、Ceil()はシーリング関数であり、taf(m)は最後の復号ユニットmの最終到着時刻であり、tr,n(n)はアクセスユニットnの名目除去時刻であり、tcはクロックティックであり、taf(n)はアクセスユニットnの最終到着時刻である。
低遅延仮想リファレンスデコーダ(HRD)フラグ(例えばlow_delay_hrd_flag)が1に設定され、tr,n(m)<taf(m)であり、ピクチャタイミングフラグが1に設定され、CPBがサブピクチャレベルで作動しているとき、アクセスユニットの最後の復号ユニットmの除去時刻tr(m)は:tr(m)=tr,n(m)+(tc*Ceil((taf(n)−tr,n(n))/tc))により算定され、前式中のtr,n(m)は最後の復号ユニットmの名目除去時刻であり、tc_subはサブピクチャクロックティックであり、Ceil()はシーリング関数であり、taf(m)は最後の復号ユニットmの最終到着時刻であり、tr,n(n)はアクセスユニットnの名目除去時刻であり、tcはクロックティックであり、taf(n)はアクセスユニットnの最終到着時刻である。
低遅延仮想リファレンスデコーダ(HRD)フラグが1に設定され、tr,n(n)<taf(n)であり、ピクチャタイミングフラグが1に設定され、CPBがアクセスユニットレベルで動作しているとき、アクセスユニットnの除去時刻tr(n)は:tr(n)=tr,n(n)+(tc*Ceil((taf(n)−tr,n(n))/tc))により算定され、前式中のtr,n(m)は最後の復号ユニットnの名目除去時刻であり、tc_subはサブピクチャクロックティックであり、Ceil()はシーリング関数であり、taf(m)は最後の復号ユニットmの最終到着時刻であり、tr,n(n)はアクセスユニットnの名目除去時刻であり、tcはクロックティックであり、taf(n)はアクセスユニットnの最終到着時刻である。
低遅延仮想リファレンスデコーダ(HRD)フラグ(例えばlow_delay_hrd_flag)が1に設定され、tr,n(m)<taf(m)であり、ピクチャタイミングフラグが1に設定され、CPBがサブピクチャレベルで作動しているとき、アクセスユニットの最後の復号ユニットでない復号ユニットの除去時刻は、tr(m)=taf(m)として設定され、前式中のtaf(m)は復号ユニットmの最終到着時刻である。そして、アクセスユニットの最後の復号ユニットmの除去時刻tr(m)は:tr(m)=tr,n(m)+(tc_sub*Ceil((taf(m)−tr,n(m))/tc_sub))により算定され、前式中のtr,n(m)は最後の復号ユニットmの名目除去時刻であり、tc_subはサブピクチャクロックティックであり、Ceil()はシーリング関数であり、taf(m)は最後の復号ユニットmの最終到着時刻であり、tr,n(n)はアクセスユニットnの名目除去時刻であり、tcはクロックティックであり、taf(n)はアクセスユニットnの最終到着時刻であり、taf(m)はアクセスユニットnの最後の復号ユニットの最終到着時刻である。
低遅延仮想リファレンスデコーダ(HRD)フラグ(例えばlow_delay_hrd_flag)が1に設定され、tr,n(m)<taf(m)であり、ピクチャタイミングフラグが1に設定され、CPBがサブピクチャレベルで作動しているとき、アクセスユニットの最後の復号ユニットでない復号ユニットの除去時刻はtr(m)=taf(m)として設定され、式中taf(m)は復号ユニットmの最終到着時刻である。そして、アクセスユニットの最後の復号ユニットmの除去時刻tr(m)は:tr(m)=tr,n(m)+(tc*Ceil((taf(m)−tr,n(m))/tc))により算定され、前式中のtr,n(m)は最後の復号ユニットmの名目除去時刻であり、tc_subはサブピクチャクロックティックであり、Ceil()はシーリング関数であり、taf(m)は最後の復号ユニットmの最終到着時刻であり、tr,n(n)はアクセスユニットnの名目除去時刻であり、tcはクロックティックであり、taf(n)はアクセスユニットnの最終到着時刻であり、taf(m)はアクセスユニットnの最後の復号ユニットの最終到着時刻である。
低遅延仮想リファレンスデコーダ(HRD)フラグ(例えばlow_delay_hrd_flag)が1に設定され、tr,n(m)<taf(m)であり、ピクチャタイミングフラグが1に設定され、CPBがサブピクチャレベルで作動しているとき、復号ユニットの除去時刻はtr(m)=taf(m)として設定され、前式中のtr,n(m)は復号ユニットmの名目除去時刻であり、tc_subはサブピクチャクロックティックであり、Ceil()はシーリング関数であり、taf(m)は復号ユニットmの最終到着時刻であり、tr,n(n)はアクセスユニットnの名目除去時刻であり、tcはクロックティックであり、taf(n)はアクセスユニットnの最終到着時刻であり、taf(m)はアクセスユニットnの復号ユニットの最終到着時刻である。
低遅延仮想リファレンスデコーダ(HRD)フラグが1に設定され、tr,n(n)<taf(n)であり、ピクチャタイミングフラグが1に設定され、CPBがアクセスユニットレベルで作動しているとき、アクセスユニットnの除去時刻tr(n)は:tr(n)=taf(n)により算定され、前式中のtr,n(m)は最後の復号ユニットnの名目除去時刻であり、tc_subはサブピクチャクロックティックであり、Ceil()はシーリング関数であり、taf(m)は最後の復号ユニットmの最終到着時刻であり、tr,n(n)はアクセスユニットnの名目除去時刻であり、tcはクロックティックであり、taf(n)はアクセスユニットnの最終到着時刻である。
CPBがアクセスユニットレベルで作動する場合、デコーダ112は、CPB除去遅延パラメータを決める(ステップ412)ことができる。このパラメータは、受信されるピクチャタイミングSEIメッセージに含まれてもよい(例えばcpb_removal_delay)。また、デコーダ112は、CPB除去遅延パラメータに基づいてアクセスユニットを除去(ステップ414)、該アクセスユニットを復号する(ステップ416)ことができる。すなわち、デコーダ112はアクセスユニット中の復号ユニットではなく、アクセスユニット全体を一度に復号すればよい。
図5はアクセスユニットの復号ユニットの一つ以上の除去遅延を決める方法500の一構成を示すフロー図である。言い換えれば、図5に示されている方法500は、図4に示される方法400のステップ406をさらに解説することができる。方法500は、デコーダ112によって行われてもよい。デコーダ112は、受信されたピクチャタイミングSEIメッセージが共通復号ユニットCPB除去遅延パラメータを含むかどうかを判定する(ステップ502)ことができる。この判定には、共通復号ユニットCPB除去遅延フラグ(例えばcommon_du_cpb_removal_delay_flag)が設定されているか否かを判定するステップが含まれてもよい。yesの場合は、デコーダ112はアクセスユニット中の全ての復号ユニットに適用可能な共通復号ユニットCPB除去遅延パラメータ(例えばcommon_du_cpb_removal_delay)を決める(ステップ504)ことができる。noの場合は、デコーダ112はアクセスユニット中の各復号ユニットに対する個別の復号ユニットCPB除去遅延パラメータ(例えばdu_cpb_removal_delay[i])を決める(ステップ506)ことができる。
また、ピクチャタイミングSEIメッセージのセマンティクスを修正するのに加えて、本発明のシステムおよび方法は、サブピクチャベースのCPBオペレーションおよびアクセスユニットベースのCPBオペレーションの作動により、同じタイミングの復号ユニット除去が生じるようにビットストリーム制約事項を設けることができる。具体的に、ピクチャタイミングフラグ(例えばsub_pic_cpb_params_present_flag)が1に設定されているとき、CPB除去遅延は、
により設定することができ、前式中のdu_cpb_removal_delay[i]は復号ユニットCPB除去遅延パラメータであり、tcはクロックティックであり、tc,subはサブピクチャクロックティックであり、num_decoding_units_minus1はアクセスユニットの復号ユニットの1でオフセットされた量であり、iはインデックスである。
あるいは、CPB除去遅延は、次に説明するように設定することができる:変数Tdu(k)を次式のように定義する:
前式中のdu_cpb_removal_delay_minus1k[i]およびnum_decoding_units_minus1kは、k番目のアクセスユニットのi番目の復号ユニットのパラメータであり(HRDを初期化したアクセスユニットはk=0であり、k<1に対しTdu(k)=0)、du_cpb_removal_delay_minus1k[i]+1=du_cpb_removal_delay_minus1k[i]はk番目のアクセスユニットのI番目の復号ユニットの復号ユニットCPB除去遅延パラメータであり、num_decoding_units_minus1kはk番目アクセスユニットの復号ユニットの数であり、tcはクロックティックであり、tc,subはサブピクチャクロックティックであり、iおよびkはインデックスである。そして、ピクチャタイミングフラグ(例えばsub_pic_cpb_params_present_flag)が1に設定されているとき、以下の条件が真であり得る:
(au_cpb_removal_delay_minus1+1)*tc==Tdu(k)であり、この(au_cpb_removal_delay_minus1+1)=cpb_removal_delay、これはCPB除去遅延である。しかしてこの場合、サブピクチャベースのCPBオペレーションおよびアクセスユニットベースのCPBオペレーションの作動が、アクセスユニット除去とアクセスユニットの最後の復号ユニットの除去とを同じタイミングで生じさせるように、CPB除去遅延(au_cpb_removal_delay_minus1+1)が設定される。
あるいは、CPB除去遅延は、
により設定することができ、前式中のdu_cpb_removal_delay[i]は復号ユニットCPB除去遅延パラメータであり、tcはクロックティックであり、tc,subはサブピクチャクロックティックであり、num_decoding_units_minus1はアクセスユニットの復号ユニットの1でオフセットされた量であり、iはインデックスである。
上記に換えて、cpb_removal_delayおよびdu_cpb_removal_delay[num_decoding_units_minus1]は:cpb_removal_delay*tc=du_cpb_removal_delay[num_decoding_units_minus1]*tc,subにしたがって設定することが可能で、前式中のdu_cpb_removal_delay[num_decoding_units_minus1]はnum_decoding_units_minus1番目の復号ユニットの復号ユニットCPB除去遅延パラメータであり、tcはクロックティックであり、tc,subはサブピクチャクロックティックであり、num_decoding_units_minus1はアクセスユニットの復号ユニットの1でオフセットされた量である。
また、ピクチャタイミングSEIメッセージのセマンティクスを修正することに加え、本発明のシステムおよび方法は、サブピクチャベースのCPBオペレーションおよびアクセスユニットベースのCPBオペレーションの作動により、同じタイミングの復号ユニット除去が生じるようにビットストリーム制約事項を設けることもできる。具体的に、ピクチャタイミングフラグ(例えばsub_pic_cpb_params_present_flag)が1に設定されているとき、cpb_removal_delayおよびdu_cpb_removal_delay[num_decoding_units_minus1]の値は:−1≦(cpb_removal_delay*tc−du_cpb_removal_delay[num_decoding_units_minus1]*tc,sub)≦1を満たすように設定することができ、前式中のdu_cpb_removal_delay[num_decoding_units_minus1]はnum_decoding_units_minus1番目の復号ユニットの復号ユニットCPB除去遅延パラメータであり、tcはクロックティックであり、tc,subはサブピクチャクロックティックであり、num_decoding_units_minus1はアクセスユニット中の復号ユニットの1でオフセットされた量である。
図6Aは、電子デバイス602のエンコーダ604の一構成を示すブロック図である。なお、電子デバイス602中に含まれるものとして示された要素の一つ以上は、ハードウェア、ソフトウェアまたは両者の組み合わせで実装されてもよい。例えば、電子デバイス602はエンコーダ604を含み、エンコーダ604は、ハードウェア、ソフトウェアまたは両者の組み合わせによる実装が可能である。例えば、エンコーダ604は、回路、集積回路、特定用途向け集積回路(ASIC)、実行可能命令を有するメモリと電子通信するプロセッサ、ファームウェア、フィールドプログラマブルゲートアレイ(FPGA:field−programmable gate array)など、またはそれらの組み合わせとして実装することができる。一部の構成において、エンコーダ604はHEVCコーダでもよい。
電子デバイス602は、ソース622を含んでよい。ソース622は、ピクチャまたはイメージデータ(例えばビデオ)を一つ以上の入力ピクチャ606としてエンコーダ604に供給可能である。ソース622の例は、イメージセンサ、メモリ、通信インターフェース、ネットワークインターフェース、ワイヤレスレシーバ、ポートなどを含み得る。
一つ以上の入力ピクチャ606を、フレーム内予測モジュールおよび再構築バッファ624に供給することができる。また、入力ピクチャ606は、動き推定および動き補償モジュール646、および減算モジュール628にも供給することが可能である。
フレーム内予測モジュールおよび再構築バッファ624は、一つ以上の入力ピクチャ606および再構築データ660に基づいて、イントラモード情報640およびイントラ信号626を生成することができる。動き推定および動き補償モジュール646は、一つ以上の入力ピクチャ606と復号ピクチャバッファ676からの参照ピクチャ678とに基づいて、インターモード情報648およびインター信号644を生成することが可能である。一部の構成では、復号ピクチャバッファ676は、復号ピクチャバッファ676の一つ以上の参照ピクチャからのデータを含んでもよい。
エンコーダ604は、モードに従ってイントラ信号626とインター信号644との間での選択をすることができる。イントラ信号626は、イントラ符号化モードにおいてピクチャ内の空間的特徴を利用するために使用が可能である。インター信号644は、インター符号化モードにおいてピクチャ間の時間的特徴を利用するために使用が可能である。イントラ符号化モードの間は、イントラ信号626を減算モジュール628に供給することができ、イントラモード情報640がエントロピー符号化モジュール642に供給することができる。インター符号化モードの間は、インター信号644を減算モジュール628に供給することができ、インターモード情報648をエントロピー符号化モジュール642に供給することができる。
予測残差630を生成するために、減算モジュール628で、(モードに応じて)イントラ信号626もしくはインター信号644が入力ピクチャ606から減算される。予測残差630は変換モジュール632に供給される。変換モジュール632は、予測残差630を圧縮して変換信号634を生成することができ、該変換信号は量子化モジュール636に供給される。量子化モジュール636は、変換信号634を量子化して、変換および量子化係数(TQC:transformed and quantized coefficient)638を生成する。
TQC638は、エントロピー符号化モジュール642および逆量子化モジュール650に供給される。逆量子化モジュール650は、TQC638の逆量子化を行って、逆量子化信号652を生成し、該逆量子化信号は逆変換モジュール654に供給される。逆変換モジュール654は、逆量子化信号652を復元して復元信号656を生成し、これは再構築モジュール658に供給される。
再構築モジュール658は、復元信号656に基づいて再構築データ660を生成することができる。例えば、再構築モジュール658は、(変更された)ピクチャを再構築することが可能である。再構築データ660は、デブロッキングフィルタ662とイントラ予測モジュールおよび再構築バッファ624とに供給することができる。デブロッキングフィルタ662は、再構築データ660に基づいてフィルタ信号664を生成することが可能である。
フィルタ信号664は、サンプル適応オフセット(SAO:sample adaptive offset)モジュール666に供給することができる。SAOモジュール666は、エントロピー符号化モジュール642に供給されるSAO情報668および適応ループフィルタ(ALF:adaptive loop filter)672に供給されるSAO信号670を生成することが可能である。ALF672は、復号ピクチャバッファ676に供給されるALF信号674を生成する。ALF信号674は、参照ピクチャとして使用可能な一つ以上のピクチャからのデータを含んでよい。
エントロピー符号化モジュール642は、TQC638を符号化して、ビットストリームA614a(例えば符号化ピクチャデータ)を生成することができる。例えば、エントロピー符号化モジュール642は、コンテキスト適応型可変長符号化(CAVLC:Context‐Adaptive Variable Length Coding)またはコンテキスト適応型2値算術符号化(CABAC:Context‐Adaptive Binary Arithmetic Coding)を用いてTQC638を符号化することが可能である。具体的に、エントロピー符号化モジュール642は、イントラモード情報640、インターモード情報648およびSAO情報668の一つ以上に基づいてTQC638を符号化すればよい。ビットストリームA614a(例えば符号化ピクチャデータ)は、メッセージ生成モジュール608に供給されればよい。メッセージ生成モジュール608は、図1に関連して説明したメッセージ生成モジュール108と同様に構成されてもよい。これに加えまたはこれに換えて、メッセージ生成モジュール608は、図2および図3に関連して説明した手順の一つ以上を実施してもよい。
例えば、メッセージ生成モジュール608は、サブピクチャパラメータを含むメッセージ(例えばピクチャタイミングSEIメッセージまたは他のメッセージ)を生成することができる。サブピクチャパラメータは、復号ユニットの一つ以上の除去遅延(例えばcommon_du_cpb_removal_delayまたはdu_cpb_removal_delay[i])および一つ以上のNALパラメータ(例えばcommon_num_nalus_in_du_minus1またはnum_nalus_in_du_minus1[i])を含んでよい。一部の構成において、ビットストリームA614aにメッセージを挿入して、ビットストリームB614bを生成することができる。しかして、例えば、ビットストリームA614a全体が生成された後に(例えばビットストリームB614bの大部分が生成された後に)メッセージが生成されてもよい。他の構成において、ビットストリームA614aにメッセージは挿入されなくてもよく(この場合にはビットストリームB614bはビットストリームA614aと同じであってよい)、別個の伝送610で供給することが可能である。
一部の構成において、電子デバイス602は、ビットストリーム614を別の電子デバイスに送信する。例えば、ビットストリーム614は、通信インターフェース、ネットワークインターフェース、ワイヤレストランスミッタ、ポートなどに供給されてよい。例えば、ビットストリーム614は、LAN、インターネット、携帯電話基地局などを介して別の電子デバイスに伝送することが可能である。ビットストリーム614は、上記に加えてまたはこれに換えて、電子デバイス602のメモリまたは他の構成要素に格納されてもよい。
図6Bは、電子デバイス1702上のビデオエンコーダ1782の一構成を示すブロック図である。ビデオエンコーダ1782は、エンハンスメントレイヤエンコーダ1706、ベースレイヤエンコーダ1709、解像度アップスケーリングブロック1770および出力インターフェース1780を含むことができる。図6Bのビデオエンコーダは、本明細書で説明するように、例えば、スケーラブルビデオ符号化およびマルチビュービデオ符号化に適する。
エンハンスメントレイヤエンコーダ1706は、入力ピクチャ1704を受信するビデオ入力部1781を含んでよい。ビデオ入力部1781の出力は、予測選択部1750の出力を受信する加算器/減算器1783に供給することができる。加算器/減算器1783の出力は、変換および量子化ブロック1752に供給することができる。変換および量子化ブロック1752の出力は、エントロピー符号化1748ブロックと、スケーリングおよび逆変換ブロック1772とに供給されてよい。エントロピー符号化1748を実施した後、エントロピーを符号化ブロック1748の出力を、出力インターフェース1780に供給することができる。出力インターフェース1780は、符号化ベースレイヤビデオビットストリーム1707および符号化エンハンスメントレイヤビデオビットストリーム1710の両方を出力することが可能である。
スケーリングおよび逆変換ブロック1772の出力は、加算器1779に供給すればよい。また、加算器1779は予測選択部1750の出力も受信が可能である。加算器1779の出力はデブロッキングブロック1751に供給すればよい。デブロッキングブロック1751の出力は参照バッファ1794に供給することができる。参照バッファ1794の出力は動き補償ブロック1754に供給することが可能である。動き補償ブロック1754の出力は予測選択部1750に供給することができる。参照バッファ1794の出力は、イントラ予測部1756にも供給すればよい。イントラ予測部1756の出力は予測選択部1750に供給することが可能である。また、予測選択部1750は解像度アップスケーリングブロック1770の出力も受信することができる。
ベースレイヤエンコーダ1709は、ダウンサンプリングされた入力ピクチャ、または別の画像との組み合わせに適する他の画像コンテンツ、もしくは別のビューの入力ピクチャ、もしくは同じ入力ピクチャ1703(すなわちエンハンスメントレイヤエンコーダ1706により受信される入力ピクチャ1704と同じもの)、を受信するビデオ入力部1762を含むことができる。ビデオ入力部1762の出力は、符号化予測ループ1764に供給することが可能である。符号化予測ループ1764の出力に対してエントロピー符号化1766を提供することができる。符号化予測ループ1764の出力は、参照バッファ1768にも供給されてよい。参照バッファ1768は、符号化予測ループ1764にフィードバックを供給することができる。参照バッファ1768の出力は、解像度アップスケーリングブロック1770にも供給されてよい。エントロピー符号化1766が実施されたならば、その出力を出力インターフェース1780に供給することができる。符号化ベースレイヤビデオビットストリーム1707および/または符号化エンハンスメントレイヤビデオビットストリーム1710は、必要に応じて一つ以上のメッセージ生成モジュールに供給すればよい。
図7Aは、電子デバイス702のデコーダ712の一構成を示すブロック図である。デコーダ712は、電子デバイス702に含まれてもよい。例えば、デコーダ712はHEVCデコーダであってもよい。デコーダ712およびデコーダ712に含まれるとして示される要素の一つ以上は、ハードウェア、ソフトウェアまたは両者の組み合わせで実装されてもよい。デコーダ712は、復号のためのビットストリーム714(例えばビットストリーム714に含まれる一つ以上の符号化ピクチャおよびオーバーヘッドデータ)を受信することができる。一部の構成において、受信ビットストリーム714は、メッセージ(例えばピクチャタイミングSEIメッセージまたは他のメッセージ)、スライスヘッダ、PPSなどの受信オーバーヘッドデータを含むことができる。一部の構成では、デコーダ712は、別個の伝送710もさらに受信する。別個の伝送710は、メッセージ(例えばピクチャタイミングSEIメッセージまたは他のメッセージ)を含んでよい。例えば、ピクチャタイミングSEIメッセージまたは他のメッセージは、ビットストリーム714の代わりに別個の伝送710で受信されてもよい。但し、別個の伝送710は随意であり、一部の構成では利用しなくてもよいことに留意すること。
デコーダ712は、CPB720を含む。CPB720は、前述の図1に関連して説明したCPB120と同様に構成すればよい。これに加えまたはこれに換えて、デコーダ712は、図4および図5に関連して説明した手順の一つ以上を行ってもよい。例えばデコーダ712は、サブピクチャパラメータを有するメッセージ(例えばピクチャタイミングSEIメッセージまたは他のメッセージ)を受信し、サブピクチャパラメータに基づいてアクセスユニット中の復号ユニットを除去および復号することができる。なお、一つ以上のアクセスユニットがビットストリームに含まれてよく、該アクセスユニットは一つ以上の符号化ピクチャデータおよびオーバーヘッドデータを含むことができる。
符号化ピクチャバッファ(CPB)720は、エントロピー復号モジュール701に符号化ピクチャデータを供給することが可能である。符号化ピクチャデータは、エントロピー復号モジュール701によりエントロピー復号することができ、これにより動き情報信号703と、量子化され、スケーリングされ、および/または変換された係数705とが生成される。
動き情報信号703は、動き補償モジュール780で、復号ピクチャバッファ709からの参照フレーム信号798の一部と組み合わせることが可能で、これによりフレーム間予測信号782を生成することができる。量子化され、スケール除去され、および/または変換された係数705は、逆モジュール707により逆量子化され、スケールされ、および逆変換され、これにより復号残差信号784を生成することができる。復号残差信号784は、結合信号786が生成するため予測信号792に加算できる。予測信号792は、動き補償モジュール780により生成されるフレーム間予測信号782、またはフレーム内予測モジュール788により生成されるフレーム内予測信号790、のうちから選択された信号であればよい。一部の構成において、この信号選択は、ビットストリーム714に基づく(例えば、ビットストリーム714により制御される)ことが可能である。
フレーム内予測信号790は、(例えば、現フレーム中の)前に復号された結合信号786からの情報から予測することができる。また、結合信号786は、デブロッキングフィルタ794によりフィルタすることが可能である。得られたフィルタ済み信号796は、復号ピクチャバッファ709に書き込むことができる。得られたフィルタ済み信号796が復号ピクチャを含んでいればよい。復号ピクチャバッファ709は、718で出力される復号ピクチャを供給することができる。一部の場合において、709はフレームメモリと見なすことが可能である。
図7Bは、電子デバイス1802上のビデオデコーダ1812の一構成を示すブロック図である。ビデオデコーダ1812は、エンハンスメントレイヤデコーダ1815およびベースレイヤデコーダ1813を含んでよい。また、ビデオデコーダ812は、インターフェース1889および解像度アップスケーリング1870も含むことができる。図7Bのビデオデコーダは、本明細書で説明するように、例えば、スケーラブルビデオ符号化および符号化マルチビュービデオに適する。
インターフェース1889は、符号化ビデオストリーム1885を受信することができる。符号化ビデオストリーム1885は、ベースレイヤ符号化ビデオストリームと、エンハンスメントレイヤ符号化ビデオストリームとから成り得る。これらの二つのストリームは、別々にまたは一緒に送信できる。インターフェース1889は、符号化ビデオストリーム1885の一部または全部を、ベースレイヤデコーダ1813中のエントロピー復号ブロック1886に供給することが可能である。エントロピー復号ブロック1886の出力は、復号予測ループ1887に供給されればよい。復号予測ループ1887の出力は、参照バッファ1888に供給することが可能である。参照バッファは、復号予測ループ1887にフィードバックを供給できる。また、参照バッファ1888は、復号ベースレイヤビデオストリーム1884を出力することも可能である。
また、インターフェース1889は、エンハンスメントレイヤデコーダ1815のエントロピー復号ブロック1890に、符号化ビデオストリーム1885の一部または全部を供給することができる。エントロピー復号ブロック1890の出力は、逆量子化ブロック1891に供給すればよい。逆量子化ブロック1891の出力は、加算器1892に供給すればよい。加算器1892は、逆量子化ブロック1891の出力と、予測選択ブロック1895の出力とを加算することができる。加算器1892の出力は、デブロッキングブロック1893に供給すればよい。デブロッキングブロック1893の出力は、参照バッファ1894に供給すればよい。参照バッファ1894は、復号エンハンスメントレイヤビデオストリーム1882を出力することが可能である。参照バッファ1894の出力は、イントラ予測部1897に供給すればよい。エンハンスメントレイヤデコーダ1815は、動き補償1896を含むことが可能である。動き補償1896は、解像度アップスケーリング1870の後に実施すればよい。予測選択ブロック1895は、イントラ予測部1897の出力および動き補償1896の出力を受信することができる。また、デコーダは、インターフェース1889と共になど、必要に応じて一つ以上の符号化ピクチャバッファを含んでもよい。
図8は、伝送電子デバイス802において用いられる様々な構成要素を示す。本明細書で説明する電子デバイス102、602、702の一つ以上は、図8に示される伝送電子デバイス802に従って実装すればよい。
伝送電子デバイス802は、電子デバイス802のオペレーションを制御するプロセッサ817を含む。プロセッサ817はCPUと称されてもよい。メモリ811は、読み取り専用メモリ(ROM:read‐only memory)、ランダムアクセスメモリ(RAM:random access memory)の両方、あるいは情報を格納することが可能な任意の種類のデバイスを含むことができ、プロセッサ817に命令813a(例えば実行可能命令)およびデータ815aを供給する。また、メモリ811の一部には、不揮発性ランダムアクセスメモリ(NVRAM:non‐volatile random access memory)を含めてもよい。メモリ811は、プロセッサ817と電子通信することができる。
命令813bおよびデータ815bは、プロセッサ817にも置くことができる。プロセッサ817の中にロードされる命令813bおよび/またはデータ815bは、プロセッサ817による実行または処理のためにロードされた、メモリ811からの命令813aおよび/またはデータ815aも含んでもよい。命令813bは、本明細書に開示されるシステムおよび方法を実装するためにプロセッサ817により実行することが可能である。例えば、命令813bは、前述の方法200、300、400、500の一つ以上を行うために実行可能とすることができる。
伝送電子デバイス802は、他の電子デバイス(例えば受信電子デバイス)と通信するための一つ以上の通信インターフェース819を含むことが可能である。通信インターフェース819は、ワイヤード通信技術、ワイヤレス通信技術、またはその両方に基づけばよい。通信インターフェース819の例には、シリアルポート、パラレルポート、ユニバーサルシリアルバス(USB:Universal Serial Bus)、イーサネットアダプタ、IEEE1394バスインターフェース、小型コンピュータシステムインターフェース(SCSI:small computer system interface)バスインターフェース、赤外線(IR:infrared)通信ポート、ブルートゥースワイヤレス通信アダプタ、第3世代パートナーシッププロジェクト(3GPP:3rd Generation Partnership Project)規格によるワイヤレストランシーバなどが含まれる。
伝送電子デバイス802には、一つ以上の出力デバイス823および一つ以上の入力デバイス821を含めることができる。出力デバイス823の例には、スピーカ、プリンタなどが含まれる。電子デバイス802に含めることが可能な出力デバイスの一つの種類に、ディスプレイデバイス825がある。本明細書に開示される構成で使用されるディスプレイデバイス825には、陰極線管(CRT:cathode ray tube)、液晶ディスプレイ(LCD:liquid crystal display)、発光ダイオード(LED:light‐emitting diode)、ガスプラズマ、エレクトロルミネセンスなどの任意の適切な画像投影技術を用いることができる。メモリ811に格納されたデータを、ディスプレイ825に示されるテキスト、グラフィクスおよび/または動画に(必要に応じ)変換するために、ディスプレイコントローラ827が設けられてもよい。入力デバイス821の例には、キーボード、マウス、マイクロホン、遠隔制御デバイス、ボタン、ジョイスティック、トラックボール、タッチパッド、タッチスクリーン、ライトペンなどが含まれる。
伝送電子デバイス802の様々な構成要素は、バスシステム829によって一緒に連結され、該バスシステムは、データバスに加え、パワーバス、制御信号バス、およびステータス信号バスを含み得る。但し、明瞭化のため、図8では様々なバスをバスシステム829として示す。図8に示される伝送電子デバイス802は、具体的構成要素のリストというよりむしろ機能ブロック図である。
図9は、受信電子デバイス902中で利用可能な様々な構成要素を示すブロック図である。本明細書に記載される電子デバイス102、602、702の一つ以上は、図9に示される受信電子デバイス902に準じて実装することができる。
受信電子デバイス902は、該電子デバイス902のオペレーションを制御するプロセッサ917を含む。プロセッサ917はCPUと称されることもある。メモリ911は、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)の両方、または、情報を格納することが可能な任意の種類のデバイスを含んでよく、該メモリはプロセッサ917に命令913a(例えば実行可能命令)およびデータ915aを供給することができる。また、メモリ911の一部には不揮発性ランダムアクセスメモリ(NVRAM)を含めてもよい。メモリ911は、プロセッサ917と電子通信していればよい。
命令913bおよびデータ915bは、プロセッサ917中にも置くことができる。プロセッサ917中にロードされた命令913bおよび/またはデータ915bには、プロセッサ917による実行または処理のためにメモリ911からロードされた命令913aおよび/またはデータ915aが含まれてよい。命令913bは、本明細書に開示されるシステムおよび方法を実装するためにプロセッサ917により実行することが可能である。例えば、命令913bは、前述した方法200、300、400、500の一つ以上を行うために実行可能とすることができる。
受信電子デバイス902は、他の電子デバイス(例えば伝送電子デバイス)と通信するための一つ以上の通信インターフェース919を含むことができる。通信インターフェース919は、ワイヤード通信技術、ワイヤレス通信技術、またはその両方に基づくことができる。通信インターフェース919の例には、シリアルポート、パラレルポート、ユニバーサルシリアルバス(USB)、イーサネットアダプタ、IEEE1394バスインターフェース、小型コンピュータシステムインターフェース(SCSI)バスインターフェース、赤外線(IR)通信ポート、ブルートゥースワイヤレス通信アダプタ、第3世代パートナーシッププロジェクト(3GPP)規格によるワイヤレストランシーバなどが含まれる。
受信電子デバイス902は、一つ以上の出力デバイス923および一つ以上の入力デバイス921を含んでよい。出力デバイス923の例には、スピーカ、プリンタなどが含まれる。電子デバイス902に含めることが可能な出力デバイス一つの種類に、ディスプレイデバイス925がある。本明細書に開示する構成で使用されるディスプレイデバイス925は、陰極線管(CRT)、液晶ディスプレイ(LCD)、発光ダイオード(LED)、ガスプラズマ、エレクトロルミネセンスなど、任意の適切な画像投影技術を用いることができる。メモリ911に格納されたデータを、ディスプレイ925に表示されるテキスト、グラフィクスおよび/または動画に(必要に応じ)変換するために、ディスプレイコントローラ927が備えられてもよい。入力デバイス921の例には、キーボード、マウス、マイクロホン、遠隔制御デバイス、ボタン、ジョイスティック、トラックボール、タッチパッド、タッチスクリーン、ライトペンなどが含まれる。
受信電子デバイス902の様々な構成要素は、バスシステム929によって一緒に連結され、該バスシステムは、データバスに加え、パワーバス、制御信号バス、およびステータス信号バスを含んでよい。但し、明瞭化のため、図9では様々なバスをバスシステム929として示す。図9に示される電子デバイス902は、具体的構成要素のリストというよりむしろ機能ブロック図である。
図10は、メッセージを送信するためのシステムおよび方法が実装可能な電子デバイス1002の一構成を示すブロック図である。電子デバイス1002は、符号化手段1031および伝送手段1033を含む。符号化手段1031および伝送手段1033は、前述の図1、図2、図3、図6および図8の一つ以上に関連して説明した機能の一つ以上を行うように構成することができる。例えば、符号化手段1031および伝送手段1033は、ビットストリーム1014を生成することができる。前述の図8は、図10の具体的な装置構造体の一例を示す。図1、図2、図3、図6および図8の機能の一つ以上を実現するために、他の様々な構造体が実装されてもよい。例えば、DSPがソフトウェアにより実現されてもよい。
図11は、ビットストリーム1114をバッファリングするためのシステムおよび方法が実装可能な電子デバイス1102の一構成を示すブロック図である。電子デバイス1102は、受信手段1135および復号手段1137を含み得る。受信手段1135および復号手段1137は、前述の図1、図4、図5、図7および図9の一つ以上に関連して説明した機能の一つ以上を行うように構成されればよい。例えば、受信手段1135および復号手段1137は、ビットストリーム1114を受信することができる。前述の図9は、図11の具体的な装置構造体の一例を示す。図1、図4、図5、図7および図9の機能の一つ以上を実現するために、他の様々な構造体が実装されてもよい。例えば、DSPがソフトウェアにより実現されてもよい。
図12は、復号ピクチャバッファ(DPB)のオペレーションのための方法1200の一構成を示すフロー図である。方法1200は、エンコーダ104またはそのサブパーツの一つ(例えば復号ピクチャバッファモジュール676)により実施することができる。方法1200は、電子デバイス102(例えば電子デバイスB102b)中のデコーダ112により行われてもよい。上記に加えまたはこれに換えて、方法1200は、デコーダ712またはそのサブパーツの一つ(例えば復号ピクチャバッファモジュール709)により行うことも可能である。該デコーダは、ピクチャの第一のスライスヘッダを構文解析する(ステップ1202)ことができる。現ピクチャの復号前(だが、現ピクチャの第一のスライスのスライスヘッダを構文解析した後)の、ピクチャのDPBからの出力および除去は、現ピクチャを包含するアクセスユニットの第一の復号ユニットがCPBから除去されるときに瞬時に行われ、以下のように進む。
− 参照ピクチャセット(RPS:reference picture set)の復号処理が呼び出される。参照ピクチャセットは、或るピクチャに関連付けられた参照ピクチャのセットであって、復号順で対象ピクチャの前の全ての参照ピクチャから成り、対象ピクチャまたは復号順で対象ピクチャに続く任意のピクチャのインター予測に使用が可能である。
− ビデオのビットストリームは、一般にネットワーク抽象化レイヤ(NAL)ユニットと言われる論理データパケット中に入れられたシンタクス構造体を含むことができる。各NALユニットは、関連するデータペイロードの目的を識別するための、2バイト(例えば16ビット)のNALユニットヘッダなどのNALユニットヘッダを含む。例えば、各符号化スライス(および/またはピクチャ)が、一つ以上のスライス(および/またはピクチャ)NALユニット中に符号化されてよい。他のカテゴリのデータ、例えば、付加拡張情報、時間サブレイヤアクセス(TSA:temporal sub‐layer access)ピクチャの符号化スライス、段階的時間サブレイヤアクセス(STSA:step‐wise temporal sub‐layer access)ピクチャの符号化スライス、非TSA、非STSAトレイリングピクチャの符号化スライス、ブロークンリンクアクセスピクチャの符号化スライス、瞬時復号リフレッシュピクチャの符号化スライス、クリーンランダムアクセスピクチャの符号化スライス、復号可能リーディングピクチャの符号化スライス、廃棄タグ付きピクチャの符号化スライス、ビデオパラメータセット、シーケンスパラメータセット、ピクチャパラメータセット、アクセスユニットデリミタ、エンドオブシーケンス、エンドオブビットストリーム、フィラデータ、および/またはシーケンスエンハンスメント情報メッセージなど、のために他のNALユニットを含めることができる。表(4)は、NALユニットコードおよびNALユニット型クラスの一例を示す。必要に応じ他のNALユニット型が含まれてもよい。また、当然のことながら、表(4)に示されるNALユニットのNALユニット型値は、入れ換えおよび再設定されてもよい。また、追加のNALユニット型を加えることも可能である。また、一部のNALユニット型を除去することもできる。
イントラランダムアクセスポイント(IRAP:intra random access point)ピクチャは、表(4)中に示されるように、各ビデオ符号化レイヤNALユニットが、両端値を含めてBLA_W_LPからRSV_IRAP_VCL23までの範囲内のnal_unit_typeを有する符号化ピクチャである。IRAPピクチャは、イントラ符号化(I)スライスだけを包含する。瞬時復号リフレッシュ(IDR)ピクチャは、表(4)に示されるように、各ビデオ符号化レイヤNALユニットがIDR_W_RADLまたはIDR_N_LPに等しいnal_unit_typeを有するIRAPピクチャである。瞬時復号リフレッシュ(IDR)ピクチャは、Iスライスだけを包含し、復号順でビットストリームの第一のピクチャでもよいし、またはビットストリームの後の方で現れてもよい。各IDRピクチャは、復号順で符号化ビデオシーケンス(CVS:coded video sequence)の第一のピクチャである。ブロークンリンクアクセス(BLA:broken link access)ピクチャは、表(4)に示されるように、各ビデオ符号化レイヤNALユニットがBLA_W_LP、BLA_W_RADL、またはBLA_N_LPに等しいnal_unit_typeを有するIRAPピクチャである。BLAピクチャは、Iスライスだけを含み、復号順でビットストリームの第一のピクチャでもよいし、またはビットストリームの後の方で現れてもよい。各BLAピクチャは、新規の符号化ビデオシーケンスを開始し、復号処理に対してIDRピクチャと同じ影響を有する。また一方、BLAピクチャは、空でない参照ピクチャセットを指定するシンタクス要素を包含する。
表(5)を参照すると、NALユニットヘッダのシンタクスは、2バイトのデータすなわち16ビットを含むことができる。最初のビットは、NALユニットの始めの常にゼロに設定される「forbidden_zero_bit」である。次の6ビットは、表(4)に示されるNALユニットに含まれるローバイトシーケンスペイロード(「RBSP」)データ構造の型を指定する「nal_unit_type」である。その次の6ビットは、レイヤの識別子を指定する「nuh_layer_id」である。一部の場合において、これらの6ビットは、代わりに「nuh_reserved_zero_6bits」として指定することもできる。nuh_reserved_zero_6bitsは、標準のベース仕様では0に等しい。スケーラブルビデオ符号化および/またはシンタクス拡張において、nuh_layer_idは、この特定のNALユニットが、これらの6ビットの値により特定されるレイヤに帰属することを指定することができる。次のシンタクス要素は、「nuh_temporal_id_plus1」である。nuh_temporal_id_plus1マイナス1は、NALユニットの時間識別子を指定できる。変数時間識別子TemporalIdは、TemporalId=nuh_temporal_id_plus1−1として指定が可能である。時間識別子TemporalIdは、時間サブレイヤを特定するために用いられる。変数HighestTidは、復号対象の最上位の時間サブレイヤを識別する。
表(6)は、例示的なシーケンスパラメータセット(SPS)シンタクス構造を示す。
pic_width_in_luma_samplesは輝度サンプル単位での各復号ピクチャの幅を指定する。pic_width_in_luma_samplesは0に等しくないものとすればよい。
pic_height_in_luma_samplesは輝度サンプル単位での各復号ピクチャの高さを指定する。pic_height_in_luma_samplesは0に等しくないものとすればよい。
sps_max_sub_layers_minus1プラス1は、SPSを参照する各CVS中に存在し得る時間サブレイヤの最大数を指定する。sps_max_sub_layers_minus1の値は、両端値を含めて0から6までの範囲内であればよい。
1に等しいsps_sub_layer_ordering_info_present_flagフラグは、sps_max_sub_layers_minus1+1のサブレイヤに対するsps_max_dec_pic_buffering_minus1[i]、sps_max_num_reorder_pics[i]、およびsps_max_latency_increase_plus1[i]シンタクス要素が存在することを指定する。0に等しいsps_sub_layer_ordering_info_present_flagは、sps_max_dec_pic_buffering_minus1[sps_max_sub_layers_minus1]、sps_max_num_reorder_pics[sps_max_sub_layers_minus1]、およびsps_max_latency_increase_plus1[sps_max_sub_layers_minus1]の値が全てのサブレイヤに適用されることを指定する。
sps_max_dec_pic_buffering_minus1[i]プラス1は、HighestTidがiに等しいときの、CVSに対する復号ピクチャバッファの最大必要サイズをピクチャストレージバッファ単位で指定する。sps_max_dec_pic_buffering_minus1[i]の値は、両端値を含めて0からMaxDpbSize−1までの範囲内にあればよく、前式中のMaxDpbSizeはピクチャストレージバッファ単位での最大復号ピクチャバッファサイズを指定する。iが0より大きいとき、sps_max_dec_pic_buffering_minus1[i]は、sps_max_dec_pic_buffering_minus1[i−1]以上であればよい。両端値を含めて0からsps_max_sub_layers_minus1−1までの範囲内のiに対してsps_max_dec_pic_buffering_minus1[i]が存在しないときは、sps_sub_layer_ordering_info_present_flagが0に等しいことにより、sps_max_dec_pic_buffering_minus1[i]は、sps_max_dec_pic_buffering_minus1[sps_max_sub_layers_minus1]に等しいものと推定される。
sps_max_num_reorder_pics[i]は、HighestTidがiに等しいときの、復号順でCVS中の任意のピクチャに先行し、出力順でそのピクチャに後続可能なピクチャの最大許容数を示す。sps_max_num_reorder_pics[i]の値は、両端値を含めて0からsps_max_dec_pic_buffering_minus1[i]までの範囲内にあればよい。iが0より大きいとき、sps_max_num_reorder_pics[i]はsps_max_num_reorder_pics[i−1]以上であればよい。両端値を含めて0からsps_max_sub_layers_minus1−1までの範囲内のiに対して、sps_max_num_reorder_pics[i]が存在しないときは、sps_sub_layer_ordering_info_present_flagが0に等しいことにより、sps_max_num_reorder_pics[i]はsps_max_num_reorder_pics[sps_max_sub_layers_minus1]に等しいものと推定される。
0に等しくないsps_max_latency_increase_plus1[i]は、HighestTidがiに等しいときの、出力順でCVS中の任意のピクチャに先行し、復号順でそのピクチャに後続し得るピクチャの最大数を指定するSpsMaxLatencyPictures[i]の値を計算するために用いられる。
sps_max_latency_increase_plus1[i]が0に等しくないとき、SpsMaxLatencyPictures[i]の値は以下により指定される:
SpsMaxLatencyPictures[i]=sps_max_num_reorder_pics[i]+sps_max_latency_increase_plus1[i]−1
sps_max_latency_increase_plus1[i]が0に等しいときには、対応する制限は表現されない。
sps_max_latency_increase_plus1[i]の値は、両端値を含めて0から2
32−2までの範囲内にあればよい。両端値を含めて0からsps_max_sub_layers_minus1−1までの範囲内のiに対し、sps_max_latency_increase_plus1[i]が存在しないときは、sps_sub_layer_ordering_info_present_flagが0に等しいことにより、sps_max_latency_increase_plus1[i]は、sps_max_latency_increase_plus1[sps_max_sub_layers_minus1]に等しいものと推定される。
現ピクチャがIRAPピクチャであるとき、以下が適用される:
− 現ピクチャがIDRピクチャ、BLAピクチャ、復号順でビットストリームの第一のピクチャ、または復号順でシーケンス終端NALユニットに後続する第一のピクチャである場合、変数NoRaslOutputFlagが1に等しく設定される。
− 上記以外の場合には、変数HandleCraAsBlaFlagを現ピクチャの値に設定するために何らかの外部手段が利用可能である場合、変数HandleCraAsBlaFlagは、その外部手段により供給される値に等しく設定され、変数NoRaslOutputFlagはHandleCraAsBlaFlagに等しく設定される。
− それ以外の場合には、変数HandleCraAsBlaFlagは0に等しく設定され、変数NoRaslOutputFlagは0に等しく設定される。
現ピクチャが、1に等しいNoRaslOutputFlagを有するピクチャ0ではないIRAPピクチャである場合、以下の順序付きステップが適用される:
1.テスト対象デコーダに対し、変数NoOutputOfPriorPicsFlagが以下のように導出される:
− 現ピクチャがCRAピクチャである場合は、NoOutputOfPriorPicsFlagは(no_output_of_prior_pics_flagの値に関わらず)1に等しく設定される。
− 上記以外の場合は、アクティブなSPSから導出される、pic_width_in_luma_samples、pic_height_in_luma_samples、またはsps_max_dec_pic_buffering_minus1[HighestTid]の値が、それぞれ、先行するピクチャに対しアクティブなSPSから導出されるpic_width_in_luma_samples、pic_height_in_luma_samples、またはsps_max_dec_pic_buffering_minus1[HighestTid]の値と異なる場合、no_output_of_prior_pics_flagの値に関わらず、NoOutputOfPriorPicsFlagは、テスト対象デコーダにより1に設定(されるべきではないが)され得る。
− それ以外の場合には、NoOutputOfPriorPicsFlagは、no_output_of_prior_pics_flagに等しく設定される。
2.テスト対象デコーダに対し導出されたNoOutputOfPriorPicsFlagの値が、以下のようにHRDに適用される:
− NoOutputOfPriorPicsFlagが1に等しい場合、DPB中の全てのピクチャストレージバッファは、それらが包含するピクチャの出力をせずに空にされ、DPB充満度が0に等しく設定される。
− 上記以外の(NoOutputOfPriorPicsFlagが0に等しい)場合は、「出力のために不要」および「参照のために使用されず」としてマークされたピクチャを包含する全てのピクチャストレージバッファが(出力なしで)空にされ、DPBの全ての空でないピクチャストレージバッファが、「バンピング」処理1204を繰り返し呼び出すことにより空にされ、DPB充満度は0に等しく設定される。
− それ以外の(現ピクチャが、1に等しいNoRaslOutputFlagを有するIRAPピクチャでない)場合には、「出力のために不要」および「参照のために使用されず」としてマークされたピクチャを包含する全てのピクチャストレージバッファが(出力なしで)空にされる。各ピクチャストレージバッファが空にされるごとにDPB充満度が1だけ減少される。以下の条件の一つ以上が真のときには、以下の条件のいずれもが真でなくなるまで「バンピング」処理1204が繰り返し呼び出されて、さらなるピクチャストレージバッファが空にされるごとにDPB充満度がさらに1だけ減少される:
1.「出力のために必要」としてマークされた、当該特定のnuh_layer_id値を有するDPBのピクチャの数は、(当該特定のnuh_layer_id値が0に等しいときに)アクティブなシーケンスパラメータセットからの、または当該特定のnuh_layer_id値のアクティブなレイヤシーケンスパラメータセットからのsps_max_num_reorder_pics[HighestTid]よりも大きい。
2.(当該特定のnuh_layer_id値が0に等しいときには)アクティブなシーケンスパラメータセットからの、または当該特定のnuh_layer_id値のアクティブなレイヤシーケンスパラメータセットからのsps_max_latency_increase_plus1[HighestTid]が0に等しくなく、「出力のために必要」としてマークされた、当該特定のnuh_layer_id値を有する少なくとも一つのピクチャがDPB中に在り、該ピクチャに対し、関連する変数PicLatencyCountは、当該特定のnuh_layer_id値のSpsMaxLatencyPictures[HighestTid]以上である。
3.DPB中の、当該特定のnuh_layer_id値を有するピクチャの数が、(当該特定のnuh_layer_id値が0に等しいときに)アクティブなシーケンスパラメータセットからの、または当該特定のnuh_layer_id値に対するアクティブなレイヤシーケンスパラメータセットからのsps_max_dec_pic_buffering[HighestTid]+1以上である。
ブロック1206のピクチャ復号処理(ピクチャ復号およびマーキング)は、現ピクチャを含むアクセスユニットの最後の復号ユニットがCPBから除去されるときに、瞬時に行われる。
「出力のために必要」としてマークされた、DPB中の現ピクチャのnuh_layer_id値に等しいnuh_layer_idを有する各ピクチャに対し、関連する変数PicLatencyCountは、PicLatencyCount+1に等しく設定される。
現ピクチャは、ピクチャの最後の復号ユニットが復号された後に復号されたと見なされる。現復号ピクチャは、DPB中の空のピクチャストレージバッファに格納され、以下が適用される:
− 現復号ピクチャが1に等しいPicOutputFlagを有する場合、該ピクチャは「出力のために必要」としてマークされ、その関連する変数PicLatencyCountは0に等しく設定される。
− 上記以外の(現復号ピクチャが0に等しいPicOutputFlagを有する)場合には、「出力のために不要」としてマークされる。
現復号ピクチャは、「短期参照のために使用される」としてマークされる。
以下の条件の一つ以上が真のときには、以下の条件のいずれもが真でなくなるまで、追加の「バンピング」処理1208が繰り返し呼び出される:
− 「出力のために必要」としてマークされ、現ピクチャのnuh_layer_id値に等しいnuh_layer_id値を有する、DPB中のピクチャの数は、(現ピクチャのnuh_layer_id値が0に等しいときには)アクティブなシーケンスパラメータセットからの、または現ピクチャのnuh_layer_id値のアクティなレイヤシーケンスパラメータセットからのsps_max_num_reorder_pics[HighestTid]より大きい。
− (現ピクチャのnuh_layer_id値が0に等しいときには)アクティブシーケンスパラメータセットからの、または現ピクチャのnuh_layer_id値のアクティブレイヤシーケンスパラメータセットからのsps_max_latency_increase_plus1[HighestTid]が0に等しくなく、「出力のために必要」としてマークされた、当該特定のnuh_layer_id値を有する少なくとも一つのピクチャがDPB中に在り、該ピクチャに対し、関連する変数PicLatencyCountは、当該特定のnuh_layer_id値に対するSpsMaxLatencyPictures[HighestTid]以上である。
「バンピング」処理1204および追加のバンピング処理1208は、諸ステップに関して同一であり、以下の順序のステップから成る:「出力のために必要」としてマークされたDPB中の全てのピクチャのうちで最小値のピクチャオーダーカウント(PicOrderCntVal)を有するピクチャが、最初に出力されるピクチャとして選択される。ピクチャオーダーカウントは、各ピクチャに関連付けられた変数であり、CVSの全てのピクチャの中で関連ピクチャを一意的に識別し、関連ピクチャが復号ピクチャバッファから出力されるときには、該復号ピクチャバッファから出力が予定される同じCVS中の他のピクチャの出力順序の位置に対する関連ピクチャの出力順序の位置を示す。
− これらのピクチャは、0に等しいnuh_layer_idを有するピクチャに対するアクティブなシーケンスパラメータセット中、またはピクチャの値に等しいnuh_layer_id値に対するアクティブなレイヤシーケンスパラメータセット中に指定された適合クロッピングウィンドウを使用してクロップされ、クロップされたピクチャはnuh_layer_idの昇順に出力され、これらピクチャは「出力のために不要」とマークされる。
− 「参照のために使用されず」としてマークされたピクチャを包含し、クロップおよび出力されたピクチャの一つを含んでいた各ピクチャストレージバッファは空にされる。
図13Aを参照すると、前述したように、NALユニットヘッダのシンタクスは、2バイトのデータすなわち16ビットを含んでよい。最初のビットは、NALユニットの開始時に常にゼロに設定される「forbidden_zero_bit」である。次の6ビットは、NALユニットに包含されるローバイトシーケンスペイロード(「RBSP」)データ構造の型を指定する「nal_unit_type」である。その次の6ビットは、「nuh_reserved_zero_6bits」である。nuh_reserved_zero_6bitsは、標準のベース仕様では0に等しければよい。必要に応じて、nuh_reserved_zero_6bitsの他の値が指定されてもよい。デコーダは、標準のベース仕様に基づいてストリームを処理するときには、0に等しくないnuh_reserved_zero_6bitsの値を有する全てのNALユニットを無視(すなわちビットストリームから除去して廃棄)することが可能である。スケーラブル拡張またはその他の拡張では、nuh_reserved_zero_6bitsは、スケーラブルビデオ符号化および/またはシンタクス拡張をシグナリングするために他の値を指定してもよい。場合によって、シンタクス要素nuh_reserved_zero_6bitsは、reserved_zero_6bitsと呼ばれることがある。場合によって、シンタクス要素nuh_reserved_zero_6bitsは、図13Bおよび図13Cに示されるように、layer_id_plus1またはlayer_idと呼ばれることもある。この場合、要素layer_idは、layer_id_plus1マイナス1になる。この場合、layer_idは、スケーラブル符号化ビデオのレイヤに関係する情報をシグナリングするために用いることができる。次のシンタクス要素は、「nuh_temporal_id_plus1」である。nuh_temporal_id_plus1マイナス1は、NALユニットの時間識別子を指定することが可能である。変数時間識別子TemporalIdは、TemporalId=nuh_temporal_id_plus1−1として指定することができる。
図14を参照すると、一般的なNALユニットのシンタクス構造が示されている。図13のNALユニットヘッダ2バイトシンタクスが、図14のnal_unit_header()に対する参照中に含まれている。NALユニットのシンタクスの残りは、主にRBSPに関する。
「nuh_reserved_zero_6bits」を用いる一つの既存の技法には、nuh_reserved_zero_6bitsの6ビットを、個別的ビットフィールド、すなわち、依存ID、品質ID、ビューID、および深度フラグのうちの一つ以上に分割することによって、スケーラブルビデオ符号化情報をシグナリングすることであり、これら個別的ビットフィールドの各々はスケーラブル符号化ビデオの相異なるレイヤの識別を示す。これにより、該6ビットは、この特定のNALユニットが、スケーラブル符号化技術のいずれのレイヤに帰属するかを示す。そして、図15に示されるビデオパラメータセット(「VPS:video parameter set」)拡張シンタクス(「scalability_type」)などのデータペイロードにおいて、レイヤに関する情報が定義される。図15のVPS拡張シンタクスは、符号化ビデオシーケンスにおいて使用されるスケーラビリティ型と、NALユニットヘッダ中のlayer_id_plus1(またはlayer_id)を介してシグナリングされる次元とを指定する、4ビットのスケーラビリティ型(シンタクス要素scalability_type)を含む。スケーラビリティ型が0に等しいときには、符号化ビデオシーケンスはベース仕様に適合し、しかして全てのNALユニットのlayer_id_plus1が0に等しく、エンハンスメントレイヤまたはビューに属するNALユニットはない。スケーラビリティ型のより高い値は、図16に示すように解釈される。
layer_id_dim_len[i]は、i番目のスケーラビリティ次元IDの長さをビットで指定する。0〜7の範囲内の全てのi値に対するlayer_id_dim_len[i]の値の和は6以下である。vps_extension_byte_alignment_reserved_zero_bitは、ゼロである。vps_layer_id[i]は、以下のレイヤ依存情報が適用されるi番目のレイヤのlayer_idの値を指定する。num_direct_ref_layers[i]は、i番目のレイヤが直接依存するレイヤ数を指定する。ref_layer_id[i][j]は、i番目のレイヤが直接依存するj番目のレイヤを識別する。
このように、既存の技法は、図16にリストされたスケーラビリティ型の間でビットを割り当てるために、NALユニット中およびビデオパラメータセット中のスケーラビリティ識別子をシグナリングする。そして、各スケーラビリティ型に対しいくつの次元がサポートされるかが図16に定義される。例えば、スケーラビリティ型1は2つの次元(すなわち空間および品質)を有する。各次元に対し、layer_id_dim_len[i]は、これらの2つの次元の各々に割り当てられるビットの数を定義し、layer_id_dim_len[i]の全ての値の総和は、NALユニットヘッダのnuh_reserved_zero_6bitsのビットの数である6以下である。しかしてこの技法は、どの型のスケーラビリティが使用されるか、およびNALユニットヘッダの6ビットがスケーラビリティにどのように割り当てられるかを組み合わせて識別する。
図16に示されるような様々なスケーラビリティ次元のかかる固定された組み合わせは多くの応用に適しているが、これに含まれていない望ましい組み合わせがある。図17を参照すると、修正されたビデオパラメータセットの拡張シンタクスが、nuh_reserved_zero_6bitsシンタクス要素の各ビットに対するスケーラビリティ型を指定している。vps_extension_byte_alignment_reserved_zero_bitは0に設定される。max_num_layers_minus1_bitsは、layer_id_plus1またはnuh_reserved_zero_6bitsと呼ばれる、図13のNALユニットヘッダの最初の2バイトにおけるシンタクス要素に用いられるビットの合計数を示す。scalability_map[i]は、layer_id_plus1シンタクス要素中の各ビットのスケーラビリティ型を指定する。一部の場合において、layer_id_plus1シンタクス要素は、代わりにnuh_reserved_zero_6bitsまたはrserved_zero_6bitsシンタクス要素と呼ばれることもある。シンタクス要素layer_id_plus1の全てのビットに対するスケーラビリティマップが合わさって、符号化ビデオシーケンス中で使用されるスケーラビリティを指定する。各スケーラビリティ型に対する識別子の実際の値は、NALユニットヘッダ中のlayer_id_plus1(nuh_reserved_zero_6bits)フィールドにおける対応する当該ビットを介してシグナリングされる。全ての値のiに対してscalability_map[i]が0に等しいときは、符号化ビデオシーケンスはベース仕様に適合し、しかしてNALユニットのlayer_id_plus1値は0に等しく、エンハンスメントレイヤまたはビューに帰属するNALユニットはない。vps_layer_id[i]は、以下のレイヤ依存情報が適用されるi番目のレイヤのlayer_idの値を指定する。num_direct_ref_layers[i]は、i番目のレイヤが直接依存するレイヤ数を指定する。ref_layer_id[i][j]は、i番目のレイヤが直接依存するj番目のレイヤを識別する。
scalability_map[i]のより高い値は、図18に示すように解釈される。スケーラビリティマップ[i]は、(0)なし、(1)空間、(2)品質、(3)深度、(4)マルチビュー、(5)未指定、(6)予備、および(7)予備、のスケーラビリティ次元を含む。
したがって、NALユニットヘッダの各ビットは、スケーラビリティ次元が何であるか(例えば、なし、空間、品質、深度、マルチビュー、未指定、予備)についてのビデオパラメータセットにおける3ビットに基づいて解釈される。例えば、layer_id_plus1の全てのビットが空間スケーラビリティに対応することをシグナリングするために、VPSのscalability_map値は、NALユニットヘッダの6ビットで001 001 001 001 001 001として符号化することができる。また、例えばlayer_id_plus1のうち3ビットが空間スケーラビリティに対応し、3ビットが品質スケーラビリティに対応することをシグナリングするために、VPSのscalability_map値が、NALユニットヘッダの6ビットで001 001 001 010 010 010として符号化されてもよい。
図19を参照すると、別の実施形態が、num_scalability_dimensions_minus1を用いてNALユニットヘッダの6ビット中のスケーラビリティ次元の数をシグナリングするビデオパラメータセットを含む。num_scalability_dimensions_minus1プラス1は、layer_id_plus1、nuh_reserved_zero_6bits、および/またはreserved_zero_6bitsシンタクス要素を介してシグナリングされるスケーラビリティ次元の数を示す。scalability_map[i]は、図17に関連して上記で説明したのと同じセマンティクスを有する。num_bits_for_scalability_map[i]は、i番目のスケーラビリティ次元のビットの長さを指定する。i=0,...num_scalability_dimensions_minus1に対するnum_bits_for_scalability_map[i]の総和は6に等しい(またはlayer_id_plus1、またはvps_reserved_zero_6bits、またはmax_num_layers_minus1、またはreserved_zero_6bits、またはnuh_reserved_zero_6bitsシンタクス要素に使用されるビットの数に等しい)。
図17および図19に関しては、必要に応じて他のバリエーションを使用することもできる。例えば一実施形態において、scalability_map[i]は、u(4)(またはn>3またはn<3のu(n))を用いてシグナリングすることが可能である。この場合、scalability_map[i]のより高い値が、ビデオ技法の特定のプロファイルに適合するビットストリームのために予備として指定されればよい。例えば、u(4)を用いてscalability_map[i]をシグナリングするとき、スケーラビリティマップ値6...15を「予備」として指定することができる。別の実施形態では、例えば、scalability_map[i]を、ue(v)または何らかの他の符号化スキームを用いてシグナリングすることが可能である。例えば別の実施形態において、scalability_map[i]値が単調な非減少(または非増加)順に配置されるように制限事項を指定することができる。これにより、NALユニットヘッダ中のlayer_id_plus1フィールドにおける様々なスケーラビリティ次元フィールドの連続性が得られる。
「layer_id_plus1」または「nuh_reserved_zero_6bits」シンタクス要素を用いてスケーラブルビデオ符号化をシグナリングするための別の既存技術は、ビデオパラメータセット中の一般的ルックアップテーブルをシグナリングすることにより、NALユニットヘッダのlayer_id_plus1をレイヤ識別子にマッピングすることである。図20を参照すると、この既存の技法は、ルックアップテーブルのi番目のレイヤの次元型および次元識別情報の数を指定するビデオパラメータセットを含む。具体的に、vps_extension_byte_alignment_reserved_zero_bitはゼロである。num_dimensions_minus1[i]プラス1は、i番目のレイヤに対する次元型(dimension_type[i][j])および次元識別子(dimension_id[i][j])の数を指定する。図31に指定されるように、dimension_type[i][j]は、i番目のレイヤのj番目のスケーラビリティ次元型を指定し、該レイヤはiに等しいlayer_idまたはlayer_id_plus1を有する。図21に示されるように、識別される次元には、(0)ビュー順序idx、(1)深度フラグ、(2)依存ID、(3)品質ID、予備の(4)〜(15)が含まれる。dimension_id[i][j]は、i番目のレイヤのj番目のスケーラビリティ次元型の識別子を指定し、存在しないときには0であるものと推定される。num_direct_ref_layers[i]は、i番目のレイヤが直接依存するレイヤ数を指定する。ref_layer_id[i][j]は、i番目のレイヤが直接依存するj番目のレイヤを識別する。残念ながら、図20に示した提案された実施形態は、扱いにくい大きなルックアップテーブルをもたらす。
図22を参照すると、修正されたビデオパラメータセットの拡張部は、スケーラビリティ次元と組み合わせて使用されるスケーラビリティマスクを含む。scalability_maskは、0および1ビットのパターンをシグナリングし、図23のスケーラビリティマップのシンタクスにより示されるように、各ビットが一つのスケーラビリティ次元に対応する。特定のスケーラビリティ次元に対する1の値は、そのスケーラビリティ次元がこのレイヤ(i番目のレイヤ)に存在することを示す。特定のスケーラビリティ次元についての0の値は、そのスケーラビリティ次元がこのレイヤ(i番目のレイヤ)に存在しないことを示す。例えば、00100000のビットのセットは、品質スケーラビリティを表す。シグナリングされるscalability_id[j]値により、存在する特定のスケーラビリティ次元の実際の識別子の値が示される。num_scalability_types[i]の値は、scalability_maskにおける1の値を有するビットの数の和に等しい。しかして、
である。scalability_id[j]は、scalability_mask値によってシグナリングされるスケーラビリティ型の値に対するj番目のスケーラビリティ次元の識別子値を示す。
図24を参照すると、これは図22の修正図であり、ループの外側でシグナリングされるスケーラビリティマスクを含む。これにより、各レイヤ識別子に一つの共通のマスクが得られる。図25を参照すると、この修正では、対応する例示的なビデオパラメータセットは、スケーラビリティマスクは含まずに、スケーラブル識別情報を含むことができる。この場合、シンタクス要素scalable_id[j]は、図22のシンタクス要素scalability_id[j]と同じ解釈を有する。
図26を参照すると、これは図22の修正図であり、ループの外側でシグナリングされるスケーラビリティマスク(scalability_mask)を含む。これにより、各レイヤ識別情報に一つの共通のマスクが得られる。scalability_maskは、0および1ビットのパターンをシグナリングし、図27のスケーラビリティマップのシンタクスにより示されるように、その各ビットが一つのスケーラビリティ次元に対応する。特定のスケーラビリティ次元に対する1の値は、そのスケーラビリティ次元がこのレイヤ(i番目のレイヤ)に存在することを示す。特定のスケーラビリティ次元に対する0の値は、そのスケーラビリティ次元がこのレイヤ(i番目のレイヤ)に存在しないことを示す。例えば、00100000のビットのセットは、品質スケーラビリティを表す。シグナリングされるscalability_id[j]値により、存在する特定のスケーラビリティ次元の実際の識別子の値が示される。num_scalability_types[i]の値は、1の値を有するscalability_mask中のビットの数の合計に等しい。しかして、
である。この場合、scalability_id[j]変数は、代わりにdimension_id[i][j]変数と呼ばれてもよい。dimension_id[i][j]は、i番目のレイヤのj番目のスケーラビリティ次元のスケーラビリティ識別子を指定する。このとき、変数ScalabilityId[i][j]は以下のように導出される。
前式中のScalabilityId[i][k]は、以下のように、対応するスケーラビリティ型の次元IDをシグナリングする。
前表のDependencyId[i][1]は、i番目のレイヤに対する空間スケーラビリティ次元の依存IDであり、QualityId[i][2]は、i番目のレイヤに対する品質スケーラビリティ次元の品質IDであり、depthFlag[i][3]は、i番目のレイヤに対する深度スケーラビリティ次元の深度フラグ/深度IDであり、ViewId[i][4]は、i番目のレイヤに対するマルチビュースケーラビリティ次元のビューIDである。
また、図26において、1に等しいavc_base_codec_flagは、ベースレイヤがRec.ITU‐T H.264|ISO/IEC14496‐10に適合することを指定し、1に等しいavc_base_codec_flagは、HEVCに適合することを指定する。vps_nuh_layer_id_presnet_flagは、NALユニットヘッダ中のlayer_idの値をシグナリングするlayer_id_in_nuh[i]変数が、シグナリングされたかどうかを示す。
別の実施形態において、シンタクス要素scalability_mask[i]、scalability_mask、scalability_id[j]の一つ以上は、u(8)とは異なるビットの数を使用してシグナリングすることができる。例えば、これらのシンタクス要素は、u(16)(またはn>8もしくはn<8のu(n))を用いてシグナリングすることができよう。別の実施形態では、これらのシンタクス要素の一つ以上は、ue(v)を用いてシグナリングすることが可能である。別の実施形態において、scalability_maskは、NALユニットヘッダのlayer_id_plus1、vps_reserved_zero_6bits、max_num_layers_minus1、reserved_zero_6bits、および/またはnuh_reserved_zero_6bitsシンタクス要素中でシグナリングすることができる。一部の実施形態では、システムは、このシグナリングをVPS NALユニットにだけ、もしくは非VPS NALユニットにだけ、または全てのNALユニットに対し行ってもよい。さらに別の実施形態では、scalability_maskは、ピクチャ毎にビットストリームの任意の場所でシグナリングされてよい。例えば、スライスヘッダ、ピクチャパラメータセット、ビデオパラメータセット、もしくは他の任意のパラメータセット、またはビットストリームの他の任意の規範的部分においてscalability_maskがシグナリングされればよい。
なお、図13のNALユニットヘッダ中のシンタクス要素nuh_reserved_zero_6bitsまたはlayer_id_plus1が6ビットを有するので、図13、15、18、20、21、22、23、および対応する説明は、6ビットについて述べている。しかし、前述の説明は全て、当該シンタクス要素が6ビットとは異なるビットの数を使用した場合には適切に修正することが可能である。例えば、当該シンタクス要素(nuh_reserved_zero_6bitsまたはlayer_id_plus1)が代わりに9ビットを使用した場合には、図17では、max_num_layer_minus1ビットの値は9となり、scalability_map[i]は6ビットの代わりに9ビットの各々に対しシグナリングされることになる。
図24を参照すると、これは図22の修正図であり、レイヤ依存情報をシグナリングするためのシンタクスを提供している。新規のシンタクス要素layer_dependency_information_patternが定義されている。
layer_dependency_information_patternは、vps_max_layers_minus1に等しい長さを有する0および1ビットのパターンをシグナリングする。i番目のビットに対する0の値は、layer_id(i+1)を有するレイヤが独立レイヤであることを示す。i番目のビットに対する1の値は、layer_id(i+1)を有するレイヤが一つ以上の他のレイヤに依存する依存レイヤであることを示す。
NumDepLayersの値は、1の値を有するlayer_dependency_information_pattern中のビットの数の和に等しい。しかして、
である。
図29を参照すると、これは図26の修正図であり、レイヤ依存情報をシグナリングするためのシンタクスを提供している。新規のシンタクス要素layer_dependency_flag[i]が定義されている。layer_dependency_flag[i]は、レイヤが他のレイヤに依存するかどうかをシグナリングする。このフラグに対する0の値は、layer_id iを有するレイヤが独立レイヤであることを示す。i番目のビットに対する1の値は、layer_id iを有するレイヤが依存レイヤであることを示す。
図30を参照すると、これは図26の修正図であり、レイヤ依存情報をシグナリングするためのシンタクスを提供している。新規のシンタクス要素layer_dependency_map[i]が定義されている。layer_dependency_map[i]は、vps_max_layers_minus1に等しい長さを有する0ビットと1ビットとのパターンをシグナリングする。layer_dependency_map[i]のk番目のビットに対する0の値は、レイヤiが、layer_id(k+1)を有するレイヤに依存しないことを示す。layer_dependency_map[i]のk番目のビットに対する1の値は、レイヤiがlayer_id(k+1)を有するレイヤに依存することを示す。
図31を参照すると、これは図26の修正図であり、レイヤ依存情報をシグナリングするためのシンタクスを提供している。新規のシンタクス要素layer_dependency_information_patternが定義されている。layer_dependency_information_patternは、vps_max_layers_minus1に等しい長さを有する0および1ビットのパターンをシグナリングする。i番目のビットに対する0の値は、layer_id(i+1)を有するレイヤが独立レイヤであることを示す。i番目のビットに対する1の値は、layer_id(i+1)を有するレイヤが一つ以上の他のレイヤに依存する依存レイヤであることを示す。NumDepLayersの値は、1の値を有するlayer_dependency_information_pattern中のビットの数の和に等しい。しかして、
である。layer_dependency_map[i]は、vps_max_layers_minus1に等しい長さを有する0ビットと1ビットとのパターンをシグナリングする。layer_dependency_map[i]のk番目のビットに対する0の値は、レイヤiがlayer_id(k+1)を有するレイヤに依存しないことを示す。layer_dependency_map[i]のk番目のビットに対する1の値は、レイヤiがlayer_id(k+1)を有するレイヤに依存することを示す。
図32を参照すると、これは図26の修正図であり、レイヤ依存情報をシグナリングするためのシンタクスを提供している。図28は、図27のシンタクスに基づく別形のシンタクスである。新規のシンタクス要素layer_dependency_information_patternが定義されている。
layer_dependency_information_patternは、vps_max_layers_minus1に等しい長さを有する0および1ビットのパターンをシグナリングする。i番目のビットに対する0の値は、layer_id(i+1)を有するレイヤが独立レイヤであることを示す。i番目のビットに対する1の値は、layer_id(i+1)を有するレイヤが一つ以上の他のレイヤに依存する依存レイヤであることを示す。
NumDepLayersの値は、1の値を有するlayer_dependency_information_pattern中のビットの数の和に等しい。しかして、
である。
シンタクス要素num_direct_ref_layers[i]およびref_layer_id[i][j]は、layer_dependency_information_pattern(i)が1の値を有するときにだけシグナリングされる。このlayer_dependency_information_pattern(i)は、シンタクス要素layer_dependency_patternのi番目のビットである。
図33を参照すると、これは図26の修正図であり、レイヤ依存情報をシグナリングするためのシンタクスを提供している。図29は、図31のシンタクスに基づく別形のシンタクスである。新規のシンタクス要素layer_dependency_information_patternが定義されている。
layer_dependency_information_patternは、vps_max_layers_minus1に等しい長さを有する0および1ビットのパターンをシグナリングする。i番目のビットに対する0の値は、layer_id(i+1)を有するレイヤが独立レイヤであることを示す。i番目のビットに対する1の値は、layer_id(i+1)を有するレイヤが一つ以上の他のレイヤに依存する依存レイヤであることを示す。
NumDepLayersの値は、1の値を有するlayer_dependency_information_pattern中のビットの数の和に等しい。しかして、
である。
layer_dependency_map[i]は、vps_max_layers_minus1に等しい長さを有する0および1ビットのパターンをシグナリングする。layer_dependency_map[i]のk番目のビットに対する0の値は、レイヤiがlayer_id(k+1)を有するレイヤに依存しないことを示す。layer_dependency_map[i]のk番目のビットに対する1の値は、レイヤiがlayer_id(k+1)を有するレイヤに依存することを示す。シンタクス要素layer_dependency_map[i]は、layer_dependency_information_pattern(i)が1の値を有するときにだけシグナリングされる。このlayer_depdndency_information_pattern(i)は、シンタクス要素layer_dependency_patternのi番目のビットである。
別の実施形態において、layer_dependency_information_patternシンタクス要素は、1ビットのフラグ値のセットとしてシグナリングすることができる。この場合、vps_max_layers_minus1の1ビット値の合計が:
としてシグナリングされることになる。
別の実施形態では、layer_dependency_map[i]シンタクス要素は、1ビットのフラグ値のセットとしてシグナリングすることが可能である。この場合、vps_max_layers_minus1の1ビット値の合計が:
としてシグナリングされることになる。
別の実施形態において、シンタクス要素layer_dependency_information_pattern、layer_dependency_mapの一つ以上は、u(v)の代わりに既知の固定数のビットを使用してシグナリングすることができる。例えば、u(64)を使用してこれらのシンタクス要素をシグナリングすることができよう。
別の実施形態では、シンタクス要素layer_dependency_information_pattern、layer_dependency_mapの一つ以上は、ue(v)または何らかの他の符号化スキームを使ってシグナリングすることが可能である。
別の実施形態において、前述したシンタクスおよびセマンティクスに対し、プラス1もしくはプラス2を加算することにより、またはマイナス1もしくはマイナス2を減算することにより、様々なシンタクス要素の名称およびそのセマンティクスを変更することができる。
さらに別の実施形態では、layer_dependency_information_pattern、layer_dependency_map、layer_dependency_flag[i]などの様々なシンタクス要素は、ビットストリームの任意の場所でピクチャ毎にシグナリングすることが可能である。例えばスライスヘッダ、pps/sps/vps/aps、もしくは他の任意のパラメータセット、またはビットストリームの他の規範的部分において、このシンタクス要素がシグナリングされてよい。
前述のように、スケーラブルビデオ符号化は、一つ以上のサブセットビットストリームも包含するビデオビットストリームを符号化する技法である。サブセットビデオビットストリームは、より大きなビデオからパケットを落としてサブセットビットストリームに必要なバンド幅を低減させることによって導出が可能である。サブセットビットストリームは、より低い空間分解能(より小さな画面)、より低い時間分解能(より低いフレームレート)、またはより低い品質のビデオ信号を表すことが可能である。例えば、ビデオビットストリームは5つのサブセットビットストリームを含むことができ、各サブセットビットストリームがベースビットストリームに追加のコンテンツを加える。ハンヌクセラ(Hannuksela)ら著、「高効率ビデオ符号化(HEVC)のスケーラブル拡張のテストモデル(Test Model for Scalable Extensions of High Efficiency Video Coding(HEVC))」、JCTVC‐L0453、上海、2012年10月は、参照により全体として本明細書に組み込まれる。チェン(Chen)ら著、「SHVCドラフトテキスト1(SHVC Draft Text1)」、JCTVC‐L1008、ジュネーブ、2013年3月は、参照により全体として本明細書に組み込まれる。
前述のように、マルチビュービデオ符号化は、別のビューを表す一つ以上の他のビットストリームも包含するビデオビットストリームを符号化する技法である。例えば、複数のビューが立体視ビデオのための一対のビューであってもよい。例えば、複数のビューが、同じシーンの異なる視点からの複数のビューを表すことが可能である。複数のビューは、画像が異なる視点からの同じシーンの画像なので、ビュー間の大量の統計的依存性を一般に包含する。したがって、時間予測およびビュー間予測の組み合わせにより、効率的なマルチビュー符号化を達成することができる。例えば、或るフレームが、時間的に関係するフレーム群からだけでなく、隣接する視点のフレーム群からも効率的に予測可能である。
ハンヌクセラ(Hannuksela)ら著、「スケーラブルおよびマルチビュー拡張の共通仕様テキスト(Common specification text for scalable and multiview extensions)」、JCTVC‐L0452、ジュネーブ、2013年1月は、参照により全体として本明細書に組み込まれる。テック(Tech)ら著、「MV‐HEVCドラフトテキスト3(MV‐HEVC Draft Text3)(ISO‐IEC 23008‐2:201X/PDAM2)」、JCT3V‐C1004_d3、ジュネーブ、2013年1月は、参照により全体として本明細書に組み込まれる。
それぞれが参照により全体として本明細書に組み込まれる、チェン(Chen)ら著、「SHVCドラフトテキスト1(SHVC Draft Text 1)」、JCTVC‐L1008、ジュネーブ、2013年1月、ハンヌクセラ(Hannuksela)ら著、「高効率ビデオ符号化(HEVC)のスケーラブル拡張のテストモデル(Test Model for Scalable Extensions of High Efficiency Video Coding(HEVC))」、JCTVC‐L0453‐spec‐text、上海、2012年10月、およびハンヌクセラ(Hannuksela)著、「高効率ビデオ符号化(HEVC)のマルチビュー拡張のドラフトテキスト(Draft Text for Multiview Extension of High Efficiency Video Coding(HEVC))」、JCTVC‐L0452‐spec‐text‐r1、上海、2012年10月は、各々、出力順序復号ピクチャバッファ(DPB)からのピクチャ0の出力および除去のために、sps_max_num_reorder_pics[HighestTid]、sps_max_latency_increase_plus1[HighestTid]、およびsps_max_dec_pic_buffering[HighestTid]シンタクス要素の使用に基づいて動作する該DPBを有する。この情報は、ベースレイヤに対するビデオパラメータセットの中でシグナリングされ、該情報は、エンハンスメントレイヤがあればそれを含むビデオコンテンツに対するバッファリング情報を提供する。
DPBからのピクチャの出力および除去のために、sps_max_num_reorder_pics[HighestTid]、sps_max_latency_increase_plus1[HighestTid]、およびsps_max_dec_pic_buffering[HighestTid]シンタクス要素の使用に基づいて、出力順序復号ピクチャバッファ(DPB)をシグナリングすることは、コンテンツが符号化された後にユーザの視聴嗜好に基づいて変えられがちな種々の数のエンハンスメントレイヤが使用されるとき、およびコンテンツが符号化された後にユーザの視聴嗜好に基づいて変えられがちなマルチビューエンハンスメントレイヤが使用されるときなど、スケーラブルビデオ符号化により生じ得るバッファの特徴を考慮していないと判定された。また、DPBからのピクチャの出力および除去のために、sps_max_num_reorder_pics[HighestTid]、sps_max_latency_increase_plus1[HighestTid]、およびsps_max_dec_pic_buffering[HighestTid]シンタクス要素の使用に基づいて、出力順序復号ピクチャバッファ(DPB)をシグナリングすることは、デコーダが或るオペレーションポイントで動作するとき、および/または選択された出力レイヤセットを出力するときに、DPBのメモリ使用に関して最適でない可能性があるとも判定された。このような視聴嗜好の違いに対処するために、出力順序復号ピクチャバッファ(DPB)は、エンハンスメントレイヤの一つ以上に対しシンタクス要素を提供するために、ビデオパラメータセット拡張部(VPS拡張部)と一緒に含まれているかかるシンタクス要素に、さらに、および/または代わりに基づくことが可能である。このようにして、ユーザの視聴嗜好に対応する傾向のある、特定のオペレーションポイントまたは出力レイヤセットに特に適するようにシンタクス要素を選択すればよい。
VPS拡張部において、一つ以上のオペレーションポイントのCVSのサブレイヤおよび/または出力レイヤセットに対するCVSのサブレイヤに対し、DPBバッファリング関係パラメータvps_max_dec_pic_buffering_minus1、vps_max_num_reorder_pics、vps_max_latency_increase_plus1をシグナリングすることができる。同様に、システムは、前述のDPBバッファリングパラメータがテスト対象オペレーションポイントに対しまたは選択された出力レイヤセットに対してシグナリングされる場合には、VPS拡張部からのシグナリングされた該DPBバッファリングパラメータを使用するように、出力順序DPBに対するオペレーションおよびバンピング処理を定義することができる。上記以外の場合は、現レイヤのlayer_idに応じて(現ピクチャのnuh_layer_idに対応するcurrLayerIdが0に等しいときには)アクティブなSPSから、またはアクティブなレイヤのSPSからの対応するSPSレベルのパラメータが使用される。
図34Aを参照すると、例示的な修正されたvps_extensionが示されている。修正されたvps拡張部は、新規のシンタクスすなわちnum_op_dpb_info_parametersおよびoperation_point_layer_set_idx[i]を含む。この修正されたvps拡張部は、別のビットストリームと、対象最高次TemporalIdと、対象レイヤ識別子リストとを入力として用いたサブビットストリーム抽出処理のオペレーションによって、該別のビットストリームから生成されたビットストリームであるオペレーションポイントに関して定義することができる。
num_output_layer_setsは、output_layer_set_index[i]およびoutput_layer_flag[lsIdx][j]により出力レイヤが指定されるレイヤセットの数を指定する。存在しないときは、num_output_layer_setsの値は0に等しいものと推定される。出力レイヤを記述するレイヤセットが、出力レイヤセットである。
output_layer_set_idx[i]は、output_layer_flag[lsIdx][j]が存在するレイヤセットのインデックスlsIdxを指定する。
1に等しいoutput_layer_flag[lsIdx][j]は、jに等しいnuh_layer_idを有するレイヤがlsIdx番目のレイヤセットの対象出力レイヤであることを指定する。0に等しいoutput_layer_flag[lsIdx][j]の値は、jに等しいnuh_layer_idを有するレイヤがlsIdx番目のレイヤセットの対象出力レイヤでないことを指定する。
num_op_dpb_info_parametersは、オペレーションポイントに関して定義される、VPS拡張部RBSP中に存在するop_dpb_parameters()シンタクス構造の数を指定する。num_op_dpb_info_parametersデコーダは、両端値を含めて0からvps_num_layer_sets_minus1までの範囲内である。
operation_point_layer_set_idx[i]は、VPS拡張部中のi番目のop_dpb_info_parameters()シンタクス構造が適用されるオペレーションポイントによって定義される、レイヤセットのリストの中へのインデックスを指定する。operation_point_layer_set_idx[i]の値は、両端値を含めて0からvps_num_layer_sets_minus1までの範囲内にあればよい。ビットストリーム適合性のために、iに等しくないどのjに対しても、operation_point_layer_set_idx[i]がoperation_point_layer_set_idx[j]に等しくなることはない。
図35Aを参照すると、op_dpb_info_parametersは、vps_max_sub_layers_minus1[j]、vps_sub_layer_ordering_info_present_flag[j]、vps_max_dec_pic_buffering_minus1[j][k]、vps_max_num_reorder_pics[j][k]、およびvps_max_latency_increase_plus1[j][k]を指定する。
vps_max_sub_layers_minus1[j]プラス1は、いくつのサブレイヤが含まれるかを示す。vps_max_sub_layers_minus1[j]プラス1は、jに等しいnuh_layer_idを有するレイヤに対し、CVS中に存在し得る時間サブレイヤの最大数を指定する。vps_max_sub_layers_minus1[j]の値は、両端値を含めて0から6までの範囲内である。
vps_sub_layer_ordering_info_present_flag[j]は、シンタクスが全てのレイヤを含む一つのセットに対するものであるか、個々のレイヤそれぞれに対するものであるかを示す。1に等しいvps_sub_layer_ordering_info_present_flag[j]は、vps_max_dec_pic_buffering_minus1[j][k]、vps_max_num_reorder_pics[j][k]、およびvps_max_latency_increase_plus1[j][k]が、jに等しいnuh_layer_idを有するレイヤのvps_max_sub_layers_minus1[j]+1のサブレイヤに対して存在することを指定する。0に等しいvps_sub_layer_ordering_info_present_flag[j]は、vps_max_dec_pic_buffering_minus1[j][vps_max_sub_layers_minus1[j]]、vps_max_num_reorder_pics[j][vps_max_sub_layers_minus1[j]]、およびvps_max_latency_increase_plus1[j][vps_max_sub_layers_minus1[j]]の値が、jに等しいnuh_layer_idを有するレイヤの全てのサブレイヤに適用されることを指定する。
vps_max_dec_pic_buffering_minus1[j][k]プラス1は、HighestTidがkに等しいときのjに等しいnuh_layer_idを有するレイヤに対し、CVSの復号ピクチャバッファの最大必要サイズをピクチャストレージバッファ単位で指定する。vps_max_dec_pic_buffering_minus1[j][k]の値は、(サブクローズA.4に規定されるように)両端値を含めて0からMaxDpbSize−1までの範囲内にあればよい。kが0より大きいとき、vps_max_dec_pic_buffering_minus1[j][k]は、vps_max_dec_pic_buffering_minus1[j][k−1]以上であればよい。vps_max_dec_pic_buffering_minus1[j][k]が、両端値を含めて0からvps_max_sub_layers_minus1[j]−1までの範囲内のkに対して存在しないときには、vps_sub_layer_ordering_info_present_flag[j]が0に等しいことにより、vps_max_dec_pic_buffering_minus1[j][vps_max_sub_layers_minus1[j]]に等しいものと推定される。
vps_max_num_reorder_pics[j][k]は、HighestTidがkに等しいときの、jに等しいnuh_layer_idを有するレイヤに対し、CVS中の任意のピクチャに復号順で先行し、そのピクチャに出力順で後続することができるピクチャの最大許容数を示す。vps_max_num_reorder_pics[j][k]の値は、両端値を含めて0からvps_max_dec_pic_buffering_minus1[j][k]までの範囲内にあればよい。kが0より大きいとき、vps_max_num_reorder_pics[j][k]はvps_max_num_reorder_pics[j][k−1]以上である。vps_max_num_reorder_pics[j][k]が、両端値を含めて0からvps_max_sub_layers_minus1[j]−1の範囲内のkに対して存在しないときには、vps_sub_layer_ordering_info_present_flag[j]が0に等しいことにより、vps_max_num_reorder_pics[j][vps_max_sub_layers_minus1[j]]に等しいものと推定される。
0に等しくないvps_max_latency_increase_plus1[j][k]は、VpsMaxLatencyPictures[j][k]の値を計算するために用いられ、この値は、HighestTidがkに等しいときの、jに等しいnuh_layer_idを有するレイヤに対し、CVS中の任意のピクチャに出力順で先行し、そのピクチャに復号順で後続することができるピクチャの最大数を指定する。
vps_max_latency_increase_plus1[j][k]が0に等しくないとき、VpsMaxLatencyPictures[j][k]の値は、以下のように指定することができる:
VpsMaxLatencyPictures[j][k]=vps_max_num_reorder_pics[j][k]+vps_max_latency_increase_plus1[j][k]−1
vps_max_latency_increase_plus1[j][k]が0に等しいときには、対応する制限は表現されない。
vps_max_latency_increase_plus1[j][k]の値は、両端値を含めて0から232−2までの範囲内にある。vps_max_latency_increase_plus1[j][k]が、両端値を含めて0からvps_max_sub_layers_minus1[j]−1までの範囲内のkに対して存在しないときには、vps_sub_layer_ordering_info_present_flag[j]が0に等しいことにより、vps_max_latency_increase_plus1[j][vps_max_sub_layers_minus1[j]]に等しいものと推定される。
「vps_max_sub_layers_minus1」[id][j]プラス1は、インデックスidに関連するオペレーションポイントのjに等しいnuh_layer_idを有するレイヤに対し、CVS中に存在し得る時間サブレイヤの最大数を指定する。vps_max_sub_layers_minus1[id][j]の値は、両端値を含めて0から6までの範囲内にあればよい。
1に等しい「vps_sub_layer_ordering_info_present_flag」[id][j]は、jに等しいnuh_layer_idを有するレイヤに対し、vps_max_dec_pic_buffering_minus1[id][j][k]、vps_max_num_reorder_pics[id][j][k]、およびvps_max_latency_increase_plus1[id][j][k]が、vps_max_sub_layers_minus1[id][j]+1のサブレイヤに対するインデックスidに関連付けられたオペレーションポイントのために存在することを指定する。0に等しいvps_sub_layer_ordering_info_present_flag[id][j]は、vps_max_dec_pic_buffering_minus1[id][j][vps_max_sub_layers_minus1[id][j]]、vps_max_num_reorder_pics[id][j][vps_max_sub_layers_minus1[id][j]]、およびvps_max_latency_increase_plus1[id][j][vps_max_sub_layers_minus1[id][j]]の値が、インデックスidに関連付けられたオペレーションポイントについて、jに等しいnuh_layer_idを有するレイヤの全てのサブレイヤに適用されることを指定する。
「vps_max_dec_pic_buffering_minus1」[id][j][k]プラス1は、HighestTidがkに等しいときのjに等しいnuh_layer_idを有するレイヤに対し、インデックスidに関連付けられたオペレーションポイントについて、CVSに対する復号ピクチャバッファの最大必要サイズを、ピクチャストレージバッファ単位で指定する。vps_max_dec_pic_buffering_minus1[id][j][k]の値は、(サブクローズA.4に規定されるように)両端値を含めて0からMaxDpbSize−1までの範囲内にあればよい。kが0より大きいとき、vps_max_dec_pic_buffering_minus1[id][j][k]は、vps_max_dec_pic_buffering_minus1[id][j][k−1]以上であり得る。vps_max_dec_pic_buffering_minus1[id][j][k]が、両端値を含めて0からvps_max_sub_layers_minus1[id][j]−1の範囲内のkに対して存在しないときには、vps_sub_layer_ordering_info_present_flag[id][j]が0に等しいことにより、vps_max_dec_pic_buffering_minus1[id][j][vps_max_sub_layers_minus1[id][j]]に等しいものと推定される。
「vps_max_num_reorder_pics」[id][j][k]は、HighestTidがkに等しいときのjに等しいnuh_layer_idを有するレイヤに対し、インデックスidに関連付けられたオペレーションポイントについて、CVS中の任意のピクチャに復号順で先行し出力順でそのピクチャに後続することができるピクチャの最大許容数を示す。vps_max_num_reorder_pics[id][j][k]の値は、両端値を含めて0からvps_max_dec_pic_buffering_minus1[id][j][k]までの範囲内にあればよい。kが0より大きいとき、vps_max_num_reorder_pics[id][j][k]は、vps_max_num_reorder_pics[id][j][k−1]以上であればよい。両端値を含めて0からvps_max_sub_layers_minus1[id][j]−1の範囲内のkに対して、vps_max_num_reorder_pics[id][j][k]が存在しないときには、vps_sub_layer_ordering_info_present_flag[id][j]が0に等しいことにより、vps_max_num_reorder_pics[id][j][vps_max_sub_layers_minus1[id][j]]に等しいものと推定される。
0に等しくない「vps_max_latency_increase_plus1」[id][j][k]は、HighestTidがkに等しいときのjに等しいnuh_layer_idを有するレイヤに対し、インデックスidに関連付けられたオペレーションポイントについて、CVS中の任意のピクチャに出力順で先行し復号順でそのピクチャに後続することができるピクチャの最大数を指定する、VpsMaxLatencyPictures[id][j][k]の値を計算するために用いられる。
vps_max_latency_increase_plus1[id][j][k]が0に等しくないとき、VpsMaxLatencyPictures[id][j][k]の値は以下のように指定される:
VpsMaxLatencyPictures[id][j][k]=vps_max_num_reorder_pics[id][j][k]+vps_max_latency_increase_plus1[id][j][k]−1
vps_max_latency_increase_plus1[id][j][k]が0に等しいときには、対応する制限は表現されない。
vps_max_latency_increase_plus1[id][j][k]の値は、両端値を含めて0から232−2までの範囲内にあればよい。vps_max_latency_increase_plus1[id][j][k]が、両端値を含めて0からvps_max_sub_layers_minus1[id][j]−1までの範囲内のkに対して存在しないときには、vps_sub_layer_ordering_info_present_flag[id][j]が0に等しいことにより、vps_max_latency_increase_plus1[id][j][vps_max_sub_layers_minus1[id][j]]に等しいものと推定される。
図35Bを参照すると、op_dpb_info_parametersは、図示のようにop_dpb_info_parameters(id,j)にさらに修正することができる。この場合、VPS拡張シンタクスは、図34Bに示した通りであってもよい。ビットストリームおよびデコーダの適合性をチェックするために、仮想リファレンスデコーダ(HRD)が使用される。二つの型のビットストリームまたはビットストリームサブセットが、ビデオ符号化に関する共同作業チーム(JCT‐VC)のHRD適合性チェックの対象となる。TypeIビットストリームと呼ばれる第一の型は、ビットストリームの全てのアクセスユニットのVCL NALユニットおよびFD_NUT(フィラデータNALユニット)に等しいnal_unit_typeを有するNALユニットだけを包含するNALユニットストリームである。TypeIIビットストリームと呼ばれる第二の型は、ビットストリームの全てのアクセスユニットのVCL NALユニットおよびフィラデータNALユニットに加えて、(a)フィラデータNALユニット以外の追加の非VCL NALユニットと、(b)NALユニットストリームからバイトストリームを形成する全てのleading_zero_8bits、zero_byte、start_code_prefix_one_3bytesおよびtrailing_zero_8bitsシンタクス要素と、のうちの少なくとも一つを含む。
HRDに必要な非VCL NALユニットのシンタクス要素(または一部のシンタクス要素についてはそのデフォルト値)は、クローズ7のセマンティックサブクローズ、付属書DおよびEに規定される。
二つの型のHRDパラメータセット(NAL HRDパラメータおよびVCL HRDパラメータ)が使用される。HRDパラメータセットは、hrd_parameters()シンタクス構造を介してシグナリングされ、このシンタクスはSPSシンタクス構造またはVPSシンタクス構造の一部であってよい。
ビットストリームの適合性をチェックするために複数のテストが必要となり得、このストリームは、テスト対象ビットストリームと呼ばれる。各テストに対し、以下のステップがリストされた順序で適用される:
(1)TargetOpとして表されるテスト対象オペレーションポイントが選択される。TargetOpのレイヤ識別子リストOpLayerIdListは、TargetOpに関連付けられたビットストリームのサブセットに存在する、nuh_layer_id値の増加順のnuh_layer_id値のリストから成り、これはテスト対象ビットストリームに存在するnuh_layer_id値のサブセットである。TargetOpのOpTidは、TargetOpに関連付けられたビットストリームサブセットに存在する最高次のTemporalIdに等しい。
(2)TargetDecLayerIdListがTargetOpのOpLayerIdListに等しく設定され、HighestTidがTargetOpのOpTidに等しく設定され、テスト対象ビットストリーム、HighestTidおよびTargetDecLayerIdListを入力として、クローズ10に規定されるサブビットストリーム抽出処理が呼び出され、その出力がBitstreamToDecodeに割り当てられる。
(3)TargetOpに適用可能なhrd_parameters()シンタクス構造およびsub_layer_hrd_parameters()シンタクス構造が選択される。TargetDecLayerIdListがテスト対象ビットストリームに存在する全てのnuh_layer_id値を包含する場合には、アクティブなSPS中の(またはこの規格に規定されない外部手段を介して供給される)hrd_parameters()シンタクス構造が選択される。上記以外の場合には、TargetOpに適用されるアクティブなVPS中の(またはこの規格に規定されない何らかの外部手段を介して供給される)hrd_parameters()シンタクス構造が選択される。選択されたhrd_parameters()シンタクス構造内において、BitstreamToDecodeがTypeIビットストリームである場合は、条件「if(vcl_hrd_parameters_present_flag)」の直後のsub_layer_hrd_parameters(HighestTid)シンタクス構造が選択され、変数NalHrdModeFlagが0に等しく設定される、それ以外の(BitstreamToDecodeがTypeIIビットストリームである)場合には、条件「if(vcl_hrd_parameters_present_flag)」(この場合には変数NalHrdModeFlagが0に等しく設定される)または条件「if(nal_hrd_parameters_present_flag)」(この場合には変数NalHrdModeFlagが1に等しく設定される)の直後のsub_layer_hrd_parameters(HighestTid)シンタクス構造が選択される。BitstreamToDecodeがTypeIIビットストリームであり、且つNalHrdModeFlagが0に等しいときには、フィラデータNALユニット以外の全ての非VCL NALユニット、ならびに(付属書Bに規定される)NALユニットストリームからバイトストリームを形成する全てのleading_zero_8bits、zero_byte、start_code_prefix_one_3bytes、およびtrailing_zero_8bitsシンタクス要素が、これらが存在する場合には、BitstreamToDecodeから廃棄され、残りのビットストリームがBitstreamToDecodeに割り当てられる。
別の場合において、ビットストリームの適合性をチェックするために複数のテストが必要となり得、このストリームは、テスト対象ビットストリームと呼ばれる。各テストに対し、以下のステップがリストされた順序で適用される:
(1)TargetOpLsとして表されるテスト対象出力レイヤセットが選択される。TargetOpLsにおいてoutput_layer_set_idx[]により参照されるオペレーションポイントが、テスト対象オペレーションポイントを識別する。TargetOpLsの出力レイヤ識別子リストOpLayerIdListは、TargetOpおよびTargetOpLsに関連付けられたビットストリームサブセットに存在するnuh_layer_id値の増加順のnuh_layer_id値のリストから成り、これはテスト対象ビットストリームに存在するnuh_layer_id値のサブセットである。TargetOpのOpTidは、TargetOpに関連付けられたビットストリームサブセット中に存在する最高次のTemporalIdに等しい。
(2)TargetDecLayerIdListが、選択された出力レイヤセットTargetOpLsに対する対象復号レイヤ識別子リストtargetDLayerIdListに等しく設定され、HighestTidが、TargetOpのOpTidに等しく設定され、テスト対象ビットストリーム、HighestTidおよびTargetDecLayerIdListを入力として、クローズ10に規定されるサブビットストリーム抽出処理が呼び出され、その出力がBitstreamToDecodeに割り当てられる。
(3)TargetOpに適用可能なhrd_parameters()シンタクス構造およびsub_layer_hrd_parameters()シンタクス構造が選択される。TargetDecLayerIdListが、テスト対象ビットストリームに存在する全てのnuh_layer_id値を包含する場合は、アクティブなSPS中の(またはこの規格に規定されない外部手段を介して供給される)hrd_parameters()シンタクス構造が選択される。上記以外の場合には、TargetOpに適用されるアクティブなVPS中の(またはこの規格に指定されない何らかの外部手段を介して供給される)hrd_parameters()シンタクス構造が選択される。選択されたhrd_parameters()シンタクス構造内において、BitstreamToDecodeがTypeIビットストリームである場合には、条件「if(vcl_hrd_parameters_present_flag)」の直後のsub_layer_hrd_parameters(HighestTid)シンタクス構造が選択され、変数NalHrdModeFlagは0に等しく設定される、それ以外の(BitstreamToDecodeがTypeIIビットストリームである)場合には、条件「if(vcl_hrd_parameters_present_flag)」(この場合には変数NalHrdModeFlagが0に等しく設定される)または条件「if(nal_hrd_parameters_present_flag)」(この場合には変数NalHrdModeFlagが1に等しく設定される)の直後のsub_layer_hrd_parameters(HighestTid)シンタクス構造が選択される。BitstreamToDecodeがTypeIIビットストリームであり、且つNalHrdModeFlagが0に等しいときには、フィラデータNALユニット以外の全ての非VCL NALユニット、ならびに(付属書Bに指定される)NALユニットストリームからバイトストリームを形成する全てのleading_zero_8bits、zero_byte、start_code_prefix_one_3bytes、およびtrailing_zero_8bitsシンタクス要素が、存在する場合にはBitstreamToDecodeから廃棄され、残りのビットストリームがBitstreamToDecodeに割り当てられる。
適合デコーダは、このサブクローズに規定された全ての要件を満たすことができる。
(1)特定のプロファイル、階層およびレベルへの適合性をクレームするデコーダは、VCL NALユニットにおいて参照される全てのVPS、SPSおよびPPS、ならびに適切なバッファリング期間SEIメッセージおよびピクチャタイミングSEIメッセージが、ビットストリームにおいて(非VCL NALユニットにより)またはこの規格に規定されない外部手段によりデコーダに適時の様式で搬送されるということを条件として、付属書Aに規定された様式でサブクローズC.4中に規定されたビットストリーム適合性要件に適合する全てのビットストリームを良好に復号することを可能にできる。
(2)或るビットストリームが、予備として指定される値を有するシンタクス要素を包含し、デコーダが予備値を有するシンタクス要素の値、または該シンタクス要素を含むNALユニットを無視してよいと指定され、当該ビットストリームがその他の点でこの規格に適合するときに、適合デコーダは、当該ビットストリームをあたかも適合ビットストリームを復号するのと同じ様に復号することができ、指定されるように予備値を有するシンタクス要素または該シンタクス要素を含むNALユニットを無視することができる。
デコーダの適合性には、出力タイミング適合性および出力順序適合性の二つの種類がある。
デコーダの適合性をチェックするために、サブクローズC.4に規定されクレームされるプロファイル、階層およびレベルに適合するテストビットストリームが、仮想ストリームスケジューラ(HSS:hypothetical stream scheduler)によって、HRDおよびテスト対象デコーダ(DUT:decoder under test)の両方に配信される。HRDにより出力される全てのクロップされた復号ピクチャがDUTによっても出力することができ、DUTにより出力される各クロップされた復号ピクチャは、1に等しいPicOutputFlagを有するピクチャとすることが可能で、かかるDUTにより出力されるクロップされた復号ピクチャの各々に対して、出力される全てのサンプルの値は、規定された復号処理により生成されるサンプルの値に等しくすることができる。
出力タイミングデコーダ適合性のために、HSSは、指定されたプロファイル、階層およびレベルに対して付属書Aの規定によってビットレートおよびCPBサイズが制限されるSchedSelIdxの値のサブセットからだけ選択される配信スケジュールを用いて、または以下に指定される、付属書Aの規定によってビットレートおよびCPBサイズが制限される「補間された」配信スケジュールを用いて、前述のように作動する。HRDおよびDUTの両方に同じ配信スケジュールが使用される。
HRDパラメータおよびバッファリング期間SEIメッセージが存在し、cpb_cnt_minus1[HighestTid]が0より大きいとき、デコーダは、以下のようにピークビットレートr、CPBサイズc(r)、および初期CPB除去遅延
を有するとして指定された「補間された」配信スケジュールを用いて作動しているHSSから配信されるビットストリームを復号することを可能にできる。
どのSchedSelIdx>0およびrに対しても、BitRate[SchedSelIdx−1]≦r≦BitRate[SchedSelIdx]であり、rおよびc(r)が、指定のプロファイル、階層およびレベルに対して付属書Aに規定された最大ビットレートおよびバッファサイズに関する限界の範囲内にある。InitCpbRemovalDelay[SchedSelIdx]は、バッファリング期間ごとに異なり得るため、再計算する必要がある。
出力タイミングデコーダ適合性のために、前述のHRDが使用され、(第一ビットの配信時刻に対する)ピクチャ出力のタイミングは、HRDおよびDUTの両方に対し同じであり一定の遅延以下である。
出力順序デコーダ適合性のために、以下が適用される:
(1)HSSが、DUTからの「要求によって」ビットストリームBitstreamToDecodeをDUTに配信する、つまり、HSSは、DUTが処理の進行のためのさらなるビットを求めたときにだけ(復号順に)ビットを配信する。これは、このテストでは、DUTの符号化ピクチャバッファが、最大の復号ユニットのサイズと同じ小ささになり得ることを意味する。
(2)以下に説明するような修正されたHRDが使用され、HSSは、ビットレートおよびCPBサイズが付属書Aに規定されるように制限されるように、ビットストリームBitstreamToDecode中に指定されたスケジュールの一つによってビットストリームをHRDに配信する。HRDおよびDUTの両方に対し、出力されるピクチャの順序を同一にすることができる。
(3)HRD CPBのサイズは、サブクローズE.2.3に指定されるようにCpbSize[SchedSelIdx]により与えられ、SchedSelIdxおよびHRDパラメータは、サブクローズC.1に指定されるように選択される。DPBサイズは、(現復号ピクチャのnuh_layer_idが0に等しいときには)アクティブなSPSからの、または現復号ピクチャのnuh_layer_idの値のアクティブなレイヤSPSからのsps_max_dec_pic_buffering_minus1[HighestTid]+1により与えられる。一部の場合において、選択された出力レイヤセットに対しオペレーションポイントDPB情報パラメータop_dpb_info_parameters()が存在する場合、DPBサイズは、currLayerIdが0に等しいときにはvps_max_dec_pic_buffering_minus1[HighestTid]により与えられ、またはcurrLayerIdが0より大きいときにはテスト対象オペレーションポイントのcurrLayerIdのvps_max_dec_pic_buffering_minus1[CurrLayerId][HighestTid]に設定され、前式中のcurrLayerIdは現復号ピクチャのnuh_layer_idである。上記以外の場合には、テスト対象オペレーションポイントに対しオペレーションポイントDPB情報パラメータop_dpb_info_parameters()が存在しない場合、DPBサイズは、(現復号ピクチャのnuh_layer_idが0に等しいときには)アクティブなSPSからの、または現復号ピクチャのnuh_layer_idの値のアクティブなレイヤSPSからの、sps_max_dec_pic_buffering_minus1[HighestTid]+1により与えられる。
一部の場合において、選択された出力レイヤセットに対し出力レイヤセットDPB情報パラメータoop_dpb_info_parameters()が存在する場合、DPBのサイズは、currLayerIdが0に等しいときにはvps_max_dec_pic_buffering_minus1[HighestTid]により与えられ、または選択された出力レイヤセットに対するcurrLayerIdのvps_max_dec_pic_buffering_minus1[CurrLayerId][HighestTid]に設定され、前式中のcurrLayerIdは、現復号ピクチャのnuh_layer_idである。上記以外の場合には、選択された出力レイヤセットに対する出力レイヤセットDPB情報パラメータoop_dpb_info_parameters()が存在しない場合、DPBサイズは、(現復号ピクチャのnuh_layer_idが0に等しいときには)アクティブなSPSからの、または現復号ピクチャに対するnuh_layer_idの値のアクティブなレイヤSPSからの、sps_max_dec_pic_buffering_minus1[HighestTid]+1により与えられる。
HRDのCPBからの除去時刻は最終ビットの到着時刻であり、復号は瞬時に行われる。このHRDのDPBのオペレーションは、サブクローズC.5.2〜C.5.2.3に記載される通りである。
復号ピクチャバッファは、ピクチャストレージバッファを包含する。0に等しいnuh_layer_idのピクチャストレージバッファの数は、アクティブなSPSから導出される。ゼロでないnuh_layer_id値の各々に対するピクチャストレージバッファの数は、該ゼロでないnuh_layer_id値に対するアクティブなレイヤSPSから導出される。ピクチャストレージバッファの各々は、「参照のために使用される」としてマークされた、または将来の出力のために保持された復号ピクチャを包含する。サブクローズF.13.5.2.2に規定されるDPBからのピクチャの出力および除去のための処理が呼び出され、次いで、サブクローズF.13.5.2.3.に規定されるピクチャ復号、マーキング、追加バンピングおよび格納のための処理が呼び出される。「バンピング」処理はサブクローズF.13.5.2.4に規定され、サブクローズF.13.5.2.2およびF.13.5.2.3に規定されるように呼び出される。
現ピクチャの復号前(だが現ピクチャの第一のスライスのスライスヘッダを構文解析した後)のDPBからピクチャの出力および除去は、現ピクチャを含むアクセスユニットの第一の復号ユニットがCPBから除去されるときに瞬時に行われ、以下のように進む。
サブクローズ8.3.2に規定されるRPSの復号処理が呼び出される。
(1)現ピクチャが、1に等しいNoRaslOutputFlagを有していて、0に等しいnuh_layer_idを有する、ピクチャ0ではないIRAPピクチャである場合、以下の順序付きステップが適用される:
(A)テスト対象デコーダに対し変数NoOutputOfPriorPicsFlagが以下のように導出される:
(i)現ピクチャがCRAピクチャである場合、NoOutputOfPriorPicsFlagは、(no_output_of_prior_pics_flagの値に関わらず)1に等しく設定される。
(ii)上記以外の場合には、アクティブなSPSから導出されるpic_width_in_luma_samples、pic_height_in_luma_samples、またはsps_max_dec_pic_buffering_minus1[HighestTid]の値が、先行するピクチャに関してアクティブなSPSから導出されるpic_width_in_luma_samples、pic_height_in_luma_samples、またはsps_max_dec_pic_buffering_minus1[HighestTid]の値とそれぞれ異なる場合、NoOutputOfPriorPicsFlagは、no_output_of_prior_pics_flagの値に関わらず、テスト対象デコーダにより1に設定(されるべきではないが)される。これらの条件下においてはNoOutputOfPriorPicsFlagをno_output_of_prior_pics_flagに等しく設定することが望ましいが、テスト対象デコーダはこの場合にNoOutputOfPriorPicsFlagを1に設定することが許される。
(iii)それ以外の場合には、NoOutputOfPriorPicsFlagは、no_output_of_prior_pics_flagに等しく設定される。
(B)テスト対象デコーダに対し導出されたNoOutputOfPriorPicsFlagの値が、以下のようにHRDに適用される:
(i)NoOutputOfPriorPicsFlagが1に等しい場合、DPB中の全てのピクチャストレージバッファは、それらが包含するピクチャの出力をせずに空にされ、DPB充満度が0に等しく設定される。
(ii)上記以外の(NoOutputOfPriorPicsFlagが0に等しい)場合には、「出力のために不要」および「参照のために使用されず」としてマークされたピクチャを包含する全てのピクチャストレージバッファが(出力なしで)空にされ、DPB中の全ての空でないピクチャストレージバッファが、サブクローズF.13.5.2.4に規定される「バンピング」処理を繰り返し呼び出すことにより空にされ、DPB充満度は0に等しく設定される。
(iii)それ以外の(現ピクチャが1に等しいNoRaslOutputFlagを有し、0に等しいnuh_layer_idを有するIRAPピクチャではない)場合には、「出力のために不要」および「参照のために使用されず」としてマークされたピクチャを包含する全てのピクチャストレージバッファが(出力なしで)空にされる。各ピクチャストレージバッファが空にされるごとにDPB充満度が1だけ減らされる。変数currLayerIdは、現復号ピクチャのnuh_layer_idに等しく設定される。
変数MaxNumReorderPics[TargetOp][currLayerId][HighestTid]、MaxLatencyIncreasePlus1[TargetOp][currLayerId][HighestTid]、MaxLatencyPictures[TargetOp][currLayerId][HighestTid]、MaxDecPicBufferingMinus1[TargetOp][currLayerId][HighestTid]が、現テスト対象オペレーションポイントに基づいて以下のように導出される:
(1)テスト対象オペレーションポイントTargetOpに対しオペレーションポイントDPB情報パラメータop_dpb_info_parameters()が存在する場合、MaxNumReorderPics[TargetOp][currLayerId][HighestTid]は、currLayerIdが0に等しいときにはvps_max_num_reorder_pics[HighestTid]に設定され、またはcurrLayerIdが0より大きいときにはテスト対象オペレーションポイントのcurrLayerIdのvps_max_num_reorder_pics[TargetOp][CurrLayerId][HighestTid]に設定される。上記以外の場合には、テスト対象オペレーションポイントに対しオペレーションポイントDPB情報パラメータop_dpb_info_parameters()が存在しない場合、MaxNumReorderPics[TargetOp][currLayerId][HighestTid]は、(currLayerIdが0に等しいときには)アクティブなSPSからの、またはcurrLayerIdの値のアクティブなレイヤSPSからのsps_max_num_reorder_pics[HighestTid]に設定される。
(2)テスト対象オペレーションポイントTargetOpに対しオペレーションポイントDPB情報パラメータop_dpb_info_parameters()が存在する場合、MaxLatencyIncreasePlus1[TargetOp][currLayerId][HighestTid]は、currLayerIdが0に等しいときにはvps_max_latency_increase_plus1[HighestTid]に設定され、またはcurrLayerIdが0より大きいときにはテスト対象オペレーションポイントのcurrLayerIdのvps_max_latency_increase_plus1[TargetOp][CurrLayerId][HighestTid]に設定される。テスト対象オペレーションポイントに対しオペレーションポイントDPB情報パラメータop_dpb_info_parameters()が存在する場合、MaxLatencyPictures[TargetOp][currLayerId][HighestTid]は、currLayerIdが0に等しいときにはVpsMaxLatencyPictures[HighestTid]に設定され、またはcurrLayerIdが0より大きいときにはテスト対象オペレーションポイントのcurrLayerIdのVpsMaxLatencyPictures[TargetOp][CurrLayerId][HighestTid]に設定される。上記以外の場合には、テスト対象オペレーションポイントに対しオペレーションポイントDPB情報パラメータop_dpb_info_parameters()が存在しない場合、MaxLatencyIncreasePlus1[TargetOp][currLayerId][HighestTid]は、(currLayerIdが0に等しいときには)アクティブなSPSの、またはcurrLayerIdの値のアクティブなレイヤSPSのsps_max_latency_increase_plus1[HighestTid]に設定され、MaxLatencyPictures[TargetOp][currLayerId][HighestTid]は、(currLayerIdが0に等しいときには)アクティブなSPSから、またはcurrLayerIdの値のアクティブなレイヤSPSから導出されるSpsMaxLatencyPictures[HighestTid]に設定される。
(3)選択されたテスト対象オペレーションポイントTargetOpに対しオペレーションポイントDPB情報パラメータop_dpb_info_parameters()が存在する場合、MaxDecPicBufferingMinus1[TargetOp][currLayerId][HighestTid]は、currLayerIdが0に等しいときにはvps_max_dec_pic_buffering_minus1[HighestTid]に設定され、またはcurrLayerIdが0より大きいときにはテスト対象オペレーションポイントのcurrLayerIdのvps_max_dec_pic_buffering_minus1[TargetOp][CurrLayerId][HighestTid]に設定される。上記以外の場合には、テスト対象オペレーションポイントに対しオペレーションポイントDPB情報パラメータop_dpb_info_parameters()が存在しない場合、MaxDecPicBufferingMinus1[TargetOp][currLayerId][HighestTid]は、(currLayerIdが0に等しいときには)アクティブなSPSからの、またはcurrLayerIdの値のアクティブなレイヤSPSからのsps_max_dec_pic_buffering_minus1[HighestTid]に設定される。
以下の条件の一つ以上が真のときには、以下の条件のいずれもが真でなくなるまで、サブクローズF.13.5.2.4に規定される「バンピング」処理が繰り返し呼び出されて、さらなるピクチャストレージバッファが空にされるごとに、DPB充満度がさらに1だけ減らされる:
(1)「出力のために必要」としてマークされた、CurrLayerIdに等しいnuh_layer_idを有するDPB中のピクチャの数が、MaxNumReorderPics[TargetOp][CurrLayerId][HighestTid]より大きい。
(2)MaxLatencyIncreasePlus1[TargetOp][CurrLayerId][HighestTid]が0に等しくなく、「出力のために必要」としてマークされた、currLayerIdに等しいnuh_layer_idを有する少なくとも一つのピクチャがDPB中に在り、該ピクチャに対し、関連する変数PicLatencyCount[currLayerId]が、MaxLatencyPictures[TargetOp][CurrLayerId][HighestTid]以上である場合。
(3)CurrLayerIdに等しいnuh_layer_idを有する、DPB中のピクチャの数が、MaxDecPicBuffering[TargetOp][CurrLayerId][HighestTid]以上である。
このサブクローズに規定される処理は、現ピクチャを包含するアクセスユニットnの最後の復号ユニットがCPBから除去されるときに瞬時に行われる。
変数currLayerIdは、現復号ピクチャのnuh_layer_idに等しく設定される。
「出力のために必要」としてマークされ、currLayerIdに等しいnuh_layer_id値を有する、DPB中の各ピクチャに対し、関連する変数PicLatencyCount[currLayerId]は、PicLatencyCount[currLayerId]+1に等しく設定される。
現ピクチャは、ピクチャの最後の復号ユニットが復号された後に復号されたとみなされる。現復号ピクチャは、DPBの空のピクチャストレージバッファに格納され、以下が適用される:
(A)現復号ピクチャが1に等しいPicOutputFlagを有する場合には、「出力のために必要」としてマークされ、その関連する変数PicLatencyCount[currLayerId]は0に等しく設定される。
(B)上記以外の(現復号ピクチャが0に等しいPicOutputFlagを有する)場合には、「出力のために不要」としてマークされる。
現復号ピクチャは、「短期参照のために使用される」としてマークされる。
以下の条件の一つ以上が真のときには、以下の条件のいずれもが真でなくなるまで、サブクローズF.13.5.2.4に規定される「バンピング」処理が繰り返し呼び出される。
(A)「出力のために必要」としてマークされた、currLayerIdに等しいnuh_layer_idを有する、DPB中のピクチャの数が、MaxNumReorderPics[TargetOp][CurrLayerId][HighestTid]より大きい。
(B)MaxLatencyIncreasePlus1[TargetOp][CurrLayerId][HighestTid]が0に等しくなく、「出力のために必要」としてマークされた、currLayerIdに等しいnuh_layer_idを有する少なくとも一つのピクチャがDPB中に在り、該ピクチャに対し、関連する変数PicLatencyCount[currLayerId]が、MaxLatencyPictures[TargetOp][CurrLayerId][HighestTid]以上である。
他の場合には、変数MaxNumReorderPics[currLayerId][HighestTid]、MaxLatencyIncreasePlus1[currLayerId][HighestTid]、MaxLatencyPictures[currLayerId][HighestTid]、MaxDecPicBufferingMinus1[currLayerId][HighestTid]が、以下のように導出され得る:
(1)テスト対象オペレーションポイントに対しオペレーションポイントDPB情報パラメータop_dpb_info_parameters()が存在する場合、MaxNumReorderPics[currLayerId][HighestTid]は、currLayerIdが0に等しいときにはvps_max_num_reorder_pics[HighestTid]に設定され、またはcurrLayerIdが0より大きいときにはテスト対象オペレーションポイントのcurrLayerIdのvps_max_num_reorder_pics[CurrLayerId][HighestTid]に設定される。上記以外の場合には、テスト対象オペレーションポイントに対しオペレーションポイントDPB情報パラメータop_dpb_info_parameters()が存在しない場合、MaxNumReorderPics[currLayerId][HighestTid]は、(currLayerIdが0に等しいときには)アクティブなSPSからの、またはcurrLayerIdの値のアクティブなレイヤSPSからのsps_max_num_reorder_pics[HighestTid]に設定される。
(2)テスト対象オペレーションポイントに対しオペレーションポイントDPB情報パラメータop_dpb_info_parameters()が存在する場合、MaxLatencyIncreasePlus1[currLayerId][HighestTid]は、currLayerIdが0に等しいときにはvps_max_latency_increase_plus1[HighestTid]に設定され、またはcurrLayerIdが0より大きいときにはテスト対象オペレーションポイントのcurrLayerIdのvps_max_latency_increase_plus1[CurrLayerId][HighestTid]に設定される。テスト対象オペレーションポイントに対しオペレーションポイントDPB情報パラメータop_dpb_info_parameters()が存在する場合、MaxLatencyPictures[currLayerId][HighestTid]は、currLayerIdが0に等しいときにはVpsMaxLatencyPictures[HighestTid]に設定され、またはcurrLayerIdが0より大きいときにはテスト対象オペレーションポイントのcurrLayerIdのVpsMaxLatencyPictures[CurrLayerId][HighestTid]に設定される。上記以外の場合には、テスト対象オペレーションポイントに対しオペレーションポイントDPB情報パラメータop_dpb_info_parameters()が存在しない場合、MaxLatencyIncreasePlus1[currLayerId][HighestTid]は、(currLayerIdが0に等しいときには)アクティブなSPS、またはcurrLayerIdの値のアクティブなレイヤSPSのsps_max_latency_increase_plus1[HighestTid]に設定され、MaxLatencyPictures[currLayerId][HighestTid]は、(currLayerIdが0に等しいときには)アクティブなSPSから、またはcurrLayerIdの値のアクティブなレイヤSPSから導出されるSpsMaxLatencyPictures[HighestTid]に設定される。
(3)選択されたテスト対象オペレーションポイントに対しオペレーションポイントDPB情報パラメータop_dpb_info_parameters()が存在する場合、MaxDecPicBufferingMinus1[currLayerId][HighestTid]は、currLayerIdが0に等しいときにはvps_max_dec_pic_buffering_minus1[HighestTid]に設定され、またはcurrLayerIdが0より大きいときにはテスト対象オペレーションポイントのcurrLayerIdのvps_max_dec_pic_buffering_minus1[CurrLayerId][HighestTid]に設定される。上記以外の場合には、テスト対象オペレーションポイントに対しオペレーションポイントDPB情報パラメータop_dpb_info_parameters()が存在しない場合、MaxDecPicBufferingMinus1[currLayerId][HighestTid]は、(currLayerIdが0に等しいときには)アクティブなSPSからの、またはcurrLayerIdの値のアクティブなレイヤSPSからのsps_max_dec_pic_buffering_minus1[HighestTid]に設定される。
以下の条件の一つ以上が真のときには、以下の条件のいずれもが真でなくなるまで、サブクローズF.13.5.2.4に規定される「バンピング」処理が繰り返し呼び出されて、さらなるピクチャストレージバッファが空にされるごとにDPB充満度がさらに1だけ減らされる:
(1)「出力のために必要」としてマークされた、CurrLayerIdに等しいnuh_layer_idを有するDPB中のピクチャの数が、MaxNumReorderPics[CurrLayerId][HighestTid]より大きい。
(2)MaxLatencyIncreasePlus1[CurrLayerId][HighestTid]が0に等しくなく、「出力のために必要」としてマークされた、currLayerIdに等しいnuh_layer_idを有する少なくとも一つのピクチャがDPB中に在り、該ピクチャに対し、関連する変数PicLatencyCount[currLayerId]がMaxLatencyPictures[CurrLayerId][HighestTid]以上である場合。
(3)CurrLayerIdに等しいnuh_layer_idを有するDPB中のピクチャの数が、MaxDecPicBuffering[CurrLayerId][HighestTid]以上である。
このサブクローズに規定される処理は、現ピクチャを包含するアクセスユニットnの最後の復号ユニットがCPBから除去されるときに瞬時に行われる。
変数currLayerIdは、現復号ピクチャのnuh_layer_idに等しく設定される。
「出力のために必要」としてマークされ、currLayerIdに等しいnuh_layer_id値を有するDPB中の各ピクチャに対し、関連する変数PicLatencyCount[currLayerId]は、PicLatencyCount[currLayerId]+1に等しく設定される。
現ピクチャは、ピクチャの最後の復号ユニットが復号された後に復号されたと見なされる。現復号ピクチャは、DPB中の空のピクチャストレージバッファに格納され、以下が適用される:
(A)現復号ピクチャが1に等しいPicOutputFlagを有する場合には、「出力のために必要」としてマークされ、その関連する変数PicLatencyCount[currLayerId]は0に等しく設定される。
(B)上記以外の(現復号ピクチャが0に等しいPicOutputFlagを有する)場合には、「出力のために不要」としてマークされる。
現復号ピクチャは、「短期参照のために使用される」としてマークされる。
以下の条件の一つ以上が真のときには、以下の条件のいずれもが真でなくなるまで、サブクローズF.13.5.2.4に規定される「バンピング」処理が繰り返し呼び出される。
(A)「出力のために必要」としてマークされた、CurrLayerIdに等しいnuh_layer_idを有するDPB中のピクチャの数が、MaxNumReorderPics[CurrLayerId][HighestTid]より大きい。
(B)MaxLatencyIncreasePlus1[CurrLayerId][HighestTid]が0に等しくなく、「出力のために必要」としてマークされた、currLayerIdに等しいnuh_layer_idを有する少なくとも一つのピクチャがDPB中に在り、該ピクチャに対し、関連する変数PicLatencyCount[currLayerId]がMaxLatencyPictures[CurrLayerId][HighestTid]以上である。
「バンピング」処理は、以下の順序付きステップからなる:
(A)最初に出力されるピクチャが、「出力のために必要」としてマークされたDPB中の全てのピクチャのうちで最小値のPicOrderCntValを有するピクチャとして選択される。
(B)これらのピクチャは、0に等しいnuh_layer_idを有するピクチャのアクティブなSPS中、またはピクチャのnuh_layer_id値に等しいnuh_layer_id値のアクティブなレイヤSPS中に指定された適合クロッピングウィンドウを使用してクロップされ、クロップされたピクチャはnuh_layer_idの昇順に出力され、これらピクチャは「出力のために不要」としてマークされる。
(C)「参照のために使用されず」としてマークされたピクチャを包含し、クロップされ、出力されたピクチャの一つを含んでいた各ピクチャストレージバッファが空にされる。
VPS拡張部は、必要に応じて追加の修正を有してもよい。
図36を参照すると、追加の修正は、オペレーションポイントの代わりに出力レイヤセットに対し、VPS拡張部において送信されるDPBパラメータを含むことができ、oops_dpb_info_parameters(j)が図37に示されている。
num_dpb_info_parametersは、VPS拡張部RBSP中に存在するoop_dpb_parameters()シンタクス構造の数を指定する。num_dpb_info_parametersデコーダは、両端値を含めて0からnum_output_layer_setsまでの範囲内にあればよい。
output_point_layer_set_idx[i]は、VPS拡張部中のi番目のoop_dpb_info_parameters()シンタクス構造が適用される対象出力レイヤセットのリストの中にインデックスを指定する。
output_point_layer_set_idx[i]の値は、両端値を含めて0からnum_output_layer_setsまでの範囲内でなければならない。iに等しくないいずれのjについても、output_point_layer_set_idx[i]がoutput_point_layer_set_idx[j]に等しくなってはならないことが、ビットストリーム適合性の要件である。
図38を参照すると、oop_dpb_info_paremters(c)は、さらに修正することができ、VPS拡張部のシンタクスは図39に示されるようにすることが可能である。
図40を参照すると、oop_dpb_info_paremters(c)はさらに修正が可能で、VPS拡張部のシンタクスは図41または図42に示されるようにすることができる。
VPS拡張部中のシンタクスの代替例は、
が次のように変更可能なことである。
vps_max_layer_idは、CVS中の全てのNALユニットのnuh_layer_idの最大許容値を指定する。vps_max_layers_minus1は、CVSに存在し得るレイヤの最大数を指定し、レイヤは、例えば空間スケーラブルレイヤ、品質スケーラブルレイヤ、テクスチャビューまたは深度ビューとすることができる。
VPS拡張部中のシンタクスの別の代替例は、
が次のように変更可能なことである。
前式中の、選択された出力レイヤセットインデックスoplsIdxに対するnumOutputLayersは、次のように導出される:
VPS拡張部中のシンタクスの別の代替例は、
が次のように変更可能なことである。
前式中の、選択されたoplsIdxに対するnumOutputLayersは、次のように導出される:
次いで、選択されたoplsIdxに対する対象復号レイヤ識別子リストtargetDLayerIdListおよびnumDecodedLayersが、次のように導出される:
一実施形態において、次のように、特定のレイヤに対しoop_dpb_information_parametersがシグナリングされるかどうかを示すために、追加のフラグをシグナリングすることができる:
1に等しいvps_layer_info_present_flag[j]は、特定の出力レイヤセットのj番目のレイヤに対しoop_dpb_info_parametersが存在することを指定する。0に等しいvps_layer_info_present_flag[j]は、特定の出力レイヤセットのj番目のレイヤに対しoop_dpb_info_parametersが存在しないことを指定する。
別の実施形態において、num_dpb_info_parametersデコーダは、両端値を含めて0から1024までの範囲内とすることができる。さらに別の実施形態では、1024の代わりに異なる固定数が使用されてもよい。
代わりの実施形態では、output_point_layer_set_idx[i]は、両端値を含めて0から1023までの範囲内にある。
図43を参照すると、DPBパラメータがVPS拡張部において出力レイヤセットおよびオペレーションポイントから独立して各レイヤに対し送信される場合には、別の修正されたVPS拡張部およびlayer_dpb_info(i)を使用することができる。
図44を参照すると、VPSからシグナリングされるシンタクス要素vps_max_sub_layer_minus1が全てのレイヤに使用され、oop_dpb_info_parameters(id)/op_dpb_info_parameters(id)において別々にシグナリングされない場合に、修正されたlayer_dpb_info(i)を使用することが可能である。
別の実施形態において、シンタクス要素の一つ以上は、ue(v)の代わりに、u(v)の代わりに既知の固定数のビットを使用してシグナリングすることが可能である。例えば、u(8)またはu(16)またはu(32)またはu(64)などを使用してこれらのシンタクス要素をシグナリングすることができよう。
別の実施形態において、これらのシンタクス要素の一つ以上は、u(v)符号化などの固定数のビットの代わりに、ue(v)または何らかの他の符号化スキームによりシグナリングすることもできよう。
別の実施形態において、前述したシンタクスおよびセマンティクスに対し、プラス1もしくはプラス2を加算することにより、またはマイナス1もしくはマイナス2を減算することにより、様々なシンタクス要素の名称およびそのセマンティクスを変更することができる。
さらに別の実施形態において、ビットストリームの任意の場所でピクチャ毎に、様々なシンタクス要素をシグナリングすることができる。例えば、これらシンタクス要素は、スライスセグメントヘッダ、pps/sps/vps/、もしくは他の任意のパラメータセット、またはビットストリームの他の規範的部分においてシグナリングすることが可能である。
さらに別の実施形態では、本発明に定義される出力レイヤセットに関係する全ての概念は、出力オペレーションポイント[2,3]に、および/またはオペレーションポイント[1]に適用されてもよい。
前述のように、シーケンスパラメータセット(「SPS」)は、ビデオシーケンス全体に対し有効なデータを伝えるために使用が可能である。したがって、SPSは、各スライスセグメントヘッダ中に見られるものなど、シンタクス要素によって参照されるPPS中に見られるシンタクス要素のコンテンツによって決まる、ゼロ個以上の符号化ビデオシーケンス群全体に適用されるシンタクス要素を包含するシンタクス構造である。また、前述のように、ピクチャパラメータセット(「PPS」)は、ピクチャ毎ベースで有効なデータを伝える。したがって、PPSは、各スライスセグメントヘッダ中に見られるものなど、シンタクス要素によって決まる、ゼロ個以上の符号化ピクチャ群全体に適用されるシンタクス要素を包含するシンタクス構造である。例として、ベースレイヤは1080pの符号化ビデオシーケンスとすることができ、一方、エンハンスメントレイヤ(群)は4Kの符号化ビデオシーケンスを供給する。
図45を参照すると、スケーラブル高効率コーディング(「SVHC:scalable high efficiency coding」)で符号化をするとき、ベースレイヤは一つ以上のSPSを含むことができ、また、一つ以上のPPSも含むことができる。同様に、各エンハンスメントレイヤは、一つ以上のSPSを含んでよく、一つ以上のPPSも含んでよい。図45において、SPS+は、特定のベースまたはエンハンスメントレイヤに対しシグナリングされる一つ以上のSPSを示し、PPS+は一つ以上のPPSを示す。このように、ベースレイヤおよび一つ以上のエンハンスメントレイヤの両方を有するビデオビットストリームに対する、SPSおよびPPSデータセットの総数はかかるデータを伝送するため必要なバンド幅とともに大きくなり、バンド幅は、多くの用途において制限を受ける傾向がある。かかるバンド幅の制約に伴い、伝送する必要のあるデータを制限し、データをビットストリーム中に効率的に配置することが望まれる。各レイヤは、任意の特定の時にアクティブ化される1つのSPSおよび/またはPPSを有することができ、必要に応じ、異なるアクティブなSPSおよび/またはPPSを選択すればよい。
入力ピクチャは、複数の符号化ツリーブロック(例えば、本明細書では一般にブロックと言う)を含むことができ、一つまたはいくつかのスライスに分割が可能である。一スライスが表現するピクチャの領域におけるサンプルの値は、エンコーダおよびデコーダにおいて使われる参照ピクチャが同じであり、デブロッキングフィルタリングに、スライス境界を越える情報が使われないということを条件として、他のスライスからのデータの使用なしに適切に復号することができる。したがって、スライスに対するエントロピー復号およびブロック再構築は他のスライスに依存しない。具体的に、エントロピー符号化状態は、各スライスの開始時にリセットすることが可能である。エントロピー復号および再構築の両方に対する近隣利用可能性を定義するときに、他のスライス中のデータは利用不可能としてマークすることができる。これらスライスは、並列にエントロピー復号および再構築を行うことが可能である。スライスの境界を越えてのイントラ予測および動きベクトル予測は、望ましくは許されない。これに対し、デブロッキングフィルタリングはスライス境界を越えた情報を用いることができる。
図46は、水平方向に11ブロックおよび垂直方向に9ブロック(2091〜2099とラベルされた9つの例示的なブロック)を含む例示的なビデオピクチャ2090を示す。図46は、「スライス#0」と名付けられた3つの例示的なスライス、第一スライス2080、「スライス#1」と名付けられた第二スライス2081 および「スライス#2」と名付けられた第三スライス2080を示す。デコーダは、3つのスライス2080、2081、2082を並列に復号し再構築することができる。これらスライスの各々は、順次的にスキャンライン順で伝送することが可能である。各スライスに対する復号/再構築処理の開始時に、コンテキストモデルが初期化またはリセットされ、他のスライス中のブロックは、エントロピー復号およびブロック再構築の両方に対して利用不可能としてマークされる。コンテキストモデルは、一般に、エントロピーエンコーダおよび/またはデコーダの状態を表す。しかして、「スライス#1」中のブロック、例えば2093とラベルされたブロックに対するコンテキストモデル選択または再構築のために、「スライス#0」中のブロック(例えば、2091および2092とラベルされたブロック)を使用することはできない。一方で、「スライス#1」中のブロック、例えば2095とラベルされたブロックに対するコンテキストモデル選択または再構築のために、「スライス#0」中のブロック(例えば、2093および2094とラベルされたブロック)を使用することは可能である。したがって、エントロピー復号およびブロック再構築は、スライス内で逐次的に進む。スライスがフレキシブルブロック順序付け(FMO:flexible block ordering)を用いて定義されている場合を除き、スライス内のブロックは、ラスタースキャンの順に処理される。
フレキシブルブロック順序付けは、ピクチャをどのようにスライスに分割するかを修正するようにスライスグループを定義する。スライスグループ中のブロックは、ブロック対スライスグループマップによって定義され、該マップは、スライスヘッダ中のピクチャパラメータセットのコンテンツおよび追加情報によってシグナリングされる。ブロック対スライスグループマップは、ピクチャ中の各ブロックに対するスライスグループ識別番号で構成される。スライスグループ識別番号は、関連するブロックがどのスライスグループに属するのかを指定する。各スライスグループは、一つ以上のスライスに分割することができ、スライスは、特定のスライスグループのブロックのセット内でラスタースキャンの順に処理される、同一スライスグループ内のブロックのシーケンスである。エントロピー復号およびブロック再構築は、スライスグループ内で逐次的に進む。
図47は、「スライスグループ#0」と名付けられた第一スライスグループ2083、「スライスグループ#1」と名付けられた第二スライスグループ2084、および「スライスグループ#2」と名付けられた第三スライスグループ2085の3つのスライスグループへの、例示的なブロック割り当てを表す。これらのスライスグループ2083、2084、2085は、ピクチャ2090中の2つの前景領域および一つの背景領域にそれぞれ関連付けることができる。
図47に示されるように、スライスの配列は、ラスタースキャンまたはラスタースキャン順としても知られる画像スキャン順に、ブロック群のペアの間で各スライスを定義することに限定することが可能である。スキャン順のスライスの配列は、計算には効率的であるが、高い効率の並列符号化および復号には適さない傾向がある。さらに、このスライスのスキャン順序の定義は、効率的に符号化するのによく適した共通の特性を有する可能性が高い、画像のより小さな局所化された領域をグループ化しない傾向がある。図47に示されるように、スライス2083、2084、2085の配列は、その配列において高度にフレキシブルではあるが、高い効率の並列符号化または復号には適さない傾向がある。さらに、この高度にフレキシブルなスライスの定義は、デコーダに実装するには計算処理が複雑である。
図48を参照すると、タイル技法によって、画像が矩形(正方形を含む)の領域のセットに分割されている。この各タイル内のこれらブロック(一部のシステムでは代わりに、最大符号化ユニットまたは符号化ツリーブロックとも言われる)は、ラスタースキャン順に符号化および復号される。タイルの配列は、同様にラスタースキャン順に符号化および復号される。したがって、任意の適した数の列境界(例えば0以上)があり得、任意の適した数の行境界(例えば0以上)があり得る。しかして、フレームは、図48に示される一スライスのような、一つ以上のスライスとして定義することができる。一部の実施形態において、異なるタイルに所在するブロックは、イントラ予測、動き補償、エントロピー符号化コンテキスト選択、または近隣のブロックの情報に頼る他の処理のために利用はできない。
図49を参照すると、画像を3つの矩形の列のセットの分割するタイル技法が示されている。各タイル内のブロック(一部のシステムでは代わりに、最大符号化ユニットまたは符号化ツリーブロックとも言われる)は、ラスタースキャン順に符号化および復号される。タイルも同様にラスタースキャン順に符号化および復号される。一つ以上のスライスが、タイルのスキャン順に定義されてよい。スライスの各々は別々に復号可能である。例えば、スライス1はブロック1〜9を含むとして定義されてよく、スライス2はブロック10〜28を含むとして定義されてよく、スライス3はブロック29〜126を含むとして定義されてよく、該スライスは3つのタイルにまたがる。タイルの使用は、データをフレームのさらに局所化された領域において処理することによって、符号化の効率を促進する。
図50を参照すると、ベースレイヤおよびエンハンスメントレイヤは各々、それぞれが集合してピクチャまたはその一部を形成するタイルを含むことができる。ベースレイヤおよび一つ以上のエンハンスメントレイヤからの符号化ピクチャが集合してアクセスユニットを形成する。アクセスユニットは、規定された分類ルールに従って相互に関連付けられ、復号順に連続し、且つ/または同一の出力時刻(ピクチャオーダーカウントまたは別途に)に関連付けられた全ての符号化ピクチャのVCL NALユニットおよびそれらに関連する非VCL NALユニットを包含するNALユニットのセットとして定義することができる。VCL NALは、ネットワーク抽象化レイヤのビデオ符号化レイヤである。同様に、符号化ピクチャは、或るアクセスユニット内のnuh_layer_idの特定の値を有し、ピクチャの全ての符号化ツリーユニットを包含するVCL NALユニットを含む、ピクチャの符号化表現として定義することができる。さらなる説明が、B.ブロス、W−J.ハン、J−R.オーム、G.J.サリバン、およびT.ウィーガント(B.Bros、W−J.Han、J−R.Ohm、G.J.Sullivan、およびT.Wiegand)著、「高効率ビデオ符号化(HEVC)規格書ドラフト10(High efficiency video coding(HEVC)text specification draft 10)」、JCTVCL1003、ジュネーブ、2013年1月、J.チェン、J.ボイス、Y.イェ、M.M.ハンヌクセラ(J.Chen、J.Boyce、Y.Ye、M.M.Hannuksela)著、「SHVCドラフトテキスト2(SHVC Draft Text 2)」、JCTVC−M1008、仁川、2013年5月、G.テック、K.ウェーグナー、Y.チェン、M.ハンヌクセラ、J.ボイス(G.Tech、K.Wegner、Y.Chen、M.Hannuksela、J.Boyce)著、「MV‐HEVCドラフトテキスト4(MV−HEVC Draft Text4)(ISO/IEC23008−2:201x/PDAM2)」、JCTVC−D1004、仁川、2013年5月、およびK.シューリング、R.スクーピン、G.テック、T.シーエリ、K.ラパカ、W.プー、X.リ、J.チェン、Y.−K.ワン、M.カーツェウィック、K.ウギル、M.M.ハンヌクセラ(K.Suhring、R.Skupin、G.Tech、T.Schierl、K.Rapaka、W.Pu、X.Li、J.Chen、Y.−K.Wang、M.Karczewicz、K.Ugur、M.M.Hannuksela)著、「SHVCおよびMV‐HEVCのためのタイル境界整列およびインターレイヤ予測制約事項(Tile Boundary Alignment and Inter−layer Prediction Constraint for SHVC and MV−HEVC)」、JCTVC−M0464、仁川、2013年4月に記載されており、これらの各々は、参照することにより全体として本明細書に組み込まれる。
高効率ビデオ符号化のスケーラブル拡張(SHVC:scalable extension of high efficiency video coding)は多重ループシステムを用い、該システムでは、現レイヤの復号処理が動き補償を実行して現レイヤの再構築サンプル値を判定するのに先立って、参照レイヤのサンプル値が動き補償を用いて判定される。結果として、対象レイヤ以外のレイヤに対して動き補償を実行する必要があり得る。
動き補償は計算集約的作業なので、これを何回も実行するのはスケーラブルデコーダに対し大きなメモリ容量の必要性を課す。このことは、参照レイヤと現レイヤとが同じ空間分解能を有するとき特に言える。この計算上の負荷を低減するために、いくつかのSVHCの改良が、(a)スライス毎ベースで、(b)時間識別子ベースで、および/または(c)ネットワーク抽象化レイヤユニット(NALU:network abstraction layer unit)型のベースで、参照レイヤサンプル値の使用を阻むSHVCに対し試みられてきた。しかしながら、必要となり得る処理の量に制限がないままなので、これらのアプローチのいずれも、システム、特にデコーダの計算上の複雑さの低減を確実にするには十分なものではない。したがって、SVHCのシンタクスに、動き補償ブロックが参照レイヤ内で実行される回数および/または頻度の上限を保証する改良を含めることが望まれる。この上限を達成するための好ましい制約事項は、望ましくは、(a)時間識別子、(b)スライスヘッダ/パラメータセット中に発生するフラグ、および/または(c)参照レイヤ内のNALU型、および/または(d)参照レイヤ内のピクチャの型、に基づいた参照レイヤピクチャの配置と頻度とに対するものである。これらの望ましい技法によって、動き補償ブロックが参照レイヤ内で実行される回数および/または頻度の上限が得られる。
現レイヤピクチャの復号のために必要な、参照レイヤのピクチャのサブセット内で実行される動き補償(MC:motion compensation)の最大頻度に限度を設定することができ、この頻度の限度は、ピクチャごとの細分性で指定される。例えば、秒あたり「x(個)」のMCの頻度の限度は、参照レイヤサブセット内で、現レイヤピクチャの復号のためそのサンプル値が必要とされる、秒あたり「x」以下の参照レイヤピクチャだけがMCを使用することを意味することになろう。動き補償の使用は、インター予測復号処理の使用に対応させることができる。
例として、参照レイヤのMCレートは、現レイヤピクチャの復号のためそのサンプル値が必要とされ、インター予測復号処理を使う、秒あたりの参照レイヤピクチャの数であってよい。上記のような仕方で、実際に動き補償を使用するピクチャを識別する。
例として、該参照レイヤMCレートは、現レイヤピクチャの復号のためそのサンプル値が必要とされ、インター予測復号処理の使用を許容された、秒あたりの参照レイヤピクチャの数としてもよい。上記のような仕方で、実際に動き補償を使用できるピクチャを識別する。例として、PスライスおよびBスライスの両方がインター予測の使用を容認されていても、全てのブロックがイントラ符号化されている場合、インター予測復号処理は使用されない。一部の場合において、制約事項を指定するために、或るピクチャがインター予測復号処理を使うサンプルの一つ以上のブロック(群)を実際に包含しているかどうか検討する代わりに、スライス型を検討するのがより効率的であろう。
例として、この頻度の限度は、サンプルごとの細分性で指定することができる。例えば、秒あたり「x(個)」のMCの頻度の限度は、参照レイヤサブセット内で、現レイヤピクチャの復号のためそのサンプル値が必要とされる秒あたり「x」以下の参照レイヤサンプルだけがMCを使用することを意味することになろう。
当然のことながら、MCレートについての以降の説明は、ピクチャレートに対応するが、サンプルレートまたは任意の他の指標にも同様に適用可能である。
図51を参照すると、例として、現(エンハンスメント)レイヤピクチャの復号のために、偶数のピクチャ順カウント(POC:picture order count)値を有する参照レイヤピクチャのサンプル値だけが必要である。
或る例示的な実施形態において、現レイヤピクチャの復号のために必要な参照レイヤピクチャのサブセット内で、動き補償(MC)が実行される最大頻度限度、例えばf_maxは、ビットストリーム適合要件である。このf_maxは、ビットストリーム内でシグナリングされた過去のデータ、例えばプロファイル値および/またはレベル値に基づいて推定することができる。別の実施形態において、f_maxは、ビットストリームの適切な箇所、例えば、シーケンスパラメータセット(SPS)内および/またはビデオパラメータセット(VPS)内で明示でシグナリングすることが可能である。
或る例示的な実施形態において、現レイヤピクチャの復号のために必要な参照レイヤのサブセット内で、動き補償(MC)が実行される最大頻度限度f_maxは、ビットストリーム適合要件であり、前の例の一部と同じである。さらに、f_maxは、所定の値、例えば「t」以下の時間識別子を有する参照レイヤピクチャが、秒あたりに符号化される最大数の限度を指定する。或る例において、この指定された限度はf_maxに等しい。これにより、レイヤ内のサブレイヤのセットを識別する時間識別子も同様にレート制約事項に拘束される。なお、より高い時間識別子を有する時間サブレイヤは、ベースレイヤおよび/またはエンハンスメントレイヤのより低い時間相のサブレイヤを予測するためには使用できない。
例として、「t」は、ビデオパラメータセット(VPS)中のmax_tid_il_ref_pics_plus1[i]シンタクス要素に対応させることができる。インデックスiは、1のインクリメントで0からvps_max_layers_minus1まで変化する。
0に等しいmax_tid_il_ref_pics_plus1[i]は、CVS内で、layer_id_in_nuh[i]に等しいnuh_layer_idを有する非IRAPピクチャが、インターレイヤ予測のための参照として使用されないことを指定する。0より大きいmax_tid_il_ref_pics_plus1[i]は、CVS内で、layer_id_in_nuh[i]に等しいnuh_layer_idおよびmax_tid_il_ref_pics_plus1[i]−1より大きいTemporalIdを有するピクチャが、インターレイヤ予測のための参照として使用されないことを指定する。存在しないとき、max_tid_il_ref_pics_plus1[i]は指定されていない。
layer_id_in_nuh[i]は、i番目のレイヤのVCL NALユニット中のnuh_layer_idシンタクス要素の値を指定する。両端値を含めて0からvps_max_layers_minus1までの範囲内のiについて、layer_id_in_nuh[i]の値が存在しないとき、その値はiに等しいと推定される。
nuh_layer_idは、レイヤの識別子を指定する。
図52を参照すると、例として、現(エンハンスメント)レイヤピクチャの復号のために、t以下のTemporalldを有する参照レイヤピクチャのサンプル値だけが必要である。
或る例示的な実施形態において、現レイヤピクチャの復号のために必要な参照レイヤピクチャのサブセット内で、動き補償(MC)が実行される最大頻度限度f_maxは、ビットストリーム適合要件である。さらに、f_maxは、所定のNALU型、例えば「R」に属しインターレイヤ予測に利用可能なNALU型を有する参照レイヤピクチャの、秒あたりに符号化される最大数の限度を指定する。或る例において、指定された限度はf_maxに等しい。NALU型とは、符号化の複数の異なる型の一つを言う。
図53を参照すると、例として、所定のサブセット「R」に属するNALU型を有する参照レイヤピクチャのサンプル値が、現(エンハンスメント)レイヤピクチャの復号に使用される。
さらなる例において、符号化効率の改善のために、所定のNALU型、例えば「R」のサブセットに属するNALU型を有する参照レイヤピクチャの、秒あたりに符号化される数に対し、最小頻度限度、例えばf_minが指定される。一部の場合において、頻度が低すぎる場合、符号化効率を維持するのがより困難になる。
例示的なプロファイルレベルの制約事項は、if R={TRAIL_R、TSA_R、RADL_R、RASL_R、BLA_W_LP、BLA_W_RADL、BLA_N_LP、IDR_W_RADL、IDR_N_LP、CRA_NUT}とすることができる。nal_unit_typeがTRAIL_R、TSA_R、RADL_R、RASL_R、BLA_W_LP、BLA_W_RADL、BLA_N_LP、IDR_W_RADL、IDR_N_LP、および/またはCRA_NUTに等しい場合にだけ、参照レイヤに対するインター予測復号処理が起動されるということを、ビットストリーム適合の要件とすればよい。
或る例示的な実施形態において、現レイヤピクチャの復号のために必要な参照レイヤピクチャのサブセット内で、動き補償(MC)が実行される最大頻度限度f_maxは、ビットストリーム適合要件である。さらに、f_maxは、インターレイヤサンプル値予測が用いられることを示すスライスヘッダフラグ(群)を有する現レイヤピクチャが、秒あたりに符号化される最大数の限度を指定する。或る例において、この指定される限度はf_maxに等しい。
或る例示の実施形態では、inter_layer_sample_pred_only_flagなど、インターレイヤサンプル値予測を示すスライスヘッダフラグが用いられる。
1に等しいinter_layer_sample_pred_only_flagは、現ピクチャの復号でインター予測が使用されないことを指定する。0に等しいinter_layer_sample_pred_only_flagは、現ピクチャの復号でインター予測が使用されてよいことを指定する。存在しない場合、inter_layer_sample_pred_only_flagは、0に等しいと推定される。
別の実施形態において、スライスヘッダ中に現在予約されているビット群は、ピクチャがインターレイヤサンプル値予測のために利用可能であるかどうか、およびより高次のレイヤピクチャの復号のため対応するサンプル値が必要かどうかを識別する情報を伝えるように定義することができる。f_maxは、かかる秒あたりに符号化される参照レイヤピクチャの最大数の限度を指定する。或る例において、指定される限度はf_maxに等しい。
一部の場合において、現在のシンタクス要素max_one_active_ref_layer_flagは1に設定することが必要となり得る。この制約事項の目的は、一つの参照レイヤが、各ピクチャのインターレイヤ予測のため最大に使用され、対応するSHVCデコーダのハードウェアへの要求度の低減を確実にすることである。
1に等しいmax_one_active_ref_layer_flagは、CVS中の各ピクチャに対するインターレイヤ予測のため、最大でも一つのピクチャが使われることを指定する。0に等しいmax_one_active_ref_layer_flagは、CVS中の各ピクチャに対するインターレイヤ予測のため、一つより多いピクチャが使われてよいことを指定する。
別の実施形態において、様々なシンタクス要素に対し以下の制約事項の一つ以上を課すことができる:
第一に、各対象レイヤに対し、該対象レイヤに属するすべてのピクチャのすべてのスライスセグメントヘッダにおいて、num_inter_layer_ref_pics_minus1を0に等しくすることができる。
第二に、nuh_layer_idを有する各対象レイヤに対し、NumDirectRefLayers[nuh_layer_id]は1以下である。
num_inter_layer_ref_pics_minus1プラス1は、インターレイヤ予測のため現ピクチャの復号において使用可能なピクチャの数を指定する。num_inter_layer_ref_pics_minus1シンタクス要素の長さは、Ceil(Log2(NumDirectRefLayers[nuh_layer_id]))ビット(数)である。num_inter_layer_ref_pics_minus1の値が、両端値を含めて0からNumDirectRefLayers[nuh_layer_id]−1までの範囲内にあること。Log2(x)は、xの底2の対数である。
レイヤに対するNumDirectRefLayersは、インデックスjを有するレイヤはインデックスiを有するレイヤに対する直接参照レイヤでないことを0に等しいときに指定するdirect_dependency_flag[i][j]、に基づいて導出することができる。1に等しいdirect_dependency_flag[i][j]は、インデックスjを有するレイヤがインデックスiを有するレイヤに対する直接参照レイヤであってよいことを指定する。0からvps_max_layers_minus1までの範囲内のiおよびjについて、direct_dependency_flag[i][j]が存在しないとき、それは0に等しいと推定される。
direct_dep_type_len_minus2プラス2は、direct_dependency_type[i][j]シンタクス要素のビットの数を指定する。本明細書の本バージョンに適合するビットストリームにおいて、direct_dep_type_len_minus2の値は0に等しいものとする。本明細書の本バージョンにおいてdirect_dep_type_len_minus2の値は0に等しいものとするが、但し、デコーダは、シンタクス中に出現する、両端値を含めて0から30までの範囲内のdirect_dep_type_len_minus2の他の値を許容するものとする。
direct_dependency_type[i][j]は、変数NumSamplePredRefLayers[i]、NumMotionPredRefLayers[i]、SamplePredEnabledFlag[i][j]、およびMotionPredEnabledFlag[i][j]を導出するために用いられる。direct_dependency_type[i][j]は、本明細書の本バージョンに適合するビットストリームにおいて、両端値を含めて0から2までの範囲内にあること。本明細書の本バージョンにおいて、direct_dependency_type[i][j]の値は、両端値を含めて0から2までの範囲内にあるものとするが、デコーダは、シンタクス中に出現する、両端値を含めて3から232−2までの範囲内のdirect_dependency_type[i][j]の値を許容するものとする。
変数NumSamplePredRefLayers[i]、NumMotionPredRefLayers[i]、SamplePredEnabledFlag[i][j]、MotionPredEnabledFlag[i][j]、NumDirectRefLayers[i]、DirectRefLayerIdx[i][j]、RefLayerId[i][j]、MotionPredRefLayerId[i][j]、およびSamplePredRefLayerId[i][j]は以下のように導出される:
direct_dependency_flag[i][j]、direct_dep_type_len_minus2、direct_dependency_type[i][j]は、図53Aおよび図53Bに示されたvps_extensionシンタクス中に含まれ、該シンタクスは、参照により、符号化ビデオシーケンスに対するシンタクスを提供するVPSシンタクス中に含まれる。
ビットストリーム中でシグナリングされる他のシンタクス要素は、inter_layer_pred_enabled_flag、num_inter_layer_ref_pics_minus1、および/またはinter_layer_pred_layer_idc[i]を含むことができる。これらのシンタクス要素は、スライスセグメントヘッダ中でシグナリングすればよい。この例が図53Cに示されている。
1に等しいinter_layer_pred_enabled_flagは、現ピクチャの復号においてインターレイヤ予測が使用可能であることを指定する。0に等しいinter_layer_pred_enabled_flagは、現ピクチャの復号においてインターレイヤ予測が使用されないことを指定する。存在しないとき、inter_layer_pred_enabled_flagの値は0に等しいと推定される。
num_inter_layer_ref_pics_minus1プラス1は、インターレイヤ予測のために現ピクチャの復号において使用可能なピクチャの数を指定する。num_inter_layer_ref_pics_minus1シンタクス要素の長さは、Ceil(Log2(NumDirectRefLayers[nuh_layer_id]))ビットである。num_inter_layer_ref_pics_minus1の値は、両端値を含め0からNumDirectRefLayers[nuh_layer_id]−1までの範囲内にあること。
変数NumActiveRefLayerPicsは以下のように導出される:
inter_layer_pred_layer_idc[i]は、インターレイヤ予測のために現ピクチャによって使用可能なi番目のピクチャのnuh_layer_idを表す、変数RefPicLayerId[i]を指定する。シンタクス要素inter_layer_pred_layer_idc[i]の長さは、Ceil(Log2(NumDirectRefLayers[nuh_layer_id]))ビットである。inter_layer_pred_layer_idc[i]の値は、両端値を含めて0からNumDirectRefLayers[nuh_layer_id]−1の範囲内にあればよい。存在しない場合、inter_layer_pred_layer_idc[i]の値は0に等しいと推定される。
iが0より大きいとき、inter_layer_pred_layer_idc[i]は、inter_layer_pred_layer_idc[i−1]より大きいものとする。
両端値を含めて0からNumActiveRefLayerPics−1までの範囲内のiの各値に対する変数RefPicLayerId[i]、NumActiveMotionPredRefLayers、および両端値を含めて0からNumActiveMotionPredRefLayers−1の範囲内のjの各値に対するActiveMotionPredRefLayerId[j]は以下のように導出される:
ピクチャの全てのスライスは、両端値を含めて0からNumActiveRefLayerPics−1までの範囲内のiの各値について、同じ値のinter_layer_pred_layer_idc[i]を有するものとする。
一部の場合において、シンタクス要素max_tid_il_ref_pics_plus1[i]の現セットは0に設定する必要がある。かかる制約事項は、layer_id_in_nuh[i]に等しいnuh_layer_idを有する非IRAPピクチャがインターレイヤ予測のために参照として使われていないことを確実にしよう。
別の実施形態において、max_tid_il_ref_pics_plus1[i]を0に設定する必要があるという制約事項は、例えば、プロファイル値および/またはレベル値など、ビットストリーム内でシグナリングされた過去のデータに基づいて推定することが可能である。この制約事項はビットストリーム適合要件であってよい。さすれば、レイヤの最低レベルのサブレイヤだけが用いられる。
また、一部の場合において、c_maxなどの限度は、現レイヤピクチャを復号するために必要なピクチャの参照レイヤサブセット内で、(インターレイヤサンプル値予測のため)動き補償を用いる可能性のある連続する参照レイヤピクチャの最大数に対しても設定されてよい。この制約事項は、生じる可能性のある「クランピング」の量を限定し、これがデコーダの複雑さの制限事項を緩和する。
別の実施形態において、c_maxの値は、プロファイル値および/またはレベル値など、ビットストリーム中でシグナリングされた過去のデータに基づいて推定することができる。別の例において、c_maxは、ビットストリームの適切な箇所、例えば、シーケンスパラメータセット(SPS)内および/またはビデオパラメータセット(VPS)内で明示でシグナリングすることが可能である。
通常の場合、レイヤは、全てのNALユニットに対する時間識別子の値を0に設定すればよい。例えばこの場合、当該レイヤに属するすべてのピクチャに対し、nuh_temporal_id_plus1を1に設定すればよい。この種の割り当ては、HEVCの共通試験条件に対して用いられる。この場合、TemporalIdベースの制約事項は指定されなくてもよく、または有効でなくてもよい。
この場合次の制約事項を課すことができる。すなわち、サブレイヤの非参照ピクチャはインターレイヤ予測に使われないことがビットストリーム適合の要件である。サブレイヤ非参照ピクチャは、復号順で後続する同じサブレイヤのピクチャの復号処理において、インター予測に使用できないサンプルを包含するピクチャとしてよい。
サブレイヤの非参照ピクチャのサンプルは、復号順で後続するより高次のサブレイヤのピクチャの復号処理では、インター予測に使用することが可能である。
サブレイヤ参照ピクチャは、復号順で後続する同じサブレイヤのピクチャの復号処理において、インター予測のため使用可能なサンプルを包含するピクチャであればよい。また、サブレイヤの参照ピクチャのサンプルは、復号順で後続するより高次のサブレイヤのピクチャの復号処理においてもインター予測に使用することが可能である。
代わりの実施形態において、以下のような追加の制約事項を課すことができる。すなわち、(1)インターレイヤ予測に利用可能な参照レイヤ中に、秒あたり最大でもs_maxまでのサブレイヤ参照ピクチャが在ってよいことがビットストリーム適合の要件であり、および/または(2)インターレイヤ予測に利用可能な参照レイヤ中に、秒あたり少なくともs_minのサブレイヤ非参照ピクチャが在らねばならないことがビットストリーム適合の要件である。
別の実施形態において、以下のように追加の制約事項を課すことができる。すなわち、(1)max_tid_il_ref_pics_plus1[i]に等しいTemporalIdとともにlayer_id_in_nuh[i]に等しいnuh_layer_idを有するレイヤ中に、秒あたり最大でもs_maxまでのサブレイヤ参照ピクチャが在ってよいことがビットストリーム適合の要件であり、(2)および/または、max_tid_il_ref_pics_plus1[i]に等しいTemporalIdとともにlayer_id_in_nuh[i]に等しいnuh_layer_idを有するレイヤ中に、秒あたり少なくともs_minのサブレイヤ非参照ピクチャが在らねばならないことがビットストリーム適合の要件である。
別の実施形態において、以下のように下記制約事項を課すことができる。すなわち、(1)全てのピクチャに対しnuh_temporal_id_plus1が1に設定され、サブレイヤ非参照ピクチャがインターレイヤ予測のため使用されず、そして、レイヤ中に秒あたり最大s_maxまでのサブレイヤ参照ピクチャが在ってよいことがビットストリーム適合の要件であり、および/または(2)全てのピクチャに対しnuh_temporal_id_plus1が1に設定され、サブレイヤ非参照ピクチャがインターレイヤ予測のため使用されず、そして、レイヤ中に秒あたり少なくともs_minのサブレイヤ非参照ピクチャが在らねばならないことがビットストリーム適合の要件である。
前述の制約事項(群)に対するモチベーションは、復号順で後続する同じサブレイヤのピクチャの復号処理において、サブレイヤ非参照ピクチャが望ましくはインター予測に使用されないことにある。しかして、対象レイヤを復号するときに、参照レイヤからのこれらのピクチャは、復号してこれらに動き補償を実施する必要なくして廃棄することができよう。
インターレイヤ予測のため、サブレイヤ非参照ピクチャ関連の指示をシグナリングするのに使用可能ないくつかの異なった技法がある。
図54を参照すると、一実施形態において、第一シンタクス変形型を用いて、サブレイヤ非参照ピクチャがインターレイヤ予測に使用されないことを示すため、各参照レイヤに向けてVPS中でフラグをシグナリングすることができる。或るレイヤに対し、no_sub_layer_non_ref_inter_layer_sample_pred_flag[i]が1としてシグナリングされた場合、そのレイヤからのサブレイヤ非参照ピクチャは、レイヤ間のインターレイヤ予測には使われない。
1に等しいno_sub_layer_non_ref_inter_layer_sample_pred_flag[i]は、CVS内で、layer_id_in_nuh[i]に等しいnuh_layer_idを有するサブレイヤ非参照ピクチャがインターレイヤ予測には使われないことを指定する。0に等しいno_sub_layer_non_ref_inter_layer_sample_pred_flag[i]は、CVS内で、layer_id_in_nuh[i]に等しいnuh_layer_idを有するサブレイヤ非参照ピクチャをインターレイヤ予測に使用しててよいことを指定する。存在しない場合、no_sub_layer_non_ref_inter_layer_sample_pred_flag[i]は0に等しいと推定される。
図54のシンタクスの別の変形型で、TemporalIdのサブレイヤ非参照ピクチャがインターレイヤ予測に使われるかどうかを示すため、TemporalId毎にフラグをシグナリングすることができる。これに対する第一変形型は、上限max_tid_il_ref_pics_plus1[i]までの、だが上限を含まない各TemporalIdの値の各レイヤに対しフラグをシグナリングすることである。別の場合において、該フラグは、max_tid_il_ref_pics_plus1[i]以下およびこれより大きいTemporalIdの値に対し、シグナリングすることができる。これに対する第二変形型は、最大のTemporalId値までのこの値を含む各TemporalId値に対する各々にフラグをシグナリングすることである。一部の場合において、最大のTemporalId値は6とすることができる。
図55を参照すると、別の実施形態において、第二シンタクス変形型を用い、サブレイヤ非参照ピクチャがインターレイヤ予測に使われないことを示すため、各参照レイヤに対し、VPS中でフラグをシグナリングすることが可能である。或る参照レイヤに対しno_sub_layer_non_ref_inter_layer_sample_pred_flag[i][j]が1としてシグナリングされた場合、そのレイヤからのサブレイヤ非参照ピクチャは、レイヤ間のインターレイヤ予測のためには使われない。このように、本システムは、復号される必要がないサブレイヤの復号を回避し、非参照ピクチャの復号を回避することが可能で、これにより、動き補償処理の実施を低減し、さらに復号ピクチャバッファのサイズも低減する。
図55について、1に等しいno_sub_layer_non_ref_inter_layer_sample_pred_tid_flag[i][j]は、CVS内で、layer_id_in_nuh[i]に等しいnuh_layer_idおよびjに等しいTemporalIdを有するサブレイヤ非参照ピクチャが、インターレイヤ予測のための参照としては使われないことを指定する。0に等しいno_sub_layer_non_ref_inter_layer_sample_pred_flag[i][j]は、CVS内で、layer_id_in_nuh[i]に等しいnuh_layer_idおよびjに等しいTemporalIdを有するサブレイヤ非参照ピクチャが、インターレイヤ予測のための参照として使われてよいことを指定する。存在しない場合、no_sub_layer_non_ref_inter_layer_sample_pred_flag[i][j]は0に等しいと推定される。
さらに、max_tid_il_ref_pics_plus1[i]が0のとき、layer_id_in_nuh[i]に等しいnuh_layer_idを有する非IRAPピクチャは、インターレイヤ予測のための参照に使うことはできない。この場合、no_sub_layer_non_ref_inter_layer_sample_pred_tid_flag[i][j]は、シグナリングすることができず、0であると推定されることになる。
図56を参照すると、さらに別の実施形態において、第三シンタクス変形型を用い、サブレイヤ非参照ピクチャがインターレイヤ予測に使われないことを示すため、VPS中で各参照レイヤに対しフラグをシグナリングすることができる。或るレイヤからのサブレイヤ非参照ピクチャがレイヤ間のインターレイヤ予測に使用されない、その対応レイヤに対して、no_sub_layer_non_ref_inter_layer_sample_pred_flag[i][j]が1としてシグナリングされる。なお、最大の時間IDは[「(j=0;j<7;i++)に対し」]7に設定することができる。このように、本システムは、復号する必要のないサブレイヤ、およびサブレイヤの非参照ピクチャの復号を回避することを可能にし、これにより、実行される動き補償処理を低減し、さらに復号ピクチャバッファのサイズも低減する。
図56について、1に等しいno_sub_layer_non_ref_inter_layer_sample_pred_tid_flag[i][j]は、CVS内で、layer_id_in_nuh[i]に等しいnuh_layer_idおよびjに等しいTemporalIdを有するサブレイヤ非参照ピクチャが、インターレイヤ予測のための参照としては使われないことを指定する。0に等しいno_sub_layer_non_ref_inter_layer_sample_pred_flag[i]は、CVS内で、layer_id_in_nuh[i]に等しいnuh_layer_idおよびjに等しいTemporalIdを有するサブレイヤ非参照ピクチャが、インターレイヤ予測のための参照として使われてよいことを指定する。存在しない場合、no_sub_layer_non_ref_inter_layer_sample_pred_flag[i][j]は0に等しいと推定される。
さらに、max_tid_il_ref_pics_plus1[i]が0のとき、layer_id_in_nuh[i]に等しいnuh_layer_idを有する非IRAPピクチャは、インターレイヤ予測のための参照に使われない。この場合、no_sub_layer_non_ref_inter_layer_sample_pred_tid_flag[i][j]はシグナリングされず、0であると推定される。
図57を参照すると、さらに別の実施形態において、第四シンタクス変形型を用い、レイヤおよびサブレイヤの使用に対する制限を示すため、VPS中で各レイヤに対しフラグをシグナリングすることができる。1に等しいno_sub_layer_non_ref_inter_layer_sample_pred_tid_flag[i]は、CVS内で、layer_id_in_nuh[i]に等しいnuh_layer_idおよびmax_tid_il_ref_pics_plus1[i]−1に等しいTemporalIdを有するサブレイヤ非参照ピクチャが、インターレイヤ予測のための参照としては使われないことを指定する。0に等しいno_sub_layer_non_ref_inter_layer_sample_pred_flag[i]は、CVS内で、layer_id_in_nuh[i]に等しいnuh_layer_idおよびmax_tid_il_ref_pics_plus1[i]−1に等しいTemporalIdを有するサブレイヤ非参照ピクチャが、インターレイヤ予測のための参照として使われてよいことを指定する。存在しない場合、no_sub_layer_non_ref_inter_layer_sample_pred_flag[i][j]は0に等しいと推定される。
max_tid_il_ref_pics_plus1[i]が0のとき、layer_id_in_nuh[i]に等しいnuh_layer_idを有する非IRAPピクチャは、インターレイヤ予測のための参照には使われない。この場合、no_sub_layer_non_ref_inter_layer_sample_pred_tid_flag[i][j]はシグナリングされず、0であると推定される。
図58を参照し、図58Aに示されている別の実施形態を参照すると、さらに別の実施形態において、第五シンタクス変形型を用い、レイヤおよびサブレイヤの使用に対する制限を示すため、VPS中で各レイヤに対しフラグをシグナリングすることができる。no_sub_layer_non_ref_inter_layer_sample_pred_tid_flag[i]が1に等しい場合、該フラグは、CVS内で、layer_id_in_nuh[i]に等しいnuh_layer_idおよびmax_tid_il_ref_pics_plus1[i]−1に等しいTemporalIdを有するサブレイヤ非参照ピクチャが、max_tid_il_ref_pics_plus1[i]が7より小さいかまたはさもなくばvps_max_sub_layers_minus1より小さい場合には、インターレイヤ予測のための参照としては使われないことを指定する。0に等しいno_sub_layer_non_ref_inter_layer_sample_pred_flag[i]は、CVS内で、layer_id_in_nuh[i]に等しいnuh_layer_idおよびmax_tid_il_ref_pics_plus1[i]−1に等しいTemporalIdを有するサブレイヤ非参照ピクチャが、max_tid_il_ref_pics_plus1[i]が7より小さいかまたはさもなくばvps_max_sub_layers_minus1より小さい場合には、インターレイヤ予測のための参照としては使われてよいことを指定する。存在しない場合、no_sub_layer_non_ref_inter_layer_sample_pred_flag[i][j]は0に等しいと推定される。
max_tid_il_ref_pics_plus1[i]が0のとき、layer_id_in_nuh[i]に等しいnuh_layer_idを有する非IRAPピクチャは、インターレイヤ参照予測のための参照としては使われない。この場合、no_sub_layer_non_ref_inter_layer_sample_pred_tid_flag[i]はシグナリングされず、0であると推定される。
図58、および図58Aに示されている別の実施形態を参照すると、さらに別の実施形態において、第五シンタクス変形型を用い、レイヤおよびサブレイヤの使用に対する制限を示すため、VPS中で各レイヤに対しフラグをシグナリングすることができる。no_sub_layer_non_ref_inter_layer_sample_pred_tid_flag[i]が1に等しい場合、該フラグは、CVS内で、layer_id_in_nuh[i]に等しいnuh_layer_idおよびmax_tid_il_ref_pics_plus1[i]−1に等しいTemporalIdを有するサブレイヤ非参照ピクチャが、max_tid_il_ref_pics_plus1[i]が7より小さいかまたはさもなくばvps_max_sub_layers_minus1より小さい場合には、インターレイヤ予測のための参照としては使われないことを指定する。0に等しいno_sub_layer_non_ref_inter_layer_sample_pred_flag[i]は、CVS内で、layer_id_in_nuh[i]に等しいnuh_layer_idおよびmax_tid_il_ref_pics_plus1[i]−1に等しいTemporalIdを有するサブレイヤ非参照ピクチャが、max_tid_il_ref_pics_plus1[i]が7より小さいかまたはさもなくばvps_max_sub_layers_minus1より小さい場合には、インターレイヤ予測のための参照としては使われてよいことを指定する。存在しない場合、no_sub_layer_non_ref_inter_layer_sample_pred_flag[i][j]は0に等しいと推定される。
max_tid_il_ref_pics_plus1[i]が0のとき、layer_id_in_nuh[i]に等しいnuh_layer_idを有する非IRAPピクチャは、インターレイヤ参照予測のための参照としては使われない。この場合、no_sub_layer_non_ref_inter_layer_sample_pred_tid_flag[i]はシグナリングされず、0であると推定される。
図58、および図58Aに示されている別の実施形態を参照すると、さらに別の実施形態において、第五シンタクス変形型を用い、レイヤおよびサブレイヤの使用に対する制限を示すため、VPS中で各レイヤに対しフラグをシグナリングすることができる。no_sub_layer_non_ref_inter_layer_sample_pred_tid_flag[i]が1に等しい場合、該フラグは、CVS内で、layer_id_in_nuh[i]に等しいnuh_layer_idおよびmax_tid_il_ref_pics_plus1[i]−1に等しいTemporalIdを有するサブレイヤ非参照ピクチャが、max_tid_il_ref_pics_plus1[i]が7より小さいかまたはさもなくばインデックスiを有するレイヤのアクティブなSPSからのsps_max_sub_layers_minus1に等しい場合には、インターレイヤ予測のための参照としては使われないことを指定する。0に等しいno_sub_layer_non_ref_inter_layer_sample_pred_flag[i]は、CVS内で、layer_id_in_nuh[i]に等しいnuh_layer_idおよびmax_tid_il_ref_pics_plus1[i]−1に等しいTemporalIdを有するサブレイヤ非参照ピクチャが、max_tid_il_ref_pics_plus1[i]が7より小さいかまたはさもなくばインデックスiを有するレイヤのアクティブなSPSからのsps_max_sub_layers_minus1に等しい場合でも、インターレイヤ予測のための参照としては使われてよいことを指定する。存在しない場合、no_sub_layer_non_ref_inter_layer_sample_pred_flag[i][j]は0に等しいと推定される。
max_tid_il_ref_pics_plus1[i]が0のとき、layer_id_in_nuh[i]に等しいnuh_layer_idを有する非IRAPピクチャは、インターレイヤ参照予測のための参照としては使われない。この場合、no_sub_layer_non_ref_inter_layer_sample_pred_tid_flag[i]はシグナリングされず、0であると推定される。
図58、および図58Aに示されている別の実施形態を参照すると、さらに別の実施形態において、第五シンタクス変形型を用い、レイヤおよびサブレイヤの使用に対する制限を示すため、VPS中で各レイヤに対しフラグをシグナリングすることができる。no_sub_layer_non_ref_inter_layer_sample_pred_tid_flag[i]が1に等しい場合、該フラグは、CVS内で、layer_id_in_nuh[i]に等しいnuh_layer_idおよびmax_tid_il_ref_pics_plus1[i]−1に等しいTemporalIdを有するサブレイヤ非参照ピクチャが、max_tid_il_ref_pics_plus1[i]が7より小さいかまたはさもなくばインデックスiを有するレイヤ中の時間サブレイヤの最大数に等しい場合には、インターレイヤ予測のための参照としては使われないことを指定する。0に等しいno_sub_layer_non_ref_inter_layer_sample_pred_flag[i]は、CVS内で、layer_id_in_nuh[i]に等しいnuh_layer_idおよびmax_tid_il_ref_pics_plus1[i]−1に等しいTemporalIdを有するサブレイヤ非参照ピクチャが、max_tid_il_ref_pics_plus1[i]が7より小さいかまたはさもなくばインデックスiを有するレイヤ中の時間サブレイヤの最大数に等しい場合、インターレイヤ予測のための参照としては使われてよいことを指定する。存在しない場合、no_sub_layer_non_ref_inter_layer_sample_pred_flag[i][j]は0に等しいと推定される。
max_tid_il_ref_pics_plus1[i]が0のとき、layer_id_in_nuh[i]に等しいnuh_layer_idを有する非IRAPピクチャは、インターレイヤ参照予測のための参照としては使われない。この場合、no_sub_layer_non_ref_inter_layer_sample_pred_tid_flag[i]はシグナリングされず、0であると推定される。
さらに別の実施形態において、第五シンタクス変形型を用い、レイヤおよびサブレイヤの使用に対する制限を示すため、VPS中で各レイヤに対しフラグをシグナリングすることができる。no_sub_layer_non_ref_inter_layer_sample_pred_tid_flag[i]が1に等しい場合、該フラグは、CVS内で、layer_id_in_nuh[i]に等しいnuh_layer_idおよびmax_tid_il_ref_pics_plus1[i]−1に等しいTemporalIdを有するサブレイヤ非参照ピクチャが、max_tid_il_ref_pics_plus1[i]が7より小さいかまたはさもなくばvps_max_sub_layers_minus1より小さい場合には、インターレイヤ予測のための参照としては使われないことを指定する。0に等しいno_sub_layer_non_ref_inter_layer_sample_pred_flag[i]は、CVS内で、layer_id_in_nuh[i]に等しいnuh_layer_idおよびmax_tid_il_ref_pics_plus1[i]−1に等しいTemporalIdを有するサブレイヤ非参照ピクチャが、max_tid_il_ref_pics_plus1[i]が7より小さいかまたはさもなくばvps_max_sub_layers_minus1より小さい場合には、インターレイヤ予測のための参照としては使われてよいことを指定する。存在しない場合、no_sub_layer_non_ref_inter_layer_sample_pred_flag[i][j]は0に等しいと推定される。
vps_max_sub_layers_minus1はVPS中で定義すればよい。vps_max_sub_layers_minus1プラス1は、ビットストリーム中に存在してよい時間サブレイヤの最大数を指定することができる。vps_max_sub_layers_minus1の値は両端値を含めて0から6までの範囲内にあればよい。
図59を参照すると、さらに別の実施形態において、第六シンタクス変形型を用いて、レイヤおよびサブレイヤの使用に対する制限を示すため、VPS中で各レイヤに対しシグナリングすることができる。no_sub_layer_non_ref_inter_layer_sample_pred_tid_flag[i][j]が1に等しい場合、該フラグは、CVS内で、layer_id_in_nuh[i]に等しいnuh_layer_idおよびjに等しいTemporalIdを有するサブレイヤ非参照ピクチャが、インターレイヤ予測のための参照としては使われないことを指定する。0に等しいno_sub_layer_non_ref_inter_layer_sample_pred_flag[i]は、CVS内で、layer_id_in_nuh[i]に等しいnuh_layer_idおよびjに等しいTemporalIdを有するサブレイヤ非参照ピクチャが、インターレイヤ予測のための参照としては使われてよいことを指定する。存在しない場合、no_sub_layer_non_ref_inter_layer_sample_pred_flag[i][j]は0に等しいと推定される。
max_tid_il_ref_pics_plus1[i]が0のとき、layer_id_in_nuh[i]に等しいnuh_layer_idを有する非IRAPピクチャは、インターレイヤ参照予測のための参照としては使われない。この場合、no_sub_layer_non_ref_inter_layer_sample_pred_tid_flag[i][j]はシグナリングされず0であると推定される。
必要な場合、インターレイヤ予測に必要のないサブレイヤ非参照ピクチャについての修正シンタクス構造およびマーキング処理を調整するために、スケーラブルビデオ符号化ビデオおよびマルチビュー符号化ビデオに対する復号処理を変更することができる。
図54、図57、図58、および図58Aに示された例示的なシグナリングに対する復号処理は、例えば次のように修正されてもよい。両端値を含めて0からNumActiveRefLayerPics−1までの範囲内のiの任意の値について、no_sub_layer_non_ref_inter_layer_sample_pred_flag[LayerIdxInVps[RefPicLayerId[i]]]が1に等しくないことをビットストリーム適合の要件としてもよい。
図54、図57、図58、および図58Aに示された例示的なシグナリングに対する復号処理は、例えば次のように修正されてもよい。両端値を含めて0からNumActiveRefLayerPics−1までの範囲内のiの任意の値について、no_sub_layer_non_ref_inter_layer_sample_pred_flag[LayerIdxInVps[RefPicLayerId[i]]]が、現アクセスユニット中の、RefPicLayerId[i]に等しいnuh_layer_id値を有するピクチャがサブレイヤ非参照ピクチャである場合は、1に等しくないことをビットストリーム適合の要件としてもよい。
図54、図57、図58、および図58Aに示された例示的なシグナリングに対する復号処理は、例えば次のように修正されてもよい。両端値を含めて0からNumActiveRefLayerPics−1までの範囲内のiの任意の値について、no_sub_layer_non_ref_inter_layer_sample_pred_flag[LayerIdxInVps[RefPicLayerId[i]]は現アクセスユニット中の、RefLayerId[nuh_layer_id][inter_layer_pred_layer_idc[i]]に等しいnuh_layer_id値を有するピクチャがサブレイヤ非参照ピクチャである場合には1に等しくないことをビットストリーム適合の要件としてもよい。
図54、図57、図58、および図58Aに示された例示的なシグナリングに対する復号処理は、例えば次のように修正されてもよい。両端値を含めて0からNumActiveRefLayerPics−1までの範囲内のiの各値について、no_sub_layer_non_ref_inter_layer_sample_pred_flag[LayerIdxInVps[RefPicLayerId[i]]は現アクセスユニット中の、RefPicLayerId[i]に等しいnuh_layer_id値を有するピクチャがサブレイヤ非参照ピクチャであり、現アクセスユニット中の、RefPicLayerId[i]に等しいnuh_layer_idを有するピクチャのTemporalIdがmax_tid_il_ref_pics_plus1[LayerIdxInVps[RefPicLayerId[i]]−1に等しい場合であって、max_tid_il_ref_pics_plus1[LayerIdxInVps[RefPicLayerId[i]]が7より小さいかまたはさもなくばピクチャRefPicLayerId[i]のレイヤのアクティブなSPSからのsps_max_sub_layers_minus1に等しい場合には1に等しくないことをビットストリーム適合の要件としてもよい。
図54、図57、図58、および図58Aに示された例示的なシグナリングに対する復号処理は、例えば次のように修正されてもよい。両端値を含めて0からNumActiveRefLayerPics−1までの範囲内のiの各値について、no_sub_layer_non_ref_inter_layer_sample_pred_flag[LayerIdxInVps[RefPicLayerId[i]]は現アクセスユニット中の、RefPicLayerId[i]に等しいnuh_layer_id値を有するピクチャがサブレイヤ非参照ピクチャであり、現アクセスユニット中の、RefPicLayerId[i]に等しいnuh_layer_idを有する該ピクチャのTemporalIdがmax_tid_il_ref_pics_plus1[LayerIdxInVps[RefPicLayerId[i]]−1に等しい場合であって、max_tid_il_ref_pics_plus1[LayerIdxInVps[RefPicLayerId[i]]が7より小さいかまたはさもなくばvps_max_sub_layers_minus1に等しい場合には1に等しくないことをビットストリーム適合の要件としてもよい。
図54、図57、図58、および図58Aに示された例示的なシグナリングに対する復号処理は、例えば次のように修正されてもよい。両端値を含めて0からNumActiveRefLayerPics−1までの範囲内のiの各値について、no_sub_layer_non_ref_inter_layer_sample_pred_flag[LayerIdxInVps[RefPicLayerId[i]]は現アクセスユニット中の、RefPicLayerId[i]に等しいnuh_layer_id値を有するピクチャがサブレイヤ非参照ピクチャであり、現アクセスユニット中の、RefPicLayerId[i]に等しいnuh_layer_idを有する該ピクチャのTemporalIdがmax_tid_il_ref_pics_plus1[LayerIdxInVps[RefPicLayerId[i]]−1に等しい場合であって、max_tid_il_ref_pics_plus1[LayerIdxInVps[RefPicLayerId[i]]が7より小さいかまたはさもなくばvps_max_sub_layers_minus1+1に等しい場合には1に等しくないことをビットストリーム適合の要件としてもよい。
図54、図57、図58、および図58Aに示された例示的なシグナリングに対する復号処理は、例えば次のように修正されてもよい。両端値を含めて0からNumActiveRefLayerPics−1までの範囲内のiの各値について、no_sub_layer_non_ref_inter_layer_sample_pred_flag[LayerIdxInVps[RefPicLayerId[i]]は現アクセスユニット中の、RefPicLayerId[i]に等しいnuh_layer_id値を有するピクチャがサブレイヤ非参照ピクチャであり、現アクセスユニット中の、RefPicLayerId[i]に等しいnuh_layer_idを有する該ピクチャのTemporalIdがmax_tid_il_ref_pics_plus1[LayerIdxInVps[RefPicLayerId[i]]−1に等しい場合であって、max_tid_il_ref_pics_plus1[LayerIdxInVps[RefPicLayerId[i]]が7より小さいかまたはさもなくばピクチャRefPicLayerId[i]のレイヤ中の時間サブレイヤの最大数に等しい場合は1に等しくないことをビットストリーム適合の要件としてもよい。
図54、図57、図58、および図58Aに示された例示的なシグナリングに対するマーキング処理は、例えば次のように修正されてもよい。この処理へのインプットは、nuh_layer_id値latestDecLayerIdとすればよい。この処理のアウトプットは、一部の復号ピクチャに対する「参照のため使用せず」として潜在的に更新されたマーキングとすることができる。なお、この処理は、インター予測またはインターレイヤ予測に必要のないピクチャを「参照のため使用せず」としてマークするものである。TemporalIdがHighestTidより小さい場合、現ピクチャはインター予測での参照のため使用が可能で、この処理は起動されない。変数numTargetDecLayers、およびlatestDecIdxは以下のように導出することができる。numTargetDecLayersが、TargetDecLayerIdList中のエントリの数に等しく設定される。latestDecIdxは、TargetDecLayerIdList[i]がlatestDecLayerIdに等しい場合のiの値に等しく設定される。両端値を含め0からlatestDecIdxまでの範囲内のiについて、「参照のため使用せず」としてピクチャをマーキングするために以下を適用することができる。currPicを、現アクセスユニット中の、TargetDecLayerIdList[i]に等しいnuh_layer_idを有するピクチャであるとする。currPicが「参照のため使用せず」とマークされ、サブレイヤ非参照ピクチャであるとき、以下を適用することができる:変数currTidがcurrPicのTemporalIdの値に等しく設定される。変数remainingInterLayerReferenceFlagが、以下に指定されるように導出される:
remainingInterLayerReferencesFlagが0に等しいとき、currPicは「参照のため使用せず」としてマークされる。
別の実施形態において、図54、図57、図58、および図58Aに示された例示的なシグナリングに対するマーキング処理は、例えば次のように修正されてもよい。
この処理へのインプットは、nuh_layer_id値latestDecLayerIdとすればよい。この処理のアウトプットは、一部の復号ピクチャに対する「参照のため使用せず」として潜在的に更新されたマーキングとすることができる。なお、この処理は、インター予測またはインターレイヤ予測に必要のないピクチャを「参照のため使用せず」としてマークするものである。TemporalIdがHighestTidより小さい場合、現ピクチャはインター予測での参照のため使用が可能で、この処理は起動されない。
変数numTargetDecLayers、およびlatestDecIdxは以下のように導出することができる。numTargetDecLayersが、TargetDecLayerIdList中のエントリの数に等しく設定される。latestDecIdxは、TargetDecLayerIdList[i]がlatestDecLayerIdに等しい、iの値に等しく設定される。
両端値を含め0からlatestDecIdxまでの範囲内のiについて、「参照のため使用せず」としてピクチャをマーキングするために以下を適用することができる。currPicを、現アクセスユニット中の、TargetDecLayerIdList[i]に等しいnuh_layer_idを有するピクチャであるとする。currPicが「参照のため使用せず」とマークされ、サブレイヤ非参照ピクチャであるとき、以下が適用される:
変数currTidがcurrPicのTemporalIdの値に等しく設定される。変数remainingInterLayerReferencesFlagが、以下に指定されるように導出される:
remainingInterLayerReferenceFlagが0に等しいとき、currPicは「参照のため使用せず」としてマークされる。
図55、図56、および図59に示された例示的なシグナリングに対する復号処理は、例えば次のように修正されてもよい。両端値を含めて0からNumActiveRefLayerPics−1までの範囲内のiの任意の値について、no_sub_layer_non_ref_inter_layer_sample_pred_flag[LayerIdxInVps[RefPicLayerId[i]]が1に等しくないことがビットストリーム適合の要件である。
図55、図56、および図59に示された例に対する復号処理は、例えば次のように修正されてもよい。両端値を含めて0からNumActiveRefLayerPics−1までの範囲内のiの任意の値について、no_sub_layer_non_ref_inter_layer_sample_pred_flag[LayerIdxInVps[RefPicLayerId[i]]][TemporalId]が、現アクセスユニット中の、RefPicLayerId[i]に等しいnuh_layer_id値を有するピクチャがサブレイヤ非参照ピクチャである場合は、1に等しくないことがビットストリーム適合の要件である。
図55、図56、および図59に示された例に対する復号処理は、例えば次のように修正されてもよい。両端値を含めて0からNumActiveRefLayerPics−1までの範囲内のiの任意の値について、no_sub_layer_non_ref_inter_layer_sample_pred_flag[LayerIdxInVps[RefPicLayerId[i]]][TemporalId]が、現アクセスユニット中の、RefLayerId[nuh_layer_id][inter_layer_pred_layer_idc[i]]に等しいnuh_layer_id値を有するピクチャがサブレイヤ非参照ピクチャである場合は、1に等しくないことがビットストリーム適合の要件である。
図55、図56、および図59に示された例に対する復号処理は、例えば次のように修正されてもよい。両端値を含めて0からNumActiveRefLayerPics−1までの範囲内のiの任意の値について、no_sub_layer_non_ref_inter_layer_sample_pred_flag[LayerIdxInVps[RefPicLayerId[i]]][TemporalIdx]は現アクセスユニット中の、RefPicLayerId[i]に等しいnuh_layer_id値を有するピクチャがサブレイヤ非参照ピクチャであり、現アクセスユニット中の、RefPicLayerId[i]に等しいnuh_layer_idを有する該ピクチャのTemporalId TemporalIdxがmax_tid_il_ref_pics_plus1[LayerIdxInVps[RefPicLayerId[i]]]−1に等しい場合であって、max_tid_il_ref_pics_plus1[LayerIdxInVps[RefPicLayerId[i]]]が7より小さいかまたはさもなくばピクチャRefPicLayerId[i]のレイヤのアクティブなSPSからのsps_max_sub_layers_minus1に等しい場合には1に等しくないことがビットストリーム適合の要件である。
図55、図56、および図59に示された例に対する復号処理は、例えば次のように修正されてもよい。両端値を含めて0からNumActiveRefLayerPics−1までの範囲内のiの任意の値について、no_sub_layer_non_ref_inter_layer_sample_pred_flag[LayerIdxInVps[RefPicLayerId[i]]][TemporalIdx]は現アクセスユニット中の、RefPicLayerId[i]に等しいnuh_layer_idを有するピクチャがサブレイヤ非参照ピクチャであり、現アクセスユニット中の、RefPicLayerId[i]に等しいnuh_layer_idを有する該ピクチャのTemporalId TemporalIdxがmax_tid_il_ref_pics_plus1[LayerIdxInVps[RefPicLayerId[i]]]−1に等しい場合であって、max_tid_il_ref_pics_plus1[LayerIdxInVps[RefPicLayerId[i]]]が7より小さいかまたはさもなくばvps_max_sub_layers_minus1に等しい場合には1に等しくないことがビットストリーム適合の要件である。
図55、図56、および図59に示された例に対する復号処理は、例えば次のように修正されてもよい。両端値を含めて0からNumActiveRefLayerPics−1までの範囲内のiの任意の値について、no_sub_layer_non_ref_inter_layer_sample_pred_flag[LayerIdxInVps[RefPicLayerId[i]]][TemporalIdx]は現アクセスユニット中の、RefPicLayerId[i]に等しいnuh_layer_idを有するピクチャがサブレイヤ非参照ピクチャであり、現アクセスユニット中の、RefPicLayerId[i]に等しいnuh_layer_idを有する該ピクチャのTemporalId TemporalIdxがmax_tid_il_ref_pics_plus1[LayerIdxInVps[RefPicLayerId[i]]]−1に等しい場合であって、max_tid_il_ref_pics_plus1[LayerIdxInVps[RefPicLayerId[i]]が7より小さいかまたはさもなくばvps_max_sub_layers_minus1+1に等しい場合には1に等しくないことがビットストリーム適合の要件である。
図55、図56、および図59に示された例に対する復号処理は、例えば次のように修正されてもよい。両端値を含めて0からNumActiveRefLayerPics−1までの範囲内のiの任意の値について、no_sub_layer_non_ref_inter_layer_sample_pred_flag[LayerIdxInVps[RefPicLayerId[i]]][TemporalIdx]は現アクセスユニット中の、RefPicLayerId[i]に等しいnuh_layer_idを有するピクチャがサブレイヤ非参照ピクチャであり、現アクセスユニット中の、RefPicLayerId[i]に等しいnuh_layer_idを有する該ピクチャのTemporalId TemporalIdxがmax_tid_il_ref_pics_plus1[LayerIdxInVps[RefPicLayerId[i]]]−1に等しい場合であって、max_tid_il_ref_pics_plus1[LayerIdxInVps[RefPicLayerId[i]]が7より小さいかまたはさもなくばピクチャRefPicLayerId[i]のレイヤ中の時間サブレイヤの最大数に等しい場合には1に等しくないことがビットストリーム適合の要件である。
図55、図56、および図59に示された例示的なシグナリングに対するマーキング処理は、例えば次のように修正されてもよい。
この処理へのインプットは、nuh_layer_id値latestDecLayerIdとすればよい。この処理のアウトプットは、一部の復号ピクチャに対する「参照のため使用せず」として潜在的に更新されたマーキングとすることができる。なお、この処理は、インター予測またはインターレイヤ予測に必要のないピクチャを「参照のため使用せず」としてマークするものである。TemporalIdがHighestTidより小さい場合、現ピクチャはインター予測での参照のため使用が可能で、この処理は起動されない。
変数numTargetDecLayers、およびlatestDecIdxは以下のように導出することができる。numTargetDecLayersが、TargetDecLayerIdList中のエントリの数に等しく設定される。latestDecIdxは、TargetDecLayerIdList[i]がlatestDecLayerIdに等しい、iの値に等しく設定される。
両端値を含め0からlatestDecIdxまでの範囲内のiについて、「参照のため使用せず」としてピクチャをマーキングするために以下を適用することができる。
currPicを、現アクセスユニット中の、TargetDecLayerIdList[i]に等しいnuh_layer_idを有するピクチャであるとする。currPicが「参照のため使用せず」とマークされ、サブレイヤ非参照ピクチャであるとき、以下が適用される:
変数currTidがcurrPicのTemporalIdの値に等しく設定される。変数remainingInterLayerReferencesFlagは、以下に指定されるように導出することができる:
remainingInterLayerReferenceFlagが0に等しいとき、currPicは「参照のため使用せず」としてマークされる。
別の実施形態において、図55、図56、および図59に示された例示的なシグナリングに対するマーキング処理は、例えば次のように修正されてもよい。
この処理へのインプットは、nuh_layer_id値latestDecLayerIdとすればよい。この処理のアウトプットは、一部の復号ピクチャに対する「参照のため使用せず」として潜在的に更新されたマーキングとすることができる。なお、この処理は、インター予測またはインターレイヤ予測に必要のないピクチャを「参照のため使用せず」としてマークするものである。TemporalIdがHighestTidより小さい場合、現ピクチャはインター予測での参照のため使用が可能で、この処理は起動されない。
変数numTargetDecLayers、およびlatestDecIdxは以下のように導出することができる。numTargetDecLayersが、TargetDecLayerIdList中へのエントリの数に等しく設定される。latestDecIdxは、TargetDecLayerIdList[i]がlatestDecLayerIdに等しい、iの値に等しく設定される。
両端値を含め0からlatestDecIdxまでの範囲内のiについて、「参照のため使用せず」としてピクチャをマーキングするために以下を適用することができる。
currPicを、現アクセスユニット中の、TargetDecLayerIdList[i]に等しいnuh_layer_idを有するピクチャであるとする。
currPicが「参照のため使用せず」とマークされ、サブレイヤ非参照ピクチャであるとき、以下が適用される:
変数currTidがcurrPicのTemporalIdの値に等しく設定される。変数remainingInterLayerReferencesFlagは、以下に指定されるように導出することができる:
remainingInterLayerReferenceFlagが0に等しいとき、currPicは「参照のため使用せず」としてマークされる。
ビットストリームに制約事項を課すために、前述の実施形態またはその部分の任意の組み合わせを用いることが可能である。
図60を参照すると、MaxRefLyrMCLumaSrは、300fpsのフレーム(ピクチャ)レートのソースを考慮して秒あたりのサンプル(数)で現オペレーションポイントでの最大参照レイヤMCレートを指定する。最大輝度参照レイヤMCサンプルレートは、様々なレベルに対する例示的な最大参照レイヤMCサンプルレートを表す。別の実施形態において、プロファイル内の相異なる層に対し、相異なる最大参照レイヤMCサンプルレートが指定されてもよい。別の実施形態において、適切な制約事項を指定するために、最大参照レイヤMCサンプリングレート値の異なったセットが使われてもよい。
図61を参照すると、現オペレーションポイントの最大参照レイヤMCレートに対応するf_maxの値が、秒あたりのピクチャで示されている。この表は、様々なレベルに対する例示的な最大参照レイヤMCピクチャレートを表す。別の実施形態において、プロファイル内の相異なる層に対し、相異なる最大参照レイヤMCピクチャレートが指定されてもよい。別の実施形態において、適切な制約事項を指定するために、最大参照レイヤMCピクチャレート値の異なったセットが使われてもよい。
図62を参照すると、MinCbSizeYが64に等しいときの、例示的なピクチャサイズに対するレベル5〜6.2における最大参照レイヤMCピクチャレートf_max(秒あたりのピクチャ)が示されている。
或る例において、以下はビットストリーム適合の要件である。変数fRを
1÷300
に等しく設定するものとする。レイヤIDnuh_layer_idを有する各参照レイヤに対し、両端値を含めてアクセスユニットnと、
n−(1÷fR)−1と
の間の継続的CPB除去時間の差は(nが、
(1÷fR)−1
以上であるとして)、(max_tid_il_ref_pics_plus1[nuh_layer_id]−1)以下のTemporalIdを有するサブレイヤ内のインター予測復号処理に対応するサブクローズのあらゆる呼び出しに対する(nCbSL)*(nCbSL)の総和についての制約を満たさなければならず、両端値を含めてnから
n−(1÷fR)−1
までの範囲内のアクセスユニットが、図60中に指定された値MaxRefLyrMCLumaSr以下でなければならない。nCbSLはインター予測輝度予測サンプルの符号化ユニットの高さおよび幅に対応する。或る例において、MaxRefLyrMCLumaSrは、MaxRefLyrInterPredLumaSrとして標識してもよい。或る例示的な実施形態において、上記の予測サンプル値の数のカウントの総和は、予測サンプル値を生成するためにアクセスされたサンプル値の合計数で置き換えられる。この代替の総和は、レベル仕様に基づいて同様に制限される。
当然のことながら、用語「利用可能(available)」とは、参照レイヤピクチャなど、実在が可能な項目を言い、用語「使用される(used)」とは、参照レイヤピクチャなど、使用される項目を言うが、但し、これら両用語は、一般に互換的にも用いられる。
図53Aおよび図53Bを参照すると、splitting_flagは、VPS内のVPS拡張部の内部で使用が可能である。
1に等しいsplitting_flagはNALユニットヘッダ中のnuh_layer_idシンタクス要素のビット群がdimension_id_len_minus1[i]の値に従って、ビット単位で或る長さを有するn(個)のセグメントに分割されること、およびこのnのセグメントがscalability_mask_flag[i]に示されるn(個)のスケーラビリティ次元に関連付けられていることを示すことができる。splitting_flagが1に等しいとき、i番目のレイヤのnuh_layer_idのj番目のセグメントの値はdimension_id[i][j]の値に等しければよい。0に等しいsplitting_flagは上記の制約事項を示すことはない。
splitting_flagが1に等しいとき、すなわち、以下に説明するdimension_id[i][j]シンタクス要素のセマンティクス中に記された制限に従えばよいとき、dimension_id[i][j]シンタクス要素のセマンティクス中に記された導出の代替として、ビットマスクされたコピーによって、NALユニットヘッダ中のnuh_layer_idシンタクス要素からスケーラブル識別子を導出することができる。i番目のスケーラブル次元に対するそれぞれのビットマスクは、dimension_id_len_minus1[j]のセマンティクス中に指定されるように、dimension_id_len_minus1[i]シンタクス要素の値およびdimBitOffset[i]によって定義される。
1に等しいscalability_mask[i]は、表F−1中のi番目のスケーラビリティ次元に対応するdimension_idシンタクス要素が存在することを示し得る。0に等しいscalability_mask[i]は、i番目のスケーラビリティ次元に対応するdimension_idシンタクス要素が存在しないことを示し得る。
一実施形態において、scalability_maskインデックス0は、スケーラビリティ次元「マルチビュー」を示すことができ、「ViewId」のScalabilityIdにマップすることができる。一実施形態において、scalability_maskインデックス1は、スケーラビリティ次元「空間/SNRスケーラビリティ」を示すことができ、「DependencyId」のScalabilityIdにマップすることができる。一実施形態において、両端値を含めて2から15までの範囲内のscalability_maskインデックスは、将来において定義される可能性のある予備のスケーラビリティを示すことが可能である。
dimension_id_len_minus1[j]プラス1は、dimension_id[i][j]シンタクス要素の長さをビット単位で指定することができる。変数dimBitOffset[0]は0に等しく設定され、両端値を含めて1から(NumScalabilityTypes−splitting_flag)までの範囲内のjについて、dim−BitOffset[j]が次のように導出される。
dimension_id_len_minus1[NumScalabilityTypes−1]が存在しないとき、以下を適用できる:
− dimension_id_len_minus1[NumScalabilityTypes−1]の値は、5−dimBitOffset[ NumScalabilityTypes−1]に等しいと推定される。
− dimBitOffset[NumScalabilityTypes]の値は6に等しく設定される。
vps_nuh_layer_id_present_flagは、layer_id_in_nuh[i]シンタクスが存在するかどうかを指定することができる。
layer_id_in_nuh[i]は、i番目のレイヤのVCL NALユニット中のnuh_layer_idシンタクス要素の値を指定することができる。両端値を含めて0からvps_max_layers_minus1までの範囲内のiについて、layer_id_in_nuh[i]の値は、存在しない場合、iに等しいと推定される。iが0より大きいとき、layer_id_in_nuh[i]は、layer_id_in_nuh[i−1]より大きいものとする。
両端値を含めて0からvps_max_layers_minus1までの範囲内のiについて、変数LayerIdxInVps[layer_id_in_nuh[i]]の値はiに等しく設定される。
dimension_id[i][j]は、i番目のレイヤのj番目の現スケーラビリティ次元型を指定することができる。dimension_id[i][j]の表現のため使用されるビットの数は、dimension_id_len_minus1[j]+1ビットである。両端値を含めて0からNumScalabilityTypes−1までの範囲内のjについて、dimension_id[i][j]が存在しないとき、dimension_id[i][j]は、((layer_id_in_nuh[i]&((1<<dim−BitOffset[j+1])−1))>>dimBitOffset[j]に等しいと推定される。
i番目のレイヤのsmIdx番目のスケーラビリティ次元型の識別子を指定する変数ScalabilityId[i][smIdx]、i番目のレイヤのビュー識別子を指定する変数ViewId[layer_id_in_nuh[i]]、i番目のレイヤがビュースケーラビリティ拡張レイヤかどうかを指定する変数ViewScalExtLayerFlag、およびi番目のレイヤの空間/SNRスケーラビリティ識別子を指定するDependencyId[layer_id_in_nuh[i]]は以下のように導出される:
一実施形態において、splitting_flagが1に等しいとき、dimension_id_len_minus1[i]シンタクス要素に対するビットストリーム制約事項に従うことが必要となり得る。
この制約事項はsplitting_flagが1に等しいとき、NALユニットヘッダ中のnuh_layer_idシンタクス要素中のビット群は、dimension_id_len_minus1[i]シンタクス要素の値に従ったビット長さを有するnのセグメントに分割され、これらnのセグメントは、scalability_mask_flag[i]中に示されたnのスケーラビリティ次元に関連付けられているので強制され必要となり得る。nuh_layer_idがNALユニットヘッダ中でu(6)として符号化されているので、以下に説明するビットストリーム制約事項は、splitting_flagが1に等しいときに、dimension_id_len_minus1[i]に対してシグナリングされた値が有意であることを確実にする。
一実施形態において、splitting_flagが1に等しいときに、全ての(dimension_id_len_minus1[j]+1)要素の値の和が6以下であることがビットストリーム適合の要件である。
別の実施形態では、splitting_flagが1に等しいときに、全ての(dimension_id_len_minus1[j]+1)要素の和が6以下であることがビットストリーム適合の要件である。
上記のビットストリーム制約事項のいくつかのさらなる変形型を以下に説明する。
splitting_flagが1に等しいときに、両端値を含めて0からNum−ScalabilityTypes−1までの範囲内のjについて、全ての(dimension_id_len_minus1[j]+1)要素の和が6以下であることがビットストリーム適合の要件である。
一実施形態において、splitting_flagが1に等しいときに、全てのdimension_id_len_minus1[j]シンタクス要素の和が(6−NumScalabilityTypes)以下であることがビットストリーム適合の要件である。
一実施形態において、splitting_flagが1に等しいときに、全ての(dimension_id_len_minus1[j]+1)要素の和が6以下であることがビットストリーム適合の要件であり、しかして以下が要求される:
一実施形態において、splitting_flagが1に等しいときに、全ての(dimension_id_len_minus1[j]+1)要素の和が6以下であることがビットストリーム適合の要件であり、しかして以下が要求される:
さらに別の実施形態において、splitting_flagが1に等しいときに、全ての(dimension_id_len_minus1[j]+1)要素の和がnuh_layer_idシンタクス要素をシグナリングするために使われたビットの数以下であることがビットストリーム適合の要件である。いくつかの実施形態において、このnuh_layer_idシンタクス要素は、NALユニットヘッダ中でシグナリングすることができる。
さらに別の実施形態において、splitting_flagが1に等しいときに、全ての(dimension_id_len_minus1[j]+1)要素の和が、ビットストリームの何らかの規範的または非規範的部分の中で伝送が可能ないずれかの他のシンタクス要素を符号化するのに使われたビットのサイズ以下であることがビットストリーム適合の要件である。
図63A〜Dを参照すると、各スライスは、スライスセグメントヘッダを含むことができる。場合によって、スライスセグメントヘッダはスライスヘッダと呼ばれることがある。スライスセグメントヘッダ内にはインターレイヤ予測のために使われるシンタクス要素が含まれている。このインターレイヤ予測は、当該スライスが依存可能な他のレイヤを定義する。言い換えれば、このインターレイヤ予測は、当該スライスがその参照レイヤとして使用可能な他のレイヤを定義する。これらの参照レイヤは、サンプル予測および/または動きフィールド予測のため使用することが可能である。図64を参照すると、例として、エンハンスメントレイヤ3は、エンハンスメントレイヤ2およびベースレイヤ0に依存することができる。この依存関係は、[2,0]などのリストの形で表すことが可能である。
或るレイヤに対するNumDirectRefLayersはdirect_dependency_flag[i][j]に基づいて導出することができ、後者は、0に等しいとき、インデックスjを有するレイヤがインデックスiを有するレイヤに対する直接参照レイヤでないことを指定する。1に等しいdirect_dependency_flag[i][j]は、インデックスjを有するレイヤがインデックスiを有するレイヤに対する直接参照レイヤであってよいことを指定する。0からvps_max_layers_minus1までの範囲内のiおよびjについて、direct_dependency_flag[i][j]が存在しないとき、それは0であると推定される。
direct_dep_type_len_minus2プラス2は、direct_dependency_type[i][j]シンタクス要素のビットの数を指定する。本明細書の本バージョンに適合するビットストリームにおいて、direct_dep_type_len_minus2の値は0に等しいものとする。本明細書の本バージョンにおいて、direct_dep_type_len_minus2の値は0に等しいものとするが、但し、デコーダは、シンタクス中に出現する、両端値を含めて0から30までの範囲内のdirect_dep_type_len_minus2の他の値を許容するものとする。
direct_dependency_type[i][j]は、変数NumSamplePredRefLayers[i]、NumMotionPredRefLayers[i]、SamplePredEnabledFlag[i][j]、およびMotionPredEnabledFlag[i][j]を導出するために用いられる。direct_dependency_type[i][j]は、本明細書の本バージョンに適合するビットストリーム中で、両端値を含めて0から2の範囲内にあるものとする。本明細書の本バージョンにおいてdirect_dependency_type[i][j]は、両端値を含めて0から2の範囲内にあるものとするが、但し、デコーダは、シンタクス中に出現する、両端値を含めて3から232−2までの範囲内のdirect_dependency_type[i][j]の値を許容するものとする。
変数NumSamplePredRefLayers[i]、NumMotionPredRefLayers[i]、SamplePredEnabledFlag[i][j]、MotionPredEnabledFlag[i][j]、NumDirectRefLayers[i]、DirectRefLayerIdx[i][j]、RefLayerId[i][j]、MotionPredRefLayerId[i][j]、およびSamplePredRefLayerId[i][j]は以下のように導出される:
direct_dependency_flag[i][j]、direct_dep_type_len_minus2、direct_dependency_type[i][j]は、図65Aおよび図65Bに示されるvps_extensionシンタクス中に含まれ、該シンタクスは、参照により、符号化ビデオシーケンスに対するシンタクスを提供するVPSシンタクス中に含まれる。
通常、ビットストリーム内でシグナリングされる必要のある参照レイヤの数を低減することが望ましく、かかる低減を達成するために、スライスセグメントヘッダ内の他のシンタクス要素を用いることが可能である。これらの他のシンタクス要素には、inter_layer_pred_enabled_flag、num_inter_layer_ref_pics_minus1、および/またはinter_layer_pred_layer_idc[i]が含まれてよい。これらのシンタクス要素は、スライスセグメントヘッダの中でシグナリングすることができる。
1に等しいinter_layer_pred_enabled_flagは、現ピクチャの復号においてインターレイヤ予測が使用可能なことを指定する。0に等しいinter_layer_pred_enabled_flagは、現ピクチャの復号においてインターレイヤ予測使用されないことを指定する。存在しない場合、inter_layer_pred_enabled_flagの値は0に等しいと推定される。
num_inter_layer_ref_pics_minus1プラス1は、現ピクチャの復号においてインターレイヤ予測のために使用可能なピクチャの数を指定する。num_inter_layer_ref_pics_minus1シンタクス要素の長さは、Ceil(Log2(NumDirectRefLayers[nuh_layer_id]))ビットである。num_inter_layer_ref_pics_minus1の値は、両端値を含めて0からNumDirectRefLayers[nuh_layer_id]−1の範囲内にあるものとする。
変数NumActiveRefLayerPicsは次のように導出される:
符号化ピクチャの全てのスライスは、同じ値のNumActiveRefLayerPicsを有するものとする。
inter_layer_pred_layer_idc[i]は、インターレイヤ予測のために、現ピクチャによって使用が可能なi番目のピクチャのnuh_layer_idを表す変数RefPicLayerId[i]を指定する。シンタクス要素inter_layer_pred_layer_idc[i]の長さは、Ceil(Log2(NumDirectRefLayers[nuh_layer_id]))ビットである。inter_layer_pred_layer_idc[i]の値は、両端値を含めて0からNumDirectRefLayers[nuh_layer_id]−1の範囲内にあればよい。存在しない場合、inter_layer_pred_layer_idc[i]の値は0であると推定される。
例として、本システムは、様々なシンタクス要素、特に、VPS中でdirect_dependency_flag[i][j]をシグナリングすることができ、これにより、レイヤ3に対し[2,0]のインターレイヤ参照ピクチャセットが得られる。そして、本システムは、例えばスライスセグメントヘッダ中の[2]のシンタクス要素などさらなるシンタクス要素の使用によってインターレイヤ参照ピクチャセットをさらに改良することができ、または[0]の追加シンタクス要素の使用によってインターレイヤ参照ピクチャセットをさらに改良することができ、または、空セットである[]のさらなるシンタクス要素の使用によって、インターレイヤ参照ピクチャセットをさらに改良することができる。但し、エンコーダの設計の如何によっては、[2,0]のインターレイヤ参照ピクチャセットが[2,0]としてシグナリングされることがある。
図66を参照すると、或る特定のレイヤ(シンタクス中のNumDirectRefLayers[num_layer_id])に対する直接参照レイヤの数と、同じ特定のレイヤ(シンタクス中のNumActiveRefLayerPics)に対するアクティブな参照レイヤの数との間の比較を含めるために、スライスセグメントヘッダを修正することができる。具体的に、この比較は、「if(NumActiveRefLayerPics!=NumDirectRefLayers[nuh_layer_id])」としてシグナリングすることが可能である。しかして、これらの両方が同じレイヤの数の示す場合、ビットストリーム中でinter_layer_pred_layer_idc[i]をシグナリングする必要はないが、代わりに、既にシグナリングされている他のシンタクス要素に基づいてかかる値を算定/推定することが可能である。
図67を参照すると、このスライスセグメントヘッダのシグナリングは、inter_layer_pred_layer_idc[i]の値を、これらをシグナリングしないで推定するために、図66と同様な方法で修正することができる。
NumActiveRefLayerPicsが、NumDirectRefLayers[nuh_layer_id]に等しい場合、inter_layer_pred_layer_idc[i]の値は以下のように推定することができる。
inter_layer_pred_layer_idc[i]が存在しないときであって、且つNumActiveRefLayerPicsがNumDirectRefLayers[nuh_layer_id]に等しくないときは、inter_layer_pred_layer_idc[i]の値は0に等しいと推定される。
iが0より大きいとき、inter_layer_pred_layer_idc[i]は、inter_layer_pred_layer_idc[i−1]より大きければよい。
両端値を含めて0からNumActiveRefLayerPics−1までの範囲内のiの各値に対する変数RefPicLayerId[i]、NumActiveMotionPredRefLayers、および両端値を含めて0からNumActiveMotionPredRefLayers−1までの範囲内のjの各値に対するActiveMotion−PredRefLayerId[j]は以下のように導出することができる:
ピクチャの全スライスが、両端値を含めて0からNumActiveRefLayerPics−1までの範囲内のiの各値について、同じ値のinter_layer_pred_layer_idc[i]を有してもよい。
max_tid_il_ref_pics_plus1[i]がVPS拡張部中でシグナリングされる。0に等しいmax_tid_il_ref_pics_plus1[i]は、CVS内で、layer_id_in_nuh[i]に等しいnuh_layer_idを有する非IRAPピクチャが、インターレイヤ予測のための参照として使用されないことを指定する。0より大きいmax_tid_il_ref_pics_plus1[i]は、CVS内で、layer_id_in_nuh[i]に等しいnuh_layer_idおよびmax_tid_il_ref_pics_plus1[i]−1より大きいTemporalIdを有するピクチャが、インターレイヤ予測のための参照として使用されないことを指定する。存在しない場合、max_tid_il_ref_pics_plus1[i]は指定されない。
両端値を含めて0からNumActiveRefLayerPics−1までの範囲内のiの各値について、以下の2つの条件のいずれかが真であり得ることをビットストリーム適合の要件とすることができる:
max_tid_il_ref_pics_plus1[LayerIdxInVps[RefPicLayerId[i]]]の値がTemporalIdより大きい。
max_tid_il_ref_pics_plus1[LayerIdxInVps[RefPicLayerId[i]]]およびTemporalIdの値は両方とも0に等しく、現アクセスユニット中のRefPicLayerId[i]に等しいnuh_layer_idを有するピクチャはIRAPピクチャである。
別の実施形態において、両端値を含めて0からNumActiveRefLayerPics−1までの範囲内のiの各値について、以下の2つの条件のいずれかが真であり得ることがビットストリーム適合の要件とすることができる。
max_tid_il_ref_pics_plus1[LayerIdxInVps[RefPicLayerId[i]]]の値が、現アクセスユニット中のRefPicLayerId[i]に等しいnuh_layer_idを有するピクチャのTemporalIdよりも大きい。
max_tid_il_ref_pics_plus1[LayerIdxInVps[RefPicLayerId[i]]]の値が0に等しく、且つ現アクセスユニット中のRefPicLayerId[i]に等しいnuh_layer_idを有するピクチャがIRAPピクチャである。
両端値を含めて0からNumActiveRefLayerPics−1までの範囲内のiの各値について、SamplePredEnabledFlag[nuh_layer_id][RefPicLayerId[i]]またはMotionPredEnabledFlag[nuh_layer_id ] [RefPicLayerId[i]]の値が1に等しくあるべきこと、がビットストリーム適合の要件であってもよい。
図68を参照すると、スライスセグメントヘッダをシグナリングするための別の実施形態が示されている。
図68に示された他実施形態について、1に等しいinter_layer_pred_layer_mask[i]は、レイヤRefLayerId[nuh_layer_id][i]が、インターレイヤ予測のため現ピクチャによって使用可能なことを指定する。0に等しいinter_layer_pred_layer_mask[i]は、レイヤRefLayerId[nuh_layer_id][i]が、インターレイヤ予測のため現ピクチャによって使用されないことを指定する。
存在しない場合、inter_layer_pred_layer_mask[i]は0に等しいと推定される。
両端値を含めて0からNumActiveRefLayerPics−1までの範囲内のiの各値に対する変数RefPicLayerId[i]、NumActiveMotionPredRefLayers、および両端値を含めて0からNumActiveMotionPredRefLayers−1までの範囲内のjの各値に対するActiveMotionPredRefLayerId[j]は、以下のように導出することができる:
ピクチャの全スライスが、両端値を含めて0からNumDirectRefLayers[nuh_layer_id]−1までの範囲内のiの各値について、同じ値のinter_layer_pred_layer_mask[i]を有することができる。
両端値を含めて0からNumActiveRefLayerPics−1までの範囲内のiの各値について、以下の2つの条件のいずれかが真であり得ることがビットストリーム適合の要件であってよい:
max_tid_il_ref_pics_plus1[LayerIdxInVps[RefPicLayerId[i]]]の値がTemporalIdより大きい。
max_tid_il_ref_pics_plus1[LayerIdxInVps[RefPicLayerId[i]]]およびTemporalIdの値は両方とも0に等しく、且つ現アクセスユニット中のRefPicLayerId[i]に等しいnuh_layer_idを有するピクチャがIRAPピクチャである。
両端値を含めて0からNumActiveRefLayerPics−1までの範囲内のiの各値について、SamplePredEnabledFlag[nuh_layer_id][RefPicLayerId[i]]またはMotionPredEnabledFlag[nuh_layer_id ] [RefPicLayerId[i]]の値が1に等しくあり得ること、がビットストリーム適合の要件であってもよい。
図68に、inter_layer_pred_layer_mask[i]が、1ビットを用いるu(1)を使って信号を送ることが可能なこと、およびinter_layer_pred_layer_idc[i]をシグナリングする図67が、複数ビットを用いるu(v)を使って信号を送ることが可能なことが示されている。或る実施形態において、intra_layer_pred_idc[i]の代わりにinter_layer_pred_layer_mask[i]がシグナリングされる。
図69を参照すると、相異なるレイヤ(例えばベースレイヤおよび/エンハンスメントレイヤ群)の間で許容される相互参照関係を制限することによって、システムの複雑性が低減されるようなプロファイルを定義することが望ましい。一般に、このようなシンタクス構造は、一つのレイヤがこの他のレイヤを参照するのを許容し、これが比較的により高いデコーダの複雑性および同様に高いエンコーダの複雑性をもたらす。望まれる場合、シンタクス構造が一つのレイヤは最大でも一つの他のレイヤを参照することを許容する、複雑性の低減されたプロファイルのために改良されたシンタクス構造を用いることができる。シンタクス構造に対するこの制限は、1に設定されているmax_one_active_ref_layer_flagをセットすることによってシグナリングすることができる。
max_one_active_ref_layer_flagは、VPS拡張部中でシグナリングされる。1に等しいmax_one_active_ref_layer_flagは、CVS中の各ピクチャに対するインターレイヤ予測のため最大でも一つのピクチャが使われることを指定する。0に等しいmax_one_active_ref_layer_flagは、CVS中の各ピクチャに対するインターレイヤ予測のため複数のピクチャが使われてよいことを指定する。
layer_id_in_nuh[i]はVPS拡張部中でシグナリングされる。layer_id_in_nuh[i]は、i番目のレイヤのVCL NALユニット中のnuh_layer_idシンタクス要素の値を指定する。両端値を含めて0からvps_max_layers_minus1までの範囲内のiの各値について、layer_id_in_nuh[i]が存在しないとき、その値はiに等しいと推定される。iが0より大きいとき、layer_id_in_nuh[i]は、layer_id_in_nuh[i−1]より大きいものとする。
CVS中の各ピクチャに対するインターレイヤ予測のため、或るレイヤに対し一つだけの直接参照レイヤが使われ、または最大一つのピクチャが使われる場合、例えば、以下のようなビットストリーム制約事項を含めることができる:一つの選択肢において、i=1,...vps_max_layers_minus1の各レイヤに対し、NumDirectRefLayers[layer_id_in_nuh[i]]が1に等しい場合、max_one_active_ref_layer_flagが1に等しいことをビットストリーム適合の要件とすることが可能である。
別の選択肢では次のようにする:
別の選択肢において、i=1,...vps_max_layers_minus1の各レイヤに対し、NumDirDepFlags[i]が1に等しい場合、max_one_active_ref_layer_flagが1に等しいことをビットストリーム適合の要件とすればよいとする。
別の実施形態において、max_one_active_ref_layer_flagが1に等しく設定されているとき、各ピクチャに対し相異なる直接依存レイヤからのインターレイヤ参照ピクチャをシグナリングする能力をサポートしないことが望ましい。この実施形態は、出力レイヤセットを復号するための複雑性の軽減をもたらす。この実施形態において、1に等しいNumDirectRefLayersに関し、以下に提案されたビットストリーム制約事項に従うことを要求してもよい:
一つの選択肢において、max_one_active_ref_layer_flagが1に等しい場合、i=1,...vps_max_layers_minus1の各レイヤに対し、NumDirectRefLayers[layer_id_in_nuh[i]]が1に等しいことがビットストリーム適合の要件である。
別の選択肢では、次のようにする:
別の選択肢において、max_one_active_ref_layer_flagが1に等しい場合、i=1,...vps_max_layers_minus1について、NumDirDepFlags[i]が1に等しいことがビットストリーム適合の要件としてもよい。
別の実施形態には、インターレイヤ予測のシグナリングに関し、スライスヘッダ中で選択されたシンタクス要素を条件付きでシグナリングするため、パラメータセット(例えば、pps、sps、および/またはvps)中で制御されるゲーティングフラグを含めることができる。
図70を参照すると、例えば、シンタクス要素inter_layer_pred_enabled_flag、num_inter_layer_ref_pics_minus1、および/またはinter_layer_pred_layer_idc[i]は、ilp_slice_signaling_enabled_flagが1に等しい場合だけ、スライスセグメントヘッダ中でシグナリングされる。しかして、ilp_slice_signaling_enabled_flagは、ゲーティングフラグである。
図71および図71Aを参照すると、ilp_slice_signaling_enabled_flagは、ビデオパラメータセットなどのパラメータセット中でシグナリングすることができる。図72を参照すると、ilp_slice_signaling_enabled_flagは、シーケンスパラメータセットなどのパラメータセット中でシグナリングすることができる。図73を参照すると、ilp_slice_signaling_enabled_flagは、ピクチャパラメータセットなどのパラメータセット中でシグナリングすることができる。ilp_slice_signaling_enabled_flagは、必要な場合、ビットストリームの別の箇所においてシグナリングすることも可能である。これらのパラメータセットの各々において、ilp_slice_signaling_enabled_flagは、前述されたもの以外の任意の箇所において送信してもよい。
1に等しいilp_slice_signaling_enabled_flagは、inter_layer_pred_enabled_flag、num_inter_layer_ref_pics_minus1、inter_layer_pred_layer_idc[i]が、スライスセグメントヘッダ中に存在することを指定する。0に等しいilp_slice_signaling_enabled_flagは、inter_layer_pred_enabled_flag、num_inter_layer_ref_pics_minus1、inter_layer_pred_layer_idc[i]が、スライスセグメントヘッダ中に存在しないことを指定する。一部の実施形態において、ilp_slice_signaling_enabled_flagは、代わりにilp_slice_signaling_present_flagと呼ばれることもある。
ilp_slice_signaling_enabled_flagが1に等しいとき、inter_layer_pred_enabled_flag、num_inter_layer_ref_pics_minus1、inter_layer_pred_layer_idc[i]およびNumActiveRe−fLayersPicsの値は、以下のように推定される:
NumActiveRefLayerPics=NumDirectRefLayers[nuh_layer_id]
inter_layer_pred_layer_idc[i]は次のように推定される:
num_inter_layer_ref_pics_minus1は、NumDirectRefLayers[nuh_layer_id]−1に等しいと推定される。
inter_layer_pred_enabled_flagは1に等しいと推定される。
別の実施形態において、シンタクス要素の一つ以上を、ue(v)の代わりに、u(v)の代わりに、既知の固定数のビットを使ってシグナリングしてもよい。例えば、これら要素は、u(8)またはu(16)またはu(32)またはu(64)などを使ってシグナリングすることができよう。
別の実施形態において、これらシンタクス要素の一つ以上を、u(v)符号化など固定数ビットの代わりに、ue(v)または何らかの他の符号化スキームを使ってシグナリングすることもできよう。
別の実施形態において、前述したシンタクスおよびセマンティクスに対し、プラス1もしくはプラス2を加算することにより、またはマイナス1もしくはマイナス2を減算することにより、様々なシンタクス要素の名称およびそれらのセマンティクスを変更することができる。
さらに別の実施形態において、ビットストリームの任意の場所でピクチャ毎に、様々なシンタクス要素をシグナリングすることができる。例えば、これらシンタクス要素は、スライスセグメントヘッダ、pps/sps/vps/もしくは任意の他のパラメータセット、またはビットストリームの他の規範的部分においてシグナリングすることが可能である。
「コンピュータ可読媒体」という用語は、コンピュータまたはプロセッサによりアクセスされうる任意の利用可能な媒体をいう。本明細書で用いられる用語「コンピュータ可読媒体」は、非一時的な有形のコンピュータ可読および/またはプロセッサ可読媒体を意味し得る。限定ではなく例として、コンピュータ可読またはプロセッサ可読媒体は、RAM、ROM、EEPROM、CD‐ROMもしくは他の光学ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または命令もしくはデータ構造の形で所望のプログラムコードを伝えまたは記憶するために使用できコンピュータまたはプロセッサによってアクセス可能な任意の他の媒体を含み得る。本明細書で用いられるディスク(disk)およびディスク(disc)は、コンパクトディスク(CD:compact disc)、レーザーディスク、光ディスク、デジタル多用途ディスク(DVD:digital versatile disc)、フロッピーディスク、およびブルーレイ(登録商標)ディスクを含み、ディスク(disk)は通常磁気によりデータを再現し、ディスク(disc)はレーザで光学的にデータを再現する。
なお、本明細書で説明した方法の一つ以上は、ハードウェアで実装しおよび/またはハードウェアを使用して実施することができる。例えば、本明細書に記載される方法またはアプローチの一つ以上は、チップセット、ASIC、大規模集積回路(LSI)または集積回路などで実装しおよび/またはそれらを使用して実現することが可能である。
本明細書に開示される方法の各々は、記載された方法を達成するための一つ以上のステップまたは動作を含む。本方法のステップおよび/または動作は、特許請求の範囲から逸脱することなく、相互に入れ替える、および/または一つのステップに組み合わせることができる。言い換えれば、記載された方法の適切なオペレーションのためにステップまたは動作の特定の順序が要求されている場合を除き、特定のステップおよび/または動作の順序および/または使用は、特許請求の範囲から逸脱することなく修正が可能である。
当然のことながら、特許請求の範囲は、前述で示した通りの正確な構成および構成要素に限定されない。特許請求の範囲から逸脱することなく、本明細書に記載されるシステム、方法、および装置の配置、オペレーション、および細部に様々な修正、変更および変形を加えることが可能である。