IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 華為技術有限公司の特許一覧

特開2024-163124識別子シグナリングを用いたビデオコーディングビットストリーム抽出
<>
  • 特開-識別子シグナリングを用いたビデオコーディングビットストリーム抽出 図1
  • 特開-識別子シグナリングを用いたビデオコーディングビットストリーム抽出 図2
  • 特開-識別子シグナリングを用いたビデオコーディングビットストリーム抽出 図3
  • 特開-識別子シグナリングを用いたビデオコーディングビットストリーム抽出 図4
  • 特開-識別子シグナリングを用いたビデオコーディングビットストリーム抽出 図5
  • 特開-識別子シグナリングを用いたビデオコーディングビットストリーム抽出 図6
  • 特開-識別子シグナリングを用いたビデオコーディングビットストリーム抽出 図7
  • 特開-識別子シグナリングを用いたビデオコーディングビットストリーム抽出 図8
  • 特開-識別子シグナリングを用いたビデオコーディングビットストリーム抽出 図9
  • 特開-識別子シグナリングを用いたビデオコーディングビットストリーム抽出 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024163124
(43)【公開日】2024-11-21
(54)【発明の名称】識別子シグナリングを用いたビデオコーディングビットストリーム抽出
(51)【国際特許分類】
   H04N 19/70 20140101AFI20241114BHJP
   H04N 19/82 20140101ALI20241114BHJP
