メッセージを送信するための電子デバイスが記載される。この電子デバイスは、プロセッサと、プロセッサと電子通信するメモリに格納された命令とを含む。電子デバイスは、符号化ピクチャバッファ(CPB;Coded Picture Buffer)がサブピクチャレベルでの動作をサポートするときに、共通復号ユニットCPB引き抜き遅延パラメータをピクチャタイミング付加拡張情報(SEI;Supplemental Enhancement Information)メッセージに含むべきか否かを判断する。また、電子デバイスは、共通復号ユニットCPB引き抜き遅延パラメータがピクチャタイミングSEIメッセージ(もしくは他の何らかのSEIメッセージまたは他の何らかのパラメータセット、例えばピクチャパラメータセットもしくはシーケンスパラメータセットもしくはビデオパラメータセットもしくは適応パラメータセット)に含まれるべきときには、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)に示される。
表(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引き抜き遅延パラメータがピクチャタイミング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, and T‐.Wiegand)著、“高効率ビデオ符号化規格書ドラフト10(High efficiency video coding(HEVC)text specification draft 10)(DFIS & Last Call用),”JCTVC‐J10003_v34、ジュネーブ、2013年1月は、参照により全体として本明細書に組み込まれるものとする。B.ブロス、W‐J.ハン、J‐R.オーム、G.J.サリバン、ワン、およびT‐.ウィーガンド(B.Bros,W‐J.Han,J‐R.Ohm,G.J.Sullivan,Wang,and T‐.Wiegand)著、“高効率ビデオ符号化規格書ドラフト10(High efficiency video coding(HEVC)text specification draft 10),”JCTVC‐L1003、ジュネーブ、2013年1月は、参照により全体として本明細書に組み込まれるものとする。
本明細書に開示されるシステムおよび方法による修正されたシンタクスおよびセマンティクスの一例が、以下の表(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は、異なる符号化ビデオシーケンスのアクセスユニットであるバッファリング期間SEIメッセージを含む先行するアクセスユニットの引き抜き時刻に対するクロックティックの数を指定するが、シンタクス要素cpb_removal_delayの(ビットでの)長さを決定するcpb_removal_delay_length_minus1の値は、ピクチャタイミングSEIメッセージに関連するプライマリ符号化ピクチャにつきアクティブであるシーケンスパラメータセットにおいて符号化されたcpb_removal_delay_length_minus1の値である。
「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は、異なる符号化ビデオシーケンスのアクセスユニットであるバッファリング期間SEIメッセージを含む先行するアクセスユニットの第一の復号ユニットの引き抜き時刻に関するサブピクチャクロックティックの数を指定するが、シンタクス要素common_du_cpb_removal_delayの(ビットでの)長さを決定するcpb_removal_delay_length_minus1の値は、ピクチャタイミングSEIメッセージに関連する符号化ピクチャにつきアクティブであるシーケンスパラメータセットにおいて符号化されたcpb_removal_delay_length_minus1の値である。
「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]は、異なる符号化ビデオシーケンスのアクセスユニットであるバッファリング期間SEIメッセージを含む先行するアクセスユニットの第一の復号ユニットの引き抜き時刻に関するサブピクチャクロックティックの数を指定するが、シンタクス要素du_cpb_removal_delay[i]の(ビットでの)長さを決定するcpb_removal_delay_length_minus1の値は、ピクチャタイミングSEIメッセージに関連する符号化ピクチャにつきアクティブであるシーケンスパラメータセットにおいて符号化されたcpb_removal_delay_length_minus1の値である。
一構成では、復号ユニット引き抜きのタイミングおよび復号ユニットの復号は、以下のように実装される。
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)
表(2)に示した例は、復号ユニットを引き抜くときにCPBから引き抜かれるべきデータの量を決定するために使用される、シンタクス要素common_num_nalus_in_du_minus1を含む。「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)
表(3)に示す例は、シンタクス要素「common_num_nalus_in_du_minus1」が1に等しいときに、シンタクス要素「common_num_nalus_in_du_flag」が存在することを指定することを含む。「common_num_nalus_in_du_flag」が0のときは、シンタクス要素「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動作により、同じタイミングの復号ユニット引き抜きが生じるようにビットストリーム制約を実装することもできる。
1に等しいsub_pic_cpb_params_present_flagは、サブピクチャレベル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動作およびアクセスユニットベースのCPBの動作により、アクセスユニット引き抜きおよびアクセスユニットの最後の復号ユニットの引き抜きが同じタイミングで生じるように、CPB引き抜き遅延(au_cpb_removal_delay_minus1+1)が設定される。
アクセスユニットレベルまたはサブピクチャレベルの両方での動作をサポートするために、以下のビットストリーム制約が用いられる: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により行われればよく、電子デバイス102が、メッセージ(例えばピクチャタイミング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)など、またはそれらの組み合わせとして実装される。一部の構成では、エンコーダ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を産出し、変換信号634が量子化モジュール636に供給される。量子化モジュール636は、変換信号634を量子化して、変換および量子化係数(TQC;transformed and quantized coefficients)638を産出する。
TQC638は、エントロピー符号化モジュール642および逆量子化モジュール650に供給される。逆量子化モジュール650は、TQC638の逆量子化を行って、逆量子化信号652を産出し、逆量子化信号652が逆変換モジュール654に供給される。逆変換モジュール654は、逆量子化信号652を伸長して、伸長信号656を産出し、伸長信号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は、予測信号792に加算されて、結合信号786が産出される。予測信号792は、動き補償モジュール780により産出されるフレーム間予測信号782、またはフレーム内予測モジュール788により産出されるフレーム内予測信号790から選択される信号であればよい。一部の構成では、この信号選択は、ビットストリーム714に基づく(例えばビットストリーム714により制御される)。
フレーム内予測信号790は、(例えば現フレームにおいて)前に復号された結合信号786からの情報から予測できる。結合信号786は、さらにデブロッキングフィルタ794によりフィルタされる。結果として生じるフィルタ信号796は、復号ピクチャバッファ709に書き込まれる。結果として生じるフィルタ信号796は、復号ピクチャを含む。復号ピクチャバッファ709は、718で出力される復号ピクチャを供給する。それ以外の場合には、709はフレームメモリであると考えられる。
図7Bは、電子デバイス1802のビデオデコーダ1812の一構成を示したブロック図である。ビデオデコーダ1812は、エンハンスメントレイヤデコーダ1815およびベースレイヤデコーダ1813を含む。ビデオデコーダ1812は、インタフェース1889および解像度アップスケーリング1870も含む。図7Bのビデオデコーダは、本明細書に記載のように、例えば、スケーラブルビデオ符号化および符号化マルチビュービデオに適する。
インタフェース1889は、符号化ビデオストリーム1885を受信する。符号化ビデオストリーム1885は、ベースレイヤ符号化ビデオストリームと、エンハンスメントレイヤ符号化ビデオストリームとからなる。これらの二つのストリームは、別々または一緒に送信される。インタフェース1889は、符号化ビデオストリーム1885の一部または全部を、ベースレイヤデコーダ1813のエントロピー復号ブロック1886に供給する。エントロピー復号ブロック1886の出力は、復号予測ループ1887に供給される。復号予測ループ1887の出力は、参照バッファ1888に供給される。参照バッファは、復号予測ループ1887にフィードバックする。また、参照バッファ1888は、復号ベースレイヤビデオストリーム1884を出力する。
インタフェース1889は、符号化ビデオストリーム1885の一部または全部を、エンハンスメントレイヤデコーダ1815のエントロピー復号ブロック1890にも供給する。エントロピー復号ブロック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と電子通信する。
プロセッサ817にも、命令813bおよびデータ815bがある。プロセッサ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と電子通信する。
プロセッサ917内にも、命令913bおよびデータ915bがある。プロセッサ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)の復号処理が呼び出される。参照ピクチャセットは、ピクチャに関連する参照ピクチャのセットであって、復号順で対象ピクチャの前の全ての参照ピクチャからなり、対象ピクチャまたは復号順で対象ピクチャに続く任意のピクチャのインター予測に使用できるものである。
‐ビデオのビットストリームは、ネットワーク抽象化レイヤ(NAL)ユニットと一般に呼ばれる論理データパケットに入れられるシンタクス構造を含む。各NALユニットは、関連するデータペイロードの目的を特定するための、2バイト(例えば16ビット)のNALユニットヘッダ等のNALユニットヘッダを含む。例えば、各符号化スライス(および/またはピクチャ)が、一つ以上のスライス(および/またはピクチャ)NALユニットにおいて符号化される。他のカテゴリのデータ、例えば付加拡張情報、時間サブレイヤアクセス(TSA;temporal sub‐layer access)ピクチャの符号化スライス、段階的時間サブレイヤアクセス(STSA;step‐wise temporal sub‐layer access)ピクチャの符号化スライス、非TSA、非STSAトレイリングピクチャの符号化スライス、ブロークンリンクアクセスピクチャの符号化スライス、瞬時復号リフレッシュピクチャの符号化スライス、クリーンランダムアクセスピクチャの符号化スライス、復号可能リーディングピクチャの符号化スライス、廃棄タグ付き(tagged for discard)ピクチャの符号化スライス、ビデオパラメータセット、シーケンスパラメータセット、ピクチャパラメータセット、アクセスユニットデリミタ、エンドオブシーケンス、エンドオブビットストリーム、フィラーデータ、および/またはシーケンスエンハンスメント情報メッセージなどのために、他の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_dec_pic_buffering_minus1[i]、sps_max_num_reorder_pics[i]、およびsps_max_latency_increase_plus1[i]シンタクス要素が、sps_max_sub_layers_minus1+1のサブレイヤにつき存在することを指定する。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]より大きいか等しくなる。sps_max_dec_pic_buffering_minus1[i]が両端値を含めて0からsps_max_sub_layers_minus1−1までの範囲内の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]より大きいか等しくなる。sps_max_num_reorder_pics[i]が両端値を含めて0からsps_max_sub_layers_minus1−1までの範囲内の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から232−2の範囲内にあればよい。sps_max_latency_increase_plus1[i]が両端値を含めて0からsps_max_sub_layers_minus1−1までの範囲内の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]に等しいものと推定される。
表(6)
現ピクチャが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.当該特定のnuh_layer_id値を有するDPBのピクチャの数が、(当該特定のnuh_layer_id値が0に等しいときには)アクティブシーケンスパラメータセットからの、または当該特定のnuh_layer_id値のアクティブレイヤシーケンスパラメータセットからのsps_max_dec_pic_buffering[HighestTid]+1以上である。
ブロック1206のピクチャ復号処理(ピクチャ復号およびマーキング)は、現ピクチャを含むアクセスユニットの最後の復号ユニットがCPBから引き抜かれるときに、瞬時に起こる。
「出力のために必要」とマークされた、現ピクチャのnuh_layer_id値に等しいnuh_layer_idを有するDPBの各ピクチャにつき、関連する変数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値のアクティブレイヤシーケンスパラメータセットに指定された適合クロッピングウィンドウを使用してクロッピングされ、クロッピングされたピクチャが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は二つの次元(すなわち空間および品質)を有する。各次元につき、layer_id_dim_len[i]が、これらの二つの次元の各々に割り当てられるビットの数を定義し、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)フィールドにおける対応するビットを通じて、各スケーラビリティタイプの識別子の実際の値がシグナリングされる。scalability_map[i]が全ての値の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])の数を指定する。dimension_type[i][j]は、図31に指定されるように、layer_idまたはlayer_id_plus1がiに等しいi番目のレイヤのj番目のスケーラビリティ次元タイプを指定する。図21に示すように、特定される次元には、(0)ビュー順序idx;(1)深度フラグ;(2)依存ID;(3)品質ID;(4)〜(15)リザーブドが含まれる。dimension_id[i][j]は、i番目のレイヤのj番目のスケーラビリティ次元タイプの識別子を指定し、存在しないときには0であるものと推定される。num_direct_ref_layers[i]は、i番目のレイヤが直接依存するレイヤ数を指定する。ref_layer_id[i][j]は、i番目のレイヤが直接依存するj番目のレイヤを特定する。残念ながら、図20に示した提案された実施形態の結果、扱いにくい大きなルックアップテーブルが生じる。
図22を参照すると、修正されたビデオパラメータセットの拡張部は、スケーラビリティ次元と組み合わせて使用されるスケーラビリティマスクを含む。scalability_maskは、0および1ビットのパターンをシグナリングし、図23のスケーラビリティマップのシンタクスにより示されるように、各ビットが一つのスケーラビリティ次元に対応する。特定のスケーラビリティ次元についての1の値は、このスケーラビリティ次元がこのレイヤ(i番目のレイヤ)に存在することを示す。特定のスケーラビリティ次元についての0の値は、このスケーラビリティ次元がこのレイヤ(i番目のレイヤ)に存在しないことを示す。例えば、00100000のビットのセットは、品質スケーラビリティを意味する。シグナリングされるscalability_id[j]値により、存在する特定のスケーラビリティ次元の実際の識別子値が示される。num_scalability_types[i]の値は、scalability_maskにおける1の値を有するビットの数の合計に等しい。したがって、
である。scalability_id[j]は、scalability_mask値によりシグナリングされるスケーラビリティタイプ値のj番目のスケーラビリティ次元の識別子値を示す。
図24は図22の修正であり、ループ外でシグナリングされるスケーラビリティマスクを含む。これにより、各レイヤ識別子に一つの共通のマスクが生じる。図25を参照すると、この修正では、対応する例示的ビデオパラメータセットは、スケーラブルIDを含み、スケーラビリティマスクは含まれない。この場合、シンタクス要素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]の値は、scalability_maskにおける1の値を有するビットの数の合計に等しい。したがって、
である。この場合、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の値は、layer_dependency_information_patternの1の値を有するビットの数の合計に等しい。したがって、
である。
図29は図26の修正であり、レイヤ依存情報をシグナリングするためのシンタクスを提供する。新たなシンタクス要素layer_dependency_flag[i]が定義される。layer_dependency_flag[i]は、レイヤが他のレイヤに依存するか否かをシグナリングする。このフラグの0の値は、iのlayer_idを有するレイヤが独立レイヤであることを示す。i番目のビットの1の値は、iのlayer_idを有するレイヤが依存レイヤであることを示す。
図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の値は、layer_dependency_information_patternの1の値を有するビットの数の合計に等しい。したがって、
である。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の値は、layer_dependency_information_patternの1の値を有するビットの数の合計に等しい。したがって、
である。シンタクス要素num_direct_ref_layers[i]およびref_layer_id[i][j]は、layer_dependency_information_pattern(i)が1の値を有するときにのみシグナリングされる。ここでlayer_dependency_information_pattern(i)は、シンタクス要素layer_dependency_patternのi番目のビットである。
図33は図26の修正であり、レイヤ依存情報をシグナリングするためのシンタクスを提供する。図29は、図31のシンタクスに基づく別形のシンタクスである。新たなシンタクス要素layer_dependency_information_patternが定義される。
layer_dependency_information_patternは、vps_max_layers_minus1に等しい長さを有する0および1ビットのパターンをシグナリングする。i番目のビットの0の値は、layer_id(i+1)を有するレイヤが独立レイヤであることを示す。i番目のビットの1の値は、layer_id(i+1)を有するレイヤが他のレイヤの一つ以上に依存する依存レイヤであることを示す。
NumDepLayersの値は、layer_dependency_information_patternの1の値を有するビットの数の合計に等しい。したがって、
である。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)他著、“高効率ビデオ符号化のスケーラブル拡張のテストモデル(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)他著、“高効率ビデオ符号化のスケーラブル拡張のテストモデル(Test Model for Scalable Extensions of High Efficiency Video Coding(HEVC))”、JCTVC‐L0453‐spec‐text、上海、2012年10月;およびハンヌクセラ(Hannuksela)著、“高効率ビデオ符号化のマルチビュー拡張のドラフトテキスト(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のサブレイヤおよび/または出力レイヤセットにつき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]の値は、(サブクローズA4に指定されるように)両端値を含めて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]は、HighestTidがkに等しいときの、jに等しいnuh_layer_idを有するレイヤの、CVSにおける任意のピクチャに出力順で先行し、そのピクチャに復号順で後続することができるピクチャの最大数を指定する、VpsMaxLatencyPictures[j][k]の値を計算するために使用される。
vps_max_latency_increase_plus1[j][k]が0に等しくないとき、VpsMaxLatencyPictures[j][k]の値は、以下のように指定される:
VpsMaxLatencyPictures[j][k]=vps_max_num_reorder_pics[j][k]+vps_max_latency_increase_plus1[j][k]−1
vps_max_latency_increase_plus1[j][k]が0に等しいときには、対応する制限は表現されない。
vps_max_latency_increase_plus1[j][k]の値は、両端値を含めて0から232−2までの範囲内である。vps_max_latency_increase_plus1[j][k]が、両端値を含めて0からvps_max_sub_layers_minus1[j]−1までの範囲内のkにつき存在しないときには、vps_sub_layer_ordering_info_present_flag[j]が0に等しいことにより、vps_max_latency_increase_plus1[j][vps_max_sub_layers_minus1[j]]に等しいものと推定される。
「vps_max_sub_layers_minus1」[id][j]プラス1は、インデックスidに関連するオペレーションポイントのjに等しいnuh_layer_idを有するレイヤにつき、CVSに存在する時間サブレイヤの最大数を指定する。vps_max_sub_layers_minus1[id][j]の値は、両端値を含めて0から6の範囲内にあればよい。
1に等しい「vps_sub_layer_ordering_info_present_flag」[id][j]は、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]が、インデックスidに関連するオペレーションポイントのjに等しいnuh_layer_idを有するレイヤのvps_max_sub_layers_minus1[id][j]+1のサブレイヤにつき存在することを指定する。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に等しいときの、インデックスidに関連するオペレーションポイントのjに等しいnuh_layer_idを有するレイヤの、CVSについての復号ピクチャバッファの最大必要サイズを、ピクチャ格納バッファ単位で指定する。「vps_max_dec_pic_buffering_minus1」[id][j][k]の値は、(サブクローズA4に指定されるように)両端値を含めて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に等しいときの、インデックスidに関連するオペレーションポイントのjに等しいnuh_layer_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]より大きいか等しくなる。vps_max_num_reorder_pics[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_num_reorder_pics[id][j][vps_max_sub_layers_minus1[id][j]]に等しいものと推定される。
0に等しくない「vps_max_latency_increase_plus1」[id][j][k]は、HighestTidがkに等しいときの、インデックスidに関連するオペレーションポイントのjに等しいnuh_layer_idを有するレイヤの、CVSにおける任意のピクチャに出力順で先行し、復号順でそのピクチャに後続することができるピクチャの最大数を指定する、VpsMaxLatencyPictures[id][j][k]の値を計算するために使用される。
vps_max_latency_increase_plus1[id][j][k]が0に等しくないとき、VpsMaxLatencyPictures[id][j][k]の値は以下のように指定される:
VpsMaxLatencyPictures[id][j][k]=vps_max_num_reorder_pics[id][j][k]+vps_max_latency_increase_plus1[id][j][k]−1
vps_max_latency_increase_plus1[id][j][k]が0に等しいときには、対応する制限は表現されない。
vps_max_latency_increase_plus1[id][j][k]の値は、両端値を含めて0から232−2の範囲内にあればよい。vps_max_latency_increase_plus1[id][j][k]が、0からvps_max_sub_layers_minus1[id][j]−1までの範囲内のkにつき存在しないときには、vps_sub_layer_ordering_info_present_flag[id][j]が0に等しいことにより、vps_max_latency_increase_plus1[id][j][vps_max_sub_layers_minus1[id][j]]に等しいものと推定される。
図35Bを参照すると、op_dpb_info_parametersが、図のようにop_dpb_info_parameters(id,j)にさらに修正される。この場合、VPS拡張部のシンタクスは、図34Bに示した通りであってもよい。ビットストリームおよびデコーダの適合性をチェックするために、仮想リファレンスデコーダ(HRD)が使用される。二つのタイプのビットストリームまたはビットストリームサブセットが、ビデオ符号化に関する共同作業チーム(JCT-VC)のHRD適合性チェックの対象となる。TypeIビットストリームと呼ばれる第一のタイプは、ビットストリームの全てのアクセスユニットのVCL NALユニットおよびFD_NUT(フィラーデータNALユニット)に等しいnal_unit_typeを有するNALユニットのみを含むNALユニットストリームである。TypeIIビットストリームと呼ばれる第二のタイプは、ビットストリームの全てのアクセスユニットのVCL NALユニットおよびフィラーデータNALユニットに加えて、(a)フィラーデータNALユニット以外の追加の非VCL NALユニット、および(b)NALユニットストリームからバイトストリームを形成する全てのleading_zero_8bits、zero_byte、start_code_prefix_one_3bytes、およびtrailing_zero_8bitsシンタクス要素のうちの少なくとも一つを含む。
HRDに必要な非VCL NALユニットのシンタクス要素(または一部のシンタクス要素についてはそのデフォルト値)は、クローズ7のセマンティックサブクローズ、付属書DおよびEに指定される。
二つのタイプのHRDパラメータセット(NAL HRDパラメータおよびVCL HRDパラメータ)が使用される。HRDパラメータセットは、SPSシンタクス構造またはVPSシンタクス構造の一部であってもよいhrd_parameters()シンタクス構造を通じてシグナリングされる。
テスト対象ビットストリームと呼ばれるビットストリームの適合性をチェックするために、複数のテストが必要とされる。各テストで、以下のステップがリストされた順序で適用される:
(1)TargetOpとして表されるテスト対象オペレーションポイントが選択される。TargetOpのレイヤ識別子リストOpLayerIdListは、テスト対象ビットストリームに存在するnuh_layer_id値のサブセットである、TargetOpに関連するビットストリームサブセットに存在する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は、テスト対象ビットストリームに存在するnuh_layer_id値のサブセットである、TargetOpおよびTargetOpLsに関連するビットストリームサブセットに存在する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メッセージが、ビットストリームにおいて(非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は、ビットレートおよびCPBサイズが指定のプロファイル、階層およびレベルにつき付属書Aに指定されるように制限されたSchedSelIdxの値のサブセットからのみ選択される配信スケジュールを用いて、または以下に指定されるビットレートおよびCPBサイズが付属書Aに指定されるように制限された「補間された」配信スケジュールを用いて上述のように動作する。HRDおよびDUTの両方に同じ配信スケジュールが使用される。
HRDパラメータおよびバッファリング期間SEIメッセージが、0より大きいcpb_cnt_minus1[HighestTid]とともにが存在するとき、デコーダは、以下のようなピークビットレートr、CPBサイズc(r)、および初期CPB引き抜き遅延
を有するものとして指定された「補間された」配信スケジュールを用いて動作するHSSから配信されるビットストリームを復号することができるようにすることが可能である。
どのSchedSelIdxも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_max_layer_idは、CVSの全てのNALユニットのnuh_layer_idの最大許容値を指定する。vps_max_layers_minus1は、CVSに存在するレイヤの最大数を指定し、レイヤは、例えば空間スケーラブルレイヤ、品質スケーラブルレイヤ、テクスチャビューまたは深度ビューであってもよい。
表中、選択された出力レイヤセットインデックスoplsIdxのnumOutputLayersは、次のように導出される:
表中、選択されたoplsIdxのnumOutputLayersは、次のように導出される:
そして、選択されたoplsIdxの対象復号レイヤ識別子リストtargetDLayerIdListおよびnumDecodedLayersが、次のように導出される:
一実施形態では、次のように、特定のレイヤにつきoop_dpb_information_parametersがシグナリングされるか否かを示すために追加のフラグがシグナリングされる:
1に等しいvps_layer_info_present_flag[j]は、oop_dpb_info_parametersが特定の出力レイヤセットのj番目のレイヤにつき存在することを指定する。0に等しいvps_layer_info_present_flag[j]は、oop_dpb_info_parametersが特定の出力レイヤセットのj番目のレイヤにつき存在しないことを指定する。
別の実施形態において、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および図46を参照すると、スケーラブル高効率コーディング(「SVHC:scalable high efficiency coding」)で符号化をするとき、ベースレイヤは一つ以上のSPSを含むことができ、また、一つ以上のPPSも含むことができる。同様に、各エンハンスメントレイヤは、一つ以上のSPSを含むことができ、一つ以上のPPSも含むことができる。図46において、SPS+は、特定のベースまたはエンハンスメントレイヤに対しシグナリングされる、一つ以上のSPSを示し、PPS+は一つ以上のPPSを示す。このように、ベースレイヤおよび一つ以上のエンハンスメントレイヤの両方を有するビデオビットストリームに対する、SPSおよびPPSデータセットの総数はかかるデータを送信するため必要な帯域幅とともに大きくなり、多くの用途において制限を受ける傾向がある。かかる帯域幅の制限に伴い、SPSおよび/またはPPSの一つの中のデータの一部をSPSおよび/またはPPSの別の一つにコピーすることが望まれる。このようにして、より少ないデータを送信する必要がある。望ましくは、一つのレイヤであるレイヤAのSPSおよび/またはPPSの一つの中のデータが、別のレイヤであるレイヤBのSPSおよび/またはPPSの別の一つにコピーされ、レイヤAはレイヤBの参照レイヤとして使われる。さらに、SPSおよび/またはPPSの一つからのデータの全てを別のSPSおよび/またはPPSにコピーするのは望ましくないが、選択されたデータ、すなわちスケーリングリストデータをコピーするのはむしろ望ましい。
図47を参照すると、スケーリングリストデータについての例示的なシンタクスが示されている。このスケーリングデータは、例えば、ビデオデータの変換係数をスケーリングするなど、ビデオをスケーリングするために用いることができる。
現レイヤのSPSおよび/またはPPSのために望まれる情報を得るために行う、別の対応するレイヤの特定のSPSおよび/またはPPSに対するシグナリングは、効率的方法でシグナリングする必要がある。例えば、所望のSPSおよび/またはPPSデータは、別のエンハンスメントレイヤまたは当該ベースレイヤから得ることが可能である。さらに、固定長コーディング(「u(v)」)または可変長コーディング(「ue(v)」)を用いて他のエンハンスメントレイヤまたはベースレイヤをシグナリングするのが望ましいであろう。
スケーリングリストデータを得るためにSPSおよび/またはPPSがシグナリングされるべきシグナリングの一つの効率的方法は、特定の現レイヤに対する参照レイヤの使用に基づくものとすることができる。例えば、現在の参照レイヤは、5のレイヤ識別子を有してよく、現在の参照レイヤによって用いられる参照レイヤには、参照レイヤ0、参照レイヤ2、および参照レイヤ3が使われてよく、これらは[0、2、3]の順序付きリストとして参照することができる。所望のSPSおよび/またはPPSのレイヤには、現レイヤに対する特定の参照レイヤの識別子を使い、順序付けされた順番にシグナリングすればよい。第一レイヤ「0」はインデックス「0」を有するレイヤであり、第二レイヤ「2」はインデックス「1」を有するレイヤであり、そして第三レイヤ「3」はインデックス「2」を有するレイヤである。このように、例えば、スケーリングリストデータを得るための所望のレイヤ「2」にシグナリングするには、順序付きリストからの選択として「1」によってシグナリングすることができる。こうして、レイヤ2のSPSおよび/またはPPSからのスケーリングリストまたは他のデータは、コピーされるかまたは別途に現在のSPSおよび/またはPPSに利用可能にされる。
図48および図49を参照すると、特定の現レイヤのために参照レイヤを使うこの技法は、以下のようにシグナリングすることが可能である。すなわち、シンタクス要素scaling_list_sps_pred_layer_idc/scaling_list_pps_pred_layer_idcが、現在のSPS/PPSに対するscaling_list_data()を得るために、RefLayerId[nuh_layer_id][scaling_list_sps_pred_layer_idc/scaling_list_sps_pred_layer_idc]に等しいnuh_layer_idを有する参照レイヤのアクティブなSPS/PPSが使用されるよう指定する。こうして、このシンタクス要素は、現レイヤのRefLayerIdリストの中へのインデックスを提供し、そのインデックスのSPS/PPSからスケーリングリストがコピーされる。
1に等しいscaling_list_enabled_flagは、変換係数に対するスケーリング処理のためスケーリングリストを使用するよう指定する。0に等しいscaling_list_enabled_flagは、変換係数に対するスケーリング処理のためスケーリングリストを使用しないよう指定する。
1に等しいsps_scaling_list_data_present_flagは、スケーリングリストデータがSPS中に存在することを指定する。0に等しいsps_scaling_list_data_present_flagは、SPS中にスケーリングリストデータが存在しないことを指定する。存在しないときは、sps_scaling_list_data_present_flagは0に等しいと推定される。scaling_list_enabled_flagが1に等しく且つsps_scaling_list_data_present_flagが0に等しいとき、HVEC規格に規定されるセマンティクス7.4.5中に規定されたスケーリングリストデータセマンティクスに記載されているアレイScalingFactorを導出するために、デフォルトのスケーリングリストデータが用いられる。
sps_scaling_list_data_present_flagが1に等しい場合、sps_base_pred_scaling_list_flagがシグナリングされる。1に等しいsps_base_pred_scaling_list_flagは、スケーリングリストデータが参照レイヤのシーケンスパラメータセット中のスケーリングリストデータから推定されていることを指定する。0に等しいsps_base_pred_scaling_list_flagは、スケーリングリストデータが当該シーケンスパラメータセット中に存在することを指定する。この値は、参照レイヤがベースレイヤであり且つvps_extension()中の値avc_base_layer_flagが1である場合は0である。上記データが存在しないときにはこの値は0であると推定される。
scaling_list_sps_pred_layer_idcは、現在のSPSに対するscaling_list_data()を得るために、RefLayerId[nuh_layer_id][scaling_list_sps_pred_layer_idc]に等しいnuh_layer_idを有する参照レイヤのアクティブなSPSが使用されるよう指定する。scaling_list_sps_pred_layer_idcの長さは、Ceil(Log2(NumDirectRefLayers[nuh_layer_id])ビットである。scaling_list_sps_pred_layer_idcは、両端値を含め0からNumDirectRefLayers[nuh_layer_id]−1の範囲内にあればよい。
別の実施形態では、scaling_list_sps_pred_layer_idcの長さは、Ceil(Log2(NumDirectRefLayers[LayerIdInVps[nuh_layer_id]])ビットである。scaling_list_sps_pred_layer_idcは、両端値を含め0からNumDirectRefLayers[LayerIdInVps[nuh_layer_id]]−1の範囲内にあればよい。
1に等しいpps_scaling_list_data_present_flagは、アクティブなSPSにおいて指定されたスケーリングリストを修正するためのパラメータがPPS中に存在することを指定する。0に等しいpps_scaling_list_data_present_flagは、PPSを参照するピクチャに対し使われるスケーリングリストが、アクティブなSPSによって指定されたものに等しいと推定されていることを指定する。scaling_list_enabled_flagが0に等しいとき、pps_scaling_list_data_present_flagの値は0に等しい。scaling_list_enabled_flagが1に等しく、sps_scaling_list_data_present_flagが0に等しく、且つpps_scaling_list_data_present_flagの値が0に等しいとき、HVEC規格に規定されたスケーリングリストデータセマンティクス7.4.5中に記載されているアレイScalingFactorを導出するために、デフォルトのスケーリングリストデータが用いられる。
pps_scaling_list_data_present_flagが1に等しい場合、pps_base_pred_scaling_list_flagがシグナリングされる。1に等しいpps_base_pred_scaling_list_flagは、スケーリングリストデータが参照レイヤのピクチャパラメータセット中のスケーリングリストデータから推定されていることを指定する。0に等しいpps_base_pred_scaling_list_flagは、スケーリングリストデータが当該シーケンスパラメータセット中に存在することを指定する。この値は、参照レイヤがベースレイヤであり且つvps_extension()中のavc_base_layer_flagの値が1である場合は0である。上記データが存在しないときにはこの値は0であると推定される。
scaling_list_pps_pred_layer_idcは、現在のPPSに対するscaling_list_data()を得るために、RefLayerId[nuh_layer_id][scaling_list_pps_pred_layer_idc]に等しいnuh_layer_idを有する参照レイヤのアクティブなPPSが使用されるよう指定する。scaling_list_sps_pred_layer_idcの長さは、Ceil(Log2(NumDirectRefLayers[nuh_layer_id])ビットである。scaling_list_sps_pred_layer_idcは、両端値を含め0からNumDirectRefLayers[nuh_layer_id]−1の範囲内である。別の実施形態では、scaling_list_sps_pred_layer_idcの長さは、Ceil(Log2(NumDirectRefLayers[LayerIdInVps[nuh_layer_id]])ビットである。scaling_list_sps_pred_layer_idcは、両端値を含め0からNumDirectRefLayers[LayerIdInVps[nuh_layer_id]]−1の範囲内である。
SPSおよび/またはPPSがシグナリングされるべきシグナリングの別の効率的方法は、特定の現レイヤに対する参照レイヤのリスト中におけるデルタ値に基づくものとすることができる。例えば、現在の参照レイヤが5のレイヤ識別子を有してよく、直接の参照レイヤの数が3であってよく、現在の参照レイヤによって用いられる参照レイヤには、参照レイヤ0、参照レイヤ2、および参照レイヤ3が使われてよく、これらは[0、2、3]の順序付きリストとして参照することができる。SPSおよび/またはPPSの所望のレイヤには、特定のレイヤのデルタ値インデックス識別子を使い、順序付けされた順番にシグナリングすればよい。第一レイヤ「0」はインデックス「0」を有するレイヤであり、第二レイヤ「2」はインデックス「1」を有するレイヤであり、そして第三レイヤ「3」はインデックス「2」を有するレイヤである。こうすれば、例えば、スケーリングリストデータを得るための所望のレイヤ「3」は「0」によりシグナリングすることができ、この「0」は、順序付きリストからの選択として、3(直接の参照レイヤの数)マイナス(0ベースのインデキシングに対する)1でマイナス2(リスト中のインデックス番号3)に等しい。このようにして、レイヤ3のSPSおよび/またはPPSのスケーリングリストまたは他のデータはコピーされ、または別途に現在のSPSおよび/またはPPSに対し利用可能にされる。
図50および図51を参照すると、特定の現レイヤのために参照レイヤを用いるこの技法は、以下のようにシグナリングすることができる。すなわち、シンタクス要素scaling_list_sps_pred_layer_idx_delta/scaling_list_pps_pred_layer_idx_deltaは、現在のSPS/PPSに対するscaling_list_data()を得るために、RefLayerId[nuh_layer_id][NumDirectRefLayers[nuh_layer_id]−scaling_list_sps_pred_layer_idx_delta/scaling_list_pps_pred_layer_idx_delta−1]に等しいnuh_layer_idを有する参照レイヤのアクティブなSPS/PPSが使用されるよう指定する。別の実施形態では、シンタクス要素scaling_list_sps_pred_layer_idx_delta/scaling_list_pps_pred_layer_idx_deltaは、現在のSPS/PPSに対するscaling_list_data()を得るために、RefLayerId[nuh_layer_id][NumDirectRefLayers[LayerIdInVps[nuh_layer_id]]−scaling_list_sps_pred_layer_idx_delta/scaling_list_pps_pred_layer_idx_delta−1]に等しいnuh_layer_idを有する参照レイヤのアクティブなSPS/PPSが使用されるよう指定する。このように、これらのシンタクス要素は、SPS/PPSからスケーリングリストデータをコピーする対象の、現レイヤのRefLayerIdリスト中へのインデックスを得るために、現レイヤのインデックスから差し引かれるデルタ値を提供する。
1に等しいscaling_list_enabled_flagは、変換係数のスケーリング処理にスケーリングリストが使用されるよう指定する。0に等しいscaling_list_enabled_flagは、変換係数のスケーリング処理にスケーリングリストが使用されないよう指定する。
1に等しいsps_scaling_list_data_present_flagは、スケーリングリストデータがSPS中に存在することを指定する。0に等しいsps_scaling_list_data_present_flagは、スケーリングリストデータがSPS中に存在しないことを指定する。存在しないときは、sps_scaling_list_data_present_flagの値は0に等しいと推定される。scaling_list_enabled_flagが1に等しく且つsps_scaling_list_data_present_flagが0に等しいとき、HVEC規格に規定されるセマンティクス7.4.5中に規定されたスケーリングリストデータセマンティクスに記載されているアレイScalingFactorを導出するために、デフォルトのスケーリングリストデータが用いられる。
sps_scaling_list_data_present_flagが1に等しい場合、sps_base_pred_scaling_list_flagがシグナリングされる。1に等しいsps_base_pred_scaling_list_flagは、スケーリングリストデータが参照レイヤのシーケンスパラメータセット中のスケーリングリストデータから推定されていることを指定する。0に等しいsps_base_pred_scaling_list_flagは、スケーリングリストデータが当該シーケンスパラメータセット中に存在することを指定する。この値は、参照レイヤがベースレイヤであり且つvps_extension()中の値avc_base_layer_flagが1である場合は0である。上記データが存在しないときにはこの値は0であると推定される。
scaling_list_sps_pred_layer_idx_deltaは、現在のSPSに対するscaling_list_data()を得るために、RefLayerId[nuh_layer_id][NumDirectRefLayers[nuh_layer_id]−scaling_list_sps_pred_layer_idc−1]に等しいnuh_layer_idを有する参照レイヤのアクティブなSPSが使用されるよう指定する。scaling_list_sps_pred_layer_idx_deltaは、両端値を含め0からNumDirectRefLayers[nuh_layer_id]−1の範囲内にある。
別の実施形態では、scaling_list_sps_pred_layer_idx_deltaは、現在のSPSに対するscaling_list_data()を得るために、RefLayerId[nuh_layer_id][NumDirectRefLayers[LayerIdInVps[nuh_layer_id]]−scaling_list_sps_pred_layer_idc−1]に等しいnuh_layer_idを有する参照レイヤのアクティブなSPSが使用されるよう指定する。scaling_list_sps_pred_layer_idx_deltaは、両端値を含め0からNumDirectRefLayers[LayerIdInVps[nuh_layer_id]]−1の範囲内にある。
なお、必要な場合、scaling_list_sps_pred_layer_idxは、ue(v)の代わりにu(v)として符号化することもできる。このとき、scaling_list_sps_pred_layer_idx_deltaの長さは、Ceil(Log2(NumDirectRefLayers[nuh_layer_id])ビットである。また、必要な場合、scaling_list_sps_pred_layer_idx_deltaは、両端値を含め0からNumDirectRefLayers[nuh_layer_id]−1の範囲内とすればよい。
別の実施形態では、scaling_list_sps_pred_layer_idx_deltaの長さは、Ceil(Log2(NumDirectRefLayers[LayerIdInVps[nuh_layer_id]])ビットである。また、必要な場合、scaling_list_sps_pred_layer_idx_deltaは、両端値を含め0からNumDirectRefLayers[LayerIdInVps[nuh_layer_id]]−1の範囲内とすればよい。
1に等しいpps_scaling_list_data_present_flagは、アクティブなSPS中に指定されたスケーリングリストを修正するためのパラメータがPPS中に存在することを指定する。0に等しいpps_scaling_list_data_present_flagは、ピクチャがPPSを参照するために用いられるスケーリングリストが、アクティブなSPSによって指定されたものと等しいと推定されていること指定する。scaling_list_enabled_flagが0に等しいとき、pps_scaling_list_data_present_flagの値は0に等しければよい。scaling_list_enabled_flagが1に等しく、sps_scaling_list_data_present_flagは0に等しく、且つpps_scaling_list_data_present_flagが0に等しいとき、HVEC規格に規定されるセマンティクス7.4.5中に規定されたスケーリングリストデータセマンティクスに記載されているアレイScalingFactorを導出するために、デフォルトのスケーリングリストデータが用いられる。
pps_scaling_list_data_present_flagが1に等しい場合、pps_base_pred_scaling_list_flagがシグナリングされる。1に等しいpps_base_pred_scaling_list_flagは、スケーリングリストデータが参照レイヤのピクチャパラメータセット中のスケーリングリストデータから推定されていることを指定する。0に等しいpps_base_pred_scaling_list_flagは、スケーリングリストデータが当該シーケンスパラメータセット中に存在することを指定する。この値は、参照レイヤがベースレイヤであり且つvps_extension()中のavc_base_layer_flagの値が1の場合0であればよい。上記データが存在しないとき、この値は0であると推定される。
scaling_list_pps_pred_layer_idx_deltaは、現在のPPSに対するscaling_list_data()を得るために、RefLayerId[nuh_layer_id][NumDirectRefLayers[nuh_layer_id]−scaling_list_pps_pred_layer_idc−1]に等しいnuh_layer_idを有する参照レイヤのアクティブなPPSが使用されるよう指定する。scaling_list_pps_pred_layer_idx_deltaは、両端値を含め0からNumDirectRefLayers[nuh_layer_id]−1の範囲内にあればよい。別の実施形態では、scaling_list_pps_pred_layer_idx_deltaは、現在のPPSに対するscaling_list_data()を得るために、RefLayerId[nuh_layer_id][NumDirectRefLayers[LayerIdInVps[nuh_layer_id]]−scaling_list_pps_pred_layer_idc−1]に等しいnuh_layer_idを有する参照レイヤのアクティブなPPSが使用されるよう指定する。scaling_list_pps_pred_layer_idx_deltaは、両端値を含め0からNumDirectRefLayers[LayerIdInVps[nuh_layer_id]]−1の範囲内にあればよい。
なお、必要な場合、scaling_list_pps_pred_layer_idxは、ue(v)の代わりにu(v)として符号化することもできる。このとき、scaling_list_pps_pred_layer_idx_deltaの長さは、Ceil(Log2(NumDirectRefLayers[nuh_layer_id])ビットである。また、必要な場合、scaling_list_pps_pred_layer_idx_deltaは、両端値を含め0からNumDirectRefLayers[nuh_layer_id]−1の範囲内とすればよい。別の実施形態では、scaling_list_pps_pred_layer_idx_deltaの長さは、Ceil(Log2(NumDirectRefLayers[LayerIdInVps[nuh_layer_id]])ビットである。これも同様に、必要な場合、scaling_list_pps_pred_layer_idx_deltaは、両端値を含め0からNumDirectRefLayers[LayerIdInVps[nuh_layer_id]]−1の範囲内とすればよい。
SPSおよび/またはPPSがシグナリングされるべきシグナリングの別の効率的方法は、特定の現レイヤに対するレイヤインデックス値のデルタ値インデックスに基づくものとすることができる。そうすれば、別のレイヤのSPSおよび/またはPPSからスケーリングリストまたは他のデータを得るために、現レイヤに対する直接参照レイヤのリストを確認する必要はない。例えば、現在の参照レイヤは、4のレイヤ識別子を有してよい。デルタ値識別子を用いて、SPSおよび/またはPPSの所望のレイヤにシグナリングすることができる。このように、例えば、レイヤ識別子(nuh_layer_id)「1」を有する所望のレイヤは「2」によってシグナリングすることができ、これは、4(現在の参照レイヤの識別子)マイナス(0ベースのインデキシングに対し)1マイナス2(所望のレイヤの値)が得られ、かくしてスケーリングリストおよび他のデータの入手先のレイヤのレイヤ識別子として1に到達する。これにより、レイヤ識別子1を有するレイヤのSPSおよび/またはPPSがコピーされ、または別途に現在のSPSおよび/またはPPSに利用可能にされる。一実施形態では、このレイヤ識別子は、HEVCおよびSHVCおよびMV−HEVC規格のNALユニットヘッダ中でシグナリングされるnuh_layer_id値であってよい。
図52および図53を参照すると、特定の現レイヤに対し参照レイヤを用いるこの技法は、以下のようにシグナリングすることができる:すなわち、シンタクス要素scaling_list_sps_delta_ref_layer_id_minus1/scaling_list_pps_delta_ref_layer_id_minus1+1は、nuh_layer_idの値と、現在のSPS/PPSのためのscaling_list_data()を得るために用いられるアクティブなSPS/PPSを有する参照レイヤのnuh_layer_idの値との差を指定する。このように、このシンタクス要素は、SPS/PPSからスケーリングリストデータをコピーする対象の、レイヤのnuh_layer_idを得るため、現レイヤのnuh_layer_id値から差し引かれるデルタ値を提供する。
1に等しいscaling_list_enabled_flagは、変換係数に対するスケーリング処理のためにスケーリングリストが使われるよう指定する。0に等しいscaling_list_enabled_flagは、変換係数に対するスケーリング処理のためにスケーリングリストが使われないよう指定する。
1に等しいsps_scaling_list_data_present_flagは、スケーリングリストデータがSPS中に存在することを指定する。0に等しいsps_scaling_list_data_present_flagは、スケーリングリストデータがSPS中に存在しないことを指定する。存在しないとき、sps_scaling_list_data_present_flagの値は0に等しいと推定される。scaling_list_enabled_flagが1に等しく且つsps_scaling_list_data_present_flagが0に等しいとき、HVEC規格に規定されるセマンティクス7.4.5中に規定されたスケーリングリストデータセマンティクスに記載されているアレイScalingFactorを導出するために、デフォルトのスケーリングリストデータが用いられる。
sps_scaling_list_data_present_flagが1に等しい場合、sps_base_pred_scaling_list_flagがシグナリングされる。1に等しいsps_base_pred_scaling_list_flagは、スケーリングリストデータが参照レイヤのシーケンスパラメータセット中のスケーリングリストデータから推定されていることを指定する。0に等しいsps_base_pred_scaling_list_flagは、スケーリングリストデータが当該シーケンスパラメータセット中に存在することを指定する。この値は、参照レイヤがベースレイヤであり、vps_extension()中の値avc_base_layer_flagが1の場合0であればよい。上記データが存在しないとき、この値は0であると推定される。
scaling_list_sps_delta_ref_layer_id_minus1+1は、nuh_layer_idの値と、現在のSPSのためのscaling_list_data()を得るために用いられるアクティブなSPSを有する参照レイヤのnuh_layer_idの値との差を指定する。scaling_list_sps_delta_ref_layer_id_minus1は、両端値を含めて0からnuh_layer_id−1の範囲にあればよい、
必要な場合、scaling_list_sps_delta_ref_layer_id_minus1は、ue(v)の代わりにu(v)として符号化することもできる。
1に等しいpps_scaling_list_data_present_flagは、アクティブなSPS中で指定されたスケーリングリストを修正するためのパラメータがPPS中に存在することを指定する。0に等しいpps_scaling_list_data_present_flagは、PPSを参照するピクチャに対して用いられるスケーリングリストがアクティブSPSによって指定されたものに等しいと推定されていることを指定する。scaling_list_enabled_flagが0に等しいとき、pps_scaling_list_data_present_flagの値は0であればよい。scaling_list_enabled_flagが1に等しく、sps_scaling_list_data_present_flagが0に等しく、且つpps_scaling_list_data_present_flagが0に等しいとき、HVEC規格に規定されるスケーリングリストデータセマンティクス7.4.5に記載されているアレイScalingFactorを導出するために、デフォルトのスケーリングリストデータが用いられる。
pps_scaling_list_data_present_flagが1に等しい場合、pps_base_pred_scaling_list_flagがシグナリングされる。1に等しいpps_base_pred_scaling_list_flagは、スケーリングリストデータが、参照レイヤのピクチャパラメータセット中のスケーリングリストデータから推定されていることを指定する。0に等しいpps_base_pred_scaling_list_flagは、スケーリングリストデータが当該シーケンスパラメータセット中に存在することを指定する。この値は、参照レイヤがベースレイヤであり且つavc_base_layer_flag in vps_extension()が1の場合0であればよい。上記データが存在しないとき、この値は0であると推定される。
scaling_list_pps_delta_ref_layer_id_minus1+1は、nuh_layer_idの値と、現在のPPSのためのscaling_list_data()を得るために用いられるアクティブなPPSを有する参照レイヤのnuh_layer_idの値との差を指定する。scaling_list_pps_delta_ref_layer_id_minus1は、両端値を含めて0からnuh_layer_id−1の範囲にあればよい、
必要な場合、scaling_list_sps_delta_ref_layer_id_minus1は、ue(v)の代わりにu(v)として符号化することもできる。
スケーラブルビデオコーディング内で、各レイヤは、利用可能な複数のSPSおよび/またはPPSの選択肢を有することができる。これにより、ピクチャおよび/またはビデオストリーム内の異なる箇所で異なったSPSおよび/またはPPSを選択し、またはアクティブ化することが可能で、これは、一般に、特定のビデオストリームおよび/またはピクチャに対し、それぞれ、アクティブSPSおよび/またはPPSと言われる。特定のベースレイヤおよび/またはエンハンスメントレイヤに対し、ある特定の時間に一つだけのSPSおよび/またはPPSをアクティブ化することが可能である。残念ながら、データをコピーしたい所望のSPSおよび/またはPPSが非アクティブ化され、別の所望でないSPSおよび/またはPPSがアクティブ化されることがあり、不適切なデータデータの取得に終わることがある。
所望でないSPSおよび/またはPPSを取得する能力を避けるシンタクスルールを含めることが望ましい。これが行われるのを確実にする一つのやり方は、一つのレイヤでSPSおよび/またはPPSが非アクティブ化された場合、システムが現レイヤ中のSPSおよび/またはPPSを非アクティブ化することである。これが行われるのを確実にする別のやり方は、現レイヤ中でSPSおよび/またはPPSがアクティブ化されており、対応するフラグが1の場合、SPSおよび/またはPPS中に直接利用可能な必要データを有する別のレイヤから、そのSPSおよび/またはPPSをコピーすることである。
所望でないSPSおよび/またはPPSを取得する能力を避けるシンタクスルールを実装する一つのやり方は、以下のようにすることができる。すなわち、SPSアクティブ化に対し、例えば、nuhLayerIdAに等しいnuh_layer_idを有するSPS RBSPが、nuhLayerIdBに等しいnuh_layer_idを有するレイヤに対してアクティブ化され、SPS RBSP中に、scaling_list_sps_pred_layer_idx_delta/scaling_list_sps_pred_layer_idx_delta/scaling_list_sps_delta_ref_layer_id_minus1が存在するとき、RefLayerId[nuhLayerIdB][scaling_list_sps_pred_layer_idc]/RefLayerId[nuhLayerIdB][NumDirectRefLayers[nuhLayerIdB]−scaling_list_sps_pred_layer_idc−1]/nuhLayerIdB−(scaling_list_delta_ref_layer_id_minus1+1)に等しいnuh_layer_idを有するレイヤに対するscaling_list_data()の値は、nuhLayerIdBに等しいnuh_layer_idを有するレイヤに対して有効であると見なすことができる。
SPSアクティブ化についての別の実施形態では、例えば、nuhLayerIdAに等しいnuh_layer_idを有するSPS RBSPが、nuhLayerIdBに等しいnuh_layer_idを有するレイヤに対してアクティブ化され、SPS RBSP中に、scaling_list_sps_pred_layer_idx_delta/scaling_list_sps_pred_layer_idx_delta/scaling_list_sps_delta_ref_layer_id_minus1が存在するとき、RefLayerId[nuhLayerIdB][scaling_list_sps_pred_layer_idc]/RefLayerId[nuhLayerIdB][NumDirectRefLayers[LayerIdInVps[nuhLayerIdB]]−scaling_list_sps_pred_layer_idc−1]/nuhLayerIdB−(scaling_list_delta_ref_layer_id_minus1+1)に等しいnuh_layer_idを有するレイヤに対するscaling_list_data()の値は、nuhLayerIdBに等しいnuh_layer_idを有するレイヤに対して有効であると見なすことができる。
SPSアクティブ化に対し、例えば、nuhLayerIdAに等しいnuh_layer_idを有するSPS RBSPが、nuhLayerIdBに等しいnuh_layer_idを有するレイヤに対してアクティブであり、SPS RBSP中に、scaling_list_sps_pred_layer_idx_delta/scaling_list_sps_pred_layer_idx_delta/scaling_list_sps_delta_ref_layer_id_minus1が存在し、且つRefLayerId[nuhLayerIdB][scaling_list_sps_pred_layer_idc]/RefLayerId[nuhLayerIdB][NumDirectRefLayers[nuhLayerIdB]−scaling_list_sps_pred_layer_idc−1]/nuhLayerIdB−(scaling_list_sps_delta_ref_layer_id_minus1+1)に等しいnuh_layer_idを有するレイヤに対しアクティブなSPS RBSPが非アクティブ化されるとき、nuhLayerIdBに等しいnuh_layer_idを有するレイヤに対しアクティブな該SPS RBSPは、そのレイヤに対し別のSPS RBSPをアクティブ化することによって非アクティブ化することができる。
SPSアクティブ化についての別の実施形態では、例えば、nuhLayerIdAに等しいnuh_layer_idを有するSPS RBSPが、nuhLayerIdBに等しいnuh_layer_idを有するレイヤに対してアクティブであり、SPS RBSP中に、scaling_list_sps_pred_layer_idx_delta/scaling_list_sps_pred_layer_idx_delta/scaling_list__sps_delta_ref_layer_id_minus1が存在し、且つRefLayerId[nuhLayerIdB][scaling_list_sps_pred_layer_idc]/RefLayerId[nuhLayerIdB][NumDirectRefLayers[LayerIdInVps[nuhLayerIdB]−scaling_list_sps_pred_layer_idc−1]/nuhLayerIdB−(scaling_list_sps_delta_ref_layer_id_minus1+1)に等しいnuh_layer_idを有するレイヤに対しアクティブなSPS RBSPが非アクティブ化されるとき、nuhLayerIdBに等しいnuh_layer_idを有するレイヤに対しアクティブな該SPS RBSPは、そのレイヤに対し別のSPS RBSPをアクティブ化することによって非アクティブ化することができる。
PPSアクティブ化に対し、例えば、nuhLayerIdAに等しいnuh_layer_idを有するPPS RBSPが、nuhLayerIdBに等しいnuh_layer_idを有するレイヤに対してアクティブ化され、且つPPS RBSP中に、scaling_list_pps_pred_layer_idx_delta/scaling_list_pps_pred_layer_idx_delta/scaling_list_pps_delta_ref_layer_id_minus1が存在するとき、RefLayerId[nuh−LayerIdB][scaling_list_pps_pred_layer_idc]/RefLayerId[nuhLayerIdB][NumDirectRefLayers[nuhLayerIdB]−scaling_list_pps_pred_layer_idc−1]/nuhLayerIdB−(scaling_list_pps_delta_ref_layer_id_minus1−+1)に等しいnuh_layer_idを有するレイヤに対するscaling_list_data()の値は、nuhLayerIdBに等しいnuh_layer_idを有するレイヤに対して有効であると見なすことができる。
PPSアクティブ化についての別の実施形態では、例えば、nuhLayerIdAに等しいnuh_layer_idを有するPPS RBSPが、nuhLayerIdBに等しいnuh_layer_idを有するレイヤに対してアクティブ化され、PPS RBSP中に、scaling_list_pps_pred_layer_idx_delta/scaling_list_pps_pred_layer_idx_delta/scaling_list_pps_delta_ref_layer_id_minus1が存在するとき、RefLayerId[nuhLayerIdB][scaling_list_pps_pred_layer_idc]/RefLayerId[nuhLayerIdB][NumDirectRefLayers[LayerIdInVps[nuhLayerIdB]]−scaling_list_pps_pred_layer_idc−1]/nuhLayerIdB−(scaling_list_pps_delta_ref_layer_id_minus1−+1)に等しいnuh_layer_idを有するレイヤに対するscaling_list_data()の値は、nuhLayerIdBに等しいnuh_layer_idを有するレイヤに対して有効であると見なすことができる。
PPSアクティブ化に対し、例えば、nuhLayerIdAに等しいnuh_layer_idを有するPPS RBSPが、nuhLayerIdBに等しいnuh_layer_idを有するレイヤに対してアクティブであり、SPS RBSP中に、scaling_list_pps_pred_layer_idx_delta/scaling_list_pps_pred_layer_idx_delta/scaling_list_pps_delta_ref_layer_id_minus1が存在し、且つRefLayerId[nuhLayerIdB][scaling_list_pps_pred_layer_idc]/RefLayerId[nuhLayerIdB][NumDirectRefLayers[nuhLayerIdB]−scaling_list_pps_pred_layer_idc−1]/nuhLayerIdB−(scaling_list_pps_delta_ref_layer_id_minus1+1)に等しいnuh_layer_idを有するレイヤに対しアクティブなSPS RBSPが非アクティブ化されるとき、nuhLayerIdBに等しいnuh_layer_idを有するレイヤに対しアクティブな該SPS RBSPは、そのレイヤに対する別のSPS RBSPをアクティブ化することによって非アクティブ化することができる。
PPSアクティブ化に対する別の実施形態では、例えば、nuhLayerIdAに等しいnuh_layer_idを有するPPS RBSPが、nuhLayerIdBに等しいnuh_layer_idを有するレイヤに対してアクティブであり、SPS RBSP中に、scaling_list_pps_pred_layer_idx_delta/scaling_list_pps_pred_layer_idx_delta/scaling_list_pps_delta_ref_layer_id_minus1が存在し、且つRefLayerId[nuhLayerIdB][scaling_list_pps_pred_layer_idc]/RefLayerId[nuhLayerIdB][NumDirectRefLayers[LayerIdInVps[nuhLayerIdB]−scaling_list_pps_pred_layer_idc−1]/nuhLayerIdB−(scaling_list_pps_delta_ref_layer_id_minus1+1)に等しいnuh_layer_idを有するレイヤに対しアクティブなSPS RBSPが非アクティブ化されるとき、nuhLayerIdBに等しいnuh_layer_idを有するレイヤに対しアクティブな該SPS RBSPは、そのレイヤに対し別のSPS RBSPをアクティブ化することによって非アクティブ化することができる。
レイヤの間でSPSおよび/またはPPSが連鎖形成する能力を避けるシンタクスルールを含めることが望ましい。例えば、レイヤが、媒介レイヤを介して別のレイヤのSPSおよび/またはPPSを参照しないようにすることができる。例えば、レイヤ3が提示するデータをレイヤ2から取得する、そしてレイヤ2はそれが提示するデータをレイヤ1から取得するなどして、不要なSPSおよび/またはPPSを得るといった構造はとれないようにできる。SPSの連鎖形成について図54Aに、PPSの連鎖形成については図54Cに示されたこの状態は避けるべきである。この場合、レイヤ3は、データをコピーするSPSおよび/またはPPSを得るため、直接にレイヤ1を参照すべきである。これは、SPSについて図54Bに、PPSについては図54Dに示されている。かくして、図54Bおよび図54Dに示された実施形態がサポートされることになる。
かかるSPSの連鎖形成を避けるために、例えば、nuhLayerIdAに等しいnuh_layer_idを有するSPS RBSPが、nuhLayerIdBに等しいnuh_layer_idを有するレイヤに対しアクティブ化され、且つSPS RBSP中の、sps_base_pred_scaling_list_flagが1に等しいとき、sps_base_pred_scaling_list_flagは、RefLayerId[nuhLayerIdB][scaling_list_sps_pred_layer_idc]/RefLayerId[nuhLayerIdB][NumDirectRefLayers[nuhLayerIdB]−scaling_list_sps_pred_layer_idc−1]/nuhLayerIdB−(scaling_list_sps_delta_ref_layer_id_minus1+1)に等しいnuh_layer_idを有するレイヤに対してアクティブなSPS RBSPに対し0であればよい(すなわち、1であってはならない)ことが、ビットストリーム適合の要件であり得る。
別の実施形態では、かかるSPSの連鎖形成の能力を避けるために、例えば、nuhLayerIdAに等しいnuh_layer_idを有するSPS RBSPが、nuhLayerIdBに等しいnuh_layer_idを有するレイヤに対しアクティブ化され、且つSPS RBSP中のsps_base_pred_scaling_list_flagが1に等しいとき、RefLayerId[nuhLayerIdB][scaling_list_sps_pred_layer_idc]/RefLayerId[nuhLayerIdB][NumDirectRefLayers[LayerIdInVps[nuhLayerIdB]]−scaling_list_sps_pred_layer_idc−1]/nuhLayerIdB−(scaling_list_sps_delta_ref_layer_id_minus1+1)に等しいnuh_layer_idを有するレイヤに対してアクティブなSPS RBSPに対し、sps_base_pred_scaling_list_flagが0であればよい(すなわち、1であってはならない)ことが、ビットストリーム適合の要件であり得る。
かかるPPSの連鎖形成を避けるために、例えば、nuhLayerIdAに等しいnuh_layer_idを有するPPS RBSPが、nuhLayerIdBに等しいnuh_layer_idを有するレイヤに対しアクティブ化され、且つPPS RBSP中の、pps_base_pred_scaling_list_flagが1に等しいとき、RefLayerId[nuhLayerIdB][scaling_list_pps_pred_layer_idc]/RefLayerId[nuhLayerIdB][NumDirectRefLayers[nuhLayerIdB]−scaling_list_pps_pred_layer_idc−1]/nuhLayerIdB−(scaling_list_pps_delta_ref_layer_id_minus1+1)に等しいnuh_layer_idを有するレイヤに対してアクティブなPPS RBSPに対し、pps_base_pred_scaling_list_flagが0であればよい(すなわち、1であってはならない)ことが、ビットストリーム適合の要件であり得る。
別の実施形態では、かかるPPSの連鎖形成を避けるために、例えば、nuhLayerIdAに等しいnuh_layer_idを有するPPS RBSPが、nuhLayerIdBに等しいnuh_layer_idを有するレイヤに対しアクティブ化され、且つPPS RBSP中の、pps_base_pred_scaling_list_flagが1に等しいとき、RefLayerId[nuhLayerIdB][scaling_list_pps_pred_layer_idc]/RefLayerId[nuhLayerIdB][NumDirectRefLayers[LayerIdInVps[nuhLayerIdB]]−scaling_list_pps_pred_layer_idc−1]/nuhLayerIdB−(scaling_list_pps_delta_ref_layer_id_minus1+1)に等しいnuh_layer_idを有するレイヤに対してアクティブなPPS RBSPに対し、pps_base_pred_scaling_list_flagが0であればよい(すなわち、1であってはならない)ことが、ビットストリーム適合の要件であり得る。
一部の実施形態においては、特定のレイヤのPPSが、同じレイヤの別のPPSから予測されるのを可能にすることができる。
一部の実施形態においては、特定のレイヤのSPSが、同じレイヤの別のSPSから予測されるのを可能にすることができる。
一部の実施形態では、scaling_list_sps_pred_layer_idx_delta/scaling_list_sps_pred_layer_idx_delta/scaling_list_sps_delta_ref_layer_id_minus1およびscaling_list_pps_pred_layer_idx_delta/scaling_list_pps_pred_layer_idx_delta/scaling_list_pps_delta_ref_layer_id_minus1は、これらが、RefLayerIdリストの代わりにRefPicLayerIdリストに属するレイヤ群内のレイヤをポイントするように制限することができる。上記のRefPicLayerIdリストはJCTVC−M1008中に定義されており、該文書は参照することにより本明細書に組み込まれる。したがって、この場合中間レイヤパラメータ予測は、現レイヤに対するアクティブな参照レイヤの一つからだけ行うことができる。
また、PPSおよび/またはSPSアクティブ化の連鎖形成を避けるためのビットストリーム制約を含める好適な技法は、他の中間レイヤパラメータセット予測技法に対しても適用可能で有益である。したがって、中間レイヤのSPS予測メカニズムを用いるときのSPSアクティブ化に対し、以下の制限を提案することができる:すなわち、nuhLayerIdAに等しいnuh_layer_idを有するSPS RBSPが、nuhLayerIdBに等しいnuh_layer_idを有するレイヤに対しアクティブ化され、且つSPS中のref_layer_present_flagが1に等しい(すなわち、delta_ref_layer_id_minus1が存在する)とき、nuhLayerIdB−(delta_ref_layer_id_minus1+1)に等しいnuh_layer_idを有するレイヤに対してアクティブなSPS RBSPに対し、ref_layer_present_flagが0に等しくなければならない(すなわち、1に等しくてはならない)ことがビットストリーム適合の要件である。上記のdelta_ref_layer_id_minus1+1は、nuh_layer_idの値と、シーケンスパラメータセット予測のため用いられた参照レイヤに対するnuh_layer_idの値との差を指定する。delta_view_ref_layer_id_minus1の値は両端値を含め0からnuh_layer_id−1の範囲内になければならない。
別の実施形態では、前述の制限は以下のように変更することができる:すなわち、nuhLayerIdAに等しいnuh_layer_idを有するSPS RBSPが、nuhLayerIdBに等しいnuh_layer_idを有するレイヤに対しアクティブ化され、且つSPS中のref_layer_present_flagが1に等しい(すなわち、delta_ref_layer_id_minus1が存在する)とき、nuhLayerIdA−(delta_ref_layer_id_minus1+1)に等しいnuh_layer_idを有するレイヤに対してアクティブなSPS RBSPに対し、ref_layer_present_flagは0に等しくなければならない(すなわち、1に等しくてはならない)ことがビットストリーム適合の要件である。上記のdelta_ref_layer_id_minus1+1は、nuh_layer_idの値と、シーケンスパラメータセット予測のため用いられた参照レイヤに対するnuh_layer_idの値との差を指定する。delta_view_ref_layer_id_minus1の値は両端値を含め0からnuh_layer_id−1の範囲内になければならない。
別の実施形態では、前述の制限は以下のように変更することができる:すなわち、nuhLayerIdAに等しいnuh_layer_idを有するSPS RBSPが、nuhLayerIdBに等しいnuh_layer_idを有するレイヤに対しアクティブ化され、且つSPS RBSP中にdelta_ref_layer_id_minus1が存在するとき、nuhLayerIdBに等しいnuh_layer_idを有するレイヤに対しアクティブ化されたSPS RBSPの中に存在しない、nuhLayerIdB−delta_view_ref_layer_id_minus1−1に等しい、nuh_layer_idを有するレイヤに対する全てのSPSパラメータの値は、nuhLayerIdBに等しいnuh_layer_idを有するレイヤに対して有効であると見なさなければならない。nuhLayerIdAに等しいnuh_layer_idを有するSPS RBSPが、nuhLayerIdBに等しいnuh_layer_idを有するレイヤに対しアクティブであり、且つSPS RBSP中にdelta_ref_layer_id_minus1が存在し、且つnuhLayerIdB−delta_view_ref_layer_id_minus1−1に等しいnuh_layer_idを有するレイヤに対しアクティブなSPS RBSPが非アクティブ化されるとき、nuhLayerIdBに等しいnuh_layer_idを有するレイヤに対しアクティブな該SPS RBSPは、そのレイヤに対する別のSPS RBSPをアクティブ化することによって非アクティブ化されなければならない。上記のdelta_ref_layer_id_minus1+1は、nuh_layer_idの値と、シーケンスパラメータセット予測のため用いられた参照レイヤに対するnuh_layer_idの値との差を指定する。delta_view_ref_layer_id_minus1の値は両端値を含め0からnuh_layer_id−1の範囲内になければならない。
別の実施形態では、シンタクス要素の一つ以上は、ue(v)の代わりにu(v)の代わりに既知の定数のビットを使用してシグナリングされる。例えば、u(8)またはu(16)またはu(32)またはu(64)などを使用してこれらのシンタクス要素がシグナリングされる。
別の実施形態では、これらのシンタクス要素の一つ以上は、u(v)符号化等の定数のビットの代わりに、ue(v)または何らかの他の符号化スキームによりシグナリングされてもよい。
別の実施形態では、記載されたシンタクスおよびセマンティクスに対して、プラス1またはプラス2を加算することにより、またはマイナス1またはマイナス2を減算することにより、様々なシンタクス要素の名称およびそのセマンティクスが変更されてよい。
さらに別の実施形態では、様々なシンタクス要素がピクチャ毎にビットストリームの任意の場所でシグナリングされてよい。シンタクス要素は、例えばスライスセグメントヘッダ、pps/sps/vps/、もしくは他の任意のパラメータセット、またはビットストリームの他の規範的部分においてシグナリングされる。
「コンピュータ可読媒体」という用語は、コンピュータまたはプロセッサによりアクセスされる任意の利用可能な媒体をいう。本明細書で用いられるところの「コンピュータ可読媒体」という用語は、固定有形のコンピュータおよび/またはプロセッサ可読媒体を意味する。限定ではなく例として、コンピュータ可読またはプロセッサ可読媒体は、RAM、ROM、EEPROM、CD‐ROMもしくは他の光学ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイスまたは命令もしくはデータ構造の形で所望のプログラムコードを担持または記憶するために使用でき、コンピュータまたはプロセッサによってアクセスされる任意の他の媒体を含む。本明細書で用いられるところのディスク(Disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザーディスク、光ディスク、デジタル多用途ディスク(DVD)、フロッピーディスクおよびブルーレイ(登録商標)ディスクを含み、ディスク(disk)は通常磁気によりデータを再現し、ディスク(disc)はレーザで光学的にデータを再現する。
本明細書に記載される方法の一つ以上が、ハードウェアで実装され、および/またはハードウェアを使用して行われる点に留意する必要がある。例えば、本明細書に記載される方法またはアプローチの一つ以上は、チップセット、ASIC、大規模集積回路(LSI)または集積回路などで実装され、および/またはそれらを使用して実現されてもよい。
本明細書に開示される方法のそれぞれは、記載された方法を達成するための一つ以上のステップまたは動作を含む。本方法のステップおよび/または動作は、特許請求の範囲から逸脱することなく、相互に交換されても、および/または一つのステップに組み合わされてもよい。言い換えれば、記載された方法の適切な操作のためにステップまたは動作の特定の順序が要求されない限り、特定のステップおよび/または動作の順序および/または使用は、特許請求の範囲から逸脱することなく修正されてよい。
当然のことながら、特許請求の範囲は、以上に示した正確な構成および構成要素に限定されない。特許請求の範囲から逸脱することなく、本明細書に記載されるシステム、方法、および装置の配置、操作、および詳細に様々な修正、変更および変形がなされる。