メッセージを送信するための或る電子デバイスを説明する。本電子デバイスは、プロセッサと、プロセッサと電子通信するメモリに格納された命令とを含む。本電子デバイスは、符号化ピクチャバッファ(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))」、JCTVCJ10003_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]の値は、1の値を有するscalability_mask中のビットの数の和に等しい。しかして、
である。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_depdndency_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 multi‐view 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 Text1)」、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]の値は、以下のように指定することができる:
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]の値は以下のように指定される:
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」と名付けられた第一スライス2080、「スライス#1」と名付けられた第二スライス2081および「スライス#2」と名付けられた第三スライス2082の、3つの例示的なスライスを示す。デコーダは、3つのスライス2080、2081、2082を並列に復号し再構築することができる。これらスライスの各々は、順次的にスキャンライン順で伝送することが可能である。各スライスに対する復号/再構築処理の開始時に、コンテキストモデルが初期化またはリセットされ、他のスライス中のブロックは、エントロピー復号およびブロック再構築の両方に対して利用不可能としてマークされる。コンテキストモデルは、一般に、エントロピーエンコーダおよび/またはデコーダの状態を表す。しかして、「スライス#1」中のブロック、例えば2093とラベルされたブロックに対するコンテキストモデル選択または再構築のために、「スライス#0」中のブロック(例えば、2091および2092とラベルされたブロック)を使用することはできない。一方で、「スライス#1」中のブロック、例えば2095とラベルされたブロックに対するコンテキストモデル選択または再構築のために、「スライス#1」中の他のブロック(例えば、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)」、JCTVC‐L1003、ジュネーブ、2013年1月;J.チェン、J.ボイス、Y.イェ、M.M.ハンヌクセラ(J.Chen、J.Boyce、Y.Ye、M.M.Hannuksela)著、「SVHCドラフトテキスト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月に記載されており、これらの各々は、参照することにより全体として本明細書に組み込まれる。
x<<yは、2つの補数整数表現の、yのバイナリディジットによるxの算術左シフトを表す。この関数は、非負整数値のyに対してだけ定義される。左シフトの結果として最下位ビットにシフトされたビットは0に等しい値を有する。
x>>yは、2つの補数整数表現の、yのバイナリディジットによるxの算術右シフトを表す。この関数は、非負整数値のyに対してだけ定義される。右シフトの結果としてMSBにシフトされたビットは、シフト演算の前のxのMSBに等しい値を有する。
Ceil(x)は、x以上の最小の整数を表す。
+は加算を表す。
−は減算を表す。
÷は、数式中で、切り捨てまたは四捨五入が意図されていない場合の除算を表すのに使用される。
x/yは、数式中で、切り捨てまたは四捨五入が意図されていない場合の除算を表すのに使用される。
>は、より大きいを表す。
≧は、以上を表す。
<は、より小さいを表す。
≦は、以下を表す。
==は、に等しいを表す。
!=は、に等しくないを表す。
=は、代入演算子を表す。
*は、行列乗算を含め、乗算を表す。
x&&yは、xおよびyのブールの論理「積」を表す。
x||yは、xおよびyのブールの論理「和」を表す。
符号化ツリーブロックは、コンポーネントの符号化ツリーブロックへの分割がパーティション分割である、Nの或る値に対するサンプルのN×Nブロックである。
幅および高さ両方における各輝度符号化ツリーブロックに対するアレイサイズは、サンプル単位でCtbSizeYである。
変数PicWidthInCtbsYは以下のように導出される
変数PicHeightInCtbsYは以下のように導出される
変数PicSizeInCtbsYは、PicSizeInCtbsY=PicWidthInCtbsY*PicHeightInCtbsYにより導出される。
num_tile_columns_minus1プラス1は、ピクチャを分割しているタイル列の数を指定する。num_tile_columns_minus1は、両端値を含めて0からPicWidthInCtbsY−1までの範囲にあるものとする。存在しないとき、num_tile_columns_minus1の値は0に等しいと推定される。
num_tile_rows_minus1プラス1は、ピクチャを分割している行の数を指定する。num_tile_rows_minus1は、両端値を含めて0からPicHeightInCtbsY−1までの範囲にあるものとする。存在しないとき、num_tile_rows_minus1の値は0に等しいと推定される。
tiles_enabled_flagが1に等しいときは、num_tile_columns_minus1およびnum_tile_rows_minus1は両方とも0に等しくないものとする。
1に等しいuniform_spacing_flagは、タイル列の境界および同様にタイル行の境界がピクチャに亘って均等に分布されることを指定する。0に等しいuniform_spacing_flagは、タイル列の境界および同様にタイル行の境界はピクチャに亘って均等に分布されないが、シンタクス要素column_width_minus1[i]およびrow_height_minus1[i]を使って明示的にシグナリングされることを指定する。存在しないとき、uniform_spacing_flagの値は1に等しいと推定される。
column_width_minus1[i]プラス1は、符号化ツリーブロック単位でi番目のタイル列の幅を指定する。
row_height_minus1[i]プラス1は、符号化ツリーブロック単位でi番目のタイル行の高さを指定する。
1に等しいloop_filter_across_tiles_enabled_flagは、インループフィルタリングオペレーションが、PPSを参照して、ピクチャ内のタイル境界を越えて実施可能なことを指定する。0に等しいloop_filter_across_tiles_enabled_flagは、インループフィルタリングオペレーションが、PPSを参照して、ピクチャ内のタイル境界を越えて実施されないことを指定する。インループフィルタリングオペレーションは、デブロッキングフィルタおよびサンプル適応オフセットフィルタのオペレーションを含む。存在しないとき、loop_filter_across_tiles_enabled_flagの値は1に等しいと推定される。
両端値を含め0からnum_tile_rows_minus1までの範囲のjに対しリストrowHeight[j]は、CTB単位でj番目のタイル行の高さを指定する。
両端値を含め0からnum_tile_columns_minus1までの範囲のiに対しリストcolWidth[i]は、CTB単位でi番目のタイル列の幅を指定する。
変数PicWidthInSamplesLおよびPicHeightInSamplesLは、それぞれ、pic_width_in_luma_samplesおよびpic_height_in_luma_samplesに等しく設定される。
ピクチャの符号化ツリーブロックラスタースキャン中の符号化ツリーブロックアドレスを指定する変数CtbAddrInRs。
両端値を含め0からPicSizeInCtbsY−1までの範囲のctbAddrRsに対し、ピクチャのCTBラスタースキャン中のCTBアドレスから、タイルスキャン中のCTBアドレスへの変換を指定する、リストCtbAddrRsToTs[ctbAddrRs]。
両端値を含めて0からPicSizeInCtbsY−1までの範囲のctbAddrTsに対し、タイルスキャン中のCTBアドレスから、タイル識別子への変換を指定する、リストTileId[ctbAddrTs]。
scaled_ref_layer_left_offset[i]は、インターレイヤ予測に用いられた、再サンプルされたi番目の直接参照レイヤピクチャの上部左の輝度サンプルと、現ピクチャの上部左の輝度サンプルとの間の水平方向オフセットを、2輝度サンプルを単位にして指定する。存在しないとき、scaled_ref_layer_left_offset[i]の値は0に等しいと推定される。
scaled_ref_layer_top_offset[i]は、インターレイヤ予測に用いられた、再サンプルされたi番目の直接参照レイヤピクチャの上部左の輝度サンプルと、現ピクチャの上部左の輝度サンプルとの間の垂直方向オフセットを、2輝度サンプルを単位にして指定する。存在しないとき、scaled_ref_layer_top_offset[i]の値は0に等しいと推定される。
scaled_ref_layer_right_offset[i]は、インターレイヤ予測に用いられた、再サンプルされたi番目の直接参照レイヤピクチャの底部右の輝度サンプルと、現ピクチャの底部右の輝度サンプルとの間の水平方向オフセットを、2輝度サンプルを単位にして指定する。存在しないとき、scaled_ref_layer_right_offset[i]の値は0に等しいと推定される。
scaled_ref_layer_bottom_offset[i]は、インターレイヤ予測に用いられた、再サンプルされたi番目の直接参照レイヤピクチャの底部右の輝度サンプルと、現ピクチャの底部右の輝度サンプルとの間の垂直方向オフセットを、2輝度サンプルを単位にして指定する。存在しないとき、scaled_ref_layer_bottom_offset[i]の値は0に等しいと推定される。
変数ScaledRefLayerLeftOffset、ScaledRefLayerTopOffset、ScaledRefLayerRightOffset、およびScaledRefLayerBottomOffsetは、以下のように導出される:
前式中のdRlIdxは直接参照レイヤインデックスに相当する。
変数RefLayerPicWidthInSamplesLおよびRefLayerPicHeightInSamplesLは、それぞれ、輝度サンプル単位に、復号された参照レイヤピクチャの幅および高さに等しく設定される。
変数ScaledRefLayerPicWidthInSamplesLおよびScaledRefLayerPicHeightInSamplesLは、以下のように導出される:
変数ScaleFactorXおよびScaleFactorYは、以下のように導出される:
参照レイヤに対する各輝度符号化ツリーブロックの幅および高さ両方におけるアレイサイズは、サンプル単位に、CtbSizeYRLである。
pic_width_in_luma_samples_RLは、輝度サンプルを単位にして、各参照レイヤの復号ピクチャの幅を指定する。pic_width_in_luma_samples_RLは、0に等しくすることはできない。
pic_height_in_luma_samples_RLは、輝度サンプルを単位にして、各参照レイヤの復号ピクチャの高さを指定する。pic_height_in_luma_samples_RLは0に等しくすることはできない。
変数PicWidthInCtbsYRLは、以下のように導出される。
変数PicHeightInCtbsYRLは、以下のように導出される。
変数PicSizeInCtbsYRLは、PicSizeInCtbsYRL=PicWidthInCtbsYRL*PicHeightInCtbsYRLにより導出される。
num_tile_columns_minus1_RLプラス1は、参照レイヤピクチャを分割しているタイル列の数を指定する。num_tile_columns_minus1_RLは、両端値を含めて0からPicWidthInCtbsYRL−1までの範囲にあるものとする。存在しないとき、num_tile_columns_minus1_RLの値は0に等しいと推定される。
num_tile_rows_minus1_RLプラス1は、参照レイヤピクチャを分割しているタイル行の数を指定する。num_tile_rows_minus1_RLは、両端値を含めて0からPicHeightInCtbsYRL−1までの範囲にあるものとする。存在しないとき、num_tile_rows_minus1_RLの値は0に等しいと推定される。
両端値を含めて0からnum_tile_rows_minus1_RLまでの範囲のjに対し、リストrowHeightRL[j]は、CTBを単位に、対応する参照レイヤピクチャに対するj番目のタイル行の高さを指定する。
両端値を含めて0からnum_tile_columns_minus1_RLまでの範囲のiに対し、リストcolWidthRL[i]は、CTBを単位に、対応する参照レイヤピクチャに対するi番目のタイル列の幅を指定する。
column_width_minus1_RL[i]プラス1は、符号化ツリーブロックを単位に、対応する参照レイヤピクチャに対するi番目のタイル列の幅を指定する。
ColumnWidthMinus1Rl[i]プラス1は、符号化ツリーブロックを単位に、対応する参照レイヤピクチャに対するi番目のタイル列の幅を指定する。
row_height_minus1_RL[i]プラス1は、符号化ツリーブロックを単位に、対応する参照レイヤピクチャに対するi番目のタイル行の高さを指定する。
RowHeightMinus1Rl[i]プラス1は、符号化ツリーブロックを単位に、対応する参照レイヤピクチャに対するi番目のタイル行の高さを指定する。
対応する参照レイヤピクチャの符号化ツリーブロックのラスタースキャン中の符号化ツリーブロックのアドレスを指定する変数CtbAddrInRsRL。
両端値を含めて0からPicSizeInCtbsYRL−1までの範囲のctbAddrRsに対し、対応する参照レイヤピクチャのCTBラスタースキャン中のCTBアドレスから、タイルスキャン中のCTBアドレスへの変換を指定する、リストCtbAddrRsToTsRL[ctbAddrRs]。
両端値を含めて0からPicSizeInCtbsYRL−1までの範囲のctbAddrTsに対し、対応する参照レイヤピクチャのタイルスキャン中のCTBアドレスから、タイル識別子への変換を指定する、リストTileIdRL[ctbAddrTs]。
layer_id_in_nuh[i]は、i番目のレイヤのVCL NALユニット中のnuh_layer_idシンタクス要素の値を指定する。或る実施形態において、iは、両端値を含めて0からvps_max_layers_minus1までの範囲にある。或る実施形態において、存在しないとき、layer_id_in_nuh[i]の値はiに等しいと推定される。
リスト値、NumDirectRefLayer[layer_id_in_nuh[i]]は、nuh_layer_id layer_id_in_nuh[i]を有する対象レイヤに対する直接参照レイヤの数に等しい。
アレイ値、DirectRefLayerIdx[layer_id_in_nuh[i]][layer_id_in_nuh[j]]は、nuh_layer_id layer_id_in_nuh[i]を有する対象レイヤ、およびnuh_layer_id layer_id_in_nuh[j]を有する参照レイヤに対する直接参照レイヤインデックスに等しい。
アレイ値、RefLayerId[layer_id_in_nuh[i]][j]は、nuh_layer_id layer_id_in_nuh[i]を有する対象レイヤに対応する参照レイヤ、および直接参照レイヤインデックスjを有する参照レイヤのnuh_layer_idに等しい。
変数RefPicLayerId[i]は、インターレイヤ予測のため現ピクチャによって使用が可能なi番目のピクチャのnuh_layer_idに対応する。
さらに図51Aおよび図51Bを参照すると、SPSシンタクスは、vui_parameters()シンタクス中のvui(video usability information(ビデオ利用可能性情報))情報の存在をシグナリングするvui_parameters_present_flagを含む。図52Aおよび図52Bを参照すると、vui_parameters()シンタクスは、シグナリングされるtile_boundaries_aligned_flagを含む。tile_boundaries_aligned_flagは、一つ以上のレイヤの符号化ピクチャに対するタイルが相互に整列されているかどうかを示す。整列関係を定義する一つの技法は、1に等しいtile_boundaries_aligned_flagによって、アクセスユニット中の一つのピクチャのいずれか2つのサンプルが一つのタイルに属するときに、同じアクセスユニット中の別のピクチャ中に同じ場所に配置された(collocated)サンプルが在る場合、そのサンプルが一つのタイルに属していること、およびアクセスユニット中の一つのピクチャのいずれか2つのサンプルが相異なるタイルに属するときに、同じアクセスユニット中の別のピクチャ中の同じ場所に配置されたサンプルが、相異なるタイルに属し得ることを示すこと、である。0に等しいtile_boundaries_aligned_flagは、かかる制限事項が適用されても適用されなくてもよいことを示す。例えば、tile_boundaries_aligned_flagが1に等しい場合、ベースレイヤの単一のタイル中の2つのサンプルは、同様に、同じアクセスユニットのエンハンスメントレイヤの単一のタイル中の2つの対応するサンプルでもある。例えば、tile_boundaries_aligned_flagが1に等しい場合、ベースレイヤの2つの異なるタイル中の2つのサンプルは、同様に、同じアクセスユニットのエンハンスメントレイヤの2つの異なるタイル中の2つの対応するサンプルでもある。
整列関係を定義する別の技法は、1に等しいtile_boundaries_aligned_flagによって、対応するベースレイヤピクチャの全てのタイル境界が、所与のエンハンスメントレイヤ中に対応するタイル境界を有し、エンハンスメントレイヤ中には追加のタイル境界が存在しないことを示すことである。このことは、同じエンハンスメントレイヤタイル内に所在するどの2つのエンハンスメントレイヤピクチャサンプルに対しても、同じ場所に配置されたベースレイヤサンプルも同様に同じ参照レイヤタイル内に所在し得、同じ参照レイヤタイル内に所在するどの2つの参照レイヤピクチャサンプルに対しても、同じ場所に配置されたエンハンスメントレイヤサンプルも同様に同じエンハンスメントレイヤタイル内に所在し得ることを意味する。0に等しいtile_boundaries_aligned_flagは、対応するエンハンスメントレイヤと所与の参照レイヤと間にタイル構成上の制限がないことを示す。
ビットストリームが1に等しいtile_boundaries_aligned_flagを有するとき、ビデオの相異なるレイヤを通して一貫したシグナリングが維持されるように、システムによって、何らかの方法で制約事項のセットの一つ以上を選択し定義することができ、これが、望ましくない表示出力を供給するビットストリームの可能性を低減する。これを実装する一つの仕方を以下に詳述する。
第一に、アクセスユニット中の一つのピクチャに対し、tile_boundaries_aligned_flagが1に等しく且つtiles_fixed_structure_flagが1に等しい場合、同じアクセスユニット中の他のピクチャ(群)のレイヤのアクティブなSPSのvui_parameters()において、tiles_fixed_structure_flagを1に設定することができる。一般に、1に等しいtiles_fixed_structure_flagは、符号化ビデオシーケンス中のアクティブな各ピクチャパラメータセットが、同じ値のシンタクス要素num_tile_columns_minus1、num_tile_rows_minus1、uniform_spacing_flag、column_width_minus1[i]、row_height_minus1[i]、およびloop_filter_across_tiles_enabled_flagが存在するときに、これらを有すること、を示す。0に等しいtiles_fixed_structure_flagは、相異なるピクチャパラメータセット中のタイルシンタクス要素が同じ値を有しても有さなくてもよいことを示す。tiles_fixed_structure_flagシンタクス要素が存在しないときは、0に等しいものと推定される。しかして、1に等しいtiles_fixed_structure_flagのシグナリングは、CVS中の各ピクチャが、マルチスレッド復号の場合に作業負荷割り当てに有用な方法と同様のやり方で分布された同じ数のタイルを有することの、デコーダに対する保証である。
第二に、tile_boundaries_aligned_flagが1に等しい場合、同じアクセスユニット中のピクチャ(群)にアクティブな各PPSのnum_tile_columns_minus1を等しくすることができる。一般に、num_tile_columns_minus1プラス1は、ピクチャを分割しているタイル列の数を指定する。
第三に、tile_boundaries_aligned_flagが1に等しい場合、同じアクセスユニット中のピクチャ(群)にアクティブな各PPSのnum_tile_rows_minus1を等しくすることができる。一般に、num_tile_rows_minus1プラス1は、ピクチャを分割しているタイル行の数を指定する。
第四に、以下を定義する。
tile_boundaries_aligned_flagが1に等しい場合、対応する参照レイヤ(群)に対し:
前式中で、iは、0またはnum_tile_row_minus_1に等しくなく、両端値を含めて1から(num_tile_row_minus_1−1)までの範囲にある。
前式中で、jは、0またはnum_tile_columns_minus1に等しくなく、両端値を含めて1から(num_tile_columns_minus1−1)までの範囲にある。
あるいは、tile_boundaries_aligned_flagが1に等しい場合、対応する参照レイヤ(群)に対し:
前式中で、iは、0またはnum_tile_row_minus_1に等しくなく、両端値を含めて1から(num_tile_row_minus_1−1)までの範囲にある。
前式中で、jは、0またはnum_tile_columns_minus1に等しくなく、両端値を含めて1から(num_tile_columns_minus1−1)までの範囲にある。
あるいは、tile_boundaries_aligned_flagが1に等しい場合、対応する参照レイヤ(群)に対し:
前式中で、iは、0またはnum_tile_row_minus_1に等しくなく、両端値を含めて1から(num_tile_row_minus_1−1)までの範囲にある。
前式中で、jは、0またはnum_tile_columns_minus1に等しくなく、両端値を含めて1から(num_tile_columns_minus1−1)までの範囲にある。
あるいは、tile_boundaries_aligned_flagが1に等しい場合、0からNumDirectRefLayer[nuh_layer_id]−1までの範囲のkについてレイヤ識別子RefLayerId[nuh_layer_id][k]を有する各参照レイヤに対して:
row_height_minus1[0]は、(ScaledRefLayerTopOffset+((CtbSizeYRL*(RowHeightMinus1Rl[0]+1))÷ScaleFactorY))/CtbSizeY−1に等しく、column_width_minus1[0]は、(ScaledRefLayerLeftOffset+((CtbSizeYRL*(ColumnWidthMinus1Rl[0]+1))÷ScaleFactorX))/CtbSizeY−1に等しいものとする。
row_height_minus1[i]は、両端値を含めて1から(num_tile_row_minus_1−1)までの各iに対し、(RowHeightMinus1Rl[i]+1)/(ScaleFactorY*CtbSizeYRatio)−1に等しく、column_width_minus1[j]は、両端値を含めて1から(num_tile_columns_minus1−1)までの各iに対し、(ColumnWidthMinus1Rl[j]+1)/(ScaleFactorX*CtbSizeYRatio)−1に等しいものとする。
あるいは、tile_boundaries_aligned_flagが1に等しい場合、0からNumDirectRefLayer[currLayerId]−1までの範囲のkについてレイヤ識別子RefLayerId[currLayerId][k]を有する各参照レイヤ、このcurrLayerIdは現ピクチャのnuh_layer_idであり、これら参照レイヤに対し、:
row_height_minus1[0]は、(ScaledRefLayerTopOffset+((CtbSizeYRL*(RowHeightMinus1Rl[0]+1))÷ScaleFactorY))/CtbSizeY−1に等しく、column_width_minus1[0]は、(ScaledRefLayerLeftOffset+((CtbSizeYRL*(ColumnWidthMinus1Rl[0]+1))÷ScaleFactorX))/CtbSizeY−1に等しいものとする。
row_height_minus1[i]は、両端値を含めて1から(num_tile_row_minus_1−1)までの各iに対し、(RowHeightMinus1Rl[i]+1)/(ScaleFactorY*CtbSizeYRatio)−1に等しく、column_width_minus1[j]は、両端値を含めて1から(num_tile_columns_minus1−1)までの各iに対し、(ColumnWidthMinus1Rl[j]+1)/(ScaleFactorX*CtbSizeYRatio)−1に等しいものとする。
変数ScaledRefLayerLeftOffset、ScaleFactorX、ScaledRefLayerTopOffset、ScaleFactorYの値は、RefLayerId[currLayerId][k]に等しいnuh_layer_idを有するピクチャからの情報、およびインデックスDirectRefLayerIdx[currLayerId][RefLayerId[currLayerId][k]]を入力として使って導出される。
一実施形態において、CtbSizeYRatioは、以下のように制約することができる。
さらに、行および列の計算は、必要により修正することができ、また、参照レイヤおよび現レイヤの特定の特性に基づいて修正することもできる(例えば、異なるタイルの数、サイズなどを有することが可能である)。
第五に、tile_boundaries_aligned_flagが1に等しい場合、uniform_spacing_flagは、同じアクセスユニット中のピクチャにアクティブな各PPSに対するuniform_spacing_flagに等しくすることができる。
一部の場合において、異なるレイヤ(例えば、ベースレイヤおよび/またはエンハンスメントレイヤ)の間で、ビデオの相異なるレイヤを通して一貫したシグナリングが維持されるように、タイルが、別のレイヤ中の同一位置に配置されたタイルからのサンプル予測(例えばアップスケーリング)および動きマッピング(例えば、動きベクトル、モード情報、動きフィールド)のみを用いることが好ましく、これにより、望ましくない表示出力を供給するビットストリームの可能性が低減される。また、これにより、参照レイヤに属するピクチャ全体が復号されるのを待つ必要なく、諸レイヤに亘ってタイルの並列な復号が可能になる。これを実装する一つの仕方を以下に詳述する。
第一に、一実施形態において、この同一位置に配置されたタイルの制約は、1に等しいtile_boundaires_aligned_flagに、またはinter_layer_pred_tile_dec_constraint_flagなど別のフラグに基づくことができ、これらフラグは、CVS内で、両端値を含めて0から(num_tile_row_minus_1+1)*(num_tile_columns_minus1+1)−1までの範囲のiに対して、i番目のタイルに属する当該CTBが、参照レイヤ内のi番目のタイル以外の、いかなるタイルに属するCTBからのサンプル値または動き情報のいずれも使用しないことを示す。0に等しいinter_layer_pred_tile_dec_constraint_flagは、CVS内で、両端値を含めて0から(num_tile_row_minus_1+1)*(num_tile_columns_minus1+1)−1までの範囲のiに対して、i番目のタイルの属する当該CTBが、参照レイヤ内の任意のタイルに属するCTBからのサンプル値または動き情報のいずれをも使用してよいことを示す。tile_boundaries_aligned_flagが0に等しいとき、inter_layer_pred_tile_dec_constraint_flagは0であってよい。inter_layer_pred_tile_dec_constraint_flagが存在しないとき、それは0に等しいと推定される。別の実施形態において、inter_layer_pred_tile_dec_constraint_flagは、CVS中でタイル境界でのインターレイヤ予測が制約されるかどうかを指定する。
− inter_layer_pred_tile_dec_constraint_flagが1に等しい場合、以下が適用される:
− ピクチャのブロックの復号処理がインターレイヤ予測を使用するとき、符号化ピクチャは、該インターレイヤ予測が、当該ブロックの同じ場所に配置された参照レイヤタイルから導出可能なインターレイヤ参照ピクチャのデータ要素だけに基づくように制約されること。
− 現ピクチャにより使用される全てのインターレイヤ参照ピクチャのシンタクス要素loop_filter_across_tiles_enabled_flagが0に等しいこと。
− 上記以外の場合は、(inter_layer_pred_tile_dec_constraint_flagが0に等しい)、このフラグによって制約事項はシグナリングされない。
存在しないとき、inter_layer_pred_tile_dec_constraint_flagは0に等しいと推定される。
一部の実施形態では、inter_layer_pred_tile_dec_constraint_flagは、inter_layer_pred_tile_constraint_flagと呼ばれることがある。
第一に、別の実施形態において、inter_layer_pred_tile_dec_constraint_flagのセマンティクスによって定義される制約事項は、例えば、tile_boundaries_aligned_flagなど、ビットストリーム中のプロファイルレベルでシグナリングされた過去のデータを使って示すことができる。これは、タイル境界を横切って作動することは許されていないがタイル境界内で作動することは許されているループフィルタによって、実装することが可能である。具体的に、inter_layer_pred_tile_dec_constraint_flagが1に等しい場合、同じアクセスユニット中の各ピクチャの各参照レイヤのアクティブなPPSに対し、loop_filter_across_tiles_enabled_flagは0であればよい。具体的に、inter_layer_pred_tile_dec_constraint_flagが1に等しい場合、同じアクセスユニット中の各ピクチャの各参照レイヤのアクティブなPPSに対し、pps_loop_filter_across_slices_enabled_flagは0であればよい。
さらに別の代わりの実施形態において、inter_layer_pred_tile_dec_constraint_flagが1に等しい場合、ループフィルタリング(SAOまたはデブロッキング)の影響を受ける参照レイヤサンプル値は、(a)インター予測復号処理において(例えば、SNRスケーラビリティのために)、または(b)インターレイヤアップサンプリング処理内で(例えば、空間スケーラビリティファクタが1でないときに)使用されないものとする。
さらに別の実施形態において、inter_layer_pred_tile_dec_constraint_flagが1に等しい場合、現レイヤと参照レイヤとの間での動きマッピング処理は、タイルに対する復号処理が、参照レイヤ中の同じ場所に配置されてないタイルからの動き情報を使用しないように修正される。以下に、修正の例を疑似コードでリストする:
変数xPおよびyPは、現レイヤのピクチャ内で検討中の輝度サンプルの位置を表す。変数xRLおよびyRLは、参照レイヤのピクチャ内の対応する輝度サンプルの位置を表す。変数predMode[xP][yP]は、輝度位置(xP,yP)に対する再サンプルピクチャの予測モードに対応する。変数tilePredPreventOffsetは、ビットストリーム内でシグナリングされた過去のデータに基づいて導出すればよい。或る例においてtilePredPreventOffsetは値8に設定される。MODE_INTRAは、イントラ予測モードに対応する。
ビットストリームが、1に等しいtile_boundaries_aligned_flagを有するとき、ビデオの相異なるレイヤを通して一貫したシグナリングが維持されるように、システムによって、ベースレイヤを参照してエンハンスメントレイヤの制約事項のセットの一つ以上を選択し定義することができ、これにより望ましくない表示出力を供給するビットストリームの可能性が低減される。
相異なるエンハンスメントレイヤを通して一貫したシグナリングが維持されることを確実にするために望ましい制約事項のこの選択、nuh_layer_id>0且つtile_boundaries_aligned_flagが1に等しいとき、num_tile_columns_minus1、num_tile_rows_minus1、uniform_spacing_flag、column_width_minus1[i]、および/またはrow_height_minus1[i]シンタクス要素を、必要に応じかかるデータがコピーでき推察できるように、明示的にシグナリングしないことが望ましい。
図53を参照すると、ベースレイヤからの他のシグナリングされたシンタクス、すなわち「if(!nuh_layer_id>0&&tile_boundaries_aligned_flag))」、およびその関係シンタクスを使用するかどうかを判定するためのエンハンスメントレイヤおよびtile_boundaries_aligned_flag設定かどうかを検討するために、ピクチャパラメータセット(例えばpic_parameter_set_rbsp())を修正することが可能である。これは例えば以下のように表すことができる。nuh_layer_id>0&&pps_seq_parameter_set_idに対応するSPSに対するtile_boundaries_aligned_flagが1のとき、num_tile_columns_minus1、num_tile_rows_minus1、uniform_spacing_flag、column_width_minus1[i]、row_height_minus1[i]はシグナリングされない。参照レイヤのアクティブなPPSからの対応する値は、現レイヤに対するこれらのPPSシンタクス要素の値の推定に使用される。これらは以下のように導出できる。
第一に、現レイヤのPPSに対し、num_tile_columns_minus1、num_tile_rows_minus1、および/またはuniform_spacing_flagの値は、それぞれ、0に等しいnuh_layer_idを有するレイヤのアクティブなPPSからの、num_tile_columns_minus1、num_tile_rows_minus1、および/またはuniform_spacing_flagシンタクス要素の値に等しく設定される。
第二に、column_width_minus1[0]の値は、0に等しいnuh_layer_idを有するレイヤのアクティブなPPSからのシンタクス要素に対する値(ScaledRefLayerLeftOffset+(CtbSizeYRL*(column_width_minus1_RL[0]+1))÷ScaleFactorX)/CtbSizeY−1に等しく設定される。
第三に、現レイヤのPPSに対し、(i=1,...,num_tile_columns_minus1−1)についてcolumn_width_minus1[i]の値は、それぞれ、0に等しいnuh_layer_idを有するレイヤのアクティブなPPSからのシンタクス要素に対する値(column_width_minus1_RL[i]+1)/(ScaleFactorX*CtbSizeYRatio)−1に等しく設定される。
第四に、row_height_minus1[0]の値は、0に等しいnuh_layer_idを有するレイヤのアクティブなPPSからのシンタクス要素に対する値(ScaledRefLayerTopOffset+(CtbSizeYRL*(row_height_minus1_RL[0]+1))÷ScaleFactorY)/CtbSizeY−1に等しく設定される。
第五に、現レイヤのPPSに対し、(i=1,...,num_tile_rows_minus1−1)についてrow_height_minus1[i]の値は、それぞれ、0に等しいnuh_layer_idを有するレイヤのアクティブなPPSからのシンタクス要素に対する値(row_height_minus1_RL[i]+1)/(ScaleFactorY*CtbSizeYRatio)−1に等しく設定される。
第一から第五までのこれらシンタクス要素の各々に対して、対応する参照レイヤPPSシンタクス要素の値に適用される制約事項が、それらが在る場合には全て同じく適用される。一部の実施形態において参照レイヤはベースレイヤであってよい。アクティブなPPSは、現ピクチャのアクセスユニット中の0に等しいnuh_layer_idを有するレイヤのPPSであってよい。一部の実施形態において、値を、0に等しいnuh_layer_idを有するレイヤのアクティブなPPSからの値に等しく設定する代わりに、これらの値を、異なった参照レイヤ、すなわち、0と異なるnuh_layer_idを有するレイヤのアクティブなPPSからの値と等しく代わりに設定することも可能である。
さらに別の実施形態において、タイルのシンタクス要素は次のように導出することができる。
第一に、現レイヤのPPSに対するnum_tile_columns_minus1、num_tile_rows_minus1、および/またはuniform_spacing_flagの値は、それぞれ、0に等しいnuh_layer_idを有するレイヤのアクティブなPPSからのnum_tile_columns_minus1、num_tile_rows_minus1、および/またはuniform_spacing_flagシンタクス要素の値に等しく設定される。
第二に、変数dRlIdx0は、DirectRefLayerIdx[currLayerId][RefLayerId[currLayerId][0]]に等しく設定され、前式中のcurrLayerIdは、現ピクチャのnuh_layer_idである。
第三に、ScaledRefLayerLeftOffset、ScaleFactorX、ScaledRefLayerTopOffset、ScaleFactorYの値が、RefLayerId[currLayerId][0]に等しいnuh_layer_idを有するピクチャからの情報、およびインデックスdRlIdx0を入力として使って導出される。
第四に、各i=0,...,num_tile_columns_minus1−1について、リストColumnWidthMinus1dRl0[i]が、それぞれ、column_width_minus1[i]に等しく設定され、各i=0,...,num_tile_rows_minus1−1について、リストRowHeightMinus1dRl0[i]が、それぞれ、row_height_minus1[i]に等しく設定され、これらはRefLayerId[currLayerId][0]に等しいnuh_layer_idを有するレイヤのアクティブなPPSからの値である。
第五に、column_width_minus1[0]の値は、RefLayerId[currLayerId][0]に等しいnuh_layer_idを有するレイヤのアクティブなPPSからのシンタクス要素に対する値(ScaledRefLayerLeftOffset+(CtbSizeYRL*(ColumnWidthMinus1dRl0[0]+1))÷ScaleFactorX)/CtbSizeY−1に等しく設定される。
第六に、現レイヤのPPSに対し、(i=1,...,num_tile_columns_minus1−1)についてcolumn_width_minus1[i]の値は、それぞれ、RefLayerId[currLayerId][0]に等しいnuh_layer_idを有するレイヤのアクティブなPPSからのシンタクス要素に対する値(ColumnWidthMinus1dRl0[i]+1)/(ScaleFactorX*CtbSizeYRatio)−1に等しく設定される。
第七に、row_height_minus1[0]の値は、RefLayerId[currLayerId][0]に等しいnuh_layer_idを有するレイヤのアクティブなPPSからのシンタクス要素に対する値(ScaledRefLayerTopOffset+(CtbSizeYRL*(RowHeightMinus1dRl0[0]+1))÷ScaleFactorY)/CtbSizeY−1に等しく設定される。
第八に、現レイヤのPPSに対し、(i=1,...,num_tile_rows_minus1−1)についてrow_height_minus1[i]の値は、それぞれ、RefLayerId[currLayerId][0]に等しいnuh_layer_idを有するレイヤのアクティブなPPSからのシンタクス要素に対する値(RowHeightMinus1dRl0[i]+1)/(ScaleFactorY*CtbSizeYRatio)−1に等しく設定される。
さらに別の実施形態において、タイルのシンタクス要素は以下のように導出することができる。
第一に、現レイヤのPPSに対するnum_tile_columns_minus1、num_tile_rows_minus1、および/またはuniform_spacing_flagの値は、それぞれ、0に等しいnuh_layer_idを有するレイヤのアクティブなPPSからのnum_tile_columns_minus1、num_tile_rows_minus1、および/またはuniform_spacing_flagシンタクス要素の値に等しく設定される。
第二に、変数dRlIdx1は、DirectRefLayerIdx[currLayerId][RefLayerId[currLayerId][0]]に等しく設定され、前式中のcurrLayerIdは、現ピクチャのnuh_layer_idである。
第三に、ScaledRefLayerLeftOffset、ScaleFactorX、ScaledRefLayerTopOffset、ScaleFactorYの値が、現ピクチャと同じアクセスユニット内のDPB中の、rlPic1に等しいnuh_layer_idを有する例えばrlPic1などの、参照レイヤピクチャからの情報、およびインデックスdRlIdx1を入力として使って導出される。
第四に、各i=0,...,num_tile_columns_minus1−1について、リストColumnWidthMinus1dRl1[i]が、それぞれ、column_width_minus1[i]に等しく設定され、各i=0,...,num_tile_rows_minus1−1について、リストRowHeightMinus1dRl1[i]が、それぞれ、row_height_minus1[i]に等しく設定され、これらはrlPic1のアクティブなPPSからの値である。
第五に、column_width_minus1[0]の値は、rlPic1のアクティブなPPSからのシンタクス要素に対する値(ScaledRefLayerLeftOffset+(CtbSizeYRL*(ColumnWidthMinus1dRl1[0]+1))÷ScaleFactorX)/CtbSizeY−1に等しく設定される。
第六に、現レイヤのPPSに対し、(i=1,...,num_tile_columns_minus1−1)についてcolumn_width_minus1[i]の値は、それぞれ、rlPic1のアクティブなPPSからのシンタクス要素に対する値(ColumnWidthMinus1dRl1[i]+1)/(ScaleFactorX*CtbSizeYRatio)−1に等しく設定される。
第七に、row_height_minus1[0]の値は、rlPic1のアクティブなPPSからのシンタクス要素に対する値(ScaledRefLayerTopOffset+(CtbSizeYRL*(RowHeightMinus1dRl1[0]+1))÷ScaleFactorY)/CtbSizeY−1に等しく設定される。
第八に、現レイヤのPPSに対し、(i=1,...,num_tile_rows_minus1−1)についてrow_height_minus1[i]の値は、それぞれ、rlPic1のアクティブなPPSからのシンタクス要素に対する値(RowHeightMinus1dRl1[i]+1)/(ScaleFactorY*CtbSizeYRatio)−1に等しく設定される。
さらに別の実施形態において、タイルのシンタクス要素を次のように導出することができる。
第一に、現レイヤのPPSに対するnum_tile_columns_minus1、num_tile_rows_minus1、および/またはuniform_spacing_flagの値は、それぞれ、0に等しいnuh_layer_idを有するレイヤのアクティブなPPSからのnum_tile_columns_minus1、num_tile_rows_minus1、および/またはuniform_spacing_flagシンタクス要素の値に等しく設定される。
第二に、変数dRlIdx2は、DirectRefLayerIdx[currLayerId][RlPicNuhLId]に等しく設定され、前式中のcurrLayerIdは、現ピクチャのnuh_layer_idであり、RlPicNuhLIdは現ピクチャに対する参照レイヤピクチャのnuh_layer_idである。
第三に、ScaledRefLayerLeftOffset、ScaleFactorX、ScaledRefLayerTopOffset、ScaleFactorYの値が、RlPicNuhLIdに等しいnuh_layer_idを有するピクチャからの情報、およびインデックスdRlIdx2を入力として使って導出される。
第四に、各i=0,...,num_tile_columns_minus1−1について、リストColumnWidthMinus1dRl2[i]が、それぞれ、column_width_minus1[i]に等しく設定され、各i=0,...,num_tile_rows_minus1−1について、リストRowHeightMinus1dRl2[i]が、それぞれ、row_height_minus1[i]に等しく設定され、これらはRlPicNuhLIdに等しいnuh_layer_idを有するレイヤのアクティブなPPSからの値である。
第五に、column_width_minus1[0]の値は、RlPicNuhLIdに等しいnuh_layer_idを有するレイヤのアクティブなPPSからのシンタクス要素に対する値(ScaledRefLayerLeftOffset+(CtbSizeYRL*(ColumnWidthMinus1dRl2[0]+1))÷ScaleFactorX)/CtbSizeY−1に等しく設定される。
第六に、現レイヤのPPSに対し、(i=1,...,num_tile_columns_minus1−1)についてcolumn_width_minus1[i]の値は、それぞれ、RlPicNuhLIdに等しいnuh_layer_idを有するレイヤのアクティブなPPSからのシンタクス要素に対する値(ColumnWidthMinus1dRl2[i]+1)/(ScaleFactorX*CtbSizeYRatio)−1に等しく設定される。
第七に、row_height_minus1[0]の値は、RlPicNuhLIdに等しいnuh_layer_idを有するレイヤのアクティブなPPSからのシンタクス要素に対する値(ScaledRefLayerTopOffset+(CtbSizeYRL*(RowHeightMinus1dRl2[0]+1))÷ScaleFactorY)/CtbSizeY−1に等しく設定される。
第八に、現レイヤのPPSに対し、(i=1,...,num_tile_rows_minus1−1)についてrow_height_minus1[i]の値は、それぞれ、RlPicNuhLIdに等しいnuh_layer_idを有するレイヤのアクティブなPPSからのシンタクス要素に対する値(RowHeightMinus1dRl2[i]+1)/(ScaleFactorY*CtbSizeYRatio)−1に等しく設定される。
さらに別の実施形態において、タイルのシンタクス要素を次のように導出することができる:
現レイヤのPPSに対し、num_tile_columns_minus1、num_tile_rows_minus1、uniform_spacing_flagの値は、それぞれ、0に等しいnuh_layer_idを有するレイヤのアクティブなPPSからの、num_tile_columns_minus1およびnum_tile_rows_minus1、uniform_spacing_flagシンタクス要素の値に等しく設定される。
column_width_minus1[i]、row_height_minus1[i]の値は以下のように導出される:
ScaledRefLayerLeftOffset、ScaleFactorX、ScaledRefLayerTopOffset、ScaleFactorYが、RefLayerId[currLayerId][0]に等しいnuh_layer_idを有するピクチャからの情報、およびインデックスDirectRefLayerIdx[currLayerId][RefLayerId[currLayerId][0]]を入力として使って計算される。前式中のcurrLayerIdは現ピクチャのnuh_layer_idである。各i=0,...,num_tile_columns_minus1−1について、ColumnWidthMinus1Rl3[i]が、それぞれ、column_width_minus1[i]に等しく設定され、各i=0,...,num_tile_rows_minus1−1について、RowHeightMinus1Rl3[i]が、それぞれ、row_height_minus1[i]に等しく設定され、これらはRefLayerId[currLayerId][0]に等しいnuh_layer_idを有するレイヤのアクティブなPPSからの値である。CtbSizeYRatioは、CtbSizeY÷CtbSizeYRLに等しく設定され、前式中のCtbSizeYRLは、RefLayerId[currLayerId][0]に等しいnuh_layer_idを有するレイヤの幅および高さ両方での、各輝度符号化ツリーブロックのアレイサイズである。
column_width_minus1[0]の値は、値(ScaledRefLayerLeftOffset+(CtbSizeYRL*(ColumnWidthMinus1Rl3[0]+1))÷ScaleFactorX)/CtbSizeY−1に等しく設定される。
(i=1,...,num_tile_columns_minus1−1)についてcolumn_width_minus1[i]の値は、それぞれ、値(ColumnWidthMinus1Rl3[i]+1)/(ScaleFactorX*CtbSizeYRatio)−1に等しく設定される。
row_height_minus1[0]の値は、値(ScaledRefLayerTopOffset+(CtbSizeYRL*(RowHeightMinus1Rl3[0]+1))÷ScaleFactorY)/CtbSizeY−1に等しく設定される。
(i=1,...,num_tile_rows_minus1−1)についてrow_height_minus1[i]の値は、それぞれ、値(RowHeightMinus1Rl3[i]+1)/(ScaleFactorY*CtbSizeYRatio)−1に等しく設定される。
さらなる実施形態において、現ピクチャのPPSに対するloop_filter_across_tiles_enabled_flagおよび/またはpps_loop_filter_across_slices_enabled_flagの値は、それぞれ、0に等しいnuh_layer_idを有するレイヤのアクティブなPPSからのloop_filter_across_tiles_enabled_flagおよび/またはpps_loop_filter_across_slices_enabled_flagシンタクス要素の値に等しく設定される。また、この場合、これらのシンタクス要素は、nuh_layer_id>0&&pps_seq_parameter_set_idに対応するSPSに対するtile_boundaries_aligned_flagが1のときにもシグナリングされない。
このtile_boundaries_aligned_flagは、アクセスユニット内の全てのレイヤに適用可能なフラグである。tile_boundaries_aligned_flagは、vui_parametersシンタクスの一部としてSPSシンタクスに含まれてよいが、SPSシンタクスは、レイヤの各々に含まれており、しかしてtile_boundaries_aligned_flagは、同じアクセスユニットに対し複数回シグナリングされる。システムのバンド幅を低減するために、tile_boundaries_aligned_flagのシグナリングの単純化と合わせて、このtile_boundaries_aligned_flagを、アクセスユニットの各レイヤに含まれるSPSシンタクスに含める代わりにアクセスユニットの全レイヤに適用可能なVPSシンタクス内に含めるのが望ましい。
図54Aおよび図54Bを参照すると、例示的なVPSシンタクスは、vps_extension_flagを含み、フラグされた場合にvps_extension()をシグナリングする。図55を参照すると、例示的なvps_extension()は、tile_boundaries_aligned_vps_flagを含むことができる。tile_boundaries_aligned_vps_flagは、例えば1に等しい場合、或るアクセスユニット中の一つのピクチャのいずれか2つのサンプルが一つのタイルに属するとき、同じアクセスユニット中の別のピクチャ中に同じ場所に配置されたサンプルがあればそれらのサンプルは一つのタイルに属し、アクセスユニット中の一つのピクチャのいずれか2つのサンプルが相異なるタイルに属するときは、同じアクセスユニット中の別のピクチャ中の同じ場所に配置されたサンプルも相異なるタイルに属し得ることを示すように、定義することができる。0に等しいtile_boundaries_aligned_flagは、かかる制限事項が適用されてもされなくてもよいことを示す。
別の実施形態において、tile_boundaries_aligned_flagは、拡張レイヤの特定のレイヤに適用可能なものとして、vps拡張シンタクス内でシグナリングされてよく、該フラグは、アクセスユニットの各レイヤに対し含まれているSPSシンタクスの代わりに、アクセスユニットの選択されたレイヤに適用可能である。
図56を参照すると、このシンタクスは、しかして、エンハンスメントレイヤの各々(例えば、i=1;i≦vps_max_layers_minus1;i++)に対して、およびこれらエンハンスメントレイヤの各々(例えば、j=0;j<i;j++)内の各シンタクスに対して、タイルをどのように整列するかをシグナリングすることができる(例えば、reflayer_tile_boundaries_aligned_flag[i][j])。
例えば、reflayer_tile_boundaries_aligned_flag[i][j]は、1に等しい場合、レイヤiに属するピクチャのいずれか2つのサンプルが一つのタイルに属するとき、レイヤjに属する別のピクチャ中の同じ場所に配置されたサンプルがあればそれらは一つのタイルに属し、レイヤiに属するピクチャのいずれか2つのサンプルが相異なるタイルに属するときは、レイヤjに属する別のピクチャ中の同じ場所に配置されたサンプルも相異なるタイルに属し得ることを示すように、定義することができる。0に等しいreflayer_tile_boundaries_aligned_vps_flag[i][j]は、レイヤiおよびレイヤjに属するピクチャに対しかかる制限事項が適用されてもされなくてもよいことを示す。reflayer_tile_boundaries_aligned_vps_flag[i][j]が存在しないとき、それは0に等しいと推定される。
例えば、reflayer_tile_boundaries_aligned_flag[i][j]は、1に等しい場合、レイヤiに属するアクセスユニット中の或るピクチャのいずれか2つのサンプルが一つのタイルに属するとき、レイヤjに属する同じアクセスユニット中の別のピクチャ中に同じ場所に配置されたサンプルがあればそれらは一つのタイルに属し、レイヤiに属する或るピクチャのいずれか2つのサンプルが相異なるタイルに属するときは、レイヤjに属する別のピクチャ中の同じ場所に配置されたサンプルも相異なるタイルに属し得ることを示すように、定義することができる。0に等しいreflayer_tile_boundaries_aligned_vps_flag[i][j]は、レイヤiおよびレイヤjに属するピクチャに対しかかる制限事項が適用されてもされなくてもよいことを示す。reflayer_tile_boundaries_aligned_vps_flag[i][j]が存在しないとき、それは0に等しいと推定される。
例えば、reflayer_tile_boundaries_aligned_flag[i][j]は、1に等しい場合、レイヤiに属する或るピクチャのいずれか2つのサンプルが一つのタイルに属するとき、レイヤiに対する直接参照レイヤであり得るレイヤjに属する別のピクチャ中に同じ場所に配置されたサンプルがあればそれらは一つのタイルに属し、レイヤiに属する或るピクチャのいずれか2つのサンプルが相異なるタイルに属するときは、レイヤjに属する別のピクチャ中の同じ場所に配置されたサンプルも相異なるタイルに属し得ることを示すように、定義することができる。0に等しいreflayer_tile_boundaries_aligned_vps_flag[i][j]は、レイヤiおよびレイヤjに属するピクチャに対しかかる制限事項が適用されてもされなくてもよいことを示す。reflayer_tile_boundaries_aligned_vps_flag[i][j]が存在しないとき、それは0に等しいと推定される。
例えば、reflayer_tile_boundaries_aligned_flag[i][j]は、1に等しい場合、レイヤiに属するアクセスユニット中の或るピクチャのいずれか2つのサンプルが一つのタイルに属するとき、レイヤiに対する直接参照レイヤであり得るレイヤjに属する同じアクセスユニット中の別のピクチャ中に同じ場所に配置されたサンプルがあればそれらは一つのタイルに属し、レイヤiに属する或るピクチャのいずれか2つのサンプルが相異なるタイルに属するときは、レイヤjに属する別のピクチャ中の同じ場所に配置されたサンプルも相異なるタイルに属し得ることを示すように、定義することができる。0に等しいreflayer_tile_boundaries_aligned_vps_flag[i][j]は、レイヤiおよびレイヤjに属するピクチャに対しかかる制限事項が適用されてもされなくてもよいことを示す。reflayer_tile_boundaries_aligned_vps_flag[i][j]が存在しないとき、それは0に等しいと推定される。
別の実施形態において、tile_boundaries_aligned_flagは、拡張レイヤの特定のレイヤに適用可能なものとして、vps拡張シンタクス内でシグナリングすることができ、該フラグは、アクセスユニットの各レイヤに対し含まれているSPSシンタクスの代わりに、それらの依存性に基づいてアクセスユニットの選択されたレイヤに適用可能である。
図57を参照すると、このシンタクスは、しかして、エンハンスメントレイヤの各々(例えば、i=1;i≦vps_max_layers_minus1;i++)に対し、およびこれらエンハンスメントレイヤの各々(例えば、j=0;j<i;j++)内のこれらレイヤに依存する(例えば1に等しいdirect_dependency_flag[i][j])各シンタクスに対し、タイルをどのように整列するかをシグナリングすることができる(例えば、reflayer_tile_boundaries_aligned_flag[i][j])。
図58を参照すると、図56と類似の機能性を有する修正された構造が示されている。
図59を参照すると、図57と類似の機能性を有するさらに修正された構造が示されている。図57および図59中の一部の実施形態では、direct_dependency_flag[i][j]が0の場合、reflayer_tile_boundaries_aligned_flag[i][j]は0に等しいと推定される。
図55、図56、図57、図58、または図59中に示されるように、VPSにおけるタイル境界整列シグナリングは、図52BのSPS中のtile_boundaries_aligned_flagの現在のシグナリングに追加して送信することができる。この場合、SPS中の情報は、VPS中でシグナリングされた情報を更新/オーバーライドすることが可能である。
一部の実施形態において、VPSにおけるreflayer_tile_boundaries_aligned_flag[i][j]のシグナリングの代わりに、このフラグがSPS中でシグナリングされてもよい。一実施形態では、このシグナリングは、vui_parametersの内部で行われてもよい。図60は、このためのシンタクスの変形を示し、該変形は図56中のシンタクスの変形と類似であるが、代わりにvui_parameters中のSPSの中に在る。図60において、reflayer_tile_boundaries_aligned_flag[i][j]は、この場合、図56のreflayer_tile_boundaries_aligned_flag[i][j]と類似のセマンティクスを有する。
図61は、このためのシンタクスの変形を示し、該変形は図57中のシンタクスの変形と類似であるが、代わりにvui_parameters中のSPSの中に在る。図61において、reflayer_tile_boundaries_aligned_flag[i][j]は、図57のreflayer_tile_boundaries_aligned_flag[i][j]と類似のセマンティクスを有する。この場合、図61は、代わりに、ref_layer_tile_boundaries_aligned_flag[j]が、vui_parameters中のSPSの中でシグナリングされるシンタクスの変形を示す。1に等しいref_layer_tile_boundaries_aligned_vps_flag[j]は、nuh_layer_idを有するピクチャのいずれか2つのサンプルが一つのタイルに属するとき、RefLayerId[nuh_layer_id][j]に等しいnuh_layer_idを有するレイヤに属する別のピクチャ中に同じ場所に配置されたサンプルがあればそれらは一つのタイルに属し、nuh_layer_idを有するピクチャのいずれか2つのサンプルが相異なるタイルに属するときは、RefLayerId[nuh_layer_id][j]に等しいnuh_layer_idを有するレイヤに属する別のピクチャ中の同じ場所に配置されたサンプルも相異なるタイルに属さなければならないことを示す。0に等しいref_layer_tile_boundaries_aligned_vps_flag[j]は、nuh_layer_idを有するピクチャに対しかかる制限事項が適用されてもされなくてもよいことを示す。ref_layer_tile_boundaries_aligned_vps_flag[j]が存在しないとき、それは0に等しいと推定される。
reflayer_tile_boundaries_aligned_flag[i][j]を搬送するためのさらなるシンタクスの変形が図62および図63中に示されている。さらに別の実施形態において、図62および/または図63中のシンタクス変形は、ピクチャパラメータセット、スライスセグメントヘッダ、任意の他のパラメータセットなど、ビットストリームの規範的部分中、またはビットストリームの非規範的部分中の任意の場所で搬送することができる。
別の実施形態において、シンタクス要素の一つ以上を、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)または集積回路などで実装しおよび/またはそれらを使用して実現することが可能である。
本明細書に開示される方法の各々は、記載された方法を達成するための一つ以上のステップまたは動作を含む。本方法のステップおよび/または動作は、特許請求の範囲から逸脱することなく、相互に入れ替える、および/または一つのステップに組み合わせることができる。言い換えれば、記載された方法の適切なオペレーションのためにステップまたは動作の特定の順序が要求されている場合を除き、特定のステップおよび/または動作の順序および/または使用は、特許請求の範囲から逸脱することなく修正が可能である。
当然のことながら、特許請求の範囲は、前述で示した通りの正確な構成および構成要素に限定されない。特許請求の範囲から逸脱することなく、本明細書に記載されるシステム、方法、および装置の配置、オペレーション、および細部に様々な修正、変更および変形を加えることが可能である。