【FI】
H04N19/70
H04N19/82
【審査請求】有
【請求項の数】14
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024131900
(22)【出願日】2024-08-08
(62)【分割の表示】P 2022500125の分割
【原出願日】2020-06-15
(31)【優先権主張番号】62/870,892
(32)【優先日】2019-07-05
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】503433420
【氏名又は名称】華為技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
【住所又は居所原語表記】Huawei Administration Building, Bantian, Longgang District, Shenzhen, Guangdong 518129, P.R. China
(74)【代理人】
【識別番号】110004381
【氏名又は名称】弁理士法人ITOH
(72)【発明者】
【氏名】ワーン,イエ-クイ
(72)【発明者】
【氏名】ヘンドリー,フヌ
(57)【要約】
【課題】ビデオコーディングメカニズムを提供する。
【解決手段】このメカニズムは、サブピクチャのセットを含む入力ビットストリームからサブビットストリーム抽出プロセスの結果である抽出されたビットストリームを受信することを含む。抽出されたビットストリームは、サブビットストリーム抽出プロセスへの入力ビットストリームのサブピクチャのサブセットのみを含む。抽出されたビットストリームからのフラグが、サブピクチャのサブセットに関連するサブピクチャ情報が抽出されたビットストリームに存在することを示すように設定される。サブピクチャのサブセットに対する1つ以上のサブピクチャ識別子(ID)が、フラグに基づいて取得される。サブピクチャのサブセットは、サブピクチャIDに基づいてデコーディングされる。
【選択図】図6
【特許請求の範囲】
【請求項1】
ビットストリームを受信するステップであって、前記ビットストリームは、ピクチャパラメータセット(PPS)を含み、前記PPSは第1のフラグを含み、1に等しい前記第1のフラグは、スライスIDが前記PPS内に存在することを示し、0に等しい前記第1のフラグは、スライスIDが前記PPS内に存在しないことを示す、ステップと;
前記PPSから前記第1のフラグを解析するステップであって、前記ビットストリームがサブビットストリーム抽出の結果であり且つ前記ビットストリームがピクチャに元々含まれていたスライスのサブセットである1つ以上の長方形スライスのコーディングされたデータを含むとき、前記第1のフラグの値は1に等しい、ステップと;
前記第1のフラグに基づいて前記1つ以上の長方形スライスをデコーディングするステップと;を含む、
デコーディング方法。
【請求項2】
前記PPSはさらに、スライス境界を越えたインループフィルタリング操作が前記ピクチャに対して可能にされるかどうかを示すloop_filter_across_slices_enabled_flagを含む、
請求項1に記載のデコーディング方法。
【請求項3】
前記PPSはさらに、num_slices_in_pic_minus1を含み、前記num_slices_in_pic_minus1は、前記PPSを参照する各ピクチャの前記長方形スライスの数を指定する、
請求項1又は2に記載のデコーディング方法。
【請求項4】
ピクチャパラメータセット(PPS)をビットストリームにエンコーディングするステップであって、前記PPSは第1のフラグを含み、1に等しい前記第1のフラグは、スライスIDが前記PPS内に存在することを示し、0に等しい前記第1のフラグは、スライスIDが前記PPS内に存在しないことを示す、ステップと;
1つ以上の長方形スライスを前記ビットストリームにエンコーディングするステップと;を含み、
前記ビットストリームがサブビットストリーム抽出の結果であり且つ前記ビットストリームがピクチャに元々含まれていたスライスのサブセットである1つ以上の長方形スライスのコーディングされたデータを含むとき、前記第1のフラグの値は1に等しく設定される、
エンコーディング方法。
【請求項5】
前記PPSはさらに、スライス境界を越えたインループフィルタリング操作が前記ピクチャに対して可能にされるかどうかを示すloop_filter_across_slices_enabled_flagを含む、
請求項4に記載のエンコーディング方法。
【請求項6】
前記PPSはさらに、num_slices_in_pic_minus1を含み、前記num_slices_in_pic_minus1は、前記PPSを参照する各ピクチャの前記長方形スライスの数を指定する、
請求項4又は5に記載のエンコーディング方法。
【請求項7】
プロセッサ及びメモリを有するデコーダであって、前記メモリは、コンピュータ実行可能命令を格納するように構成され、前記プロセッサは、前記コンピュータ実行可能命令を実行して請求項1乃至3のいずれか1項に記載の方法を実行するように構成される、デコーダ。
【請求項8】
プロセッサ及びメモリを有するエンコーダであって、前記メモリは、コンピュータ実行可能命令を格納するように構成され、前記プロセッサは、前記コンピュータ実行可能命令を実行して請求項4乃至6のいずれか1項に記載の方法を実行するように構成される、エンコーダ。
【請求項9】
ビットストリームを格納するデバイスであって、前記デバイスは、少なくとも1つのメモリと、受信機又は送信機とを有し、
前記受信機は1つ以上のビットストリームを受信するように構成される;又は
前記送信機は1つ以上のビットストリームを送信するように構成され;
前記少なくとも1つのメモリは、前記1つ以上のビットストリームを格納するように構成され;
前記ビットストリームは、ピクチャパラメータセット(PPS)を含み、前記PPSは第1のフラグを含み、1に等しい前記第1のフラグは、スライスIDが前記PPS内に存在することを示し、0に等しい前記第1のフラグは、スライスIDが前記PPS内に存在しないことを示し;
前記ビットストリームがサブビットストリーム抽出の結果であり且つ前記ビットストリームがピクチャに元々含まれていたスライスのサブセットである1つ以上の長方形スライスのコーディングされたデータを含むとき、前記第1のフラグの値は1に等しい、
デバイス。
【請求項10】
前記PPSはさらに、スライス境界を越えたインループフィルタリング操作が前記ピクチャに対して可能にされるかどうかを示すloop_filter_across_slices_enabled_flagを含む、
請求項9に記載のデバイス。
【請求項11】
前記PPSはさらに、num_slices_in_pic_minus1を含み、前記num_slices_in_pic_minus1は、前記PPSを参照する各ピクチャの前記長方形スライスの数を指定する、
請求項9又は10に記載のデバイス。
【請求項12】
ビットストリームを格納する方法であって:
ビットストリームを受信するステップ;又は
ビットストリームを送信するステップと;
前記ビットストリームを格納するステップであって前記ビットストリームは、ピクチャパラメータセット(PPS)を含み、前記PPSは第1のフラグを含み、1に等しい前記第1のフラグは、スライスIDが前記PPS内に存在することを示し、0に等しい前記第1のフラグは、スライスIDが前記PPS内に存在しないことを示す、ステップと;を含み、
前記ビットストリームがサブビットストリーム抽出の結果であり且つ前記ビットストリームがピクチャに元々含まれていたスライスのサブセットである1つ以上の長方形スライスのコーディングされたデータを含むとき、前記第1のフラグの値は1に等しい、
方法。
【請求項13】
前記PPSはさらに、スライス境界を越えたインループフィルタリング操作が前記ピクチャに対して可能にされるかどうかを示すloop_filter_across_slices_enabled_flagを含む、
請求項12に記載の方法。
【請求項14】
前記PPSはさらに、num_slices_in_pic_minus1を含み、前記num_slices_in_pic_minus1は、前記PPSを参照する各ピクチャの前記長方形スライスの数を指定する、
請求項12又は13に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本特許出願は、Ye-Kui Wangにより2019年7月5日に出願され、“Handling Signalled Slice Id for Bitstream Extraction”と題する米国仮特許出願第62/870,892号の利益を主張し、これは本出願に参照により組み込まれる。
【0002】
本開示は、概して、ビデオコーディング(video coding)に関し、特に、ビデオコーディングにおけるビットストリーム抽出に関する。
【背景技術】
【0003】
比較的短いビデオを描写するためにさえ必要とされるビデオデータの量は、相当な量であり、これは、データが限定された帯域幅容量を有する通信ネットワークを介してストリーミングされる又はその他の方法で通信されることになるとき、困難をもたらす可能性がある。従って、ビデオデータは、一般に、現代の電気通信ネットワークを介して通信される前に圧縮される。メモリリソースが制限される可能性があるため、ビデオがストレージデバイスに記憶されるとき、ビデオのサイズも問題となる可能性がある。ビデオ圧縮デバイスは、しばしば、送信又は記憶の前にビデオデータをコーディングする(code)ためにソースにおいてソフトウェア及び/又はハードウェアを使用し、それによってデジタルビデオ画像を表すのに必要なデータ量を減少させる。次いで、圧縮されたデータは、ビデオデータをデコーディングする(decodes)ビデオ解凍デバイスによって宛先で受信される。ネットワーク資源が限られ且つより高いビデオ品質の要求が絶えず増加しているため、画質をほとんど犠牲にせずに圧縮率を向上させる改良された圧縮及び解凍技術が望ましい。
【発明の概要】
【0004】
一実施形態では、本開示は、デコーダに実装される方法を含み、方法は:デコーダの受信機によって、サブピクチャのセットを含む入力ビットストリームからサブビットストリーム抽出プロセスの結果である抽出されたビットストリームを受信するステップであって、抽出されたビットストリームは、サブビットストリーム抽出プロセスへの入力ビットストリームのサブピクチャのサブセットのみを含む、ステップと;デコーダのプロセッサによって、抽出されたビットストリームからのフラグが、サブピクチャのサブセットに関連するサブピクチャ情報が抽出されたビットストリームに存在することを示すように設定されることを決定するステップと;プロセッサによって、フラグに基づいてサブピクチャのサブセットに対する1つ以上のサブピクチャ識別子(ID)を取得するステップと;プロセッサによって、サブピクチャIDに基づいてサブピクチャのサブセットをデコーディングし、プロセッサによって、サブピクチャのサブピクチャのサブセットをデコーディングするステップと;を含む。
【0005】
いくつかのビデオコーディングシーケンスは、サブピクチャのセットとしてエンコーディングされるピクチャを含むことができる。サブピクチャは、ピクチャに対するサブピクチャの位置を示すために使用することができるサブピクチャIDと関連付けられ得る。場合によっては、そのようなサブピクチャ情報は推測されることができる。このような場合、このサブピクチャ情報は、コーディング効率を高めるためにビットストリームから除外することができる。特定のプロセスは、エンドユーザへの独立した送信のためにビットストリームからサブビットストリームを抽出し得る。このような場合、サブビットストリームは、元のビットストリームに含まれていたサブピクチャのサブセットのみを含む。サブピクチャ情報は、全てのサブピクチャが存在するときに推測できるが、そのような推測は、サブピクチャのサブセットのみが存在するときには、デコーダでは不可能であり得る。本例は、サブビットストリーム抽出中のコーディングエラーを防止するメカニズムを含む。具体的には、サブビットストリームがビットストリームから抽出される場合、エンコーダ及び/又はスプライサ(splicer)は、サブビットストリーム内のサブピクチャの少なくともサブセットに対するサブピクチャ情報を含む。さらに、エンコーダ/スプライサは、サブピクチャ情報がサブビットストリームに含まれることを示すフラグを含む。デコーダは、このフラグを読み取り、正しいサブピクチャ情報を取得し、サブビットストリームをデコーディングすることができる。従って、開示されたメカニズムは、エラーを回避することによって、エンコーダ及び/又はデコーダにおける付加的な機能を創出する。さらに、開示されたメカニズムは、ビットストリーム全体を送信するのではなく、サブビットストリーム抽出を可能にすることによって、コーディング効率を向上させ得る。これは、エンコーダ及び/又はデコーダにおけるプロセッサ、メモリ、及び/又はネットワークリソースの使用量を減少させ得る。
【0006】
オプションで、前述の態様のいずれかにおいて、態様の別の実装は、プロセッサによって、1つ以上のサブピクチャIDを含む構文要素のビットの長さを取得するステップをさらに含むことを提供する。
【0007】
オプションで、前述の態様のいずれかにおいて、態様の別の実装は、フラグ、サブピクチャID、及び長さは、抽出されたビットストリーム内のシーケンスパラメータセット(SPS)から取得されることを提供する。
【0008】
オプションで、前述の態様のいずれかにおいて、態様の別の実装は、フラグが、サブピクチャ情報が存在するフラグ(subpic_info_present_flag)であることを提供する。
【0009】
オプションで、前述の態様のいずれかにおいて、態様の別の実装は、サブピクチャIDがSPSサブピクチャ識別子(sps_subpic_id[i])構文構造内に含まれることを提供する。
【0010】
オプションで、前述の態様のいずれかにおいて、態様の別の実装は、長さがSPSサブピクチャID長さマイナス1プラス1(sps_subpic_id_len_minus1 plus 1)構文構造に含まれることを提供する。
【0011】
オプションで、前述の態様のいずれかにおいて、態様の別の実装は、フラグが、サブピクチャ情報がコーディングされたレイヤビデオシーケンス(coded layer video sequence)(CLVS)に対して存在すること、及び、抽出されたビットストリームが入力ビットストリームからのサブビットストリーム抽出プロセスの結果であるときに、CLVSの各ピクチャが1より多いサブピクチャを含むことを指定するために、1に設定されることが要求されることを提供する。
【0012】
一実施形態では、本開示は、エンコーダに実装される方法を含み、方法は:エンコーダのプロセッサによって、サブピクチャのセットを含む入力ビットストリームをエンコーディングするステップと;プロセッサによって、入力ビットストリームのサブピクチャのサブセットのみを含む抽出されたビットストリームを生成するように入力ビットストリームにサブビットストリーム抽出プロセスを実行するステップと;プロセッサによって、抽出されたビットストリームに、抽出されたビットストリーム内のサブピクチャのサブセットのための1つ以上のサブピクチャIDをエンコーディングするステップと;プロセッサによって、サブピクチャのサブセットに関連するサブピクチャ情報が抽出されたビットストリーム内に存在することを示すように抽出されたビットストリームにフラグを設定するステップと;プロセッサに結合されたメモリによって、デコーダへの通信のために、ビットストリームを記憶するステップと;を含む。
【0013】
いくつかのビデオコーディングシーケンスは、サブピクチャのセットとしてエンコーディングされるピクチャを含むことができる。サブピクチャは、ピクチャに対するサブピクチャの位置を示すために使用することができるサブピクチャIDと関連付けられ得る。場合によっては、そのようなサブピクチャ情報は推測されることができる。このような場合、このサブピクチャ情報は、コーディング効率を高めるためにビットストリームから除外されることができる。特定のプロセスは、エンドユーザへの独立した送信のためにビットストリームからサブビットストリームを抽出し得る。このような場合、サブビットストリームは、元のビットストリームに含まれていたサブピクチャのサブセットのみを含む。サブピクチャ情報は、全てのサブピクチャが存在するときに推測できるが、そのような推測は、サブピクチャのサブセットのみが存在するときには、デコーダでは不可能であり得る。本例は、サブビットストリーム抽出中のコーディングエラーを防止するメカニズムを含む。具体的には、サブビットストリームがビットストリームから抽出される場合、エンコーダ及び/又はスプライサは、サブビットストリーム内のサブピクチャの少なくともサブセットに対するサブピクチャ情報を含む。さらに、エンコーダ/スプライサは、サブピクチャ情報がサブビットストリームに含まれることを示すフラグを含む。デコーダは、このフラグを読み取り、正しいサブピクチャ情報を取得し、サブビットストリームをデコーディングすることができる。従って、開示されたメカニズムは、エラーを回避することによって、エンコーダ及び/又はデコーダにおける付加的な機能性を創出する。さらに、開示されたメカニズムは、ビットストリーム全体を送信するのではなく、サブビットストリーム抽出を可能にすることによって、コーディング効率を向上させ得る。これは、エンコーダ及び/又はデコーダにおけるプロセッサ、メモリ、及び/又はネットワークリソースの使用量を減少させ得る。
【0014】
オプションで、前述の態様のいずれかにおいて、態様の別の実装は、プロセッサによって、1つ以上のサブピクチャIDを含む構文要素のビットの長さを抽出されたビットストリームにエンコーディングするステップをさらに含むことを提供する。
【0015】
オプションで、前述の態様のいずれかにおいて、態様の別の実装は、フラグ、サブピクチャID、及び長さは、抽出されたビットストリーム内のSPSにエンコーディングされることを提供する。
【0016】
オプションで、前述の態様のいずれかにおいて、態様の別の実装は、フラグがsubpic_info_present_flagであることを提供する。
【0017】
オプションで、前述の態様のいずれかにおいて、態様の別の実装は、サブピクチャIDがsps_subpic_id[i]構文構造に含まれることを提供する。
【0018】
オプションで、前述の態様のいずれかにおいて、態様の別の実装は、長さがsps_subpic_id_len_minus1 plus 1構文構造に含まれることを提供する。
【0019】
オプションで、前述の態様のいずれかにおいて、態様の別の実装は、フラグが、サブピクチャ情報がCLVSに対して存在すること、及び、抽出されたビットストリームが入力ビットストリームからのサブビットストリーム抽出プロセスの結果であるときに、CLVSの各ピクチャが1より多いサブピクチャを含むことを指定するために、1に設定されることが要求されることを提供する。
【0020】
一実施形態では、本開示は:プロセッサと、プロセッサに結合された受信機と、プロセッサに結合されたメモリと、プロセッサに結合された送信機とを有するビデオコーディングデバイスを含み、プロセッサ、受信機、メモリ、及び送信機は、前述の態様のいずれかの方法を実行するように構成される。
【0021】
一実施形態では、本開示は、ビデオコーディングデバイスによる使用のためのコンピュータプログラム製品を含む非一時的コンピュータ可読媒体であって、コンピュータプログラム製品は、プロセッサによって実行されるとき、ビデオコーディングデバイスに前述の態様のいずれかの方法を実行させるように、非一時的コンピュータ可読媒体に記憶されたコンピュータ実行可能命令を含む。
【0022】
一実施形態では、本開示は、デコーダであって:サブピクチャのセットを含む入力ビットストリームからのサブビットストリーム抽出プロセスの結果である抽出されたビットストリームを受信するための受信手段であって、抽出されたビットストリームは、サブビットストリーム抽出プロセスへの入力ビットストリームのサブピクチャのサブセットのみを含む、受信手段と;抽出されたビットストリームからのフラグがサブピクチャのサブセットに関連するサブピクチャ情報が抽出されたビットストリームに存在することを示すように設定されていることを決定するための決定手段と;フラグに基づいてサブピクチャのサブセットに対して1つ以上のサブピクチャIDを取得するための取得手段と;サブピクチャIDに基づいてサブピクチャのサブセットをデコーディングするためのデコーディング手段と;デコーディングされたビデオシーケンスの一部として表示のためにサブピクチャのサブセットを転送するための転送手段と;を有する、デコーダを含む。
【0023】
オプションで、前述の態様のいずれかにおいて、態様の別の実装は、デコーダが前述の態様のいずれかの方法を実行するようにさらに構成されることを提供する。
【0024】
一実施形態では、本開示は、エンコーダであって:サブピクチャのセットを含む入力ビットストリームをエンコーディングするための第1エンコーディング手段と;入力ビットストリームのサブピクチャのサブセットのみを含む抽出されたビットストリームを生成するように入力ビットストリームにサブビットストリーム抽出プロセスを実行するためのビットストリーム抽出手段と;抽出されたビットストリーム内のサブピクチャのサブセットに対する1つ以上のサブピクチャIDを抽出されたビットストリームにエンコーディングするための第2エンコーディング手段と;サブピクチャのサブセットに関連するサブピクチャ情報が抽出されたビットストリームに存在することを示すように抽出されたビットストリームにフラグを設定するための設定手段と;デコーダへの通信のためにビットストリームを記憶するための記憶手段と;を有するエンコーダを含む。
【0025】
オプションで、前述の態様のいずれかにおいて、態様の別の実装は、エンコーダが、前述の態様のいずれかの方法を実行するようにさらに構成されることを提供する。
【0026】
明確にするために、前述の実施形態のいずれか1つは、本開示の範囲内の新たな実施形態を作り出すために、他の前述の実施形態のいずれか1つ以上と組み合わされ得る。
【0027】
これら及び他の特徴は、添付の図面及び特許請求の範囲に関連して取られた以下の詳細な説明から、より明確に理解されるであろう。
【図面の簡単な説明】
【0028】
本開示をより完全に理解するために、添付の図面及び詳細な説明に関連して、以下の簡単な説明を参照する。ここで、同様の参照番号は同様の部分を表す。
【0029】
図1】ビデオ信号をコーディングする例示的な方法のフローチャートである。
【0030】
図2】ビデオコーディングのための例示的なコーディング及びデコーディング(コーデック)システムの概略図である。
【0031】
図3】例示的なビデオエンコーダを示す概略図である。
【0032】
図4】例示的なビデオデコーダを示す概略図である。
【0033】
図5】ピクチャビデオストリームから抽出された複数のサブピクチャビデオストリームを示す概略図である。
【0034】
図6】サブビットストリームに分割された例示的なビットストリームを示す概略図である。
【0035】
図7】例示的なビデオコーディングデバイスの概略図である。
【0036】
図8】ビデオシーケンスをビットストリームにエンコーディングし、IDエラーを軽減しながらサブビットストリームを抽出する例示的な方法のフローチャートである。
【0037】
図9】ビットストリームから抽出されたサブビットストリームからのビデオシーケンスをデコーディングする例示的な方法のフローチャートである。
【0038】
図10】ビットストリーム内の画像のビデオシーケンスをコーディングし、IDエラーを軽減しながらサブビットストリームを抽出するための例示的なシステムの概略図である。
【発明を実施するための形態】
【0039】
最初に、1つ以上の実施形態の例示的な実装が以下に提供されるが、開示されたシステム及び/又は方法は、現在知られている又は存在するかを問わず、任意の数の技術を使用して実装され得ることが理解されるべきである。本開示は、本明細書に示され説明された例示的な設計及び実装を含む、以下に示された例示的な実装、図面、及び技術には決して限定されないが、添付の特許請求の範囲の範囲内で、それらの均等物の全範囲と共に修正することができる。
【0040】
以下の用語は、本明細書において反対の文脈で使用されない限り、以下のように定義される。具体的には、以下の定義は、本開示にさらなる明確さを提供することを意図している。しかし、用語は、異なる文脈において異なるように記述されることがある。従って、以下の定義は、補足とみなされるべきであり、本明細書においてそのような用語に提供されている記述の他の定義を限定するものとみなされるべきではない。
【0041】
ビットストリームは、エンコーダとデコーダとの間で送信するために圧縮されるビデオデータを含むビットのシーケンスである。エンコーダは、ビデオデータをビットストリームに圧縮するためにエンコーディングプロセスを用いるように構成されたデバイスである。デコーダは、表示のためにビットストリームからビデオデータを再構成するためにデコーディングプロセスを用いるように構成されたデバイスである。ピクチャは、フレーム又はそのフィールドを生成するルマ(luma)サンプルのアレイ及び/又はクロマ(chroma)サンプルのアレイである。エンコーディング又はデコーディングされているピクチャは、議論を明確にするために現在のピクチャと呼ばれることがある。サブピクチャは、ピクチャ内の1つ以上のスライスの長方形(rectangular)領域である。サブビットストリーム抽出プロセスは、ターゲットセットに含まれるネットワーク抽象化レイヤ(Network Abstraction Layer)(NAL)ユニットを含む出力サブビットストリームを結果的にもたらすターゲットセットの一部ではないビットストリームからNALユニットを除去する指定されたメカニズムである。NALユニットは、データのバイト及びそこに含まれるデータのタイプの指示を含む構文構造(syntax structure)である。NALユニットは、ビデオデータを含むビデオコーディングレイヤ(VCL)NALユニット、及びサポートする構文データを含む非VCL NALユニットを含む。入力ビットストリームは、サブビットストリーム抽出プロセスの適用前の、NALユニットの完全なセットを含むビットストリームである。サブビットストリームとしても知られる、抽出されたビットストリームは、ビットストリーム抽出プロセスから出力され、入力ビットストリームからのNALユニットのサブセットを含むビットストリームである。セットは、個別のアイテムの集合である。サブセットは、サブセット内の各アイテムがセットに含まれ、セットからの少なくとも1つのアイテムがサブセットから除外されるようなアイテムの集合である。サブピクチャ情報は、サブピクチャを記述する任意のデータである。フラグは、対応するデータを示すために設定されることができるビットのシーケンスを含むデータ構造である。サブピクチャ識別子(ID)は、対応するサブピクチャを一意に識別するデータアイテムである。データ構造の長さは、データ構造に含まれるビットの数である。コーディングされたレイヤビデオシーケンス(CLVS)は、ピクチャの一つ以上の層を含むエンコーディングされたビデオデータのシーケンスである。CLVSは、CLVSが単一のレイヤを含むとき又はCLVSがレイヤ固有のコンテキストの外側で議論されるとき、コーディングされたビデオシーケンス(CVS)と呼ばれることがある。シーケンスパラメータセット(SPS)は、ピクチャのシーケンスに関連するデータを含むパラメータセットである。デコーディングされたビデオシーケンスは、ユーザへの表示の準備のためにデコーダによって再構成されたピクチャのシーケンスである。
【0042】
以下の頭字語、コーディングツリーブロック(Coding Tree Block)(CTB)、コーディングツリーユニット(Coding Tree Unit)(CTU)、コーディングユニット(Coding Unit)(CU)、コーディングされたビデオシーケンス(Coded Video Sequence)(CVS)、共同ビデオエキスパートチーム(JVET)、モーションコンストレイントタイルセット(Motion-Constrained Tile Set)(MCTS)、最大転送ユニット(Maximum Transfer Unit)ユニット(MTU)、ネットワーク抽象化レイヤ(NAL)、ピクチャオーダカウント(Picture Order Count)(POC)、ローバイトシーケンスペイロード(Raw Byte Sequence Payload)(RBSP)、シーケンスパラメータセット(SPS)、サブピクチャーユニット(SPU)、バーサタイルビデオコーディング(VVC)、ワーキングドラフト(WD)がここで使用される。
【0043】
多くのビデオ圧縮技術が、最小限のデータ損失でビデオファイルのサイズを低減するために使用されることができる。例えば、ビデオ圧縮技術は、ビデオシーケンスにおけるデータ冗長性を低減又は除去するために、空間的(例えば、ピクチャ内)予測及び/又は時間的(例えば、ピクチャ間)予測を実行することを含むことができる。ブロックベースのビデオコーディングのために、ビデオスライス(例えば、ビデオピクチャ又はビデオピクチャの一部)が、ビデオブロックにパーティション化され(partitioned)得、これは、ツリーブロック、コーディングツリーブロック(CTB)、コーディングツリーユニット(CTU)、コーディングユニット(CU)、及び/又はコーディングノードとも呼ばれ得る。ピクチャのイントラコーディングされた(intra-coded)(I)スライスにおけるビデオブロックは、同じピクチャ内の隣接ブロックの参照(reference)サンプルに関して空間的予測を用いてコーディングされる。ピクチャのイントラコーディングされた一方向予測(P)又は双方向予測(B)スライスにおけるビデオブロックは、同じピクチャ内の隣接ブロック内の参照サンプルに関して空間予測を使用することによって、又は他の参照ピクチャ内の参照サンプルに関して時間予測を使用することによってコーディングされ得る。ピクチャは、フレーム及び/又は画像と呼ばれることがあり、参照ピクチャは、参照フレーム及び/又は参照画像と呼ばれることがある。空間的又は時間的予測は、画像ブロックを表す予測ブロックをもたらす。残差データ(Residual data)は、元の画像ブロックと予測ブロックとの間のピクセル差(pixel differences)を表す。従って、イントラコーディングされたブロックは、予測ブロックを形成する参照サンプルのブロックと、コーディングされたブロックと予測ブロックとの間の差を示す残差データを指す動きベクトル(motion vector)に従ってエンコーディングされる。イントラコーディングされたブロックは、イントラコーディングモードと残差データに従ってエンコーディングされる。さらなる圧縮のために、残差データは、ピクセルドメインから変換ドメインに変換され得る。これらは、残差変換係数(residual transform coefficients)をもたらし、これは量子化され得る。量子化された変換係数は、最初に二次元アレイに配置され得る。量子化された変換係数は、変換係数の一次元ベクトルを生成するために走査され得る。エントロピーコーディングが、より多くの圧縮を達成するために適用され得る。このようなビデオ圧縮技術は、以下により詳細に説明される。
【0044】
エンコーディングされたビデオが正確にデコーディングされることを確実にするために、ビデオは、対応するビデオコーディング規格に従ってエンコーディングされ、デコーディングされる。ビデオコーディング規格は、国際電気通信連合(ITU-T)標準化部門(ITU-T)H.261、国際標準化機構/国際電気標準委員会(ISO/IEC)MPEG-1パート2、ITU-T H.262又はISO/IEC MPEG-2パート2、ITU-T H.263、ISO/IEC MPEG-4パート2、ITU-T H.264又はISO/IEC MPEG-4パート10とも呼ばれるアドバンスドビデオコーディング(AVC)、及びITU-T H.265又はMPEG-Hパート2とも呼ばれる高効率ビデオコーディング(HEVC)を含ムAVCは、スケーラブルビデオコーディング(SVC)、マルチビュービデオコーディング(MVC)及びマルチビュービデオコーディングプラスデプス(MVC+D)、及び3次元(3D)AVC(3D―AVC)などの拡張を含む。HEVCは、スケーラブルHEVC(SHVC)、マルチビューHEVC(MV-HEVC)、3D HEVC(3D-HEVC)などの拡張を含む。ITU―T及びISO/IECの合同ビデオ専門家チーム(JVET)は、バーサタイルビデオコーディング(VVC)と呼ばれるビデオコーディング規格の開発に着手した。VVCは、JVET-N1001-v8を含むワーキングドラフト(WD)に含まれている。
【0045】
ビデオコーディングシーケンスは、ピクチャのシーケンスを含む。場合によっては、そのようなピクチャは、サブピクチャのセットにさらにパーティション化されることができ、各サブピクチャはピクチャの別々の領域を含む。サブピクチャは、ピクチャの異なる空間部分がデコーダにおいて異なって扱われることを可能にする。例えば、仮想現実(VR)コンテキストでは、ピクチャ全体の一部のみがユーザに表示される。従って、サブピクチャは、ピクチャの異なる部分を異なる解像度でデコーダに送信するために、及び/又はピクチャのある部分を省略さえするために使用することができる。これは、コーディング効率を増加させ得る。別の例では、テレビ会議アプリケーションが、アクティブに発言している参加者の画像のサイズ及び/又は解像度を動的に増加させ得るとともに、参加者が発言を停止したときに、参加者の画像のサイズ及び解像度を減少させ得る。異なるサブピクチャに各参加者を含めることは、ある参加者に関するこのような動的な変更を、他の参加者に関する画像に影響を与えることなく、可能にする。サブピクチャは、サブピクチャIDと関連付けられ得る。サブピクチャIDは、対応するサブピクチャを一意に識別する。従って、サブピクチャIDは、ピクチャに対するサブピクチャの位置を示すために及び/又はサブピクチャレベルコーディングプロセスを変更するために使用することができる。場合によっては、サブピクチャIDのようなサブピクチャ情報を推測することができる。例えば、ピクチャが9個のサブピクチャを含む場合、サブピクチャIDは、ゼロから8の範囲のインデックスであるとデコーダによって推測されることができる。このような場合、このサブピクチャ情報は、コーディング効率を高めるためにビットストリームから省略することができる。
【0046】
しかしながら、あるプロセスは、エンドユーザへの独立した送信のためにビットストリームからサブビットストリームを抽出し得る。このような場合、サブビットストリームは、元のビットストリームに含まれていたサブピクチャのサブセットのみを含む。サブピクチャ情報は、全てのサブピクチャが存在する場合に推測できるが、そのような推測は、サブピクチャのサブセットのみが存在するときは、デコーダにおいて可能でない可能性がある。一例として、エンコーダは、9のうちのサブピクチャ3及び9のうちのサブピクチャ4のみをデコーダに送信し得る。サブピクチャ情報が省略される場合、デコーダは、どのサブピクチャが受信されているか及びそのようなサブピクチャがどのように表示されるべきかを決定することができない場合がある。そのような場合、ビットストリームに関連する欠落データが推測できるので、ビットストリームは適合ビットストリームであると見なされる。しかし、抽出されたサブビットストリームは、サブビットストリームに関連するいくつかの欠落データが推測できないため、適合していない。
【0047】
サブビットストリーム抽出の間のコーディングエラーを防止するためのメカニズムが本明細書に開示される。具体的には、サブビットストリームがビットストリームから抽出されるとき、エンコーダ及び/又はスプライサは、サブビットストリームのサブピクチャの少なくともサブセットに関するサブピクチャ情報をサブビットストリームのパラメータにエンコーディングする。さらに、エンコーダ/スプライサは、サブピクチャ情報がサブビットストリームに含まれることを示すフラグを含む。デコーダは、このフラグを読み取り、正しいサブピクチャ情報を取得し、サブビットストリームをデコーディングすることができる。このようなサブピクチャ情報は、構文要素内のサブピクチャIDと、サブピクチャID構文要素のビット長さを示す長さデータ要素とを含むことができる。従って、開示されたメカニズムは、サブピクチャに関連するコーディングエラーを回避することによって、エンコーダ及び/又はデコーダに付加的な機能を創出する。さらに、開示されたメカニズムは、ビットストリーム全体を送信するのではなく、サブビットストリーム抽出を可能にすることによって、コーディング効率を向上させ得る。これは、エンコーダ及び/又はデコーダにおけるプロセッサ、メモリ、及び/又はネットワークリソースの使用量を減少させ得る。
【0048】
図1は、ビデオ信号をコーディングする例示的な動作方法100のフローチャートである。具体的には、ビデオ信号はエンコーダでエンコーディングされる。エンコーディングプロセスは、ビデオファイルサイズを低減するために種々のメカニズムを用いることによってビデオ信号を圧縮する。より小さいファイルサイズは、圧縮されたビデオファイルがユーザに送信されることを可能にし、一方、関連する帯域幅オーバーヘッドを減少させる。次いで、デコーダは、エンドユーザに表示するために元のビデオ信号を再構成するように圧縮されたビデオファイルをデコーディングする。デコーディングプロセスは、一般に、エンコーディングプロセスをミラーし(mirrors)てデコーダがビデオ信号を矛盾なく(consistently)再構成することを可能にする。
【0049】
ステップ101において、ビデオ信号がエンコーダに入力される。例えば、ビデオ信号はメモリに記憶された非圧縮ビデオファイルであり得る。別の例として、ビデオファイルは、ビデオカメラなどのビデオキャプチャデバイスによってキャプチャされ、ビデオのライブストリーミングをサポートするようにエンコーディングされ得る。ビデオファイルは、オーディオ成分(audio component)とビデオ成分(video component)の両方を含み得る。ビデオ成分は、シーケンスで見るとき、動きの視覚的印象を与える一連の画像フレームを含む。フレームは、本明細書ではルマ成分(又はルマサンプル)と呼ばれる光及びクロマ成分(又はカラーサンプル)と呼ばれるカラーの観点で表現されるピクセルを含む。いくつかの例では、フレームはまた、三次元表示をサポートするための奥行き値(depth values)を含み得る。
【0050】
ステップ103において、ビデオはブロックにパーティション化される。パーティション化は、圧縮のために、各フレーム内のピクセルを正方形及び/又は長方形のブロックに細分化すること(subdividing)を含む。例えば、High Efficiency Video Coding(HEVC)(H.265及びMPEG-H Part2としても知られている)において、フレームは、最初に、所定のサイズ(例えば、64ピクセル×64ピクセル)のブロックである、コーディングツリーユニット(CTU)に分割することができる。CTUは、ルマサンプルとクロマサンプルの両方を含む。コーディングツリーは、CTUをブロックに分割し、次いで、さらなるエンコーディングをサポートする構成が達成されるまで、ブロックを再帰的に細分化するために、用いられ得る。例えば、フレームのルマ成分は、個々のブロックが比較的均一な照明値を含むまで、細分化され得る。さらに、フレームのクロマ成分は、個々のブロックが比較的均一な色値を含むまで、細分化され得る。従って、パーティション化メカニズムはビデオフレームのコンテンツに依存して変化する。
【0051】
ステップ105において、様々な圧縮メカニズムが、ステップ103においてパーティション化された画像ブロックを圧縮するために用いられる。例えば、インター予測(inter-prediction)及び/又はイントラ予測(intra-prediction)が用いられ得る。インター予測は、共通のシーンのオブジェクトが連続したフレームに現れる傾向があるという事実を利用するように設計されている。従って、参照フレーム内の物体を描くブロックは、隣接するフレーム内に繰り返し記述される必要はない。具体的には、テーブルのようなオブジェクトは、複数のフレームにわたって一定の位置に留まり得る。したがって、テーブルは一度記述され、隣接するフレームは参照フレームを参照することができる。パターンマッチングメカニズムが、複数フレームにわたってオブジェクトをマッチングするために用いられ得る。さらに、移動するオブジェクトは、例えば、オブジェクトの動き又はカメラの動きのために、複数のフレームにわたって表現され得る。特定の例として、ビデオは、複数のフレームにわたってスクリーンを横切って移動する自動車を示し得る。このような動きを記述するために、動きベクトルを用いることができる。動きベクトルは、フレーム内のオブジェクトの座標から参照フレーム内のオブジェクトの座標へのオフセットを提供する二次元ベクトルである。このように、インター予測は、参照フレーム内の対応するブロックからのオフセットを示す動きベクトルのセットとして、現在のフレーム内の画像ブロックをエンコーディングすることができる。
【0052】
イントラ予測は、共通フレーム内のブロックをエンコーディングする。イントラ予測は、ルマ及びクロマ成分がフレーム内でクラスター化する(cluster)傾向があるという事実を利用する。たとえば、樹木の一部に緑色のパッチは、同様の緑色のパッチに隣接して位置する傾向がある。イントラ予測は、多方向予測モード(例えば、HEVCにおける33)、平面モード(planar mode)、及び直流(DC)モードを使用する。方向モードは、現在のブロックが、対応する方向の隣接ブロックのサンプルと類似/同一であることを示す。平面モードは、行(row)/列(column)(例えば、平面)に沿った一連のブロックが、行の端における隣接ブロックに基づいて補間することができることを示す。平面モードは、事実上、値を変化させる際に比較的一定の傾きを用いることによって、行/列にわたる光/色の滑らかな遷移を示す。DCモードは境界平滑化のために用いられ、ブロックが方向予測モードの角度方向に関連する全ての隣接ブロックのサンプルに関連する平均値と類似/同一であることを示す。従って、イントラ予測ブロックは、実際の値の代わりに、様々な関係予測モード値として画像ブロックを表すことができる。さらに、インター予測ブロックは、実際の値の代わりに、動きベクトル値として画像ブロックを表すことができる。いずれの場合も、予測ブロックは、場合によっては、画像ブロックを正確に表さないことがある。差異はすべて残差ブロックに記憶される。変換は、ファイルをさらに圧縮するために、残差ブロックに適用され得る。
【0053】
ステップ107において、種々のフィルタリング技術が適用され得る。HEVCでは、フィルタは、インループフィルタリングスキーム(in-loop filtering scheme)に従って適用される。上述のブロックベースの予測は、デコーダにおいてブロック状画像の生成を生じさせることがある。さらに、ブロックベースの予測スキームは、ブロックをエンコーディングし、次いで、後で参照ブロックとして使用するために、エンコーディングされたブロックを再構成し得る。インループフィルタリングスキームは、ノイズ抑制フィルタ、ブロック解除フィルタ、適応ループフィルタ、及びサンプル適応オフセット(SAO)フィルタをブロック/フレームに繰り返し(iteratively)適用する。これらのフィルタは、エンコーディングされたファイルを正確に再構成することができるように、そのようなブロッキングアーチファクトを軽減する。さらに、これらのフィルタは、再構成された参照ブロック内のアーチファクトを軽減し、その結果、アーチファクトは、再構成された参照ブロックに基づいてエンコーディングされる後続のブロック内に追加のアーチファクトを生成する可能性が低くなる。
【0054】
いったんビデオ信号がパーティション化され、圧縮され、フィルタリングされると、得られたデータはステップ109においてビットストリームにエンコーディングされる。ビットストリームは、デコーダにおける適切なビデオ信号再構成をサポートするのに望ましい任意のシグナリングデータと同様に、上述のデータを含む。例えば、このようなデータは、パーティション(partition)データ、予測データ、残差ブロック、及びデコーダにコーディング命令を提供する種々のフラグを含み得る。ビットストリームは、要求に応じてデコーダに向かって送信するためにメモリに記憶され得る。ビットストリームはまた、複数のデコーダに向かってブロードキャスト及び/又はマルチキャストされ得る。ビットストリームの生成は反復プロセスである。従って、ステップ101、103、105、107、及び109は、多くのフレーム及びブロックにわたって連続的に及び/又は同時に発生し得る。図1に示された順序は、議論の明確さと容易さのために示されており、ビデオコーディングプロセスを特定の順序に限定することを意図したものではない。
【0055】
デコーダはビットストリームを受信し、ステップ111においてデコーディングプロセスを開始する。具体的には、デコーダは、ビットストリームを対応する構文及びビデオデータに変換するエントロピーデコーディングスキームを用いる。デコーダは、ステップ111においてフレームのパーティションを決定するためにビットストリームからの構文データを用いる。パーティション化は、ステップ103におけるブロックパーティション化することの結果と一致するはずである。ステップ111において用いられるエントロピーエンコーディング/デコーディングが、ここで説明される。エンコーダは、入力画像(複数可)内の値の空間的位置(spatial positioning)に基づいていくつかの可能な選択からブロックパーティション化スキームを選択することなど、圧縮プロセスの間に多くの選択を行う。厳密な選択のシグナリングは、多数のビン(bins)を用い得る。本明細書で使用される場合、ビンは、変数として扱われるバイナリ値(例えば、コンテキストに応じて変化し得るビット値)である。エントロピーコーディングは、エンコーダが、許容可能なオプションのセットを残して、特定の場合に明らかに実行不可能な任意のオプションを捨てることを可能にする。各許容可能なオプションは、次いで、コードワードが割り当てられる。コードワードの長さは、許容可能なオプションの数(例えば、2つのオプションに対して1つのビン、3つから4つのオプションに対して2つのビンなど)に基づく。エンコーダは、次いで、選択されたオプションに対してコードワードをエンコーディングする。このスキームは、コードワードが、全ての可能なオプションの潜在的に大きいセットからの選択を一意に示すことと対照的に許容可能なオプションの小さいサブセットからの選択を一意に示すことが望ましいほど大きいので、コードワードのサイズを小さくする。デコーダは、次いで、エンコーダと同様の方法で許容可能なオプションのセットを決定することによって、選択をデコーディングする。許容可能なオプションのセットを決定することによって、デコーダは、コードワードを読み取り、エンコーダによってなされる選択を決定することができる。
【0056】
ステップ113において、デコーダはブロックデコーディングを実行する。具体的には、デコーダは、残差ブロックを生成するために逆変換を用いる。次いで、デコーダは、パーティション化に従って画像ブロックを再構成するために、残差ブロック及び対応する予測ブロックを用いる。予測ブロックは、ステップ105においてエンコーダで生成されるように、イントラ予測ブロックとインター予測ブロックの両方を含み得る。再構成された画像ブロックは、次いで、ステップ111において決定された分割データに従って、再構成されたビデオ信号のフレーム内に位置決めされる。ステップ113のための構文はまた、上述のようにエントロピーコーディングを介してビットストリーム内でシグナリングされ得る。
【0057】
ステップ115において、エンコーダにおけるステップ107と同様の方法で、再構成されたビデオ信号のフレームに対してフィルタリングが実行される。例えば、ノイズ抑制フィルタ、デブロッキングフィルタ、適応ループフィルタ、及びSAOフィルタが、ブロッキングアーチファクトを除去するためにフレームに適用され得る。フレームがフィルタリングされると、ビデオ信号は、エンドユーザが見るためにステップ117においてディスプレイに出力することができる。
【0058】
図2は、ビデオコーディングのための例示的なコーディング及びデコーディング(コーデック)システム200の概略図である。具体的には、コーデックシステム200は、動作方法100の実装をサポートするための機能を提供する。コーデックシステム200は、エンコーダ及びデコーダの両方で用いられるコンポーネントを示すために一般化されている。コーデックシステム200は、動作方法100のステップ101及び103に関して説明したように、ビデオ信号を受信及びパーティション化し、これにより、パーティション化されたビデオ信号201が得られる。コーデックシステム200は、次いで、方法100のステップ105、107、及び109に関して説明したように、エンコーダとして動作するときに、パーティション化されたビデオ信号201をコーディングされたビットストリームに圧縮する。デコーダとして動作するとき、コーデックシステム200は、動作方法100におけるステップ111、113、115、及び117に関して説明したように、ビットストリームから出力ビデオ信号を生成する。コーデックシステム200は、一般的なコーダ制御(general coder control)コンポーネント211、変換スケーリング及び量子化コンポーネント213、イントラピクチャ推定コンポーネント215、イントラピクチャ予測コンポーネント217、動き補償(motion compensation)コンポーネント219、動き推定コンポーネント221、スケーリング及び逆変換コンポーネント229、フィルタ制御分析コンポーネント227、インループフィルタコンポーネント225、デコーディングされたピクチャバッファコンポーネント223、ヘッダフォーマッティング及びコンテキスト適応バイナリ算術コーディング(CABAC)コンポーネント231を含む。このようなコンポーネントは、示されるように結合される。図2において、黒線はエンコーディング/デコーディングされることになるデータの移動を示し、破線は他のコンポーネントの動作を制御する制御データの移動を示す。コーデックシステム200のコンポーネントはすべて、エンコーダ内に存在してもよい。デコーダは、コーデックシステム200のコンポーネントのサブセットを含み得る。例えば、デコーダは、イントラピクチャ予測コンポーネント217、動き補償コンポーネント219、スケーリング及び逆変換コンポーネント229、インループフィルタコンポーネント225、及びデコーディングされたピクチャバッファコンポーネント223を含み得る。これらのコンポーネントが次に説明される。
【0059】
パーティション化されたビデオ信号201は、コーディングツリーによってピクセルのブロックにパーティション化されているキャプチャされたビデオシーケンスでる。コーディングツリーは、ピクセルのブロックをピクセルのより小さなブロックに細分化するために、種々の分割モードを用いる。これらのブロックは、次いで、さらに、より小さいブロックに細分化することができる。ブロックは、コーディングツリー上のノードと称され得る。大きい親ノードは、小さい子ノードに分割される。ノードが細分化される回数は、ノード/コーディングツリーの深さ(depth)と呼ばれる。場合によっては、分割されたブロックをコーディングユニット(CU)に含めることができる。例えば、CUは、ルマブロック、赤色差クロマ(Cr)ブロック(複数可)、及び青色差クロマ(Cb)ブロック(複数可)を、CUに対する対応する構文命令とともに含むCTUのサブ部分であることができる。分割モードは、用いられる分割モードに依存して、異なる形状のそれぞれ2つ、3つ、又は4つの子ノードにノードを分割するために用いられる、バイナリツリー(BT)、トリプルツリー(TT)、及びクワッドツリー(QT)を含み得る。パーティション化されたビデオ信号201は、圧縮のために、一般的なコーダ制御コンポーネント211、変換スケーリング及び量子化コンポーネント213、イントラピクチャ推定コンポーネント215、フィルタ制御分析コンポーネント227、及び動き推定コンポーネント221に転送される。
【0060】
一般的なコーダ制御コンポーネント211は、アプリケーションの制約に従って、ビデオシーケンスの画像のビットストリームへのコーディングに関連する決定を行うように構成される。例えば、一般的なコーダ制御コンポーネント211は、ビットレート/ビットストリームサイズ対再構成品質の最適化を管理する。そのような決定は、記憶領域/帯域幅の可用性及び画像解像度要求に基づいて行われ得る。一般的なコーダ制御コンポーネント211はまた、バッファアンダーラン及びオーバーランの問題を緩和するために、送信速度に照らしてバッファの利用を管理する。これらの問題を管理するために、一般的なコーダ制御コンポーネント211は、他のコンポーネントによるパーティション化、予測、及びフィルタリングを管理する。例えば、一般的なコーダ制御コンポーネント211は、解像度を増加させ、帯域幅の使用を増加させるために圧縮の複雑さを動的に増加させ得る、又は、解像度及び帯域幅の使用を減少させるために圧縮の複雑さを減少させ得る。従って、一般的なコーダ制御コンポーネント211は、ビットレートの懸念とビデオ信号再構成品質とのバランスを取るために、コーデックシステム200の他のコンポーネントを制御する。一般的なコーダ制御コンポーネント211は、他のコンポーネントの動作を制御する制御データを生成する。制御データはまた、デコーダでデコーディングするためのパラメータをシグナリングするためにビットストリームでエンコーディングされるようにヘッダフォーマット及びCABACコンポーネント231に転送される。
【0061】
パーティション化されたビデオ信号201は、また、インター予測のために、動き推定コンポーネント221及び動き補償コンポーネント219に送られる。パーティション化されたビデオ信号201のフレーム又はスライスは、複数のビデオブロックに分割され得る。動き推定コンポーネント221及び動き補償コンポーネント219は、時間的予測を提供するために、1つ又は複数の参照フレーム内の1つ又は複数のブロックに対して受信されたビデオブロックのインター予測コーディングを実行する。コーデックシステム200は、例えばビデオデータの各ブロックに対して適切なコーディングモードを選択するために、複数のコーディングパスを実行し得る。
【0062】
動き推定コンポーネント221及び動き補償コンポーネント219は、高度に統合されてもよいが、概念的な目的のために別個に図示されている。動き推定コンポーネント221によって実行される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、例えば、予測ブロックに対するコーディングされたオブジェクトの変位を示し得る。予測ブロックは、ピクセル差に関して、コーディングされることになるブロックに密接に一致することが見出されるブロックである。予測ブロックは、参照ブロックとも呼ばれる。このようなピクセル差は、絶対差の合計(SAD)、二乗差の合計(SSD)、又は他の差分メトリックによって決定され得る。HEVCは、CTU、コーディングツリーブロック(CTB)、及びCUを含むいくつかのコーディングされたオブジェクトを用いる。例えば、CTUはCTBに分割され、このCTBは、次いで、CUに含めるためにCBに分割される。CUは、予測データを含む予測ユニット(PU)及び/又はCUの変換残差データを含む変換ユニット(TU)としてエンコーディングできる。動き推定コンポーネント221は、レート歪み最適化プロセスの一部としてレート歪み解析を使用することによって、動きベクトル、PU、及びTUを生成する。例えば、動き推定コンポーネント221は、現在のブロック/フレームに対する複数の参照ブロック、複数の動きベクトルなどを決定し、最良のレート歪み特性を有する参照ブロック、動きベクトルなどを選択し得る。最良のレート歪み特性は、ビデオ再構成の品質(例えば、圧縮によるデータ損失の量)とコーディング効率(例えば、最終エンコーディングのサイズ)の両方をバランスさせる。
【0063】
いくつかの例では、コーデックシステム200は、デコーディングされたピクチャバッファコンポーネント223に記憶された参照ピクチャのサブ整数ピクセル位置(sub-integer pixel positions)の値を計算し得る。例えば、ビデオコーデックシステム200は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、又は他の分数のピクセル位置の値を補間し得る。したがって、動き推定コンポーネント221は、全ピクセル位置及び分数のピクセル位置(fractional pixel positions)に対する動きサーチ(motion search)を実行し、分数のピクセル精度を有する動きベクトルを出力し得る。動き推定コンポーネント221は、PUの位置を基準ピクチャの予測ブロックの位置と比較することによって、インターコーディングされたスライス内のビデオブロックのPUの動きベクトルを計算する。動き推定コンポーネント221は、計算された動きベクトルを動きデータとしてヘッダフォーマッティング及びCABACコンポーネント231へエンコーディングするために出力し、動きを動き補償コンポーネント219へ出力する。
【0064】
動き補償コンポーネント219によって実行される動き補償は、動き推定コンポーネント221によって決定された動きベクトルに基づいて予測ブロックをフェッチ又は生成することを含み得る。この場合も同様に、いくつかの例では、動き推定コンポーネント221及び動き補償コンポーネント219は機能的に統合されてもよい。現在のビデオブロックのPUに対する動きベクトルを受信すると、動き補償コンポーネント219は、動きベクトルが示す(points)予測ブロックの位置を特定し得る。次いで、コーディングされる現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算することによって、残差ビデオブロックが形成され、ピクセル差値が形成される。一般に、動き推定コンポーネント221はルマ成分に対する動き推定を実行し、動き補償コンポーネント219はクロマ成分とルマ成分の両方に対するルマ成分に基づいて計算された動きベクトルを使用する。予測ブロック及び残差ブロックは、スケーリング及び量子化コンポーネント213を変換するために転送される。
【0065】
パーティション化されたビデオ信号201はまた、イントラピクチャ推定コンポーネント215及びイントラピクチャ予測コンポーネント217に送られる。動き推定コンポーネント221及び動き補償コンポーネント219と同様に、イントラピクチャ推定コンポーネント215及びイントラピクチャ予測コンポーネント217は、高度に統合されてもよいが、概念的な目的のために別個に図示される。イントラピクチャ推定コンポーネント215及びイントラピクチャ予測コンポーネント217は、上述のように、フレーム間の動き推定コンポーネント221及び動き補償コンポーネント219によって実行されるインター予測の代わりに、現在のフレーム内のブロックに対する現在のブロックをイントラ予測する(intra-predict)。特に、イントラピクチャ推定コンポーネント215は、現在のブロックをエンコーディングするために使用するイントラ予測モードを決定する。いくつかの例では、イントラピクチャ推定コンポーネント215は、複数のテストされたイントラピクチャ予測モードから現在のブロックをエンコーディングするために、適切なイントラ予測モードを選択する。選択されたイントラ予測モードは、次いで、エンコーディングのためにヘッダフォーマッティング及びCABACコンポーネント231に転送される。
【0066】
例えば、イントラピクチャ推定コンポーネント215は、種々のテストされたイントラ予測モードについてレート歪み解析を使用してレート歪み値を計算し、テストされたモードの中で最良のレート歪み特性を有するイントラ予測モードを選択する。レート歪み解析は、概して、エンコーディングされたブロックとエンコーディングされたブロックを生成するためにエンコーディングされた元のエンコーディングされていない(unencoded)ブロックとの間の歪み(又はエラー)の量、及びエンコーディングされたブロックを生成するために使用されるビットレート(例えば、ビット数)を決定する。イントラピクチャ推定コンポーネント215は、種々のエンコーディングされたブロックに対する歪み及びレートから比を計算して、どのイントラ予測モードがブロックに対する最良のレート歪み値を示すかを決定する。加えて、イントラピクチャ推定コンポーネント215は、レート歪み最適化(RDO)に基づく深さモデリングモード(DMM)を使用して深さマップの深さブロックをコーディングする(code)ように構成され得る。
【0067】
イントラピクチャ予測コンポーネント217は、エンコーダに実装されるときイントラピクチャ推定コンポーネント215によって決定された選択されたイントラ予測モードに基づいて予測ブロックから残差ブロックを生成し得る、又は、デコーダに実装されるときビットストリームから残差ブロックを読み取り得る。残差ブロックは、行列として表される予測ブロックと元のブロックとの間の値の差を含む。残差ブロックは、次いで、変換スケーリング及び量子化コンポーネント213に転送される。イントラピクチャ推定コンポーネント215及びイントラピクチャ予測コンポーネント217は、ルマ成分及びクロマ成分の両方に対して動作し得る。
【0068】
変換スケーリング及び量子化コンポーネント213は、残差ブロックをさらに圧縮するように構成される。変換スケーリング及び量子化コンポーネント213は、離散コサイン変換(DCT)、離散サイン変換(DST)、又は概念的に類似した変換などの変換を残差ブロックに適用し、残差変換係数値(residual transform coefficient values)を含むビデオブロックを生成する。ウェーブレット変換、整数変換、サブバンド変換又は他のタイプの変換も使用することができる。変換は、残差情報をピクセル値ドメインから変換ドメイン、例えば周波数ドメインに変換し得る。変換スケーリング及び量子化コンポーネント213はまた、変換された残差情報を、例えば周波数に基づいてスケーリングするように構成される。そのようなスケーリングは、異なる周波数情報が異なる粒度(granularities)で量子化されるように、残差情報にスケールファクタを適用することを含み、これは、再構成されたビデオの最終的な視覚品質に影響を及ぼし得る。変換スケーリング及び量子化コンポーネント213はまた、ビットレートをさらに低下させるために変換係数を量子化するように構成される。量子化プロセスは、係数のいくつか又は全てに関連するビット深さを低減し得る。量子化の程度は、量子化パラメータを調整することによって修正され得る。いくつかの例では、変換スケーリング及び量子化コンポーネント213は、次いで、量子化された変換係数を含む行列の走査を実行し得る。量子化された変換係数は、ヘッダフォーマッティング及びCABACコンポーネント231に転送され、ビットストリームでエンコーディングされる。
【0069】
スケーリング及び逆変換コンポーネント229は、動き推定をサポートするために変換スケーリング及び量子化コンポーネント213の逆演算(reverse operation)を適用する。スケーリング及び逆変換コンポーネント229は、例えば、後に別の現在のブロックの予測ブロックとなり得る参照ブロックとして使用するために、逆スケーリング、変換、及び/又は量子化を適用して、ピクセルドメイン内の残差ブロックを再構成する。動き推定コンポーネント221及び/又は動き補償コンポーネント219は、後のブロック/フレームの動き推定に使用するために、残差ブロックを対応する予測ブロックに戻って加算することによって参照ブロックを計算し得る。フィルタは、スケーリング、量子化、及び変換の間に生成されるアーチファクトを軽減するために、再構成された参照ブロックに適用される。このようなアーチファクトは、そうでなければ、後続のブロックが予測されるときに不正確な予測を引き起こし得る(及び追加のアーチファクトを作り出す)。
【0070】
フィルタ制御分析コンポーネント227及びインループフィルタコンポーネント225は、残差ブロック及び/又は再構成された画像ブロックにフィルタを適用する。例えば、スケーリング及び逆変換コンポーネント229からの変換された残差ブロックは、元の画像ブロックを再構成するために、イントラピクチャ予測コンポーネント217及び/又は動き補償コンポーネント219からの対応する予測ブロックと組み合わされ得る。フィルタは、次いで、再構成された画像ブロックに適用され得る。いくつかの例では、フィルタは、代わりに、残差ブロックに適用され得る。図2の他のコンポーネントと同様に、フィルタ制御分析コンポーネント227及びインループフィルタコンポーネント225は、高度に統合され、一緒に実装されてもよいが、概念的な目的のために別々に示されている。再構成された参照ブロックに適用されるフィルタは、特定の空間領域に適用され、そのようなフィルタがどのように適用されるかを調整するための複数のパラメータを含む。フィルタ制御分析コンポーネント227は、再構成された参照ブロックを分析して、どこにそのようなフィルタが適用されるべきかを決定し、対応するパラメータをセットする。このようなデータは、エンコーディングのためのフィルタ制御データとしてヘッダフォーマット及びCABACコンポーネント231に転送される。インループフィルタコンポーネント225は、フィルタ制御データに基づいてそのようなフィルタを適用する。フィルタは、デブロッキングフィルタ、ノイズ抑制フィルタ、SAOフィルタ、及び適応ループフィルタを含み得る。そのようなフィルタは、例に応じて、空間/ピクセル領域(例えば、再構成されたピクセルブロックの)又は周波数領域に適用され得る。
【0071】
エンコーダとして動作するとき、フィルタリングされた再構成された画像ブロック、残差ブロック、及び/又は予測ブロックは、上述のように動き推定における後の使用のために、デコーディングされたピクチャバッファコンポーネント223に記憶される。デコーダとして動作するとき、デコーディングされたピクチャバッファコンポーネント223は、出力ビデオ信号の一部として、再構成されフィルタリングされたブロックを記憶し、ディスプレイに向かって転送する。デコーディングされたピクチャバッファコンポーネント223は、予測ブロック、残差ブロック、及び/又は再構成された画像ブロックを記憶することができる任意のメモリデバイスであり得る。
【0072】
ヘッダフォーマット及びCABACコンポーネント231は、コーデックシステム200の種々のコンポーネントからデータを受信し、デコーダに向けて送信するために、そのようなデータをコーディングされたビットストリームにエンコーディングする。具体的には、ヘッダフォーマッティング及びCABACコンポーネント231は、一般的な制御データ及びフィルタ制御データのような制御データをエンコーディングするための種々のヘッダを生成する。さらに、イントラ予測及び動きデータを含む予測データ、並びに量子化変換係数データの形の残差データは、すべてビットストリームにエンコーディングされる。最終ビットストリームは、元のパーティション化されたビデオ信号201を再構成するためにデコーダによって望まれる全ての情報を含む。そのような情報は、また、イントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)、種々のブロックに対するエンコーディングコンテキストの定義、最も可能性の高いイントラ予測モードの表示、パーティション情報の表示などを含み得る。このようなデータは、エントロピーコーディングを用いることによってエンコーディングされ得る。例えば、情報は、コンテキスト適応可変長コーディング(CAVLC)、CABAC、構文ベースのコンテキスト適応バイナリ演算コーディング(SBAC)、確率区間パーティション化エントロピー(PIPE)コーディング、又は別のエントロピーコーディング技術を用いることによって、エンコーディングされ得る。エントロピーコーディングに続いて、コーディングされたビットストリームは、別の装置(例えば、ビデオデコーダ)に送信され得る又は後の送信又は検索のためにアーカイブされ得る。
【0073】
図3は、例示的なビデオエンコーダ300を示すブロック図である。ビデオエンコーダ300は、コーデックシステム200のエンコーディング機能を実装するため、及び/又は動作方法100のステップ101、103、105、107、及び/又は109を実装するために用いられ得る。エンコーダ300は、入力ビデオ信号をパーティション化し、その結果、パーティション化されたビデオ信号301が得られ、これは、パーティション化されたビデオ信号201と実質的に同様である。パーティション化されたビデオ信号301は、次いで、エンコーダ300のコンポーネントによって圧縮され、ビットストリームにエンコーディングされる。
【0074】
具体的には、パーティション化されたビデオ信号301は、イントラ予測のために、イントラピクチャ予測コンポーネント317に転送される。イントラピクチャ予測コンポーネント317は、イントラピクチャ推定コンポーネント215及びイントラピクチャ予測コンポーネント217と実質的に類似し得る。パーティション化されたビデオ信号301はまた、デコーディングされたピクチャバッファコンポーネント323内の参照ブロックに基づくインター予測のために、動き補償コンポーネント321に転送される。動き補償コンポーネント321は、動き推定コンポーネント221及び動き補償コンポーネント219と実質的に同様であり得る。イントラピクチャ予測コンポーネント317及び動き補償コンポーネント321からの予測ブロック及び残差ブロックは、残差ブロックの変換及び量子化のために変換及び量子化コンポーネント313に転送される。変換及び量子化コンポーネント313は、変換スケーリング及び量子化コンポーネント213と実質的に類似し得る。変換され量子化された残差ブロック及び対応する予測ブロックは(関連する制御データとともに)、ビットストリームにコーディングするためにエントロピーコーディングコンポーネント331に転送される。エントロピーコーディングコンポーネント331は、ヘッダフォーマット及びCABACコンポーネント231と実質的に類似し得る。
【0075】
変換及び量子化された残差ブロック及び/又は対応する予測ブロックはまた、動き補償コンポーネント321によって使用される参照ブロックへの再構成のために、変換及び量子化コンポーネント313から逆変換及び量子化コンポーネント329に転送される。逆変換及び量子化コンポーネント329は、スケーリング及び逆変換コンポーネント229と実質的に類似し得る。インループフィルタコンポーネント325のインループフィルタはまた、例に応じて、残差ブロック及び/又は再構成された参照ブロックにも適用される。インループフィルタコンポーネント325は、フィルタ制御分析コンポーネント227及びインループフィルタコンポーネント225に実質的に類似し得る。インループフィルタコンポーネント325は、インループフィルタコンポーネント225に関して論じられたように、複数のフィルタを含み得る。フィルタリングされたブロックは、次いで、動き補償コンポーネント321による参照ブロックとして使用するために、デコーディングされたピクチャバッファコンポーネント323に記憶される。デコーディングされたピクチャバッファコンポーネント323は、デコーディングされたピクチャバッファコンポーネント223と実質的に類似し得る。
【0076】
図4は、例示的なビデオデコーダ400を示すブロック図である。ビデオデコーダ400は、コーデックシステム200のデコーディング機能を実装するために及び/又は動作方法100のステップ111、113、115、及び/又は117を実装するために使用され得る。デコーダ400は、例えばエンコーダ300からビットストリームを受信し、エンドユーザに表示するために、ビットストリームに基づいて再構成された出力ビデオ信号を生成する。
【0077】
ビットストリームはエントロピーデコーディングコンポーネント433によって受信される。エントロピーデコーディングコンポーネント433は、CAVLC、CABAC、SBAC、PIPEコーディング、又は他のエントロピーコーディング技術などのエントロピーデコーディングスキームを実装するように構成される。例えば、エントロピーデコーディングコンポーネント433は、ビットストリーム内のコードワードとしてエンコーディングされた追加データを解釈するためのコンテキストを提供するために、ヘッダ情報を用い得る。デコーディングされた情報は、一般的な制御データ、フィルタ制御データ、パーティション情報、動きデータ、予測データ、及び残差ブロックからの量子化変換係数のような、ビデオ信号をデコーディングするための任意の所望の情報を含む。量子化された変換係数は、残差ブロックへの再構成のために、逆変換及び量子化コンポーネント429に転送される。逆変換及び量子化コンポーネント429は、逆変換及び量子化コンポーネント329と類似し得る。
【0078】
再構成された残差ブロック及び/又は予測ブロックは、イントラ予測動作に基づいて画像ブロックへの再構成のために、イントラピクチャ予測コンポーネント417に転送される。イントラピクチャ予測コンポーネント417は、イントラピクチャ推定コンポーネント215及びイントラピクチャ予測コンポーネント217に類似し得る。具体的には、イントラピクチャ予測コンポーネント417は、フレーム内の参照ブロックを位置特定するために予測モードを用い、イントラ予測画像ブロックを再構成するために残差ブロックを結果に適用する。再構成されたイントラ予測画像ブロック及び/又は残差ブロック及び対応するインター予測データは、デコーディされたピクチャバッファコンポーネント423に、インループフィルタコンポーネント425を介して転送され、これらのコンポーネントは、デコーディングされたピクチャバッファコンポーネント223及びインループフィルタコンポーネント225にそれぞれ実質的に類似し得る。インループフィルタコンポーネント425は、再構成された画像ブロック、残差ブロック及び/又は予測ブロックをフィルタリングし、そのような情報はデコーディングされたピクチャバッファコンポーネント423に記憶される。デコーディングされたピクチャバッファコンポーネント423からの再構成された画像ブロックは、インター予測のために動き補償コンポーネント421に転送される。動き補償コンポーネント421は、動き推定コンポーネント221及び/又は動き補償コンポーネント219と実質的に類似し得る。具体的には、動き補償コンポーネント421は、予測ブロックを生成するために参照ブロックからの動きベクトルを用い、画像ブロックを再構成するために残差ブロックを結果に適用する。結果として得られた再構成されたブロックはまた、インループフィルタコンポーネント425を介してデコーディングされたピクチャバッファコンポーネント423に転送され得る。デコーディングされたピクチャバッファコンポーネント423は、パーティション情報を介してフレームに再構成されることができる追加の再構成された画像ブロックを記憶し続ける。このようなフレームはまた、シーケンスに配置され得る。このシーケンスは、再構成された出力ビデオ信号としてディスプレイに向けて出力される。
【0079】
図5は、ピクチャビデオストリーム500から抽出された複数のサブピクチャビデオストリーム501、502、及び503を示す概略図である。例えば、サブピクチャビデオストリーム501~503の各々及び/又はピクチャビデオストリーム500は、方法100に従って、コーデックシステム200及び/又はエンコーダ300などのエンコーダによってエンコーディングされ得る。さらに、サブピクチャビデオストリーム501~503及び/又はピクチャビデオストリーム500は、コーデックシステム200及び/又はデコーダ400などのデコーダによってデコーディングされ得る。
【0080】
ピクチャビデオストリーム500は、経時的に提示される複数のピクチャを含む。図5に示すように、ピクチャビデオストリーム500は、仮想現実(VR)アプリケーションでの使用のために構成される。VRは、ユーザが球体の中心にいるかのように表示することができるビデオコンテンツの球(sphere)をコーディングすることによって動作する。各ピクチャには、球全体が含まれる。一方、ビューポートとして知られるピクチャの一部のみがユーザに表示される。例えば、ユーザは、ユーザの頭の動きに基づいて球のビューポートを選択し表示するヘッドマウントディスプレイ(HMD)を用い得る。これは、ビデオによって描かれた仮想空間に物理的に存在するという印象を与える。この結果を達成するために、ビデオシーケンスの各ピクチャは、対応する瞬間におけるビデオデータの球全体を含む。しかし、画像の小さい部分(例えば、単一のビューポート)のみがユーザに表示される。ピクチャの残りの部分は、レンダリングされることなくデコーダで廃棄される。ピクチャ全体は、ユーザの頭の動きに応じて異なるビューポートを動的に選択し、表示することができるように、送信され得る。
【0081】
図示の例では、ピクチャビデオストリーム500のピクチャは、それぞれ、利用可能なビューポートに基づいて、サブピクチャに細分化されることができる。従って、各ピクチャ及び対応するサブピクチャは、時間的提示の一部として時間的位置(例えば、ピクチャ順序)を含む。サブピクチャビデオストリーム501~503は、細分化(sub-division)が経時的に一貫して適用されるときに作成される。このような一貫性のある細分化(consistent sub-division)は、サブピクチャビデオストリーム501~503を生成し、各ストリームは、ピクチャビデオストリーム500内の対応するピクチャに対する所定のサイズ、形状、及び空間位置のサブピクチャのセットを含む。さらに、サブピクチャビデオストリーム501~503内のサブピクチャのセットは、プレゼンテーション時間にわたって時間的位置が変化する。従って、サブピクチャビデオストリーム501~503のサブピクチャは、時間的位置に基づいて時間領域内に整列させることができる。次に、各時間的位置におけるサブピクチャビデオストリーム501~503からのサブピクチャを、表示のためにピクチャビデオストリーム500を再構成するために、所定の空間的位置に基づいて空間領域においてマージすることができる。具体的には、サブピクチャビデオストリーム501~503は、それぞれ、別々のサブビットストリームにエンコーディングすることができる。そのようなサブビットストリームが一緒にマージされるとき、それらは、時間にわたるピクチャの全セットを含むビットストリームを生じる。結果として得られたビットストリームは、デコーディングのためにデコーダに向かって送信され、ユーザの現在選択されているビューポートに基づいて表示されることができる。
【0082】
VRビデオの問題の一つは、サブピクチャビデオストリーム501~503の全てが高品質(例えば、高解像度)でユーザに送信され得ることである。これは、デコーダが、ユーザの現在のビューポートを動的に選択し、対応するサブピクチャビデオストリーム501~503からのサブピクチャ(複数可)をリアルタイムで表示することを可能にする。しかしながら、ユーザは、例えば、サブピクチャビデオストリーム501からの単一のビューポートしか見ないことがあり、一方、サブピクチャビデオストリーム502~503は破棄される。そのようにサブピクチャビデオストリーム502~503を高品質で送信することは、ユーザに対応する利点を提供することなく、かなりの量の帯域幅を使用することがある。コーディング効率を改善するために、VRビデオは、各ビデオストリーム500が異なる品質/解像度でエンコーディングされる複数のビデオストリーム500にエンコーディングされ得る。この方法では、デコーダは、現在のサブピクチャビデオストリーム501に対する要求を送信することができる。これに応答して、エンコーダ(又は中間スライサ又は他のコンテンツサーバ)は、高品質のビデオストリーム500から高品質のサブピクチャビデオストリーム501を選択し、低品質のビデオストリーム500から低品質のサブピクチャビデオストリーム502~503を選択することができる。エンコーダは、次いで、デコーダに送信するために、このようなサブビットストリームを一緒に完全にエンコーディングされたビットストリームにマージすることができる。この方法では、デコーダは、現在のビューポートが高品質であり、他のビューポートがより低品質である一連の画像を受信する。さらに、最高品質のサブピクチャは、概して、(頭の動きの無い)ユーザに表示され、低品質のサブピクチャは、概して、破棄され、これは、機能性とコーディング効率とのバランスを取る。
【0083】
ユーザがサブピクチャビデオストリーム501を見ることからサブピクチャビデオストリーム502に変わる場合、デコーダは、新しいサブピクチャビデオストリーム502が高品質で送信されることを要求する。エンコーダは、次いで、それに応じて、マージングメカニズムを変更することができる。
【0084】
ピクチャビデオストリーム500は、サブピクチャの実用的な用途を説明するために含まれる。サブピクチャは多くの用途を有し、本開示はVR技術に限定されないことに留意されたい。例えば、サブピクチャは、テレビ会議システムにも用いられ得る。このような場合、各ユーザのビデオフィードは、サブピクチャビデオストリーム501、502、及び/又は503のような、サブピクチャビットストリームに含まれる。システムは、そのようなサブピクチャビデオストリーム501、502、及び/又は503を受信し、それらを異なる位置、解像度等で組み合わせて(combine)、ユーザに送信して戻すための完全なピクチャビデオストリーム500を生成することができる。これは、テレビ会議システムが、例えば、現在話しているユーザを強調する又はもはや話していないユーザを強調しない(de-emphasis)ようにサブピクチャビデオストリーム501、502、及び/又は503のサイズを増加又は減少することによって、変化するユーザ入力に基づいて、ピクチャビデオストリーム500を動的に変更することを可能にする。従って、サブピクチャは、ユーザ挙動の変化に基づいて、ピクチャビデオストリーム500を実行時に動的に変更することを可能にする多くのアプリケーションを有する。この機能は、サブピクチャビデオストリーム501、502、及び/又は503を、ピクチャビデオストリーム500から及び/又はピクチャビデオストリーム500に抽出及び/又は組み合わせることによって達成され得る。
【0085】
図6は、サブビットストリーム601に分割された例示的なビットストリーム600を示す概略図である。ビットストリーム600は、ピクチャビデオストリーム500のようなピクチャビデオストリームを含み得、サブビットストリーム601は、サブピクチャビデオストリーム501、502、及び/又は503のようなサブピクチャビデオストリームを含み得る。例えば、ビットストリーム600及びサブビットストリーム601は、コーデックシステム200及び/又はコーデックシステム200によってデコーディングするためのエンコーダ300及び/又はデコーダ400によって生成することができる。別の例として、ビットストリーム600及びサブビットストリーム601は、ステップ111においてデコーダによる使用のために、方法100のステップ109においてエンコーダによって生成され得る。
【0086】
ビットストリーム600は、シーケンスパラメータセット(SPS)610、複数のピクチャパラメータセット(PPS)611、複数のスライスヘッダ615、及び画像データ620を含む。SPS610は、ビットストリーム600に含まれるビデオシーケンス内のすべてのピクチャに共通のシーケンスデータを含む。このようなデータは、ピクチャサイズ、ビット深さ、コーディングツールパラメータ、ビットレート制限などを含むことができる。PPS611は、ピクチャ全体に適用されるパラメータを含む。したがって、ビデオシーケンス内の各ピクチャは、PPS611を参照し得る。各ピクチャはPPS611を参照するが、単一のPPS611は、いくつかの例において複数のピクチャのためのデータを含むことができることに留意されたい。例えば、複数の類似のピクチャは、類似のパラメータに従ってコーディングされ得る。このような場合、単一のPPS611は、このような類似のピクチャのためのデータを含み得る。PPS611は、対応するピクチャ、量子化パラメータ、オフセット等におけるスライスに対して利用可能なコーディングツールを示すことができる。スライスヘッダ615は、ピクチャ内の各スライスに固有のパラメータを含む。従って、ビデオシーケンスにおいて、スライス当たり1つのスライスヘッダ615が存在し得る。スライスヘッダ615は、スライスタイプ情報、ピクチャオーダカウント(POC)、参照ピクチャリスト、予測重み、タイルエントリポイント、デブロッキングパラメータ等を含み得る。スライスヘッダ615は、いくつかのコンテキストにおいてタイルグループヘッダとも呼ばれることがあることに留意されたい。いくつかの例では、ビットストリーム600はまた、単一ピクチャ内の全てのスライスに適用されるパラメータを含む構文構造である、ピクチャヘッダを含み得ることに留意されたい。この理由のために、ピクチャヘッダ及びスライスヘッダ615は、いくつかのコンテキストにおいて互換的に使用され得る。例えば、特定のパラメータは、そのようなパラメータがピクチャ内の全てのスライスに共通であるか否かに応じて、スライスヘッダ615とピクチャヘッダとの間で移動され得る。
【0087】
画像データ620は、インター予測、イントラ予測、及び/又はインターレイヤ予測に従ってエンコーディングされたビデオデータ、ならびに対応する変換及び量子化された残差データを含む。例えば、ビデオシーケンスは、複数のピクチャ621を含む。ピクチャ621は、フレーム又はそのフィールドを生成するルマサンプルのアレイ及び/又はクロマサンプルのアレイである。フレームは、ビデオシーケンス内の対応する瞬間に、ユーザに完全又は部分的に表示することを意図した完全な画像である。ピクチャ621は、1つ以上のスライスを含む。スライスは、単一のNALユニットに排他的に含まれる、ピクチャ621の整数の完全なタイル又は整数の連続する完全なCTU行(例えば、タイル内の)として定義され得る。スライスはさらにCTU及び/又はCTBに分けられる。CTUは、コーディングツリーによってパーティション化することができるあらかじめ定義されたサイズのサンプルのグループである。CTBはCTUのサブセットであり、CTUのルマ成分又はクロマ成分を含む。CTU/CTBはさらにコーディングツリーに基づいてコーディングブロックに分けられる。コーディングブロックは、次いで、予測メカニズムに従ってエンコーディング/デコーディングすることができる。
【0088】
ピクチャ621は、複数のサブピクチャ623及び624に分割することができる。サブピクチャ623及び/又は624は、ピクチャ621内の1つ以上のスライスの長方形領域である。従って、スライスの各々、及びその細分(sub-divisions)は、サブピクチャ623及び/又は624に割り当てることができる。これは、ピクチャ621の異なる領域が、どのサブピクチャ623及び/又は624がそのような領域に含まれるかに応じて、コーディングの観点から異なって処理されることを可能にする。
【0089】
サブビットストリーム601は、サブビットストリーム抽出プロセス605に従ってビットストリーム600から抽出することができる。サブビットストリーム抽出プロセス605は、ターゲットセットに含まれるNALユニットを含む出力サブビットストリームをもたらすターゲットセットの一部ではないビットストリームからNALユニットを除去する指定されたメカニズムである。NALユニットは、スライスを含む。従って、サブビットストリーム抽出プロセス605は、スライスのターゲットセットを保持し、他のスライスを除去する。ターゲットセットは、サブピクチャ境界(sub-picture boundaries)に基づいて選択することができる。図示の例では、サブピクチャ623に含まれるスライスは、ターゲットセットに含まれ、サブピクチャ624に含まれるスライスは、ターゲットセットに含まれない。そのようなものとして、サブビットストリーム抽出プロセス605は、ビットストリーム600と実質的に同様であるが、サブピクチャ624を除外する一方で、サブピクチャ623を含むサブビットストリーム601を生成する。サブビットストリーム抽出プロセス605は、ユーザの挙動/要求に基づいてビットストリーム600を動的に変更するように構成されたエンコーダ及び/又は関連するスライサによって実行され得る。
【0090】
従って、サブビットストリーム601は、入力ビットストリーム600に適用されるサブビットストリーム抽出プロセス605の結果である抽出されたビットストリームである。入力ビットストリーム600は、サブピクチャのセットを含む。しかしながら、抽出されたビットストリーム(例えば、サブビットストリーム601)は、サブビットストリーム抽出プロセス605への入力ビットストリーム600のサブピクチャのサブセットのみを含む。図示の例では、入力ビットストリーム600に含まれるサブピクチャのセットは、サブピクチャ623及び624を含み、一方、サブビットストリーム601のサブピクチャのサブセットは、サブピクチャ623を含むが、サブピクチャ624を含まない。任意の数のサブピクチャ623~624を用いることができることに留意されたい。例えば、ビットストリーム600は、N個のサブピクチャ623~624を含み得、サブビットストリーム601は、N-1個以下のサブピクチャ623を含み得、ここでNは任意の整数値である。
【0091】
サブビットストリーム抽出プロセス605は、場合によっては、コーディングエラーを生成することがある。例えば、サブピクチャ623~624は、サブピクチャIDなどのサブピクチャ情報に関連付けられ得る。サブピクチャIDは、サブピクチャ623又は624などの対応するサブピクチャを一意に識別する。従って、サブピクチャIDは、ピクチャ621に対するサブピクチャ623~624の位置を示すため、及び/又はサブピクチャレベルコーディングプロセスを変更するために使用することができる。場合によっては、サブピクチャ情報は、サブピクチャ623~624の位置に基づいて推測することができる。従って、ビットストリーム600は、コーディング効率を高めるために、ビットストリーム600内のデータ量を減らすために、サブピクチャ623及び624に関連するこのようなサブピクチャ情報を省略し得る。しかしながら、サブピクチャ623又はサブピクチャ624が存在しない場合、デコーダは、そのようなサブピクチャ情報を推測できない場合がある。従って、単純なサブビットストリーム抽出プロセス605は、適合(conforming)ビットストリーム600に適用され、適合していないサブビットストリーム601を生成し得る。ビットストリーム600/サブビットストリーム601は、ビットストリーム600/サブビットストリーム601がVVCのような規格に準拠するときに適合し、従って、規格にも準拠する任意のデコーダによって正しくデコーディングすることができる。そのようなものとして、単純なサブビットストリーム抽出プロセス605は、デコーディング可能なビットストリーム600をデコーディング不可能なサブビットストリーム601に変換することができる。
【0092】
この問題に取り組むために、本開示は、改善されたサブビットストリーム抽出プロセス605を含む。具体的には、サブビットストリーム抽出プロセス605は、サブビットストリーム601内のサブピクチャ(複数可)623に対するサブピクチャIDを、たとえそのようなサブピクチャIDがビットストリーム600から省略された場合でも、エンコーディングする。例えば、サブピクチャIDは、SPSサブピクチャ識別子(sps_subpic_id[i])構文構造635に含まれ得る。sps_subpic_id[i]構文構造635は、SPS610に含まれ、i個のサブピクチャIDを含み、ここで、iは、サブビットストリーム601に含まれるサブピクチャ(複数可)623の数である。さらに、サブビットストリーム抽出プロセス605はまた、抽出されたビットストリームに1つ以上のサブピクチャIDを含む構文要素(例えば、sps_subpic_id[i]構文構造635)のビットの長さをエンコーディングし得る。例えば、長さは、SPSサブピクチャID長さマイナス1(sps_subpic_id_len_minus1)構文構造633に含めることができる。sps_subpic_id_len_minus1構文構造633は、sps_subpic_id[i]構文構造635マイナス1(1を引いた)のビットの長さを含み得る。マイナス1コーディングアプローチは、ビットを節約するために、値を実際の値より1少ないものとしてエンコーディングする。デコーダは、1を加えることによって実際の値を導出することができる。従って、sps_subpic_id_len_minus1構文構造633は、sps_subpic_id_len_minus1+1とも呼ばれることがある。従って、デコーダは、sps_subpic_id[i]構文構造635に関連するビット数を決定するためにsps_subpic_id_len_minus1構文構造633を使用することができ、したがって、sps_subpic_id[i]構文構造635を解釈するためにsps_subpic_id_len_minus1構文構造633を使用することができる。デコーダは、次いで、sps_subpic_id_len_minus1構文構造633及びsps_subpic_id[i]構文構造635に基づいて、サブピクチャ623をデコーディングすることができる。
【0093】
加えて、サブビットストリーム抽出プロセス605は、サブピクチャ623に関連するサブピクチャ情報がサブビットストリーム601内に存在することを示すために、サブビットストリーム601内のフラグをエンコーディング/設定することができる。特定の例として、フラグは、サブピクチャ情報が存在するフラグ(subpic_info_present_flag)631としてエンコーディングすることができる。従って、subpic_info_present_flag631は、sps_subpic_id_len_minus1構文構造633及びsps_subpic_id[i]構文構造635のような、サブピクチャのサブセットに関連するサブピクチャ情報が抽出されたビットストリーム(サブビットストリーム601)に存在することを示すように設定することができる。さらに、デコーダは、sps_subpic_id_len_minus1構文構造633及びsps_subpic_id[i]構文構造635のような、サブピクチャのサブセットに関連するサブピクチャ情報が抽出されたビットストリーム(サブビットストリーム601)に存在することを決定するために、subpic_info_present_flag631を読み取ることができる。特定の例として、エンコーダ/スライサは、コーディングされたレイヤビデオシーケンス(CLVS)に対してサブピクチャ情報が存在すること、及び、抽出されたビットストリーム(サブビットストリーム601)が入力ビットストリーム600からのサブビットストリーム抽出プロセス605の結果であるとき、CLVSの各ピクチャ621が1より多いサブピクチャ623及び624を含むことを指定するためにフラグが1に設定されることを要求することができる。CLVSは、ピクチャの1つ以上のレイヤを含むエンコーディングされたビデオデータのシーケンスである。レイヤは、すべてが特定のレイヤID値を有するNALユニットのセットである。ピクチャ621は、対応するレイヤのすべてのピクチャ621が、サイズ、解像度、信号対雑音比(SNR)など、類似の特性を有する複数のレイヤに編成されてもされなくてもよい。
【0094】
前述の情報は、ここでは、以下でより詳細に説明される。HEVCは、パーティション化スキームとして、レギュラースライス(regular slices)、従属スライス(dependent slices)、タイル、及びウェーブフロント並列処理(WPP)を使用し得る。これらのパーティション化スキームは、最大転送ユニット(MTU)サイズのマッチング、並列処理、及びエンドツーエンド遅延の低減に適用され得る。各レギュラースライスは、別々のNALユニットにカプセル化され得る。エントロピーコーディング依存性(Entropy coding dependency)と、イントラサンプル予測、動き情報予測、及びコーディングモード予測を含むインピクチャ予測は、スライス境界を越えて(across slice boundaries)無効にされ得る。したがって、レギュラースライスを、同じピクチャ内の他のレギュラースライスから独立して再構成することができる。しかしながら、スライスは、ループフィルタリング操作のために、依然としていくつかの相互依存性を有する可能性がある。
【0095】
レギュラースライスベースの並列化は、重要なプロセッサ間通信又はコア間通信を必要としない場合がある。一つの例外は、プロセッサ間及び/又はコア間データ共有が、予測的にコーディングされたピクチャをデコーディングするときに、動き補償のために重要であり得ることである。このようなプロセスは、インピクチャ予測のために、プロセッサ間又はコア間データ共有よりも多くの処理リソースを含むことがある。しかしながら、同じ理由のために、レギュラースライスの使用は、スライスヘッダのビットコストのため、及びスライス境界を横切る予測の欠如のために、実質的なコーディングオーバーヘッド(coding overhead)をもたらすことがある。さらに、レギュラースライスはまた、レギュラースライスのインピクチャ独立性及び各レギュラースライスが別々のNALユニットにカプセル化されるという事実のために、MTUサイズ要件に適合するビットストリームパーティション化のためのメカニズムとして機能する。多くの場合、平行化の目標とMTUサイズマッチングの目標は、ピクチャのスライスレイアウトに対する要求と矛盾する。
【0096】
従属スライスは、短いスライスヘッダを有し、インピクチャ予測を壊すことなく、ツリーブロック境界でビットストリームのパーティション化を可能にする。従属スライスは、複数のNALユニットへのレギュラースライスの分割を提供する。これは、レギュラースライス全体のエンコーディングが終了する前に、レギュラースライスの一部が送信されることを可能にすることにより、エンドツーエンド遅延を低減する。
【0097】
WPPでは、ピクチャはCTBの単一の行にパーティション化されている。エントロピーデコーディング及び予測は、他のパーティションのCTBからのデータを使用し得る。並列処理がCTB行の並列デコーディングを通じて可能である。CTB行のデコーディングの開始は、サブジェクトCTBがデコーディングされる前に、サブジェクトCTBの右上のCTBに関連するデータが利用可能であることを確実にするために、例に応じて、1つ又は2つのCTBによって遅延され得る。このスタッガードスタート(staggered start)は、波面の外観を作成する。このプロセスは、最大でピクチャにCTB行が含まれるのと同じ数のプロセッサ/コアによる並列化をサポートする。ピクチャ内の隣接するツリーブロック行間のインピクチャ予測が可能であるため、インピクチャ予測を可能にするためのプロセッサ間/コア間通信は重要であり得る。WPPパーティション化は、追加のNALユニットの生成をもたらさない。従って、WPPはMTUサイズマッチングのために使用されないことがある。しかし、MTUサイズのマッチングが必要な場合、レギュラースライスが一定のコーディングオーバーヘッドを持つWPPとともに使用できる。
【0098】
タイルは、ピクチャをタイルの列及び行にパーティション化する水平と垂直の境界を定義する。CTBのスキャン順序は、タイルのCTBラスタスキャンの順序で、タイル内でローカルであり得る。従って、タイルは、ピクチャのタイルラスタスキャンの順序で次のタイルの左上CTBをデコーディングする前に完全にデコーディングされ得る。レギュラースライスと同様に、タイルは、エントロピーデコーディング依存性だけでなく、インピクチャ予測依存性も破壊する。しかし、タイルは個々のNALユニットには含まれない場合がある。従って、タイルはMTUサイズのマッチングに使用されない可能性がある。各タイルは、1つのプロセッサ/コアによって処理できる。隣接するタイルをデコーディングする処理ユニット間のインピクチャ予測のために用いられるプロセッサ間/コア間通信は、スライスが再構成されたサンプル及びメタデータの共有に関連する1より多いタイル及びループフィルタリングを含むとき、共有スライスヘッダを伝達することに制限され得る。1より多いタイル又はWPPセグメントが1つのスライスに含まれるとき、スライスの最初のタイル又はWPPセグメント以外の各タイル又はWPPセグメントに対するエントリポイントのバイトオフセット(entry point byte offset)が、スライスヘッダにおいてシグナリングされ得る。
【0099】
簡単のために、HEVCは、4つの異なるピクチャパーティション化スキームの適用に一定の制限を用いる。コーディングされたビデオシーケンスは、HEVCで指定されるほとんどのプロファイルにタイル及びウェーブフロントの両方を含まないことがある。さらに、スライス及び/又はタイルごとに、以下の条件のいずれか又は両方が満たされなければならない。スライス内の全てのコーディングされたツリーブロックは、同じタイルに含まれる。更に、タイル内の全てのコーディングツリーブロックは同じスライスに含まれる。加えて、ウェーブフロントセグメントは正確に1つのCTB行を含む。WPPが使用されているとき、CTB行内で始まるスライスは、同じCTB行で終わる必要がある。
【0100】
VVCでは、タイルは、ピクチャをタイルの列及び行にパーティション化する水平及び垂直の境界を定義する。VVCは、タイルがブリック(bricks)を形成するようにさらに水平方向に分割されることを可能にする。さらに分割されないタイルもブリックであるとみなされ得る。CTBの走査順序は、ブリック内でローカルであるように変更される(例えば、ブリックのCTBラスタ走査の順序)。現在のブリックは、ピクチャのブリックラスタ走査の順序で次のブリックの左上CTBをデコーディングする前に完全にデコーディングされる。
【0101】
VVC内のスライスは、1つ以上のブリックを含み得る。各スライスは、別々のNALユニットにカプセル化される。エントロピーコーディング依存性と、イントラサンプル予測、動き情報予測、及びコーディングモード予測を含むインピクチャ予測は、スライス境界を越えて無効にされ得る。したがって、同じピクチャ内の他のレギュラースライスから独立して、レギュラースライスを再構成することができる。VVCは、長方形スライス及びラスタースキャンスライスを含む。長方形スライスは、ピクチャ内の長方形の領域を占める1つ以上のブリックを含み得る。ラスタ走査スライスは、ピクチャ内のブリックのラスタ走査順序である1つ以上のブリックを含み得る。
【0102】
VVCベースのWPPは、HEVC WPPが2つのCTU遅延を有し、一方、VVC WPPが1つのCTU遅延を有することを除いて、HEVC WPPと類似している。HEVC WPPに関して、新しいデコーディングスレッドは、前のCTU行の最初の2つのCTUがすでにデコーディングされた後に、割り当てられたCTU行の最初のCTUをデコーディングすることを開始できる。VVC WPPに関して、新しいデコーディングスレッドは、前のCTU行の最初のCTUがデコーディングされた後に、割り当てられたCTU行の最初のCTUをデコーディングすることを開示できる。
【0103】
PPSにおけるタイル、ブリック、及びスライスの例示的なシグナリングは、以下の通りである。
【表1-1】
【表1-2】
【表1-3】
【0104】
先行するシステムには、いくつかの問題がある。例えば、ビットストリームが最初にエンコーディングされるとき、ビットストリーム内のピクチャ内のスライスは、長方形スライスにパーティション化され得る。この場合、スライスIDはPPSからを省略され得る。この場合、signalled_slice_id_flagの値はビットストリームのPPSにおいてゼロに等しく設定され得る。しかし、ビットストリームからの1つ以上の長方形スライスが抽出されて別のビットストリームを形成するとき、スライスIDが、そのような抽出プロセスから生成されたビットストリームのPPS内に存在すべきである。
【0105】
概して、本開示は、ビットストリーム抽出プロセスを支援するためのシグナリングされるスライスIDのハンドリングを記載する。このテクニックの説明はVVCに基づいているが、他のビデオコーデック仕様にも適用され得る。
【0106】
上に挙げられた問題に取り組むための例示的なメカニズムは、以下の通りである。ビットストリームAとして示されるビットストリームのピクチャから1つ以上のスライスを抽出し、抽出プロセスから新しいビットストリームBを生成する方法が開示される。ビットストリームAは、少なくとも1つのピクチャを含む。ピクチャは、複数のスライスを含む。この方法は、ビットストリームAからパラメータセットを解析すること及びそのパラメータをビットストリームBに書き換えること(rewriting)を含む。signalled_slice_id_flagの値は、書き換えられたパラメータセットにおいて1に設定される。signalled_slice_id_length_minus1構文要素がビットストリームAのパラメータセットに存在するとき、signalled_slice_id_flagの値は、書き換えられたパラメータセットにコピーされる。signalled_slice_id_length_minus1構文要素がビットストリームAのパラメータセットに存在しないとき、signalled_slice_id_flagの値は、書き換えられたパラメータセットに設定される。例えば、signalled_slice_id_flagは、Ceil(Log2(num_slices_in_pic_minus1 + 1))-1に設定され得、ここでnum_slices_in_pic_minus1は、ビットストリームAのピクチャのスライス数マイナス1(1を引いた)に等しい。ビットストリームAから1つ以上のスライスが抽出される。抽出されたビットストリームBが次いで生成される。
【0107】
例示的なPPSセマンティクスは次のとおりである。1に設定されたsignalled_slice_id_flagは、各スライスのスライスIDがシグナリングされることを指定し得る。ゼロに設定されたsignalled_slice_id_flagは、スライスIDがシグナリングされないことを指定し得る。rect_slice_flagがゼロに等しいとき、signalled_slice_id_flagの値はゼロに等しくなると推測され得る。サブビットストリーム抽出の結果であり、その結果がピクチャに元々含まれていたスライスのサブセットを含むビットストリームの場合、signalled_slice_id_flagの値はPPSに対して1に等しく設定されるべきである。signalled_slice_id_length_minus1プラス1は、存在するときの構文要素slice_id[i]、及びスライスヘッダの構文要素slice_addressを表すために使用されるビット数を指定し得る。signalled_slice_id_length_minus1の値は、0、15を含む0から15までの範囲であり得る。存在しない場合、signalled_slice_id_length_minus1の値はCeil(Log2(num_slices_in_pic_minus1 + 1))-1に等しいと推定され得る。サブビットストリーム抽出の結果であり、その結果がピクチャに元々に含まれていたスライスのサブセットを含むビットストリームの場合、PPSに対するsignalled_slice_id_length_minus1の値は変更されないままであるべきである。
【0108】
図7は、例示的なビデオコーディングデバイス700の概略図である。ビデオコーディングデバイス700は、ここに記載されるように、開示される例/実施形態を実装するのに適している。ビデオコーディングデバイス700は、ダウンストリームポート720、アップストリームポート750、及び/又は、ネットワークを介してアップストリーム及び/又はダウンストリームでデータを通信するための送信機及び/又は受信機を含むトランシーバユニット(Tx/Rx)710を含む。ビデオコーディングデバイス700はまた、データを処理する論理ユニット及び/又は中央処理装置(CPU)を含むプロセッサ730及びデータを記憶するためのメモリ732を含む。ビデオコーディングデバイス700はまた、電気的、光学的、又は無線通信ネットワークを介したデータの通信のためにアップストリームポート750及び/又はダウンストリームポート720に結合された、電気的、光-電気(optical-to-electrical)(OE)コンポーネント、電気-光(electrical-to-optical)(EO)コンポーネント、及び/又は無線通信コンポーネントを含み得る。ビデオコーディングデバイス700はまた、ユーザに及びユーザからデータを通信するための入力及び/又は出力(I/O)デバイス760を含み得る。I/Oデバイス760は、ビデオデータを表示するためのディスプレイ、オーディオデータを出力するためのスピーカなどの出力デバイスを含み得る。I/Oデバイス760はまた、キーボード、マウス、トラックボールなどの入力デバイス、及び/又はそのような出力デバイスと対話するための対応するインターフェースを含み得る。
【0109】
プロセッサ730は、ハードウェア及びソフトウェアによって実装される。プロセッサ730は、1つ以上のCPUチップ、コア(例えば、マルチコアプロセッサ)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、及びデジタル信号プロセッサ(DSP)として実装され得る。プロセッサ730は、ダウンストリームポート720、Tx/Rx710、アップストリームポート750、及びメモリ732と通信している。プロセッサ730は、コーディングモジュール714を含む。コーディングモジュール714は、方法100、800、及び/又は900などの本明細書に記載される開示された実施形態を実装し、これは、ピクチャビデオストリーム500及び/又はサブピクチャビデオストリーム501~503を含むビットストリーム600及び/又はサブビットストリーム601を用い得る。また、コーディングモジュール714は、本明細書に記載される任意の他の方法/メカニズムを実装し得る。さらに、コーディングモジュール714は、コーデックシステム200、エンコーダ300、及び/又はデコーダ400を実装し得る。例えば、コーディングモジュール714は、ビットストリームからサブビットストリームを抽出する、抽出プロセス中にサブビットストリームにサブピクチャ情報を含める、及び/又はサブビットストリームにサブピクチャ情報が含まれることを示すためにサブビットストリームにフラグを含めるために用いられることができる。従って、コーディングモジュール714は、ビデオデータをコーディングするとき、ビデオコーディングデバイス700に付加的な機能及び/又はコーディング効率を提供させる。従って、コーディングモジュール714は、ビデオコーディングデバイス700の機能を改善すると共にビデオコーディング技術に特有の問題に対処する。さらに、コーディングモジュール714は、ビデオコーディングデバイス700の異なる状態への変換に影響を及ぼす。代替的には、コーディングモジュール714は、メモリ732に記憶されプロセッサ730によって実行される命令として(例えば、非一時的媒体に記憶されたコンピュータプログラム製品として)実装される。
【0110】
メモリ732は、ディスク、テープドライブ、ソリッドステートドライブ、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、フラッシュメモリ、三値連想メモリ(TCMA)、スタティックランダムアクセスメモリ(SRAM)などの1つ以上のメモリタイプを含む。メモリ732は、オーバーフローデータストレージデバイスとして、プログラムが実行のために選択されるときにプログラムを記憶し、プログラム実行中に読み出された命令及びデータを記憶するために使用され得る。
【0111】
図8は、ビットストリーム600のようなビットストリームにビデオシーケンスをエンコーディングし、IDエラーを軽減しながらサブビットストリーム601のようなサブビットストリームを抽出する例示的な方法800のフローチャートである。方法800は、ピクチャビデオストリーム500及び/又はサブピクチャビデオストリーム501~503をエンコーディングするために方法100を実行するときに、コーデックシステム200、エンコーダ300、及び/又はビデオコーディングデバイス700などのエンコーダによって用いることができる。
【0112】
方法800は、エンコーダが複数のピクチャを含むビデオシーケンスを受信し、例えばユーザ入力に基づいて、そのビデオシーケンスをビットストリームにエンコーディングすることを決定するときに始まり得る。ステップ801において、エンコーダは、サブピクチャのセットを含む、ピクチャビデオストリーム500及び/又はビットストリーム600のような入力ビットストリームをエンコーディングする。例えば、ビットストリームは、VRビデオデータ及び/又はテレビ会議ビデオデータを含み得る。サブピクチャのセットは、複数のサブピクチャを含み得る。さらに、サブピクチャは、サブピクチャIDと関連付けられ得る。
【0113】
ステップ803において、エンコーダ及び/又は関連するスライサは、サブピクチャビデオストリーム501~503及び/又はサブビットストリーム601のような抽出されたビットストリームを生成するために、入力ビットストリームにサブビットストリーム抽出プロセスを実行する。抽出されたビットストリームは、入力ビットストリームのサブピクチャのサブセットのみを含む。具体的には、抽出されたビットストリームは、入力ビットストリームのサブピクチャのセットに含まれるサブピクチャのみを含む。さらに、抽出されたビットストリームは、入力ビットストリームのサブピクチャのセットからサブピクチャの1つ又は複数を除外する。従って、入力ビットストリームは、ピクチャのCLVSを含み得、抽出されたビットストリームは、ピクチャのサブピクチャのCLVSを含み得る。
【0114】
ステップ805において、エンコーダは、抽出されたビットストリームに、抽出されたビットストリームのサブピクチャのサブセットについての1つ以上のサブピクチャIDをエンコーディングする。例えば、そのようなサブピクチャIDは入力ビットストリームから除外され得る。従って、エンコーダは、抽出されたビットストリームに含まれるサブピクチャのデコーディングをサポートするために、そのようなサブピクチャIDを抽出されたビットストリームにエンコーディングし得る。例えば、サブピクチャIDは、抽出されたビットストリーム内のsps_subpic_id[i]構文構造に含まれ得る/エンコーディングされ得る。
【0115】
ステップ807において、エンコーダは、1つ以上のサブピクチャIDを含む構文要素のビットの長さを抽出されたビットストリームにエンコーディングする。例えば、サブピクチャIDの長さは、入力ビットストリームから除外され得る。従って、エンコーダは、抽出されたビットストリームに含まれるサブピクチャのデコーディングをサポートするために、サブピクチャIDの長さを抽出されたビットストリームにエンコーディングし得る。例えば、長さは、抽出されたビットストリーム内のsps_subpic_id_len_minus1プラス1構文構造に含まれ得る/エンコーディングされ得る。
【0116】
ステップ809において、エンコーダは、サブピクチャのサブセットに関連するサブピクチャ情報が抽出されたビットストリームに存在することを示すために抽出されたビットストリームにフラグを設定することができる。フラグは、サブピクチャID及び/又はサブピクチャIDの長さが抽出されたビットストリームに存在することをデコーダに示し得る。例えば、フラグはsubpic_info_present_flagであり得る。特定の例では、フラグは、サブピクチャ情報がCLVS(例えば、入力ビットストリーム及び/又は抽出sあれたビットストリームに含まれる)に存在すること、及び、抽出されたビットストリームが入力ビットストリームからのサブビットストリーム抽出プロセスの結果であるときに、CLVSの各ピクチャが1より多いサブピクチャを含むことを指定するために1に設定されることを要求される。いくつかの例では、フラグ、サブピクチャID、及び長さは、抽出されたビットストリーム内のSPSにエンコーディングされる。
【0117】
ステップ811において、エンコーダは、デコーダへの通信のためにビットストリームを記憶する。いくつかの例では、ビットストリームは、次いで、デコーダに送信されることができる。例えば、ビットストリームは、例えばユーザ要求に基づいて、デコーダによる要求に応じてデコーダに送信され得る。
【0118】
図9は、ビットストリーム600などのビットストリームから抽出された、サブビットストリーム601などのサブビットストリームからビデオシーケンスをデコーディングする例示的な方法900のフローチャートである。方法900は、ピクチャビデオストリーム500及び/又はサブピクチャビデオストリーム501~503をデコーディングするために方法100を実行するとき、コーデックシステム200、デコーダ400、及び/又はビデオコーディングデバイス700などのデコーダによって用いることができる。
【0119】
方法900は、例えば、方法800の結果として、デコーダがビットストリームから抽出されたサブビットストリームを受信し始めるときに開始され得る。ステップ901において、デコーダは抽出されたビットストリームを受信する。抽出されたビットストリームは、サブピクチャのセットを含む入力ビットストリームからのサブビットストリーム抽出プロセスの結果である。抽出されたビットストリームは、サブビットストリーム抽出プロセスへの入力ビットストリームのサブピクチャのサブセットのみを含む。具体的には、抽出されたビットストリームは、入力ビットストリームのサブピクチャのセットに含まれるサブピクチャのみを含む。さらに、抽出されたビットストリームは、入力ビットストリームのサブピクチャのセットからサブピクチャの1つ以上を除外する。従って、入力ビットストリームは、ピクチャのCLVSを含み得、抽出されたビットストリームは、ピクチャのサブピクチャのCLVSを含み得る。受信された抽出されたビットストリームは、サブビットストリームとも呼ばれ得る。例えば、抽出されたビットストリームは、VRビデオデータ及び/又はテレビ会議ビデオデータを含むサブピクチャ(複数可)を含み得る。
【0120】
ステップ903において、デコーダは、抽出されたビットストリームからのフラグが、サブピクチャのサブセットに関連するサブピクチャ情報が抽出されたビットストリーム内に存在することを示すように設定されることを決定する。フラグは、サブピクチャID及び/又はサブピクチャIDの長さが抽出されたビットストリームに存在することを示し得る。例えば、フラグはsubpic_info_present_flagであり得る。特定の例では、フラグは、サブピクチャ情報がCLVS(例えば、入力ビットストリーム及び/又は抽出されたビットストリームに含まれる)に存在すること、及び、抽出されたビットストリームが入力ビットストリームからのサブビットストリーム抽出プロセスの結果であるとき、CLVSの各ピクチャが1より多いサブピクチャを含むことを指定するために1に設定されることを要求される。
【0121】
ステップ905において、デコーダは、1つ以上のサブピクチャIDを含む構文要素のビットの長さを取得する。例えば、サブピクチャIDの長さは、入力ビットストリームから除外され得るが、抽出されたビットストリームに含まれ得る。例えば、長さは、受信された抽出されたビットストリーム内のsps_subpic_id_len_minus1プラス1構文構造に含まれ得る。
【0122】
ステップ907において、デコーダは、フラグに基づいて及び/又は長さに基づいて、サブピクチャのサブセットに対する1つ以上のサブピクチャIDを取得する。例えば、デコーダは、サブピクチャIDが存在することを決定するためにフラグを用いることができる。デコーダは、次いで、ビットストリーム内のサブピクチャIDデータの境界を決定するために長さを用いることができる。例えば、サブピクチャIDは、入力ビットストリームから除外され得るが、抽出されたビットストリームに含まれ得る。例えば、サブピクチャIDは、抽出されたビットストリーム内のsps_subpic_id[i]構文構造に含まれ得る。いくつかの例では、フラグ、サブピクチャID、及び長さは、抽出されたビットストリーム内のSPSから得られる。
【0123】
ステップ909において、デコーダは、ステップ907において取得されたサブピクチャIDに基づいて、抽出されたビットストリーム内のサブピクチャのサブセットをデコーディングすることができる。デコーダは、次いで、ステップ911において、デコーディングされたビデオシーケンスの一部としての表示のために、サブピクチャのサブセットを転送することができる。
【0124】
図10は、ビットストリーム600のようなビットストリーム内の画像のビデオシーケンスをコーディングし、IDエラーを軽減しながらサブビットストリーム601のようなサブビットストリームを抽出するための例示的なシステム1000の概略図である。従って、システム1000は、ピクチャビデオストリーム500及び/又はサブピクチャビデオストリーム501~503をコーディングするために用いられ得る。システム1000は、コーデックシステム200、エンコーダ300、デコーダ400、及び/又はビデオコーディングデバイス700などのエンコーダ及びデコーダによって実装され得る。さらに、システム1000は、方法100、800、及び/又は900を実装するときに用いられ得る。
【0125】
システム1000は、ビデオエンコーダ1002を含む。ビデオエンコーダ1002は、サブピクチャのセットを含む入力ビットストリームをエンコーディングするための第1エンコーディングモジュール1001を備える。ビデオエンコーダ1002はさらに、入力ビットストリームのサブピクチャのサブセットのみを含む抽出されたビットストリームを生成するために、入力ビットストリームにサブビットストリーム抽出プロセスを実行するためのビットストリーム抽出モジュール1004を含む。ビデオエンコーダ1002はさらに、抽出されたビットストリーム内のサブピクチャのサブセットに対する1つ以上のサブピクチャIDを抽出されたビットストリームにエンコーディングするための第2エンコーディングモジュール1003を含む。ビデオエンコーダ1002は、さらに、サブピクチャのサブセットに関連するサブピクチャ情報が抽出されたビットストリームに存在することを示すために抽出されたビットストリームにフラグを設定するための設定モジュール1005を有する。ビデオエンコーダ1002は、さらに、デコーダへの通信のためにビットストリームを記憶するための記憶モジュール1007を有する。ビデオエンコーダ1002は、さらに、ビットストリームをビデオデコーダ1010に向かって送信するための送信モジュール1009を有する。ビデオエンコーダ1002は、さらに、方法800のステップのいずれかを実行するように構成され得る。
【0126】
システム1000はまた、ビデオデコーダ1010を含む。ビデオデコーダ1010は、サブピクチャのセットを含む入力ビットストリームからのサブビットストリーム抽出プロセスの結果である抽出されたビットストリームを受信するための受信モジュール1011を有し、抽出されたビットストリームは、サブビットストリーム抽出プロセスへの入力ビットストリームのサブピクチャのサブセットのみを含む。ビデオデコーダ1010は、さらに、抽出されたビットストリームからのフラグがサブピクチャのサブセットに関連するサブピクチャ情報が抽出されたビットストリーム内に存在することを示すように設定されることを決定するための決定モジュール1013を有する。ビデオデコーダ1010は、さらに、フラグに基づいてサブピクチャのサブセットに対して1つ以上のサブピクチャIDを取得するための取得モジュール1015を有する。ビデオデコーダ1010は、さらに、サブピクチャIDに基づいてサブピクチャのサブセットをデコーディングするためのデコーディングモジュール1017を有する。ビデオデコーダ1010は、さらに、デコーディングされたビデオシーケンスの一部として表示するために、サブピクチャのサブセットを転送するための転送モジュール1019を有する。ビデオデコーダ1010は、さらに、方法900のステップのいずれかを実行するように構成され得る。
【0127】
第1コンポーネントは、第1コンポーネントと第2コンポーネントとの間に、ライン、トレース、又は別の媒体を除いて、介在するコンポーネントがないとき、第2コンポーネントに直接結合される。第1コンポーネントは、第1コンポーネントと第2コンポーネントとの間に、ライン、トレース、又は他の媒体以外の介在するコンポーネントがあるとき、間接的に第2コンポーネントに結合される。用語「結合される」及びその変形は、直接的に結合される及び間接的に結合されるの両方を含む。用語「約」の使用は、特に断らない限り、後続の数字の±10%を含む範囲を意味する。
【0128】
また、本明細書に記載された例示的な方法のステップは、必ずしも記載された順序で実施される必要はないことが理解されるべきであり、そのような方法のステップの順序は、単に例示的なものであると理解されるべきである。同様に、追加のステップが、このような方法に含まれてもよく、あるステップが、本開示の種々の実施形態と一致する方法において省略されてもよく又は組み合わされてもよい。
【0129】
いくつかの実施形態が本開示において提供されているが、開示されたシステム及び方法は、本開示の精神又は範囲から逸脱することなく、多くの他の特定の形態で実施することができることが理解されよう。本例は、例示的なものであり、限定的なものではないとみなされるべきであり、その意図は、本明細書に与えられた詳細に限定されるものではない。例えば、種々の要素又はコンポーネントを別のシステムに組み合わせる若しくは統合してもよく、又は、特徴が、省略されてもよく、又は実装されなくてもよい。
【0130】
加えて、様々な実施形態において分離して又は別個に記載及び図示された技術、システム、サブシステム、及び方法は、本開示の範囲から逸脱することなく、他のシステム、コンポーネント、技術、又は方法と組み合わされ得る又は統合され得る。変更、置換、及び改変の他の例は、当業者によって確認可能であり、本明細書に開示された精神及び範囲から逸脱することなく行われ得る。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
【外国語明細書】